Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Initial import of code already done for Xestia Address Book
authorSteve Brokenshire <kirinji@Digit.LasLindas>
Tue, 28 Jul 2015 14:06:42 +0000 (15:06 +0100)
committerSteve Brokenshire <kirinji@Digit.LasLindas>
Tue, 28 Jul 2015 14:06:42 +0000 (15:06 +0100)
264 files changed:
source/.directory [new file with mode: 0644]
source/.libs/libtest.a [new file with mode: 0644]
source/AppXestiaAddrBk.cpp [new file with mode: 0644]
source/AppXestiaAddrBk.h [new file with mode: 0644]
source/Makefile [new file with mode: 0644]
source/Makefile.in [new file with mode: 0644]
source/aclocal.m4 [new file with mode: 0644]
source/autom4te.cache/output.0 [new file with mode: 0644]
source/autom4te.cache/output.0t [new file with mode: 0644]
source/autom4te.cache/output.1 [new file with mode: 0644]
source/autom4te.cache/requests [new file with mode: 0644]
source/autom4te.cache/traces.0 [new file with mode: 0644]
source/autom4te.cache/traces.0t [new file with mode: 0644]
source/autom4te.cache/traces.1 [new file with mode: 0644]
source/autoscan.log [new file with mode: 0644]
source/bitmapcode.helper [new file with mode: 0644]
source/bitmaps.h [new file with mode: 0644]
source/bitmaps/bigimgs.h [new file with mode: 0644]
source/bitmaps/bigimgs/.exportest.cpp.kate-swp [new file with mode: 0644]
source/bitmaps/bigimgs/aboutimage.cpp [new file with mode: 0644]
source/bitmaps/bigimgs/aboutimage.png [new file with mode: 0644]
source/bitmaps/bigimgs/appicon.cpp [new file with mode: 0644]
source/bitmaps/bigimgs/appicon.png [new file with mode: 0644]
source/bitmaps/bigimgs/appicon48.cpp [new file with mode: 0644]
source/bitmaps/bigimgs/appicon48.png [new file with mode: 0644]
source/bitmaps/bigimgs/appicon64.cpp [new file with mode: 0644]
source/bitmaps/bigimgs/appicon64.png [new file with mode: 0644]
source/bitmaps/bigimgs/contactpersonicon.cpp [new file with mode: 0644]
source/bitmaps/bigimgs/contactpersonicon.png [new file with mode: 0644]
source/bitmaps/bigimgs/contactpersonicon48.cpp [new file with mode: 0644]
source/bitmaps/bigimgs/contactpersonicon48.png [new file with mode: 0644]
source/bitmaps/bigimgs/contactpersonicon64.cpp [new file with mode: 0644]
source/bitmaps/bigimgs/contactpersonicon64.png [new file with mode: 0644]
source/bitmaps/buttons.h [new file with mode: 0644]
source/bitmaps/buttons/add.cpp [new file with mode: 0644]
source/bitmaps/buttons/add.png [new file with mode: 0644]
source/bitmaps/buttons/minus.cpp [new file with mode: 0644]
source/bitmaps/buttons/minus.png [new file with mode: 0644]
source/bitmaps/buttons/play.cpp [new file with mode: 0644]
source/bitmaps/buttons/play.png [new file with mode: 0644]
source/bitmaps/buttons/stop.cpp [new file with mode: 0644]
source/bitmaps/buttons/stop.png [new file with mode: 0644]
source/bitmaps/icons.h [new file with mode: 0644]
source/bitmaps/icons/.directory [new file with mode: 0644]
source/bitmaps/icons/accgroup.cpp [new file with mode: 0644]
source/bitmaps/icons/accgroup.png [new file with mode: 0644]
source/bitmaps/icons/accinet.cpp [new file with mode: 0644]
source/bitmaps/icons/accinet.png [new file with mode: 0644]
source/bitmaps/icons/acclocal.cpp [new file with mode: 0644]
source/bitmaps/icons/acclocal.png [new file with mode: 0644]
source/bitmaps/icons/accnone.cpp [new file with mode: 0644]
source/bitmaps/icons/accnone.png [new file with mode: 0644]
source/bitmaps/icons/act1.cpp [new file with mode: 0644]
source/bitmaps/icons/act1.png [new file with mode: 0644]
source/bitmaps/icons/act2.cpp [new file with mode: 0644]
source/bitmaps/icons/act2.png [new file with mode: 0644]
source/bitmaps/icons/act3.cpp [new file with mode: 0644]
source/bitmaps/icons/act3.png [new file with mode: 0644]
source/bitmaps/icons/act4.cpp [new file with mode: 0644]
source/bitmaps/icons/act4.png [new file with mode: 0644]
source/bitmaps/icons/activitywindow.cpp [new file with mode: 0644]
source/bitmaps/icons/activitywindow.png [new file with mode: 0644]
source/bitmaps/icons/actsleep.cpp [new file with mode: 0644]
source/bitmaps/icons/actsleep.png [new file with mode: 0644]
source/bitmaps/icons/ciext.cpp [new file with mode: 0644]
source/bitmaps/icons/ciext.png [new file with mode: 0644]
source/bitmaps/icons/cikey.cpp [new file with mode: 0644]
source/bitmaps/icons/cikey.png [new file with mode: 0644]
source/bitmaps/icons/cilog.cpp [new file with mode: 0644]
source/bitmaps/icons/cilog.png [new file with mode: 0644]
source/bitmaps/icons/cipto.cpp [new file with mode: 0644]
source/bitmaps/icons/cipto.png [new file with mode: 0644]
source/bitmaps/icons/cisnd.cpp [new file with mode: 0644]
source/bitmaps/icons/cisnd.png [new file with mode: 0644]
source/bitmaps/icons/civen.cpp [new file with mode: 0644]
source/bitmaps/icons/civen.png [new file with mode: 0644]
source/bitmaps/icons/nossl.cpp [new file with mode: 0644]
source/bitmaps/icons/nossl.png [new file with mode: 0644]
source/bitmaps/icons/offline.cpp [new file with mode: 0644]
source/bitmaps/icons/offline.png [new file with mode: 0644]
source/bitmaps/icons/online.cpp [new file with mode: 0644]
source/bitmaps/icons/online.png [new file with mode: 0644]
source/bitmaps/icons/ssl.cpp [new file with mode: 0644]
source/bitmaps/icons/ssl.png [new file with mode: 0644]
source/bitmaps/icons/sslwarning.cpp [new file with mode: 0644]
source/bitmaps/icons/sslwarning.png [new file with mode: 0644]
source/bitmaps/misc.h [new file with mode: 0644]
source/bitmaps/misc/.directory [new file with mode: 0644]
source/bitmaps/misc/activity1.cpp [new file with mode: 0644]
source/bitmaps/misc/activity1.png [new file with mode: 0644]
source/bitmaps/misc/activity10.cpp [new file with mode: 0644]
source/bitmaps/misc/activity10.png [new file with mode: 0644]
source/bitmaps/misc/activity11.cpp [new file with mode: 0644]
source/bitmaps/misc/activity11.png [new file with mode: 0644]
source/bitmaps/misc/activity12.cpp [new file with mode: 0644]
source/bitmaps/misc/activity12.png [new file with mode: 0644]
source/bitmaps/misc/activity2.cpp [new file with mode: 0644]
source/bitmaps/misc/activity2.png [new file with mode: 0644]
source/bitmaps/misc/activity3.cpp [new file with mode: 0644]
source/bitmaps/misc/activity3.png [new file with mode: 0644]
source/bitmaps/misc/activity4.cpp [new file with mode: 0644]
source/bitmaps/misc/activity4.png [new file with mode: 0644]
source/bitmaps/misc/activity5.cpp [new file with mode: 0644]
source/bitmaps/misc/activity5.png [new file with mode: 0644]
source/bitmaps/misc/activity6.cpp [new file with mode: 0644]
source/bitmaps/misc/activity6.png [new file with mode: 0644]
source/bitmaps/misc/activity7.cpp [new file with mode: 0644]
source/bitmaps/misc/activity7.png [new file with mode: 0644]
source/bitmaps/misc/activity8.cpp [new file with mode: 0644]
source/bitmaps/misc/activity8.png [new file with mode: 0644]
source/bitmaps/misc/activity9.cpp [new file with mode: 0644]
source/bitmaps/misc/activity9.png [new file with mode: 0644]
source/bitmaps/misc/activitysleep.cpp [new file with mode: 0644]
source/bitmaps/misc/activitysleep.png [new file with mode: 0644]
source/bitmaps/misc/emptyimage.cpp [new file with mode: 0644]
source/bitmaps/misc/emptyimage.png [new file with mode: 0644]
source/carddav/carddav.cpp [new file with mode: 0644]
source/carddav/carddav.h [new file with mode: 0644]
source/common/.directory [new file with mode: 0644]
source/common/base64.cpp [new file with mode: 0644]
source/common/base64.cpp~ [new file with mode: 0644]
source/common/base64.h [new file with mode: 0644]
source/common/base64.h~ [new file with mode: 0644]
source/common/defaults.cpp [new file with mode: 0644]
source/common/defaults.h [new file with mode: 0644]
source/common/dirs.cpp [new file with mode: 0644]
source/common/dirs.h [new file with mode: 0644]
source/common/etag.cpp [new file with mode: 0644]
source/common/etag.h [new file with mode: 0644]
source/common/events.cpp [new file with mode: 0644]
source/common/events.h [new file with mode: 0644]
source/common/filename.cpp [new file with mode: 0644]
source/common/filename.h [new file with mode: 0644]
source/common/getcontactinfo.cpp [new file with mode: 0644]
source/common/getcontactinfo.cpp~ [new file with mode: 0644]
source/common/getcontactinfo.h [new file with mode: 0644]
source/common/getcontactinfo.h~ [new file with mode: 0644]
source/common/mime.cpp [new file with mode: 0644]
source/common/mime.h [new file with mode: 0644]
source/common/preferences.cpp [new file with mode: 0644]
source/common/preferences.h [new file with mode: 0644]
source/common/preferences.h~ [new file with mode: 0644]
source/common/sslcertstructs.h [new file with mode: 0644]
source/common/svrblist.cpp [new file with mode: 0644]
source/common/svrblist.h [new file with mode: 0644]
source/common/textprocessing.cpp [new file with mode: 0644]
source/common/textprocessing.h [new file with mode: 0644]
source/common/timers.cpp [new file with mode: 0644]
source/common/timers.h [new file with mode: 0644]
source/common/uuid.cpp [new file with mode: 0644]
source/common/uuid.h [new file with mode: 0644]
source/config.log [new file with mode: 0644]
source/config.status [new file with mode: 0644]
source/configure [new file with mode: 0644]
source/configure.ac [new file with mode: 0644]
source/contacteditor/frmContactEditor-Load.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditor.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditor.h [new file with mode: 0644]
source/contacteditor/frmContactEditorAddress.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorAddress.h [new file with mode: 0644]
source/contacteditor/frmContactEditorCalAdr.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorCalAdr.h [new file with mode: 0644]
source/contacteditor/frmContactEditorCategory.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorCategory.h [new file with mode: 0644]
source/contacteditor/frmContactEditorEmail.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorEmail.h [new file with mode: 0644]
source/contacteditor/frmContactEditorGeoposition.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorGeoposition.h [new file with mode: 0644]
source/contacteditor/frmContactEditorGroups.cpp [new file with mode: 0755]
source/contacteditor/frmContactEditorGroups.h [new file with mode: 0755]
source/contacteditor/frmContactEditorIM.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorIM.h [new file with mode: 0644]
source/contacteditor/frmContactEditorKey.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorKey.h [new file with mode: 0644]
source/contacteditor/frmContactEditorLanguages.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorLanguages.h [new file with mode: 0644]
source/contacteditor/frmContactEditorNickname.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorNickname.h [new file with mode: 0644]
source/contacteditor/frmContactEditorNotes.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorNotes.h [new file with mode: 0644]
source/contacteditor/frmContactEditorOrganisations.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorOrganisations.h [new file with mode: 0644]
source/contacteditor/frmContactEditorPicture.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorPicture.h [new file with mode: 0644]
source/contacteditor/frmContactEditorRelated.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorRelated.h [new file with mode: 0644]
source/contacteditor/frmContactEditorRoles.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorRoles.h [new file with mode: 0644]
source/contacteditor/frmContactEditorSound.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorSound.h [new file with mode: 0644]
source/contacteditor/frmContactEditorTelephone.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorTelephone.h [new file with mode: 0644]
source/contacteditor/frmContactEditorTimezones.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorTimezones.h [new file with mode: 0644]
source/contacteditor/frmContactEditorTitles.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorTitles.h [new file with mode: 0644]
source/contacteditor/frmContactEditorVendor.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorVendor.h [new file with mode: 0644]
source/contacteditor/frmContactEditorWebsites.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorWebsites.h [new file with mode: 0644]
source/contacteditor/frmContactEditorXToken.cpp [new file with mode: 0644]
source/contacteditor/frmContactEditorXToken.h [new file with mode: 0644]
source/debug.h [new file with mode: 0644]
source/enums.h [new file with mode: 0644]
source/export/export-vcard3.cpp [new file with mode: 0644]
source/export/export-vcard3.h [new file with mode: 0644]
source/export/export-vcard4.cpp [new file with mode: 0644]
source/export/export-vcard4.h [new file with mode: 0644]
source/export/export.cpp [new file with mode: 0644]
source/export/export.h [new file with mode: 0644]
source/frmAbout.cpp [new file with mode: 0644]
source/frmAbout.h [new file with mode: 0644]
source/frmActivityMgr.cpp [new file with mode: 0644]
source/frmActivityMgr.h [new file with mode: 0644]
source/frmConflictResolution.cpp [new file with mode: 0644]
source/frmConflictResolution.h [new file with mode: 0644]
source/frmContact.cpp [new file with mode: 0644]
source/frmContact.h [new file with mode: 0644]
source/frmEditAccount.cpp [new file with mode: 0644]
source/frmEditAccount.h [new file with mode: 0644]
source/frmInvalidSSLCertificate.cpp [new file with mode: 0644]
source/frmInvalidSSLCertificate.h [new file with mode: 0644]
source/frmMain.cpp [new file with mode: 0644]
source/frmMain.h [new file with mode: 0644]
source/frmMain.h~ [new file with mode: 0644]
source/frmNewAccount.cpp [new file with mode: 0644]
source/frmNewAccount.h [new file with mode: 0644]
source/frmPreferences.cpp [new file with mode: 0644]
source/frmPreferences.h [new file with mode: 0644]
source/frmSSLCertificate.cpp [new file with mode: 0644]
source/frmSSLCertificate.h [new file with mode: 0644]
source/frmSearch.cpp [new file with mode: 0644]
source/frmSearch.h [new file with mode: 0644]
source/frmUpdate.cpp [new file with mode: 0644]
source/frmUpdate.h [new file with mode: 0644]
source/import/frmImportContacts.cpp [new file with mode: 0644]
source/import/frmImportContacts.h [new file with mode: 0644]
source/import/frmImportResults.cpp [new file with mode: 0644]
source/import/frmImportResults.h [new file with mode: 0644]
source/import/import-struct.h [new file with mode: 0644]
source/import/import-vcard3.cpp [new file with mode: 0644]
source/import/import-vcard3.h [new file with mode: 0644]
source/import/import-vcard4.cpp [new file with mode: 0644]
source/import/import-vcard4.h [new file with mode: 0644]
source/import/import.cpp [new file with mode: 0644]
source/import/import.h [new file with mode: 0644]
source/main.cpp [new file with mode: 0644]
source/photo.log [new file with mode: 0644]
source/search/XABSearchPanel.cpp [new file with mode: 0644]
source/search/XABSearchPanel.h [new file with mode: 0644]
source/search/frmSearchAccounts.cpp [new file with mode: 0644]
source/search/frmSearchAccounts.h [new file with mode: 0644]
source/tools/bitmapcode.cpp [new file with mode: 0644]
source/tools/bitmapcode.cpp~ [new file with mode: 0644]
source/vcard/vcard.cpp [new file with mode: 0644]
source/vcard/vcard.cpp~ [new file with mode: 0644]
source/vcard/vcard.h [new file with mode: 0644]
source/vcard/vcard.hpp~ [new file with mode: 0644]
source/vcard/vcard.h~ [new file with mode: 0644]
source/vcard/vcard34conv.cpp [new file with mode: 0644]
source/vcard/vcard34conv.h [new file with mode: 0644]
source/version.h [new file with mode: 0644]
source/widgets/XABAccountView.cpp [new file with mode: 0644]
source/widgets/XABAccountView.h [new file with mode: 0644]

diff --git a/source/.directory b/source/.directory
new file mode 100644 (file)
index 0000000..1796c00
--- /dev/null
@@ -0,0 +1,5 @@
+[Dolphin]
+AdditionalInfoV2=CustomizedDetails,Details_Size,Details_Date,Details_Type
+Timestamp=2012,8,19,9,34,5
+Version=2
+ViewMode=1
diff --git a/source/.libs/libtest.a b/source/.libs/libtest.a
new file mode 100644 (file)
index 0000000..8b277f0
--- /dev/null
@@ -0,0 +1 @@
+!<arch>
diff --git a/source/AppXestiaAddrBk.cpp b/source/AppXestiaAddrBk.cpp
new file mode 100644 (file)
index 0000000..57ad0b1
--- /dev/null
@@ -0,0 +1,7213 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Feb 26 2014)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#include "AppXestiaAddrBk.h"
+
+///////////////////////////////////////////////////////////////////////////
+
+frmMainADT::frmMainADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
+       
+       mnuMain = new wxMenuBar( 0 );
+       mnuManage = new wxMenu();
+       wxMenuItem* mnuNewAB;
+       mnuNewAB = new wxMenuItem( mnuManage, ID_MANAGE_NEWAB, wxString( wxT("New Address Book...") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuManage->Append( mnuNewAB );
+       
+       mnuManage->AppendSeparator();
+       
+       wxMenuItem* mnuRefreshAB;
+       mnuRefreshAB = new wxMenuItem( mnuManage, wxID_ANY, wxString( wxT("Refresh Address Book") ) + wxT('\t') + wxT("CTRL+R"), wxEmptyString, wxITEM_NORMAL );
+       mnuManage->Append( mnuRefreshAB );
+       
+       mnuManage->AppendSeparator();
+       
+       wxMenuItem* mnuImport;
+       mnuImport = new wxMenuItem( mnuManage, ID_MANAGE_IMPORT, wxString( wxT("Import...") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuManage->Append( mnuImport );
+       
+       wxMenuItem* mnuExport;
+       mnuExport = new wxMenuItem( mnuManage, ID_MANAGE_EXPORT, wxString( wxT("Export...") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuManage->Append( mnuExport );
+       
+       mnuManage->AppendSeparator();
+       
+       wxMenuItem* mnuPreferences;
+       mnuPreferences = new wxMenuItem( mnuManage, ID_MANAGE_PREFERENCES, wxString( wxT("Preferences...") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuManage->Append( mnuPreferences );
+       
+       mnuManage->AppendSeparator();
+       
+       wxMenuItem* mnuExit;
+       mnuExit = new wxMenuItem( mnuManage, ID_MANAGE_EXIT, wxString( wxT("Exit") ) + wxT('\t') + wxT("CTRL+Q"), wxEmptyString, wxITEM_NORMAL );
+       #ifdef __WXMSW__
+       mnuExit->SetBitmaps( wxNullBitmap );
+       #elif defined( __WXGTK__ )
+       mnuExit->SetBitmap( wxNullBitmap );
+       #endif
+       mnuManage->Append( mnuExit );
+       
+       mnuMain->Append( mnuManage, wxT("Manage") ); 
+       
+       mnuContact = new wxMenu();
+       wxMenuItem* mnuNewContact;
+       mnuNewContact = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("New Contact...") ) + wxT('\t') + wxT("CTRL+N"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuNewContact );
+       
+       wxMenuItem* mnuEditContact;
+       mnuEditContact = new wxMenuItem( mnuContact, ID_CONTACT_EDIT, wxString( wxT("Edit Contact...") ) + wxT('\t') + wxT("CTRL+E"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuEditContact );
+       
+       wxMenuItem* deleteContact;
+       deleteContact = new wxMenuItem( mnuContact, ID_CONTACT_DELETE, wxString( wxT("Delete Contact...") ) + wxT('\t') + wxT("CTRL+D"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( deleteContact );
+       
+       mnuContact->AppendSeparator();
+       
+       setContactAsMyself = new wxMenuItem( mnuContact, ID_SET_CONTACT_AS_MYSELF, wxString( wxT("Set contact as myself") ) + wxT('\t') + wxT("CTRL+M"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( setContactAsMyself );
+       
+       m_separator5 = mnuContact->AppendSeparator();
+       
+       wxMenuItem* mnuFindContact;
+       mnuFindContact = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Find Contacts...") ) + wxT('\t') + wxT("CTRL+F"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuFindContact );
+       
+       mnuMain->Append( mnuContact, wxT("Contact") ); 
+       
+       mnuView = new wxMenu();
+       mnuShowContactsAs = new wxMenu();
+       wxMenuItem* mnuViewFNLN;
+       mnuViewFNLN = new wxMenuItem( mnuShowContactsAs, ID_VIEW_FNLN, wxString( wxT("First Name, Last Name") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuShowContactsAs->Append( mnuViewFNLN );
+       
+       wxMenuItem* mnuViewLNFN;
+       mnuViewLNFN = new wxMenuItem( mnuShowContactsAs, ID_VIEW_LNFN, wxString( wxT("Last Name, First Name") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuShowContactsAs->Append( mnuViewLNFN );
+       
+       wxMenuItem* mnuViewNick;
+       mnuViewNick = new wxMenuItem( mnuShowContactsAs, ID_VIEW_NICK, wxString( wxT("Nickname") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuShowContactsAs->Append( mnuViewNick );
+       
+       wxMenuItem* mnuViewDisplayAs;
+       mnuViewDisplayAs = new wxMenuItem( mnuShowContactsAs, wxID_ANY, wxString( wxT("Display As Name") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuShowContactsAs->Append( mnuViewDisplayAs );
+       
+       mnuView->Append( -1, wxT("Show Contacts As"), mnuShowContactsAs );
+       
+       mnuViewSortBy = new wxMenu();
+       wxMenuItem* mnuViewAsc;
+       mnuViewAsc = new wxMenuItem( mnuViewSortBy, ID_VIEW_ASC, wxString( wxT("Ascending") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuViewSortBy->Append( mnuViewAsc );
+       
+       wxMenuItem* mnuViewDesc;
+       mnuViewDesc = new wxMenuItem( mnuViewSortBy, ID_VIEW_DESC, wxString( wxT("Descending") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuViewSortBy->Append( mnuViewDesc );
+       
+       mnuView->Append( -1, wxT("Sort By"), mnuViewSortBy );
+       
+       mnuViewShow = new wxMenu();
+       wxMenuItem* mnuViewStatusBar;
+       mnuViewStatusBar = new wxMenuItem( mnuViewShow, ID_VIEW_STATUSBAR, wxString( wxT("Status Bar") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuViewShow->Append( mnuViewStatusBar );
+       
+       mnuView->Append( -1, wxT("Show"), mnuViewShow );
+       
+       mnuView->AppendSeparator();
+       
+       wxMenuItem* mnuViewActivity;
+       mnuViewActivity = new wxMenuItem( mnuView, wxID_ANY, wxString( wxT("Activity Manager") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuView->Append( mnuViewActivity );
+       
+       mnuMain->Append( mnuView, wxT("View") ); 
+       
+       mnuEdit = new wxMenu();
+       wxMenuItem* mnuCut;
+       mnuCut = new wxMenuItem( mnuEdit, ID_MANAGE_CUT, wxString( wxT("Cut") ) + wxT('\t') + wxT("CTRL+X"), wxEmptyString, wxITEM_NORMAL );
+       mnuEdit->Append( mnuCut );
+       
+       wxMenuItem* mnuCopy;
+       mnuCopy = new wxMenuItem( mnuEdit, ID_MANAGE_COPY, wxString( wxT("Copy") ) + wxT('\t') + wxT("CTRL+C"), wxEmptyString, wxITEM_NORMAL );
+       mnuEdit->Append( mnuCopy );
+       
+       wxMenuItem* mnuPaste;
+       mnuPaste = new wxMenuItem( mnuEdit, ID_MANAGE_PASTE, wxString( wxT("Paste") ) + wxT('\t') + wxT("CTRL+V"), wxEmptyString, wxITEM_NORMAL );
+       mnuEdit->Append( mnuPaste );
+       
+       mnuMain->Append( mnuEdit, wxT("Edit") ); 
+       
+       mnuWindow = new wxMenu();
+       mnuMain->Append( mnuWindow, wxT("Window") ); 
+       
+       mnuHelp = new wxMenu();
+       wxMenuItem* showHelp;
+       showHelp = new wxMenuItem( mnuHelp, ID_HELP_SHOW, wxString( wxT("Show Help...") ) + wxT('\t') + wxT("F1"), wxEmptyString, wxITEM_NORMAL );
+       mnuHelp->Append( showHelp );
+       
+       mnuHelp->AppendSeparator();
+       
+       wxMenuItem* mnuHelpUpdates;
+       mnuHelpUpdates = new wxMenuItem( mnuHelp, ID_MANAGE_UPDATE, wxString( wxT("Check for updates...") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuHelp->Append( mnuHelpUpdates );
+       
+       mnuHelp->AppendSeparator();
+       
+       wxMenuItem* mnuAbout;
+       mnuAbout = new wxMenuItem( mnuHelp, ID_HELP_ABOUT, wxString( wxT("About") ) + wxT('\t') + wxT("SHIFT+CTRL+A"), wxEmptyString, wxITEM_NORMAL );
+       mnuHelp->Append( mnuAbout );
+       
+       mnuMain->Append( mnuHelp, wxT("Help") ); 
+       
+       this->SetMenuBar( mnuMain );
+       
+       szrMain = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer396;
+       bSizer396 = new wxBoxSizer( wxHORIZONTAL );
+       
+       bmpIcon = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer396->Add( bmpIcon, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       AccCtrl = new wxComboCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCB_READONLY|wxEXPAND);
+       bSizer396->Add( AccCtrl, 0, wxALL, 5 );
+       
+       
+       szrMain->Add( bSizer396, 0, wxEXPAND|wxLEFT, 5 );
+       
+       m_splitter13 = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
+       m_splitter13->Connect( wxEVT_IDLE, wxIdleEventHandler( frmMainADT::m_splitter13OnIdle ), NULL, this );
+       m_splitter13->SetMinimumPaneSize( 1 );
+       
+       m_panel19 = new wxPanel( m_splitter13, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       szrContactList = new wxFlexGridSizer( 0, 1, 0, 0 );
+       szrContactList->AddGrowableCol( 0 );
+       szrContactList->AddGrowableRow( 1 );
+       szrContactList->SetFlexibleDirection( wxBOTH );
+       szrContactList->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       szrAccList = new wxFlexGridSizer( 0, 2, 0, 0 );
+       szrAccList->SetFlexibleDirection( wxVERTICAL );
+       szrAccList->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       
+       szrContactList->Add( szrAccList, 0, 0, 5 );
+       
+       lstContacts = new wxListCtrl( m_panel19, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_HEADER|wxLC_REPORT|wxSUNKEN_BORDER );
+       szrContactList->Add( lstContacts, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       m_panel19->SetSizer( szrContactList );
+       m_panel19->Layout();
+       szrContactList->Fit( m_panel19 );
+       m_panel20 = new wxPanel( m_splitter13, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer12;
+       bSizer12 = new wxBoxSizer( wxVERTICAL );
+       
+       htmContactData = new wxHtmlWindow( m_panel20, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO|wxSUNKEN_BORDER );
+       bSizer12->Add( htmContactData, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       m_panel20->SetSizer( bSizer12 );
+       m_panel20->Layout();
+       bSizer12->Fit( m_panel20 );
+       m_splitter13->SplitVertically( m_panel19, m_panel20, 184 );
+       szrMain->Add( m_splitter13, 1, wxEXPAND, 5 );
+       
+       
+       this->SetSizer( szrMain );
+       this->Layout();
+       stbBottom = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY );
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( mnuNewAB->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenNewABDialog ) );
+       this->Connect( mnuRefreshAB->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::RefreshAddressBook ) );
+       this->Connect( mnuImport->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenImportDialog ) );
+       this->Connect( mnuExport->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenExportDialog ) );
+       this->Connect( mnuPreferences->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenPreferences ) );
+       this->Connect( mnuExit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::QuitApp ) );
+       this->Connect( mnuNewContact->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowContactEditorNew ) );
+       this->Connect( mnuEditContact->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowContactEditorEdit ) );
+       this->Connect( deleteContact->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::DeleteContact ) );
+       this->Connect( setContactAsMyself->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SetContactAsSelf ) );
+       this->Connect( mnuFindContact->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenFindContactsWindow ) );
+       this->Connect( mnuViewFNLN->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortFNLN ) );
+       this->Connect( mnuViewLNFN->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortLNFN ) );
+       this->Connect( mnuViewNick->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortNickname ) );
+       this->Connect( mnuViewDisplayAs->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortDisplayAs ) );
+       this->Connect( mnuViewAsc->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortAscending ) );
+       this->Connect( mnuViewDesc->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortDescending ) );
+       this->Connect( mnuViewStatusBar->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ToggleStatusBar ) );
+       this->Connect( mnuViewActivity->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowActivityWindow ) );
+       this->Connect( mnuCut->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CutAction ) );
+       this->Connect( mnuCopy->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CopyAction ) );
+       this->Connect( mnuPaste->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::PasteAction ) );
+       this->Connect( showHelp->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowHelp ) );
+       this->Connect( mnuHelpUpdates->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CheckUpdates ) );
+       this->Connect( mnuAbout->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowAboutWindow ) );
+       lstContacts->Connect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( frmMainADT::OpenContactInfo ), NULL, this );
+       lstContacts->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmMainADT::ShowContactInfo ), NULL, this );
+       lstContacts->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmMainADT::ShowContactInfo ), NULL, this );
+       htmContactData->Connect( wxEVT_RIGHT_UP, wxMouseEventHandler( frmMainADT::ShowContactSubmenu ), NULL, this );
+       stbBottom->Connect( wxEVT_SIZE, wxSizeEventHandler( frmMainADT::UpdateSBIconPlacement ), NULL, this );
+}
+
+frmMainADT::~frmMainADT()
+{
+       // Disconnect Events
+       this->Disconnect( ID_MANAGE_NEWAB, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenNewABDialog ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::RefreshAddressBook ) );
+       this->Disconnect( ID_MANAGE_IMPORT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenImportDialog ) );
+       this->Disconnect( ID_MANAGE_EXPORT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenExportDialog ) );
+       this->Disconnect( ID_MANAGE_PREFERENCES, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenPreferences ) );
+       this->Disconnect( ID_MANAGE_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::QuitApp ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowContactEditorNew ) );
+       this->Disconnect( ID_CONTACT_EDIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowContactEditorEdit ) );
+       this->Disconnect( ID_CONTACT_DELETE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::DeleteContact ) );
+       this->Disconnect( ID_SET_CONTACT_AS_MYSELF, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SetContactAsSelf ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::OpenFindContactsWindow ) );
+       this->Disconnect( ID_VIEW_FNLN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortFNLN ) );
+       this->Disconnect( ID_VIEW_LNFN, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortLNFN ) );
+       this->Disconnect( ID_VIEW_NICK, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortNickname ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortDisplayAs ) );
+       this->Disconnect( ID_VIEW_ASC, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortAscending ) );
+       this->Disconnect( ID_VIEW_DESC, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::SortDescending ) );
+       this->Disconnect( ID_VIEW_STATUSBAR, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ToggleStatusBar ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowActivityWindow ) );
+       this->Disconnect( ID_MANAGE_CUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CutAction ) );
+       this->Disconnect( ID_MANAGE_COPY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CopyAction ) );
+       this->Disconnect( ID_MANAGE_PASTE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::PasteAction ) );
+       this->Disconnect( ID_HELP_SHOW, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowHelp ) );
+       this->Disconnect( ID_MANAGE_UPDATE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::CheckUpdates ) );
+       this->Disconnect( ID_HELP_ABOUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmMainADT::ShowAboutWindow ) );
+       lstContacts->Disconnect( wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler( frmMainADT::OpenContactInfo ), NULL, this );
+       lstContacts->Disconnect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmMainADT::ShowContactInfo ), NULL, this );
+       lstContacts->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmMainADT::ShowContactInfo ), NULL, this );
+       htmContactData->Disconnect( wxEVT_RIGHT_UP, wxMouseEventHandler( frmMainADT::ShowContactSubmenu ), NULL, this );
+       stbBottom->Disconnect( wxEVT_SIZE, wxSizeEventHandler( frmMainADT::UpdateSBIconPlacement ), NULL, this );
+       
+}
+
+frmUpdateADT::frmUpdateADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer390;
+       bSizer390 = new wxBoxSizer( wxVERTICAL );
+       
+       pnlUpdateData = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer391;
+       bSizer391 = new wxBoxSizer( wxVERTICAL );
+       
+       wxFlexGridSizer* fgSizer45;
+       fgSizer45 = new wxFlexGridSizer( 3, 2, 0, 0 );
+       fgSizer45->SetFlexibleDirection( wxBOTH );
+       fgSizer45->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblRunningText = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("Running version is:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblRunningText->Wrap( -1 );
+       fgSizer45->Add( lblRunningText, 0, wxALL, 5 );
+       
+       lblRunningVer = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("UPDATEVER"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblRunningVer->Wrap( -1 );
+       fgSizer45->Add( lblRunningVer, 0, wxALL, 5 );
+       
+       lblAvailableText = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("Available version is:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAvailableText->Wrap( -1 );
+       fgSizer45->Add( lblAvailableText, 0, wxALL, 5 );
+       
+       lblAvailableVer = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("AVAILVER"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAvailableVer->Wrap( -1 );
+       fgSizer45->Add( lblAvailableVer, 0, wxALL, 5 );
+       
+       lblBuildTypeText = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("Build type is:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBuildTypeText->Wrap( -1 );
+       fgSizer45->Add( lblBuildTypeText, 0, wxALL, 5 );
+       
+       lblBuildType = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("BUILDTYPE"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBuildType->Wrap( -1 );
+       fgSizer45->Add( lblBuildType, 0, wxALL, 5 );
+       
+       
+       bSizer391->Add( fgSizer45, 0, wxEXPAND, 5 );
+       
+       lblUpdateMessage = new wxStaticText( pnlUpdateData, wxID_ANY, wxT("MESSAGE"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblUpdateMessage->Wrap( -1 );
+       bSizer391->Add( lblUpdateMessage, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       pnlUpdateData->SetSizer( bSizer391 );
+       pnlUpdateData->Layout();
+       bSizer391->Fit( pnlUpdateData );
+       bSizer390->Add( pnlUpdateData, 1, wxEXPAND | wxALL, 5 );
+       
+       statLine = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer390->Add( statLine, 0, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer392;
+       bSizer392 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnVisitGelforn = new wxButton( this, wxID_ANY, wxT("Visit Gelforn"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer392->Add( btnVisitGelforn, 0, wxALIGN_RIGHT|wxBOTTOM|wxLEFT, 5 );
+       
+       btnVisitPREMIUM = new wxButton( this, wxID_ANY, wxT("Visit PREMIUM"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer392->Add( btnVisitPREMIUM, 0, wxBOTTOM|wxLEFT, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer392->Add( btnClose, 0, wxALIGN_RIGHT|wxBOTTOM|wxLEFT|wxRIGHT, 5 );
+       
+       
+       bSizer390->Add( bSizer392, 0, wxALIGN_RIGHT, 0 );
+       
+       
+       this->SetSizer( bSizer390 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnVisitGelforn->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::VisitGelforn ), NULL, this );
+       btnVisitPREMIUM->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::VisitPREMIUM ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::CloseWindow ), NULL, this );
+}
+
+frmUpdateADT::~frmUpdateADT()
+{
+       // Disconnect Events
+       btnVisitGelforn->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::VisitGelforn ), NULL, this );
+       btnVisitPREMIUM->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::VisitPREMIUM ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmUpdateADT::CloseWindow ), NULL, this );
+       
+}
+
+frmSearchADT::frmSearchADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxSize( 300,450 ), wxDefaultSize );
+       
+       stbBottom = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY );
+       wxBoxSizer* bSizer368;
+       bSizer368 = new wxBoxSizer( wxVERTICAL );
+       
+       m_splitter4 = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
+       m_splitter4->Connect( wxEVT_IDLE, wxIdleEventHandler( frmSearchADT::m_splitter4OnIdle ), NULL, this );
+       m_splitter4->SetMinimumPaneSize( 1 );
+       
+       m_panel60 = new wxPanel( m_splitter4, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer382;
+       bSizer382 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer369;
+       bSizer369 = new wxBoxSizer( wxHORIZONTAL );
+       
+       nbkSearch = new wxNotebook( m_panel60, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabSearch = new wxScrolledWindow( nbkSearch, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE|wxHSCROLL|wxVSCROLL );
+       tabSearch->SetScrollRate( 5, 5 );
+       szrSearch = new wxFlexGridSizer( 0, 1, 0, 0 );
+       szrSearch->AddGrowableCol( 0 );
+       szrSearch->SetFlexibleDirection( wxVERTICAL );
+       szrSearch->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       
+       tabSearch->SetSizer( szrSearch );
+       tabSearch->Layout();
+       szrSearch->Fit( tabSearch );
+       nbkSearch->AddPage( tabSearch, wxT("Search"), true );
+       tabAdvanced = new wxScrolledWindow( nbkSearch, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabAdvanced->SetScrollRate( 5, 5 );
+       wxBoxSizer* bSizer384;
+       bSizer384 = new wxBoxSizer( wxVERTICAL );
+       
+       btnSelectAccounts = new wxButton( tabAdvanced, wxID_ANY, wxT("Select Accounts..."), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer384->Add( btnSelectAccounts, 0, wxALL, 5 );
+       
+       
+       tabAdvanced->SetSizer( bSizer384 );
+       tabAdvanced->Layout();
+       bSizer384->Fit( tabAdvanced );
+       nbkSearch->AddPage( tabAdvanced, wxT("Advanced"), false );
+       
+       bSizer369->Add( nbkSearch, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer371;
+       bSizer371 = new wxBoxSizer( wxVERTICAL );
+       
+       btnSearch = new wxButton( m_panel60, wxID_ANY, wxT("Search"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer371->Add( btnSearch, 0, wxALL, 5 );
+       
+       btnReset = new wxButton( m_panel60, wxID_ANY, wxT("Reset"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer371->Add( btnReset, 0, wxALL, 5 );
+       
+       
+       bSizer369->Add( bSizer371, 0, wxEXPAND, 5 );
+       
+       
+       bSizer382->Add( bSizer369, 1, wxEXPAND, 5 );
+       
+       
+       m_panel60->SetSizer( bSizer382 );
+       m_panel60->Layout();
+       bSizer382->Fit( m_panel60 );
+       m_panel61 = new wxPanel( m_splitter4, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer386;
+       bSizer386 = new wxBoxSizer( wxVERTICAL );
+       
+       lstResults = new wxListCtrl( m_panel61, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer386->Add( lstResults, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       m_panel61->SetSizer( bSizer386 );
+       m_panel61->Layout();
+       bSizer386->Fit( m_panel61 );
+       m_splitter4->SplitHorizontally( m_panel60, m_panel61, 178 );
+       bSizer368->Add( m_splitter4, 1, wxEXPAND, 5 );
+       
+       
+       this->SetSizer( bSizer368 );
+       this->Layout();
+       m_menubar5 = new wxMenuBar( 0 );
+       mnuContact = new wxMenu();
+       wxMenuItem* mnuContactOpen;
+       mnuContactOpen = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Open Contact...") ) + wxT('\t') + wxT("CTRL+O"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuContactOpen );
+       
+       wxMenuItem* mnuContactEdit;
+       mnuContactEdit = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Edit Contact...") ) + wxT('\t') + wxT("CTRL+E"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuContactEdit );
+       
+       wxMenuItem* mnuContactReveal;
+       mnuContactReveal = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Reveal Contact") ) + wxT('\t') + wxT("CTRL+R"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuContactReveal );
+       
+       mnuContact->AppendSeparator();
+       
+       wxMenuItem* mnuContactClose;
+       mnuContactClose = new wxMenuItem( mnuContact, wxID_ANY, wxString( wxT("Close Window") ) + wxT('\t') + wxT("ALT+F4"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuContactClose );
+       
+       m_menubar5->Append( mnuContact, wxT("Contact") ); 
+       
+       this->SetMenuBar( m_menubar5 );
+       
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmSearchADT::CloseWindow ) );
+       btnSelectAccounts->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::SelectAccounts ), NULL, this );
+       btnSearch->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::SearchContacts ), NULL, this );
+       btnReset->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::ResetContacts ), NULL, this );
+       this->Connect( mnuContactOpen->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::OpenContact ) );
+       this->Connect( mnuContactEdit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::EditContact ) );
+       this->Connect( mnuContactReveal->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::RevealContact ) );
+       this->Connect( mnuContactClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::CloseWindow ) );
+}
+
+frmSearchADT::~frmSearchADT()
+{
+       // Disconnect Events
+       this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmSearchADT::CloseWindow ) );
+       btnSelectAccounts->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::SelectAccounts ), NULL, this );
+       btnSearch->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::SearchContacts ), NULL, this );
+       btnReset->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchADT::ResetContacts ), NULL, this );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::OpenContact ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::EditContact ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::RevealContact ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmSearchADT::CloseWindow ) );
+       
+}
+
+frmPreferencesADT::frmPreferencesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxSize( 450,400 ), wxSize( 450,400 ) );
+       
+       wxBoxSizer* szrMain;
+       szrMain = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* szrTabs;
+       szrTabs = new wxBoxSizer( wxVERTICAL );
+       
+       NbtPreferences = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( NbtPreferences, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* szrChecks;
+       szrChecks = new wxBoxSizer( wxVERTICAL );
+       
+       chkSaveWindowPosition = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Save window position on exit"), wxDefaultPosition, wxDefaultSize, 0 );
+       szrChecks->Add( chkSaveWindowPosition, 0, wxALL, 5 );
+       
+       chkHideLocal = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Hide local address books"), wxDefaultPosition, wxDefaultSize, 0 );
+       szrChecks->Add( chkHideLocal, 0, wxALL, 5 );
+       
+       
+       tabGeneral->SetSizer( szrChecks );
+       tabGeneral->Layout();
+       szrChecks->Fit( tabGeneral );
+       NbtPreferences->AddPage( tabGeneral, wxT("General"), false );
+       tabTheme = new wxPanel( NbtPreferences, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       tabTheme->Hide();
+       
+       wxGridSizer* szrTheme;
+       szrTheme = new wxGridSizer( 1, 1, 0, 0 );
+       
+       wxBoxSizer* bSizer161;
+       bSizer161 = new wxBoxSizer( wxVERTICAL );
+       
+       lstThemes = new wxListCtrl( tabTheme, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer161->Add( lstThemes, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer151;
+       bSizer151 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnThemeAdd = new wxButton( tabTheme, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer151->Add( btnThemeAdd, 0, wxALL, 5 );
+       
+       btnThemeModify = new wxButton( tabTheme, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnThemeModify->Enable( false );
+       
+       bSizer151->Add( btnThemeModify, 0, wxALL, 5 );
+       
+       btnThemeDelete = new wxButton( tabTheme, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnThemeDelete->Enable( false );
+       
+       bSizer151->Add( btnThemeDelete, 0, wxALL, 5 );
+       
+       
+       bSizer161->Add( bSizer151, 0, wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 0 );
+       
+       
+       szrTheme->Add( bSizer161, 1, wxEXPAND, 5 );
+       
+       
+       tabTheme->SetSizer( szrTheme );
+       tabTheme->Layout();
+       szrTheme->Fit( tabTheme );
+       NbtPreferences->AddPage( tabTheme, wxT("Themes"), false );
+       tabAccounts = new wxPanel( NbtPreferences, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxGridSizer* szrAccounts;
+       szrAccounts = new wxGridSizer( 1, 1, 0, 0 );
+       
+       wxBoxSizer* bSizer16;
+       bSizer16 = new wxBoxSizer( wxVERTICAL );
+       
+       lstAccounts = new wxListCtrl( tabAccounts, wxID_ANY, wxDefaultPosition, wxSize( -1,-1 ), wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer16->Add( lstAccounts, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer15;
+       bSizer15 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAccountAdd = new wxButton( tabAccounts, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer15->Add( btnAccountAdd, 0, wxALL, 5 );
+       
+       btnAccountModify = new wxButton( tabAccounts, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnAccountModify->Enable( false );
+       
+       bSizer15->Add( btnAccountModify, 0, wxALL, 5 );
+       
+       btnAccountDelete = new wxButton( tabAccounts, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnAccountDelete->Enable( false );
+       
+       bSizer15->Add( btnAccountDelete, 0, wxALL, 5 );
+       
+       
+       bSizer16->Add( bSizer15, 0, wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 0 );
+       
+       
+       szrAccounts->Add( bSizer16, 1, wxEXPAND, 5 );
+       
+       
+       tabAccounts->SetSizer( szrAccounts );
+       tabAccounts->Layout();
+       szrAccounts->Fit( tabAccounts );
+       NbtPreferences->AddPage( tabAccounts, wxT("Accounts"), true );
+       
+       szrTabs->Add( NbtPreferences, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       szrMain->Add( szrTabs, 1, wxEXPAND, 0 );
+       
+       wxBoxSizer* szrButtons;
+       szrButtons = new wxBoxSizer( wxHORIZONTAL );
+       
+       
+       szrButtons->Add( 1, 0, 1, wxEXPAND, 0 );
+       
+       btnSave = new wxButton( this, wxID_ANY, wxT("Save"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnSave->SetDefault(); 
+       szrButtons->Add( btnSave, 0, wxALIGN_RIGHT, 0 );
+       
+       
+       szrButtons->Add( 5, 0, 0, 0, 0 );
+       
+       btnCancel = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
+       szrButtons->Add( btnCancel, 0, wxALIGN_RIGHT, 0 );
+       
+       
+       szrButtons->Add( 5, 0, 0, wxEXPAND, 0 );
+       
+       
+       szrMain->Add( szrButtons, 0, wxBOTTOM|wxEXPAND, 5 );
+       
+       
+       this->SetSizer( szrMain );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmPreferencesADT::LoadPreferences ) );
+       lstThemes->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmPreferencesADT::DisableABButtons ), NULL, this );
+       lstThemes->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmPreferencesADT::EnableABButtons ), NULL, this );
+       btnThemeAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::AddABAccount ), NULL, this );
+       btnThemeModify->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::ModifyABAccount ), NULL, this );
+       btnThemeDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::DeleteABAccount ), NULL, this );
+       lstAccounts->Connect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmPreferencesADT::DisableABButtons ), NULL, this );
+       lstAccounts->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmPreferencesADT::EnableABButtons ), NULL, this );
+       btnAccountAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::AddABAccount ), NULL, this );
+       btnAccountModify->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::ModifyABAccount ), NULL, this );
+       btnAccountDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::DeleteABAccount ), NULL, this );
+       btnSave->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::SavePreferences ), NULL, this );
+       btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::CloseWindow ), NULL, this );
+}
+
+frmPreferencesADT::~frmPreferencesADT()
+{
+       // Disconnect Events
+       this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmPreferencesADT::LoadPreferences ) );
+       lstThemes->Disconnect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmPreferencesADT::DisableABButtons ), NULL, this );
+       lstThemes->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmPreferencesADT::EnableABButtons ), NULL, this );
+       btnThemeAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::AddABAccount ), NULL, this );
+       btnThemeModify->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::ModifyABAccount ), NULL, this );
+       btnThemeDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::DeleteABAccount ), NULL, this );
+       lstAccounts->Disconnect( wxEVT_COMMAND_LIST_ITEM_DESELECTED, wxListEventHandler( frmPreferencesADT::DisableABButtons ), NULL, this );
+       lstAccounts->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmPreferencesADT::EnableABButtons ), NULL, this );
+       btnAccountAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::AddABAccount ), NULL, this );
+       btnAccountModify->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::ModifyABAccount ), NULL, this );
+       btnAccountDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::DeleteABAccount ), NULL, this );
+       btnSave->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::SavePreferences ), NULL, this );
+       btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmPreferencesADT::CloseWindow ), NULL, this );
+       
+}
+
+frmAboutADT::frmAboutADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxSize( 350,400 ), wxDefaultSize );
+       
+       wxBoxSizer* szrMain;
+       szrMain = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* szrLogo;
+       szrLogo = new wxBoxSizer( wxVERTICAL );
+       
+       szrLogo->SetMinSize( wxSize( 350,100 ) ); 
+       bmpLogo = new wxStaticBitmap( this, wxID_ANY, wxNullBitmap, wxPoint( 0,0 ), wxSize( 350,100 ), 0 );
+       szrLogo->Add( bmpLogo, 0, wxALL, 0 );
+       
+       
+       szrMain->Add( szrLogo, 0, wxFIXED_MINSIZE, 0 );
+       
+       wxBoxSizer* szrDetails;
+       szrDetails = new wxBoxSizer( wxVERTICAL );
+       
+       lblVersion = new wxStaticText( this, wxID_ANY, wxT("Version 0.00"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblVersion->Wrap( -1 );
+       lblVersion->SetFont( wxFont( 14, 70, 90, 92, false, wxEmptyString ) );
+       
+       szrDetails->Add( lblVersion, 0, wxALL, 5 );
+       
+       lblCompileTime = new wxStaticText( this, wxID_ANY, wxT("Built on (date) at (time)"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCompileTime->Wrap( -1 );
+       szrDetails->Add( lblCompileTime, 0, wxALL, 5 );
+       
+       lblCopyright = new wxStaticText( this, wxID_ANY, wxT("(c) 2012-2015 Xestia Software Development"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCopyright->Wrap( -1 );
+       szrDetails->Add( lblCopyright, 0, wxALL, 5 );
+       
+       
+       szrMain->Add( szrDetails, 5, wxEXPAND, 1 );
+       
+       wxBoxSizer* szrButtons;
+       szrButtons = new wxBoxSizer( wxVERTICAL );
+       
+       szrButtons->SetMinSize( wxSize( -1,35 ) ); 
+       btnClose = new wxButton( this, wxID_ANY, wxT("&Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       szrButtons->Add( btnClose, 0, wxALIGN_RIGHT|wxRIGHT, 5 );
+       
+       
+       szrMain->Add( szrButtons, 0, wxEXPAND, 0 );
+       
+       
+       this->SetSizer( szrMain );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmAboutADT::CloseAboutWindow ), NULL, this );
+}
+
+frmAboutADT::~frmAboutADT()
+{
+       // Disconnect Events
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmAboutADT::CloseAboutWindow ), NULL, this );
+       
+}
+
+frmContactADT::frmContactADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxSize( 320,240 ), wxDefaultSize );
+       
+       wxBoxSizer* bSizer13;
+       bSizer13 = new wxBoxSizer( wxVERTICAL );
+       
+       htmContactData = new wxHtmlWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO|wxSUNKEN_BORDER );
+       bSizer13->Add( htmContactData, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       this->SetSizer( bSizer13 );
+       this->Layout();
+       m_menubar2 = new wxMenuBar( 0 );
+       contact = new wxMenu();
+       wxMenuItem* mnuContactClose;
+       mnuContactClose = new wxMenuItem( contact, ID_CONTACT_CLOSE, wxString( wxT("Close") ) + wxT('\t') + wxT("CTRL+F4"), wxEmptyString, wxITEM_NORMAL );
+       contact->Append( mnuContactClose );
+       
+       m_menubar2->Append( contact, wxT("Contact") ); 
+       
+       this->SetMenuBar( m_menubar2 );
+       
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmContactADT::CloseWindow ) );
+       this->Connect( mnuContactClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactADT::CloseWindow ) );
+}
+
+frmContactADT::~frmContactADT()
+{
+       // Disconnect Events
+       this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmContactADT::CloseWindow ) );
+       this->Disconnect( ID_CONTACT_CLOSE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactADT::CloseWindow ) );
+       
+}
+
+frmNewAccountADT::frmNewAccountADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxSize( 425,330 ), wxSize( 425,330 ) );
+       
+       wxFlexGridSizer* fgSizer30;
+       fgSizer30 = new wxFlexGridSizer( 0, 1, 0, 0 );
+       fgSizer30->AddGrowableCol( 0 );
+       fgSizer30->AddGrowableRow( 0 );
+       fgSizer30->SetFlexibleDirection( wxBOTH );
+       fgSizer30->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       szrNewAccount = new wxBoxSizer( wxVERTICAL );
+       
+       tabType = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer32;
+       fgSizer32 = new wxFlexGridSizer( 0, 1, 0, 0 );
+       fgSizer32->AddGrowableCol( 0 );
+       fgSizer32->SetFlexibleDirection( wxBOTH );
+       fgSizer32->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_ALL );
+       
+       lblEnterText = new wxStaticText( tabType, wxID_ANY, wxT("Enter the details below and click on Next."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblEnterText->Wrap( -1 );
+       fgSizer32->Add( lblEnterText, 0, wxALL, 5 );
+       
+       wxFlexGridSizer* fgSizer33;
+       fgSizer33 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer33->AddGrowableCol( 1 );
+       fgSizer33->AddGrowableRow( 0 );
+       fgSizer33->SetFlexibleDirection( wxBOTH );
+       fgSizer33->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_ALL );
+       
+       lblType = new wxStaticText( tabType, wxID_ANY, wxT("Server Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblType->Wrap( -1 );
+       fgSizer33->Add( lblType, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       wxString cmbServerTypeChoices[] = { wxT("Local"), wxT("CardDAV") };
+       int cmbServerTypeNChoices = sizeof( cmbServerTypeChoices ) / sizeof( wxString );
+       cmbServerType = new wxChoice( tabType, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbServerTypeNChoices, cmbServerTypeChoices, 0 );
+       cmbServerType->SetSelection( 1 );
+       fgSizer33->Add( cmbServerType, 0, wxALL, 5 );
+       
+       lblServerAddress = new wxStaticText( tabType, wxID_ANY, wxT("Server Address:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerAddress->Wrap( -1 );
+       fgSizer33->Add( lblServerAddress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtServerAddress = new wxTextCtrl( tabType, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtServerAddress->SetMaxLength( 0 ); 
+       fgSizer33->Add( txtServerAddress, 1, wxALL|wxEXPAND, 5 );
+       
+       lblServerPort = new wxStaticText( tabType, wxID_ANY, wxT("Server Port:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerPort->Wrap( -1 );
+       fgSizer33->Add( lblServerPort, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtServerPort = new wxTextCtrl( tabType, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtServerPort->SetMaxLength( 0 ); 
+       fgSizer33->Add( txtServerPort, 0, wxALL, 5 );
+       
+       lblUsername = new wxStaticText( tabType, wxID_ANY, wxT("Username:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblUsername->Wrap( -1 );
+       fgSizer33->Add( lblUsername, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtUsername = new wxTextCtrl( tabType, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtUsername->SetMaxLength( 0 ); 
+       fgSizer33->Add( txtUsername, 1, wxALL|wxEXPAND, 5 );
+       
+       lblPassword = new wxStaticText( tabType, wxID_ANY, wxT("Password:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPassword->Wrap( -1 );
+       fgSizer33->Add( lblPassword, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtPassword = new wxTextCtrl( tabType, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PASSWORD );
+       txtPassword->SetMaxLength( 0 ); 
+       fgSizer33->Add( txtPassword, 0, wxALL|wxEXPAND, 5 );
+       
+       lblSSL = new wxStaticText( tabType, wxID_ANY, wxT("SSL:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblSSL->Wrap( -1 );
+       fgSizer33->Add( lblSSL, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       wxBoxSizer* bSizer3221;
+       bSizer3221 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUseSSL = new wxCheckBox( tabType, wxID_ANY, wxT("Use SSL"), wxDefaultPosition, wxDefaultSize, 0 );
+       chkUseSSL->SetValue(true); 
+       bSizer3221->Add( chkUseSSL, 0, wxALL, 5 );
+       
+       
+       fgSizer33->Add( bSizer3221, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer32->Add( fgSizer33, 1, wxEXPAND, 5 );
+       
+       
+       tabType->SetSizer( fgSizer32 );
+       tabType->Layout();
+       fgSizer32->Fit( tabType );
+       szrNewAccount->Add( tabType, 1, wxEXPAND | wxALL, 5 );
+       
+       tabConn = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       tabConn->Hide();
+       
+       wxBoxSizer* bSizer323;
+       bSizer323 = new wxBoxSizer( wxVERTICAL );
+       
+       lblConnectionResult = new wxStaticText( tabConn, wxID_ANY, wxT("Connection Results:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblConnectionResult->Wrap( -1 );
+       lblConnectionResult->SetFont( wxFont( 9, 74, 90, 92, false, wxT("Sans") ) );
+       
+       bSizer323->Add( lblConnectionResult, 0, wxALL, 5 );
+       
+       wxFlexGridSizer* fgSizer34;
+       fgSizer34 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer34->SetFlexibleDirection( wxBOTH );
+       fgSizer34->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblServerConnected = new wxStaticText( tabConn, wxID_ANY, wxT("Server connected:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerConnected->Wrap( -1 );
+       fgSizer34->Add( lblServerConnected, 0, wxALL, 5 );
+       
+       lblServerConnResult = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerConnResult->Wrap( -1 );
+       fgSizer34->Add( lblServerConnResult, 0, wxALL, 5 );
+       
+       lblValidResponse = new wxStaticText( tabConn, wxID_ANY, wxT("Server gave valid response:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblValidResponse->Wrap( -1 );
+       fgSizer34->Add( lblValidResponse, 0, wxALL, 5 );
+       
+       lblServerResponse = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerResponse->Wrap( -1 );
+       fgSizer34->Add( lblServerResponse, 0, wxALL, 5 );
+       
+       lblUseSSL = new wxStaticText( tabConn, wxID_ANY, wxT("Server uses SSL:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblUseSSL->Wrap( -1 );
+       fgSizer34->Add( lblUseSSL, 0, wxALL, 5 );
+       
+       lblServerSSLResult = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerSSLResult->Wrap( -1 );
+       fgSizer34->Add( lblServerSSLResult, 0, wxALL, 5 );
+       
+       lblServerSSLCert = new wxStaticText( tabConn, wxID_ANY, wxT("Server has valid SSL certificate:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerSSLCert->Wrap( -1 );
+       fgSizer34->Add( lblServerSSLCert, 0, wxALL, 5 );
+       
+       lblServerSSLValid = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerSSLValid->Wrap( -1 );
+       fgSizer34->Add( lblServerSSLValid, 0, wxALL, 5 );
+       
+       lblServerUsernamePassword = new wxStaticText( tabConn, wxID_ANY, wxT("Able to Login:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblServerUsernamePassword->Wrap( -1 );
+       fgSizer34->Add( lblServerUsernamePassword, 0, wxALL, 5 );
+       
+       lblAbleToLoginResult = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAbleToLoginResult->Wrap( -1 );
+       fgSizer34->Add( lblAbleToLoginResult, 0, wxALL, 5 );
+       
+       lblIsCalDAV = new wxStaticText( tabConn, wxID_ANY, wxT("Server has CardDAV Support:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblIsCalDAV->Wrap( -1 );
+       fgSizer34->Add( lblIsCalDAV, 0, wxALL, 5 );
+       
+       lblCardDAVSupportResult = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCardDAVSupportResult->Wrap( -1 );
+       fgSizer34->Add( lblCardDAVSupportResult, 0, wxALL, 5 );
+       
+       
+       bSizer323->Add( fgSizer34, 1, wxEXPAND, 5 );
+       
+       m_staticline3 = new wxStaticLine( tabConn, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer323->Add( m_staticline3, 0, wxEXPAND | wxALL, 5 );
+       
+       lblConnectionResultText = new wxStaticText( tabConn, wxID_ANY, wxT("..."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblConnectionResultText->Wrap( 360 );
+       lblConnectionResultText->SetMinSize( wxSize( -1,40 ) );
+       
+       bSizer323->Add( lblConnectionResultText, 0, wxALL|wxEXPAND, 5 );
+       
+       
+       tabConn->SetSizer( bSizer323 );
+       tabConn->Layout();
+       bSizer323->Fit( tabConn );
+       szrNewAccount->Add( tabConn, 1, wxEXPAND | wxALL, 5 );
+       
+       tabFinish = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       tabFinish->Hide();
+       
+       wxBoxSizer* bSizer3231;
+       bSizer3231 = new wxBoxSizer( wxVERTICAL );
+       
+       lblFinishText = new wxStaticText( tabFinish, wxID_ANY, wxT("Enter the account name and click on Finish."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblFinishText->Wrap( -1 );
+       bSizer3231->Add( lblFinishText, 0, wxALL, 5 );
+       
+       wxFlexGridSizer* fgSizer341;
+       fgSizer341 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer341->AddGrowableCol( 1 );
+       fgSizer341->SetFlexibleDirection( wxBOTH );
+       fgSizer341->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblAccountName = new wxStaticText( tabFinish, wxID_ANY, wxT("Account Name:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAccountName->Wrap( -1 );
+       fgSizer341->Add( lblAccountName, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtAccountName = new wxTextCtrl( tabFinish, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtAccountName->SetMaxLength( 0 ); 
+       fgSizer341->Add( txtAccountName, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer3231->Add( fgSizer341, 1, wxEXPAND, 5 );
+       
+       
+       tabFinish->SetSizer( bSizer3231 );
+       tabFinish->Layout();
+       bSizer3231->Fit( tabFinish );
+       szrNewAccount->Add( tabFinish, 1, wxEXPAND | wxALL, 5 );
+       
+       
+       fgSizer30->Add( szrNewAccount, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer322;
+       bSizer322 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnPrevious = new wxButton( this, wxID_ANY, wxT("< Previous"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer322->Add( btnPrevious, 0, wxALL, 5 );
+       
+       btnNext = new wxButton( this, wxID_ANY, wxT("Next >"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnNext->SetDefault(); 
+       bSizer322->Add( btnNext, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer322->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       fgSizer30->Add( bSizer322, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( fgSizer30 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       cmbServerType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmNewAccountADT::UpdateRequirements ), NULL, this );
+       txtAccountName->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmNewAccountADT::CheckAccountName ), NULL, this );
+       btnPrevious->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::ProcessPrevious ), NULL, this );
+       btnNext->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::ProcessNext ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::CloseWindow ), NULL, this );
+}
+
+frmNewAccountADT::~frmNewAccountADT()
+{
+       // Disconnect Events
+       cmbServerType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmNewAccountADT::UpdateRequirements ), NULL, this );
+       txtAccountName->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmNewAccountADT::CheckAccountName ), NULL, this );
+       btnPrevious->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::ProcessPrevious ), NULL, this );
+       btnNext->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::ProcessNext ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmNewAccountADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorADT::frmContactEditorADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
+       this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
+       
+       wxBoxSizer* bSizer17;
+       bSizer17 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkContact = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabGeneral->SetScrollRate( 5, 5 );
+       wxBoxSizer* bSizer18;
+       bSizer18 = new wxBoxSizer( wxVERTICAL );
+       
+       wxGridSizer* gSizer7;
+       gSizer7 = new wxGridSizer( 0, 6, 0, 0 );
+       
+       lblTitle = new wxStaticText( tabGeneral, wxID_ANY, wxT("Title:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTitle->Wrap( -1 );
+       gSizer7->Add( lblTitle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtTitle = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtTitle->SetMaxLength( 0 ); 
+       gSizer7->Add( txtTitle, 0, wxALL|wxEXPAND, 5 );
+       
+       
+       gSizer7->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       gSizer7->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       gSizer7->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       gSizer7->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblForename = new wxStaticText( tabGeneral, wxID_ANY, wxT("Forename:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblForename->Wrap( -1 );
+       gSizer7->Add( lblForename, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtForename = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtForename->SetMaxLength( 0 ); 
+       gSizer7->Add( txtForename, 0, wxALL|wxEXPAND, 5 );
+       
+       lblSurname = new wxStaticText( tabGeneral, wxID_ANY, wxT("Surname:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblSurname->Wrap( -1 );
+       gSizer7->Add( lblSurname, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtSurname = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtSurname->SetMaxLength( 0 ); 
+       gSizer7->Add( txtSurname, 0, wxALL|wxEXPAND, 5 );
+       
+       lblOtherNames = new wxStaticText( tabGeneral, wxID_ANY, wxT("Other Names:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblOtherNames->Wrap( -1 );
+       gSizer7->Add( lblOtherNames, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtOtherNames = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtOtherNames->SetMaxLength( 0 ); 
+       gSizer7->Add( txtOtherNames, 0, wxALL|wxEXPAND, 5 );
+       
+       lblSuffix = new wxStaticText( tabGeneral, wxID_ANY, wxT("Suffix:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblSuffix->Wrap( -1 );
+       gSizer7->Add( lblSuffix, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtSuffix = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtSuffix->SetMaxLength( 0 ); 
+       gSizer7->Add( txtSuffix, 0, wxALL|wxEXPAND, 5 );
+       
+       
+       gSizer7->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       gSizer7->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       bSizer18->Add( gSizer7, 0, wxEXPAND, 5 );
+       
+       wxFlexGridSizer* fgSizer5;
+       fgSizer5 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer5->AddGrowableCol( 1 );
+       fgSizer5->SetFlexibleDirection( wxBOTH );
+       fgSizer5->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblDisplayAs = new wxStaticText( tabGeneral, wxID_ANY, wxT("Display As:"), wxPoint( -1,-1 ), wxDefaultSize, 0 );
+       lblDisplayAs->Wrap( -1 );
+       fgSizer5->Add( lblDisplayAs, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       cmbDisplayAs = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer5->Add( cmbDisplayAs, 0, wxALL|wxEXPAND, 5 );
+       
+       lblBirthday = new wxStaticText( tabGeneral, wxID_ANY, wxT("Birthday:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBirthday->Wrap( -1 );
+       fgSizer5->Add( lblBirthday, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       wxBoxSizer* bSizer318;
+       bSizer318 = new wxBoxSizer( wxHORIZONTAL );
+       
+       dapBirthday = new wxDatePickerCtrl( tabGeneral, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_ALLOWNONE|wxDP_DEFAULT|wxDP_DROPDOWN|wxDP_SHOWCENTURY );
+       dapBirthday->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString ) );
+       dapBirthday->SetToolTip( wxT("If you don't wish to enter a year, please use '0000' as the year.") );
+       dapBirthday->SetMinSize( wxSize( -1,25 ) );
+       
+       bSizer318->Add( dapBirthday, 0, wxALL|wxEXPAND, 5 );
+       
+       txtBirthday = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtBirthday->SetMaxLength( 0 ); 
+       bSizer318->Add( txtBirthday, 1, wxALL, 5 );
+       
+       
+       fgSizer5->Add( bSizer318, 1, wxEXPAND, 5 );
+       
+       lblAnniversary = new wxStaticText( tabGeneral, wxID_ANY, wxT("Anniversary:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAnniversary->Wrap( -1 );
+       fgSizer5->Add( lblAnniversary, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       wxBoxSizer* bSizer319;
+       bSizer319 = new wxBoxSizer( wxHORIZONTAL );
+       
+       dapAnniversary = new wxDatePickerCtrl( tabGeneral, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_ALLOWNONE|wxDP_DEFAULT|wxDP_DROPDOWN|wxDP_SHOWCENTURY );
+       dapAnniversary->SetToolTip( wxT("If you don't wish to enter a year, please use '0000' as the year.") );
+       dapAnniversary->SetMinSize( wxSize( -1,25 ) );
+       
+       bSizer319->Add( dapAnniversary, 0, wxALL|wxEXPAND, 5 );
+       
+       txtAnniversary = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtAnniversary->SetMaxLength( 0 ); 
+       bSizer319->Add( txtAnniversary, 1, wxALL, 5 );
+       
+       
+       fgSizer5->Add( bSizer319, 1, wxEXPAND, 5 );
+       
+       lblGender = new wxStaticText( tabGeneral, wxID_ANY, wxT("Gender:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblGender->Wrap( -1 );
+       fgSizer5->Add( lblGender, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       wxBoxSizer* bSizer20;
+       bSizer20 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxString cmbGenderChoices[] = { wxEmptyString, wxT("Male"), wxT("Female"), wxT("Other"), wxT("None/Not Applicable"), wxT("Unknown") };
+       int cmbGenderNChoices = sizeof( cmbGenderChoices ) / sizeof( wxString );
+       cmbGender = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbGenderNChoices, cmbGenderChoices, 0 );
+       cmbGender->SetSelection( 0 );
+       bSizer20->Add( cmbGender, 0, wxALL, 5 );
+       
+       txtGenderDescription = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtGenderDescription->SetMaxLength( 0 ); 
+       bSizer20->Add( txtGenderDescription, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       
+       fgSizer5->Add( bSizer20, 1, wxEXPAND, 5 );
+       
+       lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblType->Wrap( -1 );
+       fgSizer5->Add( lblType, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       wxString cmbTypeChoices[] = { wxT("(Unspecified)"), wxT("Individual"), wxT("Group"), wxT("Organisation"), wxT("Location") };
+       int cmbTypeNChoices = sizeof( cmbTypeChoices ) / sizeof( wxString );
+       cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeNChoices, cmbTypeChoices, 0 );
+       cmbType->SetSelection( 0 );
+       fgSizer5->Add( cmbType, 0, wxALL, 5 );
+       
+       lblNicknames = new wxStaticText( tabGeneral, wxID_ANY, wxT("Nicknames:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblNicknames->Wrap( -1 );
+       fgSizer5->Add( lblNicknames, 0, wxALL, 5 );
+       
+       wxBoxSizer* szrNicknames;
+       szrNicknames = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboNicknames = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrNicknames->Add( lboNicknames, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrAddressesOuter3;
+       szrAddressesOuter3 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer464;
+       bSizer464 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer474;
+       bSizer474 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddGeneralNickname = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer474->Add( btnAddGeneralNickname, 0, wxALL, 5 );
+       
+       btnModifyGeneralNickname = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer474->Add( btnModifyGeneralNickname, 0, wxALL, 5 );
+       
+       btnDeleteGeneralNickname = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer474->Add( btnDeleteGeneralNickname, 0, wxALL, 5 );
+       
+       
+       bSizer464->Add( bSizer474, 1, wxEXPAND, 5 );
+       
+       
+       szrAddressesOuter3->Add( bSizer464, 1, wxEXPAND, 5 );
+       
+       
+       szrNicknames->Add( szrAddressesOuter3, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( szrNicknames, 1, wxEXPAND, 5 );
+       
+       lblAddress = new wxStaticText( tabGeneral, wxID_ANY, wxT("Addresses:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAddress->Wrap( -1 );
+       fgSizer5->Add( lblAddress, 0, wxALL, 5 );
+       
+       wxBoxSizer* szrAddresses;
+       szrAddresses = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboAddresses = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses->Add( lboAddresses, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrAddressesOuter;
+       szrAddressesOuter = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46;
+       bSizer46 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47;
+       bSizer47 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddGeneralAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47->Add( btnAddGeneralAddress, 0, wxALL, 5 );
+       
+       btnModifyGeneralAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47->Add( btnModifyGeneralAddress, 0, wxALL, 5 );
+       
+       btnDeleteGeneralAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47->Add( btnDeleteGeneralAddress, 0, wxALL, 5 );
+       
+       
+       bSizer46->Add( bSizer47, 1, wxEXPAND, 5 );
+       
+       
+       szrAddressesOuter->Add( bSizer46, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses->Add( szrAddressesOuter, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( szrAddresses, 1, wxEXPAND, 5 );
+       
+       lblEmail = new wxStaticText( tabGeneral, wxID_ANY, wxT("E-mail:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblEmail->Wrap( -1 );
+       fgSizer5->Add( lblEmail, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301;
+       bSizer301 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboEmails = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301->Add( lboEmails, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351;
+       bSizer351 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461;
+       bSizer461 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471;
+       bSizer471 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddEmailAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471->Add( btnAddEmailAddress, 0, wxALL, 5 );
+       
+       btnModifyEmailAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471->Add( btnModifyEmailAddress, 0, wxALL, 5 );
+       
+       btnDeleteEmailAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471->Add( btnDeleteEmailAddress, 0, wxALL, 5 );
+       
+       
+       bSizer461->Add( bSizer471, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351->Add( bSizer461, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301->Add( bSizer351, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer301, 1, wxEXPAND, 5 );
+       
+       lblIM = new wxStaticText( tabGeneral, wxID_ANY, wxT("Instant Messaging:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblIM->Wrap( 0 );
+       fgSizer5->Add( lblIM, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011;
+       bSizer3011 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboIM = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011->Add( lboIM, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511;
+       bSizer3511 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611;
+       bSizer4611 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711;
+       bSizer4711 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddIMAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711->Add( btnAddIMAddress, 0, wxALL, 5 );
+       
+       btnModifyIMAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711->Add( btnModifyIMAddress, 0, wxALL, 5 );
+       
+       btnDeleteIMAddress = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711->Add( btnDeleteIMAddress, 0, wxALL, 5 );
+       
+       
+       bSizer4611->Add( bSizer4711, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511->Add( bSizer4611, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011->Add( bSizer3511, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer3011, 1, wxEXPAND, 5 );
+       
+       lblTelephone = new wxStaticText( tabGeneral, wxID_ANY, wxT("Telephone:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTelephone->Wrap( 0 );
+       fgSizer5->Add( lblTelephone, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111;
+       bSizer30111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboTelephone = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111->Add( lboTelephone, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111;
+       bSizer35111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111;
+       bSizer46111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111;
+       bSizer47111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddTelephone = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111->Add( btnAddTelephone, 0, wxALL, 5 );
+       
+       btnModifyTelephone = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111->Add( btnModifyTelephone, 0, wxALL, 5 );
+       
+       btnDeleteTelephone = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111->Add( btnDeleteTelephone, 0, wxALL, 5 );
+       
+       
+       bSizer46111->Add( bSizer47111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111->Add( bSizer46111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111->Add( bSizer35111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer30111, 1, wxEXPAND, 5 );
+       
+       lblLanguages = new wxStaticText( tabGeneral, wxID_ANY, wxT("Languages:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLanguages->Wrap( 0 );
+       fgSizer5->Add( lblLanguages, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301111;
+       bSizer301111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboLanguages = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301111->Add( lboLanguages, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351111;
+       bSizer351111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461111;
+       bSizer461111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471111;
+       bSizer471111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddLanguage = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111->Add( btnAddLanguage, 0, wxALL, 5 );
+       
+       btnModifyLanguage = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111->Add( btnModifyLanguage, 0, wxALL, 5 );
+       
+       btnDeleteLanguage = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111->Add( btnDeleteLanguage, 0, wxALL, 5 );
+       
+       
+       bSizer461111->Add( bSizer471111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351111->Add( bSizer461111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301111->Add( bSizer351111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer301111, 1, wxEXPAND, 5 );
+       
+       lblTimezone = new wxStaticText( tabGeneral, wxID_ANY, wxT("Timezones:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTimezone->Wrap( 0 );
+       fgSizer5->Add( lblTimezone, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011111;
+       bSizer3011111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboTimezones = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011111->Add( lboTimezones, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511111;
+       bSizer3511111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611111;
+       bSizer4611111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711111;
+       bSizer4711111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddTimezone = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111->Add( btnAddTimezone, 0, wxALL, 5 );
+       
+       btnModifyTimezone = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111->Add( btnModifyTimezone, 0, wxALL, 5 );
+       
+       btnDeleteTimezone = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111->Add( btnDeleteTimezone, 0, wxALL, 5 );
+       
+       
+       bSizer4611111->Add( bSizer4711111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511111->Add( bSizer4611111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011111->Add( bSizer3511111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer3011111, 1, wxEXPAND, 5 );
+       
+       lblGeopositioning = new wxStaticText( tabGeneral, wxID_ANY, wxT("Geopositioning:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblGeopositioning->Wrap( -1 );
+       fgSizer5->Add( lblGeopositioning, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111114;
+       bSizer30111114 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboGeoposition = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111114->Add( lboGeoposition, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111114;
+       bSizer35111114 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111114;
+       bSizer46111114 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111114;
+       bSizer47111114 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddGeneralGeoposition = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111114->Add( btnAddGeneralGeoposition, 0, wxALL, 5 );
+       
+       btnModifyGeneralGeoposition = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111114->Add( btnModifyGeneralGeoposition, 0, wxALL, 5 );
+       
+       btnDeleteGeneralGeoposition = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111114->Add( btnDeleteGeneralGeoposition, 0, wxALL, 5 );
+       
+       
+       bSizer46111114->Add( bSizer47111114, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111114->Add( bSizer46111114, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111114->Add( bSizer35111114, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer30111114, 1, wxEXPAND, 5 );
+       
+       lblRelated = new wxStaticText( tabGeneral, wxID_ANY, wxT("Related people:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblRelated->Wrap( 1 );
+       fgSizer5->Add( lblRelated, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111111;
+       bSizer30111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboRelated = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111111->Add( lboRelated, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111111;
+       bSizer35111111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111111;
+       bSizer46111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111111;
+       bSizer47111111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddRelated = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111->Add( btnAddRelated, 0, wxALL, 5 );
+       
+       btnModifyRelated = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111->Add( btnModifyRelated, 0, wxALL, 5 );
+       
+       btnDeleteRelated = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111->Add( btnDeleteRelated, 0, wxALL, 5 );
+       
+       
+       bSizer46111111->Add( bSizer47111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111111->Add( bSizer46111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111111->Add( bSizer35111111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer30111111, 1, wxEXPAND, 5 );
+       
+       lblWebsites = new wxStaticText( tabGeneral, wxID_ANY, wxT("Websites:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblWebsites->Wrap( 1 );
+       fgSizer5->Add( lblWebsites, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301111111;
+       bSizer301111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboWebsites = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301111111->Add( lboWebsites, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351111111;
+       bSizer351111111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461111111;
+       bSizer461111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471111111;
+       bSizer471111111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddWebsite = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111->Add( btnAddWebsite, 0, wxALL, 5 );
+       
+       btnModifyWebsite = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111->Add( btnModifyWebsite, 0, wxALL, 5 );
+       
+       btnDeleteWebsite = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111->Add( btnDeleteWebsite, 0, wxALL, 5 );
+       
+       
+       bSizer461111111->Add( bSizer471111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351111111->Add( bSizer461111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301111111->Add( bSizer351111111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer301111111, 1, wxEXPAND, 5 );
+       
+       lblTitles = new wxStaticText( tabGeneral, wxID_ANY, wxT("Titles:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTitles->Wrap( 1 );
+       fgSizer5->Add( lblTitles, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011111111;
+       bSizer3011111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboTitles = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011111111->Add( lboTitles, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511111111;
+       bSizer3511111111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611111111;
+       bSizer4611111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711111111;
+       bSizer4711111111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddTitle = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111->Add( btnAddTitle, 0, wxALL, 5 );
+       
+       btnModifyTitle = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111->Add( btnModifyTitle, 0, wxALL, 5 );
+       
+       btnDeleteTitle = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111->Add( btnDeleteTitle, 0, wxALL, 5 );
+       
+       
+       bSizer4611111111->Add( bSizer4711111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511111111->Add( bSizer4611111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011111111->Add( bSizer3511111111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer3011111111, 1, wxEXPAND, 5 );
+       
+       lblRoles = new wxStaticText( tabGeneral, wxID_ANY, wxT("Roles:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblRoles->Wrap( 1 );
+       fgSizer5->Add( lblRoles, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111111111;
+       bSizer30111111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboRoles = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111111111->Add( lboRoles, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111111111;
+       bSizer35111111111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111111111;
+       bSizer46111111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111111111;
+       bSizer47111111111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddRole = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111->Add( btnAddRole, 0, wxALL, 5 );
+       
+       btnModifyRole = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111->Add( btnModifyRole, 0, wxALL, 5 );
+       
+       btnDeleteRole = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111->Add( btnDeleteRole, 0, wxALL, 5 );
+       
+       
+       bSizer46111111111->Add( bSizer47111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111111111->Add( bSizer46111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111111111->Add( bSizer35111111111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer30111111111, 1, wxEXPAND, 5 );
+       
+       lblOrganisations = new wxStaticText( tabGeneral, wxID_ANY, wxT("Organisations:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblOrganisations->Wrap( 1 );
+       fgSizer5->Add( lblOrganisations, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301111111111;
+       bSizer301111111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboOrganisations = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301111111111->Add( lboOrganisations, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351111111111;
+       bSizer351111111111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461111111111;
+       bSizer461111111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471111111111;
+       bSizer471111111111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddOrganisations = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111111->Add( btnAddOrganisations, 0, wxALL, 5 );
+       
+       btnModifyOrganisations = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111111->Add( btnModifyOrganisations, 0, wxALL, 5 );
+       
+       btnDeleteOrganisations = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111111->Add( btnDeleteOrganisations, 0, wxALL, 5 );
+       
+       
+       bSizer461111111111->Add( bSizer471111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351111111111->Add( bSizer461111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301111111111->Add( bSizer351111111111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer301111111111, 1, wxEXPAND, 5 );
+       
+       lblNotes = new wxStaticText( tabGeneral, wxID_ANY, wxT("Notes:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblNotes->Wrap( 1 );
+       fgSizer5->Add( lblNotes, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011111111111;
+       bSizer3011111111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboNotes = new wxListCtrl( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011111111111->Add( lboNotes, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511111111111;
+       bSizer3511111111111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611111111111;
+       bSizer4611111111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711111111111;
+       bSizer4711111111111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddNote = new wxButton( tabGeneral, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111111->Add( btnAddNote, 0, wxALL, 5 );
+       
+       btnModifyNote = new wxButton( tabGeneral, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111111->Add( btnModifyNote, 0, wxALL, 5 );
+       
+       btnDeleteNote = new wxButton( tabGeneral, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111111->Add( btnDeleteNote, 0, wxALL, 5 );
+       
+       
+       bSizer4611111111111->Add( bSizer4711111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511111111111->Add( bSizer4611111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011111111111->Add( bSizer3511111111111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5->Add( bSizer3011111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer18->Add( fgSizer5, 0, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( bSizer18 );
+       tabGeneral->Layout();
+       bSizer18->Fit( tabGeneral );
+       nbkContact->AddPage( tabGeneral, wxT("General"), false );
+       tabHome = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabHome->SetScrollRate( 5, 5 );
+       wxBoxSizer* bSizer181;
+       bSizer181 = new wxBoxSizer( wxVERTICAL );
+       
+       wxGridSizer* gSizer71;
+       gSizer71 = new wxGridSizer( 2, 6, 0, 0 );
+       
+       
+       bSizer181->Add( gSizer71, 0, wxEXPAND, 5 );
+       
+       wxFlexGridSizer* fgSizer51;
+       fgSizer51 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer51->AddGrowableCol( 1 );
+       fgSizer51->SetFlexibleDirection( wxBOTH );
+       fgSizer51->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblHomeNickname = new wxStaticText( tabHome, wxID_ANY, wxT("Home Nicknames:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeNickname->Wrap( 0 );
+       fgSizer51->Add( lblHomeNickname, 0, wxALL, 5 );
+       
+       wxBoxSizer* szrAddresses12;
+       szrAddresses12 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeNicknames = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses12->Add( lboHomeNicknames, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrAddressesOuter11;
+       szrAddressesOuter11 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4622;
+       bSizer4622 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4722;
+       bSizer4722 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeNickname = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4722->Add( btnAddHomeNickname, 0, wxALL, 5 );
+       
+       btnModifyHomeNickname = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4722->Add( btnModifyHomeNickname, 0, wxALL, 5 );
+       
+       btnDeleteHomeNickname = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4722->Add( btnDeleteHomeNickname, 0, wxALL, 5 );
+       
+       
+       bSizer4622->Add( bSizer4722, 1, wxEXPAND, 5 );
+       
+       
+       szrAddressesOuter11->Add( bSizer4622, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses12->Add( szrAddressesOuter11, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( szrAddresses12, 1, wxEXPAND, 5 );
+       
+       lblHomeAddresses = new wxStaticText( tabHome, wxID_ANY, wxT("Home Addresses:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeAddresses->Wrap( 1 );
+       fgSizer51->Add( lblHomeAddresses, 0, wxALL, 5 );
+       
+       wxBoxSizer* szrAddresses1;
+       szrAddresses1 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeAddresses = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses1->Add( lboHomeAddresses, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrAddressesOuter1;
+       szrAddressesOuter1 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer462;
+       bSizer462 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer472;
+       bSizer472 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeAddress = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472->Add( btnAddHomeAddress, 0, wxALL, 5 );
+       
+       btnModifyHomeAddress = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472->Add( btnModifyHomeAddress, 0, wxALL, 5 );
+       
+       btnDeleteHomeAddress = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472->Add( btnDeleteHomeAddress, 0, wxALL, 5 );
+       
+       
+       bSizer462->Add( bSizer472, 1, wxEXPAND, 5 );
+       
+       
+       szrAddressesOuter1->Add( bSizer462, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses1->Add( szrAddressesOuter1, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( szrAddresses1, 1, wxEXPAND, 5 );
+       
+       lblHomeEmail = new wxStaticText( tabHome, wxID_ANY, wxT("Home Emails:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeEmail->Wrap( 1 );
+       fgSizer51->Add( lblHomeEmail, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3012;
+       bSizer3012 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeEmails = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3012->Add( lboHomeEmails, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3512;
+       bSizer3512 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4612;
+       bSizer4612 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4712;
+       bSizer4712 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeEmailAddress = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4712->Add( btnAddHomeEmailAddress, 0, wxALL, 5 );
+       
+       btnModifyHomeEmailAddress = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4712->Add( btnModifyHomeEmailAddress, 0, wxALL, 5 );
+       
+       btnDeleteHomeEmailAddress = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4712->Add( btnDeleteHomeEmailAddress, 0, wxALL, 5 );
+       
+       
+       bSizer4612->Add( bSizer4712, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3512->Add( bSizer4612, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3012->Add( bSizer3512, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer3012, 1, wxEXPAND, 5 );
+       
+       lblHomeIM = new wxStaticText( tabHome, wxID_ANY, wxT("Home Instant Messaging:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeIM->Wrap( 0 );
+       fgSizer51->Add( lblHomeIM, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30112;
+       bSizer30112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeIM = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30112->Add( lboHomeIM, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35112;
+       bSizer35112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46112;
+       bSizer46112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47112;
+       bSizer47112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeIMAddress = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47112->Add( btnAddHomeIMAddress, 0, wxALL, 5 );
+       
+       btnModifyHomeIMAddress = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47112->Add( btnModifyHomeIMAddress, 0, wxALL, 5 );
+       
+       btnDeleteHomeIMAddress = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47112->Add( btnDeleteHomeIMAddress, 0, wxALL, 5 );
+       
+       
+       bSizer46112->Add( bSizer47112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35112->Add( bSizer46112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30112->Add( bSizer35112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer30112, 1, wxEXPAND, 5 );
+       
+       lblHomeTelephone = new wxStaticText( tabHome, wxID_ANY, wxT("Home Telephone:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeTelephone->Wrap( 0 );
+       fgSizer51->Add( lblHomeTelephone, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301112;
+       bSizer301112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeTelephone = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301112->Add( lboHomeTelephone, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351112;
+       bSizer351112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461112;
+       bSizer461112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471112;
+       bSizer471112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeTelephone = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471112->Add( btnAddHomeTelephone, 0, wxALL, 5 );
+       
+       btnModifyHomeTelephone = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471112->Add( btnModifyHomeTelephone, 0, wxALL, 5 );
+       
+       btnDeleteHomeTelephone = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471112->Add( btnDeleteHomeTelephone, 0, wxALL, 5 );
+       
+       
+       bSizer461112->Add( bSizer471112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351112->Add( bSizer461112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301112->Add( bSizer351112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer301112, 1, wxEXPAND, 5 );
+       
+       lblHomeLanguages = new wxStaticText( tabHome, wxID_ANY, wxT("Home Languages:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeLanguages->Wrap( 0 );
+       fgSizer51->Add( lblHomeLanguages, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011112;
+       bSizer3011112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeLanguages = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011112->Add( lboHomeLanguages, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511112;
+       bSizer3511112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611112;
+       bSizer4611112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711112;
+       bSizer4711112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeLanguage = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711112->Add( btnAddHomeLanguage, 0, wxALL, 5 );
+       
+       btnModifyHomeLanguage = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711112->Add( btnModifyHomeLanguage, 0, wxALL, 5 );
+       
+       btnDeleteHomeLanguage = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711112->Add( btnDeleteHomeLanguage, 0, wxALL, 5 );
+       
+       
+       bSizer4611112->Add( bSizer4711112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511112->Add( bSizer4611112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011112->Add( bSizer3511112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer3011112, 1, wxEXPAND, 5 );
+       
+       lblHomeTimezone = new wxStaticText( tabHome, wxID_ANY, wxT("Home Timezones:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeTimezone->Wrap( 0 );
+       fgSizer51->Add( lblHomeTimezone, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111112;
+       bSizer30111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeTimezones = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111112->Add( lboHomeTimezones, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111112;
+       bSizer35111112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111112;
+       bSizer46111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111112;
+       bSizer47111112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeTimezone = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111112->Add( btnAddHomeTimezone, 0, wxALL, 5 );
+       
+       btnModifyHomeTimezone = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111112->Add( btnModifyHomeTimezone, 0, wxALL, 5 );
+       
+       btnDeleteHomeTimezone = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111112->Add( btnDeleteHomeTimezone, 0, wxALL, 5 );
+       
+       
+       bSizer46111112->Add( bSizer47111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111112->Add( bSizer46111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111112->Add( bSizer35111112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer30111112, 1, wxEXPAND, 5 );
+       
+       lblHomeGeopositioning = new wxStaticText( tabHome, wxID_ANY, wxT("Home Geopositioning:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeGeopositioning->Wrap( 0 );
+       fgSizer51->Add( lblHomeGeopositioning, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301111141;
+       bSizer301111141 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeGeoposition = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301111141->Add( lboHomeGeoposition, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351111141;
+       bSizer351111141 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461111141;
+       bSizer461111141 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471111141;
+       bSizer471111141 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeGeoposition = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111141->Add( btnAddHomeGeoposition, 0, wxALL, 5 );
+       
+       btnModifyHomeGeoposition = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111141->Add( btnModifyHomeGeoposition, 0, wxALL, 5 );
+       
+       btnDeleteHomePosition = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111141->Add( btnDeleteHomePosition, 0, wxALL, 5 );
+       
+       
+       bSizer461111141->Add( bSizer471111141, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351111141->Add( bSizer461111141, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301111141->Add( bSizer351111141, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer301111141, 1, wxEXPAND, 5 );
+       
+       lblHomeWebsites = new wxStaticText( tabHome, wxID_ANY, wxT("Home Websites:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeWebsites->Wrap( 1 );
+       fgSizer51->Add( lblHomeWebsites, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011111112;
+       bSizer3011111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeWebsites = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011111112->Add( lboHomeWebsites, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511111112;
+       bSizer3511111112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611111112;
+       bSizer4611111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711111112;
+       bSizer4711111112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeWebsite = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111112->Add( btnAddHomeWebsite, 0, wxALL, 5 );
+       
+       btnHomeModifyWebsite = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111112->Add( btnHomeModifyWebsite, 0, wxALL, 5 );
+       
+       btnDeleteHomeWebsite = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111112->Add( btnDeleteHomeWebsite, 0, wxALL, 5 );
+       
+       
+       bSizer4611111112->Add( bSizer4711111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511111112->Add( bSizer4611111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011111112->Add( bSizer3511111112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer3011111112, 1, wxEXPAND, 5 );
+       
+       lblHomeTitles = new wxStaticText( tabHome, wxID_ANY, wxT("Home Titles:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeTitles->Wrap( 1 );
+       fgSizer51->Add( lblHomeTitles, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111111112;
+       bSizer30111111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeTitles = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111111112->Add( lboHomeTitles, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111111112;
+       bSizer35111111112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111111112;
+       bSizer46111111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111111112;
+       bSizer47111111112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeTitle = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111112->Add( btnAddHomeTitle, 0, wxALL, 5 );
+       
+       btnModifyHomeTitle = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111112->Add( btnModifyHomeTitle, 0, wxALL, 5 );
+       
+       btnDeleteHomeTitle = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111112->Add( btnDeleteHomeTitle, 0, wxALL, 5 );
+       
+       
+       bSizer46111111112->Add( bSizer47111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111111112->Add( bSizer46111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111111112->Add( bSizer35111111112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer30111111112, 1, wxEXPAND, 5 );
+       
+       lblHomeRoles = new wxStaticText( tabHome, wxID_ANY, wxT("Home Roles:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeRoles->Wrap( 1 );
+       fgSizer51->Add( lblHomeRoles, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301111111112;
+       bSizer301111111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeRoles = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301111111112->Add( lboHomeRoles, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351111111112;
+       bSizer351111111112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461111111112;
+       bSizer461111111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471111111112;
+       bSizer471111111112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeRole = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111112->Add( btnAddHomeRole, 0, wxALL, 5 );
+       
+       btnModifyHomeRole = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111112->Add( btnModifyHomeRole, 0, wxALL, 5 );
+       
+       btnDeleteHomeRole = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111112->Add( btnDeleteHomeRole, 0, wxALL, 5 );
+       
+       
+       bSizer461111111112->Add( bSizer471111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351111111112->Add( bSizer461111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301111111112->Add( bSizer351111111112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer301111111112, 1, wxEXPAND, 5 );
+       
+       lblHomeOrganisations = new wxStaticText( tabHome, wxID_ANY, wxT("Home Organisations:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeOrganisations->Wrap( 1 );
+       fgSizer51->Add( lblHomeOrganisations, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011111111112;
+       bSizer3011111111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeOrganisations = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011111111112->Add( lboHomeOrganisations, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511111111112;
+       bSizer3511111111112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611111111112;
+       bSizer4611111111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711111111112;
+       bSizer4711111111112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeOrganisations = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111112->Add( btnAddHomeOrganisations, 0, wxALL, 5 );
+       
+       btnModifyHomeOrganisations = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111112->Add( btnModifyHomeOrganisations, 0, wxALL, 5 );
+       
+       btnDeleteHomeOrganisations = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111112->Add( btnDeleteHomeOrganisations, 0, wxALL, 5 );
+       
+       
+       bSizer4611111111112->Add( bSizer4711111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511111111112->Add( bSizer4611111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011111111112->Add( bSizer3511111111112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer3011111111112, 1, wxEXPAND, 5 );
+       
+       lblHomeNotes = new wxStaticText( tabHome, wxID_ANY, wxT("Home Notes:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHomeNotes->Wrap( 1 );
+       fgSizer51->Add( lblHomeNotes, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111111111111;
+       bSizer30111111111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboHomeNotes = new wxListCtrl( tabHome, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111111111111->Add( lboHomeNotes, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111111111111;
+       bSizer35111111111111 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111111111111;
+       bSizer46111111111111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111111111111;
+       bSizer47111111111111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddHomeNote = new wxButton( tabHome, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111111->Add( btnAddHomeNote, 0, wxALL, 5 );
+       
+       btnModifyHomeNote = new wxButton( tabHome, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111111->Add( btnModifyHomeNote, 0, wxALL, 5 );
+       
+       btnDeleteHomeNote = new wxButton( tabHome, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111111->Add( btnDeleteHomeNote, 0, wxALL, 5 );
+       
+       
+       bSizer46111111111111->Add( bSizer47111111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111111111111->Add( bSizer46111111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111111111111->Add( bSizer35111111111111, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer51->Add( bSizer30111111111111, 1, wxEXPAND, 5 );
+       
+       
+       bSizer181->Add( fgSizer51, 0, wxEXPAND, 5 );
+       
+       
+       tabHome->SetSizer( bSizer181 );
+       tabHome->Layout();
+       bSizer181->Fit( tabHome );
+       nbkContact->AddPage( tabHome, wxT("Home"), false );
+       tabBusiness = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabBusiness->SetScrollRate( 5, 5 );
+       wxBoxSizer* bSizer182;
+       bSizer182 = new wxBoxSizer( wxVERTICAL );
+       
+       wxGridSizer* gSizer72;
+       gSizer72 = new wxGridSizer( 2, 6, 0, 0 );
+       
+       
+       bSizer182->Add( gSizer72, 0, wxEXPAND, 5 );
+       
+       wxFlexGridSizer* fgSizer52;
+       fgSizer52 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer52->AddGrowableCol( 1 );
+       fgSizer52->SetFlexibleDirection( wxBOTH );
+       fgSizer52->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblBusinessNickname = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Nicknames:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessNickname->Wrap( 0 );
+       fgSizer52->Add( lblBusinessNickname, 0, wxALL, 5 );
+       
+       wxBoxSizer* szrAddresses22;
+       szrAddresses22 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessNicknames = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses22->Add( lboBusinessNicknames, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrAddressesOuter22;
+       szrAddressesOuter22 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4632;
+       bSizer4632 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4732;
+       bSizer4732 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessNickname = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4732->Add( btnAddBusinessNickname, 0, wxALL, 5 );
+       
+       btnModifyBusinessNickname = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4732->Add( btnModifyBusinessNickname, 0, wxALL, 5 );
+       
+       btnDeleteBusinessNickname = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4732->Add( btnDeleteBusinessNickname, 0, wxALL, 5 );
+       
+       
+       bSizer4632->Add( bSizer4732, 1, wxEXPAND, 5 );
+       
+       
+       szrAddressesOuter22->Add( bSizer4632, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses22->Add( szrAddressesOuter22, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( szrAddresses22, 1, wxEXPAND, 5 );
+       
+       lblBusinessAddress = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Addresses:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessAddress->Wrap( 0 );
+       fgSizer52->Add( lblBusinessAddress, 0, wxALL, 5 );
+       
+       wxBoxSizer* szrAddresses2;
+       szrAddresses2 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessAddresses = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses2->Add( lboBusinessAddresses, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrAddressesOuter2;
+       szrAddressesOuter2 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer463;
+       bSizer463 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer473;
+       bSizer473 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer473->Add( btnAddBusinessAddress, 0, wxALL, 5 );
+       
+       btnModifyBusinessAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer473->Add( btnModifyBusinessAddress, 0, wxALL, 5 );
+       
+       btnDeleteBusinessAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer473->Add( btnDeleteBusinessAddress, 0, wxALL, 5 );
+       
+       
+       bSizer463->Add( bSizer473, 1, wxEXPAND, 5 );
+       
+       
+       szrAddressesOuter2->Add( bSizer463, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses2->Add( szrAddressesOuter2, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( szrAddresses2, 1, wxEXPAND, 5 );
+       
+       lblBusinessEmail = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business E-mail:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessEmail->Wrap( 0 );
+       fgSizer52->Add( lblBusinessEmail, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3013;
+       bSizer3013 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessEmail = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3013->Add( lboBusinessEmail, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3513;
+       bSizer3513 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4613;
+       bSizer4613 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4713;
+       bSizer4713 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessEmailAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4713->Add( btnAddBusinessEmailAddress, 0, wxALL, 5 );
+       
+       btnModifyBusinessEmailAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4713->Add( btnModifyBusinessEmailAddress, 0, wxALL, 5 );
+       
+       btnDeleteBusinessEmailAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4713->Add( btnDeleteBusinessEmailAddress, 0, wxALL, 5 );
+       
+       
+       bSizer4613->Add( bSizer4713, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3513->Add( bSizer4613, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3013->Add( bSizer3513, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer3013, 1, wxEXPAND, 5 );
+       
+       lblBusinessIM = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Instant Messaging:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessIM->Wrap( 0 );
+       fgSizer52->Add( lblBusinessIM, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30113;
+       bSizer30113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessIM = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30113->Add( lboBusinessIM, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35113;
+       bSizer35113 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46113;
+       bSizer46113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47113;
+       bSizer47113 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessIMAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47113->Add( btnAddBusinessIMAddress, 0, wxALL, 5 );
+       
+       btnModifyBusinessIMAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47113->Add( btnModifyBusinessIMAddress, 0, wxALL, 5 );
+       
+       btnDeleteBusinessIMAddress = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47113->Add( btnDeleteBusinessIMAddress, 0, wxALL, 5 );
+       
+       
+       bSizer46113->Add( bSizer47113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35113->Add( bSizer46113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30113->Add( bSizer35113, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer30113, 1, wxEXPAND, 5 );
+       
+       lblBusinessTelephone = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Telephone:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessTelephone->Wrap( 0 );
+       fgSizer52->Add( lblBusinessTelephone, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301113;
+       bSizer301113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessTelephone = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301113->Add( lboBusinessTelephone, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351113;
+       bSizer351113 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461113;
+       bSizer461113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471113;
+       bSizer471113 = new wxBoxSizer( wxVERTICAL );
+       
+       btnBusinessAddTelephone = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471113->Add( btnBusinessAddTelephone, 0, wxALL, 5 );
+       
+       btnBusinessModifyTelephone = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471113->Add( btnBusinessModifyTelephone, 0, wxALL, 5 );
+       
+       btnBusinessDeleteTelephone = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471113->Add( btnBusinessDeleteTelephone, 0, wxALL, 5 );
+       
+       
+       bSizer461113->Add( bSizer471113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351113->Add( bSizer461113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301113->Add( bSizer351113, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer301113, 1, wxEXPAND, 5 );
+       
+       lblBusinessLanguage = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Languages:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessLanguage->Wrap( 0 );
+       fgSizer52->Add( lblBusinessLanguage, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011113;
+       bSizer3011113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessLanguages = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011113->Add( lboBusinessLanguages, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511113;
+       bSizer3511113 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611113;
+       bSizer4611113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711113;
+       bSizer4711113 = new wxBoxSizer( wxVERTICAL );
+       
+       btnBusinessAddLanguage = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711113->Add( btnBusinessAddLanguage, 0, wxALL, 5 );
+       
+       btnBusinessModifyLanguage = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711113->Add( btnBusinessModifyLanguage, 0, wxALL, 5 );
+       
+       btnBusinessDeleteLanguage = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711113->Add( btnBusinessDeleteLanguage, 0, wxALL, 5 );
+       
+       
+       bSizer4611113->Add( bSizer4711113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511113->Add( bSizer4611113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011113->Add( bSizer3511113, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer3011113, 1, wxEXPAND, 5 );
+       
+       lblBusinessTimezones = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Timezones:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessTimezones->Wrap( 0 );
+       fgSizer52->Add( lblBusinessTimezones, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111113;
+       bSizer30111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessTimezones = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111113->Add( lboBusinessTimezones, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111113;
+       bSizer35111113 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111113;
+       bSizer46111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111113;
+       bSizer47111113 = new wxBoxSizer( wxVERTICAL );
+       
+       btnBusinessAddTimezone = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111113->Add( btnBusinessAddTimezone, 0, wxALL, 5 );
+       
+       btnBusinessModifyTimezone = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111113->Add( btnBusinessModifyTimezone, 0, wxALL, 5 );
+       
+       btnDeleteBusinessTimezone = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111113->Add( btnDeleteBusinessTimezone, 0, wxALL, 5 );
+       
+       
+       bSizer46111113->Add( bSizer47111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111113->Add( bSizer46111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111113->Add( bSizer35111113, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer30111113, 1, wxEXPAND, 5 );
+       
+       lblBusinessGeopositioning = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Geopositioning:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessGeopositioning->Wrap( 0 );
+       fgSizer52->Add( lblBusinessGeopositioning, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011111411;
+       bSizer3011111411 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessGeoposition = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011111411->Add( lboBusinessGeoposition, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511111411;
+       bSizer3511111411 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611111411;
+       bSizer4611111411 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711111411;
+       bSizer4711111411 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessGeoposition = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111411->Add( btnAddBusinessGeoposition, 0, wxALL, 5 );
+       
+       btnModifyBusinessGeoposition = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111411->Add( btnModifyBusinessGeoposition, 0, wxALL, 5 );
+       
+       btnDeleteBusinessGeoposition = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111411->Add( btnDeleteBusinessGeoposition, 0, wxALL, 5 );
+       
+       
+       bSizer4611111411->Add( bSizer4711111411, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511111411->Add( bSizer4611111411, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011111411->Add( bSizer3511111411, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer3011111411, 1, wxEXPAND, 5 );
+       
+       lblBusinessWebsites = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Websites:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessWebsites->Wrap( 1 );
+       fgSizer52->Add( lblBusinessWebsites, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011111113;
+       bSizer3011111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessWebsites = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011111113->Add( lboBusinessWebsites, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511111113;
+       bSizer3511111113 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611111113;
+       bSizer4611111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711111113;
+       bSizer4711111113 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessWebsite = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111113->Add( btnAddBusinessWebsite, 0, wxALL, 5 );
+       
+       btnModifyBusinessWebsite = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111113->Add( btnModifyBusinessWebsite, 0, wxALL, 5 );
+       
+       btnDeleteBusinessWebsite = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111113->Add( btnDeleteBusinessWebsite, 0, wxALL, 5 );
+       
+       
+       bSizer4611111113->Add( bSizer4711111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511111113->Add( bSizer4611111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011111113->Add( bSizer3511111113, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer3011111113, 1, wxEXPAND, 5 );
+       
+       lblBusinessTitles = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Titles:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessTitles->Wrap( 1 );
+       fgSizer52->Add( lblBusinessTitles, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111111113;
+       bSizer30111111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessTitles = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER );
+       bSizer30111111113->Add( lboBusinessTitles, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111111113;
+       bSizer35111111113 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111111113;
+       bSizer46111111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111111113;
+       bSizer47111111113 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessTitle = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111113->Add( btnAddBusinessTitle, 0, wxALL, 5 );
+       
+       btnModifyBusinessTitle = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111113->Add( btnModifyBusinessTitle, 0, wxALL, 5 );
+       
+       btnDeleteBusinessTitle = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111113->Add( btnDeleteBusinessTitle, 0, wxALL, 5 );
+       
+       
+       bSizer46111111113->Add( bSizer47111111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111111113->Add( bSizer46111111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111111113->Add( bSizer35111111113, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer30111111113, 1, wxEXPAND, 5 );
+       
+       lblBusinessRoles = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Roles:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessRoles->Wrap( 1 );
+       fgSizer52->Add( lblBusinessRoles, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301111111113;
+       bSizer301111111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessRoles = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301111111113->Add( lboBusinessRoles, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351111111113;
+       bSizer351111111113 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461111111113;
+       bSizer461111111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471111111113;
+       bSizer471111111113 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessRole = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111113->Add( btnAddBusinessRole, 0, wxALL, 5 );
+       
+       btnModifyBusinessRole = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111113->Add( btnModifyBusinessRole, 0, wxALL, 5 );
+       
+       btnDeleteBusinessRole = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471111111113->Add( btnDeleteBusinessRole, 0, wxALL, 5 );
+       
+       
+       bSizer461111111113->Add( bSizer471111111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351111111113->Add( bSizer461111111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301111111113->Add( bSizer351111111113, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer301111111113, 1, wxEXPAND, 5 );
+       
+       lblBusinessOrganisations = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Organisations:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessOrganisations->Wrap( 1 );
+       fgSizer52->Add( lblBusinessOrganisations, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer3011111111113;
+       bSizer3011111111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessOrganisations = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer3011111111113->Add( lboBusinessOrganisations, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer3511111111113;
+       bSizer3511111111113 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4611111111113;
+       bSizer4611111111113 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4711111111113;
+       bSizer4711111111113 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddBusinessOrganisations = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111113->Add( btnAddBusinessOrganisations, 0, wxALL, 5 );
+       
+       btnModifyBusinessOrganisations = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111113->Add( btnModifyBusinessOrganisations, 0, wxALL, 5 );
+       
+       btnDeleteBusinessOrganisations = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4711111111113->Add( btnDeleteBusinessOrganisations, 0, wxALL, 5 );
+       
+       
+       bSizer4611111111113->Add( bSizer4711111111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3511111111113->Add( bSizer4611111111113, 1, wxEXPAND, 5 );
+       
+       
+       bSizer3011111111113->Add( bSizer3511111111113, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer3011111111113, 1, wxEXPAND, 5 );
+       
+       lblBusinessNotes = new wxStaticText( tabBusiness, wxID_ANY, wxT("Business Notes:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblBusinessNotes->Wrap( 1 );
+       fgSizer52->Add( lblBusinessNotes, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30111111111112;
+       bSizer30111111111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboBusinessNotes = new wxListCtrl( tabBusiness, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30111111111112->Add( lboBusinessNotes, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35111111111112;
+       bSizer35111111111112 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46111111111112;
+       bSizer46111111111112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47111111111112;
+       bSizer47111111111112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnBusinessAddNote = new wxButton( tabBusiness, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111112->Add( btnBusinessAddNote, 0, wxALL, 5 );
+       
+       btnBusinessModifyNote = new wxButton( tabBusiness, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111112->Add( btnBusinessModifyNote, 0, wxALL, 5 );
+       
+       btnBusinessDeleteNote = new wxButton( tabBusiness, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47111111111112->Add( btnBusinessDeleteNote, 0, wxALL, 5 );
+       
+       
+       bSizer46111111111112->Add( bSizer47111111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35111111111112->Add( bSizer46111111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30111111111112->Add( bSizer35111111111112, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer52->Add( bSizer30111111111112, 1, wxEXPAND, 5 );
+       
+       
+       bSizer182->Add( fgSizer52, 0, wxEXPAND, 5 );
+       
+       
+       tabBusiness->SetSizer( bSizer182 );
+       tabBusiness->Layout();
+       bSizer182->Fit( tabBusiness );
+       nbkContact->AddPage( tabBusiness, wxT("Business"), false );
+       tabCategories = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabCategories->SetScrollRate( 5, 5 );
+       wxBoxSizer* szrAddresses11;
+       szrAddresses11 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboCategories = new wxListCtrl( tabCategories, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses11->Add( lboCategories, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrCategoriesOuter;
+       szrCategoriesOuter = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4621;
+       bSizer4621 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4721;
+       bSizer4721 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddCategory = new wxButton( tabCategories, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4721->Add( btnAddCategory, 0, wxALL, 5 );
+       
+       btnModifyCategory = new wxButton( tabCategories, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4721->Add( btnModifyCategory, 0, wxALL, 5 );
+       
+       btnDeleteCategory = new wxButton( tabCategories, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4721->Add( btnDeleteCategory, 0, wxALL, 5 );
+       
+       
+       bSizer4621->Add( bSizer4721, 1, wxEXPAND, 5 );
+       
+       
+       szrCategoriesOuter->Add( bSizer4621, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses11->Add( szrCategoriesOuter, 0, wxEXPAND, 5 );
+       
+       
+       tabCategories->SetSizer( szrAddresses11 );
+       tabCategories->Layout();
+       szrAddresses11->Fit( tabCategories );
+       nbkContact->AddPage( tabCategories, wxT("Categories"), false );
+       tabMembers = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabMembers->SetScrollRate( 5, 5 );
+       wxBoxSizer* szrAddresses111;
+       szrAddresses111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboGroups = new wxListCtrl( tabMembers, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses111->Add( lboGroups, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrCategoriesOuter1;
+       szrCategoriesOuter1 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46211;
+       bSizer46211 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47211;
+       bSizer47211 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddGroups = new wxButton( tabMembers, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47211->Add( btnAddGroups, 0, wxALL, 5 );
+       
+       btnModifyGroups = new wxButton( tabMembers, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47211->Add( btnModifyGroups, 0, wxALL, 5 );
+       
+       btnDeleteGroups = new wxButton( tabMembers, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47211->Add( btnDeleteGroups, 0, wxALL, 5 );
+       
+       
+       bSizer46211->Add( bSizer47211, 1, wxEXPAND, 5 );
+       
+       
+       szrCategoriesOuter1->Add( bSizer46211, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses111->Add( szrCategoriesOuter1, 0, wxEXPAND, 5 );
+       
+       
+       tabMembers->SetSizer( szrAddresses111 );
+       tabMembers->Layout();
+       szrAddresses111->Fit( tabMembers );
+       nbkContact->AddPage( tabMembers, wxT("Members"), false );
+       tabPictures = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabPictures->SetScrollRate( 5, 5 );
+       wxBoxSizer* bSizer210;
+       bSizer210 = new wxBoxSizer( wxHORIZONTAL );
+       
+       imgPicture = new wxStaticBitmap( tabPictures, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER );
+       bSizer210->Add( imgPicture, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer211;
+       bSizer211 = new wxBoxSizer( wxVERTICAL );
+       
+       lboPictures = new wxListCtrl( tabPictures, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer211->Add( lboPictures, 0, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer212;
+       bSizer212 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer213;
+       bSizer213 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAddPicture = new wxButton( tabPictures, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer213->Add( btnAddPicture, 0, wxALL, 5 );
+       
+       btnModifyPicture = new wxButton( tabPictures, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer213->Add( btnModifyPicture, 0, wxALL, 5 );
+       
+       btnDeletePicture = new wxButton( tabPictures, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer213->Add( btnDeletePicture, 0, wxALL, 5 );
+       
+       
+       bSizer212->Add( bSizer213, 1, wxEXPAND, 5 );
+       
+       
+       bSizer211->Add( bSizer212, 0, wxEXPAND, 5 );
+       
+       
+       bSizer210->Add( bSizer211, 1, wxEXPAND, 5 );
+       
+       
+       tabPictures->SetSizer( bSizer210 );
+       tabPictures->Layout();
+       bSizer210->Fit( tabPictures );
+       nbkContact->AddPage( tabPictures, wxT("Pictures"), false );
+       tabLogo = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabLogo->SetScrollRate( 5, 5 );
+       wxBoxSizer* bSizer2101;
+       bSizer2101 = new wxBoxSizer( wxHORIZONTAL );
+       
+       imgLogo = new wxStaticBitmap( tabLogo, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER );
+       bSizer2101->Add( imgLogo, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer2111;
+       bSizer2111 = new wxBoxSizer( wxVERTICAL );
+       
+       lboLogos = new wxListCtrl( tabLogo, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer2111->Add( lboLogos, 0, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer2121;
+       bSizer2121 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer2131;
+       bSizer2131 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAddLogo = new wxButton( tabLogo, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer2131->Add( btnAddLogo, 0, wxALL, 5 );
+       
+       btnModifyLogo = new wxButton( tabLogo, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer2131->Add( btnModifyLogo, 0, wxALL, 5 );
+       
+       btnDeleteLogo = new wxButton( tabLogo, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer2131->Add( btnDeleteLogo, 0, wxALL, 5 );
+       
+       
+       bSizer2121->Add( bSizer2131, 1, wxEXPAND, 5 );
+       
+       
+       bSizer2111->Add( bSizer2121, 0, wxEXPAND, 5 );
+       
+       
+       bSizer2101->Add( bSizer2111, 1, wxEXPAND, 5 );
+       
+       
+       tabLogo->SetSizer( bSizer2101 );
+       tabLogo->Layout();
+       bSizer2101->Fit( tabLogo );
+       nbkContact->AddPage( tabLogo, wxT("Logos"), false );
+       tabSounds = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabSounds->SetScrollRate( 5, 5 );
+       wxBoxSizer* szrAddresses1111;
+       szrAddresses1111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboSounds = new wxListCtrl( tabSounds, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses1111->Add( lboSounds, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrCategoriesOuter11;
+       szrCategoriesOuter11 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer462111;
+       bSizer462111 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer472111;
+       bSizer472111 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddSound = new wxButton( tabSounds, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472111->Add( btnAddSound, 0, wxALL, 5 );
+       
+       btnModifySound = new wxButton( tabSounds, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472111->Add( btnModifySound, 0, wxALL, 5 );
+       
+       btnDeleteSound = new wxButton( tabSounds, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472111->Add( btnDeleteSound, 0, wxALL, 5 );
+       
+       m_staticline1 = new wxStaticLine( tabSounds, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer472111->Add( m_staticline1, 0, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer348;
+       bSizer348 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnPlay = new wxBitmapButton( tabSounds, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+       btnPlay->SetMinSize( wxSize( -1,32 ) );
+       
+       bSizer348->Add( btnPlay, 0, wxALL|wxEXPAND, 5 );
+       
+       btnStop = new wxBitmapButton( tabSounds, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+       btnStop->SetMinSize( wxSize( -1,32 ) );
+       
+       bSizer348->Add( btnStop, 0, wxALL, 5 );
+       
+       
+       bSizer472111->Add( bSizer348, 0, wxALIGN_CENTER, 5 );
+       
+       
+       bSizer462111->Add( bSizer472111, 1, wxEXPAND, 5 );
+       
+       
+       szrCategoriesOuter11->Add( bSizer462111, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses1111->Add( szrCategoriesOuter11, 0, wxEXPAND, 5 );
+       
+       
+       tabSounds->SetSizer( szrAddresses1111 );
+       tabSounds->Layout();
+       szrAddresses1111->Fit( tabSounds );
+       nbkContact->AddPage( tabSounds, wxT("Sounds"), true );
+       tabCalendaring = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabCalendaring->SetScrollRate( 5, 5 );
+       wxBoxSizer* bSizer1821;
+       bSizer1821 = new wxBoxSizer( wxVERTICAL );
+       
+       wxFlexGridSizer* fgSizer521;
+       fgSizer521 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer521->AddGrowableCol( 1 );
+       fgSizer521->SetFlexibleDirection( wxBOTH );
+       fgSizer521->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblCalendarAddresses = new wxStaticText( tabCalendaring, wxID_ANY, wxT("Calendar Addresses:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCalendarAddresses->Wrap( 0 );
+       fgSizer521->Add( lblCalendarAddresses, 0, wxALL, 5 );
+       
+       wxBoxSizer* szrAddresses21;
+       szrAddresses21 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboCalendarAddresses = new wxListCtrl( tabCalendaring, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses21->Add( lboCalendarAddresses, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrAddressesOuter21;
+       szrAddressesOuter21 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer4631;
+       bSizer4631 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer4731;
+       bSizer4731 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddCalendarAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4731->Add( btnAddCalendarAddress, 0, wxALL, 5 );
+       
+       btnModifyCalendarAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4731->Add( btnModifyCalendarAddress, 0, wxALL, 5 );
+       
+       btnDeleteCalendarAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer4731->Add( btnDeleteCalendarAddress, 0, wxALL, 5 );
+       
+       
+       bSizer4631->Add( bSizer4731, 1, wxEXPAND, 5 );
+       
+       
+       szrAddressesOuter21->Add( bSizer4631, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses21->Add( szrAddressesOuter21, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer521->Add( szrAddresses21, 1, wxEXPAND, 5 );
+       
+       lblCalendarRequestAddresses = new wxStaticText( tabCalendaring, wxID_ANY, wxT("Calendar Request Address:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCalendarRequestAddresses->Wrap( 0 );
+       fgSizer521->Add( lblCalendarRequestAddresses, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer30131;
+       bSizer30131 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboCalendarRequestAddress = new wxListCtrl( tabCalendaring, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer30131->Add( lboCalendarRequestAddress, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer35131;
+       bSizer35131 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46131;
+       bSizer46131 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47131;
+       bSizer47131 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddCalendarRequestAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47131->Add( btnAddCalendarRequestAddress, 0, wxALL, 5 );
+       
+       btnModifyCalendarRequestAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47131->Add( btnModifyCalendarRequestAddress, 0, wxALL, 5 );
+       
+       btnDeleteCalendarRequestAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47131->Add( btnDeleteCalendarRequestAddress, 0, wxALL, 5 );
+       
+       
+       bSizer46131->Add( bSizer47131, 1, wxEXPAND, 5 );
+       
+       
+       bSizer35131->Add( bSizer46131, 1, wxEXPAND, 5 );
+       
+       
+       bSizer30131->Add( bSizer35131, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer521->Add( bSizer30131, 1, wxEXPAND, 5 );
+       
+       lblFreeBusyAddresses = new wxStaticText( tabCalendaring, wxID_ANY, wxT("Free/Busy Addresses:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblFreeBusyAddresses->Wrap( 0 );
+       fgSizer521->Add( lblFreeBusyAddresses, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301131;
+       bSizer301131 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboFreeBusyAddresses = new wxListCtrl( tabCalendaring, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301131->Add( lboFreeBusyAddresses, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351131;
+       bSizer351131 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461131;
+       bSizer461131 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471131;
+       bSizer471131 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddFreeBusyAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471131->Add( btnAddFreeBusyAddress, 0, wxALL, 5 );
+       
+       btnModifyFreeBusyAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471131->Add( btnModifyFreeBusyAddress, 0, wxALL, 5 );
+       
+       btnDeleteFreeBusyAddress = new wxButton( tabCalendaring, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471131->Add( btnDeleteFreeBusyAddress, 0, wxALL, 5 );
+       
+       
+       bSizer461131->Add( bSizer471131, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351131->Add( bSizer461131, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301131->Add( bSizer351131, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer521->Add( bSizer301131, 1, wxEXPAND, 5 );
+       
+       
+       bSizer1821->Add( fgSizer521, 0, wxEXPAND, 5 );
+       
+       
+       tabCalendaring->SetSizer( bSizer1821 );
+       tabCalendaring->Layout();
+       bSizer1821->Fit( tabCalendaring );
+       nbkContact->AddPage( tabCalendaring, wxT("Calendaring"), false );
+       tabSecurity = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabSecurity->SetScrollRate( 5, 5 );
+       wxBoxSizer* szrAddresses1112;
+       szrAddresses1112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboKeys = new wxListCtrl( tabSecurity, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       szrAddresses1112->Add( lboKeys, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrCategoriesOuter12;
+       szrCategoriesOuter12 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer462112;
+       bSizer462112 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer472112;
+       bSizer472112 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddKey = new wxButton( tabSecurity, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472112->Add( btnAddKey, 0, wxALL, 5 );
+       
+       btnModifyKey = new wxButton( tabSecurity, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472112->Add( btnModifyKey, 0, wxALL, 5 );
+       
+       btnDeleteKey = new wxButton( tabSecurity, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer472112->Add( btnDeleteKey, 0, wxALL, 5 );
+       
+       
+       bSizer462112->Add( bSizer472112, 1, wxEXPAND, 5 );
+       
+       
+       szrCategoriesOuter12->Add( bSizer462112, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses1112->Add( szrCategoriesOuter12, 0, wxEXPAND, 5 );
+       
+       
+       tabSecurity->SetSizer( szrAddresses1112 );
+       tabSecurity->Layout();
+       szrAddresses1112->Fit( tabSecurity );
+       nbkContact->AddPage( tabSecurity, wxT("Security"), false );
+       tabOther = new wxScrolledWindow( nbkContact, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
+       tabOther->SetScrollRate( 5, 5 );
+       wxFlexGridSizer* fgSizer5211;
+       fgSizer5211 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer5211->AddGrowableCol( 1 );
+       fgSizer5211->SetFlexibleDirection( wxBOTH );
+       fgSizer5211->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblVendorNamespace = new wxStaticText( tabOther, wxID_ANY, wxT("Vendor Namespace:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblVendorNamespace->Wrap( 0 );
+       fgSizer5211->Add( lblVendorNamespace, 0, wxALL, 5 );
+       
+       wxBoxSizer* szrAddresses211;
+       szrAddresses211 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboVendorNamespace = new wxListCtrl( tabOther, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER );
+       szrAddresses211->Add( lboVendorNamespace, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* szrAddressesOuter211;
+       szrAddressesOuter211 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer46311;
+       bSizer46311 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer47311;
+       bSizer47311 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddVendorNamespace = new wxButton( tabOther, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47311->Add( btnAddVendorNamespace, 0, wxALL, 5 );
+       
+       btnModifyVendorNamespace = new wxButton( tabOther, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47311->Add( btnModifyVendorNamespace, 0, wxALL, 5 );
+       
+       btnDeleteVendorNamespace = new wxButton( tabOther, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer47311->Add( btnDeleteVendorNamespace, 0, wxALL, 5 );
+       
+       
+       bSizer46311->Add( bSizer47311, 1, wxEXPAND, 5 );
+       
+       
+       szrAddressesOuter211->Add( bSizer46311, 1, wxEXPAND, 5 );
+       
+       
+       szrAddresses211->Add( szrAddressesOuter211, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5211->Add( szrAddresses211, 1, wxEXPAND, 5 );
+       
+       lblXTokens = new wxStaticText( tabOther, wxID_ANY, wxT("X-Tokens:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblXTokens->Wrap( 0 );
+       fgSizer5211->Add( lblXTokens, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer301311;
+       bSizer301311 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lboXToken = new wxListCtrl( tabOther, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer301311->Add( lboXToken, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer351311;
+       bSizer351311 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer461311;
+       bSizer461311 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer471311;
+       bSizer471311 = new wxBoxSizer( wxVERTICAL );
+       
+       btnAddXToken = new wxButton( tabOther, wxID_ANY, wxT("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471311->Add( btnAddXToken, 0, wxALL, 5 );
+       
+       btnModifyXToken = new wxButton( tabOther, wxID_ANY, wxT("Modify"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471311->Add( btnModifyXToken, 0, wxALL, 5 );
+       
+       btnDeleteXToken = new wxButton( tabOther, wxID_ANY, wxT("Delete"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer471311->Add( btnDeleteXToken, 0, wxALL, 5 );
+       
+       
+       bSizer461311->Add( bSizer471311, 1, wxEXPAND, 5 );
+       
+       
+       bSizer351311->Add( bSizer461311, 1, wxEXPAND, 5 );
+       
+       
+       bSizer301311->Add( bSizer351311, 0, wxEXPAND, 5 );
+       
+       
+       fgSizer5211->Add( bSizer301311, 1, wxEXPAND, 5 );
+       
+       
+       tabOther->SetSizer( fgSizer5211 );
+       tabOther->Layout();
+       fgSizer5211->Fit( tabOther );
+       nbkContact->AddPage( tabOther, wxT("Other"), false );
+       
+       bSizer17->Add( nbkContact, 1, wxEXPAND | wxALL, 5 );
+       
+       
+       this->SetSizer( bSizer17 );
+       this->Layout();
+       m_menubar3 = new wxMenuBar( 0 );
+       mnuContact = new wxMenu();
+       wxMenuItem* mnuContactSave;
+       mnuContactSave = new wxMenuItem( mnuContact, CONTACT_SAVE, wxString( wxT("Save") ) + wxT('\t') + wxT("Ctrl+S"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuContactSave );
+       
+       wxMenuItem* mnuContactSaveClose;
+       mnuContactSaveClose = new wxMenuItem( mnuContact, CONTACT_SAVECLOSE, wxString( wxT("&Save and Close Contact") ) + wxT('\t') + wxT("Ctrl+Shift+S"), wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuContactSaveClose );
+       
+       mnuContact->AppendSeparator();
+       
+       wxMenuItem* mnuContactClose;
+       mnuContactClose = new wxMenuItem( mnuContact, CONTACT_CLOSE, wxString( wxT("Close") ) , wxEmptyString, wxITEM_NORMAL );
+       mnuContact->Append( mnuContactClose );
+       
+       m_menubar3->Append( mnuContact, wxT("&Contact") ); 
+       
+       mnuEdit = new wxMenu();
+       wxMenuItem* mnuEditCut;
+       mnuEditCut = new wxMenuItem( mnuEdit, wxID_CUT, wxString( wxT("Cu&t") ) + wxT('\t') + wxT("Ctrl+X"), wxEmptyString, wxITEM_NORMAL );
+       mnuEdit->Append( mnuEditCut );
+       
+       wxMenuItem* mnuEditCopy;
+       mnuEditCopy = new wxMenuItem( mnuEdit, wxID_COPY, wxString( wxT("&Copy") ) + wxT('\t') + wxT("Ctrl+C"), wxEmptyString, wxITEM_NORMAL );
+       mnuEdit->Append( mnuEditCopy );
+       
+       wxMenuItem* mnuEditPaste;
+       mnuEditPaste = new wxMenuItem( mnuEdit, wxID_PASTE, wxString( wxT("&Paste") ) + wxT('\t') + wxT("Ctrl+V"), wxEmptyString, wxITEM_NORMAL );
+       mnuEdit->Append( mnuEditPaste );
+       
+       m_menubar3->Append( mnuEdit, wxT("&Edit") ); 
+       
+       this->SetMenuBar( m_menubar3 );
+       
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmContactEditorADT::CloseWindow ) );
+       txtTitle->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       txtForename->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       txtSurname->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       txtOtherNames->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       txtSuffix->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       cmbDisplayAs->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorADT::UpdateName ), NULL, this );
+       cmbDisplayAs->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateName ), NULL, this );
+       cmbType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmContactEditorADT::UpdateMembersTab ), NULL, this );
+       btnAddGeneralNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralNickname ), NULL, this );
+       btnModifyGeneralNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralNickname ), NULL, this );
+       btnDeleteGeneralNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralNickname ), NULL, this );
+       btnAddGeneralAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralAddress ), NULL, this );
+       btnModifyGeneralAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralAddress ), NULL, this );
+       btnDeleteGeneralAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralAddress ), NULL, this );
+       btnAddEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralEmail ), NULL, this );
+       btnModifyEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralEmail ), NULL, this );
+       btnDeleteEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralEmail ), NULL, this );
+       btnAddIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralIM ), NULL, this );
+       btnModifyIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralIM ), NULL, this );
+       btnDeleteIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralIM ), NULL, this );
+       btnAddTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTelephone ), NULL, this );
+       btnModifyTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTelephone ), NULL, this );
+       btnDeleteTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTelephone ), NULL, this );
+       btnAddLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralLanguages ), NULL, this );
+       btnModifyLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralLanguages ), NULL, this );
+       btnDeleteLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralLanguage ), NULL, this );
+       btnAddTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTimezone ), NULL, this );
+       btnModifyTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTimezone ), NULL, this );
+       btnDeleteTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTimezone ), NULL, this );
+       btnAddGeneralGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralGeoposition ), NULL, this );
+       btnModifyGeneralGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralGeoposition ), NULL, this );
+       btnDeleteGeneralGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralGeoposition ), NULL, this );
+       btnAddRelated->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralRelated ), NULL, this );
+       btnModifyRelated->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralRelated ), NULL, this );
+       btnDeleteRelated->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralRelated ), NULL, this );
+       btnAddWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralWebsite ), NULL, this );
+       btnModifyWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralWebsite ), NULL, this );
+       btnDeleteWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralWebsite ), NULL, this );
+       btnAddTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTitle ), NULL, this );
+       btnModifyTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTitle ), NULL, this );
+       btnDeleteTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTitle ), NULL, this );
+       btnAddRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralRole ), NULL, this );
+       btnModifyRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralRole ), NULL, this );
+       btnDeleteRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralRole ), NULL, this );
+       btnAddOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralOrganisation ), NULL, this );
+       btnModifyOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralOrganisation ), NULL, this );
+       btnDeleteOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralOrganisation ), NULL, this );
+       btnAddNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralNote ), NULL, this );
+       btnModifyNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralNote ), NULL, this );
+       btnDeleteNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralNote ), NULL, this );
+       btnAddHomeNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeNickname ), NULL, this );
+       btnModifyHomeNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeNickname ), NULL, this );
+       btnDeleteHomeNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeNickname ), NULL, this );
+       btnAddHomeAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeAddress ), NULL, this );
+       btnModifyHomeAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeAddress ), NULL, this );
+       btnDeleteHomeAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeAddress ), NULL, this );
+       btnAddHomeEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeEmail ), NULL, this );
+       btnModifyHomeEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeEmail ), NULL, this );
+       btnDeleteHomeEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeEmail ), NULL, this );
+       btnAddHomeIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeIM ), NULL, this );
+       btnModifyHomeIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeIM ), NULL, this );
+       btnDeleteHomeIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeIM ), NULL, this );
+       btnAddHomeTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTelephone ), NULL, this );
+       btnModifyHomeTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTelephone ), NULL, this );
+       btnDeleteHomeTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTelephone ), NULL, this );
+       btnAddHomeLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeLanguage ), NULL, this );
+       btnModifyHomeLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeLanguage ), NULL, this );
+       btnDeleteHomeLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeLanguage ), NULL, this );
+       btnAddHomeTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTimezone ), NULL, this );
+       btnModifyHomeTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTimezone ), NULL, this );
+       btnDeleteHomeTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTimezone ), NULL, this );
+       btnAddHomeGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeGeoposition ), NULL, this );
+       btnModifyHomeGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeGeoposition ), NULL, this );
+       btnDeleteHomePosition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeGeoposition ), NULL, this );
+       btnAddHomeWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeWebsite ), NULL, this );
+       btnHomeModifyWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeWebsite ), NULL, this );
+       btnDeleteHomeWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeWebsite ), NULL, this );
+       btnAddHomeTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTitle ), NULL, this );
+       btnModifyHomeTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTitle ), NULL, this );
+       btnDeleteHomeTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTitle ), NULL, this );
+       btnAddHomeRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeRole ), NULL, this );
+       btnModifyHomeRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeRole ), NULL, this );
+       btnDeleteHomeRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeRole ), NULL, this );
+       btnAddHomeOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeOrganisation ), NULL, this );
+       btnModifyHomeOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeOrganisation ), NULL, this );
+       btnDeleteHomeOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeOrganisation ), NULL, this );
+       btnAddHomeNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeNote ), NULL, this );
+       btnModifyHomeNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeNote ), NULL, this );
+       btnDeleteHomeNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeNote ), NULL, this );
+       btnAddBusinessNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessNickname ), NULL, this );
+       btnModifyBusinessNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessNickname ), NULL, this );
+       btnDeleteBusinessNickname->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessNickname ), NULL, this );
+       btnAddBusinessAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessAddress ), NULL, this );
+       btnModifyBusinessAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessAddress ), NULL, this );
+       btnDeleteBusinessAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessAddress ), NULL, this );
+       btnAddBusinessEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessEmail ), NULL, this );
+       btnModifyBusinessEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessEmail ), NULL, this );
+       btnDeleteBusinessEmailAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessEmail ), NULL, this );
+       btnAddBusinessIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessIM ), NULL, this );
+       btnModifyBusinessIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessIM ), NULL, this );
+       btnDeleteBusinessIMAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessIM ), NULL, this );
+       btnBusinessAddTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTelephone ), NULL, this );
+       btnBusinessModifyTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTelephone ), NULL, this );
+       btnBusinessDeleteTelephone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTelephone ), NULL, this );
+       btnBusinessAddLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessLanguage ), NULL, this );
+       btnBusinessModifyLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessLanguage ), NULL, this );
+       btnBusinessDeleteLanguage->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessLanguage ), NULL, this );
+       btnBusinessAddTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTimezone ), NULL, this );
+       btnBusinessModifyTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTimezone ), NULL, this );
+       btnDeleteBusinessTimezone->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTimezone ), NULL, this );
+       btnAddBusinessGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessGeoposition ), NULL, this );
+       btnModifyBusinessGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessGeoposition ), NULL, this );
+       btnDeleteBusinessGeoposition->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessGeoposition ), NULL, this );
+       btnAddBusinessWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessWebsite ), NULL, this );
+       btnModifyBusinessWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessWebsite ), NULL, this );
+       btnDeleteBusinessWebsite->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessWebsite ), NULL, this );
+       btnAddBusinessTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTitle ), NULL, this );
+       btnModifyBusinessTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTitle ), NULL, this );
+       btnDeleteBusinessTitle->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTitle ), NULL, this );
+       btnAddBusinessRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessRole ), NULL, this );
+       btnModifyBusinessRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessRole ), NULL, this );
+       btnDeleteBusinessRole->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessRole ), NULL, this );
+       btnAddBusinessOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessOrganisation ), NULL, this );
+       btnModifyBusinessOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessOrganisation ), NULL, this );
+       btnDeleteBusinessOrganisations->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessOrganisation ), NULL, this );
+       btnBusinessAddNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessNote ), NULL, this );
+       btnBusinessModifyNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessNote ), NULL, this );
+       btnBusinessDeleteNote->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessNote ), NULL, this );
+       btnAddCategory->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCategory ), NULL, this );
+       btnModifyCategory->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCategory ), NULL, this );
+       btnDeleteCategory->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCategory ), NULL, this );
+       btnAddGroups->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGroup ), NULL, this );
+       btnModifyGroups->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGroup ), NULL, this );
+       btnDeleteGroups->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGroup ), NULL, this );
+       lboPictures->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmContactEditorADT::LoadPicture ), NULL, this );
+       btnAddPicture->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddPicture ), NULL, this );
+       btnModifyPicture->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyPicture ), NULL, this );
+       btnDeletePicture->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeletePicture ), NULL, this );
+       lboLogos->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmContactEditorADT::LoadLogo ), NULL, this );
+       btnAddLogo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddLogo ), NULL, this );
+       btnModifyLogo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyLogo ), NULL, this );
+       btnDeleteLogo->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteLogo ), NULL, this );
+       btnAddSound->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddSound ), NULL, this );
+       btnModifySound->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifySound ), NULL, this );
+       btnDeleteSound->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteSound ), NULL, this );
+       btnPlay->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::PlaySound ), NULL, this );
+       btnStop->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::StopSound ), NULL, this );
+       btnAddCalendarAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCalendarAddress ), NULL, this );
+       btnModifyCalendarAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCalendarAddress ), NULL, this );
+       btnDeleteCalendarAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCalendarAddress ), NULL, this );
+       btnAddCalendarRequestAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCalendarRequest ), NULL, this );
+       btnModifyCalendarRequestAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCalendarRequest ), NULL, this );
+       btnDeleteCalendarRequestAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCalendarAddress ), NULL, this );
+       btnAddFreeBusyAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddFreeBusy ), NULL, this );
+       btnModifyFreeBusyAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyFreeBusy ), NULL, this );
+       btnDeleteFreeBusyAddress->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteFreeBusy ), NULL, this );
+       btnAddKey->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddKey ), NULL, this );
+       btnModifyKey->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyKey ), NULL, this );
+       btnDeleteKey->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteKey ), NULL, this );
+       btnAddVendorNamespace->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddVendorNamespace ), NULL, this );
+       btnModifyVendorNamespace->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyVendorNamespace ), NULL, this );
+       btnDeleteVendorNamespace->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteVendorNamespace ), NULL, this );
+       btnAddXToken->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddXToken ), NULL, this );
+       btnModifyXToken->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyXToken ), NULL, this );
+       btnDeleteXToken->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteXToken ), NULL, this );
+       this->Connect( mnuContactSave->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::SaveContact ) );
+       this->Connect( mnuContactSaveClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::SaveCloseContact ) );
+       this->Connect( mnuContactClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CloseContact ) );
+       this->Connect( mnuEditCut->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CutText ) );
+       this->Connect( mnuEditCopy->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CopyText ) );
+       this->Connect( mnuEditPaste->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::PasteText ) );
+}
+
+frmContactEditorADT::~frmContactEditorADT()
+{
+       // Disconnect Events
+       this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmContactEditorADT::CloseWindow ) );
+       txtTitle->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       txtForename->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       txtSurname->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       txtOtherNames->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       txtSuffix->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateDisplayAs ), NULL, this );
+       cmbDisplayAs->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorADT::UpdateName ), NULL, this );
+       cmbDisplayAs->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorADT::UpdateName ), NULL, this );
+       cmbType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmContactEditorADT::UpdateMembersTab ), NULL, this );
+       btnAddGeneralNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralNickname ), NULL, this );
+       btnModifyGeneralNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralNickname ), NULL, this );
+       btnDeleteGeneralNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralNickname ), NULL, this );
+       btnAddGeneralAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralAddress ), NULL, this );
+       btnModifyGeneralAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralAddress ), NULL, this );
+       btnDeleteGeneralAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralAddress ), NULL, this );
+       btnAddEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralEmail ), NULL, this );
+       btnModifyEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralEmail ), NULL, this );
+       btnDeleteEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralEmail ), NULL, this );
+       btnAddIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralIM ), NULL, this );
+       btnModifyIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralIM ), NULL, this );
+       btnDeleteIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralIM ), NULL, this );
+       btnAddTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTelephone ), NULL, this );
+       btnModifyTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTelephone ), NULL, this );
+       btnDeleteTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTelephone ), NULL, this );
+       btnAddLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralLanguages ), NULL, this );
+       btnModifyLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralLanguages ), NULL, this );
+       btnDeleteLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralLanguage ), NULL, this );
+       btnAddTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTimezone ), NULL, this );
+       btnModifyTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTimezone ), NULL, this );
+       btnDeleteTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTimezone ), NULL, this );
+       btnAddGeneralGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralGeoposition ), NULL, this );
+       btnModifyGeneralGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralGeoposition ), NULL, this );
+       btnDeleteGeneralGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralGeoposition ), NULL, this );
+       btnAddRelated->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralRelated ), NULL, this );
+       btnModifyRelated->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralRelated ), NULL, this );
+       btnDeleteRelated->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralRelated ), NULL, this );
+       btnAddWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralWebsite ), NULL, this );
+       btnModifyWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralWebsite ), NULL, this );
+       btnDeleteWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralWebsite ), NULL, this );
+       btnAddTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralTitle ), NULL, this );
+       btnModifyTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralTitle ), NULL, this );
+       btnDeleteTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralTitle ), NULL, this );
+       btnAddRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralRole ), NULL, this );
+       btnModifyRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralRole ), NULL, this );
+       btnDeleteRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralRole ), NULL, this );
+       btnAddOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralOrganisation ), NULL, this );
+       btnModifyOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralOrganisation ), NULL, this );
+       btnDeleteOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralOrganisation ), NULL, this );
+       btnAddNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGeneralNote ), NULL, this );
+       btnModifyNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGeneralNote ), NULL, this );
+       btnDeleteNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGeneralNote ), NULL, this );
+       btnAddHomeNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeNickname ), NULL, this );
+       btnModifyHomeNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeNickname ), NULL, this );
+       btnDeleteHomeNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeNickname ), NULL, this );
+       btnAddHomeAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeAddress ), NULL, this );
+       btnModifyHomeAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeAddress ), NULL, this );
+       btnDeleteHomeAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeAddress ), NULL, this );
+       btnAddHomeEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeEmail ), NULL, this );
+       btnModifyHomeEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeEmail ), NULL, this );
+       btnDeleteHomeEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeEmail ), NULL, this );
+       btnAddHomeIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeIM ), NULL, this );
+       btnModifyHomeIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeIM ), NULL, this );
+       btnDeleteHomeIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeIM ), NULL, this );
+       btnAddHomeTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTelephone ), NULL, this );
+       btnModifyHomeTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTelephone ), NULL, this );
+       btnDeleteHomeTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTelephone ), NULL, this );
+       btnAddHomeLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeLanguage ), NULL, this );
+       btnModifyHomeLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeLanguage ), NULL, this );
+       btnDeleteHomeLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeLanguage ), NULL, this );
+       btnAddHomeTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTimezone ), NULL, this );
+       btnModifyHomeTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTimezone ), NULL, this );
+       btnDeleteHomeTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTimezone ), NULL, this );
+       btnAddHomeGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeGeoposition ), NULL, this );
+       btnModifyHomeGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeGeoposition ), NULL, this );
+       btnDeleteHomePosition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeGeoposition ), NULL, this );
+       btnAddHomeWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeWebsite ), NULL, this );
+       btnHomeModifyWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeWebsite ), NULL, this );
+       btnDeleteHomeWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeWebsite ), NULL, this );
+       btnAddHomeTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeTitle ), NULL, this );
+       btnModifyHomeTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeTitle ), NULL, this );
+       btnDeleteHomeTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeTitle ), NULL, this );
+       btnAddHomeRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeRole ), NULL, this );
+       btnModifyHomeRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeRole ), NULL, this );
+       btnDeleteHomeRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeRole ), NULL, this );
+       btnAddHomeOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeOrganisation ), NULL, this );
+       btnModifyHomeOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeOrganisation ), NULL, this );
+       btnDeleteHomeOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeOrganisation ), NULL, this );
+       btnAddHomeNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddHomeNote ), NULL, this );
+       btnModifyHomeNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyHomeNote ), NULL, this );
+       btnDeleteHomeNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteHomeNote ), NULL, this );
+       btnAddBusinessNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessNickname ), NULL, this );
+       btnModifyBusinessNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessNickname ), NULL, this );
+       btnDeleteBusinessNickname->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessNickname ), NULL, this );
+       btnAddBusinessAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessAddress ), NULL, this );
+       btnModifyBusinessAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessAddress ), NULL, this );
+       btnDeleteBusinessAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessAddress ), NULL, this );
+       btnAddBusinessEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessEmail ), NULL, this );
+       btnModifyBusinessEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessEmail ), NULL, this );
+       btnDeleteBusinessEmailAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessEmail ), NULL, this );
+       btnAddBusinessIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessIM ), NULL, this );
+       btnModifyBusinessIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessIM ), NULL, this );
+       btnDeleteBusinessIMAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessIM ), NULL, this );
+       btnBusinessAddTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTelephone ), NULL, this );
+       btnBusinessModifyTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTelephone ), NULL, this );
+       btnBusinessDeleteTelephone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTelephone ), NULL, this );
+       btnBusinessAddLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessLanguage ), NULL, this );
+       btnBusinessModifyLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessLanguage ), NULL, this );
+       btnBusinessDeleteLanguage->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessLanguage ), NULL, this );
+       btnBusinessAddTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTimezone ), NULL, this );
+       btnBusinessModifyTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTimezone ), NULL, this );
+       btnDeleteBusinessTimezone->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTimezone ), NULL, this );
+       btnAddBusinessGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessGeoposition ), NULL, this );
+       btnModifyBusinessGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessGeoposition ), NULL, this );
+       btnDeleteBusinessGeoposition->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessGeoposition ), NULL, this );
+       btnAddBusinessWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessWebsite ), NULL, this );
+       btnModifyBusinessWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessWebsite ), NULL, this );
+       btnDeleteBusinessWebsite->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessWebsite ), NULL, this );
+       btnAddBusinessTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessTitle ), NULL, this );
+       btnModifyBusinessTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessTitle ), NULL, this );
+       btnDeleteBusinessTitle->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessTitle ), NULL, this );
+       btnAddBusinessRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessRole ), NULL, this );
+       btnModifyBusinessRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessRole ), NULL, this );
+       btnDeleteBusinessRole->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessRole ), NULL, this );
+       btnAddBusinessOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessOrganisation ), NULL, this );
+       btnModifyBusinessOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessOrganisation ), NULL, this );
+       btnDeleteBusinessOrganisations->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessOrganisation ), NULL, this );
+       btnBusinessAddNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddBusinessNote ), NULL, this );
+       btnBusinessModifyNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyBusinessNote ), NULL, this );
+       btnBusinessDeleteNote->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteBusinessNote ), NULL, this );
+       btnAddCategory->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCategory ), NULL, this );
+       btnModifyCategory->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCategory ), NULL, this );
+       btnDeleteCategory->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCategory ), NULL, this );
+       btnAddGroups->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddGroup ), NULL, this );
+       btnModifyGroups->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyGroup ), NULL, this );
+       btnDeleteGroups->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteGroup ), NULL, this );
+       lboPictures->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmContactEditorADT::LoadPicture ), NULL, this );
+       btnAddPicture->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddPicture ), NULL, this );
+       btnModifyPicture->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyPicture ), NULL, this );
+       btnDeletePicture->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeletePicture ), NULL, this );
+       lboLogos->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmContactEditorADT::LoadLogo ), NULL, this );
+       btnAddLogo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddLogo ), NULL, this );
+       btnModifyLogo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyLogo ), NULL, this );
+       btnDeleteLogo->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteLogo ), NULL, this );
+       btnAddSound->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddSound ), NULL, this );
+       btnModifySound->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifySound ), NULL, this );
+       btnDeleteSound->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteSound ), NULL, this );
+       btnPlay->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::PlaySound ), NULL, this );
+       btnStop->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::StopSound ), NULL, this );
+       btnAddCalendarAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCalendarAddress ), NULL, this );
+       btnModifyCalendarAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCalendarAddress ), NULL, this );
+       btnDeleteCalendarAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCalendarAddress ), NULL, this );
+       btnAddCalendarRequestAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddCalendarRequest ), NULL, this );
+       btnModifyCalendarRequestAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyCalendarRequest ), NULL, this );
+       btnDeleteCalendarRequestAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteCalendarAddress ), NULL, this );
+       btnAddFreeBusyAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddFreeBusy ), NULL, this );
+       btnModifyFreeBusyAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyFreeBusy ), NULL, this );
+       btnDeleteFreeBusyAddress->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteFreeBusy ), NULL, this );
+       btnAddKey->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddKey ), NULL, this );
+       btnModifyKey->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyKey ), NULL, this );
+       btnDeleteKey->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteKey ), NULL, this );
+       btnAddVendorNamespace->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddVendorNamespace ), NULL, this );
+       btnModifyVendorNamespace->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyVendorNamespace ), NULL, this );
+       btnDeleteVendorNamespace->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteVendorNamespace ), NULL, this );
+       btnAddXToken->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::AddXToken ), NULL, this );
+       btnModifyXToken->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::ModifyXToken ), NULL, this );
+       btnDeleteXToken->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorADT::DeleteXToken ), NULL, this );
+       this->Disconnect( CONTACT_SAVE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::SaveContact ) );
+       this->Disconnect( CONTACT_SAVECLOSE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::SaveCloseContact ) );
+       this->Disconnect( CONTACT_CLOSE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CloseContact ) );
+       this->Disconnect( wxID_CUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CutText ) );
+       this->Disconnect( wxID_COPY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::CopyText ) );
+       this->Disconnect( wxID_PASTE, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmContactEditorADT::PasteText ) );
+       
+}
+
+frmContactEditorAddressADT::frmContactEditorAddressADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkAddress = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 2, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblAddress = new wxStaticText( tabGeneral, wxID_ANY, wxT("Address:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAddress->Wrap( -1 );
+       fgSizer6->Add( lblAddress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtAddress = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtAddress->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtAddress, 0, wxALL|wxEXPAND, 5 );
+       
+       m_staticText61 = new wxStaticText( tabGeneral, wxID_ANY, wxT("Town/City:"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText61->Wrap( -1 );
+       fgSizer6->Add( m_staticText61, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtTownCity = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtTownCity->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtTownCity, 0, wxALL|wxEXPAND, 5 );
+       
+       lblCountyState = new wxStaticText( tabGeneral, wxID_ANY, wxT("County:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCountyState->Wrap( -1 );
+       fgSizer6->Add( lblCountyState, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtCounty = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtCounty->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtCounty, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPostCode = new wxStaticText( tabGeneral, wxID_ANY, wxT("Post Code:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPostCode->Wrap( -1 );
+       fgSizer6->Add( lblPostCode, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtPostCode = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtPostCode->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtPostCode, 0, wxALL, 5 );
+       
+       lblCountry = new wxStaticText( tabGeneral, wxID_ANY, wxT("Country:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCountry->Wrap( -1 );
+       fgSizer6->Add( lblCountry, 0, wxALL, 5 );
+       
+       txtCountry = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtCountry->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtCountry, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkAddress->AddPage( tabGeneral, wxT("General"), true );
+       tabLabel = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer253;
+       bSizer253 = new wxBoxSizer( wxVERTICAL );
+       
+       btnCopyMailing = new wxButton( tabLabel, wxID_ANY, wxT("Copy Address to Label"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer253->Add( btnCopyMailing, 0, wxALL, 5 );
+       
+       txtLabel = new wxTextCtrl( tabLabel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE );
+       txtLabel->SetMaxLength( 0 ); 
+       bSizer253->Add( txtLabel, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       tabLabel->SetSizer( bSizer253 );
+       tabLabel->Layout();
+       bSizer253->Fit( tabLabel );
+       nbkAddress->AddPage( tabLabel, wxT("Label"), false );
+       tabOther = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer61;
+       fgSizer61 = new wxFlexGridSizer( 2, 2, 0, 0 );
+       fgSizer61->AddGrowableCol( 1 );
+       fgSizer61->SetFlexibleDirection( wxVERTICAL );
+       fgSizer61->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblLanguage = new wxStaticText( tabOther, wxID_ANY, wxT("Language:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLanguage->Wrap( -1 );
+       fgSizer61->Add( lblLanguage, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       cmbLanguage = new wxComboBox( tabOther, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer61->Add( cmbLanguage, 0, wxALL, 5 );
+       
+       lblGeography = new wxStaticText( tabOther, wxID_ANY, wxT("Geopositioning:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblGeography->Wrap( -1 );
+       fgSizer61->Add( lblGeography, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtGeo = new wxTextCtrl( tabOther, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtGeo->SetMaxLength( 0 ); 
+       fgSizer61->Add( txtGeo, 0, wxALL|wxEXPAND, 5 );
+       
+       lblTimezone = new wxStaticText( tabOther, wxID_ANY, wxT("Timezone:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTimezone->Wrap( -1 );
+       fgSizer61->Add( lblTimezone, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtTimezone = new wxTextCtrl( tabOther, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtTimezone->SetMaxLength( 0 ); 
+       fgSizer61->Add( txtTimezone, 0, wxALL|wxEXPAND, 5 );
+       
+       
+       tabOther->SetSizer( fgSizer61 );
+       tabOther->Layout();
+       fgSizer61->Fit( tabOther );
+       nbkAddress->AddPage( tabOther, wxT("Other"), false );
+       
+       bSizer251->Add( nbkAddress, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorAddressADT::InitAddressEditor ) );
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::EnablePriority ), NULL, this );
+       btnCopyMailing->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::CopyAddress ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::ProcessData ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorAddressADT::~frmContactEditorAddressADT()
+{
+       // Disconnect Events
+       this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorAddressADT::InitAddressEditor ) );
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::EnablePriority ), NULL, this );
+       btnCopyMailing->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::CopyAddress ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::ProcessData ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorAddressADT::CloseWindow ), NULL, this );
+       
+}
+
+frmConflictResolutionADT::frmConflictResolutionADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxFlexGridSizer* fgSizer39;
+       fgSizer39 = new wxFlexGridSizer( 0, 1, 0, 0 );
+       fgSizer39->AddGrowableCol( 0 );
+       fgSizer39->AddGrowableRow( 0 );
+       fgSizer39->SetFlexibleDirection( wxBOTH );
+       fgSizer39->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       wxBoxSizer* bSizer363;
+       bSizer363 = new wxBoxSizer( wxHORIZONTAL );
+       
+       wxBoxSizer* bSizer364;
+       bSizer364 = new wxBoxSizer( wxVERTICAL );
+       
+       lblText = new wxStaticText( this, wxID_ANY, wxT("An update for this contact has also taken place on the server.\nChoose which version to keep and either press Keep Local or Keep Server.\nTo decide later, click on Decide Later."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblText->Wrap( -1 );
+       bSizer364->Add( lblText, 0, wxALL|wxEXPAND, 5 );
+       
+       m_splitter3 = new wxSplitterWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSP_3D );
+       m_splitter3->Connect( wxEVT_IDLE, wxIdleEventHandler( frmConflictResolutionADT::m_splitter3OnIdle ), NULL, this );
+       
+       m_panel44 = new wxPanel( m_splitter3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer365;
+       bSizer365 = new wxBoxSizer( wxVERTICAL );
+       
+       htmClient = new wxHtmlWindow( m_panel44, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
+       bSizer365->Add( htmClient, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       m_panel44->SetSizer( bSizer365 );
+       m_panel44->Layout();
+       bSizer365->Fit( m_panel44 );
+       m_panel45 = new wxPanel( m_splitter3, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer366;
+       bSizer366 = new wxBoxSizer( wxVERTICAL );
+       
+       htmServer = new wxHtmlWindow( m_panel45, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
+       bSizer366->Add( htmServer, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       m_panel45->SetSizer( bSizer366 );
+       m_panel45->Layout();
+       bSizer366->Fit( m_panel45 );
+       m_splitter3->SplitVertically( m_panel44, m_panel45, 257 );
+       bSizer364->Add( m_splitter3, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer367;
+       bSizer367 = new wxBoxSizer( wxHORIZONTAL );
+       
+       
+       bSizer367->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       btnKeepLocal = new wxButton( this, wxID_ANY, wxT("Keep Local"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer367->Add( btnKeepLocal, 0, wxALL, 5 );
+       
+       btnKeepServer = new wxButton( this, wxID_ANY, wxT("Keep Server"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer367->Add( btnKeepServer, 0, wxALL, 5 );
+       
+       btnDecideLater = new wxButton( this, wxID_ANY, wxT("Decide Later"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer367->Add( btnDecideLater, 0, wxALL, 5 );
+       
+       
+       bSizer367->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       bSizer364->Add( bSizer367, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5 );
+       
+       
+       bSizer363->Add( bSizer364, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer39->Add( bSizer363, 1, wxEXPAND, 5 );
+       
+       
+       this->SetSizer( fgSizer39 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnKeepLocal->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::KeepLocalData ), NULL, this );
+       btnKeepServer->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::KeepServerData ), NULL, this );
+       btnDecideLater->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::DecideLater ), NULL, this );
+}
+
+frmConflictResolutionADT::~frmConflictResolutionADT()
+{
+       // Disconnect Events
+       btnKeepLocal->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::KeepLocalData ), NULL, this );
+       btnKeepServer->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::KeepServerData ), NULL, this );
+       btnDecideLater->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmConflictResolutionADT::DecideLater ), NULL, this );
+       
+}
+
+frmActivityMgrADT::frmActivityMgrADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxSize( 400,300 ), wxDefaultSize );
+       
+       mnuMenuBar = new wxMenuBar( 0 );
+       mnuWindow = new wxMenu();
+       wxMenuItem* mnuStopActivity;
+       mnuStopActivity = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("&Stop Activity") ) + wxT('\t') + wxT("CTRL+ALT+S"), wxEmptyString, wxITEM_NORMAL );
+       mnuWindow->Append( mnuStopActivity );
+       
+       wxMenuItem* mnuActivityStopAll;
+       mnuActivityStopAll = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("Stop All Activities") ) + wxT('\t') + wxT("CTRL+SHIFT+ALT+S"), wxEmptyString, wxITEM_NORMAL );
+       mnuWindow->Append( mnuActivityStopAll );
+       
+       wxMenuItem* mnuRetryActivity;
+       mnuRetryActivity = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("&Retry Activity") ) + wxT('\t') + wxT("CTRL+R"), wxEmptyString, wxITEM_NORMAL );
+       mnuWindow->Append( mnuRetryActivity );
+       
+       mnuWindow->AppendSeparator();
+       
+       wxMenuItem* mnuSleepMode;
+       mnuSleepMode = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("Sleep Mode") ) , wxEmptyString, wxITEM_CHECK );
+       #ifdef __WXMSW__
+       mnuSleepMode->SetBitmaps( wxNullBitmap );
+       #elif defined( __WXGTK__ )
+       mnuSleepMode->SetBitmap( wxNullBitmap );
+       #endif
+       mnuWindow->Append( mnuSleepMode );
+       
+       mnuWindow->AppendSeparator();
+       
+       wxMenuItem* mnuWindowClose;
+       mnuWindowClose = new wxMenuItem( mnuWindow, wxID_ANY, wxString( wxT("&Close Window") ) + wxT('\t') + wxT("ALT+F4"), wxEmptyString, wxITEM_NORMAL );
+       mnuWindow->Append( mnuWindowClose );
+       
+       mnuMenuBar->Append( mnuWindow, wxT("&Activity") ); 
+       
+       this->SetMenuBar( mnuMenuBar );
+       
+       wxFlexGridSizer* fgSizer38;
+       fgSizer38 = new wxFlexGridSizer( 0, 1, 0, 0 );
+       fgSizer38->AddGrowableCol( 0 );
+       fgSizer38->AddGrowableRow( 1 );
+       fgSizer38->SetFlexibleDirection( wxBOTH );
+       fgSizer38->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       m_panel43 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer363;
+       bSizer363 = new wxBoxSizer( wxHORIZONTAL );
+       
+       bmpActivity = new wxStaticBitmap( m_panel43, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxDefaultSize, 0 );
+       bmpActivity->SetMinSize( wxSize( 64,64 ) );
+       
+       bSizer363->Add( bmpActivity, 0, wxALL, 5 );
+       
+       m_panel46 = new wxPanel( m_panel43, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer364;
+       bSizer364 = new wxBoxSizer( wxVERTICAL );
+       
+       
+       bSizer364->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblDetails = new wxStaticText( m_panel46, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE );
+       lblDetails->Wrap( -1 );
+       bSizer364->Add( lblDetails, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxEXPAND, 0 );
+       
+       
+       bSizer364->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       GauProgress = new wxGauge( m_panel46, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL );
+       GauProgress->SetValue( 0 ); 
+       GauProgress->SetMinSize( wxSize( -1,20 ) );
+       
+       bSizer364->Add( GauProgress, 0, wxALL|wxEXPAND, 0 );
+       
+       
+       bSizer364->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       m_panel46->SetSizer( bSizer364 );
+       m_panel46->Layout();
+       bSizer364->Fit( m_panel46 );
+       bSizer363->Add( m_panel46, 1, wxEXPAND | wxALL, 5 );
+       
+       
+       m_panel43->SetSizer( bSizer363 );
+       m_panel43->Layout();
+       bSizer363->Fit( m_panel43 );
+       fgSizer38->Add( m_panel43, 1, wxALL|wxEXPAND, 0 );
+       
+       m_panel44 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer365;
+       bSizer365 = new wxBoxSizer( wxVERTICAL );
+       
+       lstActivity = new wxListCtrl( m_panel44, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL|wxSUNKEN_BORDER );
+       bSizer365->Add( lstActivity, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       m_panel44->SetSizer( bSizer365 );
+       m_panel44->Layout();
+       bSizer365->Fit( m_panel44 );
+       fgSizer38->Add( m_panel44, 5, wxALL|wxEXPAND, 0 );
+       
+       
+       this->SetSizer( fgSizer38 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmActivityMgrADT::CloseWindow ) );
+       this->Connect( mnuStopActivity->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::StopTask ) );
+       this->Connect( mnuActivityStopAll->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::StopAllTasks ) );
+       this->Connect( mnuRetryActivity->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::RetryTask ) );
+       this->Connect( mnuSleepMode->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::SleepMode ) );
+       this->Connect( mnuWindowClose->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::CloseWindow ) );
+}
+
+frmActivityMgrADT::~frmActivityMgrADT()
+{
+       // Disconnect Events
+       this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( frmActivityMgrADT::CloseWindow ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::StopTask ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::StopAllTasks ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::RetryTask ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::SleepMode ) );
+       this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( frmActivityMgrADT::CloseWindow ) );
+       
+}
+
+frmContactEditorNicknameADT::frmContactEditorNicknameADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkAddress = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblNickname = new wxStaticText( tabGeneral, wxID_ANY, wxT("Nickname:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblNickname->Wrap( -1 );
+       fgSizer6->Add( lblNickname, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtNickname = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtNickname->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtNickname, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkAddress->AddPage( tabGeneral, wxT("General"), true );
+       tabOther = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer61;
+       fgSizer61 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer61->AddGrowableCol( 1 );
+       fgSizer61->SetFlexibleDirection( wxBOTH );
+       fgSizer61->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblLanguage = new wxStaticText( tabOther, wxID_ANY, wxT("Language:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLanguage->Wrap( -1 );
+       fgSizer61->Add( lblLanguage, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       cmbLanguage = new wxComboBox( tabOther, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer61->Add( cmbLanguage, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       tabOther->SetSizer( fgSizer61 );
+       tabOther->Layout();
+       fgSizer61->Fit( tabOther );
+       nbkAddress->AddPage( tabOther, wxT("Other"), false );
+       
+       bSizer251->Add( nbkAddress, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorNicknameADT::InitAddressEditor ) );
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::ProcessData ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorNicknameADT::~frmContactEditorNicknameADT()
+{
+       // Disconnect Events
+       this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorNicknameADT::InitAddressEditor ) );
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::ProcessData ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNicknameADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorGroupsADT::frmContactEditorGroupsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxSize( -1,-1 ), wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkGroup = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkGroup, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->AddGrowableRow( 0 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblContacts = new wxStaticText( tabGeneral, wxID_ANY, wxT("Contacts:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblContacts->Wrap( -1 );
+       fgSizer6->Add( lblContacts, 0, wxALIGN_TOP|wxALL, 5 );
+       
+       wxArrayString chkContactsChoices;
+       chkContacts = new wxCheckListBox( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, chkContactsChoices, wxLB_ALWAYS_SB|wxLB_MULTIPLE );
+       fgSizer6->Add( chkContacts, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkGroup->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkGroup, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       this->Connect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorGroupsADT::FetchContacts ) );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGroupsADT::ProcessData ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGroupsADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorGroupsADT::~frmContactEditorGroupsADT()
+{
+       // Disconnect Events
+       this->Disconnect( wxEVT_INIT_DIALOG, wxInitDialogEventHandler( frmContactEditorGroupsADT::FetchContacts ) );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGroupsADT::ProcessData ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGroupsADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorRolesADT::frmContactEditorRolesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkRole = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkRole, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblRole = new wxStaticText( tabGeneral, wxID_ANY, wxT("Role Name:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblRole->Wrap( -1 );
+       fgSizer6->Add( lblRole, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtRole = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtRole->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtRole, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkRole->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkRole, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorRolesADT::~frmContactEditorRolesADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRolesADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorOrganisationsADT::frmContactEditorOrganisationsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkOrganisation = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkOrganisation, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxBOTH );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblOrganisation = new wxStaticText( tabGeneral, wxID_ANY, wxT("Organisation:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblOrganisation->Wrap( -1 );
+       fgSizer6->Add( lblOrganisation, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtOrganisation = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtOrganisation->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtOrganisation, 0, wxALL|wxEXPAND, 5 );
+       
+       lblSortAs = new wxStaticText( tabGeneral, wxID_ANY, wxT("Sort As:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblSortAs->Wrap( -1 );
+       fgSizer6->Add( lblSortAs, 0, wxALL, 5 );
+       
+       cmbSortAs = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer6->Add( cmbSortAs, 1, wxALL, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkOrganisation->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkOrganisation, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       txtOrganisation->Connect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorOrganisationsADT::UpdateSortAs ), NULL, this );
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorOrganisationsADT::~frmContactEditorOrganisationsADT()
+{
+       // Disconnect Events
+       txtOrganisation->Disconnect( wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler( frmContactEditorOrganisationsADT::UpdateSortAs ), NULL, this );
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorOrganisationsADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorNotesADT::frmContactEditorNotesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkNotes = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkNotes, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer353;
+       bSizer353 = new wxBoxSizer( wxVERTICAL );
+       
+       txtNote = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE );
+       txtNote->SetMaxLength( 0 ); 
+       bSizer353->Add( txtNote, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( bSizer353 );
+       tabGeneral->Layout();
+       bSizer353->Fit( tabGeneral );
+       nbkNotes->AddPage( tabGeneral, wxT("General"), true );
+       tabPriority = new wxPanel( nbkNotes, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer61;
+       fgSizer61 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer61->AddGrowableCol( 1 );
+       fgSizer61->SetFlexibleDirection( wxVERTICAL );
+       fgSizer61->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblPriority = new wxStaticText( tabPriority, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer61->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer2601;
+       bSizer2601 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabPriority, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer2601->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer2541;
+       bSizer2541 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer2561;
+       bSizer2561 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabPriority, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer2561->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer2541->Add( bSizer2561, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer2551;
+       bSizer2551 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabPriority, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer2551->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer2551->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabPriority, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer2551->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer2541->Add( bSizer2551, 1, wxEXPAND, 0 );
+       
+       
+       bSizer2601->Add( bSizer2541, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer61->Add( bSizer2601, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer61->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabPriority->SetSizer( fgSizer61 );
+       tabPriority->Layout();
+       fgSizer61->Fit( tabPriority );
+       nbkNotes->AddPage( tabPriority, wxT("Priority"), false );
+       tabLanguage = new wxPanel( nbkNotes, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer611;
+       fgSizer611 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer611->AddGrowableCol( 0 );
+       fgSizer611->SetFlexibleDirection( wxBOTH );
+       fgSizer611->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblLanguage = new wxStaticText( tabLanguage, wxID_ANY, wxT("Language:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLanguage->Wrap( -1 );
+       fgSizer611->Add( lblLanguage, 1, wxALL, 5 );
+       
+       cmbLanguage = new wxComboBox( tabLanguage, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer611->Add( cmbLanguage, 1, wxALL, 5 );
+       
+       
+       tabLanguage->SetSizer( fgSizer611 );
+       tabLanguage->Layout();
+       fgSizer611->Fit( tabLanguage );
+       nbkNotes->AddPage( tabLanguage, wxT("Language"), false );
+       
+       bSizer251->Add( nbkNotes, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorNotesADT::~frmContactEditorNotesADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorNotesADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorTitlesADT::frmContactEditorTitlesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkTitles = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkTitles, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblTitle = new wxStaticText( tabGeneral, wxID_ANY, wxT("Title:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTitle->Wrap( -1 );
+       fgSizer6->Add( lblTitle, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtTitle = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtTitle->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtTitle, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkTitles->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkTitles, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorTitlesADT::~frmContactEditorTitlesADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTitlesADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorRelatedADT::frmContactEditorRelatedADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkRelated = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkRelated, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 0 );
+       fgSizer6->SetFlexibleDirection( wxBOTH );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblRelation = new wxStaticText( tabGeneral, wxID_ANY, wxT("Relation Name:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblRelation->Wrap( -1 );
+       fgSizer6->Add( lblRelation, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtRelated = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtRelated->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtRelated, 0, wxALL|wxEXPAND, 5 );
+       
+       lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblType->Wrap( -1 );
+       fgSizer6->Add( lblType, 0, wxALL, 5 );
+       
+       cmbType = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer6->Add( cmbType, 0, wxALL, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkRelated->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkRelated, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::ProcessData ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorRelatedADT::~frmContactEditorRelatedADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::ProcessData ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorRelatedADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorSoundADT::frmContactEditorSoundADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkRelated = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkRelated, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxBOTH );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblSoundFile = new wxStaticText( tabGeneral, wxID_ANY, wxT("Sound File:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblSoundFile->Wrap( -1 );
+       fgSizer6->Add( lblSoundFile, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       fipSound = new wxFilePickerCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxT("Select a sound file"), wxT("*.*"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE );
+       fgSizer6->Add( fipSound, 1, wxALL|wxEXPAND, 5 );
+       
+       lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblType->Wrap( -1 );
+       fgSizer6->Add( lblType, 0, wxALL, 5 );
+       
+       wxArrayString cmbTypeChoices;
+       cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 );
+       cmbType->SetSelection( 0 );
+       fgSizer6->Add( cmbType, 0, wxALL, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkRelated->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkRelated, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::ProcessData ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorSoundADT::~frmContactEditorSoundADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::ProcessData ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorSoundADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorPictureADT::frmContactEditorPictureADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkRelated = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkRelated, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxBOTH );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblPictureFile = new wxStaticText( tabGeneral, wxID_ANY, wxT("Picture File:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPictureFile->Wrap( -1 );
+       fgSizer6->Add( lblPictureFile, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       fipPicture = new wxFilePickerCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxT("Select a sound file"), wxT("*.*"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE );
+       fgSizer6->Add( fipPicture, 1, wxALL|wxEXPAND, 5 );
+       
+       lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblType->Wrap( -1 );
+       fgSizer6->Add( lblType, 0, wxALL, 5 );
+       
+       wxArrayString cmbTypeChoices;
+       cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 );
+       cmbType->SetSelection( 0 );
+       fgSizer6->Add( cmbType, 0, wxALL, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkRelated->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkRelated, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::ProcessData ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorPictureADT::~frmContactEditorPictureADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::ProcessData ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorPictureADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorWebsitesADT::frmContactEditorWebsitesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblWebsite = new wxStaticText( tabGeneral, wxID_ANY, wxT("Website:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblWebsite->Wrap( -1 );
+       fgSizer6->Add( lblWebsite, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtWebsite = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtWebsite->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtWebsite, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkWebsite->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorWebsitesADT::~frmContactEditorWebsitesADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorWebsitesADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorGeopositionADT::frmContactEditorGeopositionADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblGeoposition = new wxStaticText( tabGeneral, wxID_ANY, wxT("Geoposition:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblGeoposition->Wrap( -1 );
+       fgSizer6->Add( lblGeoposition, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtGeoposition = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtGeoposition->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtGeoposition, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkWebsite->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorGeopositionADT::~frmContactEditorGeopositionADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorGeopositionADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorCalAdrADT::frmContactEditorCalAdrADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblAddress = new wxStaticText( tabGeneral, wxID_ANY, wxT("Address:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAddress->Wrap( -1 );
+       fgSizer6->Add( lblAddress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtAddress = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtAddress->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtAddress, 0, wxALL|wxEXPAND, 5 );
+       
+       lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblType->Wrap( -1 );
+       fgSizer6->Add( lblType, 0, wxALL, 5 );
+       
+       wxArrayString cmbTypeChoices;
+       cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 );
+       cmbType->SetSelection( 0 );
+       fgSizer6->Add( cmbType, 0, wxALL, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkWebsite->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorCalAdrADT::~frmContactEditorCalAdrADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCalAdrADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorVendorADT::frmContactEditorVendorADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblVendorPEN = new wxStaticText( tabGeneral, wxID_ANY, wxT("Vendor PEN:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblVendorPEN->Wrap( -1 );
+       fgSizer6->Add( lblVendorPEN, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtPEN = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtPEN->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtPEN, 0, wxALL, 5 );
+       
+       lblElement = new wxStaticText( tabGeneral, wxID_ANY, wxT("Element:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblElement->Wrap( -1 );
+       fgSizer6->Add( lblElement, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtElement = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtElement->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtElement, 0, wxALL|wxEXPAND, 5 );
+       
+       lblValue = new wxStaticText( tabGeneral, wxID_ANY, wxT("Value:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblValue->Wrap( -1 );
+       fgSizer6->Add( lblValue, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtValue = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtValue->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtValue, 0, wxALL|wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkWebsite->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorVendorADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorVendorADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorVendorADT::~frmContactEditorVendorADT()
+{
+       // Disconnect Events
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorVendorADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorVendorADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorXTokenADT::frmContactEditorXTokenADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblTokenName = new wxStaticText( tabGeneral, wxID_ANY, wxT("Token Name:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTokenName->Wrap( -1 );
+       fgSizer6->Add( lblTokenName, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtTokenName = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtTokenName->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtTokenName, 0, wxALL, 5 );
+       
+       lblXT = new wxStaticText( tabGeneral, wxID_ANY, wxT("Value:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblXT->Wrap( -1 );
+       fgSizer6->Add( lblXT, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtValue = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtValue->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtValue, 0, wxALL|wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkWebsite->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorXTokenADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorXTokenADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorXTokenADT::~frmContactEditorXTokenADT()
+{
+       // Disconnect Events
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorXTokenADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorXTokenADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorKeyADT::frmContactEditorKeyADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkWebsite = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblKeyType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Key Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblKeyType->Wrap( -1 );
+       fgSizer6->Add( lblKeyType, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       wxArrayString cmbKeyMainTypeChoices;
+       cmbKeyMainType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbKeyMainTypeChoices, 0 );
+       cmbKeyMainType->SetSelection( 0 );
+       fgSizer6->Add( cmbKeyMainType, 0, wxALL, 5 );
+       
+       lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblType->Wrap( -1 );
+       fgSizer6->Add( lblType, 0, wxALL, 5 );
+       
+       wxArrayString cmbTypeChoices;
+       cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 );
+       cmbType->SetSelection( 0 );
+       fgSizer6->Add( cmbType, 0, wxALL, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkWebsite->AddPage( tabGeneral, wxT("General"), true );
+       tabURL = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer61;
+       fgSizer61 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer61->AddGrowableCol( 1 );
+       fgSizer61->SetFlexibleDirection( wxHORIZONTAL );
+       fgSizer61->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblKeyFormat = new wxStaticText( tabURL, wxID_ANY, wxT("Key Format:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblKeyFormat->Wrap( -1 );
+       fgSizer61->Add( lblKeyFormat, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       cmbURL = new wxComboBox( tabURL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer61->Add( cmbURL, 0, wxALL, 5 );
+       
+       lblAddress = new wxStaticText( tabURL, wxID_ANY, wxT("Address:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAddress->Wrap( -1 );
+       fgSizer61->Add( lblAddress, 0, wxALL, 5 );
+       
+       txtAddress = new wxTextCtrl( tabURL, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtAddress->SetMaxLength( 0 ); 
+       fgSizer61->Add( txtAddress, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       fgSizer61->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabURL->SetSizer( fgSizer61 );
+       tabURL->Layout();
+       fgSizer61->Fit( tabURL );
+       nbkWebsite->AddPage( tabURL, wxT("URL"), false );
+       tabKey = new wxPanel( nbkWebsite, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer62;
+       fgSizer62 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer62->AddGrowableCol( 1 );
+       fgSizer62->AddGrowableRow( 1 );
+       fgSizer62->SetFlexibleDirection( wxBOTH );
+       fgSizer62->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblKeyFormatData = new wxStaticText( tabKey, wxID_ANY, wxT("Key Format:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblKeyFormatData->Wrap( -1 );
+       fgSizer62->Add( lblKeyFormatData, 0, wxALIGN_CENTER|wxALL, 5 );
+       
+       cmbKeyType = new wxComboBox( tabKey, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer62->Add( cmbKeyType, 0, wxALL, 5 );
+       
+       lblKeyData = new wxStaticText( tabKey, wxID_ANY, wxT("Key Data:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblKeyData->Wrap( -1 );
+       fgSizer62->Add( lblKeyData, 0, wxALL, 5 );
+       
+       txtKeyData = new wxTextCtrl( tabKey, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE );
+       txtKeyData->SetMaxLength( 0 ); 
+       fgSizer62->Add( txtKeyData, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       tabKey->SetSizer( fgSizer62 );
+       tabKey->Layout();
+       fgSizer62->Fit( tabKey );
+       nbkWebsite->AddPage( tabKey, wxT("Key"), false );
+       
+       bSizer251->Add( nbkWebsite, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       cmbKeyMainType->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ProcessKeyType ), NULL, this );
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::EnablePriority ), NULL, this );
+       cmbURL->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ConvertURLType ), NULL, this );
+       cmbKeyType->Connect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ConvertKeyType ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorKeyADT::~frmContactEditorKeyADT()
+{
+       // Disconnect Events
+       cmbKeyMainType->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ProcessKeyType ), NULL, this );
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::EnablePriority ), NULL, this );
+       cmbURL->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ConvertURLType ), NULL, this );
+       cmbKeyType->Disconnect( wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler( frmContactEditorKeyADT::ConvertKeyType ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorKeyADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorEmailADT::frmContactEditorEmailADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkEmail = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkEmail, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblEmailAddress = new wxStaticText( tabGeneral, wxID_ANY, wxT("E-mail Address:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblEmailAddress->Wrap( -1 );
+       fgSizer6->Add( lblEmailAddress, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtEmail = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtEmail->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtEmail, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkEmail->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkEmail, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::ProcessData ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorEmailADT::~frmContactEditorEmailADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::ProcessData ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorEmailADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorIMADT::frmContactEditorIMADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkIM = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkIM, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblIMType = new wxStaticText( tabGeneral, wxID_ANY, wxT("IM Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblIMType->Wrap( -1 );
+       fgSizer6->Add( lblIMType, 0, wxALL, 5 );
+       
+       cmbIMType = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_DROPDOWN ); 
+       fgSizer6->Add( cmbIMType, 0, wxALL, 5 );
+       
+       lblUsername = new wxStaticText( tabGeneral, wxID_ANY, wxT("Username/E-mail address:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblUsername->Wrap( 0 );
+       fgSizer6->Add( lblUsername, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtUsername = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtUsername->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtUsername, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkIM->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkIM, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorIMADT::~frmContactEditorIMADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorIMADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorCategoryADT::frmContactEditorCategoryADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkIM = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkIM, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblCategory = new wxStaticText( tabGeneral, wxID_ANY, wxT("Category Name:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCategory->Wrap( 0 );
+       fgSizer6->Add( lblCategory, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtCategory = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtCategory->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtCategory, 0, wxALL|wxEXPAND, 5 );
+       
+       lblType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblType->Wrap( -1 );
+       fgSizer6->Add( lblType, 0, wxALL, 5 );
+       
+       wxArrayString cmbTypeChoices;
+       cmbType = new wxChoice( tabGeneral, wxID_ANY, wxDefaultPosition, wxDefaultSize, cmbTypeChoices, 0 );
+       cmbType->SetSelection( 0 );
+       fgSizer6->Add( cmbType, 0, wxALL, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkIM->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkIM, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorCategoryADT::~frmContactEditorCategoryADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorCategoryADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorTelephoneADT::frmContactEditorTelephoneADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkAddress = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkAddress, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblTelephone = new wxStaticText( tabGeneral, wxID_ANY, wxT("Telephone:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTelephone->Wrap( -1 );
+       fgSizer6->Add( lblTelephone, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtTelephone = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtTelephone->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtTelephone, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 0, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       lblTelephoneType = new wxStaticText( tabGeneral, wxID_ANY, wxT("Type:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTelephoneType->Wrap( 0 );
+       fgSizer6->Add( lblTelephoneType, 0, wxALIGN_TOP|wxALL, 5 );
+       
+       wxGridSizer* gSizer5;
+       gSizer5 = new wxGridSizer( 2, 2, 0, 0 );
+       
+       chkVoice = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Voice"), wxDefaultPosition, wxDefaultSize, 0 );
+       gSizer5->Add( chkVoice, 0, wxALL, 2 );
+       
+       chkText = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Text"), wxDefaultPosition, wxDefaultSize, 0 );
+       gSizer5->Add( chkText, 0, wxALL, 2 );
+       
+       chkFax = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Fax"), wxDefaultPosition, wxDefaultSize, 0 );
+       gSizer5->Add( chkFax, 0, wxALL, 2 );
+       
+       chkMobile = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Mobile"), wxDefaultPosition, wxDefaultSize, 0 );
+       gSizer5->Add( chkMobile, 0, wxALL, 2 );
+       
+       chkVideo = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Video"), wxDefaultPosition, wxDefaultSize, 0 );
+       gSizer5->Add( chkVideo, 0, wxALL, 2 );
+       
+       chkTextphone = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Textphone"), wxDefaultPosition, wxDefaultSize, 0 );
+       gSizer5->Add( chkTextphone, 0, wxALL, 2 );
+       
+       chkPager = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Pager"), wxDefaultPosition, wxDefaultSize, 0 );
+       gSizer5->Add( chkPager, 0, wxALL, 2 );
+       
+       
+       fgSizer6->Add( gSizer5, 1, 0, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkAddress->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkAddress, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorTelephoneADT::~frmContactEditorTelephoneADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTelephoneADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorLanguagesADT::frmContactEditorLanguagesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkLanguages = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkLanguages, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblLanguage = new wxStaticText( tabGeneral, wxID_ANY, wxT("Language:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLanguage->Wrap( -1 );
+       fgSizer6->Add( lblLanguage, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtLanguage = new wxTextCtrl( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtLanguage->SetMaxLength( 0 ); 
+       fgSizer6->Add( txtLanguage, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkLanguages->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkLanguages, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorLanguagesADT::~frmContactEditorLanguagesADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorLanguagesADT::CloseWindow ), NULL, this );
+       
+}
+
+frmContactEditorTimezonesADT::frmContactEditorTimezonesADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer251;
+       bSizer251 = new wxBoxSizer( wxVERTICAL );
+       
+       nbkTimezone = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabGeneral = new wxPanel( nbkTimezone, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer6;
+       fgSizer6 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer6->AddGrowableCol( 1 );
+       fgSizer6->SetFlexibleDirection( wxVERTICAL );
+       fgSizer6->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblTimezone = new wxStaticText( tabGeneral, wxID_ANY, wxT("Timezone:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblTimezone->Wrap( -1 );
+       fgSizer6->Add( lblTimezone, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       cmbTimezone = new wxComboBox( tabGeneral, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0 ); 
+       fgSizer6->Add( cmbTimezone, 0, wxALL, 5 );
+       
+       lblPriority = new wxStaticText( tabGeneral, wxID_ANY, wxT("Priority:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPriority->Wrap( -1 );
+       fgSizer6->Add( lblPriority, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer260;
+       bSizer260 = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkUsePref = new wxCheckBox( tabGeneral, wxID_ANY, wxT("Use"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer260->Add( chkUsePref, 0, wxALL, 5 );
+       
+       wxBoxSizer* bSizer254;
+       bSizer254 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer256;
+       bSizer256 = new wxBoxSizer( wxHORIZONTAL );
+       
+       sliPriority = new wxSlider( tabGeneral, wxID_ANY, 0, 1, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL|wxSL_LABELS );
+       bSizer256->Add( sliPriority, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       bSizer254->Add( bSizer256, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer255;
+       bSizer255 = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblHigh = new wxStaticText( tabGeneral, wxID_ANY, wxT("High"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblHigh->Wrap( -1 );
+       bSizer255->Add( lblHigh, 0, wxALIGN_LEFT|wxALL, 5 );
+       
+       
+       bSizer255->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       lblLow = new wxStaticText( tabGeneral, wxID_ANY, wxT("Low"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblLow->Wrap( -1 );
+       bSizer255->Add( lblLow, 0, wxALIGN_RIGHT|wxALL, 5 );
+       
+       
+       bSizer254->Add( bSizer255, 1, wxEXPAND, 0 );
+       
+       
+       bSizer260->Add( bSizer254, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( bSizer260, 1, wxEXPAND, 5 );
+       
+       
+       fgSizer6->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       tabGeneral->SetSizer( fgSizer6 );
+       tabGeneral->Layout();
+       fgSizer6->Fit( tabGeneral );
+       nbkTimezone->AddPage( tabGeneral, wxT("General"), false );
+       
+       bSizer251->Add( nbkTimezone, 1, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer252;
+       bSizer252 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAction = new wxButton( this, wxID_ANY, wxT("Action"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnAction, 0, wxALL, 5 );
+       
+       btnClose = new wxButton( this, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer252->Add( btnClose, 0, wxALL, 5 );
+       
+       
+       bSizer251->Add( bSizer252, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer251 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       chkUsePref->Connect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::EnablePriority ), NULL, this );
+       btnAction->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::ProcessAction ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::CloseWindow ), NULL, this );
+}
+
+frmContactEditorTimezonesADT::~frmContactEditorTimezonesADT()
+{
+       // Disconnect Events
+       chkUsePref->Disconnect( wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::EnablePriority ), NULL, this );
+       btnAction->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::ProcessAction ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmContactEditorTimezonesADT::CloseWindow ), NULL, this );
+       
+}
+
+XABSearchPanelADT::XABSearchPanelADT( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
+{
+       this->SetMinSize( wxSize( -1,40 ) );
+       this->SetMaxSize( wxSize( -1,40 ) );
+       
+       wxFlexGridSizer* fgSizer40;
+       fgSizer40 = new wxFlexGridSizer( 0, 3, 0, 0 );
+       fgSizer40->AddGrowableCol( 1 );
+       fgSizer40->SetFlexibleDirection( wxBOTH );
+       fgSizer40->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       wxArrayString choOptionChoices;
+       choOption = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, choOptionChoices, 0 );
+       choOption->SetSelection( 0 );
+       fgSizer40->Add( choOption, 0, wxALIGN_TOP|wxALL, 5 );
+       
+       szrSSet = new wxBoxSizer( wxHORIZONTAL );
+       
+       chkActive = new wxCheckBox( this, wxID_ANY, wxT("Enable"), wxDefaultPosition, wxDefaultSize, 0 );
+       szrSSet->Add( chkActive, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtSearch = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtSearch->SetMaxLength( 0 ); 
+       szrSSet->Add( txtSearch, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       
+       fgSizer40->Add( szrSSet, 1, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer376;
+       bSizer376 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAdd = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 28,28 ), wxBU_AUTODRAW );
+       btnAdd->SetMinSize( wxSize( 28,28 ) );
+       btnAdd->SetMaxSize( wxSize( 28,28 ) );
+       
+       bSizer376->Add( btnAdd, 0, wxALL, 5 );
+       
+       btnDelete = new wxBitmapButton( this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize( 28,28 ), wxBU_AUTODRAW );
+       btnDelete->SetMinSize( wxSize( 28,28 ) );
+       btnDelete->SetMaxSize( wxSize( 28,28 ) );
+       
+       bSizer376->Add( btnDelete, 0, wxALL, 5 );
+       
+       
+       fgSizer40->Add( bSizer376, 0, 0, 5 );
+       
+       
+       this->SetSizer( fgSizer40 );
+       this->Layout();
+       
+       // Connect Events
+       choOption->Connect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( XABSearchPanelADT::UpdateOptions ), NULL, this );
+       btnAdd->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( XABSearchPanelADT::AddSearchWidget ), NULL, this );
+       btnDelete->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( XABSearchPanelADT::RemoveSearchWidget ), NULL, this );
+}
+
+XABSearchPanelADT::~XABSearchPanelADT()
+{
+       // Disconnect Events
+       choOption->Disconnect( wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler( XABSearchPanelADT::UpdateOptions ), NULL, this );
+       btnAdd->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( XABSearchPanelADT::AddSearchWidget ), NULL, this );
+       btnDelete->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( XABSearchPanelADT::RemoveSearchWidget ), NULL, this );
+       
+}
+
+frmSearchAccountsADT::frmSearchAccountsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer376;
+       bSizer376 = new wxBoxSizer( wxVERTICAL );
+       
+       wxArrayString chlAccountsChoices;
+       chlAccounts = new wxCheckListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, chlAccountsChoices, wxLB_ALWAYS_SB|wxLB_SORT );
+       bSizer376->Add( chlAccounts, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer377;
+       bSizer377 = new wxBoxSizer( wxHORIZONTAL );
+       
+       
+       bSizer377->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       btnSelect = new wxButton( this, wxID_ANY, wxT("Select"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer377->Add( btnSelect, 0, wxALL, 5 );
+       
+       btnCancel = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer377->Add( btnCancel, 0, wxALL, 5 );
+       
+       
+       bSizer377->Add( 0, 0, 1, wxEXPAND, 5 );
+       
+       
+       bSizer376->Add( bSizer377, 0, wxEXPAND, 5 );
+       
+       
+       this->SetSizer( bSizer376 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnSelect->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchAccountsADT::UpdateSelectedAccounts ), NULL, this );
+       btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchAccountsADT::CloseWindow ), NULL, this );
+}
+
+frmSearchAccountsADT::~frmSearchAccountsADT()
+{
+       // Disconnect Events
+       btnSelect->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchAccountsADT::UpdateSelectedAccounts ), NULL, this );
+       btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSearchAccountsADT::CloseWindow ), NULL, this );
+       
+}
+
+frmEditAccountADT::frmEditAccountADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer384;
+       bSizer384 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* szrTabs;
+       szrTabs = new wxBoxSizer( wxVERTICAL );
+       
+       tabAccount = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabProperties = new wxPanel( tabAccount, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer43;
+       fgSizer43 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer43->AddGrowableCol( 1 );
+       fgSizer43->SetFlexibleDirection( wxBOTH );
+       fgSizer43->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_NONE );
+       
+       lblAccName = new wxStaticText( tabProperties, wxID_ANY, wxT("Account Name:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAccName->Wrap( -1 );
+       fgSizer43->Add( lblAccName, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtAccountName = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtAccountName->SetMaxLength( 0 ); 
+       fgSizer43->Add( txtAccountName, 1, wxALL|wxEXPAND, 5 );
+       
+       lblAccAdr = new wxStaticText( tabProperties, wxID_ANY, wxT("Address:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAccAdr->Wrap( -1 );
+       fgSizer43->Add( lblAccAdr, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtAddress = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtAddress->SetMaxLength( 0 ); 
+       fgSizer43->Add( txtAddress, 0, wxALL|wxEXPAND, 5 );
+       
+       m_staticText193 = new wxStaticText( tabProperties, wxID_ANY, wxT("Port:"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText193->Wrap( -1 );
+       fgSizer43->Add( m_staticText193, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtPort = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtPort->SetMaxLength( 5 ); 
+       fgSizer43->Add( txtPort, 0, wxALL, 5 );
+       
+       lblPort = new wxStaticText( tabProperties, wxID_ANY, wxT("Username:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPort->Wrap( -1 );
+       fgSizer43->Add( lblPort, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtUsername = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtUsername->SetMaxLength( 0 ); 
+       fgSizer43->Add( txtUsername, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPassword = new wxStaticText( tabProperties, wxID_ANY, wxT("Password:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPassword->Wrap( -1 );
+       fgSizer43->Add( lblPassword, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtPassword = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtPassword->SetMaxLength( 0 ); 
+       fgSizer43->Add( txtPassword, 0, wxALL|wxEXPAND, 5 );
+       
+       lblPrefix = new wxStaticText( tabProperties, wxID_ANY, wxT("Prefix:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblPrefix->Wrap( -1 );
+       fgSizer43->Add( lblPrefix, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       wxBoxSizer* bSizer391;
+       bSizer391 = new wxBoxSizer( wxHORIZONTAL );
+       
+       txtPrefix = new wxTextCtrl( tabProperties, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtPrefix->SetMaxLength( 0 ); 
+       bSizer391->Add( txtPrefix, 1, wxALL|wxEXPAND, 5 );
+       
+       btnDetect = new wxButton( tabProperties, wxID_ANY, wxT("Detect"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT );
+       bSizer391->Add( btnDetect, 0, wxALIGN_CENTER_VERTICAL, 0 );
+       
+       
+       fgSizer43->Add( bSizer391, 1, wxEXPAND|wxRIGHT, 5 );
+       
+       txtSSL = new wxStaticText( tabProperties, wxID_ANY, wxT("SSL:"), wxDefaultPosition, wxDefaultSize, 0 );
+       txtSSL->Wrap( -1 );
+       fgSizer43->Add( txtSSL, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       chkSSL = new wxCheckBox( tabProperties, wxID_ANY, wxT("Use SSL"), wxDefaultPosition, wxDefaultSize, 0 );
+       fgSizer43->Add( chkSSL, 0, wxALL, 5 );
+       
+       
+       tabProperties->SetSizer( fgSizer43 );
+       tabProperties->Layout();
+       fgSizer43->Fit( tabProperties );
+       tabAccount->AddPage( tabProperties, wxT("General"), true );
+       tabRefresh = new wxPanel( tabAccount, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer431;
+       fgSizer431 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer431->AddGrowableCol( 1 );
+       fgSizer431->SetFlexibleDirection( wxBOTH );
+       fgSizer431->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_NONE );
+       
+       lblRefresh = new wxStaticText( tabRefresh, wxID_ANY, wxT("Refresh Time:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblRefresh->Wrap( -1 );
+       fgSizer431->Add( lblRefresh, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       txtRefresh = new wxTextCtrl( tabRefresh, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 );
+       txtRefresh->SetMaxLength( 5 ); 
+       fgSizer431->Add( txtRefresh, 1, wxALL, 5 );
+       
+       
+       tabRefresh->SetSizer( fgSizer431 );
+       tabRefresh->Layout();
+       fgSizer431->Fit( tabRefresh );
+       tabAccount->AddPage( tabRefresh, wxT("Refresh"), false );
+       
+       szrTabs->Add( tabAccount, 1, wxEXPAND | wxALL, 5 );
+       
+       
+       bSizer384->Add( szrTabs, 1, wxEXPAND, 0 );
+       
+       wxBoxSizer* szrButtons;
+       szrButtons = new wxBoxSizer( wxHORIZONTAL );
+       
+       
+       szrButtons->Add( 1, 0, 1, wxEXPAND, 0 );
+       
+       btnSave = new wxButton( this, wxID_ANY, wxT("Save"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnSave->SetDefault(); 
+       szrButtons->Add( btnSave, 0, wxALIGN_RIGHT, 0 );
+       
+       
+       szrButtons->Add( 5, 0, 0, 0, 0 );
+       
+       btnCancel = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
+       szrButtons->Add( btnCancel, 0, wxALIGN_RIGHT, 0 );
+       
+       
+       szrButtons->Add( 5, 0, 0, wxEXPAND, 0 );
+       
+       
+       bSizer384->Add( szrButtons, 0, wxBOTTOM|wxEXPAND, 5 );
+       
+       
+       this->SetSizer( bSizer384 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnDetect->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::DetectAddressBook ), NULL, this );
+       btnSave->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::UpdateSettings ), NULL, this );
+       btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::CloseWindow ), NULL, this );
+}
+
+frmEditAccountADT::~frmEditAccountADT()
+{
+       // Disconnect Events
+       btnDetect->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::DetectAddressBook ), NULL, this );
+       btnSave->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::UpdateSettings ), NULL, this );
+       btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmEditAccountADT::CloseWindow ), NULL, this );
+       
+}
+
+frmSSLCertificateADT::frmSSLCertificateADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer384;
+       bSizer384 = new wxBoxSizer( wxVERTICAL );
+       
+       m_notebook28 = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 );
+       tabSummary = new wxPanel( m_notebook28, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer386;
+       bSizer386 = new wxBoxSizer( wxVERTICAL );
+       
+       pnlTop = new wxPanel( tabSummary, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       pnlTop->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNHIGHLIGHT ) );
+       
+       wxBoxSizer* bSizer389;
+       bSizer389 = new wxBoxSizer( wxVERTICAL );
+       
+       lblCertName = new wxStaticText( pnlTop, wxID_ANY, wxT("Certificate Name"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblCertName->Wrap( -1 );
+       lblCertName->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 70, 90, 92, false, wxEmptyString ) );
+       
+       bSizer389->Add( lblCertName, 0, wxALL, 5 );
+       
+       lblValidityStatus = new wxStaticText( pnlTop, wxID_ANY, wxT("Validity Status"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblValidityStatus->Wrap( -1 );
+       bSizer389->Add( lblValidityStatus, 0, wxALL, 5 );
+       
+       
+       pnlTop->SetSizer( bSizer389 );
+       pnlTop->Layout();
+       bSizer389->Fit( pnlTop );
+       bSizer386->Add( pnlTop, 0, wxEXPAND | wxALL, 5 );
+       
+       wxBoxSizer* bSizer392;
+       bSizer392 = new wxBoxSizer( wxVERTICAL );
+       
+       m_panel54 = new wxPanel( tabSummary, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxFlexGridSizer* fgSizer44;
+       fgSizer44 = new wxFlexGridSizer( 0, 2, 0, 0 );
+       fgSizer44->AddGrowableCol( 1 );
+       fgSizer44->SetFlexibleDirection( wxHORIZONTAL );
+       fgSizer44->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       lblIssuedTo = new wxStaticText( m_panel54, wxID_ANY, wxT("Issued To:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblIssuedTo->Wrap( -1 );
+       fgSizer44->Add( lblIssuedTo, 0, wxALL, 5 );
+       
+       lblIssuedToData = new wxStaticText( m_panel54, wxID_ANY, wxT("IssuedTo"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblIssuedToData->Wrap( -1 );
+       fgSizer44->Add( lblIssuedToData, 1, wxALL|wxEXPAND, 5 );
+       
+       lblValidFrom = new wxStaticText( m_panel54, wxID_ANY, wxT("Valid From:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblValidFrom->Wrap( -1 );
+       fgSizer44->Add( lblValidFrom, 0, wxALL, 5 );
+       
+       lblValidFromData = new wxStaticText( m_panel54, wxID_ANY, wxT("ValidDate"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblValidFromData->Wrap( -1 );
+       fgSizer44->Add( lblValidFromData, 1, wxALL|wxEXPAND, 5 );
+       
+       lblValidUntil = new wxStaticText( m_panel54, wxID_ANY, wxT("Valid Until:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblValidUntil->Wrap( -1 );
+       fgSizer44->Add( lblValidUntil, 0, wxALL, 5 );
+       
+       lblValidUntilData = new wxStaticText( m_panel54, wxID_ANY, wxT("ValidUntil"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblValidUntilData->Wrap( -1 );
+       fgSizer44->Add( lblValidUntilData, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       m_panel54->SetSizer( fgSizer44 );
+       m_panel54->Layout();
+       fgSizer44->Fit( m_panel54 );
+       bSizer392->Add( m_panel54, 1, wxEXPAND | wxALL, 5 );
+       
+       
+       bSizer386->Add( bSizer392, 1, wxEXPAND, 5 );
+       
+       
+       tabSummary->SetSizer( bSizer386 );
+       tabSummary->Layout();
+       bSizer386->Fit( tabSummary );
+       m_notebook28->AddPage( tabSummary, wxT("Summary"), false );
+       tabDetail = new wxPanel( m_notebook28, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer3891;
+       bSizer3891 = new wxBoxSizer( wxVERTICAL );
+       
+       lstValues = new wxListCtrl( tabDetail, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxSUNKEN_BORDER );
+       bSizer3891->Add( lstValues, 1, wxALL|wxEXPAND, 5 );
+       
+       txtValueData = new wxTextCtrl( tabDetail, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_CHARWRAP|wxTE_MULTILINE|wxTE_READONLY );
+       txtValueData->SetMaxLength( 0 ); 
+       txtValueData->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_BTNFACE ) );
+       
+       bSizer3891->Add( txtValueData, 1, wxALL|wxEXPAND, 5 );
+       
+       
+       tabDetail->SetSizer( bSizer3891 );
+       tabDetail->Layout();
+       bSizer3891->Fit( tabDetail );
+       m_notebook28->AddPage( tabDetail, wxT("Detail"), false );
+       tabHierarchy = new wxPanel( m_notebook28, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer390;
+       bSizer390 = new wxBoxSizer( wxVERTICAL );
+       
+       treHierarchy = new wxTreeCtrl( tabHierarchy, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_DEFAULT_STYLE|wxSUNKEN_BORDER );
+       bSizer390->Add( treHierarchy, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
+       
+       m_panel57 = new wxPanel( tabHierarchy, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer393;
+       bSizer393 = new wxBoxSizer( wxVERTICAL );
+       
+       btnViewCert = new wxButton( m_panel57, wxID_ANY, wxT("View Certificate"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer393->Add( btnViewCert, 0, wxALIGN_RIGHT|wxALL, 0 );
+       
+       
+       m_panel57->SetSizer( bSizer393 );
+       m_panel57->Layout();
+       bSizer393->Fit( m_panel57 );
+       bSizer390->Add( m_panel57, 0, wxEXPAND | wxALL, 5 );
+       
+       
+       tabHierarchy->SetSizer( bSizer390 );
+       tabHierarchy->Layout();
+       bSizer390->Fit( tabHierarchy );
+       m_notebook28->AddPage( tabHierarchy, wxT("Hierarchy"), true );
+       
+       bSizer384->Add( m_notebook28, 1, wxEXPAND|wxLEFT|wxRIGHT|wxTOP, 5 );
+       
+       pnlButtons = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       wxBoxSizer* bSizer385;
+       bSizer385 = new wxBoxSizer( wxVERTICAL );
+       
+       btnClose = new wxButton( pnlButtons, wxID_ANY, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnClose->SetDefault(); 
+       bSizer385->Add( btnClose, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       pnlButtons->SetSizer( bSizer385 );
+       pnlButtons->Layout();
+       bSizer385->Fit( pnlButtons );
+       bSizer384->Add( pnlButtons, 0, wxEXPAND | wxALL, 5 );
+       
+       
+       this->SetSizer( bSizer384 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       lstValues->Connect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmSSLCertificateADT::LoadValueData ), NULL, this );
+       treHierarchy->Connect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( frmSSLCertificateADT::CheckCertificate ), NULL, this );
+       btnViewCert->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSSLCertificateADT::ViewCertificate ), NULL, this );
+       btnClose->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSSLCertificateADT::CloseWindow ), NULL, this );
+}
+
+frmSSLCertificateADT::~frmSSLCertificateADT()
+{
+       // Disconnect Events
+       lstValues->Disconnect( wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler( frmSSLCertificateADT::LoadValueData ), NULL, this );
+       treHierarchy->Disconnect( wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler( frmSSLCertificateADT::CheckCertificate ), NULL, this );
+       btnViewCert->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSSLCertificateADT::ViewCertificate ), NULL, this );
+       btnClose->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmSSLCertificateADT::CloseWindow ), NULL, this );
+       
+}
+
+frmInvalidSSLCertificateADT::frmInvalidSSLCertificateADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer387;
+       bSizer387 = new wxBoxSizer( wxVERTICAL );
+       
+       lblSSLText = new wxStaticText( this, wxID_ANY, wxT("Text"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblSSLText->Wrap( -1 );
+       bSizer387->Add( lblSSLText, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer388;
+       bSizer388 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnAccept = new wxButton( this, wxID_ANY, wxT("Accept"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer388->Add( btnAccept, 0, wxALL, 5 );
+       
+       btnReject = new wxButton( this, wxID_ANY, wxT("Reject"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnReject->SetDefault(); 
+       bSizer388->Add( btnReject, 0, wxALL, 5 );
+       
+       btnViewCert = new wxButton( this, wxID_ANY, wxT("View Certificates..."), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer388->Add( btnViewCert, 0, wxALL, 5 );
+       
+       
+       bSizer387->Add( bSizer388, 0, wxALIGN_CENTER_HORIZONTAL, 0 );
+       
+       
+       this->SetSizer( bSizer387 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnAccept->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::Accept ), NULL, this );
+       btnReject->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::Reject ), NULL, this );
+       btnViewCert->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::ViewCertificates ), NULL, this );
+}
+
+frmInvalidSSLCertificateADT::~frmInvalidSSLCertificateADT()
+{
+       // Disconnect Events
+       btnAccept->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::Accept ), NULL, this );
+       btnReject->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::Reject ), NULL, this );
+       btnViewCert->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmInvalidSSLCertificateADT::ViewCertificates ), NULL, this );
+       
+}
+
+frmImportContactsADT::frmImportContactsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer393;
+       bSizer393 = new wxBoxSizer( wxVERTICAL );
+       
+       lblImportText = new wxStaticText( this, wxID_ANY, wxT("Select the contacts you want to import and the account to import into. Click on Import to finish."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblImportText->Wrap( -1 );
+       bSizer393->Add( lblImportText, 0, wxALL|wxEXPAND, 5 );
+       
+       wxArrayString lstContactsChoices;
+       lstContacts = new wxCheckListBox( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, lstContactsChoices, wxLB_ALWAYS_SB|wxLB_SORT );
+       bSizer393->Add( lstContacts, 1, wxALL|wxEXPAND, 5 );
+       
+       szrAccount = new wxBoxSizer( wxHORIZONTAL );
+       
+       lblAccountText = new wxStaticText( this, wxID_ANY, wxT("Account:"), wxDefaultPosition, wxDefaultSize, 0 );
+       lblAccountText->Wrap( -1 );
+       szrAccount->Add( lblAccountText, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
+       
+       
+       bSizer393->Add( szrAccount, 0, wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer394;
+       bSizer394 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnImport = new wxButton( this, wxID_ANY, wxT("Import"), wxDefaultPosition, wxDefaultSize, 0 );
+       btnImport->SetDefault(); 
+       bSizer394->Add( btnImport, 0, wxALL, 5 );
+       
+       btnCancel = new wxButton( this, wxID_ANY, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer394->Add( btnCancel, 0, wxALL, 5 );
+       
+       
+       bSizer393->Add( bSizer394, 0, wxALIGN_RIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer393 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnImport->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportContactsADT::ImportContacts ), NULL, this );
+       btnCancel->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportContactsADT::CloseWindow ), NULL, this );
+}
+
+frmImportContactsADT::~frmImportContactsADT()
+{
+       // Disconnect Events
+       btnImport->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportContactsADT::ImportContacts ), NULL, this );
+       btnCancel->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportContactsADT::CloseWindow ), NULL, this );
+       
+}
+
+frmImportResultsADT::frmImportResultsADT( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
+{
+       this->SetSizeHints( wxDefaultSize, wxDefaultSize );
+       
+       wxBoxSizer* bSizer396;
+       bSizer396 = new wxBoxSizer( wxVERTICAL );
+       
+       lblText = new wxStaticText( this, wxID_ANY, wxT("x contacts imported. x contacts had errors and could not be imported."), wxDefaultPosition, wxDefaultSize, 0 );
+       lblText->Wrap( -1 );
+       bSizer396->Add( lblText, 0, wxALL, 5 );
+       
+       txtResults = new wxTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY );
+       txtResults->SetMaxLength( 0 ); 
+       bSizer396->Add( txtResults, 1, wxALL|wxEXPAND, 5 );
+       
+       wxBoxSizer* bSizer397;
+       bSizer397 = new wxBoxSizer( wxHORIZONTAL );
+       
+       btnCopyClipboard = new wxButton( this, wxID_ANY, wxT("Copy to Clipboard"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer397->Add( btnCopyClipboard, 0, 0, 5 );
+       
+       btnFinish = new wxButton( this, wxID_ANY, wxT("Finish"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer397->Add( btnFinish, 0, wxALIGN_RIGHT|wxBOTTOM|wxLEFT, 5 );
+       
+       
+       bSizer396->Add( bSizer397, 0, wxALIGN_RIGHT|wxRIGHT, 5 );
+       
+       
+       this->SetSizer( bSizer396 );
+       this->Layout();
+       
+       this->Centre( wxBOTH );
+       
+       // Connect Events
+       btnCopyClipboard->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportResultsADT::CopyClipboard ), NULL, this );
+       btnFinish->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportResultsADT::CloseWindow ), NULL, this );
+}
+
+frmImportResultsADT::~frmImportResultsADT()
+{
+       // Disconnect Events
+       btnCopyClipboard->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportResultsADT::CopyClipboard ), NULL, this );
+       btnFinish->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frmImportResultsADT::CloseWindow ), NULL, this );
+       
+}
diff --git a/source/AppXestiaAddrBk.h b/source/AppXestiaAddrBk.h
new file mode 100644 (file)
index 0000000..5de2092
--- /dev/null
@@ -0,0 +1,1940 @@
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Feb 26 2014)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __APPXESTIAADDRBK_H__
+#define __APPXESTIAADDRBK_H__
+
+#include <wx/artprov.h>
+#include <wx/xrc/xmlres.h>
+#include <wx/string.h>
+#include <wx/bitmap.h>
+#include <wx/image.h>
+#include <wx/icon.h>
+#include <wx/menu.h>
+#include <wx/gdicmn.h>
+#include <wx/font.h>
+#include <wx/colour.h>
+#include <wx/settings.h>
+#include <wx/statbmp.h>
+#include <wx/combo.h>
+#include <wx/sizer.h>
+#include <wx/listctrl.h>
+#include <wx/panel.h>
+#include <wx/html/htmlwin.h>
+#include <wx/splitter.h>
+#include <wx/statusbr.h>
+#include <wx/frame.h>
+#include <wx/stattext.h>
+#include <wx/statline.h>
+#include <wx/button.h>
+#include <wx/dialog.h>
+#include <wx/scrolwin.h>
+#include <wx/notebook.h>
+#include <wx/checkbox.h>
+#include <wx/choice.h>
+#include <wx/textctrl.h>
+#include <wx/combobox.h>
+#include <wx/datectrl.h>
+#include <wx/dateevt.h>
+#include <wx/bmpbuttn.h>
+#include <wx/slider.h>
+#include <wx/gauge.h>
+#include <wx/checklst.h>
+#include <wx/filepicker.h>
+#include <wx/treectrl.h>
+
+///////////////////////////////////////////////////////////////////////////
+
+#define ID_MANAGE_NEWAB 1000
+#define ID_MANAGE_IMPORT 1001
+#define ID_MANAGE_EXPORT 1002
+#define ID_MANAGE_PREFERENCES 1003
+#define ID_MANAGE_EXIT 1004
+#define ID_CONTACT_EDIT 1005
+#define ID_CONTACT_DELETE 1006
+#define ID_SET_CONTACT_AS_MYSELF 1007
+#define ID_VIEW_FNLN 1008
+#define ID_VIEW_LNFN 1009
+#define ID_VIEW_NICK 1010
+#define ID_VIEW_ASC 1011
+#define ID_VIEW_DESC 1012
+#define ID_VIEW_STATUSBAR 1013
+#define ID_MANAGE_CUT 1014
+#define ID_MANAGE_COPY 1015
+#define ID_MANAGE_PASTE 1016
+#define ID_HELP_SHOW 1017
+#define ID_MANAGE_UPDATE 1018
+#define ID_HELP_ABOUT 1019
+#define ID_CONTACT_CLOSE 1020
+#define CONTACT_SAVE 1021
+#define CONTACT_SAVECLOSE 1022
+#define CONTACT_CLOSE 1023
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmMainADT
+///////////////////////////////////////////////////////////////////////////////
+class frmMainADT : public wxFrame 
+{
+       private:
+       
+       protected:
+               wxMenuBar* mnuMain;
+               wxMenu* mnuManage;
+               wxMenu* mnuContact;
+               wxMenuItem* setContactAsMyself;
+               wxMenuItem* m_separator5;
+               wxMenu* mnuView;
+               wxMenu* mnuShowContactsAs;
+               wxMenu* mnuViewSortBy;
+               wxMenu* mnuViewShow;
+               wxMenu* mnuEdit;
+               wxMenu* mnuWindow;
+               wxMenu* mnuHelp;
+               wxBoxSizer* szrMain;
+               wxStaticBitmap* bmpIcon;
+               wxComboCtrl* AccCtrl;
+               wxSplitterWindow* m_splitter13;
+               wxPanel* m_panel19;
+               wxFlexGridSizer* szrContactList;
+               wxFlexGridSizer* szrAccList;
+               wxListCtrl* lstContacts;
+               wxPanel* m_panel20;
+               wxHtmlWindow* htmContactData;
+               wxStatusBar* stbBottom;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void OpenNewABDialog( wxCommandEvent& event ) { event.Skip(); }
+               virtual void RefreshAddressBook( wxCommandEvent& event ) { event.Skip(); }
+               virtual void OpenImportDialog( wxCommandEvent& event ) { event.Skip(); }
+               virtual void OpenExportDialog( wxCommandEvent& event ) { event.Skip(); }
+               virtual void OpenPreferences( wxCommandEvent& event ) { event.Skip(); }
+               virtual void QuitApp( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ShowContactEditorNew( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ShowContactEditorEdit( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteContact( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SetContactAsSelf( wxCommandEvent& event ) { event.Skip(); }
+               virtual void OpenFindContactsWindow( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SortFNLN( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SortLNFN( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SortNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SortDisplayAs( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SortAscending( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SortDescending( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ToggleStatusBar( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ShowActivityWindow( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CutAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CopyAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void PasteAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ShowHelp( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CheckUpdates( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ShowAboutWindow( wxCommandEvent& event ) { event.Skip(); }
+               virtual void OpenContactInfo( wxListEvent& event ) { event.Skip(); }
+               virtual void ShowContactInfo( wxListEvent& event ) { event.Skip(); }
+               virtual void ShowContactSubmenu( wxMouseEvent& event ) { event.Skip(); }
+               virtual void UpdateSBIconPlacement( wxSizeEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmMainADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Xestia Address Book"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxDEFAULT_FRAME_STYLE );
+               
+               ~frmMainADT();
+               
+               void m_splitter13OnIdle( wxIdleEvent& )
+               {
+                       m_splitter13->SetSashPosition( 184 );
+                       m_splitter13->Disconnect( wxEVT_IDLE, wxIdleEventHandler( frmMainADT::m_splitter13OnIdle ), NULL, this );
+               }
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmUpdateADT
+///////////////////////////////////////////////////////////////////////////////
+class frmUpdateADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxPanel* pnlUpdateData;
+               wxStaticText* lblRunningText;
+               wxStaticText* lblRunningVer;
+               wxStaticText* lblAvailableText;
+               wxStaticText* lblAvailableVer;
+               wxStaticText* lblBuildTypeText;
+               wxStaticText* lblBuildType;
+               wxStaticText* lblUpdateMessage;
+               wxStaticLine* statLine;
+               wxButton* btnVisitGelforn;
+               wxButton* btnVisitPREMIUM;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void VisitGelforn( wxCommandEvent& event ) { event.Skip(); }
+               virtual void VisitPREMIUM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmUpdateADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Check For Updates"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 433,273 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmUpdateADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmSearchADT
+///////////////////////////////////////////////////////////////////////////////
+class frmSearchADT : public wxFrame 
+{
+       private:
+       
+       protected:
+               wxStatusBar* stbBottom;
+               wxSplitterWindow* m_splitter4;
+               wxPanel* m_panel60;
+               wxNotebook* nbkSearch;
+               wxScrolledWindow* tabSearch;
+               wxFlexGridSizer* szrSearch;
+               wxScrolledWindow* tabAdvanced;
+               wxButton* btnSelectAccounts;
+               wxButton* btnSearch;
+               wxButton* btnReset;
+               wxPanel* m_panel61;
+               wxListCtrl* lstResults;
+               wxMenuBar* m_menubar5;
+               wxMenu* mnuContact;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void CloseWindow( wxCloseEvent& event ) { event.Skip(); }
+               virtual void SelectAccounts( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SearchContacts( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ResetContacts( wxCommandEvent& event ) { event.Skip(); }
+               virtual void OpenContact( wxCommandEvent& event ) { event.Skip(); }
+               virtual void EditContact( wxCommandEvent& event ) { event.Skip(); }
+               virtual void RevealContact( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmSearchADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Search Contacts"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 517,450 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
+               
+               ~frmSearchADT();
+               
+               void m_splitter4OnIdle( wxIdleEvent& )
+               {
+                       m_splitter4->SetSashPosition( 178 );
+                       m_splitter4->Disconnect( wxEVT_IDLE, wxIdleEventHandler( frmSearchADT::m_splitter4OnIdle ), NULL, this );
+               }
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmPreferencesADT
+///////////////////////////////////////////////////////////////////////////////
+class frmPreferencesADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* NbtPreferences;
+               wxPanel* tabGeneral;
+               wxCheckBox* chkSaveWindowPosition;
+               wxCheckBox* chkHideLocal;
+               wxPanel* tabTheme;
+               wxListCtrl* lstThemes;
+               wxButton* btnThemeAdd;
+               wxButton* btnThemeModify;
+               wxButton* btnThemeDelete;
+               wxPanel* tabAccounts;
+               wxListCtrl* lstAccounts;
+               wxButton* btnAccountAdd;
+               wxButton* btnAccountModify;
+               wxButton* btnAccountDelete;
+               wxButton* btnSave;
+               wxButton* btnCancel;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void LoadPreferences( wxInitDialogEvent& event ) { event.Skip(); }
+               virtual void DisableABButtons( wxListEvent& event ) { event.Skip(); }
+               virtual void EnableABButtons( wxListEvent& event ) { event.Skip(); }
+               virtual void AddABAccount( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyABAccount( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteABAccount( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SavePreferences( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmPreferencesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Preferences"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 450,400 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmPreferencesADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmAboutADT
+///////////////////////////////////////////////////////////////////////////////
+class frmAboutADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxStaticBitmap* bmpLogo;
+               wxStaticText* lblVersion;
+               wxStaticText* lblCompileTime;
+               wxStaticText* lblCopyright;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void CloseAboutWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmAboutADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("About Xestia Address Book"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,400 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmAboutADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactADT : public wxFrame 
+{
+       private:
+       
+       protected:
+               wxHtmlWindow* htmContactData;
+               wxMenuBar* m_menubar2;
+               wxMenu* contact;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void CloseWindow( wxCloseEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 320,240 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
+               
+               ~frmContactADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmNewAccountADT
+///////////////////////////////////////////////////////////////////////////////
+class frmNewAccountADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxBoxSizer* szrNewAccount;
+               wxPanel* tabType;
+               wxStaticText* lblEnterText;
+               wxStaticText* lblType;
+               wxChoice* cmbServerType;
+               wxStaticText* lblServerAddress;
+               wxTextCtrl* txtServerAddress;
+               wxStaticText* lblServerPort;
+               wxTextCtrl* txtServerPort;
+               wxStaticText* lblUsername;
+               wxTextCtrl* txtUsername;
+               wxStaticText* lblPassword;
+               wxTextCtrl* txtPassword;
+               wxStaticText* lblSSL;
+               wxCheckBox* chkUseSSL;
+               wxPanel* tabConn;
+               wxStaticText* lblConnectionResult;
+               wxStaticText* lblServerConnected;
+               wxStaticText* lblServerConnResult;
+               wxStaticText* lblValidResponse;
+               wxStaticText* lblServerResponse;
+               wxStaticText* lblUseSSL;
+               wxStaticText* lblServerSSLResult;
+               wxStaticText* lblServerSSLCert;
+               wxStaticText* lblServerSSLValid;
+               wxStaticText* lblServerUsernamePassword;
+               wxStaticText* lblAbleToLoginResult;
+               wxStaticText* lblIsCalDAV;
+               wxStaticText* lblCardDAVSupportResult;
+               wxStaticLine* m_staticline3;
+               wxStaticText* lblConnectionResultText;
+               wxPanel* tabFinish;
+               wxStaticText* lblFinishText;
+               wxStaticText* lblAccountName;
+               wxTextCtrl* txtAccountName;
+               wxButton* btnPrevious;
+               wxButton* btnNext;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void UpdateRequirements( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CheckAccountName( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessPrevious( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessNext( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmNewAccountADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("New Account"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 425,330 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmNewAccountADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorADT : public wxFrame 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkContact;
+               wxScrolledWindow* tabGeneral;
+               wxStaticText* lblTitle;
+               wxTextCtrl* txtTitle;
+               wxStaticText* lblForename;
+               wxTextCtrl* txtForename;
+               wxStaticText* lblSurname;
+               wxTextCtrl* txtSurname;
+               wxStaticText* lblOtherNames;
+               wxTextCtrl* txtOtherNames;
+               wxStaticText* lblSuffix;
+               wxTextCtrl* txtSuffix;
+               wxStaticText* lblDisplayAs;
+               wxComboBox* cmbDisplayAs;
+               wxStaticText* lblBirthday;
+               wxDatePickerCtrl* dapBirthday;
+               wxTextCtrl* txtBirthday;
+               wxStaticText* lblAnniversary;
+               wxDatePickerCtrl* dapAnniversary;
+               wxTextCtrl* txtAnniversary;
+               wxStaticText* lblGender;
+               wxChoice* cmbGender;
+               wxTextCtrl* txtGenderDescription;
+               wxStaticText* lblType;
+               wxChoice* cmbType;
+               wxStaticText* lblNicknames;
+               wxListCtrl* lboNicknames;
+               wxButton* btnAddGeneralNickname;
+               wxButton* btnModifyGeneralNickname;
+               wxButton* btnDeleteGeneralNickname;
+               wxStaticText* lblAddress;
+               wxListCtrl* lboAddresses;
+               wxButton* btnAddGeneralAddress;
+               wxButton* btnModifyGeneralAddress;
+               wxButton* btnDeleteGeneralAddress;
+               wxStaticText* lblEmail;
+               wxListCtrl* lboEmails;
+               wxButton* btnAddEmailAddress;
+               wxButton* btnModifyEmailAddress;
+               wxButton* btnDeleteEmailAddress;
+               wxStaticText* lblIM;
+               wxListCtrl* lboIM;
+               wxButton* btnAddIMAddress;
+               wxButton* btnModifyIMAddress;
+               wxButton* btnDeleteIMAddress;
+               wxStaticText* lblTelephone;
+               wxListCtrl* lboTelephone;
+               wxButton* btnAddTelephone;
+               wxButton* btnModifyTelephone;
+               wxButton* btnDeleteTelephone;
+               wxStaticText* lblLanguages;
+               wxListCtrl* lboLanguages;
+               wxButton* btnAddLanguage;
+               wxButton* btnModifyLanguage;
+               wxButton* btnDeleteLanguage;
+               wxStaticText* lblTimezone;
+               wxListCtrl* lboTimezones;
+               wxButton* btnAddTimezone;
+               wxButton* btnModifyTimezone;
+               wxButton* btnDeleteTimezone;
+               wxStaticText* lblGeopositioning;
+               wxListCtrl* lboGeoposition;
+               wxButton* btnAddGeneralGeoposition;
+               wxButton* btnModifyGeneralGeoposition;
+               wxButton* btnDeleteGeneralGeoposition;
+               wxStaticText* lblRelated;
+               wxListCtrl* lboRelated;
+               wxButton* btnAddRelated;
+               wxButton* btnModifyRelated;
+               wxButton* btnDeleteRelated;
+               wxStaticText* lblWebsites;
+               wxListCtrl* lboWebsites;
+               wxButton* btnAddWebsite;
+               wxButton* btnModifyWebsite;
+               wxButton* btnDeleteWebsite;
+               wxStaticText* lblTitles;
+               wxListCtrl* lboTitles;
+               wxButton* btnAddTitle;
+               wxButton* btnModifyTitle;
+               wxButton* btnDeleteTitle;
+               wxStaticText* lblRoles;
+               wxListCtrl* lboRoles;
+               wxButton* btnAddRole;
+               wxButton* btnModifyRole;
+               wxButton* btnDeleteRole;
+               wxStaticText* lblOrganisations;
+               wxListCtrl* lboOrganisations;
+               wxButton* btnAddOrganisations;
+               wxButton* btnModifyOrganisations;
+               wxButton* btnDeleteOrganisations;
+               wxStaticText* lblNotes;
+               wxListCtrl* lboNotes;
+               wxButton* btnAddNote;
+               wxButton* btnModifyNote;
+               wxButton* btnDeleteNote;
+               wxScrolledWindow* tabHome;
+               wxStaticText* lblHomeNickname;
+               wxListCtrl* lboHomeNicknames;
+               wxButton* btnAddHomeNickname;
+               wxButton* btnModifyHomeNickname;
+               wxButton* btnDeleteHomeNickname;
+               wxStaticText* lblHomeAddresses;
+               wxListCtrl* lboHomeAddresses;
+               wxButton* btnAddHomeAddress;
+               wxButton* btnModifyHomeAddress;
+               wxButton* btnDeleteHomeAddress;
+               wxStaticText* lblHomeEmail;
+               wxListCtrl* lboHomeEmails;
+               wxButton* btnAddHomeEmailAddress;
+               wxButton* btnModifyHomeEmailAddress;
+               wxButton* btnDeleteHomeEmailAddress;
+               wxStaticText* lblHomeIM;
+               wxListCtrl* lboHomeIM;
+               wxButton* btnAddHomeIMAddress;
+               wxButton* btnModifyHomeIMAddress;
+               wxButton* btnDeleteHomeIMAddress;
+               wxStaticText* lblHomeTelephone;
+               wxListCtrl* lboHomeTelephone;
+               wxButton* btnAddHomeTelephone;
+               wxButton* btnModifyHomeTelephone;
+               wxButton* btnDeleteHomeTelephone;
+               wxStaticText* lblHomeLanguages;
+               wxListCtrl* lboHomeLanguages;
+               wxButton* btnAddHomeLanguage;
+               wxButton* btnModifyHomeLanguage;
+               wxButton* btnDeleteHomeLanguage;
+               wxStaticText* lblHomeTimezone;
+               wxListCtrl* lboHomeTimezones;
+               wxButton* btnAddHomeTimezone;
+               wxButton* btnModifyHomeTimezone;
+               wxButton* btnDeleteHomeTimezone;
+               wxStaticText* lblHomeGeopositioning;
+               wxListCtrl* lboHomeGeoposition;
+               wxButton* btnAddHomeGeoposition;
+               wxButton* btnModifyHomeGeoposition;
+               wxButton* btnDeleteHomePosition;
+               wxStaticText* lblHomeWebsites;
+               wxListCtrl* lboHomeWebsites;
+               wxButton* btnAddHomeWebsite;
+               wxButton* btnHomeModifyWebsite;
+               wxButton* btnDeleteHomeWebsite;
+               wxStaticText* lblHomeTitles;
+               wxListCtrl* lboHomeTitles;
+               wxButton* btnAddHomeTitle;
+               wxButton* btnModifyHomeTitle;
+               wxButton* btnDeleteHomeTitle;
+               wxStaticText* lblHomeRoles;
+               wxListCtrl* lboHomeRoles;
+               wxButton* btnAddHomeRole;
+               wxButton* btnModifyHomeRole;
+               wxButton* btnDeleteHomeRole;
+               wxStaticText* lblHomeOrganisations;
+               wxListCtrl* lboHomeOrganisations;
+               wxButton* btnAddHomeOrganisations;
+               wxButton* btnModifyHomeOrganisations;
+               wxButton* btnDeleteHomeOrganisations;
+               wxStaticText* lblHomeNotes;
+               wxListCtrl* lboHomeNotes;
+               wxButton* btnAddHomeNote;
+               wxButton* btnModifyHomeNote;
+               wxButton* btnDeleteHomeNote;
+               wxScrolledWindow* tabBusiness;
+               wxStaticText* lblBusinessNickname;
+               wxListCtrl* lboBusinessNicknames;
+               wxButton* btnAddBusinessNickname;
+               wxButton* btnModifyBusinessNickname;
+               wxButton* btnDeleteBusinessNickname;
+               wxStaticText* lblBusinessAddress;
+               wxListCtrl* lboBusinessAddresses;
+               wxButton* btnAddBusinessAddress;
+               wxButton* btnModifyBusinessAddress;
+               wxButton* btnDeleteBusinessAddress;
+               wxStaticText* lblBusinessEmail;
+               wxListCtrl* lboBusinessEmail;
+               wxButton* btnAddBusinessEmailAddress;
+               wxButton* btnModifyBusinessEmailAddress;
+               wxButton* btnDeleteBusinessEmailAddress;
+               wxStaticText* lblBusinessIM;
+               wxListCtrl* lboBusinessIM;
+               wxButton* btnAddBusinessIMAddress;
+               wxButton* btnModifyBusinessIMAddress;
+               wxButton* btnDeleteBusinessIMAddress;
+               wxStaticText* lblBusinessTelephone;
+               wxListCtrl* lboBusinessTelephone;
+               wxButton* btnBusinessAddTelephone;
+               wxButton* btnBusinessModifyTelephone;
+               wxButton* btnBusinessDeleteTelephone;
+               wxStaticText* lblBusinessLanguage;
+               wxListCtrl* lboBusinessLanguages;
+               wxButton* btnBusinessAddLanguage;
+               wxButton* btnBusinessModifyLanguage;
+               wxButton* btnBusinessDeleteLanguage;
+               wxStaticText* lblBusinessTimezones;
+               wxListCtrl* lboBusinessTimezones;
+               wxButton* btnBusinessAddTimezone;
+               wxButton* btnBusinessModifyTimezone;
+               wxButton* btnDeleteBusinessTimezone;
+               wxStaticText* lblBusinessGeopositioning;
+               wxListCtrl* lboBusinessGeoposition;
+               wxButton* btnAddBusinessGeoposition;
+               wxButton* btnModifyBusinessGeoposition;
+               wxButton* btnDeleteBusinessGeoposition;
+               wxStaticText* lblBusinessWebsites;
+               wxListCtrl* lboBusinessWebsites;
+               wxButton* btnAddBusinessWebsite;
+               wxButton* btnModifyBusinessWebsite;
+               wxButton* btnDeleteBusinessWebsite;
+               wxStaticText* lblBusinessTitles;
+               wxListCtrl* lboBusinessTitles;
+               wxButton* btnAddBusinessTitle;
+               wxButton* btnModifyBusinessTitle;
+               wxButton* btnDeleteBusinessTitle;
+               wxStaticText* lblBusinessRoles;
+               wxListCtrl* lboBusinessRoles;
+               wxButton* btnAddBusinessRole;
+               wxButton* btnModifyBusinessRole;
+               wxButton* btnDeleteBusinessRole;
+               wxStaticText* lblBusinessOrganisations;
+               wxListCtrl* lboBusinessOrganisations;
+               wxButton* btnAddBusinessOrganisations;
+               wxButton* btnModifyBusinessOrganisations;
+               wxButton* btnDeleteBusinessOrganisations;
+               wxStaticText* lblBusinessNotes;
+               wxListCtrl* lboBusinessNotes;
+               wxButton* btnBusinessAddNote;
+               wxButton* btnBusinessModifyNote;
+               wxButton* btnBusinessDeleteNote;
+               wxScrolledWindow* tabCategories;
+               wxListCtrl* lboCategories;
+               wxButton* btnAddCategory;
+               wxButton* btnModifyCategory;
+               wxButton* btnDeleteCategory;
+               wxScrolledWindow* tabMembers;
+               wxListCtrl* lboGroups;
+               wxButton* btnAddGroups;
+               wxButton* btnModifyGroups;
+               wxButton* btnDeleteGroups;
+               wxScrolledWindow* tabPictures;
+               wxStaticBitmap* imgPicture;
+               wxListCtrl* lboPictures;
+               wxButton* btnAddPicture;
+               wxButton* btnModifyPicture;
+               wxButton* btnDeletePicture;
+               wxScrolledWindow* tabLogo;
+               wxStaticBitmap* imgLogo;
+               wxListCtrl* lboLogos;
+               wxButton* btnAddLogo;
+               wxButton* btnModifyLogo;
+               wxButton* btnDeleteLogo;
+               wxScrolledWindow* tabSounds;
+               wxListCtrl* lboSounds;
+               wxButton* btnAddSound;
+               wxButton* btnModifySound;
+               wxButton* btnDeleteSound;
+               wxStaticLine* m_staticline1;
+               wxBitmapButton* btnPlay;
+               wxBitmapButton* btnStop;
+               wxScrolledWindow* tabCalendaring;
+               wxStaticText* lblCalendarAddresses;
+               wxListCtrl* lboCalendarAddresses;
+               wxButton* btnAddCalendarAddress;
+               wxButton* btnModifyCalendarAddress;
+               wxButton* btnDeleteCalendarAddress;
+               wxStaticText* lblCalendarRequestAddresses;
+               wxListCtrl* lboCalendarRequestAddress;
+               wxButton* btnAddCalendarRequestAddress;
+               wxButton* btnModifyCalendarRequestAddress;
+               wxButton* btnDeleteCalendarRequestAddress;
+               wxStaticText* lblFreeBusyAddresses;
+               wxListCtrl* lboFreeBusyAddresses;
+               wxButton* btnAddFreeBusyAddress;
+               wxButton* btnModifyFreeBusyAddress;
+               wxButton* btnDeleteFreeBusyAddress;
+               wxScrolledWindow* tabSecurity;
+               wxListCtrl* lboKeys;
+               wxButton* btnAddKey;
+               wxButton* btnModifyKey;
+               wxButton* btnDeleteKey;
+               wxScrolledWindow* tabOther;
+               wxStaticText* lblVendorNamespace;
+               wxListCtrl* lboVendorNamespace;
+               wxButton* btnAddVendorNamespace;
+               wxButton* btnModifyVendorNamespace;
+               wxButton* btnDeleteVendorNamespace;
+               wxStaticText* lblXTokens;
+               wxListCtrl* lboXToken;
+               wxButton* btnAddXToken;
+               wxButton* btnModifyXToken;
+               wxButton* btnDeleteXToken;
+               wxMenuBar* m_menubar3;
+               wxMenu* mnuContact;
+               wxMenu* mnuEdit;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void CloseWindow( wxCloseEvent& event ) { event.Skip(); }
+               virtual void UpdateDisplayAs( wxCommandEvent& event ) { event.Skip(); }
+               virtual void UpdateName( wxCommandEvent& event ) { event.Skip(); }
+               virtual void UpdateMembersTab( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralLanguages( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralLanguages( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralLanguage( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralRelated( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralRelated( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralRelated( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGeneralNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGeneralNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGeneralNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeLanguage( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeLanguage( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeLanguage( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddHomeNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyHomeNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteHomeNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessNickname( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessEmail( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessIM( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessTelephone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessLanguage( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessLanguage( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessLanguage( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessTimezone( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessGeoposition( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessWebsite( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessTitle( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessRole( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessOrganisation( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddBusinessNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyBusinessNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteBusinessNote( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddCategory( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyCategory( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteCategory( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddGroup( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyGroup( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteGroup( wxCommandEvent& event ) { event.Skip(); }
+               virtual void LoadPicture( wxListEvent& event ) { event.Skip(); }
+               virtual void AddPicture( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyPicture( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeletePicture( wxCommandEvent& event ) { event.Skip(); }
+               virtual void LoadLogo( wxListEvent& event ) { event.Skip(); }
+               virtual void AddLogo( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyLogo( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteLogo( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddSound( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifySound( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteSound( wxCommandEvent& event ) { event.Skip(); }
+               virtual void PlaySound( wxCommandEvent& event ) { event.Skip(); }
+               virtual void StopSound( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddCalendarAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyCalendarAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteCalendarAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddCalendarRequest( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyCalendarRequest( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddFreeBusy( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyFreeBusy( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteFreeBusy( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddKey( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyKey( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteKey( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddVendorNamespace( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyVendorNamespace( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteVendorNamespace( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddXToken( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ModifyXToken( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DeleteXToken( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SaveContact( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SaveCloseContact( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseContact( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CutText( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CopyText( wxCommandEvent& event ) { event.Skip(); }
+               virtual void PasteText( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Contact Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 769,517 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
+               
+               ~frmContactEditorADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorAddressADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorAddressADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkAddress;
+               wxPanel* tabGeneral;
+               wxStaticText* lblAddress;
+               wxTextCtrl* txtAddress;
+               wxStaticText* m_staticText61;
+               wxTextCtrl* txtTownCity;
+               wxStaticText* lblCountyState;
+               wxTextCtrl* txtCounty;
+               wxStaticText* lblPostCode;
+               wxTextCtrl* txtPostCode;
+               wxStaticText* lblCountry;
+               wxTextCtrl* txtCountry;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxPanel* tabLabel;
+               wxButton* btnCopyMailing;
+               wxTextCtrl* txtLabel;
+               wxPanel* tabOther;
+               wxStaticText* lblLanguage;
+               wxComboBox* cmbLanguage;
+               wxStaticText* lblGeography;
+               wxTextCtrl* txtGeo;
+               wxStaticText* lblTimezone;
+               wxTextCtrl* txtTimezone;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void InitAddressEditor( wxInitDialogEvent& event ) { event.Skip(); }
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CopyAddress( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorAddressADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Address Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 426,317 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorAddressADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmConflictResolutionADT
+///////////////////////////////////////////////////////////////////////////////
+class frmConflictResolutionADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxStaticText* lblText;
+               wxSplitterWindow* m_splitter3;
+               wxPanel* m_panel44;
+               wxHtmlWindow* htmClient;
+               wxPanel* m_panel45;
+               wxHtmlWindow* htmServer;
+               wxButton* btnKeepLocal;
+               wxButton* btnKeepServer;
+               wxButton* btnDecideLater;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void KeepLocalData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void KeepServerData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void DecideLater( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmConflictResolutionADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Conflict Resolution"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 536,417 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmConflictResolutionADT();
+               
+               void m_splitter3OnIdle( wxIdleEvent& )
+               {
+                       m_splitter3->SetSashPosition( 257 );
+                       m_splitter3->Disconnect( wxEVT_IDLE, wxIdleEventHandler( frmConflictResolutionADT::m_splitter3OnIdle ), NULL, this );
+               }
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmActivityMgrADT
+///////////////////////////////////////////////////////////////////////////////
+class frmActivityMgrADT : public wxFrame 
+{
+       private:
+       
+       protected:
+               wxMenuBar* mnuMenuBar;
+               wxMenu* mnuWindow;
+               wxPanel* m_panel43;
+               wxStaticBitmap* bmpActivity;
+               wxPanel* m_panel46;
+               wxStaticText* lblDetails;
+               wxGauge* GauProgress;
+               wxPanel* m_panel44;
+               wxListCtrl* lstActivity;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void CloseWindow( wxCloseEvent& event ) { event.Skip(); }
+               virtual void StopTask( wxCommandEvent& event ) { event.Skip(); }
+               virtual void StopAllTasks( wxCommandEvent& event ) { event.Skip(); }
+               virtual void RetryTask( wxCommandEvent& event ) { event.Skip(); }
+               virtual void SleepMode( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmActivityMgrADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Activity Manager"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 400,300 ), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL );
+               
+               ~frmActivityMgrADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorNicknameADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorNicknameADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkAddress;
+               wxPanel* tabGeneral;
+               wxStaticText* lblNickname;
+               wxTextCtrl* txtNickname;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxPanel* tabOther;
+               wxStaticText* lblLanguage;
+               wxComboBox* cmbLanguage;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void InitAddressEditor( wxInitDialogEvent& event ) { event.Skip(); }
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorNicknameADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Nickname Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 386,231 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorNicknameADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorGroupsADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorGroupsADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkGroup;
+               wxPanel* tabGeneral;
+               wxStaticText* lblContacts;
+               wxCheckListBox* chkContacts;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void FetchContacts( wxInitDialogEvent& event ) { event.Skip(); }
+               virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorGroupsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Group Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 398,392 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorGroupsADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorRolesADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorRolesADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkRole;
+               wxPanel* tabGeneral;
+               wxStaticText* lblRole;
+               wxTextCtrl* txtRole;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorRolesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Role Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorRolesADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorOrganisationsADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorOrganisationsADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkOrganisation;
+               wxPanel* tabGeneral;
+               wxStaticText* lblOrganisation;
+               wxTextCtrl* txtOrganisation;
+               wxStaticText* lblSortAs;
+               wxComboBox* cmbSortAs;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void UpdateSortAs( wxCommandEvent& event ) { event.Skip(); }
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorOrganisationsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Organisation Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 349,224 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorOrganisationsADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorNotesADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorNotesADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkNotes;
+               wxPanel* tabGeneral;
+               wxTextCtrl* txtNote;
+               wxPanel* tabPriority;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxPanel* tabLanguage;
+               wxStaticText* lblLanguage;
+               wxComboBox* cmbLanguage;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorNotesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Note Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorNotesADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorTitlesADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorTitlesADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkTitles;
+               wxPanel* tabGeneral;
+               wxStaticText* lblTitle;
+               wxTextCtrl* txtTitle;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorTitlesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Title Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorTitlesADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorRelatedADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorRelatedADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkRelated;
+               wxPanel* tabGeneral;
+               wxStaticText* lblRelation;
+               wxTextCtrl* txtRelated;
+               wxStaticText* lblType;
+               wxComboBox* cmbType;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorRelatedADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Related Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,226 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorRelatedADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorSoundADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorSoundADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkRelated;
+               wxPanel* tabGeneral;
+               wxStaticText* lblSoundFile;
+               wxFilePickerCtrl* fipSound;
+               wxStaticText* lblType;
+               wxChoice* cmbType;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorSoundADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Sound Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,226 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorSoundADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorPictureADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorPictureADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkRelated;
+               wxPanel* tabGeneral;
+               wxStaticText* lblPictureFile;
+               wxFilePickerCtrl* fipPicture;
+               wxStaticText* lblType;
+               wxChoice* cmbType;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorPictureADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Picture Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,226 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorPictureADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorWebsitesADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorWebsitesADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkWebsite;
+               wxPanel* tabGeneral;
+               wxStaticText* lblWebsite;
+               wxTextCtrl* txtWebsite;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorWebsitesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Website Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorWebsitesADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorGeopositionADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorGeopositionADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkWebsite;
+               wxPanel* tabGeneral;
+               wxStaticText* lblGeoposition;
+               wxTextCtrl* txtGeoposition;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorGeopositionADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Geoposition Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorGeopositionADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorCalAdrADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorCalAdrADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkWebsite;
+               wxPanel* tabGeneral;
+               wxStaticText* lblAddress;
+               wxTextCtrl* txtAddress;
+               wxStaticText* lblType;
+               wxChoice* cmbType;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorCalAdrADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Calendar Address Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 448,270 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorCalAdrADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorVendorADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorVendorADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkWebsite;
+               wxPanel* tabGeneral;
+               wxStaticText* lblVendorPEN;
+               wxTextCtrl* txtPEN;
+               wxStaticText* lblElement;
+               wxTextCtrl* txtElement;
+               wxStaticText* lblValue;
+               wxTextCtrl* txtValue;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorVendorADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Vendor Namespace Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 448,270 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorVendorADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorXTokenADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorXTokenADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkWebsite;
+               wxPanel* tabGeneral;
+               wxStaticText* lblTokenName;
+               wxTextCtrl* txtTokenName;
+               wxStaticText* lblXT;
+               wxTextCtrl* txtValue;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorXTokenADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("X-Token Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 448,270 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorXTokenADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorKeyADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorKeyADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkWebsite;
+               wxPanel* tabGeneral;
+               wxStaticText* lblKeyType;
+               wxChoice* cmbKeyMainType;
+               wxStaticText* lblType;
+               wxChoice* cmbType;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxPanel* tabURL;
+               wxStaticText* lblKeyFormat;
+               wxComboBox* cmbURL;
+               wxStaticText* lblAddress;
+               wxTextCtrl* txtAddress;
+               wxPanel* tabKey;
+               wxStaticText* lblKeyFormatData;
+               wxComboBox* cmbKeyType;
+               wxStaticText* lblKeyData;
+               wxTextCtrl* txtKeyData;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void ProcessKeyType( wxCommandEvent& event ) { event.Skip(); }
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ConvertURLType( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ConvertKeyType( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorKeyADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Key Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 448,270 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorKeyADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorEmailADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorEmailADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkEmail;
+               wxPanel* tabGeneral;
+               wxStaticText* lblEmailAddress;
+               wxTextCtrl* txtEmail;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessData( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorEmailADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Email Address Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 411,251 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorEmailADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorIMADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorIMADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkIM;
+               wxPanel* tabGeneral;
+               wxStaticText* lblIMType;
+               wxComboBox* cmbIMType;
+               wxStaticText* lblUsername;
+               wxTextCtrl* txtUsername;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorIMADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Instant Messaging Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 424,224 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorIMADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorCategoryADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorCategoryADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkIM;
+               wxPanel* tabGeneral;
+               wxStaticText* lblCategory;
+               wxTextCtrl* txtCategory;
+               wxStaticText* lblType;
+               wxChoice* cmbType;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorCategoryADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Category Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 424,224 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorCategoryADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorTelephoneADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorTelephoneADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkAddress;
+               wxPanel* tabGeneral;
+               wxStaticText* lblTelephone;
+               wxTextCtrl* txtTelephone;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxStaticText* lblTelephoneType;
+               wxCheckBox* chkVoice;
+               wxCheckBox* chkText;
+               wxCheckBox* chkFax;
+               wxCheckBox* chkMobile;
+               wxCheckBox* chkVideo;
+               wxCheckBox* chkTextphone;
+               wxCheckBox* chkPager;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorTelephoneADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Telephone Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 401,262 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorTelephoneADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorLanguagesADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorLanguagesADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkLanguages;
+               wxPanel* tabGeneral;
+               wxStaticText* lblLanguage;
+               wxTextCtrl* txtLanguage;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorLanguagesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Language Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorLanguagesADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmContactEditorTimezonesADT
+///////////////////////////////////////////////////////////////////////////////
+class frmContactEditorTimezonesADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* nbkTimezone;
+               wxPanel* tabGeneral;
+               wxStaticText* lblTimezone;
+               wxComboBox* cmbTimezone;
+               wxStaticText* lblPriority;
+               wxCheckBox* chkUsePref;
+               wxSlider* sliPriority;
+               wxStaticText* lblHigh;
+               wxStaticText* lblLow;
+               wxButton* btnAction;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void EnablePriority( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ProcessAction( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmContactEditorTimezonesADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Timezone Editor"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 350,184 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmContactEditorTimezonesADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class XABSearchPanelADT
+///////////////////////////////////////////////////////////////////////////////
+class XABSearchPanelADT : public wxPanel 
+{
+       private:
+       
+       protected:
+               wxChoice* choOption;
+               wxBoxSizer* szrSSet;
+               wxCheckBox* chkActive;
+               wxTextCtrl* txtSearch;
+               wxBitmapButton* btnAdd;
+               wxBitmapButton* btnDelete;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void UpdateOptions( wxCommandEvent& event ) { event.Skip(); }
+               virtual void AddSearchWidget( wxCommandEvent& event ) { event.Skip(); }
+               virtual void RemoveSearchWidget( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               XABSearchPanelADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 390,40 ), long style = wxTAB_TRAVERSAL ); 
+               ~XABSearchPanelADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmSearchAccountsADT
+///////////////////////////////////////////////////////////////////////////////
+class frmSearchAccountsADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxCheckListBox* chlAccounts;
+               wxButton* btnSelect;
+               wxButton* btnCancel;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void UpdateSelectedAccounts( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmSearchAccountsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Select Accounts"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 353,376 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmSearchAccountsADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmEditAccountADT
+///////////////////////////////////////////////////////////////////////////////
+class frmEditAccountADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* tabAccount;
+               wxPanel* tabProperties;
+               wxStaticText* lblAccName;
+               wxTextCtrl* txtAccountName;
+               wxStaticText* lblAccAdr;
+               wxTextCtrl* txtAddress;
+               wxStaticText* m_staticText193;
+               wxTextCtrl* txtPort;
+               wxStaticText* lblPort;
+               wxTextCtrl* txtUsername;
+               wxStaticText* lblPassword;
+               wxTextCtrl* txtPassword;
+               wxStaticText* lblPrefix;
+               wxTextCtrl* txtPrefix;
+               wxButton* btnDetect;
+               wxStaticText* txtSSL;
+               wxCheckBox* chkSSL;
+               wxPanel* tabRefresh;
+               wxStaticText* lblRefresh;
+               wxTextCtrl* txtRefresh;
+               wxButton* btnSave;
+               wxButton* btnCancel;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void DetectAddressBook( wxCommandEvent& event ) { event.Skip(); }
+               virtual void UpdateSettings( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmEditAccountADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Edit Account"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 306,319 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmEditAccountADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmSSLCertificateADT
+///////////////////////////////////////////////////////////////////////////////
+class frmSSLCertificateADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxNotebook* m_notebook28;
+               wxPanel* tabSummary;
+               wxPanel* pnlTop;
+               wxStaticText* lblCertName;
+               wxStaticText* lblValidityStatus;
+               wxPanel* m_panel54;
+               wxStaticText* lblIssuedTo;
+               wxStaticText* lblIssuedToData;
+               wxStaticText* lblValidFrom;
+               wxStaticText* lblValidFromData;
+               wxStaticText* lblValidUntil;
+               wxStaticText* lblValidUntilData;
+               wxPanel* tabDetail;
+               wxListCtrl* lstValues;
+               wxTextCtrl* txtValueData;
+               wxPanel* tabHierarchy;
+               wxTreeCtrl* treHierarchy;
+               wxPanel* m_panel57;
+               wxButton* btnViewCert;
+               wxPanel* pnlButtons;
+               wxButton* btnClose;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void LoadValueData( wxListEvent& event ) { event.Skip(); }
+               virtual void CheckCertificate( wxTreeEvent& event ) { event.Skip(); }
+               virtual void ViewCertificate( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmSSLCertificateADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("SSL Certificate Window"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 347,402 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmSSLCertificateADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmInvalidSSLCertificateADT
+///////////////////////////////////////////////////////////////////////////////
+class frmInvalidSSLCertificateADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxStaticText* lblSSLText;
+               wxButton* btnAccept;
+               wxButton* btnReject;
+               wxButton* btnViewCert;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void Accept( wxCommandEvent& event ) { event.Skip(); }
+               virtual void Reject( wxCommandEvent& event ) { event.Skip(); }
+               virtual void ViewCertificates( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmInvalidSSLCertificateADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Invalid SSL Certificate"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 445,239 ), long style = wxCAPTION ); 
+               ~frmInvalidSSLCertificateADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmImportContactsADT
+///////////////////////////////////////////////////////////////////////////////
+class frmImportContactsADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxStaticText* lblImportText;
+               wxCheckListBox* lstContacts;
+               wxBoxSizer* szrAccount;
+               wxStaticText* lblAccountText;
+               wxButton* btnImport;
+               wxButton* btnCancel;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void ImportContacts( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmImportContactsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 362,403 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmImportContactsADT();
+       
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class frmImportResultsADT
+///////////////////////////////////////////////////////////////////////////////
+class frmImportResultsADT : public wxDialog 
+{
+       private:
+       
+       protected:
+               wxStaticText* lblText;
+               wxTextCtrl* txtResults;
+               wxButton* btnCopyClipboard;
+               wxButton* btnFinish;
+               
+               // Virtual event handlers, overide them in your derived class
+               virtual void CopyClipboard( wxCommandEvent& event ) { event.Skip(); }
+               virtual void CloseWindow( wxCommandEvent& event ) { event.Skip(); }
+               
+       
+       public:
+               
+               frmImportResultsADT( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Import Results"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 489,299 ), long style = wxDEFAULT_DIALOG_STYLE ); 
+               ~frmImportResultsADT();
+       
+};
+
+#endif //__APPXESTIAADDRBK_H__
diff --git a/source/Makefile b/source/Makefile
new file mode 100644 (file)
index 0000000..01109fd
--- /dev/null
@@ -0,0 +1,92 @@
+CPP=g++\r
+STRIP=strip\r
+CPPFLAGS=`xml2-config --cflags` `wx-config --cxxflags --libs` `curl-config --libs` -lossp-uuid++ -lmagic -lsfml-audio -lxml2 -std=c++11 -Os -ggdb\r
+\r
+XAB_OUT=xestiaab\r
+\r
+BMCO_HELP=tools/bitmapcode.helper\r
+BMCO_DIR=../bitmaps\r
+\r
+MAINOBJS=main.o\r
+CEOBJS=contacteditor/frmContactEditor.o \\r
+ contacteditor/frmContactEditor-Load.o \\r
+ contacteditor/frmContactEditorNickname.o \\r
+ contacteditor/frmContactEditorAddress.o \\r
+ contacteditor/frmContactEditorEmail.o \\r
+ contacteditor/frmContactEditorIM.o \\r
+ contacteditor/frmContactEditorTelephone.o \\r
+ contacteditor/frmContactEditorLanguages.o \\r
+ contacteditor/frmContactEditorTimezones.o \\r
+ contacteditor/frmContactEditorRelated.o \\r
+ contacteditor/frmContactEditorWebsites.o \\r
+ contacteditor/frmContactEditorGeoposition.o \\r
+ contacteditor/frmContactEditorTitles.o \\r
+ contacteditor/frmContactEditorRoles.o \\r
+ contacteditor/frmContactEditorOrganisations.o \\r
+ contacteditor/frmContactEditorNotes.o \\r
+ contacteditor/frmContactEditorGroups.o \\r
+ contacteditor/frmContactEditorPicture.o \\r
+ contacteditor/frmContactEditorSound.o \\r
+ contacteditor/frmContactEditorCategory.o \\r
+ contacteditor/frmContactEditorCalAdr.o \\r
+ contacteditor/frmContactEditorKey.o \\r
+ contacteditor/frmContactEditorVendor.o \\r
+ contacteditor/frmContactEditorXToken.o\r
+CARDDAVOBJS=carddav/carddav.o\r
+COMMONOBJS=common/base64.o common/preferences.o common/getcontactinfo.o \\r
+ common/etag.o common/textprocessing.o common/timers.o common/events.o \\r
+ common/filename.o common/defaults.o common/uuid.o common/svrblist.o\r
+IMEXOBJS=import/import.o import/import-vcard3.o import/import-vcard4.o \\r
+ import/frmImportContacts.o import/frmImportResults.o \\r
+ export/export.o export/export-vcard3.o export/export-vcard4.o\r
+SEARCHOBJS=search/XABSearchPanel.o search/frmSearchAccounts.o frmSearch.o\r
+VCARDOBJS=vcard/vcard.o vcard/vcard34conv.o\r
+FORMOBJS=AppXestiaAddrBk.o frmActivityMgr.o frmAbout.o frmMain.o \\r
+ frmNewAccount.o frmPreferences.o frmContact.o frmConflictResolution.o \\r
+ frmEditAccount.o frmInvalidSSLCertificate.o frmSSLCertificate.o \\r
+ frmUpdate.o\r
+WIDGETOBJS=widgets/XABAccountView.o\r
+BMCOOBJS=tools/bitmapcode.o\r
+\r
+debug: bitmaphelper formobjs widgetobjs commonobjs vcardobjs carddavobjs \\r
+       ceobjs mainobjs searchobjs imexobjs\r
+       $(CPP) $(CPPFLAGS) $(FORMOBJS) $(WIDGETOBJS) $(COMMONOBJS) \\r
+       $(VCARDOBJS) $(CEOBJS) $(CARDDAVOBJS) $(SEARCHOBJS) $(MAINOBJS) $(IMEXOBJS) -o $(XAB_OUT)\r
+\r
+xestiaab: bitmaphelper formobjs widgetobjs commonobjs vcardobjs carddavobjs \\r
+       ceobjs mainobjs searchobjs imexobjs \r
+       $(CPP) $(CPPFLAGS) $(FORMOBJS) $(WIDGETOBJS) $(COMMONOBJS) \ \r
+       $(VCARDOBJS) $(CEOBJS) $(CARDDAVOBJS) $(SEARCHOBJS) $(MAINOBJS) $(IMEXOBJS) -o $(XAB_OUT)\r
+       $(STRIP) -s $(XAB_OUT)\r
+\r
+carddavobjs: $(CARDDAVOBJS)\r
+\r
+mainobjs: $(MAINOBJS)\r
+\r
+commonobjs: $(COMMONOBJS)\r
+\r
+vcardobjs: $(VCARDOBJS)\r
+\r
+ceobjs: $(CEOBJS)      \r
+\r
+formobjs: $(FORMOBJS)\r
+\r
+searchobjs: $(SEARCHOBJS)\r
+\r
+widgetobjs: $(WIDGETOBJS)\r
+\r
+imexobjs: $(IMEXOBJS)\r
+\r
+clean:\r
+       rm -f $(XAB_OUT) $(BMCO_HELP) tools/bitmapcode.o *.o \\r
+       vcard/*.o common/*.o carddav/*.o contacteditor/*.o search/*.o \\r
+       widgets/*.o export/*.o import/*.o\r
+\r
+distclean: clean\r
+       rm -f Makefile config.status config.log\r
+\r
+bitmaphelperobjs: $(BMCOOBJS)\r
+\r
+bitmaphelper: bitmaphelperobjs\r
+       $(CPP) $(CPPFLAGS) -lboost_filesystem -lboost_system $(BMCOOBJS) -o $(BMCO_HELP)\r
+       $(BMCO_HELP) bitmaps/\r
diff --git a/source/Makefile.in b/source/Makefile.in
new file mode 100644 (file)
index 0000000..a966a15
--- /dev/null
@@ -0,0 +1,44 @@
+CPP=g++
+CPPFLAGS=`wx-config --cxxflags --libs` -lboost_filesystem -lboost_system -Os
+
+XAB_OUT=xestiaab
+
+MAINOBJS=main.o
+CEOBJS=contacteditor/frmContactEditor.o \
+ contacteditor/frmContactEditorAddress.o \
+ contacteditor/frmContactEditorEmail.o \
+ contacteditor/frmContactEditorIM.o \
+ contacteditor/frmContactEditorTelephone.o \
+ contacteditor/frmContactEditorLanguages.o \
+ contacteditor/frmContactEditorTimezones.o \
+ contacteditor/frmContactEditorRelated.o \
+ contacteditor/frmContactEditorWebsites.o \
+ contacteditor/frmContactEditorTitles.o \
+ contacteditor/frmContactEditorRoles.o \
+ contacteditor/frmContactEditorOrganisations.o \
+ contacteditor/frmContactEditorNotes.o  
+COMMONOBJS=common/base64.o common/preferences.o common/getcontactinfo.o \
+ common/textprocessing.o
+VCARDOBJS=vcard/vcard.o
+FORMOBJS=AppXestiaAddrBk.o frmAbout.o frmMain.o frmNewAccount.o \
+frmPreferences.o frmContact.o
+
+xestiaab: mainobjs commonobjs vcardobjs ceobjs formobjs
+       $(CPP) $(CPPFLAGS) $(MAINOBJS) $(COMMONOBJS) $(VCARDOBJS) \
+       $(FORMOBJS) $(CEOBJS) -o $(XAB_OUT)
+
+mainobjs: $(MAINOBJS)
+
+commonobjs: $(COMMONOBJS)
+
+vcardobjs: $(VCARDOBJS)
+
+ceobjs: $(CEOBJS)      
+
+formobjs: $(FORMOBJS)
+
+clean:
+       rm -f xestiaab *.o vcard/*.o common/*.o contacteditor/*.o
+
+distclean: clean
+       rm -f Makefile config.status config.log
diff --git a/source/aclocal.m4 b/source/aclocal.m4
new file mode 100644 (file)
index 0000000..52c55e2
--- /dev/null
@@ -0,0 +1,366 @@
+dnl ---------------------------------------------------------------------------
+dnl Macros for wxWidgets detection. Typically used in configure.in as:
+dnl
+dnl     AC_ARG_ENABLE(...)
+dnl     AC_ARG_WITH(...)
+dnl        ...
+dnl     AM_OPTIONS_WXCONFIG
+dnl        ...
+dnl        ...
+dnl     AM_PATH_WXCONFIG(2.6.0, wxWin=1)
+dnl     if test "$wxWin" != 1; then
+dnl        AC_MSG_ERROR([
+dnl                wxWidgets must be installed on your system
+dnl                but wx-config script couldn't be found.
+dnl
+dnl                Please check that wx-config is in path, the directory
+dnl                where wxWidgets libraries are installed (returned by
+dnl                'wx-config --libs' command) is in LD_LIBRARY_PATH or
+dnl                equivalent variable and wxWidgets version is 2.3.4 or above.
+dnl        ])
+dnl     fi
+dnl     CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
+dnl     CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
+dnl     CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
+dnl
+dnl     LIBS="$LIBS $WX_LIBS"
+dnl ---------------------------------------------------------------------------
+
+dnl ---------------------------------------------------------------------------
+dnl AM_OPTIONS_WXCONFIG
+dnl
+dnl adds support for --wx-prefix, --wx-exec-prefix, --with-wxdir and
+dnl --wx-config command line options
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN([AM_OPTIONS_WXCONFIG],
+[
+    AC_ARG_WITH(wxdir,
+                [  --with-wxdir=PATH       Use uninstalled version of wxWidgets in PATH],
+                [ wx_config_name="$withval/wx-config"
+                  wx_config_args="--inplace"])
+    AC_ARG_WITH(wx-config,
+                [  --with-wx-config=CONFIG wx-config script to use (optional)],
+                wx_config_name="$withval" )
+    AC_ARG_WITH(wx-prefix,
+                [  --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)],
+                wx_config_prefix="$withval", wx_config_prefix="")
+    AC_ARG_WITH(wx-exec-prefix,
+                [  --with-wx-exec-prefix=PREFIX
+                          Exec prefix where wxWidgets is installed (optional)],
+                wx_config_exec_prefix="$withval", wx_config_exec_prefix="")
+])
+
+dnl Helper macro for checking if wx version is at least $1.$2.$3, set's
+dnl wx_ver_ok=yes if it is:
+AC_DEFUN([_WX_PRIVATE_CHECK_VERSION],
+[
+    wx_ver_ok=""
+    if test "x$WX_VERSION" != x ; then
+      if test $wx_config_major_version -gt $1; then
+        wx_ver_ok=yes
+      else
+        if test $wx_config_major_version -eq $1; then
+           if test $wx_config_minor_version -gt $2; then
+              wx_ver_ok=yes
+           else
+              if test $wx_config_minor_version -eq $2; then
+                 if test $wx_config_micro_version -ge $3; then
+                    wx_ver_ok=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+    fi
+])
+
+dnl ---------------------------------------------------------------------------
+dnl AM_PATH_WXCONFIG(VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND
+dnl                  [, WX-LIBS [, ADDITIONAL-WX-CONFIG-FLAGS]]]])
+dnl
+dnl Test for wxWidgets, and define WX_C*FLAGS, WX_LIBS and WX_LIBS_STATIC
+dnl (the latter is for static linking against wxWidgets). Set WX_CONFIG_NAME
+dnl environment variable to override the default name of the wx-config script
+dnl to use. Set WX_CONFIG_PATH to specify the full path to wx-config - in this
+dnl case the macro won't even waste time on tests for its existence.
+dnl
+dnl Optional WX-LIBS argument contains comma- or space-separated list of
+dnl wxWidgets libraries to link against (it may include contrib libraries). If
+dnl it is not specified then WX_LIBS and WX_LIBS_STATIC will contain flags to
+dnl link with all of the core wxWidgets libraries.
+dnl
+dnl Optional ADDITIONAL-WX-CONFIG-FLAGS argument is appended to wx-config
+dnl invocation command in present. It can be used to fine-tune lookup of
+dnl best wxWidgets build available.
+dnl
+dnl Example use:
+dnl   AM_PATH_WXCONFIG([2.6.0], [wxWin=1], [wxWin=0], [html,core,net]
+dnl                    [--unicode --debug])
+dnl ---------------------------------------------------------------------------
+
+dnl
+dnl Get the cflags and libraries from the wx-config script
+dnl
+AC_DEFUN([AM_PATH_WXCONFIG],
+[
+  dnl do we have wx-config name: it can be wx-config or wxd-config or ...
+  if test x${WX_CONFIG_NAME+set} != xset ; then
+     WX_CONFIG_NAME=wx-config
+  fi
+
+  if test "x$wx_config_name" != x ; then
+     WX_CONFIG_NAME="$wx_config_name"
+  fi
+
+  dnl deal with optional prefixes
+  if test x$wx_config_exec_prefix != x ; then
+     wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
+     WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
+  fi
+  if test x$wx_config_prefix != x ; then
+     wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
+     WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
+  fi
+  if test "$cross_compiling" = "yes"; then
+     wx_config_args="$wx_config_args --host=$host_alias"
+  fi
+
+  dnl don't search the PATH if WX_CONFIG_NAME is absolute filename
+  if test -x "$WX_CONFIG_NAME" ; then
+     AC_MSG_CHECKING(for wx-config)
+     WX_CONFIG_PATH="$WX_CONFIG_NAME"
+     AC_MSG_RESULT($WX_CONFIG_PATH)
+  else
+     AC_PATH_PROG(WX_CONFIG_PATH, $WX_CONFIG_NAME, no, "$WX_LOOKUP_PATH:$PATH")
+  fi
+
+  if test "$WX_CONFIG_PATH" != "no" ; then
+    WX_VERSION=""
+
+    min_wx_version=ifelse([$1], ,2.2.1,$1)
+    if test -z "$5" ; then
+      AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version])
+    else
+      AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version ($5)])
+    fi
+
+    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args $5 $4"
+
+    WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
+    wx_config_major_version=`echo $WX_VERSION | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    wx_config_minor_version=`echo $WX_VERSION | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    wx_config_micro_version=`echo $WX_VERSION | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+    wx_requested_major_version=`echo $min_wx_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    wx_requested_minor_version=`echo $min_wx_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    wx_requested_micro_version=`echo $min_wx_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+    _WX_PRIVATE_CHECK_VERSION([$wx_requested_major_version],
+                              [$wx_requested_minor_version],
+                              [$wx_requested_micro_version])
+
+    if test -n "$wx_ver_ok"; then
+
+      AC_MSG_RESULT(yes (version $WX_VERSION))
+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
+
+      dnl is this even still appropriate?  --static is a real option now
+      dnl and WX_CONFIG_WITH_ARGS is likely to contain it if that is
+      dnl what the user actually wants, making this redundant at best.
+      dnl For now keep it in case anyone actually used it in the past.
+      AC_MSG_CHECKING([for wxWidgets static library])
+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
+      if test "x$WX_LIBS_STATIC" = "x"; then
+        AC_MSG_RESULT(no)
+      else
+        AC_MSG_RESULT(yes)
+      fi
+
+      dnl starting with version 2.2.6 wx-config has --cppflags argument
+      wx_has_cppflags=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_cppflags=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -gt 2; then
+              wx_has_cppflags=yes
+           else
+              if test $wx_config_minor_version -eq 2; then
+                 if test $wx_config_micro_version -ge 6; then
+                    wx_has_cppflags=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+
+      dnl starting with version 2.7.0 wx-config has --rescomp option
+      wx_has_rescomp=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_rescomp=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -ge 7; then
+              wx_has_rescomp=yes
+           fi
+        fi
+      fi
+      if test "x$wx_has_rescomp" = x ; then
+         dnl cannot give any useful info for resource compiler
+         WX_RESCOMP=
+      else
+         WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp`
+      fi
+
+      if test "x$wx_has_cppflags" = x ; then
+         dnl no choice but to define all flags like CFLAGS
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+         WX_CPPFLAGS=$WX_CFLAGS
+         WX_CXXFLAGS=$WX_CFLAGS
+
+         WX_CFLAGS_ONLY=$WX_CFLAGS
+         WX_CXXFLAGS_ONLY=$WX_CFLAGS
+      else
+         dnl we have CPPFLAGS included in CFLAGS included in CXXFLAGS
+         WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+
+         WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
+         WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
+      fi
+
+      ifelse([$2], , :, [$2])
+
+    else
+
+       if test "x$WX_VERSION" = x; then
+          dnl no wx-config at all
+          AC_MSG_RESULT(no)
+       else
+          AC_MSG_RESULT(no (version $WX_VERSION is not new enough))
+       fi
+
+       WX_CFLAGS=""
+       WX_CPPFLAGS=""
+       WX_CXXFLAGS=""
+       WX_LIBS=""
+       WX_LIBS_STATIC=""
+       WX_RESCOMP=""
+       ifelse([$3], , :, [$3])
+
+    fi
+  else
+
+    WX_CFLAGS=""
+    WX_CPPFLAGS=""
+    WX_CXXFLAGS=""
+    WX_LIBS=""
+    WX_LIBS_STATIC=""
+    WX_RESCOMP=""
+
+    ifelse([$3], , :, [$3])
+
+  fi
+
+  AC_SUBST(WX_CPPFLAGS)
+  AC_SUBST(WX_CFLAGS)
+  AC_SUBST(WX_CXXFLAGS)
+  AC_SUBST(WX_CFLAGS_ONLY)
+  AC_SUBST(WX_CXXFLAGS_ONLY)
+  AC_SUBST(WX_LIBS)
+  AC_SUBST(WX_LIBS_STATIC)
+  AC_SUBST(WX_VERSION)
+  AC_SUBST(WX_RESCOMP)
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Get information on the wxrc program for making C++, Python and xrs
+dnl resource files.
+dnl
+dnl     AC_ARG_ENABLE(...)
+dnl     AC_ARG_WITH(...)
+dnl        ...
+dnl     AM_OPTIONS_WXCONFIG
+dnl        ...
+dnl     AM_PATH_WXCONFIG(2.6.0, wxWin=1)
+dnl     if test "$wxWin" != 1; then
+dnl        AC_MSG_ERROR([
+dnl                wxWidgets must be installed on your system
+dnl                but wx-config script couldn't be found.
+dnl
+dnl                Please check that wx-config is in path, the directory
+dnl                where wxWidgets libraries are installed (returned by
+dnl                'wx-config --libs' command) is in LD_LIBRARY_PATH or
+dnl                equivalent variable and wxWidgets version is 2.6.0 or above.
+dnl        ])
+dnl     fi
+dnl
+dnl     AM_PATH_WXRC([HAVE_WXRC=1], [HAVE_WXRC=0])
+dnl     if test "x$HAVE_WXRC" != x1; then
+dnl         AC_MSG_ERROR([
+dnl                The wxrc program was not installed or not found.
+dnl     
+dnl                Please check the wxWidgets installation.
+dnl         ])
+dnl     fi
+dnl
+dnl     CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
+dnl     CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
+dnl     CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
+dnl
+dnl     LDFLAGS="$LDFLAGS $WX_LIBS"
+dnl ---------------------------------------------------------------------------
+
+
+
+dnl ---------------------------------------------------------------------------
+dnl AM_PATH_WXRC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+dnl Test for wxWidgets' wxrc program for creating either C++, Python or XRS
+dnl resources.  The variable WXRC will be set and substituted in the configure
+dnl script and Makefiles.
+dnl
+dnl Example use:
+dnl   AM_PATH_WXRC([wxrc=1], [wxrc=0])
+dnl ---------------------------------------------------------------------------
+
+dnl
+dnl wxrc program from the wx-config script
+dnl
+AC_DEFUN([AM_PATH_WXRC],
+[
+  AC_ARG_VAR([WXRC], [Path to wxWidget's wxrc resource compiler])
+    
+  if test "x$WX_CONFIG_NAME" = x; then
+    AC_MSG_ERROR([The wxrc tests must run after wxWidgets test.])
+  else
+    
+    AC_MSG_CHECKING([for wxrc])
+    
+    if test "x$WXRC" = x ; then
+      dnl wx-config --utility is a new addition to wxWidgets:
+      _WX_PRIVATE_CHECK_VERSION(2,5,3)
+      if test -n "$wx_ver_ok"; then
+        WXRC=`$WX_CONFIG_WITH_ARGS --utility=wxrc`
+      fi
+    fi
+
+    if test "x$WXRC" = x ; then
+      AC_MSG_RESULT([not found])
+      ifelse([$2], , :, [$2])
+    else
+      AC_MSG_RESULT([$WXRC])
+      ifelse([$1], , :, [$1])
+    fi
+    
+    AC_SUBST(WXRC)
+  fi
+])
diff --git a/source/autom4te.cache/output.0 b/source/autom4te.cache/output.0
new file mode 100644 (file)
index 0000000..f2fc16e
--- /dev/null
@@ -0,0 +1,4990 @@
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.68 for Xestia Address Book 1.0.
+@%:@
+@%:@ Report bugs to <bugs@xestia.co.uk>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+@%:@ Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in @%:@(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+  
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+  
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in @%:@(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       # Preserve -v and -x to the replacement shell.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       case $- in @%:@ ((((
+         *v*x* | *x*v* ) as_opts=-vx ;;
+         *v* ) as_opts=-v ;;
+         *x* ) as_opts=-x ;;
+         * ) as_opts= ;;
+       esac
+       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@xestia.co.uk
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} @%:@ as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in @%:@(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIB@&t@OBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Xestia Address Book'
+PACKAGE_TARNAME='xestia-address-book'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='Xestia Address Book 1.0'
+PACKAGE_BUGREPORT='bugs@xestia.co.uk'
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIB@&t@OBJS
+EGREP
+GREP
+CPP
+ac_ct_CC
+CFLAGS
+CC
+OBJEXT
+EXEEXT
+ac_ct_CXX
+CPPFLAGS
+LDFLAGS
+CXXFLAGS
+CXX
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CXX
+CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCC
+CC
+CFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures Xestia Address Book 1.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          @<:@@S|@ac_default_prefix@:>@
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          @<:@PREFIX@:>@
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root
+                          @<:@DATAROOTDIR/doc/xestia-address-book@:>@
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of Xestia Address Book 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Some influential environment variables:
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bugs@xestia.co.uk>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+Xestia Address Book configure 1.0
+generated by GNU Autoconf 2.68
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+@%:@ ac_fn_cxx_try_compile LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_cxx_try_compile
+
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_compile
+
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_cpp
+
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_link
+
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## -------------------------------- ##
+## Report this to bugs@xestia.co.uk ##
+## -------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_header_mongrel
+
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_run
+
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_header_compile
+
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in @%:@((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+#AC_CONFIG_SRCDIR([version.h])
+#AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C++ compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+        CXXFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $@%:@ != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+  
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Checks for libraries.
+
+AM_OPTIONS_WXCONFIG
+reqwx=2.4.0
+AM_PATH_WXCONFIG($reqwx, wxWin=1)
+if test "$wxWin" != 1; then
+       as_fn_error $? "
+               wxWidgets must be installed on your system.
+               Please check that wx-config is in path, the directory
+               where wxWidgets libraries are installed (returned by
+               'wx-config --libs' or 'wx-config --static --libs' command)
+               is in LD_LIBRARY_PATH or equivalent variable and
+               wxWidgets version is $reqwx or above.
+               " "$LINENO" 5
+fi
+CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
+CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
+CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
+LIBS="$LIBS $WX_LIBS"
+
+# FIXME: Replace `main' with a function in `-lboost_filesystem':
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_filesystem" >&5
+$as_echo_n "checking for main in -lboost_filesystem... " >&6; }
+if ${ac_cv_lib_boost_filesystem_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lboost_filesystem  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_boost_filesystem_main=yes
+else
+  ac_cv_lib_boost_filesystem_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_filesystem_main" >&5
+$as_echo "$ac_cv_lib_boost_filesystem_main" >&6; }
+if test "x$ac_cv_lib_boost_filesystem_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_LIBBOOST_FILESYSTEM 1
+_ACEOF
+
+  LIBS="-lboost_filesystem $LIBS"
+
+else
+  
+       echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed!
+Please check that this library is installed property before 
+running configure again."
+       exit -1
+       
+fi
+
+# FIXME: Replace `main' with a function in `-lboost_system':
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_system" >&5
+$as_echo_n "checking for main in -lboost_system... " >&6; }
+if ${ac_cv_lib_boost_system_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lboost_system  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_boost_system_main=yes
+else
+  ac_cv_lib_boost_system_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_system_main" >&5
+$as_echo "$ac_cv_lib_boost_system_main" >&6; }
+if test "x$ac_cv_lib_boost_system_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_LIBBOOST_SYSTEM 1
+_ACEOF
+
+  LIBS="-lboost_system $LIBS"
+
+else
+  
+       echo "Error! Boost System Library (libboost_system) is not installed!
+Please check that this library is installed property before 
+running configure again."
+       exit -1
+       
+fi
+
+#AC_CHECK_PROG([WXCONFIG], [wx-config])
+
+# Checks for header files.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+fi
+
+done
+
+
+for ac_header in stdlib.h string.h wx/wx.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+fi
+
+done
+
+
+# Checks for typedefs, structures, and compiler characteristics.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdbool.h>
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+       struct s { _Bool s: 1; _Bool t; } s;
+
+       char a[true == 1 ? 1 : -1];
+       char b[false == 0 ? 1 : -1];
+       char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+       char d[(bool) 0.5 == true ? 1 : -1];
+       /* See body of main program for 'e'.  */
+       char f[(_Bool) 0.0 == false ? 1 : -1];
+       char g[true];
+       char h[sizeof (_Bool)];
+       char i[sizeof s.t];
+       enum { j = false, k = true, l = false * true, m = true * 256 };
+       /* The following fails for
+          HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+       _Bool n[m];
+       char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+       char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+       /* Catch a bug in an HP-UX C compiler.  See
+          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+        */
+       _Bool q = true;
+       _Bool *pq = &q;
+      
+int
+main ()
+{
+
+       bool e = &s;
+       *pq |= q;
+       *pq |= ! q;
+       /* Refer to every declared value, to avoid compiler optimizations.  */
+       return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+               + !m + !n + !o + !p + !q + !pq);
+      
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+if test $ac_cv_header_stdbool_h = yes; then
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+
+# Checks for library functions.
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[     `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+       g
+       s/^\n//
+       s/\n/ /g
+       p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIB@&t@OBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in @%:@(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} @%:@ as_fn_error
+
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in @%:@(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE] 
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bugs@xestia.co.uk>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+Xestia Address Book config.status 1.0
+configured by $0, generated by GNU Autoconf 2.68,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  
+  
+  
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/source/autom4te.cache/output.0t b/source/autom4te.cache/output.0t
new file mode 100644 (file)
index 0000000..129c241
--- /dev/null
@@ -0,0 +1,4992 @@
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.68 for Xestia Address Book 1.0.
+@%:@
+@%:@ Report bugs to <bugs@xestia.co.uk>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+@%:@ Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in @%:@(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+  
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+  
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in @%:@(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       # Preserve -v and -x to the replacement shell.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       case $- in @%:@ ((((
+         *v*x* | *x*v* ) as_opts=-vx ;;
+         *v* ) as_opts=-v ;;
+         *x* ) as_opts=-x ;;
+         * ) as_opts= ;;
+       esac
+       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@xestia.co.uk
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} @%:@ as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in @%:@(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIB@&t@OBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Xestia Address Book'
+PACKAGE_TARNAME='xestia-address-book'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='Xestia Address Book 1.0'
+PACKAGE_BUGREPORT='bugs@xestia.co.uk'
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIB@&t@OBJS
+EGREP
+GREP
+CPP
+ac_ct_CC
+CFLAGS
+CC
+OBJEXT
+EXEEXT
+ac_ct_CXX
+CPPFLAGS
+LDFLAGS
+CXXFLAGS
+CXX
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CXX
+CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCC
+CC
+CFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures Xestia Address Book 1.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          @<:@@S|@ac_default_prefix@:>@
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          @<:@PREFIX@:>@
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root
+                          @<:@DATAROOTDIR/doc/xestia-address-book@:>@
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of Xestia Address Book 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Some influential environment variables:
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bugs@xestia.co.uk>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+Xestia Address Book configure 1.0
+generated by GNU Autoconf 2.68
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+@%:@ ac_fn_cxx_try_compile LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_cxx_try_compile
+
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_compile
+
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_cpp
+
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_link
+
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## -------------------------------- ##
+## Report this to bugs@xestia.co.uk ##
+## -------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_header_mongrel
+
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_run
+
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_header_compile
+
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in @%:@((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+#AC_CONFIG_SRCDIR([version.h])
+#AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C++ compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+        CXXFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $@%:@ != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+  
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Checks for libraries.
+
+
+
+AM_OPTIONS_WXCONFIG
+reqwx=2.4.0
+AM_PATH_WXCONFIG($reqwx, wxWin=1)
+if test "$wxWin" != 1; then
+       as_fn_error $? "
+               wxWidgets must be installed on your system.
+               Please check that wx-config is in path, the directory
+               where wxWidgets libraries are installed (returned by
+               'wx-config --libs' or 'wx-config --static --libs' command)
+               is in LD_LIBRARY_PATH or equivalent variable and
+               wxWidgets version is $reqwx or above.
+               " "$LINENO" 5
+fi
+CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
+CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
+CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
+LIBS="$LIBS $WX_LIBS"
+
+# FIXME: Replace `main' with a function in `-lboost_filesystem':
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_filesystem" >&5
+$as_echo_n "checking for main in -lboost_filesystem... " >&6; }
+if ${ac_cv_lib_boost_filesystem_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lboost_filesystem  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_boost_filesystem_main=yes
+else
+  ac_cv_lib_boost_filesystem_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_filesystem_main" >&5
+$as_echo "$ac_cv_lib_boost_filesystem_main" >&6; }
+if test "x$ac_cv_lib_boost_filesystem_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_LIBBOOST_FILESYSTEM 1
+_ACEOF
+
+  LIBS="-lboost_filesystem $LIBS"
+
+else
+  
+       echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed!
+Please check that this library is installed property before 
+running configure again."
+       exit -1
+       
+fi
+
+# FIXME: Replace `main' with a function in `-lboost_system':
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_system" >&5
+$as_echo_n "checking for main in -lboost_system... " >&6; }
+if ${ac_cv_lib_boost_system_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lboost_system  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_boost_system_main=yes
+else
+  ac_cv_lib_boost_system_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_system_main" >&5
+$as_echo "$ac_cv_lib_boost_system_main" >&6; }
+if test "x$ac_cv_lib_boost_system_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_LIBBOOST_SYSTEM 1
+_ACEOF
+
+  LIBS="-lboost_system $LIBS"
+
+else
+  
+       echo "Error! Boost System Library (libboost_system) is not installed!
+Please check that this library is installed property before 
+running configure again."
+       exit -1
+       
+fi
+
+#AC_CHECK_PROG([WXCONFIG], [wx-config])
+
+# Checks for header files.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+fi
+
+done
+
+
+for ac_header in stdlib.h string.h wx/wx.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+fi
+
+done
+
+
+# Checks for typedefs, structures, and compiler characteristics.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdbool.h>
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+       struct s { _Bool s: 1; _Bool t; } s;
+
+       char a[true == 1 ? 1 : -1];
+       char b[false == 0 ? 1 : -1];
+       char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+       char d[(bool) 0.5 == true ? 1 : -1];
+       /* See body of main program for 'e'.  */
+       char f[(_Bool) 0.0 == false ? 1 : -1];
+       char g[true];
+       char h[sizeof (_Bool)];
+       char i[sizeof s.t];
+       enum { j = false, k = true, l = false * true, m = true * 256 };
+       /* The following fails for
+          HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+       _Bool n[m];
+       char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+       char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+       /* Catch a bug in an HP-UX C compiler.  See
+          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+        */
+       _Bool q = true;
+       _Bool *pq = &q;
+      
+int
+main ()
+{
+
+       bool e = &s;
+       *pq |= q;
+       *pq |= ! q;
+       /* Refer to every declared value, to avoid compiler optimizations.  */
+       return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+               + !m + !n + !o + !p + !q + !pq);
+      
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+if test $ac_cv_header_stdbool_h = yes; then
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+
+# Checks for library functions.
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[     `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+       g
+       s/^\n//
+       s/\n/ /g
+       p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIB@&t@OBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in @%:@(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} @%:@ as_fn_error
+
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in @%:@(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE] 
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bugs@xestia.co.uk>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+Xestia Address Book config.status 1.0
+configured by $0, generated by GNU Autoconf 2.68,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  
+  
+  
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/source/autom4te.cache/output.1 b/source/autom4te.cache/output.1
new file mode 100644 (file)
index 0000000..9e77a89
--- /dev/null
@@ -0,0 +1,5273 @@
+@%:@! /bin/sh
+@%:@ Guess values for system-dependent variables and create Makefiles.
+@%:@ Generated by GNU Autoconf 2.68 for Xestia Address Book 1.0.
+@%:@
+@%:@ Report bugs to <bugs@xestia.co.uk>.
+@%:@ 
+@%:@ 
+@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+@%:@ Foundation, Inc.
+@%:@ 
+@%:@ 
+@%:@ This configure script is free software; the Free Software Foundation
+@%:@ gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in @%:@(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+  
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+  
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in @%:@(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       # Preserve -v and -x to the replacement shell.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       case $- in @%:@ ((((
+         *v*x* | *x*v* ) as_opts=-vx ;;
+         *v* ) as_opts=-v ;;
+         *x* ) as_opts=-x ;;
+         * ) as_opts= ;;
+       esac
+       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@xestia.co.uk
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} @%:@ as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in @%:@(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIB@&t@OBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Xestia Address Book'
+PACKAGE_TARNAME='xestia-address-book'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='Xestia Address Book 1.0'
+PACKAGE_BUGREPORT='bugs@xestia.co.uk'
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIB@&t@OBJS
+EGREP
+GREP
+WX_RESCOMP
+WX_VERSION
+WX_LIBS_STATIC
+WX_LIBS
+WX_CXXFLAGS_ONLY
+WX_CFLAGS_ONLY
+WX_CXXFLAGS
+WX_CFLAGS
+WX_CPPFLAGS
+WX_CONFIG_PATH
+CPP
+ac_ct_CC
+CFLAGS
+CC
+OBJEXT
+EXEEXT
+ac_ct_CXX
+CPPFLAGS
+LDFLAGS
+CXXFLAGS
+CXX
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_wxdir
+with_wx_config
+with_wx_prefix
+with_wx_exec_prefix
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CXX
+CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCC
+CC
+CFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures Xestia Address Book 1.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          @<:@@S|@ac_default_prefix@:>@
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          @<:@PREFIX@:>@
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root
+                          @<:@DATAROOTDIR/doc/xestia-address-book@:>@
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of Xestia Address Book 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-wxdir=PATH       Use uninstalled version of wxWidgets in PATH
+  --with-wx-config=CONFIG wx-config script to use (optional)
+  --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)
+  --with-wx-exec-prefix=PREFIX
+                          Exec prefix where wxWidgets is installed (optional)
+
+Some influential environment variables:
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bugs@xestia.co.uk>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+Xestia Address Book configure 1.0
+generated by GNU Autoconf 2.68
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+@%:@ ac_fn_cxx_try_compile LINENO
+@%:@ ----------------------------
+@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_cxx_try_compile
+
+@%:@ ac_fn_c_try_compile LINENO
+@%:@ --------------------------
+@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_compile
+
+@%:@ ac_fn_c_try_cpp LINENO
+@%:@ ----------------------
+@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_cpp
+
+@%:@ ac_fn_c_try_link LINENO
+@%:@ -----------------------
+@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_link
+
+@%:@ ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists, giving a warning if it cannot be compiled using
+@%:@ the include files in INCLUDES and setting the cache variable VAR
+@%:@ accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## -------------------------------- ##
+## Report this to bugs@xestia.co.uk ##
+## -------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_header_mongrel
+
+@%:@ ac_fn_c_try_run LINENO
+@%:@ ----------------------
+@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes
+@%:@ that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} @%:@ ac_fn_c_try_run
+
+@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+@%:@ -------------------------------------------------------
+@%:@ Tests whether HEADER exists and can be compiled using the include files in
+@%:@ INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+@%:@include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_header_compile
+
+@%:@ ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+@%:@ -------------------------------------------
+@%:@ Tests whether TYPE exists after having included INCLUDES, setting cache
+@%:@ variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} @%:@ ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+@%:@define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in @%:@((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+#AC_CONFIG_SRCDIR([version.h])
+#AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C++ compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+        CXXFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $@%:@ != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+  
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+  
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@ifdef __STDC__
+@%:@ include <limits.h>
+@%:@else
+@%:@ include <assert.h>
+@%:@endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+@%:@include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Checks for libraries.
+
+
+    
+@%:@ Check whether --with-wxdir was given.
+if test "${with_wxdir+set}" = set; then :
+  withval=$with_wxdir;  wx_config_name="$withval/wx-config"
+                  wx_config_args="--inplace"
+fi
+
+    
+@%:@ Check whether --with-wx-config was given.
+if test "${with_wx_config+set}" = set; then :
+  withval=$with_wx_config; wx_config_name="$withval" 
+fi
+
+    
+@%:@ Check whether --with-wx-prefix was given.
+if test "${with_wx_prefix+set}" = set; then :
+  withval=$with_wx_prefix; wx_config_prefix="$withval"
+else
+  wx_config_prefix=""
+fi
+
+    
+@%:@ Check whether --with-wx-exec-prefix was given.
+if test "${with_wx_exec_prefix+set}" = set; then :
+  withval=$with_wx_exec_prefix; wx_config_exec_prefix="$withval"
+else
+  wx_config_exec_prefix=""
+fi
+
+
+reqwx=2.8.0
+
+    if test x${WX_CONFIG_NAME+set} != xset ; then
+     WX_CONFIG_NAME=wx-config
+  fi
+
+  if test "x$wx_config_name" != x ; then
+     WX_CONFIG_NAME="$wx_config_name"
+  fi
+
+    if test x$wx_config_exec_prefix != x ; then
+     wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
+     WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
+  fi
+  if test x$wx_config_prefix != x ; then
+     wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
+     WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
+  fi
+  if test "$cross_compiling" = "yes"; then
+     wx_config_args="$wx_config_args --host=$host_alias"
+  fi
+
+    if test -x "$WX_CONFIG_NAME" ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5
+$as_echo_n "checking for wx-config... " >&6; }
+     WX_CONFIG_PATH="$WX_CONFIG_NAME"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+  else
+     # Extract the first word of "$WX_CONFIG_NAME", so it can be a program name with args.
+set dummy $WX_CONFIG_NAME; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WX_CONFIG_PATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $WX_CONFIG_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WX_CONFIG_PATH="$WX_CONFIG_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy=""$WX_LOOKUP_PATH:$PATH""
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_WX_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_WX_CONFIG_PATH" && ac_cv_path_WX_CONFIG_PATH="no"
+  ;;
+esac
+fi
+WX_CONFIG_PATH=$ac_cv_path_WX_CONFIG_PATH
+if test -n "$WX_CONFIG_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+
+  if test "$WX_CONFIG_PATH" != "no" ; then
+    WX_VERSION=""
+
+    min_wx_version=$reqwx
+    if test -z "" ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version ()" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version ()... " >&6; }
+    fi
+
+    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args  "
+
+    WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
+    wx_config_major_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    wx_config_minor_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    wx_config_micro_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+    wx_requested_major_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    wx_requested_minor_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    wx_requested_micro_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+    
+    wx_ver_ok=""
+    if test "x$WX_VERSION" != x ; then
+      if test $wx_config_major_version -gt $wx_requested_major_version; then
+        wx_ver_ok=yes
+      else
+        if test $wx_config_major_version -eq $wx_requested_major_version; then
+           if test $wx_config_minor_version -gt $wx_requested_minor_version; then
+              wx_ver_ok=yes
+           else
+              if test $wx_config_minor_version -eq $wx_requested_minor_version; then
+                 if test $wx_config_micro_version -ge $wx_requested_micro_version; then
+                    wx_ver_ok=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+    fi
+
+
+    if test -n "$wx_ver_ok"; then
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5
+$as_echo "yes (version $WX_VERSION)" >&6; }
+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
+
+                              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5
+$as_echo_n "checking for wxWidgets static library... " >&6; }
+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
+      if test "x$WX_LIBS_STATIC" = "x"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      fi
+
+            wx_has_cppflags=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_cppflags=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -gt 2; then
+              wx_has_cppflags=yes
+           else
+              if test $wx_config_minor_version -eq 2; then
+                 if test $wx_config_micro_version -ge 6; then
+                    wx_has_cppflags=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+
+            wx_has_rescomp=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_rescomp=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -ge 7; then
+              wx_has_rescomp=yes
+           fi
+        fi
+      fi
+      if test "x$wx_has_rescomp" = x ; then
+                  WX_RESCOMP=
+      else
+         WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp`
+      fi
+
+      if test "x$wx_has_cppflags" = x ; then
+                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+         WX_CPPFLAGS=$WX_CFLAGS
+         WX_CXXFLAGS=$WX_CFLAGS
+
+         WX_CFLAGS_ONLY=$WX_CFLAGS
+         WX_CXXFLAGS_ONLY=$WX_CFLAGS
+      else
+                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+
+         WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
+         WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
+      fi
+
+      wxWin=1
+
+    else
+
+       if test "x$WX_VERSION" = x; then
+                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       else
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (version $WX_VERSION is not new enough)" >&5
+$as_echo "no (version $WX_VERSION is not new enough)" >&6; }
+       fi
+
+       WX_CFLAGS=""
+       WX_CPPFLAGS=""
+       WX_CXXFLAGS=""
+       WX_LIBS=""
+       WX_LIBS_STATIC=""
+       WX_RESCOMP=""
+       :
+
+    fi
+  else
+
+    WX_CFLAGS=""
+    WX_CPPFLAGS=""
+    WX_CXXFLAGS=""
+    WX_LIBS=""
+    WX_LIBS_STATIC=""
+    WX_RESCOMP=""
+
+    :
+
+  fi
+
+  
+  
+  
+  
+  
+  
+  
+  
+  
+
+if test "$wxWin" != 1; then
+       as_fn_error $? "
+wxWidgets must be installed on your system.
+Please check that wx-config is in path, the directory where wxWidgets libraries 
+are installed (returned by 'wx-config --libs' or 'wx-config --static --libs' 
+command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version 
+is $reqwx or above.
+               " "$LINENO" 5
+fi
+CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
+CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
+CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
+LIBS="$LIBS $WX_LIBS"
+
+# FIXME: Replace `main' with a function in `-lboost_filesystem':
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_filesystem" >&5
+$as_echo_n "checking for main in -lboost_filesystem... " >&6; }
+if ${ac_cv_lib_boost_filesystem_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lboost_filesystem  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_boost_filesystem_main=yes
+else
+  ac_cv_lib_boost_filesystem_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_filesystem_main" >&5
+$as_echo "$ac_cv_lib_boost_filesystem_main" >&6; }
+if test "x$ac_cv_lib_boost_filesystem_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_LIBBOOST_FILESYSTEM 1
+_ACEOF
+
+  LIBS="-lboost_filesystem $LIBS"
+
+else
+  
+       echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed!
+Please check that this library is installed property before 
+running configure again."
+       exit -1
+       
+fi
+
+# FIXME: Replace `main' with a function in `-lboost_system':
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_system" >&5
+$as_echo_n "checking for main in -lboost_system... " >&6; }
+if ${ac_cv_lib_boost_system_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lboost_system  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_boost_system_main=yes
+else
+  ac_cv_lib_boost_system_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_system_main" >&5
+$as_echo "$ac_cv_lib_boost_system_main" >&6; }
+if test "x$ac_cv_lib_boost_system_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define HAVE_LIBBOOST_SYSTEM 1
+_ACEOF
+
+  LIBS="-lboost_system $LIBS"
+
+else
+  
+       echo "Error! Boost System Library (libboost_system) is not installed!
+Please check that this library is installed property before 
+running configure again."
+       exit -1
+       
+fi
+
+#AC_CHECK_PROG([WXCONFIG], [wx-config])
+
+# Checks for header files.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+  
+$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+fi
+
+done
+
+
+for ac_header in stdlib.h string.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+fi
+
+done
+
+
+# Checks for typedefs, structures, and compiler characteristics.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdbool.h>
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+       struct s { _Bool s: 1; _Bool t; } s;
+
+       char a[true == 1 ? 1 : -1];
+       char b[false == 0 ? 1 : -1];
+       char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+       char d[(bool) 0.5 == true ? 1 : -1];
+       /* See body of main program for 'e'.  */
+       char f[(_Bool) 0.0 == false ? 1 : -1];
+       char g[true];
+       char h[sizeof (_Bool)];
+       char i[sizeof s.t];
+       enum { j = false, k = true, l = false * true, m = true * 256 };
+       /* The following fails for
+          HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+       _Bool n[m];
+       char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+       char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+       /* Catch a bug in an HP-UX C compiler.  See
+          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+        */
+       _Bool q = true;
+       _Bool *pq = &q;
+      
+int
+main ()
+{
+
+       bool e = &s;
+       *pq |= q;
+       *pq |= ! q;
+       /* Refer to every declared value, to avoid compiler optimizations.  */
+       return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+               + !m + !n + !o + !p + !q + !pq);
+      
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+  
+cat >>confdefs.h <<_ACEOF
+@%:@define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+if test $ac_cv_header_stdbool_h = yes; then
+  
+$as_echo "@%:@define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+
+# Checks for library functions.
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[     `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+       g
+       s/^\n//
+       s/\n/ /g
+       p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIB@&t@OBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in @%:@(
+  *posix*) :
+    set -o posix ;; @%:@(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in @%:@(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in @%:@((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD]
+@%:@ ----------------------------------------
+@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+@%:@ script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} @%:@ as_fn_error
+
+
+@%:@ as_fn_set_status STATUS
+@%:@ -----------------------
+@%:@ Set @S|@? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} @%:@ as_fn_set_status
+
+@%:@ as_fn_exit STATUS
+@%:@ -----------------
+@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} @%:@ as_fn_exit
+
+@%:@ as_fn_unset VAR
+@%:@ ---------------
+@%:@ Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+@%:@ as_fn_append VAR VALUE
+@%:@ ----------------------
+@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take
+@%:@ advantage of any shell optimizations that allow amortized linear growth over
+@%:@ repeated appends, instead of the typical quadratic growth present in naive
+@%:@ implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+@%:@ as_fn_arith ARG...
+@%:@ ------------------
+@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the
+@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments
+@%:@ must be portable across @S|@(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in @%:@(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+@%:@ as_fn_mkdir_p
+@%:@ -------------
+@%:@ Create "@S|@as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} @%:@ as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in @%:@(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in @%:@((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE] 
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bugs@xestia.co.uk>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+Xestia Address Book config.status 1.0
+configured by $0, generated by GNU Autoconf 2.68,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
+@%:@@%:@ Running $as_me. @%:@@%:@
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+  
+  
+  
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/source/autom4te.cache/requests b/source/autom4te.cache/requests
new file mode 100644 (file)
index 0000000..252e65d
--- /dev/null
@@ -0,0 +1,150 @@
+# This file was generated.
+# It contains the lists of macros which have been traced.
+# It can be safely removed.
+
+@request = (
+             bless( [
+                      '0',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        'configure.ac'
+                      ],
+                      {
+                        'AM_PROG_F77_C_O' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AC_INIT' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
+                        '_AM_COND_IF' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AC_SUBST' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AC_FC_SRCEXT' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AM_PATH_GUILE' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'AC_CHECK_HEADERS' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'm4_sinclude' => 1,
+                        'AC_PROG_CXX' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AM_NLS' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+                        '_m4_warn' => 1,
+                        'AM_MAKEFILE_INCLUDE' => 1,
+                        'AC_PREREQ' => 1,
+                        'AC_HEADER_STDBOOL' => 1,
+                        'AM_PROG_CXX_C_O' => 1,
+                        'AC_C_INLINE' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
+                        '_AM_COND_ENDIF' => 1,
+                        'AM_ENABLE_MULTILIB' => 1,
+                        'AM_PROG_MOC' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        'LT_INIT' => 1,
+                        'include' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'AM_PROG_AR' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'AM_PROG_FC_C_O' => 1,
+                        'AC_FC_FREEFORM' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'sinclude' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AM_POT_TOOLS' => 1,
+                        'm4_include' => 1,
+                        'AC_PROG_CC' => 1,
+                        '_AM_COND_ELSE' => 1,
+                        'AC_SUBST_TRACE' => 1
+                      }
+                    ], 'Autom4te::Request' ),
+             bless( [
+                      '1',
+                      1,
+                      [
+                        '/usr/share/autoconf'
+                      ],
+                      [
+                        '/usr/share/autoconf/autoconf/autoconf.m4f',
+                        'aclocal.m4',
+                        'configure.ac'
+                      ],
+                      {
+                        'AM_PROG_F77_C_O' => 1,
+                        '_LT_AC_TAGCONFIG' => 1,
+                        'm4_pattern_forbid' => 1,
+                        'AC_INIT' => 1,
+                        'AC_CANONICAL_TARGET' => 1,
+                        '_AM_COND_IF' => 1,
+                        'AC_CONFIG_LIBOBJ_DIR' => 1,
+                        'AC_SUBST' => 1,
+                        'AC_CANONICAL_HOST' => 1,
+                        'AC_FC_SRCEXT' => 1,
+                        'AC_PROG_LIBTOOL' => 1,
+                        'AM_INIT_AUTOMAKE' => 1,
+                        'AC_CONFIG_SUBDIRS' => 1,
+                        'AM_PATH_GUILE' => 1,
+                        'AM_AUTOMAKE_VERSION' => 1,
+                        'LT_CONFIG_LTDL_DIR' => 1,
+                        'AC_CONFIG_LINKS' => 1,
+                        'AC_REQUIRE_AUX_FILE' => 1,
+                        'LT_SUPPORTED_TAG' => 1,
+                        'm4_sinclude' => 1,
+                        'AM_MAINTAINER_MODE' => 1,
+                        'AM_NLS' => 1,
+                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
+                        '_m4_warn' => 1,
+                        'AM_MAKEFILE_INCLUDE' => 1,
+                        'AM_PROG_CXX_C_O' => 1,
+                        '_AM_MAKEFILE_INCLUDE' => 1,
+                        '_AM_COND_ENDIF' => 1,
+                        'AM_ENABLE_MULTILIB' => 1,
+                        'AM_SILENT_RULES' => 1,
+                        'AM_PROG_MOC' => 1,
+                        'AC_CONFIG_FILES' => 1,
+                        'LT_INIT' => 1,
+                        'include' => 1,
+                        'AM_GNU_GETTEXT' => 1,
+                        'AM_PROG_AR' => 1,
+                        'AC_LIBSOURCE' => 1,
+                        'AC_CANONICAL_BUILD' => 1,
+                        'AM_PROG_FC_C_O' => 1,
+                        'AC_FC_FREEFORM' => 1,
+                        'AH_OUTPUT' => 1,
+                        'AC_CONFIG_AUX_DIR' => 1,
+                        '_AM_SUBST_NOTMAKE' => 1,
+                        'm4_pattern_allow' => 1,
+                        'AM_PROG_CC_C_O' => 1,
+                        'sinclude' => 1,
+                        'AM_CONDITIONAL' => 1,
+                        'AC_CANONICAL_SYSTEM' => 1,
+                        'AM_XGETTEXT_OPTION' => 1,
+                        'AC_CONFIG_HEADERS' => 1,
+                        'AC_DEFINE_TRACE_LITERAL' => 1,
+                        'AM_POT_TOOLS' => 1,
+                        'm4_include' => 1,
+                        '_AM_COND_ELSE' => 1,
+                        'AC_SUBST_TRACE' => 1
+                      }
+                    ], 'Autom4te::Request' )
+           );
+
diff --git a/source/autom4te.cache/traces.0 b/source/autom4te.cache/traces.0
new file mode 100644 (file)
index 0000000..f34757b
--- /dev/null
@@ -0,0 +1,294 @@
+m4trace:configure.ac:4: -1- AC_PREREQ([2.68])
+m4trace:configure.ac:5: -1- AC_INIT([Xestia Address Book], [1.0], [bugs@xestia.co.uk])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:5: -1- AC_SUBST([SHELL])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+                                    ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+                                    ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:5: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:5: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:5: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.ac:5: -1- AC_SUBST([DEFS])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:5: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:5: -1- AC_SUBST([build_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:5: -1- AC_SUBST([host_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:5: -1- AC_SUBST([target_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:10: -1- AC_PROG_CXX
+m4trace:configure.ac:10: -1- AC_SUBST([CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([CXXFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXXFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:11: -1- AC_PROG_CC
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:11: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPP])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPP])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:37: -1- AH_OUTPUT([HAVE_LIBBOOST_FILESYSTEM], [/* Define to 1 if you have the `boost_filesystem\' library
+   (-lboost_filesystem). */
+@%:@undef HAVE_LIBBOOST_FILESYSTEM])
+m4trace:configure.ac:37: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_FILESYSTEM])
+m4trace:configure.ac:37: -1- m4_pattern_allow([^HAVE_LIBBOOST_FILESYSTEM$])
+m4trace:configure.ac:44: -1- AH_OUTPUT([HAVE_LIBBOOST_SYSTEM], [/* Define to 1 if you have the `boost_system\' library (-lboost_system). */
+@%:@undef HAVE_LIBBOOST_SYSTEM])
+m4trace:configure.ac:44: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_SYSTEM])
+m4trace:configure.ac:44: -1- m4_pattern_allow([^HAVE_LIBBOOST_SYSTEM$])
+m4trace:configure.ac:53: -1- AC_CHECK_HEADERS([stdlib.h string.h wx/wx.h])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_WX_WX_H], [/* Define to 1 if you have the <wx/wx.h> header file. */
+@%:@undef HAVE_WX_WX_H])
+m4trace:configure.ac:53: -1- AC_SUBST([GREP])
+m4trace:configure.ac:53: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:53: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:53: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:53: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:53: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:53: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:53: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:53: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.ac:53: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+@%:@undef HAVE_SYS_TYPES_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:53: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.ac:56: -1- AC_HEADER_STDBOOL
+m4trace:configure.ac:56: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
+m4trace:configure.ac:56: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:56: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
+@%:@undef HAVE__BOOL])
+m4trace:configure.ac:56: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H])
+m4trace:configure.ac:56: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:56: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */
+@%:@undef HAVE_STDBOOL_H])
+m4trace:configure.ac:57: -1- AC_C_INLINE
+m4trace:configure.ac:57: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
+   calls it, or to nothing if \'inline\' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif])
+m4trace:configure.ac:61: -1- AC_CONFIG_FILES([Makefile])
+m4trace:configure.ac:62: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:62: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:62: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:62: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:62: -1- AC_SUBST_TRACE([abs_top_builddir])
diff --git a/source/autom4te.cache/traces.0t b/source/autom4te.cache/traces.0t
new file mode 100644 (file)
index 0000000..e5d59c9
--- /dev/null
@@ -0,0 +1,295 @@
+m4trace:configure.ac:4: -1- AC_PREREQ([2.68])
+m4trace:configure.ac:5: -1- AC_INIT([Xestia Address Book], [1.0], [bugs@xestia.co.uk])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:5: -1- AC_SUBST([SHELL])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+                                    ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+                                    ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:5: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:5: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:5: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.ac:5: -1- AC_SUBST([DEFS])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:5: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:5: -1- AC_SUBST([build_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:5: -1- AC_SUBST([host_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:5: -1- AC_SUBST([target_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:10: -1- AC_PROG_CXX
+m4trace:configure.ac:10: -1- AC_SUBST([CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([CXXFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXXFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:11: -1- AC_PROG_CC
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:11: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPP])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPP])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:16: -1- m4_include([wxwin.m4])
+m4trace:configure.ac:39: -1- AH_OUTPUT([HAVE_LIBBOOST_FILESYSTEM], [/* Define to 1 if you have the `boost_filesystem\' library
+   (-lboost_filesystem). */
+@%:@undef HAVE_LIBBOOST_FILESYSTEM])
+m4trace:configure.ac:39: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_FILESYSTEM])
+m4trace:configure.ac:39: -1- m4_pattern_allow([^HAVE_LIBBOOST_FILESYSTEM$])
+m4trace:configure.ac:46: -1- AH_OUTPUT([HAVE_LIBBOOST_SYSTEM], [/* Define to 1 if you have the `boost_system\' library (-lboost_system). */
+@%:@undef HAVE_LIBBOOST_SYSTEM])
+m4trace:configure.ac:46: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_SYSTEM])
+m4trace:configure.ac:46: -1- m4_pattern_allow([^HAVE_LIBBOOST_SYSTEM$])
+m4trace:configure.ac:55: -1- AC_CHECK_HEADERS([stdlib.h string.h wx/wx.h])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_WX_WX_H], [/* Define to 1 if you have the <wx/wx.h> header file. */
+@%:@undef HAVE_WX_WX_H])
+m4trace:configure.ac:55: -1- AC_SUBST([GREP])
+m4trace:configure.ac:55: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:55: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:55: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:55: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.ac:55: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+@%:@undef HAVE_SYS_TYPES_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.ac:58: -1- AC_HEADER_STDBOOL
+m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
+m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
+@%:@undef HAVE__BOOL])
+m4trace:configure.ac:58: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H])
+m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:58: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */
+@%:@undef HAVE_STDBOOL_H])
+m4trace:configure.ac:59: -1- AC_C_INLINE
+m4trace:configure.ac:59: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
+   calls it, or to nothing if \'inline\' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif])
+m4trace:configure.ac:63: -1- AC_CONFIG_FILES([Makefile])
+m4trace:configure.ac:64: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:64: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:64: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:64: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:64: -1- AC_SUBST_TRACE([abs_top_builddir])
diff --git a/source/autom4te.cache/traces.1 b/source/autom4te.cache/traces.1
new file mode 100644 (file)
index 0000000..db0d25a
--- /dev/null
@@ -0,0 +1,314 @@
+m4trace:configure.ac:5: -1- AC_INIT([Xestia Address Book], [1.0], [bugs@xestia.co.uk])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([_AC_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^AS_FLAGS$])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?m4_])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^dnl$])
+m4trace:configure.ac:5: -1- m4_pattern_forbid([^_?AS_])
+m4trace:configure.ac:5: -1- AC_SUBST([SHELL])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SHELL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^SHELL$])
+m4trace:configure.ac:5: -1- AC_SUBST([PATH_SEPARATOR])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PATH_SEPARATOR$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_NAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_STRING])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL],       ['AC_PACKAGE_URL'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE_URL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:5: -1- AC_SUBST([exec_prefix], [NONE])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([exec_prefix])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^exec_prefix$])
+m4trace:configure.ac:5: -1- AC_SUBST([prefix], [NONE])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([prefix])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^prefix$])
+m4trace:configure.ac:5: -1- AC_SUBST([program_transform_name], [s,x,x,])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([program_transform_name])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^program_transform_name$])
+m4trace:configure.ac:5: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([bindir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^bindir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sbindir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sbindir$])
+m4trace:configure.ac:5: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libexecdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^libexecdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datarootdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^datarootdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([datadir], ['${datarootdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([datadir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^datadir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sysconfdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sysconfdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([sharedstatedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^sharedstatedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localstatedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^localstatedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([includedir], ['${prefix}/include'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([includedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^includedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([oldincludedir], ['/usr/include'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([oldincludedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^oldincludedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
+                                    ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
+                                    ['${datarootdir}/doc/${PACKAGE}'])])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([docdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^docdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([infodir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^infodir$])
+m4trace:configure.ac:5: -1- AC_SUBST([htmldir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([htmldir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^htmldir$])
+m4trace:configure.ac:5: -1- AC_SUBST([dvidir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([dvidir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^dvidir$])
+m4trace:configure.ac:5: -1- AC_SUBST([pdfdir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([pdfdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^pdfdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([psdir], ['${docdir}'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([psdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^psdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([libdir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^libdir$])
+m4trace:configure.ac:5: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([localedir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^localedir$])
+m4trace:configure.ac:5: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mandir])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^mandir$])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_NAME$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
+@%:@undef PACKAGE_NAME])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
+@%:@undef PACKAGE_TARNAME])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_VERSION$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
+@%:@undef PACKAGE_VERSION])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_STRING$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
+@%:@undef PACKAGE_STRING])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
+@%:@undef PACKAGE_BUGREPORT])
+m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE_URL$])
+m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */
+@%:@undef PACKAGE_URL])
+m4trace:configure.ac:5: -1- AC_SUBST([DEFS])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([DEFS])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^DEFS$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_C])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_C])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_C$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_N])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_N])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_N$])
+m4trace:configure.ac:5: -1- AC_SUBST([ECHO_T])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ECHO_T])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^ECHO_T$])
+m4trace:configure.ac:5: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:5: -1- AC_SUBST([build_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([build_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^build_alias$])
+m4trace:configure.ac:5: -1- AC_SUBST([host_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([host_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^host_alias$])
+m4trace:configure.ac:5: -1- AC_SUBST([target_alias])
+m4trace:configure.ac:5: -1- AC_SUBST_TRACE([target_alias])
+m4trace:configure.ac:5: -1- m4_pattern_allow([^target_alias$])
+m4trace:configure.ac:10: -1- AC_SUBST([CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([CXXFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXXFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXXFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:10: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:10: -1- AC_SUBST([CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([ac_ct_CXX])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([ac_ct_CXX])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^ac_ct_CXX$])
+m4trace:configure.ac:10: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([EXEEXT])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^EXEEXT$])
+m4trace:configure.ac:10: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
+m4trace:configure.ac:10: -1- AC_SUBST_TRACE([OBJEXT])
+m4trace:configure.ac:10: -1- m4_pattern_allow([^OBJEXT$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([LDFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LDFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^LDFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([LIBS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([LIBS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^LIBS$])
+m4trace:configure.ac:11: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^CC$])
+m4trace:configure.ac:11: -1- AC_SUBST([ac_ct_CC])
+m4trace:configure.ac:11: -1- AC_SUBST_TRACE([ac_ct_CC])
+m4trace:configure.ac:11: -1- m4_pattern_allow([^ac_ct_CC$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPP])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPPFLAGS])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPPFLAGS])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPPFLAGS$])
+m4trace:configure.ac:12: -1- AC_SUBST([CPP])
+m4trace:configure.ac:12: -1- AC_SUBST_TRACE([CPP])
+m4trace:configure.ac:12: -1- m4_pattern_allow([^CPP$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_CONFIG_PATH])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CONFIG_PATH])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CONFIG_PATH$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_CPPFLAGS])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CPPFLAGS])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CPPFLAGS$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_CFLAGS])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CFLAGS])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CFLAGS$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_CXXFLAGS])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CXXFLAGS])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CXXFLAGS$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_CFLAGS_ONLY])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CFLAGS_ONLY])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CFLAGS_ONLY$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_CXXFLAGS_ONLY])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_CXXFLAGS_ONLY])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_CXXFLAGS_ONLY$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_LIBS])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_LIBS])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_LIBS$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_LIBS_STATIC])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_LIBS_STATIC])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_LIBS_STATIC$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_VERSION])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_VERSION])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_VERSION$])
+m4trace:configure.ac:18: -1- AC_SUBST([WX_RESCOMP])
+m4trace:configure.ac:18: -1- AC_SUBST_TRACE([WX_RESCOMP])
+m4trace:configure.ac:18: -1- m4_pattern_allow([^WX_RESCOMP$])
+m4trace:configure.ac:36: -1- AH_OUTPUT([HAVE_LIBBOOST_FILESYSTEM], [/* Define to 1 if you have the `boost_filesystem\' library
+   (-lboost_filesystem). */
+@%:@undef HAVE_LIBBOOST_FILESYSTEM])
+m4trace:configure.ac:36: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_FILESYSTEM])
+m4trace:configure.ac:36: -1- m4_pattern_allow([^HAVE_LIBBOOST_FILESYSTEM$])
+m4trace:configure.ac:43: -1- AH_OUTPUT([HAVE_LIBBOOST_SYSTEM], [/* Define to 1 if you have the `boost_system\' library (-lboost_system). */
+@%:@undef HAVE_LIBBOOST_SYSTEM])
+m4trace:configure.ac:43: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBBOOST_SYSTEM])
+m4trace:configure.ac:43: -1- m4_pattern_allow([^HAVE_LIBBOOST_SYSTEM$])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:52: -1- AC_SUBST([GREP])
+m4trace:configure.ac:52: -1- AC_SUBST_TRACE([GREP])
+m4trace:configure.ac:52: -1- m4_pattern_allow([^GREP$])
+m4trace:configure.ac:52: -1- AC_SUBST([EGREP])
+m4trace:configure.ac:52: -1- AC_SUBST_TRACE([EGREP])
+m4trace:configure.ac:52: -1- m4_pattern_allow([^EGREP$])
+m4trace:configure.ac:52: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
+m4trace:configure.ac:52: -1- m4_pattern_allow([^STDC_HEADERS$])
+m4trace:configure.ac:52: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
+@%:@undef STDC_HEADERS])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
+@%:@undef HAVE_SYS_TYPES_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
+@%:@undef HAVE_SYS_STAT_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
+@%:@undef HAVE_STDLIB_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
+@%:@undef HAVE_STRING_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
+@%:@undef HAVE_MEMORY_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
+@%:@undef HAVE_STRINGS_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
+@%:@undef HAVE_INTTYPES_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
+@%:@undef HAVE_STDINT_H])
+m4trace:configure.ac:52: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
+@%:@undef HAVE_UNISTD_H])
+m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([HAVE__BOOL])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^HAVE__BOOL$])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE__BOOL], [/* Define to 1 if the system has the type `_Bool\'. */
+@%:@undef HAVE__BOOL])
+m4trace:configure.ac:55: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STDBOOL_H])
+m4trace:configure.ac:55: -1- m4_pattern_allow([^HAVE_STDBOOL_H$])
+m4trace:configure.ac:55: -1- AH_OUTPUT([HAVE_STDBOOL_H], [/* Define to 1 if stdbool.h conforms to C99. */
+@%:@undef HAVE_STDBOOL_H])
+m4trace:configure.ac:56: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
+   calls it, or to nothing if \'inline\' is not supported under any name.  */
+#ifndef __cplusplus
+#undef inline
+#endif])
+m4trace:configure.ac:60: -1- AC_CONFIG_FILES([Makefile])
+m4trace:configure.ac:61: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
+m4trace:configure.ac:61: -1- m4_pattern_allow([^LIB@&t@OBJS$])
+m4trace:configure.ac:61: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([LTLIBOBJS])
+m4trace:configure.ac:61: -1- m4_pattern_allow([^LTLIBOBJS$])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([top_builddir])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([top_build_prefix])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([srcdir])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([abs_srcdir])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([top_srcdir])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([abs_top_srcdir])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([builddir])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([abs_builddir])
+m4trace:configure.ac:61: -1- AC_SUBST_TRACE([abs_top_builddir])
diff --git a/source/autoscan.log b/source/autoscan.log
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/source/bitmapcode.helper b/source/bitmapcode.helper
new file mode 100644 (file)
index 0000000..0ac0a4a
Binary files /dev/null and b/source/bitmapcode.helper differ
diff --git a/source/bitmaps.h b/source/bitmaps.h
new file mode 100644 (file)
index 0000000..7ed82d5
--- /dev/null
@@ -0,0 +1,11 @@
+#include <iostream>
+
+#ifndef BITMAPS_H
+#define BITMAPS_H
+
+#include "bitmaps/misc.h"
+#include "bitmaps/bigimgs.h"
+#include "bitmaps/buttons.h"
+#include "bitmaps/icons.h"
+
+#endif
diff --git a/source/bitmaps/bigimgs.h b/source/bitmaps/bigimgs.h
new file mode 100644 (file)
index 0000000..86b10b4
--- /dev/null
@@ -0,0 +1,17 @@
+#include <iostream>
+
+#ifndef BIGIMGS_H
+#define BIGIMGS_H
+
+// List all CPP files in the directory.
+
+#include "bigimgs/contactpersonicon48.cpp"
+#include "bigimgs/appicon48.cpp"
+#include "bigimgs/appicon64.cpp"
+#include "bigimgs/contactpersonicon.cpp"
+#include "bigimgs/contactpersonicon64.cpp"
+#include "bigimgs/appicon.cpp"
+#include "bigimgs/aboutimage.cpp"
+
+#endif
+
diff --git a/source/bitmaps/bigimgs/.exportest.cpp.kate-swp b/source/bitmaps/bigimgs/.exportest.cpp.kate-swp
new file mode 100644 (file)
index 0000000..ad1b946
Binary files /dev/null and b/source/bitmaps/bigimgs/.exportest.cpp.kate-swp differ
diff --git a/source/bitmaps/bigimgs/aboutimage.cpp b/source/bitmaps/bigimgs/aboutimage.cpp
new file mode 100644 (file)
index 0000000..f86c69f
--- /dev/null
@@ -0,0 +1,1409 @@
+#include <iostream>
+
+#ifndef BIGIMGS_ABOUTIMAGE_CPP
+#define BIGIMGS_ABOUTIMAGE_CPP
+
+static unsigned char bigimgs_aboutimage_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x01, 0x5e, 0x00, 0x00, 0x00, 0x64, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xce, 0xbd, 0x58, 
+0x65, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x20, 0x00, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xed, 0x9d, 0x77, 
+0x78, 0x15, 0x45, 0xf7, 0xc7, 0xbf, 0xb7, 0xa4, 
+0xdc, 0xf4, 0xde, 0x7b, 0x4f, 0x08, 0x9d, 0x00, 
+0x09, 0x04, 0xa4, 0x63, 0x28, 0xd2, 0x55, 0x50, 
+0x78, 0x29, 0x2a, 0xc5, 0xde, 0xcb, 0x8b, 0x62, 
+0x79, 0x05, 0x01, 0x29, 0xbe, 0xa2, 0x28, 0x28, 
+0x0a, 0x48, 0x93, 0xde, 0x9b, 0xa1, 0x05, 0x42, 
+0x20, 0x24, 0x21, 0x21, 0x05, 0xd2, 0x7b, 0xef, 
+0xfd, 0xde, 0xdc, 0xdd, 0xdf, 0x1f, 0x97, 0xdc, 
+0x64, 0x33, 0xbb, 0xc9, 0x4d, 0x80, 0xfb, 0xfa, 
+0x7b, 0x9c, 0x0f, 0xcf, 0x3e, 0x9a, 0xdd, 0xd9, 
+0xb3, 0xb3, 0x33, 0xb3, 0x67, 0x66, 0xce, 0x39, 
+0x33, 0x57, 0xf4, 0xd3, 0x90, 0x38, 0x16, 0x14, 
+0x0a, 0x85, 0x42, 0xd1, 0x1a, 0xe2, 0xff, 0x75, 
+0x06, 0x28, 0x14, 0x0a, 0xe5, 0x9f, 0x06, 0x55, 
+0xbc, 0x14, 0x0a, 0x85, 0xa2, 0x65, 0xa8, 0xe2, 
+0xa5, 0x50, 0x28, 0x14, 0x2d, 0x43, 0x15, 0x2f, 
+0x85, 0x42, 0xa1, 0x68, 0x19, 0x29, 0x40, 0x7d, 
+0x6b, 0x14, 0x0a, 0x85, 0xa2, 0x4d, 0xa4, 0x0c, 
+0x4b, 0x15, 0x2f, 0x85, 0x42, 0xa1, 0x68, 0x13, 
+0x29, 0x0b, 0xe6, 0x7f, 0x9d, 0x07, 0x0a, 0x85, 
+0x42, 0xf9, 0x47, 0x41, 0x47, 0xbc, 0x14, 0x0a, 
+0x85, 0xa2, 0x65, 0xa4, 0x2c, 0x4b, 0x47, 0xbc, 
+0x14, 0x0a, 0x85, 0xa2, 0x4d, 0xa4, 0x2c, 0x75, 
+0xae, 0x51, 0x28, 0x14, 0x8a, 0x56, 0x91, 0x32, 
+0x74, 0xc4, 0x4b, 0xa1, 0x50, 0x28, 0x5a, 0x45, 
+0xca, 0x52, 0x1b, 0x2f, 0x85, 0x42, 0xa1, 0x68, 
+0x15, 0x29, 0x43, 0xa3, 0x1a, 0x28, 0x14, 0x0a, 
+0x45, 0xab, 0x50, 0xe7, 0x1a, 0x85, 0x42, 0xa1, 
+0x68, 0x19, 0xea, 0x5c, 0xa3, 0x50, 0x28, 0x14, 
+0x2d, 0x43, 0x9d, 0x6b, 0x14, 0x0a, 0x85, 0xa2, 
+0x65, 0xa8, 0x73, 0x8d, 0x42, 0xa1, 0x50, 0xb4, 
+0x0c, 0x75, 0xae, 0x51, 0x28, 0x14, 0x8a, 0x96, 
+0xa1, 0x23, 0x5e, 0x0a, 0x85, 0x42, 0xd1, 0x32, 
+0x34, 0xaa, 0x81, 0x42, 0xa1, 0x50, 0xb4, 0x8c, 
+0x94, 0xa1, 0x51, 0x0d, 0x14, 0x0a, 0x85, 0xa2, 
+0x55, 0xe8, 0x88, 0x97, 0x42, 0xa1, 0x50, 0xb4, 
+0x0c, 0x8d, 0xe3, 0xa5, 0x50, 0x28, 0x14, 0x2d, 
+0x43, 0xe3, 0x78, 0x29, 0x14, 0x0a, 0x45, 0xcb, 
+0x50, 0x53, 0x03, 0x85, 0x42, 0xa1, 0x68, 0x19, 
+0xea, 0x5c, 0xa3, 0x50, 0x28, 0x14, 0x2d, 0x43, 
+0x47, 0xbc, 0x14, 0x0a, 0x85, 0xa2, 0x65, 0xa8, 
+0x73, 0x8d, 0x42, 0xa1, 0x50, 0xb4, 0x0c, 0x75, 
+0xae, 0x51, 0x28, 0x14, 0x8a, 0x96, 0xa1, 0x4b, 
+0x86, 0x29, 0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x4d, 
+0x72, 0x28, 0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x11, 
+0xef, 0x63, 0x46, 0xaa, 0x27, 0x41, 0x4b, 0xb3, 
+0xf2, 0x7f, 0x9d, 0x8d, 0xbf, 0x3d, 0xb6, 0x5e, 
+0xa6, 0x08, 0x7e, 0xce, 0x0b, 0x65, 0xd9, 0xb5, 
+0x88, 0x3e, 0x92, 0x89, 0xa6, 0x3a, 0xc5, 0x23, 
+0xcb, 0x34, 0xb6, 0xd2, 0xc7, 0xd0, 0x39, 0x5e, 
+0x90, 0xea, 0x89, 0x11, 0xb9, 0x3f, 0x0d, 0x55, 
+0x05, 0x0d, 0x8f, 0x21, 0xa7, 0x94, 0x7f, 0x0a, 
+0x62, 0x89, 0x08, 0xbd, 0xc7, 0x3b, 0xc3, 0x67, 
+0x98, 0x1d, 0x62, 0x4f, 0x64, 0x23, 0x2d, 0xaa, 
+0xf8, 0x89, 0x3d, 0x4b, 0xf4, 0xb6, 0xf7, 0x6e, 
+0xaa, 0x79, 0x1f, 0x03, 0xc3, 0xe6, 0xf9, 0x60, 
+0xd8, 0x0b, 0x3e, 0x30, 0xb5, 0x35, 0x40, 0xf4, 
+0x91, 0x0c, 0xfc, 0xb5, 0x35, 0x11, 0x35, 0xa5, 
+0x8d, 0xff, 0xeb, 0x6c, 0xfd, 0x2d, 0xf1, 0x18, 
+0x64, 0x83, 0x15, 0x7b, 0xc6, 0xa9, 0xff, 0xae, 
+0xc8, 0xab, 0xc3, 0xd7, 0x63, 0x8e, 0xe1, 0x51, 
+0xc6, 0x00, 0x7a, 0x06, 0x52, 0xac, 0x8a, 0x9c, 
+0x09, 0x5d, 0x99, 0x14, 0x00, 0xc0, 0x28, 0x59, 
+0x7c, 0x3d, 0xe6, 0x18, 0x2a, 0x0b, 0xea, 0x1f, 
+0x35, 0xbb, 0x94, 0x7f, 0x08, 0x2f, 0x6c, 0x1c, 
+0x8e, 0xfe, 0x93, 0x5c, 0xd5, 0x7f, 0x9f, 0x58, 
+0x13, 0x83, 0xcb, 0xbf, 0x26, 0x3f, 0x91, 0x67, 
+0xf5, 0xc8, 0xd4, 0x60, 0xe7, 0x65, 0x8a, 0xc1, 
+0x33, 0xbd, 0x60, 0xe7, 0x6d, 0x8a, 0xb8, 0xd3, 
+0xd9, 0xb8, 0x75, 0x38, 0x5d, 0xa3, 0xfb, 0x6c, 
+0x3c, 0x4c, 0xf1, 0xd4, 0x22, 0x7f, 0x18, 0x5b, 
+0xe8, 0x23, 0xfa, 0x78, 0x26, 0xee, 0x5d, 0xcc, 
+0x85, 0xb2, 0xe5, 0xff, 0x87, 0xa9, 0x43, 0x24, 
+0x16, 0x81, 0x65, 0xf8, 0x35, 0x83, 0xe7, 0x60, 
+0x5b, 0xcc, 0xf8, 0x2c, 0x48, 0xfd, 0xf7, 0xf0, 
+0x17, 0x7d, 0x21, 0xd5, 0x97, 0x60, 0xff, 0x27, 
+0x91, 0xda, 0xca, 0x5e, 0x8f, 0xd1, 0x33, 0xd4, 
+0xc1, 0xa0, 0x67, 0xdc, 0x11, 0x34, 0xdd, 0x13, 
+0xe6, 0x0e, 0x86, 0x88, 0x3d, 0x99, 0x85, 0xa8, 
+0x43, 0x69, 0x28, 0x7c, 0x50, 0xf5, 0xc4, 0x9e, 
+0xd9, 0x7f, 0x8a, 0x2b, 0xe7, 0x6f, 0x0b, 0x27, 
+0x23, 0xb8, 0xf4, 0xb7, 0x44, 0x66, 0x4c, 0x69, 
+0x8f, 0x65, 0xf6, 0x1a, 0xe7, 0xa4, 0x56, 0xba, 
+0x80, 0x6a, 0xf4, 0xd2, 0x77, 0x92, 0x0b, 0xc2, 
+0xb7, 0x25, 0xf6, 0x58, 0xe6, 0x3f, 0x15, 0x91, 
+0x58, 0x04, 0x8f, 0x41, 0x36, 0xf0, 0x1f, 0xe1, 
+0x08, 0x1d, 0x3d, 0x09, 0x6f, 0x1a, 0x65, 0x0b, 
+0x83, 0xb2, 0xec, 0x5a, 0x14, 0xa7, 0x57, 0x23, 
+0xf7, 0x5e, 0x39, 0xe4, 0x8d, 0x2d, 0x5a, 0xce, 
+0xe5, 0xe3, 0x45, 0x57, 0x26, 0x45, 0xaf, 0xd1, 
+0x8e, 0x9c, 0x73, 0x03, 0xa6, 0xba, 0x21, 0xfc, 
+0xd7, 0x27, 0xd3, 0x7e, 0xba, 0x6d, 0x6a, 0xd0, 
+0x37, 0xd2, 0xc1, 0x5b, 0x87, 0xc2, 0xd4, 0x8d, 
+0xdc, 0x7f, 0x84, 0x23, 0xac, 0x5c, 0x8c, 0x71, 
+0x6a, 0x63, 0x6c, 0xa7, 0xf7, 0xd9, 0x79, 0x9b, 
+0xe1, 0xb5, 0x3d, 0x13, 0x60, 0x68, 0xa6, 0x07, 
+0x00, 0x08, 0x1c, 0xeb, 0x8c, 0xa3, 0x5f, 0x47, 
+0xe3, 0xf2, 0x8e, 0xa4, 0x9e, 0xe5, 0x5c, 0x4b, 
+0x98, 0xd9, 0x1b, 0x62, 0xc2, 0x8a, 0x3e, 0xe8, 
+0x3f, 0xc9, 0x0d, 0xf7, 0x23, 0x0a, 0x70, 0x6e, 
+0x4b, 0x3c, 0x0a, 0x52, 0x2a, 0x39, 0x69, 0x42, 
+0x5f, 0xf4, 0x25, 0xee, 0x1b, 0x38, 0xd5, 0x1d, 
+0xc7, 0xd6, 0x44, 0xa3, 0xb1, 0x46, 0xae, 0xad, 
+0xac, 0xf6, 0x88, 0xf9, 0x1b, 0x43, 0x11, 0xf0, 
+0x54, 0x5b, 0x83, 0x1b, 0xb9, 0xd0, 0x1f, 0x43, 
+0xe7, 0x78, 0xe1, 0x9b, 0x49, 0x27, 0x50, 0x91, 
+0x5f, 0xf7, 0x44, 0x9e, 0xe9, 0x39, 0xc4, 0x96, 
+0x3c, 0x37, 0xd8, 0x16, 0x19, 0x77, 0x4a, 0x7a, 
+0x2e, 0x73, 0x30, 0x29, 0xd3, 0x6b, 0xb0, 0x2d, 
+0xfe, 0xfa, 0xf9, 0x5e, 0x8f, 0x65, 0xfe, 0x53, 
+0x79, 0xeb, 0xc0, 0xd3, 0x70, 0xe9, 0x63, 0xa5, 
+0x71, 0xfa, 0x9a, 0xd2, 0x46, 0x1c, 0xfd, 0xfa, 
+0x36, 0x62, 0x4e, 0x66, 0x3d, 0xb9, 0x4c, 0x3d, 
+0x61, 0x1c, 0x03, 0xcc, 0x39, 0x1d, 0xb7, 0xea, 
+0x9c, 0x05, 0xf4, 0x0c, 0xa5, 0x8f, 0xc5, 0x0c, 
+0xd6, 0x91, 0x6e, 0x8f, 0x78, 0xfb, 0x4f, 0x76, 
+0x23, 0x32, 0x38, 0x6e, 0x79, 0x6f, 0xa4, 0xdd, 
+0x29, 0x42, 0xf2, 0xd5, 0x7c, 0xfe, 0x87, 0xe8, 
+0x4a, 0xb0, 0x60, 0x53, 0xa8, 0x5a, 0xe9, 0xb6, 
+0x32, 0x6c, 0xae, 0x0f, 0xc2, 0x77, 0xfc, 0xbd, 
+0x3f, 0x8c, 0xb1, 0xcb, 0x02, 0x11, 0xfc, 0xac, 
+0x37, 0x00, 0xa0, 0xef, 0x44, 0x57, 0x18, 0x98, 
+0xe9, 0xe1, 0xbf, 0x2f, 0x9e, 0xe5, 0xa4, 0x29, 
+0x4e, 0xaf, 0x26, 0xee, 0xab, 0x2d, 0x6b, 0x44, 
+0x43, 0x5d, 0x33, 0xfe, 0xce, 0x71, 0xd2, 0xc3, 
+0xe7, 0xfa, 0x71, 0x94, 0x6e, 0x2b, 0x7a, 0x86, 
+0x3a, 0x78, 0x7e, 0x4d, 0x08, 0xbe, 0x9f, 0x7f, 
+0xf6, 0x91, 0xa6, 0xff, 0x42, 0x88, 0xc5, 0x22, 
+0xe2, 0x9c, 0x48, 0x0c, 0x3c, 0x8a, 0xa3, 0x57, 
+0xc4, 0x37, 0x30, 0x7b, 0x44, 0x99, 0xff, 0x44, 
+0x3c, 0x06, 0xda, 0x74, 0x4b, 0xe9, 0x02, 0x80, 
+0x89, 0xb5, 0x0c, 0xf3, 0x37, 0x8e, 0x80, 0x77, 
+0xb0, 0x1d, 0xf6, 0x7e, 0x72, 0xe3, 0x09, 0xe5, 
+0xec, 0xc9, 0xc2, 0x8a, 0x04, 0x1a, 0xba, 0x84, 
+0x7d, 0x22, 0x6d, 0xa8, 0xdb, 0x23, 0xde, 0xe6, 
+0x06, 0x7e, 0xed, 0x3f, 0x6f, 0xcd, 0x70, 0xac, 
+0x9e, 0x74, 0x14, 0x75, 0x15, 0x4d, 0xc4, 0xb5, 
+0xa9, 0xef, 0x0d, 0x84, 0xbd, 0x8f, 0x39, 0xaf, 
+0xac, 0xbf, 0xb3, 0x73, 0x4f, 0x2c, 0x11, 0xa3, 
+0xdf, 0x44, 0xee, 0xb4, 0xd8, 0x6b, 0xb0, 0x2d, 
+0x8c, 0xad, 0x65, 0xa8, 0x29, 0x69, 0x73, 0xdc, 
+0x44, 0xec, 0x4d, 0xc1, 0xd8, 0x57, 0x02, 0x21, 
+0x96, 0x88, 0xd5, 0xe7, 0xae, 0xef, 0xbb, 0x0f, 
+0x46, 0xf9, 0xf7, 0xfd, 0xe8, 0xa5, 0xba, 0x12, 
+0x4c, 0x79, 0x67, 0x80, 0xe0, 0x75, 0xef, 0xa1, 
+0x76, 0xf0, 0x1f, 0xe1, 0x88, 0xc4, 0xcb, 0x79, 
+0x5a, 0xc9, 0x0f, 0x0b, 0x3c, 0x5a, 0x5b, 0x10, 
+0xb8, 0xf7, 0xef, 0xdc, 0xbe, 0xfe, 0x8e, 0xf8, 
+0x0d, 0x77, 0xe8, 0xf1, 0xbd, 0xc1, 0x73, 0x7c, 
+0x90, 0x76, 0xab, 0x08, 0xb7, 0x8e, 0x6a, 0x66, 
+0x7a, 0xfc, 0x5b, 0x21, 0xd0, 0x4c, 0x58, 0x96, 
+0x7d, 0x22, 0x6d, 0xa8, 0xdb, 0x4b, 0x86, 0xe3, 
+0x2f, 0x64, 0xa1, 0xae, 0x72, 0x30, 0x8c, 0xcc, 
+0xf5, 0x39, 0xe7, 0x4d, 0xac, 0x65, 0x98, 0xfb, 
+0xf5, 0x30, 0xfc, 0xf4, 0xca, 0x05, 0xce, 0x79, 
+0xff, 0x50, 0x47, 0x8c, 0x5c, 0x10, 0xc0, 0x2b, 
+0xeb, 0xda, 0x1f, 0x29, 0xf8, 0x3b, 0x2f, 0x59, 
+0x96, 0x19, 0xeb, 0x12, 0xef, 0x29, 0x12, 0x8b, 
+0x60, 0xe9, 0x64, 0x88, 0xea, 0xe2, 0xb6, 0x69, 
+0x78, 0x45, 0x41, 0x2d, 0xbe, 0x18, 0x73, 0x10, 
+0xa3, 0x16, 0x05, 0xc2, 0xc6, 0xcd, 0x04, 0x97, 
+0x7f, 0x4f, 0x42, 0xd2, 0x95, 0xdc, 0x27, 0x32, 
+0x5a, 0x7c, 0x5c, 0x04, 0x8e, 0x71, 0x85, 0xcc, 
+0x44, 0xb7, 0xd3, 0x34, 0x83, 0x9e, 0xf1, 0xc0, 
+0xbd, 0x4b, 0x39, 0xda, 0xc9, 0x10, 0xcb, 0x3e, 
+0x52, 0x5b, 0xe0, 0x2d, 0xea, 0x47, 0x94, 0xf9, 
+0x4f, 0x44, 0x44, 0x4e, 0x46, 0xba, 0xc5, 0xac, 
+0xcf, 0x86, 0xe2, 0xf6, 0xf1, 0x34, 0x30, 0xca, 
+0xbf, 0x71, 0xe3, 0xe7, 0x81, 0x15, 0x18, 0xd5, 
+0xb2, 0x4f, 0xa8, 0x0d, 0x75, 0x7b, 0x93, 0x9c, 
+0x86, 0x7a, 0x39, 0x76, 0xbe, 0x77, 0x05, 0xcb, 
+0xb6, 0x4d, 0x20, 0x2a, 0xa9, 0xf7, 0x58, 0x17, 
+0x84, 0x3c, 0xe7, 0x8b, 0x88, 0x7d, 0x29, 0x00, 
+0x00, 0x43, 0x33, 0x3d, 0xbc, 0xb0, 0x76, 0x04, 
+0x6f, 0x65, 0x26, 0x5e, 0xc9, 0x45, 0xc4, 0xfe, 
+0xe4, 0xbf, 0xf1, 0x44, 0x1c, 0x10, 0x2a, 0x1b, 
+0x16, 0x2c, 0x71, 0xad, 0x24, 0xb7, 0x06, 0xfb, 
+0x3f, 0xff, 0xff, 0x33, 0xcd, 0x1a, 0x32, 0xc3, 
+0x9b, 0x38, 0xa7, 0x68, 0x6a, 0x81, 0x8e, 0x7e, 
+0x9b, 0x19, 0xa9, 0xcf, 0x58, 0x57, 0xe8, 0x1a, 
+0x4a, 0xd1, 0x54, 0xff, 0x78, 0x6d, 0x5c, 0x7c, 
+0xe6, 0x17, 0xbe, 0x32, 0xed, 0xae, 0x54, 0xbe, 
+0x33, 0x74, 0x13, 0xa8, 0xee, 0x21, 0x54, 0x5a, 
+0xbf, 0xbc, 0x1e, 0x8e, 0x16, 0xb9, 0x2a, 0x4c, 
+0xd2, 0xd1, 0xcf, 0x02, 0x7d, 0xc7, 0xbb, 0xc1, 
+0x39, 0xc0, 0x92, 0x48, 0x27, 0x33, 0xd6, 0x85, 
+0xb5, 0xbb, 0x09, 0x0a, 0xd3, 0x9e, 0x9c, 0x73, 
+0xf6, 0x49, 0x20, 0xd4, 0x4e, 0x98, 0x47, 0x6e, 
+0x97, 0xfc, 0xf4, 0x68, 0x93, 0x9c, 0x84, 0xf0, 
+0x6c, 0xfc, 0xf5, 0x6b, 0x3c, 0xc6, 0x2e, 0xee, 
+0x43, 0x5c, 0x9b, 0xf5, 0xef, 0xa1, 0x78, 0x70, 
+0x33, 0x1f, 0xc5, 0x99, 0xd5, 0x98, 0xf7, 0x75, 
+0x28, 0x4c, 0x6d, 0x0c, 0x88, 0x34, 0xd5, 0xc5, 
+0x0d, 0xf8, 0xed, 0xed, 0x4b, 0x60, 0x18, 0xcd, 
+0x9e, 0x2d, 0x12, 0x01, 0x76, 0x5e, 0xe6, 0xb0, 
+0x71, 0x37, 0x45, 0x6e, 0x62, 0x59, 0x8f, 0x9d, 
+0x3e, 0xba, 0x32, 0x29, 0x6c, 0x3d, 0xcc, 0x60, 
+0xed, 0x6a, 0x82, 0xc6, 0x1a, 0x39, 0x2a, 0xf2, 
+0x6b, 0x51, 0x92, 0x55, 0x2d, 0x38, 0x32, 0x15, 
+0x2a, 0x1b, 0xa1, 0x5e, 0x50, 0x24, 0x02, 0x74, 
+0x65, 0x3a, 0x82, 0xe6, 0x18, 0x3e, 0x64, 0x26, 
+0xba, 0xf0, 0x18, 0x60, 0x8b, 0xe6, 0x7a, 0x05, 
+0x72, 0x13, 0xcb, 0xd0, 0xdc, 0x40, 0x7a, 0x87, 
+0x8d, 0xcc, 0xf5, 0x51, 0x57, 0x49, 0x9a, 0x70, 
+0x7a, 0x8a, 0xb1, 0xa5, 0x0c, 0x01, 0x23, 0xb8, 
+0xb6, 0xdd, 0x8a, 0x82, 0x3a, 0xdc, 0x3d, 0x9f, 
+0x85, 0x51, 0xff, 0x0a, 0x54, 0x9f, 0xd3, 0x95, 
+0x49, 0xd1, 0x77, 0x82, 0x2b, 0x6e, 0x1e, 0x7a, 
+0xd0, 0x2d, 0xf9, 0x22, 0xb1, 0x08, 0x0e, 0xde, 
+0xe6, 0xb0, 0x74, 0x32, 0x06, 0x00, 0x14, 0x3c, 
+0xa8, 0x40, 0x79, 0x5e, 0x6d, 0xa7, 0x33, 0x00, 
+0x16, 0x5d, 0x8f, 0x2c, 0xac, 0x5c, 0x4c, 0x60, 
+0xed, 0x62, 0x02, 0x99, 0xb1, 0x2e, 0x0a, 0xd3, 
+0x2a, 0x51, 0x92, 0x59, 0xad, 0x8e, 0x8a, 0xe9, 
+0x4e, 0x1d, 0x1a, 0x9a, 0xeb, 0xa3, 0x9e, 0xa7, 
+0x3c, 0x0d, 0x4c, 0xf5, 0xd0, 0x58, 0xd3, 0xac, 
+0xd1, 0x4c, 0xc5, 0xd6, 0xdd, 0x14, 0xf6, 0x3e, 
+0xe6, 0xc8, 0x4f, 0xa9, 0x40, 0x69, 0x76, 0x4d, 
+0xd7, 0x37, 0xf0, 0xa0, 0xa3, 0x27, 0x81, 0x8d, 
+0xbb, 0x29, 0x6c, 0xdd, 0xcd, 0xd0, 0xdc, 0xa0, 
+0x40, 0x79, 0x7e, 0x2d, 0x8a, 0x33, 0xaa, 0x05, 
+0xa3, 0x67, 0x3a, 0x22, 0x33, 0xd1, 0x85, 0xbd, 
+0x97, 0x39, 0x2c, 0x1c, 0x8c, 0x50, 0x53, 0xd6, 
+0x88, 0xb2, 0x9c, 0x1a, 0x54, 0x14, 0x3c, 0x9a, 
+0x43, 0x54, 0xc8, 0x27, 0x91, 0x10, 0x9e, 0xa5, 
+0x6e, 0x9b, 0x71, 0xe7, 0x33, 0x71, 0xea, 0xbb, 
+0x3b, 0x98, 0xf3, 0x59, 0x08, 0x46, 0x2d, 0x08, 
+0x24, 0xd2, 0x3a, 0x07, 0x5a, 0xa2, 0x20, 0xb5, 
+0x42, 0xa3, 0xe7, 0x89, 0xc4, 0x22, 0x38, 0xfa, 
+0x5a, 0xc0, 0xd2, 0xd9, 0x18, 0x39, 0xf1, 0xa5, 
+0xa8, 0x2c, 0x7a, 0xf4, 0xf0, 0x3f, 0x99, 0xb1, 
+0x2e, 0xdc, 0xfb, 0xdb, 0x40, 0xd1, 0xa4, 0x44, 
+0x56, 0x7c, 0x29, 0x14, 0x4d, 0x1a, 0x44, 0x5c, 
+0x08, 0x9a, 0xaa, 0x18, 0xc1, 0x76, 0x29, 0x96, 
+0x88, 0xa0, 0x67, 0xa8, 0xd3, 0x23, 0x07, 0x7a, 
+0x8f, 0x77, 0x27, 0x3b, 0xb2, 0xe6, 0x26, 0xbc, 
+0x82, 0xec, 0xe0, 0xd6, 0xc7, 0x86, 0x73, 0x5e, 
+0x57, 0x26, 0xc5, 0xc2, 0x4d, 0xa3, 0x71, 0x7d, 
+0x7f, 0x32, 0xfa, 0x4d, 0x70, 0x23, 0xee, 0x63, 
+0x19, 0x16, 0xbf, 0xbc, 0x79, 0x11, 0xb5, 0x15, 
+0x5d, 0x07, 0xb7, 0x87, 0x3e, 0x1f, 0x80, 0xbe, 
+0xe3, 0xdd, 0xe0, 0x31, 0xc0, 0x16, 0x06, 0x26, 
+0x6d, 0x8e, 0xb9, 0xaa, 0xa2, 0x7a, 0xa4, 0xdf, 
+0x29, 0x42, 0xf4, 0xc9, 0x34, 0xc4, 0x9e, 0xcd, 
+0xec, 0x52, 0x8e, 0xf7, 0x60, 0x7b, 0x4c, 0xff, 
+0x60, 0x28, 0xdc, 0xfb, 0xdb, 0x12, 0xa3, 0xef, 
+0xca, 0xa2, 0x7a, 0xc4, 0x9d, 0xcb, 0xc4, 0xd9, 
+0x1f, 0x62, 0x50, 0xfd, 0xd0, 0x6e, 0x3b, 0xf2, 
+0x85, 0x5e, 0x18, 0x36, 0xc7, 0x0f, 0xe6, 0x0e, 
+0x46, 0xbc, 0xf2, 0x96, 0x6d, 0x9b, 0x80, 0x16, 
+0xb9, 0x12, 0x39, 0xf7, 0x4a, 0x71, 0xf5, 0x8f, 
+0x24, 0x24, 0x84, 0x67, 0x23, 0x64, 0x8e, 0x1f, 
+0x9e, 0x5e, 0xde, 0x1f, 0xa6, 0x36, 0x86, 0xb8, 
+0x75, 0x2c, 0x15, 0x87, 0x57, 0xdf, 0x44, 0x43, 
+0x4d, 0x33, 0xef, 0xfd, 0x3a, 0xfa, 0x52, 0x4c, 
+0x79, 0x73, 0x10, 0x7a, 0x8d, 0x74, 0x86, 0x83, 
+0x8f, 0x05, 0x44, 0x0f, 0x9d, 0x4d, 0x8c, 0x92, 
+0x45, 0x4e, 0x62, 0x29, 0x7e, 0x7f, 0xf7, 0x12, 
+0x0a, 0x53, 0x2b, 0xe1, 0xde, 0xcf, 0x06, 0xcf, 
+0x7f, 0x39, 0x02, 0x2e, 0x81, 0x56, 0xa8, 0x2a, 
+0xaa, 0xc7, 0x4f, 0xcb, 0xcf, 0x23, 0x33, 0xf6, 
+0xd1, 0x83, 0xba, 0x83, 0xa6, 0x7a, 0x72, 0xec, 
+0xd1, 0x00, 0x10, 0x7b, 0x26, 0x03, 0x71, 0xe7, 
+0x33, 0x39, 0x8a, 0x17, 0x00, 0x06, 0x4f, 0xf3, 
+0x42, 0xe4, 0xc1, 0x14, 0x8d, 0xe4, 0x8a, 0xc4, 
+0x22, 0x4c, 0x58, 0xda, 0x0f, 0x23, 0x5f, 0xe8, 
+0x05, 0x73, 0x7b, 0x6e, 0xd9, 0x35, 0xd5, 0xc9, 
+0x71, 0x71, 0x7b, 0x3c, 0xce, 0xfd, 0x14, 0xc7, 
+0x7f, 0x73, 0x27, 0x53, 0xba, 0x81, 0x61, 0x9e, 
+0x98, 0xb0, 0xac, 0x3f, 0x5c, 0x02, 0xb9, 0x4e, 
+0x1f, 0x65, 0x0b, 0x83, 0xe8, 0x13, 0x69, 0x38, 
+0xbc, 0xe6, 0x26, 0xf8, 0xc7, 0x6a, 0x5c, 0x99, 
+0x03, 0xc3, 0x3c, 0x11, 0xf6, 0xda, 0x00, 0x38, 
+0xfa, 0x59, 0xa2, 0x34, 0xbb, 0x1a, 0xc7, 0xbe, 
+0xbd, 0x8d, 0xe8, 0x13, 0x69, 0x18, 0x32, 0xcd, 
+0x07, 0x63, 0x97, 0xf4, 0x81, 0x53, 0x80, 0x15, 
+0xca, 0x73, 0x6b, 0x70, 0x7a, 0x4b, 0x0c, 0x6e, 
+0x1c, 0x20, 0xdf, 0x79, 0xf0, 0x34, 0x6f, 0x0c, 
+0x9a, 0xe4, 0x09, 0x8f, 0x81, 0x76, 0x1c, 0x13, 
+0x54, 0x6d, 0x79, 0x23, 0xd2, 0xa3, 0x8b, 0x10, 
+0x7b, 0x2e, 0x13, 0x51, 0x47, 0xba, 0xee, 0xa4, 
+0x5c, 0x7b, 0x5b, 0x63, 0xc6, 0x87, 0x43, 0xe1, 
+0x33, 0xd4, 0x41, 0x5d, 0xf7, 0xad, 0xd4, 0x94, 
+0x35, 0xe2, 0xee, 0x85, 0x4c, 0x9c, 0xdb, 0x1a, 
+0x87, 0xb2, 0x1c, 0x52, 0xa1, 0x8b, 0x44, 0xc0, 
+0xc0, 0x49, 0x9e, 0x98, 0xf2, 0x56, 0x10, 0x6c, 
+0x3d, 0xcc, 0x88, 0xeb, 0x45, 0x69, 0x95, 0xb8, 
+0x73, 0x3a, 0x03, 0xe7, 0x7f, 0x8a, 0xe5, 0xed, 
+0xc4, 0xbb, 0xa4, 0x1b, 0x0a, 0x28, 0x62, 0x6f, 
+0x12, 0xaf, 0xe2, 0x6d, 0xac, 0x6d, 0xee, 0xb4, 
+0x13, 0x15, 0x4b, 0x44, 0x18, 0xb3, 0xa8, 0x0f, 
+0x02, 0x46, 0x3a, 0xc3, 0xbd, 0x9f, 0x2d, 0xf4, 
+0x0d, 0x75, 0xd4, 0xd7, 0x2a, 0x8b, 0xea, 0x91, 
+0x71, 0xa7, 0x08, 0xd7, 0xf7, 0xa7, 0x20, 0xe9, 
+0x5a, 0xae, 0xc6, 0xd9, 0xb6, 0x76, 0x35, 0xc5, 
+0x84, 0xa5, 0xfd, 0xe0, 0x31, 0xc0, 0x16, 0xf6, 
+0xde, 0x16, 0xea, 0xef, 0x5c, 0xd9, 0xc2, 0x20, 
+0x37, 0xa9, 0x0c, 0xe9, 0xb7, 0x8b, 0x70, 0x66, 
+0x4b, 0x8c, 0xe0, 0x00, 0x46, 0x78, 0x90, 0xc5, 
+0xaf, 0x78, 0x47, 0xbe, 0xd0, 0x0b, 0xd3, 0xde, 
+0x1f, 0x02, 0x1d, 0x3d, 0x09, 0xae, 0xef, 0x4f, 
+0xc1, 0xbe, 0x55, 0x11, 0x1a, 0x77, 0x98, 0x00, 
+0x20, 0x7a, 0xc9, 0xed, 0x87, 0x1e, 0x8f, 0xa3, 
+0xad, 0x5d, 0x4c, 0xb0, 0xf2, 0xd4, 0x6c, 0xe8, 
+0x1b, 0x75, 0x6e, 0x2b, 0x6c, 0xcf, 0x89, 0xcd, 
+0xd1, 0x38, 0xb1, 0xe9, 0x76, 0xa7, 0x69, 0x0c, 
+0x4c, 0xf5, 0xb0, 0x70, 0xfd, 0x68, 0xf4, 0x1d, 
+0xeb, 0xd6, 0xa5, 0xbc, 0x6b, 0xfb, 0x92, 0xb0, 
+0x6f, 0x55, 0x04, 0x14, 0x02, 0xab, 0xc5, 0x16, 
+0xae, 0x1f, 0x8d, 0xe0, 0x99, 0x64, 0xb8, 0x57, 
+0x47, 0x6a, 0x2b, 0x1a, 0xb1, 0xed, 0xf5, 0x8b, 
+0x90, 0x37, 0x28, 0xf0, 0xe1, 0xe1, 0x19, 0x5d, 
+0xa6, 0x6f, 0xa5, 0xba, 0xa4, 0x01, 0xab, 0x26, 
+0xec, 0xc3, 0xda, 0x9b, 0x0b, 0x38, 0x31, 0x8f, 
+0x7f, 0xfc, 0xfb, 0x2a, 0xae, 0xfc, 0x41, 0xc6, 
+0x00, 0xda, 0xb8, 0x9a, 0x62, 0xe9, 0xd6, 0x09, 
+0x70, 0xf2, 0x23, 0xa7, 0x69, 0xad, 0x34, 0xd5, 
+0xc9, 0xb1, 0xed, 0x8d, 0x8b, 0x98, 0xfc, 0xfa, 
+0x20, 0xb8, 0xf7, 0x6d, 0xeb, 0xd8, 0x1e, 0x44, 
+0x15, 0x60, 0xfd, 0x73, 0xc7, 0x34, 0xce, 0x9b, 
+0x10, 0x2b, 0x4f, 0xcd, 0x86, 0x73, 0x00, 0x57, 
+0x89, 0xad, 0x99, 0x79, 0x18, 0x99, 0x71, 0x25, 
+0x58, 0x7f, 0x6b, 0x01, 0x8c, 0x2d, 0x65, 0xea, 
+0xf3, 0x2c, 0xc3, 0xe2, 0x83, 0x90, 0x5d, 0xa8, 
+0x2a, 0xee, 0x7c, 0x24, 0xa2, 0xa3, 0x27, 0xc1, 
+0x92, 0xcd, 0xe3, 0xd0, 0x7f, 0x82, 0x7b, 0xa7, 
+0xe9, 0xca, 0xf3, 0x6a, 0x61, 0x60, 0xaa, 0x07, 
+0x99, 0x31, 0xb7, 0xcd, 0x1c, 0xdb, 0x70, 0x0b, 
+0xa7, 0xfe, 0x7b, 0x87, 0x48, 0x1f, 0xf6, 0xea, 
+0x40, 0x4c, 0x7b, 0x67, 0x70, 0xa7, 0x32, 0x9b, 
+0xea, 0x15, 0xa8, 0x2d, 0x6f, 0x84, 0xb5, 0x8b, 
+0x09, 0xe7, 0x7c, 0xe2, 0xd5, 0x5c, 0x6c, 0x5e, 
+0x70, 0x12, 0x00, 0x60, 0x6a, 0x63, 0x80, 0x35, 
+0xd7, 0x5f, 0x84, 0x44, 0xda, 0xd6, 0xe1, 0x54, 
+0x97, 0x34, 0xe0, 0xc8, 0xba, 0x28, 0x2c, 0x58, 
+0x3b, 0x8a, 0xd3, 0x21, 0xb3, 0x0c, 0x8b, 0x95, 
+0x63, 0xf6, 0xa2, 0x24, 0x4b, 0x15, 0xad, 0xa2, 
+0x67, 0xa0, 0x83, 0x79, 0x5f, 0x8d, 0xc0, 0xd0, 
+0xe9, 0x3e, 0x9d, 0xe6, 0x03, 0x00, 0xa2, 0x4f, 
+0xa5, 0x63, 0xe7, 0x07, 0x97, 0x04, 0xcd, 0x33, 
+0xb3, 0x3f, 0x09, 0xc1, 0xd8, 0xc5, 0x7d, 0xbb, 
+0xb4, 0xa5, 0x36, 0xd5, 0xc9, 0xb1, 0xe3, 0xdd, 
+0x70, 0xc4, 0x9e, 0x6b, 0x1b, 0x58, 0xe8, 0xca, 
+0xa4, 0x78, 0x73, 0xe7, 0x64, 0x78, 0x0d, 0xb2, 
+0xef, 0x32, 0x1f, 0x45, 0xe9, 0x55, 0xf8, 0xe1, 
+0x95, 0x33, 0x28, 0x4a, 0xef, 0xde, 0x94, 0x7f, 
+0xda, 0x3b, 0x83, 0x11, 0xf6, 0xea, 0x40, 0xe2, 
+0xfc, 0x6b, 0xbd, 0xb6, 0x13, 0x33, 0xb9, 0xde, 
+0xa3, 0x5c, 0xf0, 0xda, 0xaf, 0x93, 0x38, 0xe7, 
+0x58, 0x16, 0x78, 0x7b, 0xc0, 0xaf, 0xa8, 0xaf, 
+0xe2, 0x1f, 0x74, 0x98, 0xda, 0x18, 0xe0, 0xa5, 
+0xef, 0xc6, 0xc1, 0x67, 0x48, 0xe7, 0x4e, 0x3c, 
+0x96, 0x05, 0xce, 0xfc, 0x10, 0x83, 0xe3, 0x1b, 
+0x6f, 0x75, 0x69, 0x2f, 0x1e, 0xf0, 0xb4, 0x07, 
+0xfe, 0xb5, 0x76, 0x54, 0x97, 0x7a, 0xa8, 0xb2, 
+0xa8, 0x0e, 0x3f, 0xad, 0x38, 0x8f, 0x8c, 0x18, 
+0x72, 0xf0, 0xe2, 0x3d, 0xd8, 0x01, 0xef, 0xed, 
+0x7f, 0x86, 0x38, 0xff, 0x66, 0xbf, 0x5f, 0xd1, 
+0x50, 0xdd, 0xf6, 0x2e, 0x22, 0x11, 0x30, 0xef, 
+0x3f, 0x23, 0x31, 0xe2, 0x79, 0xae, 0xdf, 0x6a, 
+0xf3, 0x82, 0x93, 0x48, 0xbc, 0xaa, 0x79, 0x47, 
+0x21, 0x6e, 0xd5, 0xe8, 0x3d, 0x39, 0x4a, 0xb2, 
+0xab, 0xf0, 0xfb, 0x87, 0x97, 0x34, 0x7e, 0xd8, 
+0x83, 0xa8, 0x02, 0x9c, 0xd8, 0x7c, 0xab, 0x53, 
+0x99, 0xce, 0xbd, 0x2c, 0xb1, 0xf2, 0xd4, 0x6c, 
+0x8d, 0x94, 0x2e, 0x00, 0x84, 0x3e, 0x17, 0x80, 
+0x0f, 0x8f, 0xcc, 0x80, 0x95, 0xb3, 0x11, 0x21, 
+0x6b, 0xfc, 0x4b, 0x7d, 0x35, 0x52, 0xba, 0x00, 
+0x60, 0x6c, 0x21, 0xc3, 0xfc, 0xd5, 0x23, 0xe1, 
+0x3f, 0x9c, 0x0c, 0xaf, 0xea, 0x0c, 0x53, 0x1b, 
+0x03, 0x8c, 0x98, 0x1b, 0x40, 0x04, 0x9a, 0x07, 
+0x4d, 0xf1, 0x22, 0xf2, 0xe3, 0x3d, 0xd8, 0x0e, 
+0x9f, 0x9c, 0x98, 0xd5, 0xa9, 0xd2, 0x05, 0x00, 
+0x7d, 0x23, 0x5d, 0xbc, 0xf6, 0x4b, 0x18, 0x47, 
+0xe9, 0x02, 0x80, 0x9d, 0xa7, 0x59, 0x8f, 0xeb, 
+0xaa, 0xf5, 0x70, 0xf0, 0x35, 0x27, 0x94, 0x6e, 
+0x55, 0x51, 0x3d, 0x32, 0x62, 0x0a, 0xc1, 0x28, 
+0x95, 0x88, 0x3b, 0xcf, 0x9d, 0x41, 0x88, 0xc4, 
+0x22, 0x0c, 0x9e, 0x4a, 0xbe, 0x4b, 0xfb, 0x43, 
+0x66, 0xa2, 0x83, 0xb7, 0x76, 0x4d, 0xe9, 0x52, 
+0xe9, 0x02, 0x80, 0xa5, 0x93, 0x31, 0xa1, 0x74, 
+0x55, 0xb0, 0x1c, 0x99, 0x10, 0xb1, 0x98, 0xfb, 
+0x65, 0x68, 0x97, 0x4a, 0x17, 0x00, 0xf4, 0x0d, 
+0x75, 0x08, 0xa5, 0xdb, 0x51, 0xa6, 0x4b, 0xa0, 
+0x15, 0x47, 0xe9, 0x02, 0xaa, 0xba, 0xeb, 0xa8, 
+0x74, 0x5b, 0xdf, 0xd9, 0xb9, 0x97, 0x25, 0x58, 
+0x96, 0x81, 0xad, 0xbb, 0x09, 0x3e, 0x3e, 0x36, 
+0x53, 0x23, 0xa5, 0x0b, 0x00, 0x83, 0x26, 0x79, 
+0xe2, 0xdf, 0x27, 0x67, 0xc3, 0xc1, 0xd7, 0x9c, 
+0x28, 0xa7, 0xe0, 0x19, 0x3e, 0x18, 0xb7, 0xa4, 
+0x6b, 0xa5, 0x0b, 0xa8, 0xda, 0xc0, 0x8b, 0xab, 
+0x9f, 0x82, 0x54, 0x57, 0xa4, 0xbe, 0x7f, 0xde, 
+0x97, 0x23, 0x34, 0x52, 0xba, 0x80, 0xaa, 0xad, 
+0xcc, 0xfa, 0x28, 0xb8, 0xfb, 0x6d, 0x44, 0xc8, 
+0xaf, 0xc1, 0x93, 0x36, 0x64, 0x96, 0x1f, 0x91, 
+0x2e, 0xff, 0x7e, 0x39, 0xea, 0x2a, 0x1b, 0x79, 
+0xd3, 0x7b, 0x05, 0xd9, 0x61, 0xe5, 0xa9, 0xd9, 
+0x5d, 0x2a, 0x5d, 0x40, 0xa5, 0xe0, 0xc2, 0x56, 
+0x0c, 0xc0, 0x5b, 0xbb, 0xa7, 0xc0, 0xd0, 0x5c, 
+0x97, 0x57, 0x1e, 0xc0, 0x60, 0xce, 0xca, 0x10, 
+0x2c, 0xfd, 0x61, 0x82, 0x46, 0x83, 0x3f, 0x73, 
+0x3b, 0x23, 0xbc, 0xb7, 0x7f, 0x1a, 0x46, 0xff, 
+0x2b, 0x90, 0x94, 0xd5, 0xc5, 0x88, 0x97, 0x65, 
+0x19, 0x88, 0xc4, 0x2c, 0x16, 0xac, 0x1b, 0x45, 
+0x28, 0x5d, 0x00, 0x70, 0xef, 0x6f, 0xd3, 0xad, 
+0x72, 0x16, 0xb7, 0x1a, 0x8f, 0x7b, 0x7a, 0xdc, 
+0x3a, 0x99, 0x8a, 0x2b, 0x7b, 0xba, 0x5e, 0xdd, 
+0x51, 0x57, 0xd1, 0x84, 0x9f, 0x5e, 0x3f, 0x07, 
+0x25, 0xc3, 0x08, 0xca, 0x92, 0xe8, 0x89, 0xb1, 
+0xf4, 0x87, 0x89, 0xb0, 0x74, 0x34, 0xee, 0x52, 
+0x5e, 0x7b, 0x9c, 0xfd, 0xad, 0xf0, 0xf2, 0xf7, 
+0x13, 0xc0, 0x8a, 0xdb, 0x8c, 0xe1, 0x26, 0xb6, 
+0x06, 0x98, 0xf1, 0xfe, 0xd0, 0x6e, 0xc9, 0xb1, 
+0x72, 0x36, 0x41, 0x61, 0x46, 0x65, 0xd7, 0x09, 
+0xdb, 0x51, 0x90, 0x5a, 0xc1, 0xdb, 0x54, 0xcd, 
+0xed, 0x8d, 0x38, 0xef, 0x26, 0xd6, 0x11, 0x63, 
+0xc1, 0xda, 0xd1, 0x02, 0x4a, 0x47, 0x33, 0x4c, 
+0xac, 0x0c, 0x20, 0xd6, 0x15, 0x3f, 0x52, 0x7d, 
+0x05, 0xcf, 0x20, 0x3b, 0xa2, 0xe8, 0x33, 0x69, 
+0x50, 0xb2, 0xaa, 0xeb, 0xd1, 0x67, 0xd3, 0x88, 
+0xeb, 0x43, 0xa6, 0xfb, 0x74, 0x2a, 0x73, 0xe6, 
+0x87, 0xc1, 0xf0, 0x0a, 0xd2, 0x4c, 0x21, 0x08, 
+0xd1, 0xea, 0x08, 0x6b, 0x3d, 0x86, 0x4c, 0xf7, 
+0xc1, 0x53, 0x2f, 0x90, 0xd3, 0xd8, 0x9e, 0xca, 
+0x94, 0xe8, 0x8a, 0x79, 0xd3, 0xf0, 0x29, 0x41, 
+0x46, 0xc9, 0x22, 0xef, 0x7e, 0x39, 0x58, 0x31, 
+0xb0, 0xe4, 0xbb, 0xf1, 0xb0, 0xf7, 0x22, 0x43, 
+0x21, 0x3b, 0xc3, 0xc6, 0xcd, 0x14, 0xcb, 0x7e, 
+0x9c, 0xc8, 0xa9, 0x2b, 0x1d, 0x03, 0x29, 0xe6, 
+0x7d, 0x35, 0xb2, 0x5b, 0x72, 0x8c, 0xcc, 0xf5, 
+0xe1, 0xd6, 0xdf, 0x16, 0x0c, 0x58, 0xf8, 0x86, 
+0x38, 0x6a, 0x3c, 0x88, 0x68, 0x25, 0x60, 0x84, 
+0x33, 0x44, 0x52, 0x51, 0xb7, 0xda, 0x87, 0xd0, 
+0xd8, 0xd2, 0xda, 0xdd, 0x14, 0xb6, 0x9e, 0x66, 
+0xb0, 0xf5, 0x34, 0x43, 0xd0, 0x33, 0xde, 0x78, 
+0x75, 0x7b, 0x18, 0xfa, 0x4f, 0xf0, 0xe0, 0xa4, 
+0x91, 0x37, 0xb6, 0xe0, 0xe8, 0x86, 0x28, 0x5e, 
+0xb9, 0x7a, 0xc6, 0x3a, 0x58, 0xfa, 0xc3, 0x04, 
+0x98, 0x58, 0x91, 0x3e, 0x9f, 0xce, 0xf0, 0x1d, 
+0xea, 0x88, 0xe7, 0x3e, 0x0b, 0xe5, 0x6f, 0xcb, 
+0xb3, 0xfd, 0x31, 0x76, 0x51, 0xdf, 0x6e, 0xc9, 
+0x93, 0x48, 0xc5, 0x78, 0xf6, 0xd3, 0x50, 0x78, 
+0x0c, 0xb2, 0x23, 0xe4, 0xf1, 0xa1, 0xbe, 0x26, 
+0x15, 0x61, 0xf1, 0xa6, 0x71, 0x08, 0x99, 0x49, 
+0x76, 0x36, 0x4c, 0x0b, 0x83, 0xf8, 0x4b, 0x59, 
+0xdd, 0x2a, 0xe7, 0xc7, 0xf2, 0x0b, 0x14, 0x7b, 
+0x3f, 0xbf, 0x02, 0xaf, 0x81, 0x76, 0x70, 0xf4, 
+0xe5, 0x1f, 0xc9, 0xb1, 0x2c, 0xb0, 0xfd, 0xed, 
+0xf3, 0xa8, 0x2c, 0xaa, 0xed, 0x54, 0xce, 0xc4, 
+0x57, 0x06, 0x11, 0x23, 0x17, 0x96, 0x05, 0x2e, 
+0xed, 0x8a, 0x47, 0xd4, 0xf1, 0x07, 0x28, 0xcb, 
+0xab, 0x81, 0xbd, 0xa7, 0x39, 0x46, 0x3e, 0x1f, 
+0x88, 0xa0, 0xc9, 0x5c, 0xaf, 0xbc, 0x5b, 0x1f, 
+0x1b, 0x8c, 0x7a, 0x21, 0x10, 0x7f, 0xfd, 0x7e, 
+0x17, 0x00, 0xe0, 0xd1, 0xcf, 0x06, 0xe2, 0x0e, 
+0x23, 0x1c, 0x46, 0xc9, 0xe2, 0xcc, 0xd6, 0x3b, 
+0x28, 0x4c, 0xab, 0x40, 0xc0, 0x70, 0x67, 0x04, 
+0x3e, 0xe5, 0x06, 0x93, 0x76, 0xd3, 0xea, 0xf2, 
+0xfc, 0x5a, 0xdc, 0x3e, 0xf9, 0x00, 0xf2, 0x46, 
+0x05, 0x86, 0x4c, 0xf5, 0x85, 0xa5, 0x93, 0x31, 
+0xbc, 0x06, 0x92, 0x0a, 0x25, 0x27, 0xb1, 0x14, 
+0xf5, 0xd5, 0xcd, 0x48, 0xbf, 0x53, 0x88, 0xc8, 
+0x23, 0x29, 0x18, 0xf8, 0xb4, 0x17, 0xdf, 0x5b, 
+0x73, 0x6c, 0x43, 0x63, 0x16, 0xf6, 0x83, 0x8d, 
+0xab, 0x29, 0x99, 0x8a, 0x61, 0x91, 0x93, 0x54, 
+0x8a, 0xcc, 0xbb, 0x25, 0x70, 0xf4, 0xb1, 0x80, 
+0x47, 0x7f, 0x3b, 0x62, 0x64, 0xd6, 0x1e, 0x91, 
+0xa8, 0xe7, 0xe1, 0x2d, 0x62, 0x89, 0x08, 0x43, 
+0xa7, 0x91, 0x23, 0xb7, 0xdb, 0xa7, 0x52, 0xd5, 
+0x32, 0x93, 0x22, 0x72, 0xd0, 0x58, 0x2b, 0xe7, 
+0x74, 0x10, 0xce, 0xfe, 0x56, 0x70, 0xf4, 0x35, 
+0x47, 0x5e, 0x4a, 0x39, 0x71, 0xaf, 0x99, 0xad, 
+0x21, 0xef, 0xc8, 0x07, 0x00, 0x6a, 0xca, 0x1a, 
+0x90, 0x7c, 0x23, 0x0f, 0x60, 0x01, 0x9f, 0x21, 
+0x0e, 0x30, 0xb7, 0xe3, 0xb7, 0x99, 0x03, 0x5c, 
+0x87, 0xa5, 0x48, 0x04, 0x84, 0x2d, 0xe3, 0x8f, 
+0x31, 0x6e, 0xae, 0x57, 0xe0, 0xc1, 0xed, 0x02, 
+0x54, 0x16, 0xd5, 0xc1, 0x6b, 0xa0, 0x3d, 0x1c, 
+0xbc, 0x2d, 0x84, 0x5f, 0xb8, 0x9d, 0x4c, 0x4d, 
+0x63, 0x31, 0x53, 0x22, 0xf3, 0x70, 0xe2, 0xbb, 
+0x5b, 0xc8, 0x7f, 0x50, 0x86, 0xd1, 0xf3, 0xfb, 
+0xc0, 0x35, 0xd0, 0x9a, 0x48, 0x73, 0xe3, 0x50, 
+0x32, 0x22, 0x0e, 0x24, 0xa3, 0x38, 0xbb, 0x0a, 
+0xb6, 0xae, 0x66, 0x08, 0x9e, 0xe1, 0x8b, 0xd0, 
+0x67, 0x7b, 0x71, 0xd2, 0xd8, 0xba, 0x9b, 0x61, 
+0xd2, 0x8a, 0x81, 0x38, 0xba, 0xe1, 0x26, 0x00, 
+0xc0, 0xa5, 0x97, 0x25, 0xb1, 0xf0, 0x08, 0x00, 
+0x2e, 0xfc, 0x12, 0x87, 0xcc, 0xf8, 0x62, 0xf8, 
+0x05, 0x3b, 0xa1, 0xf7, 0x53, 0xae, 0x9c, 0x32, 
+0xaa, 0xaf, 0x6e, 0x46, 0xda, 0x9d, 0x02, 0xd5, 
+0x6c, 0x89, 0xa7, 0x63, 0xab, 0xab, 0x6c, 0xc2, 
+0xd9, 0x9f, 0x63, 0x50, 0x5f, 0xd9, 0x84, 0xde, 
+0xa3, 0x5c, 0x11, 0x30, 0xdc, 0x19, 0xfa, 0x86, 
+0x6d, 0xf5, 0x96, 0x74, 0x2d, 0x17, 0x2d, 0x8a, 
+0x6e, 0xda, 0x79, 0x05, 0xca, 0xe9, 0xb3, 0x53, 
+0xcf, 0x76, 0x7a, 0x5b, 0x45, 0x41, 0x2d, 0xbe, 
+0x5b, 0x72, 0x12, 0x39, 0x89, 0xfc, 0xcb, 0xbe, 
+0xa7, 0xbd, 0x3d, 0x84, 0x57, 0xe9, 0xca, 0x1b, 
+0x5b, 0x90, 0x16, 0x53, 0x88, 0xd2, 0xec, 0x6a, 
+0x78, 0x0e, 0xb0, 0x87, 0xa3, 0xaf, 0x25, 0xd1, 
+0x19, 0x0e, 0x79, 0xc6, 0x07, 0x97, 0xf7, 0x24, 
+0xe0, 0xfe, 0xcd, 0xb6, 0x05, 0x5a, 0x86, 0xa6, 
+0x7a, 0x98, 0xf5, 0x41, 0x30, 0xef, 0xb3, 0xca, 
+0x0b, 0x6a, 0x71, 0xff, 0x66, 0x3e, 0xf4, 0x64, 
+0x52, 0xf8, 0x0e, 0x71, 0x84, 0x91, 0x85, 0x8c, 
+0x73, 0x5d, 0x24, 0x02, 0x5e, 0xf8, 0x72, 0x24, 
+0x3e, 0x9f, 0xb4, 0x57, 0x6d, 0xc6, 0x10, 0xec, 
+0x72, 0x58, 0x06, 0x12, 0xa9, 0x08, 0x4b, 0xb7, 
+0x4c, 0xc0, 0x80, 0x09, 0x9e, 0xc4, 0x65, 0x46, 
+0xc9, 0xe2, 0xf7, 0x8f, 0xc2, 0x91, 0x11, 0x57, 
+0xc4, 0x7f, 0xbf, 0x00, 0x8f, 0x65, 0x77, 0xb2, 
+0xe6, 0x46, 0x05, 0x7e, 0x79, 0xf7, 0x02, 0x3e, 
+0x3d, 0xf1, 0x1c, 0xef, 0xf5, 0xc8, 0x23, 0x29, 
+0xb8, 0x1b, 0xde, 0xb9, 0x13, 0xcc, 0xda, 0xd9, 
+0x04, 0x93, 0x56, 0x04, 0x11, 0xe7, 0xb7, 0xbd, 
+0x75, 0x0e, 0x91, 0x87, 0xdb, 0x1c, 0x1d, 0x15, 
+0x05, 0xb5, 0x48, 0xbc, 0x96, 0x83, 0x29, 0x29, 
+0x83, 0x31, 0xe3, 0x5d, 0x6e, 0xc1, 0xcf, 0x78, 
+0x3f, 0x18, 0xd1, 0xa7, 0x53, 0x51, 0x55, 0x52, 
+0x4f, 0x38, 0xfd, 0x00, 0x95, 0x82, 0x39, 0xf8, 
+0xcd, 0x75, 0x00, 0xc0, 0xf5, 0x43, 0xc9, 0x10, 
+0x89, 0x00, 0xdf, 0xa1, 0x4e, 0x18, 0x3e, 0x3b, 
+0x00, 0x52, 0x1d, 0x31, 0x4e, 0x6e, 0x89, 0x06, 
+0xc3, 0xb0, 0x88, 0xbd, 0x90, 0x81, 0xd8, 0x0b, 
+0x19, 0x30, 0xb2, 0x90, 0xe1, 0xbf, 0x71, 0x2f, 
+0x13, 0x72, 0x76, 0xaf, 0xbc, 0x8c, 0xd4, 0xe8, 
+0x02, 0xf5, 0xdf, 0x03, 0xba, 0x08, 0xde, 0x37, 
+0xb6, 0x94, 0x61, 0xca, 0xeb, 0xe4, 0x94, 0xb9, 
+0xa9, 0x4e, 0x8e, 0x0d, 0x0b, 0x8e, 0x21, 0xf5, 
+0x76, 0x9b, 0x2c, 0x47, 0x5f, 0x4b, 0x7c, 0xb0, 
+0x6f, 0x26, 0xc7, 0xce, 0xda, 0x51, 0x66, 0x4f, 
+0xeb, 0x2c, 0x60, 0xb8, 0x0b, 0x4c, 0x6d, 0x0c, 
+0x39, 0xe7, 0xaa, 0x4a, 0xea, 0x91, 0x1a, 0x5d, 
+0xa0, 0x96, 0xd9, 0xa2, 0x50, 0x22, 0xee, 0x62, 
+0x06, 0x82, 0xa7, 0x73, 0x95, 0xe9, 0xd0, 0x69, 
+0x7e, 0xf8, 0x73, 0x75, 0x04, 0x21, 0x73, 0xfc, 
+0x92, 0xfe, 0x90, 0xea, 0x90, 0xcb, 0xc6, 0x6e, 
+0x1c, 0x4e, 0xc1, 0xf6, 0xb7, 0xcf, 0xab, 0x1d, 
+0x0e, 0x22, 0xb1, 0x08, 0x73, 0x3f, 0x1b, 0x89, 
+0xb1, 0x0b, 0x85, 0x46, 0x28, 0x6d, 0xef, 0x35, 
+0x60, 0x82, 0x27, 0xec, 0xbd, 0x48, 0x85, 0x9a, 
+0x9d, 0x58, 0x8a, 0x75, 0xcf, 0x1f, 0x46, 0x7d, 
+0x55, 0x9b, 0x83, 0x24, 0x64, 0x86, 0x1f, 0x16, 
+0xaf, 0x1f, 0x47, 0x74, 0xb2, 0x6a, 0xa9, 0xea, 
+0xb2, 0xea, 0xbc, 0xcc, 0x62, 0x2f, 0x64, 0xe0, 
+0xe0, 0x9a, 0xeb, 0x6a, 0x6f, 0xbc, 0xb1, 0xa5, 
+0x0c, 0xd3, 0xdf, 0x25, 0x3f, 0xec, 0xbd, 0x5f, 
+0x5c, 0xc5, 0xf9, 0xed, 0x6d, 0xcb, 0xe3, 0x2b, 
+0x0a, 0x6a, 0x91, 0x1c, 0x99, 0x8b, 0x8c, 0xb8, 
+0x62, 0x2c, 0x58, 0x3d, 0x9a, 0x93, 0x36, 0x6c, 
+0xf9, 0x40, 0x44, 0x1e, 0x4d, 0x41, 0x51, 0x7a, 
+0x25, 0xdc, 0xfa, 0x90, 0x4b, 0x9a, 0x93, 0xae, 
+0xe7, 0x62, 0xcf, 0xe7, 0x57, 0x00, 0xa8, 0xbe, 
+0x11, 0x00, 0xf0, 0x1a, 0x68, 0x8f, 0x61, 0xb3, 
+0xfc, 0x61, 0x6c, 0x21, 0xc3, 0xe9, 0xad, 0x77, 
+0xa0, 0x68, 0x56, 0x29, 0x4e, 0xbe, 0xf6, 0x7c, 
+0x6e, 0x5b, 0x0c, 0x4e, 0x6d, 0x51, 0xf9, 0x4b, 
+0x2e, 0xef, 0x49, 0x80, 0x54, 0x47, 0x82, 0xbe, 
+0x63, 0xdc, 0x30, 0x6c, 0x56, 0x00, 0xca, 0xf3, 
+0x6b, 0x71, 0x7a, 0x6b, 0x74, 0xb7, 0xdb, 0x4a, 
+0x4f, 0x57, 0x5a, 0x5e, 0xdd, 0x9f, 0x88, 0xca, 
+0xa2, 0x3a, 0xde, 0xe7, 0x39, 0xfb, 0x5b, 0x61, 
+0xf4, 0x7c, 0x32, 0x02, 0x2a, 0xff, 0x41, 0x39, 
+0xd6, 0x3e, 0x77, 0x18, 0x35, 0x65, 0x6d, 0x8e, 
+0xf6, 0x7e, 0x63, 0x3d, 0xb0, 0x62, 0x6b, 0x18, 
+0xa4, 0xba, 0xdc, 0x36, 0xf5, 0xc2, 0x97, 0x4f, 
+0xe1, 0xd3, 0x89, 0x7b, 0xc0, 0x3c, 0x8c, 0x62, 
+0x99, 0xfe, 0x6e, 0x30, 0xef, 0x37, 0x72, 0x6c, 
+0x63, 0x14, 0x8e, 0x6e, 0xbc, 0xa9, 0xfe, 0x5b, 
+0x22, 0x15, 0x63, 0xe9, 0xf7, 0x13, 0x31, 0x28, 
+0x8c, 0x3b, 0x50, 0x73, 0xf6, 0xb7, 0xc2, 0xa8, 
+0x17, 0x7b, 0xe3, 0xe2, 0x0e, 0xd5, 0x40, 0x4d, 
+0xa8, 0xc3, 0x91, 0xea, 0x4a, 0xf0, 0xd2, 0xa6, 
+0x09, 0xe8, 0x33, 0xda, 0x8d, 0xb8, 0x26, 0x6f, 
+0x6a, 0xc1, 0xd6, 0x15, 0x67, 0x10, 0x7b, 0x21, 
+0x83, 0xf7, 0xde, 0xce, 0x10, 0x33, 0x78, 0x3c, 
+0xff, 0xc6, 0x08, 0x7e, 0x50, 0x40, 0xbf, 0xb1, 
+0xee, 0xb0, 0x70, 0x34, 0xea, 0xf4, 0xfe, 0x61, 
+0x73, 0x48, 0x3b, 0xe9, 0xdd, 0xf0, 0x4c, 0x5c, 
+0x3f, 0x9c, 0xc4, 0x9b, 0xfe, 0xc4, 0x96, 0x28, 
+0xe4, 0xdd, 0xe7, 0x8e, 0xc0, 0x64, 0x46, 0xba, 
+0x18, 0x38, 0xc9, 0x0b, 0x0c, 0x18, 0x34, 0xd4, 
+0x92, 0xc6, 0x7d, 0x97, 0x5e, 0xd6, 0x30, 0xb6, 
+0x96, 0xa9, 0x65, 0x28, 0x59, 0x06, 0x49, 0x91, 
+0x39, 0xf8, 0xf9, 0xed, 0xb3, 0xf8, 0xe1, 0xb5, 
+0xd3, 0xc8, 0x49, 0x29, 0xe1, 0x3c, 0x43, 0x28, 
+0xa8, 0xba, 0x63, 0x5e, 0x84, 0x1a, 0x6b, 0xeb, 
+0x75, 0xff, 0xe1, 0x4e, 0x90, 0xf1, 0xd8, 0xa0, 
+0x7e, 0x7a, 0xf3, 0x2c, 0xee, 0xdf, 0xce, 0xe3, 
+0xc8, 0xca, 0xbd, 0x5f, 0x8a, 0xef, 0x5e, 0x3e, 
+0x21, 0x58, 0x96, 0x8f, 0x52, 0x47, 0x21, 0xb3, 
+0xfc, 0x09, 0x79, 0xd1, 0x67, 0xd2, 0xa0, 0x64, 
+0x94, 0x9c, 0x74, 0xb7, 0xcf, 0xa4, 0x12, 0xe9, 
+0x86, 0x4e, 0xf3, 0x05, 0x2b, 0x66, 0xb9, 0xef, 
+0x2d, 0x62, 0x30, 0x72, 0x2e, 0x69, 0x0e, 0x48, 
+0x8f, 0x29, 0xc4, 0xcf, 0x6f, 0x9f, 0xe5, 0xc8, 
+0x55, 0x32, 0x4a, 0xec, 0xfa, 0x2c, 0x5c, 0xb0, 
+0x03, 0x56, 0xc5, 0xf1, 0xaa, 0xfe, 0xf1, 0xc9, 
+0x6c, 0xac, 0x93, 0x63, 0xed, 0xdc, 0x83, 0xa8, 
+0xad, 0x6a, 0xe0, 0xe4, 0x21, 0xe2, 0x70, 0x12, 
+0x0e, 0x6f, 0xe0, 0xdf, 0x8c, 0x88, 0xe5, 0x94, 
+0x17, 0x7f, 0x1d, 0xd5, 0x57, 0x37, 0x61, 0xfd, 
+0x8b, 0x87, 0xb1, 0x69, 0xf1, 0x31, 0xe4, 0xa5, 
+0x96, 0xa9, 0x53, 0x0f, 0x9e, 0xea, 0x0d, 0x43, 
+0x53, 0xee, 0x12, 0xf7, 0xf4, 0xd8, 0x22, 0x9c, 
+0xfb, 0xe5, 0x0e, 0x6f, 0xd9, 0x86, 0xff, 0x71, 
+0x17, 0xf7, 0x6f, 0x71, 0x97, 0xcc, 0x4b, 0x75, 
+0x24, 0x08, 0x9e, 0xee, 0xfb, 0xb0, 0x3d, 0x92, 
+0xde, 0x74, 0x07, 0x2f, 0x73, 0xe2, 0xbb, 0x78, 
+0x70, 0x27, 0x1f, 0x3b, 0x3e, 0xba, 0x88, 0xef, 
+0x5e, 0x39, 0x81, 0xb4, 0xd8, 0x02, 0xf5, 0x79, 
+0xbe, 0xf6, 0xec, 0x33, 0xc4, 0x11, 0x3a, 0x06, 
+0x12, 0x75, 0x1a, 0xb9, 0x42, 0x81, 0xdb, 0x67, 
+0x53, 0xb1, 0x69, 0xc9, 0x31, 0xec, 0xfa, 0x2c, 
+0x1c, 0xe5, 0x85, 0x35, 0xdd, 0x6e, 0x23, 0x3d, 
+0x55, 0xbc, 0xd3, 0xde, 0x1a, 0x8a, 0x4d, 0xd1, 
+0x4b, 0xb0, 0x78, 0xc3, 0x38, 0x48, 0x65, 0x62, 
+0x8e, 0xcc, 0x11, 0x73, 0x03, 0x21, 0x96, 0x70, 
+0x87, 0xb1, 0xf2, 0xc6, 0x16, 0x7c, 0xf3, 0xdc, 
+0x41, 0x54, 0x95, 0xd5, 0x71, 0xd2, 0xc6, 0x5c, 
+0x4c, 0xc3, 0xae, 0x4f, 0x49, 0xbf, 0x91, 0xa3, 
+0x8f, 0x25, 0x7c, 0x06, 0xdb, 0x83, 0x01, 0x03, 
+0x91, 0x14, 0xbc, 0x6d, 0xe4, 0xfa, 0xe1, 0x64, 
+0x1c, 0xde, 0x78, 0x83, 0x23, 0x4f, 0xd1, 0xd2, 
+0x82, 0x2d, 0x2b, 0x4e, 0x21, 0x2b, 0x81, 0x74, 
+0xa8, 0x8d, 0x9e, 0xdf, 0x87, 0x93, 0x96, 0x8f, 
+0x57, 0x7f, 0x9e, 0xc4, 0xab, 0x74, 0x6b, 0x2b, 
+0x1a, 0xb1, 0xe6, 0xb9, 0x83, 0xb8, 0x73, 0x21, 
+0xad, 0xdb, 0x65, 0xcc, 0x80, 0x81, 0xb8, 0x75, 
+0x04, 0xf5, 0x28, 0xc7, 0xf0, 0x59, 0x01, 0x18, 
+0x36, 0x83, 0xfc, 0xa8, 0x5b, 0x31, 0x30, 0xd1, 
+0xc3, 0xb2, 0x2d, 0x61, 0x10, 0x4b, 0x44, 0x82, 
+0x32, 0x9c, 0xfd, 0xc9, 0xf5, 0xe1, 0x37, 0x8f, 
+0xdf, 0x17, 0x4c, 0xaf, 0x6c, 0x61, 0x70, 0xe7, 
+0x2c, 0xa9, 0x20, 0xdc, 0xfb, 0xd8, 0x80, 0x65, 
+0x59, 0x64, 0xdc, 0x25, 0x87, 0xfe, 0xf6, 0x9e, 
+0xe6, 0x58, 0x73, 0x79, 0x01, 0xe6, 0x7c, 0x34, 
+0x1c, 0x36, 0xae, 0xa6, 0x1a, 0xbd, 0x1b, 0x1f, 
+0x2c, 0x34, 0x49, 0xd3, 0x36, 0x3a, 0x75, 0xf4, 
+0x21, 0x4d, 0x30, 0x45, 0x99, 0x95, 0x88, 0x39, 
+0x9f, 0xc6, 0xfb, 0xcc, 0xfb, 0xb7, 0xf2, 0x90, 
+0x1e, 0x5b, 0xc8, 0x2f, 0xb7, 0x87, 0x75, 0xa4, 
+0x6f, 0xa8, 0x83, 0x01, 0xe3, 0xc9, 0xa9, 0xd2, 
+0xad, 0x93, 0x64, 0x19, 0xc7, 0x5f, 0xce, 0x24, 
+0x76, 0x9b, 0xb2, 0xb0, 0x37, 0x82, 0xdf, 0x50, 
+0x27, 0x4e, 0x3a, 0x53, 0x1b, 0x43, 0xde, 0x0e, 
+0xe5, 0xd4, 0xd6, 0x68, 0x30, 0x4a, 0x86, 0x37, 
+0x1f, 0x67, 0x7e, 0x26, 0x23, 0x17, 0x54, 0xef, 
+0xd5, 0xf6, 0x6e, 0x7c, 0xa3, 0xdd, 0x2b, 0x7b, 
+0x13, 0x50, 0x5b, 0xd1, 0xc8, 0x2b, 0xf3, 0xaf, 
+0x9d, 0x77, 0x05, 0x76, 0xc7, 0x6a, 0x57, 0x47, 
+0x02, 0xf5, 0xf4, 0xdb, 0x47, 0x7f, 0x21, 0xfe, 
+0x72, 0x16, 0x21, 0xd3, 0xc9, 0x8f, 0x6c, 0x8f, 
+0x51, 0x27, 0xee, 0x83, 0x61, 0x84, 0xcb, 0xf8, 
+0xf6, 0x29, 0x32, 0x94, 0xcc, 0xad, 0x8f, 0x2d, 
+0x58, 0x96, 0x45, 0x3a, 0xcf, 0x54, 0xd4, 0xcc, 
+0xd6, 0x08, 0xab, 0xc3, 0x17, 0x60, 0xde, 0xaa, 
+0xa7, 0xe0, 0xe8, 0x63, 0xd9, 0x69, 0xfd, 0xf1, 
+0xb5, 0xe7, 0xde, 0x23, 0x5d, 0xb1, 0x26, 0x7c, 
+0x01, 0x26, 0x2d, 0x1b, 0x04, 0x13, 0x4b, 0xd9, 
+0x23, 0x7f, 0xc7, 0x8f, 0x3a, 0xfb, 0x15, 0x89, 
+0x45, 0x18, 0x3e, 0x2b, 0x00, 0x9f, 0x1d, 0x7f, 
+0x1e, 0x86, 0x66, 0x7a, 0x9d, 0x7e, 0xdb, 0xd7, 
+0x0f, 0x27, 0xa1, 0xaa, 0xb4, 0x9e, 0x37, 0x0f, 
+0xd7, 0x0e, 0x24, 0xa2, 0xba, 0x94, 0x8c, 0xa2, 
+0x71, 0xf2, 0xb7, 0x52, 0xb5, 0x0f, 0x4f, 0x73, 
+0x5e, 0x73, 0x5c, 0xeb, 0x08, 0x9f, 0x4f, 0x57, 
+0x9c, 0xde, 0x1a, 0x4d, 0xa4, 0xb7, 0x75, 0x33, 
+0x87, 0x54, 0x57, 0xf2, 0x30, 0x1d, 0xff, 0x3b, 
+0x79, 0x0e, 0x20, 0x4d, 0x3c, 0xa5, 0xb9, 0xd5, 
+0xf8, 0x72, 0xfa, 0xbe, 0x87, 0x66, 0xa0, 0x9e, 
+0x95, 0xf3, 0x23, 0xff, 0xe6, 0x9a, 0x83, 0xb7, 
+0x25, 0xe6, 0x7f, 0x35, 0xba, 0xcb, 0x74, 0x5e, 
+0x03, 0xec, 0x31, 0xeb, 0x83, 0x61, 0xd8, 0xfb, 
+0xd5, 0x15, 0xde, 0xeb, 0x7c, 0x0d, 0xfd, 0xd9, 
+0x8f, 0x43, 0x31, 0xf3, 0xdd, 0x10, 0x41, 0x99, 
+0x7a, 0x06, 0x3a, 0xc4, 0x39, 0xf7, 0x3e, 0xb6, 
+0x60, 0x58, 0x06, 0xf7, 0x22, 0xb2, 0x90, 0x74, 
+0x3d, 0x07, 0x01, 0xc3, 0x5c, 0x38, 0xd7, 0x0d, 
+0x8c, 0xf5, 0x30, 0x69, 0x59, 0x10, 0xc2, 0x96, 
+0x06, 0x21, 0x39, 0x32, 0x07, 0xc7, 0xbe, 0xbb, 
+0x89, 0xc4, 0x08, 0xfe, 0x65, 0xb1, 0x42, 0x65, 
+0xc3, 0xb2, 0x2c, 0xe7, 0x9a, 0x50, 0xba, 0xd6, 
+0xf3, 0x7c, 0x8a, 0xf7, 0xee, 0xa5, 0x4c, 0x28, 
+0x3b, 0x59, 0x40, 0x12, 0x17, 0x9e, 0x01, 0xcf, 
+0xfe, 0x64, 0xa5, 0x33, 0x2c, 0x23, 0xf8, 0xbc, 
+0xce, 0x08, 0x9a, 0xec, 0x0d, 0x5d, 0x7d, 0xae, 
+0x8d, 0xb1, 0xba, 0xb4, 0x01, 0xc9, 0x51, 0xb9, 
+0xc4, 0x07, 0xd7, 0xd4, 0x20, 0xc7, 0xdd, 0xcb, 
+0x99, 0x08, 0x7a, 0x9a, 0x3b, 0x3d, 0x0b, 0x99, 
+0xee, 0x87, 0x7b, 0x11, 0x59, 0xea, 0xbf, 0xf9, 
+0x22, 0x09, 0x58, 0x16, 0x88, 0xbd, 0x98, 0x26, 
+0x98, 0xc7, 0x94, 0xa8, 0x5c, 0xb0, 0x0c, 0x4b, 
+0xc4, 0xaf, 0xb2, 0x50, 0x95, 0xa9, 0x54, 0x47, 
+0x02, 0x4b, 0x07, 0xd2, 0xb9, 0x1a, 0x73, 0x21, 
+0x5d, 0x50, 0x66, 0x6d, 0x55, 0x03, 0x72, 0xef, 
+0x97, 0xc2, 0xb3, 0x1f, 0xb7, 0xbc, 0x58, 0xb4, 
+0xd5, 0x01, 0x23, 0xf0, 0x65, 0x25, 0x5e, 0xcf, 
+0xe6, 0x95, 0xeb, 0xcc, 0xd3, 0x1e, 0x27, 0x2f, 
+0x0f, 0xc2, 0xf8, 0x45, 0xfd, 0x79, 0xe5, 0x00, 
+0x80, 0x8e, 0x1e, 0x69, 0xc3, 0x6d, 0x6d, 0x8f, 
+0xd9, 0x49, 0xc5, 0x88, 0x3a, 0x79, 0x1f, 0x43, 
+0x26, 0x73, 0x1d, 0x64, 0xba, 0x32, 0x29, 0xc6, 
+0x2f, 0xea, 0x8f, 0xf1, 0x8b, 0xfa, 0x23, 0xf5, 
+0x4e, 0x01, 0x4e, 0x6c, 0x89, 0x42, 0xcc, 0x79, 
+0x72, 0xaf, 0x83, 0x4b, 0x7b, 0xe3, 0x31, 0x7e, 
+0x61, 0x7f, 0x58, 0xbb, 0x70, 0xfd, 0x04, 0x16, 
+0x0e, 0xc6, 0x98, 0xf3, 0x51, 0x28, 0x66, 0xbe, 
+0x37, 0x0c, 0x31, 0xe7, 0xd3, 0x70, 0xe8, 0xdb, 
+0x1b, 0xc8, 0xbb, 0x5f, 0x26, 0x98, 0xc7, 0xae, 
+0x10, 0x52, 0xbe, 0xf7, 0xae, 0x65, 0x83, 0x69, 
+0x17, 0xa7, 0x6a, 0x68, 0xaa, 0x07, 0x5b, 0x57, 
+0x33, 0x18, 0x99, 0x93, 0xd3, 0x7d, 0x27, 0x5f, 
+0x2b, 0x3c, 0xfb, 0x71, 0x28, 0xb6, 0xbd, 0x7b, 
+0x0e, 0x00, 0x7f, 0x59, 0xc6, 0x85, 0x67, 0x08, 
+0xd6, 0xa7, 0x5c, 0xce, 0x20, 0xe1, 0x4a, 0x16, 
+0x86, 0xcf, 0xe2, 0xda, 0xcd, 0x9d, 0x7c, 0x2d, 
+0xc1, 0xb0, 0x0c, 0xaf, 0x2f, 0xa9, 0xb2, 0xa8, 
+0x0e, 0xd9, 0x49, 0xc2, 0x31, 0xee, 0x31, 0x17, 
+0x49, 0xa7, 0xb1, 0x58, 0x22, 0x82, 0xbd, 0xb7, 
+0x39, 0xb2, 0x12, 0x8a, 0xa1, 0xa9, 0xdf, 0xa4, 
+0xa9, 0x5e, 0x81, 0x2f, 0xa6, 0xed, 0x45, 0x65, 
+0xf1, 0xa3, 0x2d, 0x54, 0x91, 0x0a, 0x4d, 0xa7, 
+0x35, 0x41, 0x57, 0x5f, 0x8a, 0xd7, 0xb7, 0x4e, 
+0xe1, 0x55, 0x80, 0x7c, 0x84, 0xbd, 0x12, 0x84, 
+0xa4, 0x1b, 0xd9, 0x88, 0x0b, 0xe7, 0xda, 0x44, 
+0xf4, 0x0d, 0x75, 0x61, 0xed, 0x4c, 0x3a, 0x9e, 
+0xcc, 0x3a, 0xd8, 0x23, 0x35, 0xc1, 0xd8, 0xd2, 
+0x40, 0xe5, 0x37, 0x64, 0x81, 0x1f, 0xde, 0x38, 
+0x89, 0x15, 0xdf, 0x4f, 0x81, 0xff, 0x50, 0x67, 
+0x22, 0x9d, 0x48, 0x04, 0x04, 0x84, 0xb8, 0x20, 
+0x20, 0xc4, 0x05, 0xd7, 0x8f, 0x24, 0xe1, 0x8f, 
+0x2f, 0x2e, 0x11, 0xbd, 0xac, 0xe0, 0xfa, 0x6d, 
+0x74, 0x34, 0x43, 0x08, 0x04, 0xef, 0x3f, 0x4c, 
+0xe3, 0xc4, 0xd3, 0x50, 0x4a, 0x72, 0xaa, 0x04, 
+0xe5, 0xb7, 0x5e, 0xd7, 0xec, 0xd9, 0x9a, 0x11, 
+0xda, 0xa1, 0x11, 0x03, 0x40, 0x43, 0x6d, 0x13, 
+0xe6, 0x7c, 0x38, 0x9c, 0x37, 0xbd, 0x01, 0xcf, 
+0x3e, 0x0e, 0x41, 0x61, 0x3e, 0xd8, 0xf1, 0xc9, 
+0x79, 0xc8, 0x1f, 0xae, 0x04, 0xb2, 0x71, 0x27, 
+0xeb, 0xac, 0xaa, 0xb8, 0x0e, 0x72, 0xb9, 0xf0, 
+0xca, 0x3d, 0x85, 0x82, 0x41, 0x55, 0x69, 0x3d, 
+0xcc, 0x6d, 0x3b, 0x3a, 0xda, 0x54, 0xe5, 0x65, 
+0xe5, 0x6c, 0x46, 0x28, 0x65, 0x00, 0x28, 0xce, 
+0xa9, 0xe8, 0xf4, 0xbd, 0x4b, 0x73, 0xab, 0x09, 
+0xc5, 0xdb, 0xbe, 0x0e, 0x20, 0x70, 0x6f, 0x5d, 
+0x75, 0x03, 0x21, 0x57, 0x24, 0x52, 0x29, 0x8f, 
+0x8e, 0x74, 0xd7, 0x23, 0x0f, 0xa8, 0xc2, 0xc2, 
+0xa4, 0xba, 0x22, 0x28, 0xe4, 0x4a, 0xfc, 0xfa, 
+0xe1, 0x39, 0xe8, 0xca, 0xa4, 0xe8, 0x3f, 0x86, 
+0x9c, 0x79, 0x00, 0x80, 0xf7, 0x40, 0x07, 0xbc, 
+0xfd, 0xeb, 0x74, 0xc4, 0x9c, 0x4f, 0xc3, 0x6f, 
+0x2b, 0x2f, 0xa2, 0x3c, 0xbf, 0x6d, 0x01, 0x45, 
+0x63, 0x5d, 0x13, 0x36, 0xbd, 0x7c, 0x14, 0x2b, 
+0xbe, 0x9f, 0x0c, 0x07, 0x2f, 0xb2, 0x3d, 0x49, 
+0xa4, 0x62, 0x04, 0x85, 0xf9, 0x60, 0xc0, 0x78, 
+0x2f, 0x9c, 0xf9, 0xf9, 0x36, 0x0e, 0x6d, 0xbc, 
+0x01, 0x79, 0x63, 0xf7, 0x97, 0x7a, 0xb3, 0x02, 
+0xa6, 0x86, 0x0d, 0x8b, 0x0f, 0x13, 0x71, 0xbc, 
+0x22, 0xb1, 0x08, 0x43, 0xa7, 0xf8, 0xe1, 0xa5, 
+0x75, 0x13, 0x09, 0x1d, 0x30, 0xe2, 0xd9, 0xde, 
+0x38, 0xb3, 0x3d, 0x1a, 0xf5, 0xd5, 0x4d, 0x9c, 
+0xc5, 0x4f, 0xad, 0x14, 0x67, 0x57, 0x76, 0x5a, 
+0x9f, 0xc5, 0x3c, 0xed, 0xdf, 0xd9, 0xdf, 0x0a, 
+0x2c, 0x18, 0x38, 0xf9, 0xf3, 0x7c, 0x4f, 0xd9, 
+0x9d, 0x7f, 0x4f, 0x8d, 0xf5, 0xcd, 0xa8, 0x29, 
+0x6f, 0x80, 0x89, 0x25, 0xb7, 0x0e, 0x9d, 0xfc, 
+0x2c, 0x91, 0x99, 0x50, 0xa8, 0xb1, 0x89, 0x45, 
+0xdf, 0x50, 0x07, 0x93, 0x96, 0x0d, 0xc2, 0xae, 
+0x55, 0xe1, 0x1a, 0xa5, 0x17, 0xe2, 0x91, 0x4c, 
+0x0d, 0x2f, 0x7e, 0x3e, 0x86, 0xb7, 0x81, 0x36, 
+0xd6, 0x36, 0xe3, 0xee, 0x25, 0xd2, 0xe0, 0x2c, 
+0x12, 0x01, 0x4b, 0x37, 0x4d, 0x82, 0xb9, 0xad, 
+0x11, 0x47, 0x4e, 0x8b, 0x42, 0xd9, 0xad, 0x55, 
+0x1f, 0x9d, 0x11, 0x17, 0x9e, 0xae, 0x96, 0x5b, 
+0x51, 0x58, 0x8b, 0x2f, 0x67, 0xee, 0xc1, 0xd6, 
+0x37, 0x4f, 0xa1, 0xb6, 0x42, 0xf8, 0xd7, 0x20, 
+0x86, 0x4d, 0x0f, 0xc0, 0xfa, 0x2b, 0x4b, 0xd0, 
+0x77, 0x94, 0xbb, 0x46, 0x53, 0xaf, 0xf6, 0xd3, 
+0x62, 0x96, 0x15, 0xa8, 0xb2, 0x76, 0x69, 0xf8, 
+0x36, 0x7b, 0x97, 0x74, 0x62, 0x76, 0x61, 0x59, 
+0x96, 0xb0, 0x89, 0xb5, 0x3d, 0xbb, 0xfb, 0xf5, 
+0x64, 0xe5, 0x6c, 0x02, 0x9f, 0xc1, 0x4e, 0x84, 
+0x2c, 0x7b, 0x0f, 0x0b, 0x4c, 0x59, 0x3e, 0x84, 
+0xf7, 0xe8, 0x35, 0xcc, 0x95, 0x48, 0x2f, 0x33, 
+0xd6, 0xc5, 0x80, 0x71, 0x5e, 0x6a, 0xb9, 0x1d, 
+0x47, 0xd0, 0x00, 0x3a, 0x35, 0x27, 0xb5, 0x1e, 
+0x7a, 0x32, 0xb2, 0xa3, 0x6e, 0xbd, 0xa6, 0xa3, 
+0xcf, 0xbf, 0xf1, 0xb6, 0x58, 0xdc, 0xb9, 0x5c, 
+0x3e, 0x99, 0xed, 0xeb, 0x40, 0xa8, 0x75, 0xf1, 
+0xc9, 0x62, 0x18, 0x16, 0xca, 0xc7, 0xb4, 0xb3, 
+0x5c, 0x62, 0x44, 0x16, 0xe4, 0xcd, 0x2d, 0x60, 
+0x59, 0x16, 0xb5, 0x95, 0x8d, 0x58, 0x37, 0xff, 
+0x20, 0x36, 0xbe, 0x74, 0x04, 0x15, 0x85, 0xc2, 
+0x11, 0x3e, 0x03, 0xc6, 0x7b, 0x61, 0xdd, 0xa5, 
+0xc5, 0x08, 0x7e, 0xc6, 0x9f, 0x93, 0xaf, 0xcc, 
+0x84, 0x22, 0x7c, 0x38, 0x76, 0x07, 0x0e, 0x7c, 
+0x73, 0x55, 0xdd, 0xf9, 0x75, 0x44, 0x22, 0x15, 
+0x63, 0xf2, 0xf2, 0x21, 0x58, 0x77, 0x69, 0x31, 
+0x9c, 0x7c, 0xad, 0x1e, 0x9b, 0xa9, 0x81, 0xb7, 
+0x9c, 0x94, 0x0c, 0x6e, 0x1c, 0x4d, 0xc2, 0xde, 
+0xff, 0x5c, 0x26, 0xd2, 0x8b, 0x44, 0xaa, 0x8e, 
+0x44, 0xd9, 0xc2, 0xbf, 0xb0, 0xa9, 0xab, 0x76, 
+0xc2, 0xd7, 0xfe, 0x95, 0x2d, 0x8c, 0xe0, 0xf7, 
+0x24, 0x96, 0x76, 0xdd, 0xee, 0xf8, 0xcc, 0x13, 
+0xca, 0x16, 0xe5, 0xc3, 0xf6, 0xc1, 0xff, 0xee, 
+0x65, 0xf9, 0xe4, 0xea, 0xc1, 0x89, 0x4b, 0x06, 
+0x61, 0xec, 0xfc, 0x7e, 0x3d, 0xd6, 0x9b, 0x2c, 
+0xcb, 0xf6, 0xfc, 0xc7, 0x2e, 0x43, 0x9e, 0x09, 
+0xc0, 0xe8, 0x79, 0xfc, 0x0e, 0xb5, 0x5f, 0x3e, 
+0x3e, 0x87, 0x98, 0x0b, 0x69, 0xf8, 0xe6, 0xc2, 
+0x62, 0x62, 0x24, 0x6b, 0x6c, 0x21, 0xc3, 0xab, 
+0x3f, 0x4c, 0xc1, 0x17, 0xb3, 0xff, 0x50, 0x87, 
+0x72, 0x34, 0x37, 0xcb, 0x51, 0x94, 0x55, 0x01, 
+0x07, 0x4f, 0x6e, 0x4f, 0x96, 0x99, 0x50, 0x84, 
+0xf2, 0x82, 0xce, 0x43, 0xd0, 0x5a, 0x51, 0xb6, 
+0x28, 0x71, 0xef, 0x5a, 0x16, 0x6e, 0x9e, 0x4c, 
+0x21, 0x0c, 0xe5, 0x97, 0xff, 0x8c, 0x47, 0xf4, 
+0x85, 0x54, 0x4c, 0x5c, 0x3c, 0x08, 0x4f, 0x3d, 
+0xdb, 0x07, 0x56, 0x8e, 0xe4, 0x14, 0xd9, 0xc0, 
+0x44, 0x0f, 0xcb, 0xff, 0x3b, 0x19, 0xef, 0x8d, 
+0xde, 0xae, 0x9e, 0x46, 0x08, 0x95, 0x4d, 0xab, 
+0x1b, 0xa8, 0xed, 0x6f, 0x61, 0xe7, 0x1a, 0x00, 
+0xe4, 0xa7, 0x95, 0x13, 0xa3, 0x14, 0x2b, 0x17, 
+0x53, 0x41, 0xf9, 0x00, 0x88, 0x29, 0x65, 0x7b, 
+0x99, 0xdd, 0xad, 0xb3, 0xe1, 0x33, 0x7b, 0x3d, 
+0xf2, 0xae, 0x53, 0xad, 0x0c, 0x9b, 0x19, 0x80, 
+0xeb, 0xc7, 0x55, 0x71, 0xdb, 0xf9, 0x69, 0xe4, 
+0x94, 0xd6, 0xd4, 0xda, 0x10, 0x3a, 0x06, 0x12, 
+0xc1, 0xfd, 0x2a, 0x0c, 0x8c, 0xf5, 0x78, 0x47, 
+0x40, 0xec, 0xc3, 0x52, 0x2d, 0xc8, 0x28, 0x07, 
+0xcb, 0x92, 0xf1, 0xb5, 0xd6, 0x6e, 0xa6, 0x28, 
+0xcc, 0x16, 0x5e, 0xff, 0xcf, 0x37, 0x63, 0x6a, 
+0x95, 0xa9, 0xfa, 0xff, 0xce, 0x1d, 0xa5, 0x1d, 
+0xc9, 0x4d, 0x29, 0x85, 0x6f, 0x10, 0xb7, 0xb3, 
+0xca, 0xbb, 0x5f, 0x86, 0xa2, 0x2c, 0xcd, 0xe2, 
+0xbc, 0x19, 0x25, 0x83, 0xe4, 0xa8, 0x5c, 0x44, 
+0x1e, 0x4f, 0x22, 0xe4, 0x47, 0x9d, 0x4e, 0xc1, 
+0xdd, 0x2b, 0x19, 0x18, 0xff, 0xaf, 0x01, 0x18, 
+0x3d, 0xb7, 0x1f, 0xec, 0xdc, 0xc8, 0x38, 0x61, 
+0x3d, 0x03, 0x1d, 0xbc, 0xb4, 0x7e, 0x22, 0x32, 
+0x12, 0x0a, 0x51, 0x90, 0xde, 0xe6, 0x44, 0x96, 
+0x2b, 0x18, 0x1c, 0xfe, 0xee, 0x3a, 0x22, 0x8e, 
+0x26, 0x22, 0x6c, 0x49, 0x10, 0x42, 0x67, 0x05, 
+0xc2, 0xd0, 0x54, 0x9f, 0xb8, 0xdf, 0xca, 0xc9, 
+0x04, 0xaf, 0x6e, 0x99, 0x82, 0x8f, 0x9f, 0xde, 
+0x01, 0x85, 0x5c, 0xf3, 0xdf, 0x00, 0xec, 0xac, 
+0x2d, 0x0b, 0xb5, 0xbb, 0x7b, 0x91, 0x59, 0xbc, 
+0xe7, 0x9d, 0xfd, 0xad, 0x70, 0x61, 0x77, 0x0c, 
+0x6a, 0x2b, 0x1a, 0x61, 0xdc, 0x21, 0xa4, 0xcb, 
+0xda, 0xd5, 0x04, 0x19, 0xf7, 0xf8, 0xfd, 0x18, 
+0x00, 0x60, 0xc3, 0xd3, 0xfe, 0x73, 0x92, 0x4b, 
+0xc1, 0x80, 0x41, 0x4e, 0x32, 0xb9, 0x61, 0xbe, 
+0x8d, 0x8b, 0x59, 0xa7, 0xdf, 0x85, 0xa1, 0x89, 
+0x3e, 0x6f, 0x39, 0x65, 0x27, 0x97, 0x3c, 0x74, 
+0x2a, 0xf2, 0xdf, 0xbb, 0xe9, 0xe5, 0x23, 0xf8, 
+0x68, 0xef, 0xb3, 0x30, 0x34, 0xe1, 0xde, 0xbb, 
+0xe0, 0xcb, 0x71, 0x28, 0xca, 0xa9, 0xe4, 0x1d, 
+0x60, 0x6a, 0x42, 0x8f, 0xc2, 0xc9, 0xec, 0xdc, 
+0xcc, 0xf1, 0xd2, 0xda, 0xa7, 0x79, 0xaf, 0x45, 
+0x1c, 0xbe, 0x87, 0x6b, 0x87, 0x54, 0x9b, 0x9b, 
+0x7f, 0xb7, 0xe2, 0x18, 0x3e, 0x3f, 0xf2, 0x22, 
+0xd1, 0x7b, 0xf9, 0x0d, 0x71, 0xc6, 0xac, 0xb7, 
+0x43, 0xb1, 0x7f, 0x6d, 0x9b, 0xbd, 0x37, 0x27, 
+0xb9, 0x94, 0x50, 0xbc, 0xe9, 0x77, 0x0b, 0xb1, 
+0xed, 0xfd, 0x33, 0xdd, 0xce, 0x1f, 0x1f, 0xb5, 
+0x95, 0x0d, 0xf8, 0x73, 0xfd, 0x55, 0x1c, 0xdc, 
+0x70, 0x0d, 0x7d, 0x47, 0xba, 0xe3, 0x99, 0x15, 
+0xc1, 0x08, 0x08, 0xe1, 0x8e, 0xea, 0x8c, 0xcc, 
+0x64, 0x08, 0x9d, 0x19, 0x88, 0x63, 0x5b, 0x54, 
+0x5e, 0x72, 0xa1, 0xa2, 0x21, 0x46, 0x07, 0x3c, 
+0x09, 0xdb, 0xef, 0x2f, 0x9b, 0x9f, 0x5a, 0x86, 
+0xa0, 0x89, 0xdc, 0xf8, 0xd9, 0x41, 0x13, 0xbc, 
+0xf1, 0xdb, 0xa7, 0xe7, 0xa1, 0x54, 0xf0, 0x57, 
+0x78, 0xc7, 0xf4, 0x82, 0xcf, 0xd6, 0x80, 0x11, 
+0xb3, 0x1e, 0x6d, 0x21, 0x42, 0x7b, 0xfa, 0x3e, 
+0xe5, 0x01, 0x23, 0x73, 0x19, 0x6a, 0x2b, 0x1a, 
+0x90, 0xf7, 0x80, 0xdf, 0x96, 0x38, 0x74, 0xb2, 
+0x1f, 0x2e, 0xef, 0x8f, 0xe7, 0xbd, 0x36, 0x6c, 
+0x06, 0x69, 0xf2, 0x68, 0x85, 0x65, 0x59, 0x34, 
+0x35, 0xc8, 0x51, 0x96, 0x57, 0x4d, 0x28, 0xd2, 
+0xe0, 0xa9, 0xfe, 0xb8, 0x7b, 0x99, 0xbf, 0x91, 
+0xbb, 0x06, 0xd8, 0xf0, 0xce, 0xbc, 0x5a, 0x65, 
+0xaa, 0xfe, 0x2b, 0xfc, 0x4c, 0xbe, 0xf2, 0xcc, 
+0x49, 0x2e, 0x21, 0x14, 0x6f, 0x41, 0x7a, 0x39, 
+0xbe, 0x5d, 0x72, 0x48, 0x30, 0xff, 0xdd, 0xa1, 
+0xb1, 0xae, 0x19, 0xc7, 0xbe, 0x8f, 0xc4, 0xf1, 
+0x2d, 0x91, 0xf0, 0x0f, 0x76, 0xc5, 0x94, 0xa5, 
+0x43, 0x30, 0x60, 0x2c, 0x37, 0x1e, 0x5c, 0x4f, 
+0xa6, 0x83, 0x51, 0xcf, 0xf7, 0xc5, 0xee, 0x2f, 
+0xff, 0x22, 0xee, 0x2f, 0xce, 0xae, 0xc4, 0x8e, 
+0x95, 0xe7, 0xb1, 0xfb, 0xab, 0x70, 0x0c, 0x09, 
+0xf3, 0xc5, 0xf4, 0x37, 0x86, 0xc1, 0xc9, 0x87, 
+0x5b, 0x06, 0xce, 0x7e, 0xd6, 0xe8, 0x35, 0xdc, 
+0x15, 0xb1, 0x7f, 0x69, 0xbe, 0x3f, 0xae, 0xf0, 
+0x2c, 0x4f, 0xb8, 0xdd, 0x59, 0xda, 0xf3, 0x2f, 
+0x78, 0xaa, 0x2e, 0x6f, 0x00, 0xcb, 0xb2, 0xc8, 
+0x4d, 0x29, 0x21, 0xbe, 0xb5, 0x21, 0x93, 0xfc, 
+0x70, 0xf3, 0x24, 0xff, 0x1e, 0x20, 0x7a, 0x06, 
+0x3a, 0xe8, 0x37, 0x9a, 0x34, 0xc7, 0xe4, 0xa4, 
+0x94, 0x80, 0x65, 0x59, 0xe4, 0xa4, 0x90, 0x8a, 
+0xd7, 0xd4, 0xda, 0x10, 0xbe, 0x41, 0x4e, 0x48, 
+0xb9, 0xc5, 0xbf, 0x6c, 0x77, 0xf0, 0x24, 0x72, 
+0xf1, 0x89, 0xb2, 0x85, 0x41, 0x7e, 0x6a, 0xd9, 
+0xc3, 0x77, 0xe3, 0xbd, 0x0d, 0x05, 0x19, 0xe5, 
+0xd8, 0xbc, 0xf4, 0x28, 0x3e, 0xda, 0xfd, 0x2c, 
+0xc7, 0x04, 0x26, 0x96, 0x88, 0xf0, 0xe6, 0xd6, 
+0xe9, 0xf8, 0xf4, 0x99, 0x9d, 0xbc, 0x1d, 0x41, 
+0x57, 0x74, 0x7b, 0xc9, 0xb0, 0x54, 0x47, 0x84, 
+0x37, 0x7f, 0x9e, 0xce, 0xeb, 0xcd, 0x2e, 0xce, 
+0xae, 0xc4, 0xb6, 0x0f, 0xcf, 0xa8, 0xd3, 0xde, 
+0xbf, 0x9d, 0x83, 0x43, 0x1b, 0xaf, 0xf1, 0x3e, 
+0x78, 0xfa, 0xeb, 0x21, 0x08, 0x0c, 0x75, 0x55, 
+0xa7, 0xcd, 0x49, 0x26, 0x0d, 0xe3, 0xc1, 0x53, 
+0xfc, 0x61, 0xe9, 0x60, 0xdc, 0x65, 0x9e, 0xfc, 
+0x86, 0x38, 0x61, 0xd6, 0x3b, 0xc3, 0x61, 0x61, 
+0xc7, 0x5d, 0x36, 0x6c, 0xe7, 0x6e, 0x06, 0x17, 
+0x7f, 0x2b, 0x88, 0x25, 0x6d, 0x4b, 0xff, 0x18, 
+0xa5, 0x12, 0xb1, 0xe1, 0x69, 0x58, 0x35, 0x73, 
+0x17, 0xae, 0x1d, 0x26, 0x7f, 0xfd, 0xc2, 0xb5, 
+0x17, 0x77, 0xe9, 0x1f, 0x1f, 0xaa, 0x8a, 0x6a, 
+0x97, 0x07, 0x21, 0x1b, 0xef, 0xc3, 0xeb, 0xf9, 
+0xa9, 0xa4, 0x82, 0xb2, 0xb0, 0x33, 0xc6, 0x98, 
+0x79, 0xfd, 0x78, 0xdf, 0x67, 0xd0, 0x04, 0x6f, 
+0x38, 0xfb, 0x91, 0x81, 0xfb, 0xaa, 0x67, 0x77, 
+0xaf, 0xbe, 0x7c, 0x06, 0x39, 0xc2, 0x96, 0x67, 
+0x44, 0xd5, 0x53, 0x24, 0x52, 0x31, 0x42, 0x9e, 
+0xf1, 0x07, 0xcb, 0x32, 0x28, 0x2f, 0xac, 0xe6, 
+0xdd, 0x08, 0x68, 0xea, 0x8a, 0x60, 0xe8, 0x19, 
+0x48, 0x89, 0xbc, 0xc8, 0x8c, 0x75, 0x30, 0xf9, 
+0x65, 0xfe, 0x25, 0xc0, 0xed, 0xcb, 0x34, 0xef, 
+0x01, 0x19, 0x84, 0x3f, 0x7c, 0x46, 0x20, 0xec, 
+0xdc, 0xc9, 0x25, 0xd3, 0x00, 0x83, 0x59, 0xef, 
+0x84, 0x0a, 0xe4, 0x96, 0xed, 0x90, 0x96, 0xef, 
+0xb9, 0xfc, 0xe5, 0xc6, 0xf7, 0x31, 0xf5, 0x1f, 
+0xe3, 0x09, 0x07, 0x2f, 0x8b, 0x2e, 0xcb, 0xdc, 
+0xa3, 0xaf, 0x1d, 0xe6, 0xbc, 0x17, 0xfa, 0x30, 
+0x72, 0xa6, 0xed, 0xbc, 0x95, 0xa3, 0x31, 0xdc, 
+0x02, 0x6d, 0x20, 0x96, 0xb6, 0x6b, 0x8f, 0x0c, 
+0x83, 0xc4, 0xeb, 0x99, 0x58, 0xf3, 0xe2, 0x3e, 
+0x9c, 0xde, 0x76, 0x8b, 0x78, 0xa6, 0x5b, 0xa0, 
+0x8d, 0xfa, 0x3d, 0x5d, 0x02, 0xac, 0x61, 0xe7, 
+0x6e, 0x06, 0xa0, 0x4d, 0xa6, 0xbc, 0x49, 0x8e, 
+0x6b, 0x87, 0x13, 0xf0, 0xfe, 0xd8, 0x6d, 0x48, 
+0xbf, 0x4b, 0x8e, 0x20, 0x3b, 0xb6, 0xe7, 0xae, 
+0x0e, 0xa1, 0x78, 0x67, 0xe1, 0xf4, 0x0c, 0xc2, 
+0x04, 0xea, 0x34, 0x3b, 0xb1, 0x08, 0x2c, 0xcb, 
+0x20, 0x9b, 0xa7, 0x2c, 0x87, 0x4e, 0xf6, 0x87, 
+0x93, 0xaf, 0x25, 0xaf, 0xcc, 0xa7, 0x97, 0x0c, 
+0xe2, 0x1d, 0x9d, 0xe6, 0x24, 0xab, 0x9c, 0x60, 
+0x05, 0xe9, 0x65, 0xbc, 0xa3, 0xf8, 0x99, 0x6f, 
+0x0d, 0x83, 0x48, 0xcc, 0x12, 0xf2, 0xf4, 0x0c, 
+0xa4, 0x98, 0xba, 0x9c, 0x5c, 0xc5, 0x5a, 0x98, 
+0x51, 0x01, 0x85, 0x5c, 0xd1, 0x65, 0xfb, 0x88, 
+0xbb, 0x94, 0x86, 0xdd, 0x5f, 0x91, 0x9d, 0x9f, 
+0xcc, 0x48, 0x17, 0x1f, 0xec, 0x9c, 0x0d, 0x53, 
+0x6b, 0x83, 0x6e, 0x7f, 0x97, 0xdd, 0x5e, 0x32, 
+0xfc, 0xc2, 0x67, 0x63, 0xe1, 0x1e, 0x68, 0x47, 
+0x64, 0x42, 0xd9, 0xc2, 0x60, 0xf3, 0x8a, 0x23, 
+0xa8, 0xaf, 0x6d, 0xe2, 0xa4, 0xff, 0x73, 0xd3, 
+0x55, 0xde, 0x5e, 0x48, 0x24, 0x16, 0xe1, 0xb5, 
+0xef, 0xa7, 0xc1, 0xc4, 0xda, 0x00, 0x0c, 0x58, 
+0x5c, 0x3d, 0x72, 0x4f, 0x1d, 0x2c, 0xde, 0x8a, 
+0xa1, 0xa9, 0x3e, 0x56, 0x1e, 0x98, 0x07, 0x97, 
+0x5e, 0xb6, 0x44, 0x3e, 0x24, 0xba, 0x62, 0x8c, 
+0x7c, 0xb6, 0x0f, 0xd6, 0x5e, 0x5c, 0x82, 0xcf, 
+0x8f, 0xcc, 0xc7, 0xec, 0x77, 0x46, 0x60, 0xf3, 
+0x8d, 0xe5, 0x30, 0x34, 0xd7, 0x07, 0x03, 0x16, 
+0xb3, 0xde, 0x09, 0xc5, 0xe6, 0xeb, 0xcb, 0xb1, 
+0xee, 0xaf, 0x97, 0xf1, 0x63, 0xcc, 0x1b, 0x78, 
+0xfa, 0xa5, 0x20, 0x48, 0xf5, 0x25, 0x1c, 0x19, 
+0xe5, 0x85, 0xa4, 0xfd, 0x46, 0xde, 0xa4, 0xe0, 
+0xa4, 0xe1, 0xad, 0x8c, 0x0e, 0x79, 0x11, 0x1a, 
+0x7f, 0xb6, 0x5e, 0x8f, 0xbd, 0x9c, 0x86, 0x46, 
+0x9e, 0x38, 0xcc, 0x85, 0x5f, 0x4e, 0xc0, 0xe8, 
+0x79, 0xfd, 0x01, 0x89, 0x2a, 0x2d, 0x2b, 0x62, 
+0x31, 0x60, 0xbc, 0x37, 0xde, 0xf8, 0x71, 0xba, 
+0x80, 0x44, 0x74, 0xab, 0xae, 0x18, 0xb0, 0x18, 
+0x31, 0xa7, 0x37, 0x21, 0x43, 0xd9, 0xc2, 0xe0, 
+0xd4, 0xb6, 0x5b, 0x1a, 0x1d, 0xb9, 0xf7, 0x49, 
+0x25, 0x18, 0x3a, 0x33, 0x50, 0x2d, 0xff, 0xfc, 
+0x2e, 0x32, 0x3c, 0xcc, 0xd1, 0xcb, 0x12, 0x9f, 
+0xec, 0x9d, 0x0b, 0x33, 0xbb, 0xb6, 0x65, 0xd3, 
+0xa6, 0xb6, 0x86, 0xf8, 0x78, 0xcf, 0x5c, 0xc1, 
+0x4e, 0xa0, 0x7d, 0x99, 0x9e, 0xdb, 0x49, 0xca, 
+0xd4, 0xd1, 0x95, 0x60, 0xd5, 0xe1, 0xf9, 0x70, 
+0xef, 0xdb, 0xb6, 0xd4, 0x53, 0xd7, 0x50, 0x07, 
+0x4b, 0xd6, 0x86, 0x61, 0xf0, 0xd3, 0xfc, 0x4b, 
+0x69, 0xdb, 0x2f, 0x19, 0xee, 0xaa, 0x8e, 0x3a, 
+0x1e, 0x91, 0xa7, 0x92, 0x50, 0x5f, 0xc3, 0x8d, 
+0xbd, 0xd5, 0xd1, 0x93, 0x62, 0xe5, 0x81, 0x79, 
+0xf0, 0x0e, 0x72, 0x24, 0xd2, 0x8b, 0xa4, 0x22, 
+0x04, 0x3f, 0x13, 0x80, 0xaf, 0x4e, 0x2e, 0xc4, 
+0xea, 0x33, 0x8b, 0x30, 0xf3, 0xad, 0x50, 0x6c, 
+0x8e, 0x58, 0x0e, 0x6b, 0x57, 0x33, 0x30, 0x60, 
+0x31, 0x7e, 0xe1, 0x40, 0x7c, 0x7f, 0xeb, 0x35, 
+0x7c, 0x73, 0x7e, 0x09, 0xb6, 0xc5, 0xbf, 0x85, 
+0x69, 0xaf, 0x87, 0x40, 0xcf, 0x48, 0x87, 0x23, 
+0xa3, 0x8c, 0xa7, 0x3d, 0x36, 0x37, 0xaa, 0xda, 
+0xe3, 0x5b, 0xdb, 0x66, 0x62, 0xdd, 0xc5, 0x97, 
+0xb0, 0xf9, 0xfa, 0x72, 0x6c, 0xbc, 0xb6, 0x0c, 
+0xc1, 0xd3, 0x02, 0x38, 0x4b, 0xe4, 0xe5, 0x8a, 
+0x16, 0xd4, 0x94, 0x93, 0x21, 0x58, 0xad, 0xf7, 
+0x6b, 0x7a, 0x08, 0x95, 0x93, 0xa5, 0x93, 0x29, 
+0xac, 0x9c, 0xdb, 0x0e, 0x97, 0x5e, 0xb6, 0x98, 
+0xf5, 0xee, 0x08, 0x7c, 0x7b, 0x65, 0x29, 0xfa, 
+0x8e, 0xf4, 0xe0, 0xbd, 0x27, 0x2b, 0xb9, 0x58, 
+0xdd, 0x46, 0x3a, 0xda, 0x65, 0xc5, 0x12, 0x11, 
+0x3e, 0x3b, 0xf8, 0x22, 0xbc, 0x06, 0xb5, 0x95, 
+0xa5, 0x48, 0x47, 0x84, 0xb0, 0x97, 0x07, 0xe3, 
+0xb9, 0x0f, 0x46, 0x91, 0xb2, 0x12, 0x8b, 0x91, 
+0x18, 0x95, 0x0d, 0x06, 0x2c, 0x14, 0x2d, 0x4a, 
+0x5c, 0xe0, 0x69, 0x23, 0x7d, 0x46, 0x7a, 0xe0, 
+0x8d, 0x1f, 0xa7, 0x43, 0xcf, 0x58, 0x97, 0xd3, 
+0xee, 0xfe, 0xbd, 0x7f, 0x1e, 0xec, 0x3d, 0xc8, 
+0x10, 0xc5, 0x33, 0xbf, 0xde, 0x6a, 0xf7, 0xde, 
+0x9d, 0x2f, 0x19, 0x3e, 0xf6, 0x63, 0x24, 0xae, 
+0x1d, 0x4e, 0x20, 0xae, 0x5b, 0x39, 0x9a, 0xe2, 
+0x83, 0x9d, 0xcf, 0x42, 0x47, 0x26, 0xed, 0x56, 
+0x39, 0x77, 0x6b, 0xc9, 0x70, 0x9f, 0x11, 0x1e, 
+0x78, 0x7a, 0x11, 0xb9, 0xba, 0x0c, 0x00, 0x0e, 
+0x7c, 0x7b, 0x05, 0xf7, 0xa3, 0x49, 0x05, 0xab, 
+0x6c, 0x01, 0x36, 0x2d, 0x3f, 0x84, 0x0d, 0xe1, 
+0xcb, 0x08, 0xdb, 0x05, 0x49, 0x16, 0x1f, 0x00, 
+0x00, 0x0b, 0x29, 0x49, 0x44, 0x41, 0x54, 0x9e, 
+0x99, 0xb5, 0x21, 0x5e, 0x59, 0x37, 0x09, 0x6b, 
+0x16, 0xec, 0x43, 0x61, 0x46, 0x19, 0xfe, 0xdc, 
+0x78, 0x15, 0x73, 0x3f, 0xe4, 0x86, 0xa6, 0xd9, 
+0x7b, 0x58, 0x60, 0xfd, 0xc5, 0x97, 0x90, 0x18, 
+0x99, 0x8d, 0xec, 0xa4, 0x62, 0x34, 0xd4, 0x34, 
+0xc1, 0xd9, 0xd7, 0x06, 0x7e, 0x83, 0x9d, 0x61, 
+0x6a, 0xc5, 0x8d, 0x7a, 0xd0, 0xd5, 0x97, 0x22, 
+0x64, 0x6a, 0x00, 0xae, 0x1d, 0x49, 0xc0, 0xb4, 
+0x57, 0x87, 0x71, 0x9e, 0xb3, 0xf0, 0x8b, 0x09, 
+0x98, 0xfe, 0xda, 0x70, 0x24, 0x5c, 0xcb, 0x40, 
+0x49, 0x4e, 0x15, 0x9c, 0x7d, 0xad, 0xd1, 0xf7, 
+0x29, 0x72, 0x3a, 0xf3, 0x20, 0x26, 0xaf, 0xad, 
+0xf7, 0x13, 0xea, 0x05, 0xd1, 0xa1, 0x87, 0x14, 
+0x9c, 0x9e, 0xa9, 0xd2, 0x54, 0x96, 0xd4, 0xe2, 
+0xcf, 0x8d, 0x57, 0x31, 0xff, 0xd3, 0x71, 0x9c, 
+0xeb, 0x62, 0x89, 0x08, 0x4b, 0xd7, 0x4f, 0xc2, 
+0x82, 0x55, 0xe3, 0x90, 0x91, 0x50, 0x08, 0x67, 
+0x1f, 0x6b, 0xc2, 0xeb, 0xca, 0x27, 0x53, 0xd3, 
+0x3a, 0xd3, 0xd1, 0x93, 0x62, 0xd8, 0x54, 0x72, 
+0x6a, 0x9f, 0x78, 0x23, 0x0b, 0xbf, 0xae, 0xd4, 
+0xcc, 0x84, 0x33, 0x66, 0x6e, 0x7f, 0x2c, 0xdf, 
+0x30, 0x95, 0x73, 0xce, 0x7b, 0x80, 0x23, 0xec, 
+0xdc, 0xcd, 0x50, 0x98, 0x51, 0x81, 0x43, 0x9b, 
+0xaf, 0x62, 0xf4, 0xf3, 0xfd, 0x60, 0x62, 0xc1, 
+0xcd, 0xb7, 0x6f, 0x90, 0x13, 0x7e, 0x8e, 0x7d, 
+0x53, 0x3d, 0xda, 0x71, 0xf5, 0x27, 0x57, 0x5e, 
+0x71, 0x61, 0xd5, 0xef, 0x75, 0xfb, 0x5c, 0x0a, 
+0xee, 0x5d, 0xcf, 0x42, 0xe0, 0x30, 0x37, 0x4e, 
+0x0a, 0x73, 0x5b, 0x23, 0x7c, 0x73, 0x76, 0x09, 
+0xca, 0xf2, 0xab, 0x51, 0x5e, 0x58, 0x0b, 0xaf, 
+0xbe, 0x0e, 0x90, 0xe8, 0x08, 0x2f, 0xaf, 0x06, 
+0xdb, 0x56, 0x07, 0x82, 0x11, 0x2a, 0x02, 0xe5, 
+0x59, 0x59, 0x52, 0x8b, 0xdd, 0x5f, 0x5d, 0xc4, 
+0x2b, 0x6b, 0x27, 0x73, 0xce, 0x5b, 0xd8, 0x19, 
+0xe3, 0x3f, 0xc7, 0x17, 0xe2, 0xc1, 0x9d, 0x3c, 
+0x64, 0x24, 0x14, 0xa2, 0xb6, 0xa2, 0x11, 0x8e, 
+0xde, 0x56, 0xf0, 0x0b, 0x72, 0x86, 0x85, 0x1d, 
+0x77, 0xca, 0x2d, 0x96, 0x88, 0x10, 0x3a, 0x33, 
+0x10, 0x47, 0xbe, 0x8b, 0xc0, 0x9c, 0x77, 0x47, 
+0xaa, 0xed, 0xd6, 0x46, 0x66, 0x32, 0xcc, 0xfd, 
+0x68, 0x34, 0xa6, 0x2e, 0x0f, 0xc1, 0xdd, 0xcb, 
+0xe9, 0x28, 0xca, 0xac, 0x80, 0x83, 0x97, 0x25, 
+0xfa, 0x8e, 0xe0, 0x6f, 0x8f, 0x1e, 0xbd, 0x6d, 
+0x31, 0x74, 0x52, 0x5b, 0x9c, 0xbc, 0x83, 0xa7, 
+0x25, 0xde, 0xfa, 0x71, 0x06, 0x9e, 0x7f, 0xff, 
+0x29, 0x24, 0xdd, 0xcc, 0x46, 0x55, 0x69, 0x3d, 
+0x3c, 0xfb, 0xd8, 0xa3, 0xcf, 0x08, 0x52, 0x01, 
+0x72, 0xda, 0xb3, 0x26, 0x08, 0xb4, 0xe5, 0x4d, 
+0x57, 0x96, 0x6a, 0x2e, 0x03, 0xc0, 0x83, 0x3b, 
+0x79, 0x28, 0xca, 0x52, 0xd9, 0xeb, 0x73, 0x52, 
+0x8a, 0x71, 0x7a, 0x7b, 0x14, 0xa6, 0x2c, 0xe5, 
+0xae, 0x04, 0x34, 0xb1, 0x34, 0xc0, 0xd7, 0x27, 
+0x16, 0xa2, 0xa2, 0xa8, 0x16, 0x45, 0x59, 0x15, 
+0xf0, 0xec, 0xe3, 0x20, 0x18, 0x21, 0xb5, 0xfd, 
+0xe3, 0xd3, 0x1c, 0x47, 0xdd, 0xde, 0xb5, 0xe1, 
+0x18, 0x36, 0xad, 0x17, 0xa1, 0x03, 0x82, 0xa7, 
+0x04, 0x60, 0x48, 0x98, 0x3f, 0x32, 0xef, 0x15, 
+0x42, 0x57, 0x5f, 0x07, 0xce, 0xbe, 0xfc, 0x33, 
+0xc7, 0xcc, 0x84, 0x22, 0x9c, 0xdb, 0xd9, 0xb6, 
+0xb2, 0x4f, 0xd0, 0x7c, 0xd7, 0xae, 0x7d, 0x6c, 
+0x79, 0xeb, 0x38, 0x1c, 0x3c, 0x2d, 0xe1, 0xd9, 
+0x97, 0xbb, 0xc9, 0x8f, 0x67, 0x5f, 0x7b, 0xbc, 
+0xfe, 0xfd, 0x34, 0xac, 0x5b, 0xbc, 0x5f, 0xa8, 
+0xf8, 0x08, 0xba, 0xf5, 0x0b, 0x14, 0xa3, 0x9f, 
+0xef, 0xc7, 0x7b, 0x3e, 0xf1, 0x66, 0x36, 0xfe, 
+0xdc, 0x7c, 0x55, 0xb0, 0xd7, 0x28, 0xce, 0xab, 
+0xc2, 0x8f, 0xef, 0x9d, 0xc0, 0x3b, 0x3f, 0xcd, 
+0x22, 0xae, 0x0d, 0x1c, 0xeb, 0x0d, 0x63, 0x2b, 
+0x03, 0x54, 0x97, 0xd5, 0xe3, 0xc8, 0x96, 0xeb, 
+0x08, 0x9d, 0xd1, 0x1b, 0xce, 0x3e, 0x64, 0x61, 
+0xf5, 0x0a, 0x76, 0x45, 0xaf, 0x60, 0xd2, 0xd3, 
+0xde, 0x1e, 0x96, 0x65, 0x71, 0x37, 0x22, 0x03, 
+0x12, 0x3d, 0x09, 0xaf, 0x57, 0xd4, 0xcc, 0xda, 
+0x10, 0xa1, 0x33, 0xc8, 0x11, 0x60, 0x2b, 0xcd, 
+0x8d, 0x0a, 0xc4, 0x5e, 0x4e, 0x57, 0x8f, 0x74, 
+0x85, 0xca, 0x86, 0xe9, 0x70, 0xad, 0xb3, 0xde, 
+0xb2, 0x95, 0xe3, 0xdb, 0x6e, 0x62, 0xec, 0xbc, 
+0x01, 0x84, 0x1d, 0x1b, 0x50, 0x4d, 0x59, 0xba, 
+0x7a, 0x37, 0x40, 0xf5, 0x7e, 0x0a, 0xa5, 0xf0, 
+0x2a, 0xac, 0x8e, 0x04, 0x0e, 0x77, 0xe3, 0x75, 
+0x64, 0xdd, 0x38, 0x99, 0xa4, 0xb1, 0x8c, 0xa8, 
+0x73, 0xf7, 0xb1, 0x8c, 0x27, 0xee, 0x76, 0xd0, 
+0x04, 0x5f, 0x1c, 0xfb, 0xf1, 0x06, 0xea, 0x6a, 
+0x9a, 0xb0, 0x6f, 0xdd, 0x65, 0xbc, 0xbc, 0x3a, 
+0x8c, 0xf7, 0xfe, 0xae, 0x15, 0xae, 0x8a, 0xd6, 
+0xd1, 0x69, 0x2b, 0x3b, 0x56, 0x9d, 0xc3, 0xfa, 
+0xf3, 0x2f, 0x43, 0xc4, 0xe3, 0x15, 0xb4, 0x72, 
+0x34, 0x85, 0x95, 0x23, 0xbf, 0xf3, 0x91, 0x2b, 
+0xb3, 0x6d, 0xd6, 0xd2, 0xd5, 0x88, 0x97, 0x8f, 
+0x73, 0xbb, 0xee, 0x60, 0xe4, 0xec, 0xbe, 0xf0, 
+0x0b, 0x22, 0xc3, 0x11, 0x7d, 0x06, 0x3a, 0xc1, 
+0x67, 0x20, 0x19, 0x29, 0xd2, 0x91, 0xbb, 0xd7, 
+0x54, 0xed, 0x51, 0xca, 0xe3, 0x51, 0x37, 0x32, 
+0xd5, 0xc7, 0xb0, 0x67, 0x84, 0x6d, 0xde, 0xca, 
+0x16, 0x06, 0xd1, 0x17, 0x1f, 0xc0, 0xc0, 0x98, 
+0x9c, 0x76, 0x03, 0x80, 0x9d, 0xbb, 0x05, 0xec, 
+0xdc, 0x85, 0xf7, 0xaa, 0x28, 0x2b, 0xa8, 0x46, 
+0x5a, 0x7c, 0x81, 0xc6, 0x75, 0x0d, 0xf4, 0x7c, 
+0xc9, 0x70, 0x7b, 0x9a, 0x1a, 0xe4, 0xd8, 0xf4, 
+0xea, 0x61, 0x28, 0xdb, 0x69, 0xa1, 0x7d, 0xdf, 
+0x5e, 0x46, 0xe8, 0x8c, 0xde, 0x30, 0xb3, 0x21, 
+0xf7, 0xeb, 0xb0, 0xb0, 0x33, 0x26, 0x3a, 0xad, 
+0xf6, 0x5c, 0x39, 0x18, 0x8f, 0xc4, 0xa8, 0x6c, 
+0xce, 0xb9, 0xba, 0x9a, 0x26, 0xec, 0xfc, 0xf2, 
+0x02, 0x5e, 0xdb, 0x3c, 0x8d, 0x48, 0x2f, 0x96, 
+0x88, 0x08, 0xe5, 0xd8, 0x1e, 0x96, 0x65, 0xf1, 
+0xd3, 0x47, 0xa7, 0x38, 0x71, 0xf4, 0xc2, 0xdf, 
+0x70, 0x5b, 0xbb, 0x6c, 0x6e, 0x56, 0x60, 0xf5, 
+0xbf, 0xf6, 0x61, 0xfd, 0xf9, 0x97, 0x61, 0x66, 
+0xcd, 0x7d, 0x8f, 0x21, 0x61, 0x7e, 0xe8, 0x35, 
+0xdc, 0x1d, 0xf1, 0xd7, 0x34, 0x73, 0xb6, 0x75, 
+0xcb, 0xc6, 0xcb, 0x67, 0x62, 0xa8, 0xab, 0x6a, 
+0xc4, 0xc6, 0x65, 0x07, 0xc1, 0x28, 0x95, 0x9d, 
+0xde, 0x7b, 0xed, 0x68, 0x3c, 0xc2, 0xf7, 0x91, 
+0x3f, 0x01, 0x2f, 0x96, 0x88, 0xe1, 0xe2, 0x67, 
+0x0d, 0x96, 0x65, 0xa0, 0x90, 0x2b, 0xb0, 0xee, 
+0xa5, 0xfd, 0xc8, 0x4b, 0xe5, 0xdf, 0x68, 0xa3, 
+0x33, 0x58, 0x86, 0xc5, 0xde, 0xb5, 0x97, 0x90, 
+0x97, 0x5a, 0x82, 0xca, 0xe2, 0x1a, 0x5c, 0xdc, 
+0x13, 0xd3, 0x6d, 0x19, 0x5b, 0xdf, 0x3f, 0x81, 
+0xa2, 0xec, 0x72, 0x75, 0x9e, 0x6b, 0x2a, 0xeb, 
+0x51, 0xd1, 0x61, 0x63, 0x1f, 0x95, 0x41, 0xbe, 
+0x84, 0xf3, 0x6e, 0x59, 0x49, 0xe4, 0xaa, 0xa2, 
+0xec, 0x94, 0x62, 0x4e, 0x9a, 0x16, 0xb9, 0x02, 
+0x1b, 0x57, 0x1c, 0x42, 0x65, 0x89, 0x66, 0x81, 
+0xd7, 0xf5, 0xd5, 0xe4, 0x12, 0xd3, 0xf2, 0xc2, 
+0x1a, 0xb4, 0xb4, 0xb3, 0x49, 0x75, 0x75, 0x90, 
+0xb1, 0xb2, 0xaa, 0x72, 0x8a, 0x3c, 0x95, 0xa8, 
+0xb1, 0x8c, 0xea, 0xb2, 0x5a, 0xa4, 0xdc, 0x26, 
+0x17, 0x98, 0xd8, 0xb9, 0xb6, 0xd9, 0x5b, 0xcf, 
+0xfe, 0x7e, 0x0b, 0x27, 0xb6, 0xf1, 0x2f, 0xdb, 
+0xe5, 0x7b, 0x7e, 0x53, 0x03, 0xb9, 0x63, 0x7f, 
+0x56, 0x52, 0x11, 0xe7, 0xb9, 0xe9, 0xf1, 0xf9, 
+0xf8, 0xee, 0xf5, 0x23, 0x50, 0xc8, 0x35, 0xdb, 
+0xe4, 0xa5, 0xb1, 0x8e, 0x34, 0xe5, 0xe4, 0xb4, 
+0xab, 0x83, 0xec, 0x64, 0xb2, 0x8e, 0xf2, 0x52, 
+0xcb, 0xd0, 0xa2, 0x68, 0x11, 0x7c, 0x77, 0x86, 
+0x51, 0x62, 0xe3, 0x8a, 0x83, 0x48, 0x8b, 0xe3, 
+0xff, 0xf5, 0xec, 0xae, 0x38, 0xb1, 0x2d, 0x12, 
+0xc9, 0x51, 0x59, 0x68, 0xa8, 0x6d, 0xc4, 0xc9, 
+0x5f, 0xa2, 0xba, 0x7d, 0xff, 0xce, 0xaf, 0x2e, 
+0x20, 0x23, 0xa1, 0x00, 0xf7, 0x6e, 0x64, 0x20, 
+0xf9, 0x56, 0xf7, 0x7e, 0xfb, 0x4e, 0xa9, 0x50, 
+0x62, 0xed, 0xe2, 0xfd, 0x90, 0x37, 0xc9, 0xbb, 
+0x65, 0x7b, 0x4c, 0xba, 0x95, 0xdd, 0xb5, 0xf0, 
+0x4e, 0x68, 0x51, 0x28, 0xb1, 0xf5, 0xfd, 0x13, 
+0x28, 0xc8, 0x28, 0xe3, 0xc8, 0xad, 0xaf, 0x69, 
+0xc4, 0x7f, 0xe6, 0xef, 0x41, 0x69, 0x5e, 0xf7, 
+0xf6, 0x07, 0x8e, 0xbe, 0xf0, 0x00, 0xdb, 0x3e, 
+0x39, 0xc5, 0x9b, 0xd7, 0xf0, 0xfd, 0xb1, 0x38, 
+0xb0, 0xf1, 0x4a, 0xb7, 0x42, 0x51, 0xe5, 0x4d, 
+0x0a, 0x6c, 0x79, 0xfb, 0x18, 0x52, 0x6e, 0x67, 
+0x73, 0x64, 0xe5, 0xa5, 0x95, 0x12, 0x72, 0xca, 
+0x0a, 0xaa, 0x55, 0x71, 0xde, 0xed, 0xd2, 0x95, 
+0x15, 0x54, 0x61, 0xcd, 0xc2, 0x7d, 0x68, 0x51, 
+0x90, 0x36, 0xe6, 0xd0, 0xe9, 0xe4, 0x76, 0x93, 
+0x42, 0x87, 0xc4, 0xd7, 0x20, 0x74, 0xd5, 0x43, 
+0x1f, 0x7c, 0x97, 0x87, 0x81, 0xb1, 0x3e, 0x67, 
+0x3a, 0xc4, 0xb2, 0x2c, 0x36, 0xad, 0x38, 0x88, 
+0xfb, 0x77, 0x72, 0x34, 0xba, 0xff, 0xee, 0xd5, 
+0x74, 0x84, 0x4c, 0xee, 0xc5, 0x99, 0x96, 0x96, 
+0xe5, 0x57, 0x63, 0xfb, 0xca, 0xd3, 0x60, 0x19, 
+0x95, 0x61, 0xbf, 0xba, 0xac, 0x0e, 0x17, 0x76, 
+0xdf, 0x81, 0x8e, 0x9e, 0x04, 0x7e, 0x83, 0x5c, 
+0x78, 0x47, 0x3c, 0x1d, 0x29, 0xcc, 0x2c, 0xc7, 
+0x9a, 0x45, 0x7b, 0x71, 0xe9, 0x40, 0xac, 0xfa, 
+0x59, 0x77, 0xfe, 0x7a, 0x80, 0xc6, 0x3a, 0x39, 
+0x02, 0x43, 0xdc, 0x20, 0x91, 0x74, 0x32, 0x1d, 
+0x85, 0xaa, 0x87, 0xfe, 0x63, 0xf5, 0x45, 0x9c, 
+0xde, 0x11, 0xc5, 0xc9, 0x2f, 0xcb, 0xb2, 0xb0, 
+0xb2, 0x37, 0x85, 0xef, 0xa0, 0xb6, 0x11, 0x4f, 
+0xec, 0xa5, 0x54, 0x9c, 0xdf, 0x75, 0x9b, 0x93, 
+0xae, 0x38, 0xb7, 0x12, 0x93, 0x16, 0x0d, 0x85, 
+0xae, 0x7e, 0xdb, 0x34, 0x69, 0xef, 0xba, 0xf0, 
+0x87, 0x1f, 0x7b, 0x5b, 0xba, 0xf2, 0xc2, 0x6a, 
+0x5c, 0x39, 0x18, 0x07, 0xaf, 0x7e, 0x8e, 0xb0, 
+0x71, 0x16, 0x76, 0x78, 0x65, 0x25, 0x15, 0xe1, 
+0x93, 0x69, 0xbf, 0xc0, 0xd6, 0xd5, 0x1c, 0x4e, 
+0x5e, 0x6d, 0xa3, 0xff, 0xe4, 0xa8, 0x1c, 0x5c, 
+0x39, 0x14, 0xd7, 0x69, 0x19, 0xb7, 0x3f, 0x0a, 
+0x32, 0xca, 0x11, 0xb6, 0x68, 0x28, 0x67, 0x45, 
+0xd5, 0xb9, 0x9d, 0xb7, 0x11, 0x71, 0x34, 0x41, 
+0x63, 0x19, 0x00, 0x8b, 0xea, 0xf2, 0x7a, 0x8c, 
+0x98, 0xc1, 0x0d, 0x1d, 0xdc, 0xb1, 0xea, 0x2c, 
+0x4a, 0x72, 0x2b, 0x55, 0xe5, 0xc4, 0x30, 0x88, 
+0x09, 0x4f, 0x45, 0x79, 0x61, 0x0d, 0x06, 0x8e, 
+0xf6, 0x26, 0x7e, 0xdd, 0xa2, 0x15, 0x79, 0x93, 
+0xaa, 0x63, 0x4d, 0xbf, 0x9b, 0x8f, 0x01, 0xa3, 
+0xdb, 0xa2, 0x36, 0x1a, 0x6a, 0x9a, 0xf0, 0xc3, 
+0x3b, 0xc7, 0xa0, 0x54, 0x2a, 0x39, 0xcf, 0xcd, 
+0x4c, 0x2c, 0x44, 0xfc, 0xb5, 0x0c, 0x0c, 0x9e, 
+0xe0, 0x07, 0x7d, 0x03, 0xe1, 0xed, 0x34, 0x0f, 
+0x6c, 0xb8, 0x8c, 0xdd, 0xab, 0x2f, 0x62, 0xdc, 
+0xbc, 0x81, 0x9c, 0xf6, 0xf2, 0xf3, 0xc7, 0x27, 
+0x51, 0x51, 0x54, 0x03, 0x80, 0x45, 0x4d, 0x45, 
+0x3d, 0x86, 0x4c, 0xf4, 0x87, 0xb9, 0x6d, 0xdb, 
+0xc8, 0xea, 0xe4, 0x2f, 0x91, 0xb8, 0x77, 0x23, 
+0xb3, 0xd3, 0x77, 0xaf, 0xab, 0x6a, 0xc4, 0x5f, 
+0x7b, 0x63, 0xd0, 0xa2, 0x50, 0xa2, 0xd7, 0x10, 
+0x57, 0xc1, 0x77, 0x6b, 0x4f, 0x79, 0x41, 0x0d, 
+0x36, 0x2c, 0x3b, 0x80, 0x93, 0xdb, 0x22, 0xd5, 
+0x72, 0x12, 0x22, 0x32, 0x50, 0x51, 0x54, 0x83, 
+0x3e, 0xc3, 0x3d, 0x88, 0x0d, 0x60, 0x3a, 0xa2, 
+0x90, 0xb7, 0xe0, 0xc8, 0xf7, 0xd7, 0x70, 0x60, 
+0xc3, 0x25, 0xf5, 0xfd, 0x57, 0x0f, 0xc7, 0xc3, 
+0xd0, 0x44, 0x1f, 0xde, 0xfd, 0x1d, 0xbb, 0xfc, 
+0x26, 0x2a, 0x4b, 0xea, 0xf0, 0xfd, 0xdb, 0x47, 
+0x11, 0x7b, 0x39, 0xb5, 0xd3, 0x77, 0xe3, 0x3b, 
+0x8a, 0xb2, 0x2a, 0x30, 0x6a, 0x4e, 0x7f, 0x18, 
+0x99, 0xf2, 0x6f, 0xd2, 0xd4, 0x19, 0x37, 0x4f, 
+0x27, 0xe1, 0xeb, 0x05, 0x7b, 0x90, 0x70, 0x3d, 
+0x83, 0x57, 0x76, 0x79, 0x61, 0x35, 0xc2, 0xf7, 
+0xc7, 0xc2, 0xd1, 0xd3, 0x0a, 0x4e, 0xde, 0xfc, 
+0x26, 0x80, 0x56, 0x94, 0x0a, 0x25, 0x7e, 0xfb, 
+0xe2, 0x1c, 0xb6, 0x7d, 0x7c, 0x0a, 0xcd, 0x8d, 
+0x72, 0x5e, 0x79, 0x2c, 0xab, 0x2a, 0xd7, 0xe4, 
+0xa8, 0x1c, 0xf4, 0x1b, 0xe5, 0x0d, 0x99, 0x61, 
+0xe7, 0x5b, 0xae, 0xe6, 0x3d, 0x28, 0xc5, 0x67, 
+0xb3, 0x7f, 0x43, 0xcc, 0x25, 0xb2, 0x5c, 0x9a, 
+0xea, 0x9b, 0x11, 0x18, 0xe2, 0x0e, 0x5b, 0x97, 
+0xb6, 0xef, 0xf2, 0xdc, 0xae, 0x68, 0xc4, 0xf2, 
+0xa4, 0x2d, 0xcb, 0xaf, 0x42, 0x79, 0x41, 0x0d, 
+0x06, 0x4f, 0xf4, 0xe3, 0xd4, 0xc5, 0xc9, 0xed, 
+0x91, 0xc8, 0x48, 0x28, 0xe0, 0xcd, 0x6b, 0xc7, 
+0x43, 0xe2, 0x6d, 0x18, 0xba, 0x4a, 0xd3, 0x6a, 
+0xc9, 0x4c, 0x2a, 0x44, 0x73, 0xa3, 0x02, 0xe6, 
+0xd6, 0x46, 0xa8, 0x2c, 0xa9, 0xc5, 0x2f, 0x9f, 
+0x9d, 0xc1, 0xb5, 0x63, 0x09, 0x1a, 0x57, 0xab, 
+0x42, 0xa1, 0xc4, 0x8d, 0x93, 0x89, 0x70, 0xf4, 
+0xb4, 0x82, 0xcc, 0x48, 0x17, 0x37, 0xcf, 0x24, 
+0x61, 0xc7, 0xe7, 0x67, 0x51, 0x9a, 0x5f, 0xc5, 
+0x49, 0xa7, 0x54, 0x32, 0x88, 0xbd, 0x92, 0x86, 
+0x3b, 0xe1, 0x0f, 0xd0, 0x50, 0xd3, 0x04, 0x79, 
+0x53, 0x0b, 0x0c, 0x4d, 0x64, 0xea, 0x20, 0xf9, 
+0x16, 0xb9, 0x12, 0xc5, 0x39, 0x95, 0x88, 0x38, 
+0x7e, 0x0f, 0xdb, 0x57, 0x9e, 0xc2, 0x8e, 0xcf, 
+0xcf, 0xa1, 0x38, 0xb7, 0x92, 0xfb, 0x3c, 0x96, 
+0x45, 0xf2, 0xed, 0x1c, 0x5c, 0xf8, 0xe3, 0x0e, 
+0xca, 0x0b, 0xab, 0x61, 0x68, 0x26, 0x83, 0x89, 
+0x85, 0xa1, 0x3a, 0x88, 0xba, 0x45, 0xae, 0x44, 
+0x7e, 0x5a, 0x19, 0x22, 0x8e, 0x27, 0x60, 0xcd, 
+0xa2, 0xbd, 0x88, 0xb9, 0x94, 0xca, 0x9b, 0xe7, 
+0xb4, 0xbb, 0xf9, 0x50, 0x34, 0x2b, 0x61, 0xe9, 
+0x60, 0x8a, 0x2b, 0x87, 0xee, 0x62, 0xf7, 0xea, 
+0x0b, 0xa8, 0xab, 0x6e, 0x24, 0xf2, 0x9b, 0x14, 
+0x95, 0x0d, 0x43, 0x53, 0x7d, 0x28, 0x95, 0x2c, 
+0xf6, 0xae, 0x0f, 0xc7, 0xe5, 0x43, 0x71, 0x50, 
+0x2a, 0x19, 0x42, 0x5e, 0x63, 0xbd, 0x1c, 0x97, 
+0xfe, 0x8c, 0x43, 0x4d, 0x79, 0x3d, 0xe4, 0xcd, 
+0x2d, 0x30, 0x34, 0xd1, 0x87, 0xcc, 0x48, 0x0f, 
+0x2c, 0xc3, 0x22, 0x3b, 0xb9, 0x18, 0x97, 0x0f, 
+0xde, 0xc5, 0xb7, 0xcb, 0xff, 0x44, 0x55, 0x79, 
+0x1d, 0x52, 0x63, 0xf3, 0x60, 0x68, 0x2a, 0x83, 
+0xa9, 0xa5, 0x21, 0xee, 0xdf, 0xc9, 0xc5, 0x8f, 
+0x1f, 0x1c, 0x47, 0x6d, 0x87, 0x67, 0x77, 0x5a, 
+0xde, 0xf2, 0x16, 0xa4, 0x44, 0xe7, 0xc0, 0xc0, 
+0x48, 0x0f, 0xba, 0xfa, 0x3a, 0xb8, 0x74, 0x20, 
+0x0e, 0x3b, 0xff, 0x73, 0x1e, 0x72, 0x79, 0x4b, 
+0xb7, 0x3e, 0xc7, 0xfc, 0xf4, 0x32, 0xd4, 0x55, 
+0x35, 0xc2, 0xc4, 0xc2, 0x00, 0x35, 0x15, 0xf5, 
+0xf8, 0x73, 0xf3, 0x15, 0xde, 0x7a, 0x4f, 0x8f, 
+0x2f, 0xc0, 0x9d, 0x4b, 0xa9, 0xa8, 0xaf, 0x69, 
+0x82, 0x48, 0x2c, 0x82, 0x99, 0x95, 0x11, 0xc4, 
+0x12, 0x31, 0x6a, 0x2a, 0x1a, 0x10, 0x1f, 0x91, 
+0x81, 0xef, 0xde, 0x38, 0x8c, 0xb8, 0xab, 0x69, 
+0x48, 0x8f, 0x2f, 0x80, 0x44, 0x2a, 0x86, 0x99, 
+0xb5, 0x11, 0xee, 0x45, 0x66, 0xe2, 0xa7, 0x8f, 
+0x4f, 0xa2, 0x28, 0xa7, 0x82, 0xf7, 0xd9, 0xa5, 
+0x05, 0xd5, 0xb8, 0x7a, 0x34, 0x1e, 0xf5, 0xd5, 
+0x8d, 0x68, 0x51, 0x28, 0x61, 0x6a, 0x65, 0x04, 
+0x1d, 0x3d, 0x29, 0x9a, 0x1b, 0x15, 0x48, 0x89, 
+0xce, 0xc5, 0xee, 0xd5, 0x17, 0x70, 0xec, 0xe7, 
+0x1b, 0x28, 0x2f, 0xac, 0x41, 0x79, 0x51, 0x0d, 
+0xcc, 0xad, 0x8d, 0x51, 0x92, 0x57, 0x85, 0xdf, 
+0xbf, 0x3a, 0x47, 0xd4, 0x69, 0x62, 0x54, 0x16, 
+0x74, 0xf5, 0x75, 0xa0, 0x6f, 0xa0, 0x8b, 0x63, 
+0x5b, 0xaf, 0xe3, 0xe4, 0xf6, 0x48, 0xd5, 0xe2, 
+0x86, 0x2e, 0xde, 0x9f, 0x61, 0x58, 0xdc, 0x8b, 
+0xcc, 0xc2, 0xcd, 0x33, 0x49, 0x68, 0xa8, 0x6d, 
+0x42, 0x53, 0x83, 0x02, 0x06, 0xc6, 0xfa, 0xea, 
+0xce, 0x40, 0xd9, 0xc2, 0xa0, 0x34, 0xaf, 0x0a, 
+0x37, 0x4f, 0x27, 0xe1, 0xd7, 0x55, 0x67, 0xf1, 
+0xf3, 0xbf, 0x4f, 0x22, 0x2f, 0xad, 0x8c, 0x6c, 
+0x4b, 0xf1, 0x05, 0x38, 0xb7, 0xeb, 0x36, 0x4a, 
+0x72, 0xaa, 0x60, 0x60, 0xac, 0x07, 0x53, 0x4b, 
+0x43, 0xf5, 0xce, 0x6e, 0xca, 0x16, 0x06, 0x85, 
+0x99, 0xe5, 0x88, 0x3a, 0x9b, 0x8c, 0x35, 0x8b, 
+0xf6, 0xe2, 0xc6, 0xa9, 0x44, 0xce, 0xbd, 0x2d, 
+0x2d, 0x4a, 0x44, 0xff, 0xf5, 0x00, 0x57, 0x8f, 
+0xc4, 0xa3, 0xb6, 0xb2, 0x11, 0xa6, 0x56, 0x86, 
+0x30, 0x32, 0x93, 0x41, 0xfc, 0xd0, 0x04, 0xd4, 
+0xd4, 0x20, 0x47, 0xce, 0xfd, 0x12, 0x9c, 0xfe, 
+0xed, 0x16, 0xd6, 0xbd, 0xbc, 0x1f, 0x19, 0xf7, 
+0x0a, 0xbb, 0xa9, 0x72, 0xdb, 0xbe, 0x9b, 0xcb, 
+0x07, 0xe3, 0x50, 0x92, 0x5b, 0x05, 0xb1, 0x58, 
+0x84, 0x8a, 0xa2, 0x1a, 0x94, 0xe4, 0x56, 0xf1, 
+0x1e, 0x19, 0xf7, 0x0a, 0x71, 0xf3, 0x6c, 0x32, 
+0xce, 0xff, 0x11, 0x8d, 0x3d, 0x6b, 0xc3, 0x71, 
+0x7c, 0xdb, 0x0d, 0xd4, 0x56, 0x35, 0x74, 0x2a, 
+0xbf, 0xb9, 0x49, 0x81, 0x6b, 0x47, 0x13, 0x90, 
+0xfb, 0xa0, 0x14, 0x75, 0x95, 0x0d, 0x10, 0x4b, 
+0x44, 0x30, 0xb6, 0x30, 0x80, 0x58, 0x22, 0x46, 
+0x7d, 0x4d, 0x13, 0x92, 0x6f, 0x65, 0x23, 0xe2, 
+0x58, 0x02, 0xb6, 0xad, 0x3c, 0xad, 0x9a, 0x99, 
+0x81, 0xed, 0x32, 0xcf, 0x45, 0x39, 0x15, 0x08, 
+0x3f, 0x10, 0x8b, 0xba, 0xaa, 0x46, 0x34, 0xd6, 
+0x37, 0x43, 0x66, 0xa4, 0x07, 0x03, 0x63, 0x95, 
+0x89, 0xad, 0x30, 0xb3, 0x1c, 0xb1, 0x97, 0xd2, 
+0x70, 0xfe, 0x8f, 0x68, 0x6c, 0x79, 0xf7, 0x28, 
+0xca, 0x8a, 0x6a, 0x04, 0xe5, 0x24, 0xdf, 0xce, 
+0x81, 0x44, 0x2a, 0x86, 0x91, 0xa9, 0x0c, 0xa7, 
+0x7e, 0xb9, 0x89, 0x23, 0x3f, 0x44, 0xa0, 0xb9, 
+0x49, 0xc1, 0x9b, 0x36, 0xe3, 0x5e, 0x21, 0x2a, 
+0x4b, 0x6a, 0xd1, 0x3b, 0xc4, 0x1d, 0x22, 0x88, 
+0x70, 0xfd, 0x44, 0x22, 0xf6, 0x6f, 0xb8, 0x84, 
+0x16, 0x9e, 0x6f, 0x9e, 0xef, 0x10, 0x4d, 0xb2, 
+0xfa, 0x90, 0x05, 0x85, 0x42, 0xa1, 0x50, 0xb4, 
+0x86, 0x54, 0x68, 0xf3, 0x10, 0x0a, 0x85, 0x42, 
+0xa1, 0x3c, 0x19, 0x1e, 0x69, 0x93, 0x1c, 0x0a, 
+0x85, 0x42, 0xa1, 0x74, 0x9f, 0xc7, 0xf2, 0x0b, 
+0x14, 0x14, 0x0a, 0x85, 0x42, 0xd1, 0x9c, 0x1e, 
+0x6f, 0x92, 0x43, 0xa1, 0x50, 0x28, 0x94, 0x9e, 
+0xf1, 0x58, 0x7e, 0xec, 0x92, 0x42, 0xa1, 0x50, 
+0x28, 0x9a, 0x43, 0x4d, 0x0d, 0x14, 0x0a, 0x85, 
+0xa2, 0x65, 0xa8, 0xa9, 0x81, 0x42, 0xa1, 0x50, 
+0xb4, 0x0c, 0x1d, 0xf1, 0x52, 0x28, 0x14, 0x8a, 
+0x96, 0x79, 0xe4, 0x1f, 0xbb, 0xa4, 0x50, 0x28, 
+0x14, 0x4a, 0xf7, 0x90, 0x3e, 0x8e, 0xdd, 0x88, 
+0x28, 0x14, 0x0a, 0x85, 0xa2, 0x39, 0x34, 0xaa, 
+0x81, 0x42, 0xa1, 0x50, 0xb4, 0x4c, 0xb7, 0xf6, 
+0xe3, 0xa5, 0x50, 0x28, 0x14, 0xca, 0xa3, 0x43, 
+0x47, 0xbc, 0x14, 0x0a, 0x85, 0xa2, 0x65, 0xa8, 
+0x73, 0x8d, 0x42, 0xa1, 0x50, 0xb4, 0x0c, 0x75, 
+0xae, 0x51, 0x28, 0x14, 0x8a, 0x96, 0xa1, 0xa6, 
+0x06, 0x0a, 0x85, 0x42, 0xd1, 0x32, 0xd4, 0xb9, 
+0x46, 0xa1, 0x50, 0x28, 0x5a, 0x86, 0x8e, 0x78, 
+0x29, 0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x5f, 0xa0, 
+0xa0, 0x50, 0x28, 0x14, 0x2d, 0x43, 0x7f, 0x81, 
+0x82, 0x42, 0xa1, 0x50, 0xb4, 0x0c, 0xdd, 0x24, 
+0x87, 0x42, 0xa1, 0x50, 0xb4, 0x0c, 0x8d, 0xe3, 
+0xa5, 0x50, 0x28, 0x14, 0x2d, 0x43, 0x4d, 0x0d, 
+0x14, 0x0a, 0x85, 0xa2, 0x65, 0xa8, 0xa9, 0x81, 
+0x42, 0xa1, 0x50, 0xb4, 0x0c, 0xfd, 0x05, 0x0a, 
+0x0a, 0x85, 0x42, 0xd1, 0x32, 0x74, 0xc4, 0x4b, 
+0xa1, 0x50, 0x28, 0x5a, 0x86, 0x3a, 0xd7, 0x28, 
+0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x4d, 0x72, 0x28, 
+0x14, 0x0a, 0x45, 0xcb, 0xd0, 0x25, 0xc3, 0x14, 
+0x0a, 0x85, 0xa2, 0x65, 0xe8, 0x92, 0x61, 0x0a, 
+0x85, 0x42, 0xd1, 0x32, 0x34, 0x8e, 0x97, 0x42, 
+0xa1, 0x50, 0xb4, 0x0c, 0x75, 0xae, 0x51, 0x28, 
+0x14, 0x8a, 0x96, 0x11, 0xff, 0xaf, 0x33, 0x40, 
+0xa1, 0x50, 0x28, 0xff, 0x34, 0xa8, 0xe2, 0xa5, 
+0x50, 0x28, 0x14, 0x2d, 0x43, 0x15, 0x2f, 0x85, 
+0x42, 0xa1, 0x68, 0x19, 0xaa, 0x78, 0x29, 0x14, 
+0x0a, 0x45, 0xcb, 0x50, 0xc5, 0x4b, 0xa1, 0x50, 
+0x28, 0x5a, 0x86, 0x2a, 0x5e, 0x0a, 0x85, 0x42, 
+0xd1, 0x32, 0xff, 0x07, 0xee, 0x49, 0x07, 0xb9, 
+0x66, 0xef, 0x1d, 0xa8, 0x00, 0x00, 0x00, 0x00, 
+0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 
+0x82, };
+
+#endif
+
diff --git a/source/bitmaps/bigimgs/aboutimage.png b/source/bitmaps/bigimgs/aboutimage.png
new file mode 100644 (file)
index 0000000..3e8bee7
Binary files /dev/null and b/source/bitmaps/bigimgs/aboutimage.png differ
diff --git a/source/bitmaps/bigimgs/appicon.cpp b/source/bitmaps/bigimgs/appicon.cpp
new file mode 100644 (file)
index 0000000..71089c5
--- /dev/null
@@ -0,0 +1,10713 @@
+#include <iostream>
+
+#ifndef BIGIMGS_APPICON_CPP
+#define BIGIMGS_APPICON_CPP
+
+static unsigned char bigimgs_appicon_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xf4, 0x78, 0xd4, 
+0xfa, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x01, 0x4d, 0xf7, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0xda, 0xec, 0x7d, 0x05, 
+0x78, 0x54, 0xe7, 0xd6, 0xf5, 0x5f, 0xf7, 0xf6, 
+0xf6, 0x7e, 0xb7, 0xee, 0xee, 0xee, 0x2d, 0x75, 
+0x77, 0x85, 0xe2, 0x90, 0x90, 0x40, 0x1c, 0xe2, 
+0xee, 0x4a, 0x42, 0x20, 0xee, 0xee, 0xae, 0x24, 
+0x10, 0x42, 0x12, 0x08, 0x71, 0x77, 0x0f, 0x4e, 
+0xfd, 0xde, 0xf6, 0x6a, 0xef, 0xad, 0xed, 0x7f, 
+0xbf, 0x67, 0xe6, 0xcc, 0x9c, 0x33, 0x73, 0xc6, 
+0x92, 0x91, 0xc8, 0xcb, 0xff, 0xac, 0x87, 0xdc, 
+0x36, 0xf0, 0xf5, 0x87, 0x99, 0x59, 0x6b, 0xed, 
+0xb3, 0xf6, 0xda, 0xff, 0x0f, 0x00, 0xfe, 0x1f, 
+0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xc5, 0xf2, 
+0x02, 0xfd, 0x43, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 
+0xa0, 0xa0, 0x02, 0x80, 0x82, 0x82, 0x82, 0x82, 
+0x82, 0x82, 0x82, 0x0a, 0x00, 0x0a, 0x0a, 0x0a, 
+0x0a, 0x0a, 0x0a, 0x0a, 0x2a, 0x00, 0x28, 0x28, 
+0x28, 0x28, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 
+0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0x02, 
+0x80, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 
+0x0a, 0x00, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 
+0x0a, 0x2a, 0x00, 0x28, 0x28, 0xb8, 0xd8, 0x5e, 
+0xb1, 0x77, 0x05, 0xe2, 0x5e, 0xfa, 0x67, 0x41, 
+0x41, 0x41, 0x41, 0x41, 0x05, 0x00, 0xc5, 0xf2, 
+0x21, 0xff, 0x73, 0xb7, 0x17, 0xef, 0x3d, 0xb5, 
+0xbd, 0x7c, 0xef, 0x1f, 0xdb, 0xd3, 0xf6, 0x36, 
+0xda, 0x54, 0x54, 0xdf, 0x49, 0xff, 0x5c, 0x28, 
+0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0x58, 0xea, 
+0x02, 0x20, 0xab, 0xc6, 0x1e, 0x45, 0x00, 0x88, 
+0x50, 0x0d, 0x36, 0x65, 0xd5, 0x7f, 0xd8, 0xa4, 
+0xed, 0xad, 0x45, 0x21, 0x70, 0x0b, 0xfd, 0xf3, 
+0xa1, 0xa0, 0xa0, 0xa0, 0xa0, 0x02, 0x80, 0x62, 
+0x69, 0xba, 0xff, 0x0b, 0xb7, 0x17, 0xd4, 0xfc, 
+0x93, 0x27, 0x00, 0x58, 0x88, 0x84, 0x40, 0x85, 
+0x4d, 0x45, 0xd5, 0x0d, 0xf4, 0xcf, 0x8a, 0x82, 
+0x82, 0x82, 0x82, 0x0a, 0x00, 0x8a, 0xa5, 0x24, 
+0x00, 0x32, 0x6b, 0x7c, 0xa5, 0xe4, 0x2f, 0x23, 
+0x00, 0x58, 0x94, 0x56, 0xfd, 0x6e, 0x93, 0x56, 
+0x5d, 0x80, 0x42, 0xe0, 0x1a, 0xfa, 0x67, 0x46, 
+0x41, 0x41, 0x41, 0x41, 0x05, 0x00, 0xc5, 0xe2, 
+0x77, 0xff, 0x97, 0x6e, 0x2f, 0xda, 0xfb, 0x33, 
+0x4b, 0xfe, 0xb6, 0xc5, 0xb5, 0x10, 0xdd, 0xdd, 
+0x0f, 0x0e, 0x45, 0xfb, 0x65, 0x44, 0x40, 0x95, 
+0x08, 0x25, 0x55, 0xbf, 0xa1, 0x10, 0xc8, 0xc4, 
+0xaf, 0xff, 0x42, 0xff, 0xfc, 0x28, 0x28, 0x28, 
+0x28, 0xa8, 0x00, 0xa0, 0x58, 0xac, 0x02, 0x20, 
+0xa3, 0x26, 0x9c, 0xeb, 0xfe, 0x43, 0x9b, 0x3a, 
+0x21, 0xff, 0xc4, 0x51, 0xc8, 0x43, 0x44, 0x75, 
+0xf5, 0x83, 0x7d, 0xd1, 0x3e, 0xbe, 0x00, 0x90, 
+0x0a, 0x81, 0x5f, 0x51, 0x08, 0x24, 0xda, 0x54, 
+0x54, 0xfe, 0x89, 0xfe, 0x39, 0x52, 0x50, 0x50, 
+0x50, 0x50, 0x01, 0x40, 0xb1, 0xa8, 0xdc, 0x7f, 
+0xcd, 0x9f, 0x30, 0xf9, 0xff, 0x3f, 0x96, 0xfc, 
+0xed, 0x8a, 0x6a, 0x21, 0xf7, 0xd8, 0x2c, 0x43, 
+0xfe, 0x5c, 0x44, 0x74, 0xf4, 0x32, 0xff, 0x4e, 
+0x4e, 0x04, 0x54, 0x54, 0x82, 0x4d, 0x71, 0xe5, 
+0x2f, 0x28, 0x04, 0x22, 0x6d, 0xca, 0x2b, 0x2f, 
+0xa3, 0x7f, 0xa6, 0x14, 0x14, 0x14, 0x14, 0x54, 
+0x00, 0x50, 0x2c, 0x06, 0x01, 0x90, 0x5e, 0x9b, 
+0xc4, 0x75, 0xff, 0xbb, 0x8f, 0x74, 0xcb, 0x91, 
+0x7f, 0xde, 0x89, 0x59, 0xc8, 0x45, 0xe4, 0x1c, 
+0x9f, 0x81, 0xdd, 0x6d, 0xdd, 0x60, 0x5b, 0x54, 
+0xc3, 0x17, 0x00, 0x2c, 0x0a, 0xab, 0xfe, 0x6b, 
+0x93, 0x56, 0x15, 0x6a, 0x53, 0x5e, 0x71, 0x09, 
+0xfd, 0xb3, 0xa5, 0xa0, 0xa0, 0xa0, 0xa0, 0x02, 
+0x80, 0x62, 0xe1, 0xba, 0xff, 0xab, 0xb7, 0x97, 
+0xd4, 0xfc, 0xc6, 0x92, 0x3f, 0x19, 0xf5, 0xe7, 
+0x1d, 0x9f, 0x15, 0x24, 0x7f, 0x2e, 0x88, 0x10, 
+0xd8, 0xd5, 0xd2, 0x25, 0x16, 0x02, 0x1c, 0x01, 
+0x50, 0x2e, 0x46, 0x41, 0xe5, 0x7f, 0x6c, 0xd2, 
+0xab, 0xfc, 0x50, 0x08, 0x5c, 0x48, 0xff, 0x9c, 
+0x29, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0x58, 
+0x78, 0xee, 0x3f, 0x1f, 0x45, 0x80, 0xc4, 0xfd, 
+0x47, 0xb4, 0xf7, 0x2a, 0x74, 0xff, 0x3c, 0x01, 
+0x20, 0x46, 0xf6, 0xb1, 0x19, 0x08, 0x3d, 0xdc, 
+0x0e, 0x3b, 0x8a, 0xab, 0xf9, 0x02, 0xa0, 0xbc, 
+0x42, 0x84, 0xfc, 0xca, 0x7f, 0xa1, 0x10, 0x70, 
+0xc7, 0xaf, 0xcf, 0xa7, 0x7f, 0xde, 0x14, 0x14, 
+0x14, 0x14, 0x54, 0x00, 0x50, 0x2c, 0x0c, 0xf7, 
+0x7f, 0xe3, 0xf6, 0xd2, 0x9a, 0xdf, 0x59, 0x01, 
+0x40, 0x12, 0xff, 0xf9, 0x1a, 0x90, 0x3f, 0x83, 
+0xe3, 0xa2, 0x69, 0x40, 0xe6, 0xd1, 0x29, 0x08, 
+0x69, 0x44, 0x21, 0x50, 0x54, 0xcd, 0x17, 0x00, 
+0x2c, 0xf2, 0x2a, 0xff, 0x61, 0x93, 0x51, 0x69, 
+0x67, 0x5d, 0x5e, 0x7e, 0x2e, 0xfd, 0xb3, 0xa7, 
+0xa0, 0xa0, 0xa0, 0xa0, 0x02, 0x80, 0xc2, 0xb0, 
+0xee, 0xbf, 0x5a, 0x44, 0xfe, 0x22, 0x01, 0x10, 
+0x8d, 0x69, 0x7f, 0x4d, 0xdc, 0x3f, 0x4b, 0xfe, 
+0x04, 0xd9, 0x62, 0x10, 0x21, 0x10, 0x74, 0xb0, 
+0x15, 0xb6, 0x17, 0x57, 0xc9, 0x8b, 0x80, 0xf2, 
+0x72, 0xb0, 0xce, 0xad, 0xf8, 0xd1, 0x3a, 0xb3, 
+0xc2, 0x02, 0x85, 0xc0, 0x39, 0xf4, 0xef, 0x80, 
+0x82, 0x82, 0x82, 0x82, 0x0a, 0x00, 0x0a, 0x7d, 
+0x93, 0x7f, 0x65, 0xcd, 0x9d, 0xdb, 0xcb, 0x6a, 
+0xfe, 0x60, 0x05, 0x80, 0x63, 0x51, 0xdd, 0xbc, 
+0xc9, 0x9f, 0x45, 0x16, 0x22, 0x7d, 0x76, 0x0a, 
+0x02, 0x0e, 0xb4, 0xa0, 0x10, 0xa8, 0xe4, 0x0b, 
+0x00, 0x16, 0x39, 0x15, 0x3f, 0x58, 0x67, 0x55, 
+0x18, 0x5b, 0x97, 0x97, 0x9d, 0x45, 0xff, 0x3e, 
+0x28, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0xd0, 
+0xdb, 0xde, 0x7f, 0x6d, 0xa3, 0xd4, 0xfd, 0xd7, 
+0x40, 0x5c, 0xff, 0x90, 0x4a, 0xf2, 0x17, 0x12, 
+0x00, 0xd9, 0x0a, 0x04, 0x40, 0x96, 0x44, 0x08, 
+0x4c, 0x80, 0xdf, 0xfe, 0x66, 0xd8, 0x5e, 0x52, 
+0xc9, 0x17, 0x00, 0x12, 0x21, 0x50, 0xfe, 0xad, 
+0x75, 0x76, 0xf9, 0x3a, 0x2a, 0x04, 0x28, 0x28, 
+0x28, 0x28, 0xa8, 0x00, 0xa0, 0xd0, 0x35, 0xf9, 
+0x97, 0xd7, 0x3c, 0xc4, 0x25, 0x7f, 0xe7, 0xa2, 
+0x7a, 0xad, 0xba, 0x7f, 0x29, 0xa6, 0x21, 0x53, 
+0x8c, 0xd4, 0xe9, 0x09, 0xf0, 0xad, 0x39, 0x84, 
+0xc5, 0x41, 0x15, 0x32, 0x22, 0xa0, 0x4c, 0x84, 
+0xac, 0xf2, 0xd3, 0x28, 0x06, 0x3e, 0xa3, 0x7f, 
+0x3f, 0x14, 0x14, 0x14, 0x14, 0x54, 0x00, 0x50, 
+0xe8, 0x4a, 0x00, 0x64, 0xd6, 0x76, 0xe2, 0x23, 
+0x00, 0x89, 0x00, 0x48, 0x1c, 0x1a, 0x9e, 0x53, 
+0xf0, 0x4f, 0x39, 0xf9, 0x73, 0x04, 0xc0, 0x31, 
+0x29, 0x92, 0xa7, 0xc6, 0xc1, 0xab, 0xba, 0x09, 
+0xac, 0x4b, 0x2b, 0xf8, 0x02, 0x40, 0x22, 0x04, 
+0x2a, 0x8e, 0x5b, 0xe7, 0x96, 0xbd, 0x4f, 0xff, 
+0x9e, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0xa0, 
+0xd0, 0x26, 0xf9, 0x97, 0xd6, 0x3e, 0xc3, 0x90, 
+0xbf, 0x58, 0x00, 0xb8, 0x16, 0x37, 0xe8, 0xdc, 
+0xfd, 0x73, 0x05, 0x40, 0x86, 0x18, 0x49, 0x53, 
+0xa3, 0xe0, 0x59, 0xd9, 0x88, 0x42, 0xa0, 0x4c, 
+0x5e, 0x04, 0x94, 0x97, 0x82, 0x75, 0x66, 0xf9, 
+0xb4, 0x75, 0x7e, 0xd9, 0x1b, 0xf4, 0xef, 0x8c, 
+0x82, 0x82, 0x82, 0x0a, 0x00, 0x0a, 0x0a, 0x6d, 
+0x08, 0x80, 0xac, 0x7d, 0xc3, 0x5c, 0x01, 0x90, 
+0x34, 0x3a, 0xa6, 0x77, 0xf2, 0x17, 0x61, 0x0a, 
+0xd2, 0x11, 0x89, 0x93, 0x23, 0xe0, 0x5e, 0x7e, 
+0x10, 0xac, 0xcb, 0x64, 0x04, 0x00, 0x8b, 0x8c, 
+0xf2, 0x31, 0xeb, 0xc2, 0xb2, 0x15, 0xf4, 0xef, 
+0x8e, 0x82, 0x82, 0x82, 0x0a, 0x00, 0x0a, 0x8a, 
+0xb9, 0x92, 0x7f, 0x51, 0xed, 0x6b, 0xdb, 0x2b, 
+0x6b, 0x81, 0x15, 0x00, 0xee, 0xa5, 0x4d, 0x3a, 
+0x09, 0xfe, 0x09, 0x8d, 0xfe, 0x33, 0x65, 0xc8, 
+0x9f, 0x15, 0x00, 0x2c, 0x12, 0x26, 0x46, 0xc0, 
+0xad, 0xac, 0x5e, 0x2c, 0x04, 0x4a, 0xe5, 0x91, 
+0x56, 0x36, 0x68, 0x5d, 0x50, 0xfa, 0x14, 0xfd, 
+0x7b, 0xa4, 0xa0, 0xa0, 0xa0, 0x02, 0x80, 0x82, 
+0x42, 0x53, 0x01, 0x90, 0xbd, 0x6f, 0x5a, 0x22, 
+0x00, 0xd0, 0xfd, 0xa7, 0x4e, 0x8c, 0x1b, 0xd4, 
+0xfd, 0xcb, 0x22, 0x0d, 0x3b, 0x04, 0xe2, 0xc6, 
+0x86, 0xc1, 0xa5, 0xa4, 0x4e, 0x5e, 0x00, 0x94, 
+0x95, 0x88, 0x90, 0x5a, 0xd6, 0x65, 0x5d, 0x52, 
+0xf2, 0x08, 0xfd, 0xfb, 0xa4, 0xa0, 0xa0, 0xa0, 
+0x02, 0x80, 0x82, 0x42, 0x1d, 0xf2, 0x2f, 0xa8, 
+0xfd, 0x48, 0x44, 0xfe, 0x22, 0x01, 0xe0, 0x59, 
+0x71, 0x48, 0x6f, 0xc1, 0xbf, 0x0c, 0x15, 0xee, 
+0x9f, 0x25, 0x7f, 0x11, 0x26, 0x19, 0xc4, 0x8c, 
+0x0e, 0x82, 0x73, 0xf1, 0x7e, 0x79, 0x01, 0x20, 
+0x15, 0x02, 0x2d, 0xd6, 0x25, 0xc5, 0xf7, 0xd3, 
+0xbf, 0x5b, 0x0a, 0x0a, 0x0a, 0x2a, 0x00, 0x28, 
+0x28, 0x14, 0x91, 0x7f, 0x65, 0xed, 0x59, 0xdb, 
+0x73, 0xf7, 0x9d, 0x92, 0x08, 0x00, 0x74, 0xff, 
+0x69, 0x53, 0x13, 0x06, 0x70, 0xff, 0x53, 0x4a, 
+0xdd, 0x3f, 0x57, 0x00, 0xa4, 0x8a, 0x11, 0x3d, 
+0x3c, 0x00, 0x4e, 0x78, 0x82, 0x58, 0x4e, 0x00, 
+0x10, 0x94, 0x16, 0x83, 0x75, 0x4a, 0x69, 0xa3, 
+0x55, 0x59, 0xf1, 0x9d, 0xf4, 0xef, 0x99, 0x82, 
+0x82, 0x82, 0x0a, 0x00, 0x0a, 0x0a, 0x59, 0x01, 
+0x90, 0xb7, 0x6f, 0x9d, 0xd4, 0xfd, 0xd7, 0x82, 
+0x77, 0x55, 0xf3, 0x82, 0x1b, 0xfd, 0x0b, 0x91, 
+0x3f, 0x8b, 0x14, 0x44, 0xe4, 0x60, 0x3f, 0x38, 
+0x16, 0xd6, 0xc8, 0x88, 0x80, 0x62, 0xb0, 0x22, 
+0x28, 0x29, 0xfe, 0x03, 0x85, 0xc0, 0x7e, 0xfc, 
+0xfa, 0x56, 0xfa, 0xf7, 0x4d, 0x41, 0x41, 0x41, 
+0x05, 0x00, 0x05, 0x85, 0xc8, 0xfd, 0x9f, 0x8d, 
+0x02, 0xe0, 0x3b, 0x89, 0x00, 0x28, 0xaf, 0x85, 
+0x8c, 0x99, 0xc9, 0x05, 0x11, 0xfc, 0xe3, 0x93, 
+0xbf, 0x72, 0x01, 0x20, 0xc2, 0x04, 0x44, 0xf4, 
+0xf7, 0x80, 0x43, 0xc1, 0x5e, 0xbe, 0x00, 0xe0, 
+0x0b, 0x81, 0x0a, 0xab, 0xb2, 0xa2, 0x1b, 0xe8, 
+0xdf, 0x3d, 0x05, 0x05, 0x05, 0x15, 0x00, 0x14, 
+0xcb, 0x5b, 0x00, 0xe4, 0xec, 0x33, 0xe3, 0xba, 
+0x7f, 0xbf, 0x9a, 0x96, 0x45, 0xe7, 0xfe, 0x59, 
+0xf2, 0x67, 0x80, 0xd5, 0xc2, 0xc9, 0x88, 0xdd, 
+0xbd, 0xdd, 0x60, 0x5f, 0x50, 0xc5, 0x17, 0x00, 
+0x0c, 0x8a, 0xc0, 0xaa, 0xb8, 0xe8, 0x77, 0x14, 
+0x02, 0x85, 0xf8, 0xf5, 0x35, 0xf4, 0x35, 0x40, 
+0x41, 0x41, 0x41, 0x05, 0x00, 0xc5, 0x32, 0x74, 
+0xff, 0xfb, 0xce, 0xc3, 0xf0, 0xdf, 0x8f, 0x2c, 
+0xf9, 0xef, 0x28, 0xdb, 0x07, 0x99, 0xb3, 0xd3, 
+0x0b, 0x36, 0xf8, 0x97, 0xaa, 0x86, 0x00, 0x48, 
+0x9e, 0xe5, 0x63, 0x57, 0x57, 0x17, 0xd8, 0x16, 
+0x54, 0xf2, 0x05, 0x00, 0x8b, 0xe2, 0xe2, 0xdf, 
+0x50, 0x08, 0x64, 0x5a, 0x95, 0x15, 0xfe, 0x85, 
+0xbe, 0x1e, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 
+0x58, 0x46, 0xa5, 0x3f, 0xfb, 0x1d, 0xb9, 0xee, 
+0x3f, 0xb0, 0xae, 0x6d, 0x51, 0x04, 0xff, 0x54, 
+0xb9, 0x7f, 0x2e, 0x92, 0xc4, 0x08, 0xed, 0xe8, 
+0x80, 0x1d, 0x05, 0x15, 0x7c, 0x01, 0xc0, 0xa2, 
+0xa8, 0xe8, 0x57, 0xeb, 0x94, 0x92, 0x24, 0x14, 
+0x02, 0x7f, 0xa2, 0xaf, 0x0b, 0x0a, 0x0a, 0x0a, 
+0x2a, 0x00, 0x28, 0x96, 0xba, 0xfb, 0xbf, 0x70, 
+0x7b, 0xe1, 0xbe, 0x7f, 0x4a, 0xdc, 0x7f, 0xe9, 
+0x3e, 0xc8, 0x3e, 0x3a, 0xbd, 0x08, 0x47, 0xff, 
+0x8a, 0xdd, 0x7f, 0x92, 0x04, 0xe3, 0x12, 0x84, 
+0xb4, 0xb5, 0xa1, 0x10, 0x28, 0x97, 0x11, 0x01, 
+0x85, 0x22, 0x14, 0x16, 0xfd, 0x62, 0x9d, 0x5a, 
+0x12, 0x8d, 0x5f, 0x5f, 0x46, 0x5f, 0x23, 0x14, 
+0x14, 0x14, 0x54, 0x00, 0x50, 0x2c, 0x4d, 0x01, 
+0x90, 0xb9, 0xdf, 0x1f, 0x45, 0x80, 0xc4, 0xfd, 
+0x87, 0x1c, 0xec, 0xe0, 0x91, 0x7f, 0xde, 0x22, 
+0x0a, 0xfe, 0xa9, 0x72, 0xff, 0x2c, 0xf9, 0x27, 
+0x8a, 0x91, 0x30, 0x33, 0x06, 0xc1, 0x47, 0x5a, 
+0x61, 0x7b, 0x41, 0x19, 0x5f, 0x00, 0xb0, 0x28, 
+0x28, 0xfa, 0xaf, 0x75, 0x6a, 0x71, 0xa8, 0x55, 
+0x59, 0xc1, 0x25, 0xf4, 0xb5, 0x42, 0x41, 0x41, 
+0x41, 0x05, 0x00, 0xc5, 0x52, 0x72, 0xff, 0x97, 
+0x6e, 0x2f, 0xda, 0xf7, 0x33, 0x2b, 0x00, 0x6c, 
+0x4b, 0xf6, 0x43, 0xce, 0xb1, 0x99, 0x45, 0x1f, 
+0xfc, 0x53, 0xe5, 0xfe, 0x13, 0xb9, 0x98, 0x19, 
+0x87, 0xf8, 0xe9, 0x31, 0x08, 0x38, 0xdc, 0x02, 
+0x36, 0x05, 0xa5, 0xf2, 0x22, 0xa0, 0xac, 0x00, 
+0xac, 0xf2, 0x0b, 0x7f, 0x46, 0x21, 0xe0, 0x67, 
+0x55, 0x5a, 0x70, 0x21, 0x7d, 0xdd, 0x50, 0x50, 
+0x50, 0x50, 0x01, 0x40, 0xb1, 0xf8, 0x05, 0x40, 
+0xc6, 0xfe, 0x08, 0x11, 0xf9, 0x8b, 0x04, 0x40, 
+0xe8, 0xa1, 0xae, 0x79, 0xaf, 0xfd, 0x2d, 0xa4, 
+0xe0, 0x9f, 0x32, 0xf7, 0xcf, 0x92, 0x3f, 0x41, 
+0xc2, 0x8c, 0x68, 0x1a, 0x10, 0x3f, 0x3d, 0x0a, 
+0xfe, 0x8d, 0xcd, 0x60, 0x53, 0x58, 0xc2, 0x17, 
+0x00, 0x04, 0xa5, 0x88, 0xdc, 0xc2, 0x7f, 0xa1, 
+0x10, 0x70, 0xb7, 0x2c, 0xcd, 0x3f, 0x9f, 0xbe, 
+0x7e, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 0x58, 
+0x94, 0xd8, 0x51, 0xb9, 0xef, 0xca, 0xed, 0x25, 
+0xfb, 0x7e, 0x61, 0x05, 0x80, 0x1d, 0xd6, 0xe9, 
+0x12, 0x52, 0x5f, 0x8a, 0xc1, 0x3f, 0x65, 0xee, 
+0x9f, 0x25, 0x7f, 0x2e, 0xe2, 0x50, 0x08, 0xf8, 
+0x1e, 0x3c, 0x24, 0x16, 0x02, 0x1c, 0x01, 0x20, 
+0x86, 0x65, 0x4e, 0xc1, 0x3f, 0xac, 0xd2, 0x8a, 
+0xec, 0x51, 0x08, 0x9c, 0x4b, 0x5f, 0x4b, 0x14, 
+0x14, 0x14, 0x54, 0x00, 0x50, 0x2c, 0x2e, 0x01, 
+0x90, 0xbe, 0x3f, 0x45, 0xea, 0xfe, 0xf7, 0x41, 
+0x78, 0x4b, 0xcf, 0x92, 0x0f, 0xfe, 0x09, 0x93, 
+0x3f, 0x5f, 0x00, 0xc4, 0x73, 0x10, 0x3b, 0x35, 
+0x02, 0x3e, 0x07, 0x1a, 0xc1, 0xba, 0xb0, 0x88, 
+0x2f, 0x00, 0x4a, 0xf3, 0x45, 0xc8, 0x29, 0xfc, 
+0xd1, 0x2a, 0xbd, 0xd0, 0x12, 0xbf, 0x3e, 0x87, 
+0xbe, 0xa6, 0x28, 0x28, 0x28, 0xa8, 0x00, 0xa0, 
+0x58, 0x0c, 0xee, 0xff, 0x1a, 0x4c, 0xfb, 0xff, 
+0xc6, 0x92, 0xbf, 0x7d, 0xf1, 0x01, 0xc8, 0x95, 
+0xb8, 0xff, 0xa5, 0x19, 0xfc, 0x53, 0xc7, 0xfd, 
+0xc7, 0x0b, 0x20, 0x0e, 0x11, 0x33, 0x35, 0x0c, 
+0x5e, 0xfb, 0x1a, 0x24, 0x42, 0x40, 0x22, 0x00, 
+0x58, 0x64, 0x17, 0xfe, 0x60, 0x95, 0x51, 0x60, 
+0x6c, 0x59, 0x9a, 0x77, 0x36, 0x7d, 0x7d, 0x51, 
+0x50, 0x50, 0x50, 0x01, 0x40, 0xb1, 0x90, 0xdd, 
+0x7f, 0xe1, 0x0e, 0x8e, 0xfb, 0x8f, 0xe8, 0xe8, 
+0x5f, 0x76, 0xc1, 0xbf, 0x04, 0x35, 0x04, 0x40, 
+0x1c, 0x83, 0x51, 0x11, 0xf0, 0xb1, 0x40, 0xd4, 
+0xc4, 0x10, 0x78, 0xd6, 0xd4, 0xe3, 0x9a, 0xa0, 
+0x80, 0x08, 0x28, 0xcd, 0x03, 0xcb, 0xac, 0x82, 
+0x6f, 0x2d, 0x33, 0x0b, 0xd6, 0xe1, 0xd7, 0x67, 
+0xd1, 0xd7, 0x19, 0x05, 0x05, 0x05, 0x15, 0x00, 
+0x14, 0x0b, 0xcc, 0xfd, 0xef, 0xbf, 0x09, 0x9b, 
+0xfe, 0x7e, 0x67, 0x05, 0x80, 0x43, 0x71, 0xfd, 
+0xb2, 0x0e, 0xfe, 0xa9, 0x4b, 0xfe, 0x04, 0xb1, 
+0x62, 0x10, 0x21, 0xe0, 0x5e, 0x7d, 0x00, 0x8b, 
+0x83, 0x0a, 0xf8, 0x02, 0x80, 0x45, 0x66, 0xc1, 
+0x19, 0x14, 0x03, 0x5f, 0xd0, 0xd7, 0x1b, 0x05, 
+0x05, 0x05, 0x15, 0x00, 0x14, 0x0b, 0xc8, 0xfd, 
+0xd7, 0xed, 0x25, 0xe4, 0xcf, 0x0a, 0x80, 0xa8, 
+0x9e, 0x01, 0x1a, 0xfc, 0x53, 0x26, 0x00, 0x64, 
+0xc8, 0x9f, 0x8b, 0x88, 0xf1, 0x41, 0x70, 0xad, 
+0xd8, 0x0f, 0x96, 0xc5, 0x05, 0x7c, 0x01, 0x20, 
+0x86, 0x55, 0x46, 0xfe, 0x71, 0xcb, 0x9c, 0xfc, 
+0x0f, 0xe8, 0xeb, 0x8e, 0x82, 0x82, 0x82, 0x0a, 
+0x00, 0x0a, 0x43, 0xbb, 0xff, 0xbb, 0x76, 0x94, 
+0xef, 0xff, 0x83, 0x15, 0x00, 0x8e, 0xc5, 0x07, 
+0x69, 0xf0, 0x4f, 0x0d, 0xf7, 0x2f, 0x44, 0xfe, 
+0x31, 0x0c, 0x46, 0x18, 0x44, 0x8c, 0xf5, 0x83, 
+0x0b, 0x5e, 0x4f, 0xb4, 0x2c, 0x96, 0x99, 0x04, 
+0x94, 0xe6, 0x32, 0xb0, 0x4a, 0x2f, 0x98, 0xb1, 
+0xcc, 0xcd, 0x7f, 0x83, 0xbe, 0x06, 0x29, 0x28, 
+0x28, 0xa8, 0x00, 0xa0, 0x30, 0x8c, 0x00, 0xc8, 
+0xa8, 0x6b, 0x42, 0x11, 0x00, 0xac, 0x00, 0x88, 
+0xed, 0x1f, 0xa2, 0xc1, 0xbf, 0x39, 0xba, 0x7f, 
+0xae, 0x00, 0x20, 0x88, 0x46, 0xec, 0x1e, 0xed, 
+0x03, 0xe7, 0x52, 0x14, 0x02, 0x25, 0x7c, 0x01, 
+0x20, 0x11, 0x02, 0x69, 0x05, 0xe3, 0x96, 0xf9, 
+0xb9, 0x2b, 0xe8, 0x6b, 0x91, 0x82, 0x82, 0x82, 
+0x0a, 0x00, 0x0a, 0xfd, 0x91, 0x7f, 0xf9, 0xfe, 
+0x87, 0x77, 0x54, 0x10, 0xf2, 0x17, 0x09, 0x00, 
+0x97, 0xe2, 0x06, 0x1a, 0xfc, 0xd3, 0x82, 0xfb, 
+0x67, 0xc9, 0x9f, 0xc1, 0x94, 0x08, 0xbb, 0x47, 
+0xfa, 0xc0, 0xa9, 0x64, 0x2f, 0x0a, 0x81, 0x5c, 
+0x39, 0x11, 0x60, 0x59, 0x9a, 0x03, 0x56, 0xa9, 
+0xf9, 0x83, 0x96, 0x05, 0xb9, 0x4f, 0xd3, 0xd7, 
+0x25, 0x05, 0x05, 0x05, 0x15, 0x00, 0x14, 0xfa, 
+0x70, 0xff, 0xdd, 0x22, 0xf2, 0x17, 0x09, 0x80, 
+0x84, 0xe1, 0x11, 0x83, 0x04, 0xff, 0x32, 0x8e, 
+0x4d, 0x42, 0xd5, 0xd8, 0x7e, 0x38, 0x34, 0x90, 
+0x05, 0x2d, 0xfd, 0x49, 0x70, 0x70, 0x30, 0x0f, 
+0x8a, 0x27, 0x5a, 0x16, 0x7c, 0xf0, 0x4f, 0x11, 
+0xf9, 0xc7, 0xc8, 0x90, 0x3f, 0x41, 0x14, 0x83, 
+0x61, 0xd8, 0x35, 0xdc, 0x03, 0x8e, 0x45, 0x55, 
+0x72, 0x02, 0x80, 0x85, 0x55, 0x4a, 0x7e, 0x37, 
+0x0a, 0x81, 0x47, 0xe9, 0xeb, 0x93, 0x82, 0x82, 
+0x82, 0x0a, 0x00, 0x0a, 0xdd, 0x90, 0x7f, 0xc9, 
+0xfe, 0x67, 0xa5, 0xe4, 0xbf, 0x1f, 0x5c, 0x4b, 
+0x1b, 0x0d, 0x12, 0xfc, 0x2b, 0x98, 0xee, 0x82, 
+0xde, 0xae, 0x30, 0x18, 0x6d, 0xf7, 0x94, 0x60, 
+0xa4, 0x4d, 0x84, 0xf6, 0x9e, 0x18, 0x28, 0x9c, 
+0x6a, 0x5f, 0x18, 0xee, 0x7f, 0x7a, 0xee, 0xee, 
+0x3f, 0x5a, 0x4c, 0xfe, 0x5c, 0x84, 0x0e, 0x76, 
+0x83, 0x43, 0x61, 0xa5, 0x9c, 0x00, 0xb0, 0x2c, 
+0x11, 0x23, 0x39, 0xbf, 0xd5, 0xa2, 0x28, 0xe7, 
+0x7e, 0xfa, 0x5a, 0xa5, 0xa0, 0xa0, 0xa0, 0x02, 
+0x80, 0x42, 0xbb, 0x02, 0x20, 0x6b, 0xff, 0x08, 
+0x57, 0x00, 0x24, 0x8d, 0x8d, 0xe9, 0x7d, 0xf4, 
+0x9f, 0x3d, 0x3b, 0x04, 0x7d, 0x9d, 0x21, 0x0c, 
+0xe9, 0x1f, 0x1d, 0x0e, 0x83, 0xaf, 0x8f, 0x27, 
+0xc0, 0xb7, 0x27, 0x93, 0xe1, 0xf4, 0x4c, 0x2c, 
+0x4c, 0x0f, 0x04, 0x4b, 0x84, 0x40, 0x53, 0x7f, 
+0x3a, 0x64, 0x4f, 0x0f, 0xcc, 0x21, 0xf8, 0x37, 
+0x61, 0xf0, 0xd1, 0x3f, 0xd7, 0xfd, 0xb3, 0x88, 
+0xe4, 0x20, 0x74, 0xa0, 0x0b, 0xec, 0xf0, 0x04, 
+0xb1, 0xac, 0x00, 0xb0, 0x28, 0xc9, 0x06, 0x8b, 
+0xe2, 0x6c, 0x22, 0x04, 0x1a, 0xf1, 0xeb, 0x3b, 
+0xe9, 0x6b, 0x96, 0x82, 0x82, 0x82, 0x0a, 0x00, 
+0x8a, 0xf9, 0x93, 0x7f, 0xe1, 0xfe, 0x37, 0xb8, 
+0xe4, 0xef, 0x51, 0x76, 0xd8, 0x20, 0xc1, 0xbf, 
+0x23, 0xfd, 0xa9, 0x0c, 0xf9, 0x1f, 0x1f, 0xdf, 
+0x0d, 0xdf, 0x9f, 0x49, 0x85, 0xef, 0x4e, 0xf3, 
+0x71, 0x66, 0x36, 0x16, 0x26, 0x7b, 0xfd, 0x19, 
+0x11, 0x30, 0xd4, 0xee, 0x03, 0x75, 0x43, 0xc5, 
+0x90, 0x3e, 0x3b, 0xba, 0xe0, 0x83, 0x7f, 0xca, 
+0xc8, 0x5f, 0x56, 0x00, 0x10, 0x44, 0x4c, 0x0d, 
+0x41, 0x70, 0x6f, 0x07, 0xd8, 0xe6, 0x97, 0xf1, 
+0x05, 0x00, 0x8b, 0xe2, 0xec, 0x3f, 0x2c, 0x93, 
+0xf2, 0xf7, 0x5b, 0x94, 0x64, 0xdd, 0x4a, 0x5f, 
+0xbf, 0x14, 0x14, 0x14, 0x54, 0x00, 0x50, 0xcc, 
+0x5d, 0x00, 0x64, 0xef, 0x9f, 0x95, 0x08, 0x00, 
+0x0c, 0x01, 0xa6, 0x4e, 0x4c, 0xe8, 0xdd, 0xfd, 
+0x17, 0x4d, 0xb5, 0x21, 0xb1, 0x7b, 0x21, 0xc1, 
+0x07, 0x30, 0xe4, 0x2f, 0x24, 0x00, 0x58, 0x9c, 
+0x9c, 0x8c, 0x84, 0xb1, 0x4e, 0x5f, 0x46, 0x08, 
+0xf4, 0x77, 0x06, 0x41, 0xe5, 0x68, 0x0d, 0x4e, 
+0x03, 0xc6, 0x17, 0x7c, 0xf0, 0x2f, 0x5a, 0x2d, 
+0xf2, 0x47, 0x4c, 0x0e, 0x49, 0x10, 0xd4, 0xdd, 
+0x06, 0xb6, 0x79, 0xa5, 0x7c, 0x01, 0xc0, 0xa2, 
+0x28, 0x0b, 0x85, 0x40, 0x5e, 0x25, 0x0a, 0x81, 
+0x1b, 0xe9, 0xeb, 0x98, 0x82, 0x82, 0x82, 0x0a, 
+0x00, 0x0a, 0xcd, 0xc8, 0x3f, 0xbf, 0xee, 0x13, 
+0xae, 0xfb, 0xf7, 0xaa, 0x68, 0x36, 0x48, 0xf0, 
+0xaf, 0x03, 0x9f, 0xef, 0x13, 0xf7, 0x4f, 0x5c, 
+0xbe, 0x32, 0xf2, 0x67, 0xf1, 0xed, 0xe9, 0x14, 
+0x38, 0x36, 0x16, 0x0e, 0x23, 0x1d, 0x5e, 0x8c, 
+0x10, 0xe8, 0xea, 0xde, 0x0d, 0x45, 0xe3, 0x87, 
+0x74, 0x18, 0xfc, 0x1b, 0xd3, 0x5a, 0xf0, 0x4f, 
+0x11, 0xf9, 0xb3, 0xee, 0x9f, 0x2b, 0x00, 0xf6, 
+0x88, 0x11, 0xd0, 0xd9, 0x0a, 0xdb, 0xf3, 0x8a, 
+0x65, 0x44, 0x40, 0x96, 0x08, 0x45, 0xd9, 0xbf, 
+0xa3, 0x10, 0x28, 0xc2, 0xaf, 0xaf, 0xa5, 0xaf, 
+0x69, 0x0a, 0x0a, 0x0a, 0x2a, 0x00, 0x28, 0xd4, 
+0x28, 0xfd, 0xa9, 0x3b, 0x6b, 0x47, 0x6e, 0xdd, 
+0x69, 0xae, 0xfb, 0x4f, 0x9f, 0x9a, 0xd4, 0x7b, 
+0xf0, 0xaf, 0x62, 0xa2, 0x91, 0x21, 0xff, 0x19, 
+0x7c, 0xce, 0xaf, 0xca, 0xfd, 0xcb, 0xe2, 0x9b, 
+0x93, 0x49, 0x30, 0x3b, 0xb4, 0x13, 0x46, 0xc4, 
+0x61, 0xc1, 0x23, 0xbd, 0x09, 0x90, 0x33, 0xd9, 
+0xb5, 0x28, 0x82, 0x7f, 0xaa, 0xdc, 0x3f, 0x57, 
+0x00, 0xb0, 0xf0, 0x6f, 0x3f, 0x02, 0x36, 0x79, 
+0x45, 0x7c, 0x01, 0xc0, 0xa2, 0x30, 0xfb, 0x37, 
+0xcb, 0xa4, 0xdc, 0x2c, 0x8b, 0x92, 0xcc, 0xbf, 
+0xd0, 0xd7, 0x37, 0x05, 0x05, 0x05, 0x15, 0x00, 
+0x14, 0x8a, 0x05, 0x40, 0x4e, 0xdd, 0x06, 0x14, 
+0x01, 0x12, 0xf7, 0xef, 0x53, 0xdd, 0xa2, 0xf7, 
+0xd1, 0x3f, 0x59, 0xf9, 0xeb, 0x61, 0x52, 0xff, 
+0x5e, 0xf0, 0xcd, 0xf1, 0x44, 0x8d, 0xc8, 0x9f, 
+0x8b, 0xaf, 0x8e, 0xc5, 0xc3, 0x54, 0x5f, 0x20, 
+0x23, 0x02, 0x86, 0xf1, 0xf7, 0xaa, 0x1f, 0xc8, 
+0x81, 0xf4, 0xe9, 0xc1, 0x45, 0x11, 0xfc, 0x93, 
+0x90, 0xff, 0x94, 0x72, 0xf2, 0xdf, 0x3d, 0x39, 
+0x28, 0x81, 0x6f, 0x6b, 0x33, 0x0a, 0x81, 0x42, 
+0x79, 0x11, 0x50, 0x92, 0x09, 0x16, 0x05, 0x59, 
+0xbf, 0x5a, 0x26, 0xe7, 0x26, 0xe1, 0xd7, 0x57, 
+0xd2, 0xd7, 0x39, 0x05, 0x05, 0x05, 0xfd, 0x43, 
+0xa0, 0x90, 0x75, 0xff, 0x67, 0xef, 0xc8, 0xab, 
+0xfb, 0x5e, 0x22, 0x00, 0xca, 0xf7, 0x43, 0xc6, 
+0xcc, 0x94, 0xda, 0x02, 0x40, 0x5b, 0xc1, 0xbf, 
+0x1a, 0x7c, 0x7e, 0x4f, 0xdc, 0xff, 0xec, 0x50, 
+0xa8, 0xc6, 0xee, 0x5f, 0x08, 0xa7, 0xa7, 0xa3, 
+0x61, 0xbc, 0xc7, 0x8f, 0x11, 0x02, 0x83, 0x1d, 
+0x7e, 0xb0, 0x77, 0xa8, 0x14, 0xa7, 0x01, 0xa3, 
+0x06, 0x0d, 0xfe, 0x45, 0xab, 0x19, 0xfc, 0x53, 
+0xe5, 0xfe, 0xb9, 0x02, 0x80, 0x85, 0x4f, 0xf3, 
+0x21, 0xb0, 0xce, 0x2b, 0xe0, 0x0b, 0x00, 0x16, 
+0xf9, 0x59, 0xbf, 0xa0, 0x10, 0x88, 0xb6, 0x28, 
+0xc9, 0xb8, 0x9c, 0xbe, 0xe6, 0x29, 0x28, 0xa8, 
+0x00, 0xa0, 0xa0, 0x10, 0x07, 0xff, 0xea, 0x2c, 
+0x44, 0xe4, 0x2f, 0x12, 0x00, 0xfe, 0xb5, 0x6d, 
+0x7a, 0x77, 0xff, 0x99, 0x47, 0xc7, 0x60, 0xa0, 
+0x33, 0x10, 0x46, 0xf1, 0x39, 0x3e, 0x19, 0xe5, 
+0xcf, 0x97, 0xfc, 0xb9, 0x38, 0x31, 0xb1, 0x07, 
+0x7f, 0x5f, 0x6f, 0x14, 0x02, 0x1e, 0xd0, 0x83, 
+0xab, 0x85, 0xa5, 0xa3, 0x75, 0x8b, 0x26, 0xf8, 
+0xa7, 0x2e, 0xf9, 0x87, 0x4f, 0x48, 0xe1, 0x7d, 
+0xa8, 0x09, 0x85, 0x40, 0x3e, 0x5f, 0x00, 0xb0, 
+0xc8, 0xcb, 0xfc, 0x9f, 0x65, 0x72, 0x4e, 0x18, 
+0x0a, 0x81, 0x4b, 0xe8, 0x6b, 0x9f, 0x82, 0x82, 
+0x0a, 0x00, 0x8a, 0xe5, 0xed, 0xfe, 0xcf, 0xdb, 
+0x51, 0x50, 0xf7, 0x13, 0x2b, 0x00, 0x6c, 0xcb, 
+0xea, 0x20, 0x6b, 0x76, 0x5a, 0xef, 0xc1, 0xbf, 
+0x03, 0xc3, 0x25, 0xa2, 0xb5, 0xbf, 0xb1, 0xdd, 
+0x5a, 0x25, 0x7f, 0x49, 0x3e, 0xe0, 0x54, 0x32, 
+0x1c, 0x1d, 0x09, 0xc3, 0x7c, 0x80, 0x17, 0x0c, 
+0xa3, 0x10, 0x68, 0xed, 0x89, 0x84, 0x5c, 0x6c, 
+0x14, 0x34, 0x64, 0xf0, 0x2f, 0x4a, 0x83, 0xe0, 
+0x9f, 0x32, 0x01, 0xc0, 0x25, 0x7f, 0x16, 0x61, 
+0xe3, 0xfd, 0xe0, 0xd9, 0xd8, 0x00, 0x56, 0x79, 
+0xb9, 0x32, 0x22, 0x20, 0x43, 0x84, 0xdc, 0xac, 
+0x9f, 0x2d, 0x53, 0x72, 0xfc, 0xf1, 0xeb, 0x0b, 
+0xe9, 0xfb, 0x80, 0x82, 0x82, 0x0a, 0x00, 0x8a, 
+0x65, 0x59, 0xfa, 0x53, 0xe7, 0x22, 0x75, 0xff, 
+0x75, 0x10, 0x74, 0xa0, 0x5d, 0xef, 0xc1, 0x3f, 
+0x52, 0xfa, 0x33, 0xdc, 0xe1, 0x0b, 0xe3, 0x5d, 
+0xbe, 0xf0, 0xdd, 0xa9, 0x14, 0x9d, 0x08, 0x00, 
+0x16, 0x5f, 0x63, 0xb6, 0x80, 0x14, 0x09, 0x11, 
+0x11, 0x30, 0x4c, 0x8a, 0x84, 0xfa, 0x52, 0x30, 
+0xec, 0xd8, 0xbb, 0x68, 0x82, 0x7f, 0xaa, 0xdc, 
+0x3f, 0xc1, 0xae, 0x89, 0x01, 0x09, 0x88, 0x10, 
+0xf0, 0x38, 0x58, 0xcf, 0x11, 0x02, 0x19, 0x7c, 
+0xe4, 0x64, 0xfd, 0xcb, 0x22, 0x39, 0xdb, 0xdd, 
+0xbc, 0x38, 0xfd, 0x7c, 0xfa, 0x7e, 0xa0, 0xa0, 
+0xa0, 0x02, 0x80, 0x62, 0xf9, 0xb8, 0xff, 0x0b, 
+0x77, 0x14, 0xd6, 0xfd, 0x4b, 0xe2, 0xfe, 0x4b, 
+0x0f, 0x40, 0xf6, 0xd1, 0x19, 0x35, 0xc8, 0x7f, 
+0x56, 0xab, 0xc7, 0x7e, 0x1a, 0x07, 0xb3, 0x19, 
+0xf7, 0x4f, 0x76, 0xfa, 0x75, 0x49, 0xfe, 0xdf, 
+0x72, 0x70, 0xe6, 0x68, 0x1c, 0x4c, 0xf4, 0xf8, 
+0x33, 0x42, 0x60, 0x08, 0xa7, 0x02, 0xfb, 0x06, 
+0xf2, 0x21, 0x19, 0x83, 0x82, 0x86, 0x0a, 0xfe, 
+0x45, 0x6a, 0x18, 0xfc, 0x53, 0x87, 0xfc, 0x25, 
+0x22, 0x00, 0x11, 0x8a, 0x42, 0xc0, 0xfd, 0xc0, 
+0x01, 0xb0, 0xcc, 0xcf, 0x96, 0x13, 0x01, 0x48, 
+0xfe, 0x60, 0x9e, 0x9d, 0xf9, 0x0f, 0x8b, 0x94, 
+0x6c, 0x7b, 0xfc, 0xfa, 0x5c, 0xfa, 0xde, 0xa0, 
+0xa0, 0xa0, 0x02, 0x80, 0x62, 0xa9, 0x0b, 0x80, 
+0x8c, 0xba, 0x40, 0xae, 0xfb, 0x0f, 0x69, 0xe8, 
+0xd2, 0x7b, 0xf0, 0xaf, 0x60, 0xba, 0x87, 0x19, 
+0xcb, 0x4f, 0x74, 0xfb, 0x69, 0x25, 0xf8, 0xa7, 
+0xae, 0x00, 0x60, 0x71, 0x72, 0x0a, 0x8b, 0x84, 
+0x70, 0xf2, 0x40, 0x84, 0x40, 0x7f, 0x47, 0x00, 
+0x94, 0x0f, 0x57, 0xe2, 0x14, 0x60, 0x74, 0xd1, 
+0x04, 0xff, 0x54, 0x09, 0x80, 0x30, 0x19, 0x84, 
+0x8e, 0xf6, 0x82, 0xeb, 0xbe, 0xfd, 0x3c, 0x21, 
+0xc0, 0x08, 0x00, 0x31, 0x2c, 0xb2, 0x32, 0x7f, 
+0xb2, 0x48, 0xcd, 0xb2, 0x32, 0x2f, 0x4e, 0x3b, 
+0x87, 0xbe, 0x47, 0x28, 0x28, 0xa8, 0x00, 0xa0, 
+0x58, 0x8a, 0xe4, 0x5f, 0x75, 0xe0, 0xb2, 0x1d, 
+0xc5, 0x75, 0x3f, 0xb3, 0xe4, 0x6f, 0x57, 0x72, 
+0x00, 0x72, 0x8e, 0xcd, 0xe8, 0xfd, 0xd4, 0x2f, 
+0xb9, 0xf0, 0x47, 0xdc, 0xff, 0xe9, 0x99, 0x18, 
+0xbd, 0x93, 0xff, 0xb7, 0xe2, 0x12, 0xa1, 0x6f, 
+0x4e, 0x89, 0x8a, 0x84, 0x86, 0xc5, 0xf9, 0x80, 
+0xce, 0xce, 0x30, 0x28, 0x18, 0x6d, 0x58, 0x54, 
+0xc1, 0x3f, 0x75, 0xc8, 0x3f, 0x6c, 0x5c, 0x34, 
+0x09, 0x20, 0x08, 0x41, 0x21, 0xe0, 0x52, 0xb3, 
+0x0f, 0x2c, 0x0b, 0xb2, 0x78, 0x02, 0x40, 0x22, 
+0x04, 0x32, 0x33, 0x7f, 0xb0, 0x48, 0xcb, 0x34, 
+0x41, 0x21, 0x70, 0x36, 0x7d, 0xbf, 0x50, 0x50, 
+0x50, 0x01, 0x40, 0xb1, 0xa4, 0xdc, 0xff, 0x81, 
+0x48, 0xae, 0xfb, 0x0f, 0x3b, 0xdc, 0xa3, 0xf7, 
+0xe0, 0x5f, 0xc9, 0x64, 0x0b, 0x43, 0xfe, 0x64, 
+0x67, 0xdf, 0x50, 0xe4, 0xcf, 0xc5, 0xd7, 0xb8, 
+0x7d, 0x30, 0x33, 0x1c, 0x8a, 0x42, 0xc0, 0x93, 
+0x11, 0x02, 0xcd, 0x3d, 0xb1, 0x90, 0x31, 0xd1, 
+0xba, 0x68, 0x82, 0x7f, 0x4a, 0x05, 0x00, 0x87, 
+0xfc, 0xb9, 0x08, 0x1e, 0xe9, 0x01, 0xe7, 0xaa, 
+0x1a, 0xec, 0x0b, 0xc8, 0x94, 0x11, 0x01, 0x69, 
+0x0c, 0x2c, 0x32, 0x32, 0xbf, 0xb5, 0x48, 0xcf, 
+0x5c, 0x67, 0x5e, 0x9c, 0x7a, 0x16, 0x7d, 0xdf, 
+0x50, 0x50, 0x50, 0x01, 0x40, 0xb1, 0xf8, 0xdd, 
+0xff, 0x9f, 0x77, 0x94, 0x1e, 0xf8, 0x85, 0x25, 
+0x7f, 0xfb, 0x92, 0x7a, 0xc8, 0x3d, 0x3e, 0xab, 
+0xd7, 0xe0, 0x1f, 0x71, 0xff, 0x9d, 0x98, 0xc4, 
+0x27, 0x02, 0xe0, 0x2b, 0x7c, 0x1e, 0xbf, 0x10, 
+0x04, 0x00, 0x8b, 0xaf, 0x8e, 0x25, 0xc0, 0x64, 
+0x7f, 0x90, 0x28, 0x1f, 0x80, 0x38, 0xd0, 0x97, 
+0x01, 0xc9, 0x53, 0x7d, 0x8b, 0xdc, 0xfd, 0xcb, 
+0x93, 0xff, 0x4e, 0x0e, 0x82, 0x47, 0xba, 0xc1, 
+0xa9, 0xb2, 0x1a, 0x85, 0x40, 0x06, 0x4f, 0x00, 
+0x48, 0x84, 0x40, 0x7a, 0xc6, 0x19, 0x8b, 0x8c, 
+0x8c, 0x2f, 0xe8, 0xfb, 0x87, 0x82, 0x82, 0x0a, 
+0x00, 0x8a, 0xc5, 0xed, 0xfe, 0xd3, 0x50, 0x04, 
+0x48, 0xdc, 0xff, 0xee, 0xd6, 0x3e, 0xbd, 0x07, 
+0xff, 0x2a, 0xc7, 0xeb, 0x45, 0x95, 0xbf, 0x83, 
+0x21, 0x0b, 0x8a, 0xfc, 0xb9, 0x38, 0x85, 0x8f, 
+0x25, 0x48, 0x91, 0x10, 0x11, 0x01, 0x03, 0xed, 
+0xbe, 0x50, 0x35, 0x58, 0x04, 0xf1, 0xe8, 0xd6, 
+0x17, 0x4b, 0xf0, 0x4f, 0x99, 0xfb, 0xdf, 0x29, 
+0x87, 0x3e, 0x08, 0x41, 0x04, 0x0e, 0x77, 0x81, 
+0x63, 0x79, 0x15, 0x98, 0x17, 0xca, 0x8a, 0x80, 
+0x54, 0x06, 0x16, 0x69, 0x19, 0x27, 0x2c, 0x32, 
+0x33, 0x3e, 0xa4, 0xef, 0x23, 0x0a, 0x0a, 0x2a, 
+0x00, 0x28, 0x16, 0x9f, 0xfb, 0xbf, 0x66, 0x47, 
+0xd9, 0x81, 0xdf, 0x58, 0x01, 0xe0, 0x50, 0x7c, 
+0x50, 0xfb, 0xee, 0x5f, 0x45, 0xf0, 0x2f, 0xe3, 
+0xd8, 0x04, 0xf4, 0x75, 0x85, 0x8a, 0x2a, 0x7f, 
+0x4f, 0x24, 0x1a, 0x40, 0x00, 0xa4, 0x68, 0x84, 
+0xe3, 0x93, 0x11, 0x30, 0xda, 0xe9, 0xcd, 0x08, 
+0x81, 0xee, 0x8e, 0x20, 0x28, 0x1e, 0xa9, 0x51, 
+0x39, 0xfa, 0x5f, 0x48, 0xc1, 0x3f, 0x55, 0xee, 
+0x9f, 0x2b, 0x00, 0x18, 0x8c, 0xa1, 0x10, 0x18, 
+0xea, 0xc4, 0xc9, 0x50, 0x05, 0x47, 0x08, 0xa4, 
+0xf2, 0x60, 0x91, 0x9a, 0x39, 0x63, 0x9e, 0x9d, 
+0xfe, 0x06, 0x7d, 0x4f, 0x51, 0x50, 0x50, 0x01, 
+0x40, 0xb1, 0x78, 0xdc, 0x7f, 0x31, 0x43, 0xfe, 
+0x62, 0x01, 0x10, 0xd1, 0x31, 0xa0, 0xf7, 0xe0, 
+0x5f, 0xed, 0x68, 0x15, 0xe3, 0xfe, 0x49, 0x31, 
+0xcf, 0x42, 0x75, 0xff, 0xb2, 0xf8, 0xe6, 0x24, 
+0x16, 0x09, 0x8d, 0xee, 0x62, 0xba, 0x03, 0x88, 
+0x10, 0x68, 0xed, 0xde, 0x03, 0xd9, 0x63, 0x4d, 
+0x8b, 0x2a, 0xf8, 0xa7, 0x16, 0xf9, 0x8b, 0x05, 
+0x40, 0xb0, 0x18, 0xfe, 0x83, 0x1d, 0x60, 0x57, 
+0x5c, 0x0e, 0xe6, 0x45, 0xf2, 0x22, 0x80, 0x11, 
+0x02, 0x29, 0x19, 0xe3, 0xe6, 0x39, 0x69, 0x2f, 
+0xd1, 0xf7, 0x16, 0x05, 0x05, 0x15, 0x00, 0x14, 
+0x0b, 0xdb, 0xfd, 0xdf, 0xbc, 0xa3, 0xe2, 0xc0, 
+0xef, 0xac, 0x00, 0x70, 0x2c, 0x6e, 0x98, 0x73, 
+0xf0, 0x2f, 0x7b, 0x8e, 0xc1, 0xbf, 0xac, 0xa3, 
+0xa3, 0x30, 0xd8, 0x19, 0x00, 0x63, 0xe8, 0xa8, 
+0xbf, 0x45, 0x52, 0x5d, 0x0c, 0xe4, 0xcf, 0xcb, 
+0x07, 0xe0, 0xc4, 0x62, 0x1a, 0x1f, 0x5b, 0x0c, 
+0x89, 0xf3, 0x01, 0x8d, 0xbd, 0x89, 0x90, 0x3c, 
+0xd1, 0xb1, 0xa8, 0x82, 0x7f, 0xaa, 0xc8, 0x9f, 
+0x2b, 0x00, 0x44, 0xe8, 0x05, 0xbf, 0x81, 0x36, 
+0xb0, 0x2d, 0x2a, 0x45, 0x21, 0x20, 0x2b, 0x02, 
+0x52, 0x18, 0x58, 0x24, 0x67, 0x0c, 0x9a, 0xe7, 
+0xa5, 0x3e, 0x4d, 0xdf, 0x67, 0x14, 0x14, 0x54, 
+0x00, 0x50, 0x2c, 0x4c, 0xf7, 0x5f, 0x2b, 0x71, 
+0xff, 0x88, 0xe8, 0x9e, 0x41, 0xbd, 0x07, 0xff, 
+0xea, 0x87, 0x0a, 0x75, 0x5a, 0xf9, 0xab, 0x6b, 
+0x01, 0xf0, 0x8d, 0x18, 0xa7, 0x49, 0x91, 0x50, 
+0x5f, 0x80, 0x28, 0x1f, 0x80, 0x53, 0x81, 0xda, 
+0xfe, 0x1c, 0x88, 0x9f, 0xec, 0x5b, 0x54, 0xc1, 
+0x3f, 0xa1, 0xd1, 0xbf, 0x3c, 0xf9, 0x8b, 0x04, 
+0x40, 0x90, 0x18, 0x7e, 0xfd, 0x28, 0x04, 0x0a, 
+0x4a, 0xe4, 0x04, 0x80, 0x04, 0xc9, 0x19, 0x3d, 
+0x66, 0xf9, 0x29, 0x8f, 0xd2, 0xf7, 0x1b, 0x05, 
+0x05, 0x15, 0x00, 0x14, 0x0b, 0xc7, 0xfd, 0xdf, 
+0xb5, 0xa3, 0xf2, 0xc0, 0x1f, 0x2c, 0xf9, 0x3b, 
+0x95, 0x34, 0x6a, 0x2d, 0xf8, 0x97, 0xa5, 0xe6, 
+0xe8, 0x3f, 0x77, 0x66, 0x00, 0x57, 0xec, 0x7c, 
+0x44, 0x95, 0xbf, 0xa7, 0x17, 0x2f, 0xf9, 0x73, 
+0x71, 0x62, 0x2a, 0x0a, 0x46, 0xf1, 0xff, 0x3f, 
+0x44, 0x08, 0xf4, 0xb5, 0xfb, 0x41, 0xe9, 0x60, 
+0x19, 0x8a, 0x80, 0xa1, 0x45, 0x15, 0xfc, 0x13, 
+0x1a, 0xfd, 0x0b, 0x91, 0x3f, 0x8b, 0x40, 0x84, 
+0x4f, 0x5f, 0x2b, 0xec, 0xc8, 0x2f, 0x96, 0x13, 
+0x00, 0x66, 0x0c, 0x92, 0xc1, 0x3c, 0x31, 0xa3, 
+0xcd, 0xac, 0x20, 0xe5, 0x7e, 0xfa, 0xde, 0xa3, 
+0xa0, 0xa0, 0x02, 0x80, 0xc2, 0xf0, 0xee, 0xbf, 
+0x99, 0xeb, 0xfe, 0xe3, 0x06, 0x86, 0xf5, 0x1a, 
+0xfc, 0x23, 0x02, 0xe0, 0xf0, 0x40, 0x06, 0xe3, 
+0xfe, 0x4f, 0xe9, 0xb1, 0xf2, 0x97, 0xe0, 0xf8, 
+0x74, 0x3c, 0xf8, 0x79, 0x7f, 0x09, 0xf7, 0xdd, 
+0x7b, 0x23, 0x3c, 0xfe, 0xd8, 0xed, 0xf0, 0xf9, 
+0xa7, 0xcf, 0xc2, 0xec, 0x44, 0x8c, 0x56, 0x04, 
+0x00, 0x29, 0x11, 0x22, 0x87, 0x86, 0x8e, 0x8d, 
+0xef, 0xc6, 0x7b, 0x06, 0x5e, 0x8c, 0x10, 0xe8, 
+0xe8, 0x08, 0x81, 0xbc, 0x91, 0xfd, 0x8b, 0x2e, 
+0xf8, 0x27, 0x34, 0xfa, 0x57, 0x24, 0x00, 0x18, 
+0x60, 0x99, 0x90, 0x4f, 0xcf, 0x11, 0xd8, 0x8e, 
+0x27, 0x88, 0x65, 0x05, 0x80, 0x59, 0x11, 0xa2, 
+0x90, 0x11, 0x02, 0x4d, 0x66, 0x45, 0x49, 0x77, 
+0xd1, 0xf7, 0x20, 0x05, 0x05, 0x15, 0x00, 0x14, 
+0x86, 0x20, 0xff, 0x8a, 0xfa, 0x47, 0xb8, 0xe4, 
+0xef, 0x52, 0xd2, 0xa4, 0xf7, 0xe0, 0x5f, 0xe1, 
+0x74, 0x27, 0x93, 0xfa, 0x9f, 0xc4, 0xfe, 0x7d, 
+0x7d, 0x92, 0x7f, 0x45, 0xa9, 0x33, 0xfc, 0xdf, 
+0xff, 0x5d, 0x86, 0xaf, 0xfa, 0xff, 0xc7, 0xc3, 
+0xd3, 0x4f, 0xdd, 0x09, 0xa7, 0x8e, 0x26, 0xcc, 
+0x8f, 0xfc, 0x25, 0x02, 0x40, 0x84, 0xaf, 0x4e, 
+0x26, 0x32, 0x45, 0x42, 0x6c, 0x3e, 0xe0, 0x70, 
+0x77, 0x14, 0xa4, 0x8e, 0x1d, 0x59, 0x74, 0xc1, 
+0x3f, 0x55, 0xee, 0x9f, 0x25, 0xff, 0xc0, 0xd1, 
+0x1e, 0x08, 0x10, 0xc3, 0xab, 0xab, 0x19, 0x6c, 
+0x72, 0xf3, 0xf9, 0x02, 0x80, 0x45, 0x61, 0xd2, 
+0x1f, 0xe6, 0x89, 0xe9, 0xfb, 0x51, 0x08, 0xdc, 
+0x4a, 0xdf, 0x8f, 0x14, 0x14, 0x54, 0x00, 0x50, 
+0xe8, 0x53, 0x00, 0x64, 0xd6, 0xf7, 0x70, 0x05, 
+0x40, 0xe2, 0xc8, 0x88, 0x5e, 0x83, 0x7f, 0x44, 
+0x00, 0xb4, 0xf5, 0xc5, 0x8b, 0x2a, 0x7f, 0x67, 
+0x63, 0xf5, 0x46, 0xfe, 0xd9, 0xe9, 0x36, 0x70, 
+0xc1, 0x05, 0xe7, 0xc9, 0x91, 0x3f, 0x8b, 0xd1, 
+0x81, 0x3d, 0x5a, 0x23, 0x7f, 0x2e, 0xce, 0x1c, 
+0xc7, 0x22, 0x21, 0xbc, 0x38, 0xc8, 0x0a, 0x81, 
+0xba, 0xde, 0x54, 0x88, 0x9f, 0xe8, 0x5e, 0x74, 
+0xc1, 0xbf, 0x20, 0x0d, 0x04, 0x00, 0x0b, 0xcf, 
+0x8e, 0xc3, 0x60, 0x9d, 0x9b, 0xcb, 0x17, 0x00, 
+0x45, 0x49, 0x22, 0x14, 0x24, 0xff, 0x61, 0x9e, 
+0x90, 0x5e, 0x89, 0x5f, 0xdf, 0x48, 0xdf, 0x97, 
+0x14, 0x14, 0x54, 0x00, 0x50, 0xe8, 0x9a, 0xfc, 
+0x8b, 0xeb, 0x9f, 0xdf, 0x51, 0x55, 0x2f, 0x21, 
+0x7f, 0xb7, 0xd2, 0xc3, 0x7a, 0x0f, 0xfe, 0x95, 
+0x4d, 0x1c, 0x66, 0xc8, 0x7f, 0x1a, 0xdb, 0xf5, 
+0xf4, 0xe5, 0xfe, 0xeb, 0x6a, 0x3d, 0xe1, 0xbc, 
+0x73, 0xcf, 0x51, 0x48, 0xfe, 0xe7, 0x9c, 0x73, 
+0x36, 0x9c, 0x98, 0x89, 0xd3, 0x89, 0x00, 0x60, 
+0x71, 0x6a, 0x26, 0x16, 0xc6, 0xc4, 0x45, 0x42, 
+0xfd, 0xed, 0xde, 0x50, 0xd1, 0x9f, 0x0f, 0xd1, 
+0x93, 0xfd, 0x8b, 0x2e, 0xf8, 0xa7, 0x2e, 0xf9, 
+0x13, 0xf8, 0x8b, 0xe1, 0xde, 0xd6, 0x08, 0x56, 
+0x39, 0x39, 0x7c, 0x01, 0x20, 0x15, 0x02, 0xbf, 
+0x9b, 0x27, 0xa4, 0x15, 0x99, 0x15, 0x25, 0x5e, 
+0x4b, 0xdf, 0xa3, 0x14, 0x14, 0x54, 0x00, 0x50, 
+0xe8, 0x4a, 0x00, 0x64, 0xd5, 0x8f, 0x71, 0x05, 
+0x40, 0xf2, 0xf8, 0x98, 0x5e, 0x83, 0x7f, 0xe9, 
+0xc7, 0x26, 0xa1, 0xab, 0x7b, 0x37, 0x23, 0x00, 
+0xbe, 0xc6, 0x8a, 0x5d, 0x7d, 0x90, 0x3f, 0x79, 
+0xe6, 0x7f, 0xe7, 0x1d, 0xd7, 0x2a, 0x24, 0xff, 
+0x8b, 0x2f, 0xbe, 0x00, 0x72, 0xb3, 0xb6, 0x2b, 
+0x24, 0xfc, 0xe1, 0xfe, 0x70, 0xa8, 0x2a, 0x73, 
+0x86, 0x83, 0xfb, 0xbd, 0xe0, 0x6b, 0x7c, 0xbe, 
+0x3f, 0x17, 0xf2, 0xe7, 0xe2, 0x38, 0x66, 0x1e, 
+0x86, 0x71, 0xed, 0x71, 0xb0, 0xd5, 0x1d, 0x8b, 
+0x84, 0x02, 0xa0, 0x70, 0xa8, 0x12, 0x09, 0x7f, 
+0x50, 0x2f, 0xc1, 0xbf, 0x50, 0x1d, 0x8d, 0xfe, 
+0x03, 0x95, 0x90, 0xbf, 0x08, 0xdd, 0xe0, 0x87, 
+0x70, 0x6b, 0x69, 0x00, 0xab, 0xec, 0x2c, 0x79, 
+0x11, 0x50, 0x94, 0x08, 0x66, 0xf9, 0x49, 0xbf, 
+0xa1, 0x10, 0xc8, 0xc6, 0xaf, 0xff, 0x42, 0xdf, 
+0xab, 0x14, 0x14, 0x54, 0x00, 0x50, 0x68, 0x93, 
+0xfc, 0x0b, 0xeb, 0xdf, 0x12, 0x91, 0xbf, 0x48, 
+0x00, 0x78, 0x94, 0x37, 0xeb, 0x3d, 0xf8, 0x57, 
+0x3d, 0xb6, 0x9f, 0x21, 0xff, 0xd9, 0xa1, 0x9d, 
+0x7a, 0x73, 0xff, 0x1e, 0x6e, 0x5f, 0x28, 0x24, 
+0xff, 0xbf, 0xfc, 0xe5, 0x32, 0xa8, 0xdf, 0xe7, 
+0x29, 0x48, 0xfc, 0xe5, 0xc5, 0x8e, 0xf0, 0xc0, 
+0xfd, 0x37, 0xf1, 0xbe, 0xff, 0xcf, 0x7f, 0xbe, 
+0x14, 0x36, 0x6d, 0x78, 0x05, 0x66, 0x27, 0x63, 
+0xe7, 0x44, 0xfe, 0x04, 0x5f, 0x13, 0x60, 0xe7, 
+0xc1, 0xec, 0x68, 0x38, 0x0c, 0xe1, 0x9f, 0x05, 
+0x11, 0x02, 0xad, 0x5d, 0xe1, 0x90, 0x31, 0x72, 
+0x70, 0x51, 0x06, 0xff, 0x54, 0xb9, 0x7f, 0x42, 
+0xfe, 0xac, 0x00, 0xf0, 0x1b, 0x11, 0xc1, 0xf5, 
+0x70, 0x3d, 0x58, 0xe6, 0x64, 0xf1, 0x05, 0x00, 
+0x8b, 0xbc, 0xa4, 0x5f, 0xcd, 0x13, 0xd3, 0x92, 
+0xf1, 0xeb, 0x2b, 0xe9, 0xfb, 0x96, 0x82, 0x82, 
+0x0a, 0x00, 0x0a, 0x6d, 0x08, 0x80, 0x9c, 0xfa, 
+0xa3, 0x12, 0x01, 0x50, 0x79, 0x00, 0x52, 0x27, 
+0xc7, 0xf5, 0x1a, 0xfc, 0xcb, 0x3c, 0x3a, 0x0e, 
+0x7d, 0x9d, 0x21, 0x30, 0xda, 0x21, 0xaa, 0xfc, 
+0xd5, 0xd7, 0xb3, 0xff, 0x7b, 0xef, 0xb9, 0x41, 
+0x90, 0xfc, 0xaf, 0xbe, 0xea, 0x0a, 0x68, 0x69, 
+0xf2, 0x97, 0x23, 0xfe, 0xae, 0xb6, 0x60, 0x78, 
+0xef, 0x9d, 0xc7, 0x15, 0x8a, 0x06, 0x82, 0xbb, 
+0xee, 0xba, 0x0e, 0x9a, 0x1b, 0xfd, 0x34, 0x16, 
+0x00, 0x5f, 0xcb, 0xe0, 0xab, 0x13, 0x09, 0x30, 
+0x35, 0xb8, 0x93, 0x79, 0x2c, 0x40, 0x84, 0x40, 
+0x43, 0x4f, 0x3c, 0x44, 0x8f, 0x77, 0x2d, 0xca, 
+0xe0, 0x9f, 0x2a, 0xf7, 0xcf, 0x92, 0x3f, 0x0b, 
+0x5f, 0x84, 0x4b, 0xd3, 0x01, 0x14, 0x02, 0x99, 
+0x7c, 0x01, 0xc0, 0x22, 0x37, 0xe9, 0x17, 0xf3, 
+0xc4, 0xd4, 0x68, 0xb3, 0xa2, 0x84, 0xcb, 0xe9, 
+0xfb, 0x97, 0x82, 0x82, 0x0a, 0x00, 0x8a, 0x39, 
+0xc2, 0x36, 0xaf, 0xfe, 0x73, 0xa9, 0xfb, 0xaf, 
+0x07, 0xaf, 0xaa, 0x23, 0x7a, 0x0f, 0xfe, 0xed, 
+0x1b, 0x29, 0x67, 0xdc, 0xff, 0x31, 0xac, 0xd0, 
+0xd5, 0x17, 0xf9, 0x37, 0xd5, 0xfb, 0x0a, 0x12, 
+0xf8, 0x75, 0xd7, 0x5e, 0x09, 0x6d, 0xcd, 0x81, 
+0x72, 0xe4, 0xef, 0xeb, 0xb5, 0x0a, 0xce, 0x3b, 
+0xef, 0x5c, 0xa5, 0xe4, 0xcf, 0xe2, 0x92, 0x4b, 
+0x2e, 0x80, 0xc1, 0xde, 0xf0, 0x79, 0x09, 0x00, 
+0x16, 0xa7, 0x8e, 0x89, 0x8a, 0x84, 0x88, 0x08, 
+0xe8, 0xe8, 0x08, 0x86, 0xf8, 0xb1, 0xd6, 0x79, 
+0x05, 0xff, 0xc2, 0x0c, 0x18, 0xfc, 0xf3, 0x57, 
+0xe1, 0xfe, 0x59, 0xf2, 0x97, 0xa2, 0x0b, 0x9c, 
+0x1b, 0xf6, 0x83, 0x45, 0x4e, 0xba, 0x80, 0x10, 
+0x48, 0x00, 0xb3, 0x9c, 0xa4, 0xff, 0xa1, 0x10, 
+0xd8, 0x85, 0x5f, 0x5f, 0x42, 0xdf, 0xcb, 0x14, 
+0x14, 0x54, 0x00, 0x50, 0x68, 0x42, 0xfe, 0x55, 
+0xf5, 0x67, 0xa1, 0x00, 0xf8, 0x4a, 0x22, 0x00, 
+0x2a, 0xea, 0x21, 0x7d, 0x7a, 0x42, 0xaf, 0xc1, 
+0xbf, 0xec, 0xa3, 0xc3, 0x30, 0xd4, 0xe1, 0x87, 
+0x95, 0xbf, 0x3e, 0xf0, 0x2d, 0x12, 0x9e, 0xbe, 
+0x04, 0x80, 0xa2, 0xf1, 0xbf, 0xa3, 0xdd, 0x47, 
+0x3c, 0xe2, 0x3f, 0x39, 0x1b, 0x0f, 0x2b, 0x3f, 
+0x7f, 0x4e, 0x2d, 0xe2, 0xe7, 0xc2, 0x78, 0xf3, 
+0x6b, 0xf3, 0x26, 0x7f, 0x2e, 0x66, 0x51, 0x1c, 
+0x11, 0x11, 0xd0, 0xd4, 0x15, 0xb9, 0xe8, 0x83, 
+0x7f, 0x8a, 0xc8, 0xdf, 0x4f, 0x86, 0xfc, 0x09, 
+0x7c, 0x08, 0x86, 0x3b, 0xc1, 0xa9, 0x7e, 0x1f, 
+0x0a, 0x81, 0x34, 0xbe, 0x00, 0x60, 0x91, 0x9d, 
+0xf4, 0xb3, 0x59, 0x52, 0x6a, 0xc0, 0xb6, 0xa2, 
+0xf8, 0x8b, 0xe8, 0xfb, 0x9a, 0x82, 0x82, 0x0a, 
+0x00, 0x0a, 0x75, 0x04, 0x40, 0x6e, 0xfd, 0x26, 
+0x5b, 0x8e, 0xfb, 0xf7, 0xdd, 0xdb, 0xa6, 0x98, 
+0xfc, 0x4f, 0xe8, 0x22, 0xf8, 0x37, 0x05, 0x0d, 
+0x83, 0x79, 0x8c, 0xfb, 0x3f, 0x31, 0xb1, 0x47, 
+0xaf, 0x8d, 0x7f, 0x5e, 0xee, 0x2b, 0x05, 0x89, 
+0xdb, 0xdd, 0xf5, 0x73, 0x09, 0xf9, 0xf7, 0x77, 
+0x87, 0xc1, 0x63, 0x8f, 0xde, 0xa6, 0x31, 0xf9, 
+0x13, 0x9c, 0x7f, 0xfe, 0xb9, 0xcc, 0xaf, 0xd7, 
+0x8e, 0x00, 0x48, 0x66, 0x30, 0xd1, 0x1f, 0xc8, 
+0x88, 0x80, 0xb4, 0x91, 0x86, 0x05, 0x1c, 0xfc, 
+0xeb, 0x55, 0x3b, 0xf8, 0xa7, 0xca, 0xfd, 0xfb, 
+0xc8, 0x02, 0x85, 0x80, 0x43, 0x5d, 0x8d, 0x58, 
+0x08, 0x24, 0xf0, 0xb0, 0x8d, 0x11, 0x02, 0x89, 
+0xff, 0x36, 0x4b, 0x4e, 0xf1, 0x40, 0x21, 0x70, 
+0x3e, 0x7d, 0x7f, 0x53, 0x50, 0x50, 0x01, 0x40, 
+0xa1, 0xd0, 0xfd, 0x1f, 0x3c, 0xc7, 0x36, 0xbf, 
+0xfe, 0x07, 0x5b, 0x8e, 0xfb, 0xcf, 0x98, 0x99, 
+0xd4, 0xab, 0xfb, 0xcf, 0x9b, 0xe9, 0x83, 0x11, 
+0x5c, 0x7b, 0x1b, 0xef, 0xf6, 0xd3, 0x7b, 0xe5, 
+0x6f, 0x48, 0xe0, 0x3a, 0x41, 0xe2, 0x26, 0x63, 
+0x7e, 0x0f, 0xb7, 0xcf, 0x61, 0xbb, 0xf5, 0xfb, 
+0xcc, 0x28, 0x5f, 0x19, 0xc9, 0xbf, 0xf2, 0xf2, 
+0x03, 0xf0, 0xfe, 0xbb, 0x8a, 0x33, 0x01, 0x45, 
+0x79, 0x76, 0x5a, 0x71, 0xff, 0xac, 0x00, 0x38, 
+0x31, 0x1d, 0xc5, 0x08, 0x80, 0x92, 0x81, 0xa2, 
+0xe5, 0xe3, 0xfe, 0x39, 0xf0, 0x26, 0x18, 0xee, 
+0x02, 0x2f, 0x3c, 0x41, 0xec, 0xb0, 0xaf, 0x1a, 
+0xcc, 0x73, 0x53, 0x78, 0x02, 0x00, 0x89, 0x9f, 
+0x81, 0x59, 0x56, 0xd2, 0x3f, 0xcd, 0x92, 0x52, 
+0xec, 0xb7, 0x15, 0xc6, 0x9d, 0x47, 0xdf, 0xeb, 
+0x14, 0x14, 0x54, 0x00, 0x50, 0xc8, 0x0a, 0x80, 
+0xec, 0x83, 0xd6, 0x84, 0xfc, 0x59, 0x01, 0xe0, 
+0xbf, 0xaf, 0x5d, 0xaf, 0xc1, 0x3f, 0x82, 0xe6, 
+0xfe, 0x54, 0x51, 0xe9, 0x0f, 0xf6, 0xe4, 0xeb, 
+0xbb, 0xef, 0x9f, 0xac, 0xf7, 0xcd, 0xc5, 0xd9, 
+0x13, 0x5c, 0x73, 0xf5, 0x15, 0x50, 0x52, 0xe8, 
+0x20, 0x49, 0xfb, 0x9b, 0x6d, 0x7d, 0x4b, 0xf0, 
+0xfb, 0x72, 0x32, 0x6c, 0xb4, 0x46, 0xfe, 0x04, 
+0xa7, 0x8e, 0xc6, 0x32, 0x02, 0xa0, 0xb2, 0x2f, 
+0x7b, 0x49, 0x06, 0xff, 0x94, 0xb9, 0x7f, 0x96, 
+0xfc, 0x45, 0xe8, 0x64, 0xe0, 0x39, 0xd8, 0x0e, 
+0xf6, 0x7b, 0x2b, 0x51, 0x08, 0x24, 0xf3, 0x04, 
+0x00, 0x83, 0x42, 0x14, 0x02, 0x19, 0x89, 0x3f, 
+0x99, 0x25, 0x27, 0x5b, 0xa1, 0x10, 0x38, 0x87, 
+0xbe, 0xe7, 0x29, 0x28, 0xa8, 0x00, 0xa0, 0x10, 
+0xb9, 0xff, 0xf3, 0x6c, 0x0b, 0x0f, 0xfe, 0x9d, 
+0x15, 0x00, 0xb6, 0xe5, 0x07, 0x21, 0x73, 0x76, 
+0x4a, 0xaf, 0xc1, 0xbf, 0xa2, 0xa9, 0x76, 0x18, 
+0x69, 0xc3, 0xca, 0xdf, 0xde, 0x00, 0x83, 0x1c, 
+0xfb, 0x21, 0xbd, 0xfc, 0x8f, 0x3c, 0x7c, 0x8b, 
+0xc6, 0xe4, 0xff, 0xe8, 0x23, 0xb7, 0x42, 0x7f, 
+0x4f, 0x18, 0x6f, 0xd7, 0xdf, 0xda, 0xf2, 0x5d, 
+0xc1, 0xef, 0x4d, 0x49, 0x34, 0xd7, 0xaa, 0x00, 
+0x38, 0x8a, 0x77, 0x04, 0x88, 0x00, 0xc8, 0x1f, 
+0xac, 0x58, 0xd2, 0xc1, 0x3f, 0x41, 0x01, 0x20, 
+0x43, 0xfe, 0x04, 0x5e, 0x62, 0x10, 0x21, 0x60, 
+0x5b, 0x5d, 0x41, 0xd6, 0x04, 0x79, 0x02, 0x00, 
+0x89, 0x9f, 0x81, 0x59, 0x7a, 0xe2, 0x5f, 0xcd, 
+0x52, 0x92, 0x4c, 0xf0, 0xeb, 0xb3, 0xe9, 0xfb, 
+0x9f, 0x82, 0x82, 0x0a, 0x80, 0xe5, 0x2d, 0x00, 
+0xb2, 0x0e, 0xba, 0xa1, 0x08, 0x00, 0x56, 0x00, 
+0x04, 0xd5, 0x77, 0xea, 0x75, 0xf4, 0x4f, 0xd0, 
+0xde, 0x1b, 0xc3, 0xb8, 0xff, 0x33, 0x7a, 0xac, 
+0xfc, 0x95, 0xbd, 0xf6, 0x57, 0x90, 0x6b, 0xab, 
+0x11, 0xf9, 0x93, 0x30, 0x20, 0x09, 0x05, 0x72, 
+0xc9, 0xff, 0xcc, 0x89, 0x24, 0xe6, 0x78, 0x90, 
+0xd0, 0xf7, 0xb7, 0x1e, 0x0a, 0xd0, 0x1a, 0xf9, 
+0x13, 0x8c, 0x76, 0xfb, 0xe2, 0x49, 0x61, 0x0f, 
+0x88, 0x1a, 0xeb, 0x5a, 0x84, 0xa3, 0xff, 0x9e, 
+0x79, 0x8f, 0xfe, 0xb9, 0x02, 0xc0, 0x8b, 0x87, 
+0x0e, 0xf0, 0x44, 0x78, 0x0c, 0xb6, 0x80, 0x6d, 
+0x45, 0x19, 0x0a, 0x81, 0x44, 0x9e, 0x00, 0x90, 
+0x08, 0x81, 0xb4, 0xc4, 0x6f, 0xcd, 0x52, 0x13, 
+0xd7, 0x6f, 0x2b, 0x8c, 0x3d, 0x8b, 0x7e, 0x0e, 
+0x50, 0x50, 0x50, 0x01, 0xb0, 0x1c, 0xdd, 0xff, 
+0x45, 0xb6, 0x45, 0x07, 0xff, 0xcd, 0x0a, 0x00, 
+0xbb, 0xb2, 0x83, 0x90, 0x75, 0x74, 0x5a, 0xaf, 
+0xc1, 0xbf, 0xf2, 0xf1, 0x46, 0x86, 0xfc, 0x67, 
+0xb0, 0x07, 0xdf, 0xd0, 0xa7, 0x7e, 0x23, 0xc2, 
+0x8d, 0x94, 0xde, 0x01, 0x20, 0xb8, 0xe3, 0xf6, 
+0x6b, 0xf0, 0x5e, 0x80, 0xb5, 0x60, 0xdd, 0xef, 
+0x36, 0xd3, 0x37, 0x05, 0x7f, 0xcd, 0x43, 0x0f, 
+0xdd, 0xa2, 0x95, 0xe0, 0x1f, 0x8b, 0x63, 0x13, 
+0x11, 0x8c, 0xfb, 0xaf, 0xed, 0x49, 0x5d, 0x5e, 
+0xc1, 0x3f, 0x35, 0xc9, 0x5f, 0x84, 0x76, 0xf0, 
+0x40, 0xb8, 0x0f, 0x1c, 0x81, 0x1d, 0x65, 0x25, 
+0x28, 0x04, 0x12, 0xe4, 0x44, 0x00, 0x92, 0x3f, 
+0xa0, 0x08, 0x38, 0x83, 0x62, 0xe0, 0x0b, 0xfa, 
+0x79, 0x40, 0x41, 0x41, 0x05, 0xc0, 0xf2, 0x12, 
+0x00, 0x99, 0x07, 0x83, 0x45, 0xe4, 0x2f, 0x12, 
+0x00, 0x3b, 0x1b, 0xbb, 0xf4, 0xea, 0xfe, 0x33, 
+0xb0, 0xf2, 0xb7, 0x07, 0xdb, 0xed, 0xc8, 0xc5, 
+0xbf, 0x6f, 0x8e, 0x27, 0xea, 0x59, 0x00, 0x08, 
+0x57, 0xfa, 0x36, 0xd4, 0x79, 0xc3, 0x5d, 0x77, 
+0xca, 0x57, 0x02, 0xff, 0xe9, 0x8a, 0x8b, 0x21, 
+0xc0, 0x77, 0x35, 0x9c, 0xc6, 0xff, 0x4e, 0xd9, 
+0xbe, 0xff, 0x53, 0x58, 0x57, 0xac, 0x88, 0xfc, 
+0x09, 0xbc, 0x3d, 0x57, 0x69, 0xcd, 0xfd, 0x7f, 
+0x85, 0xed, 0x80, 0xc3, 0xb8, 0x26, 0xd9, 0x87, 
+0x8f, 0x4c, 0xa2, 0xc7, 0x3a, 0x97, 0x65, 0xf0, 
+0x4f, 0x91, 0x00, 0xe0, 0x92, 0xbf, 0x48, 0x00, 
+0xb4, 0x89, 0xd1, 0x0a, 0xae, 0xfd, 0x87, 0x61, 
+0x7b, 0x49, 0x11, 0x6c, 0xcb, 0x8b, 0xe7, 0x09, 
+0x00, 0x16, 0x66, 0x29, 0x89, 0x27, 0xcc, 0xd2, 
+0x13, 0x3e, 0xa4, 0x9f, 0x0b, 0x14, 0x14, 0x54, 
+0x00, 0x2c, 0x07, 0xf7, 0x7f, 0x99, 0x6d, 0xc9, 
+0xc1, 0xff, 0xb2, 0x02, 0xc0, 0xbe, 0xf4, 0x20, 
+0x64, 0x1f, 0x9b, 0xd1, 0x6b, 0xf0, 0x6f, 0xef, 
+0x68, 0x8d, 0xb8, 0xf2, 0x37, 0xd4, 0xe0, 0xee, 
+0x5f, 0x16, 0xed, 0x47, 0x02, 0x61, 0xd7, 0xce, 
+0x8d, 0x10, 0x1c, 0xb0, 0x0e, 0x72, 0x32, 0x6d, 
+0x60, 0x72, 0x34, 0x4a, 0xf0, 0xd8, 0x4f, 0xc3, 
+0x01, 0x6f, 0x78, 0xf0, 0x81, 0x9b, 0x14, 0x92, 
+0xff, 0x65, 0x97, 0x5e, 0x04, 0x43, 0x7d, 0xe1, 
+0x5a, 0x1b, 0xfd, 0xcf, 0x8e, 0x85, 0x33, 0xee, 
+0xbf, 0xbc, 0x2f, 0x6f, 0xd9, 0x07, 0xff, 0x84, 
+0xdd, 0xbf, 0x2c, 0xf9, 0xb7, 0x81, 0x3b, 0x0a, 
+0x00, 0x11, 0x5a, 0xc0, 0xa5, 0xbf, 0x09, 0x6c, 
+0x8a, 0x0b, 0x60, 0x5b, 0x7e, 0x3c, 0x4f, 0x00, 
+0x48, 0x84, 0x40, 0x72, 0xd2, 0xac, 0x59, 0x46, 
+0xfc, 0x9b, 0xf4, 0x33, 0x82, 0x82, 0x82, 0x0a, 
+0x80, 0xa5, 0x2b, 0x00, 0x32, 0x0e, 0xc6, 0x48, 
+0xdd, 0xff, 0x41, 0x08, 0x6b, 0xee, 0xd5, 0x6b, 
+0xf0, 0x2f, 0xf3, 0xe8, 0x18, 0x0c, 0x74, 0x06, 
+0x89, 0x2a, 0x7f, 0x4f, 0x26, 0x2d, 0x28, 0xf2, 
+0x57, 0xf7, 0xd2, 0x5f, 0x45, 0xa9, 0x93, 0xca, 
+0x46, 0xc0, 0xc4, 0xb8, 0x6d, 0x5a, 0x73, 0xff, 
+0x67, 0xb0, 0x1a, 0x99, 0xdc, 0x05, 0xe8, 0x6e, 
+0xf7, 0x87, 0x88, 0xf1, 0x5e, 0x1a, 0xfc, 0x53, 
+0xe0, 0xfe, 0x3d, 0x38, 0x02, 0x40, 0x4a, 0xfe, 
+0x22, 0x01, 0xe0, 0xc6, 0xe0, 0x08, 0xb8, 0xf4, 
+0x35, 0x82, 0x75, 0x61, 0x1e, 0x0a, 0x81, 0x38, 
+0x01, 0x21, 0x10, 0x83, 0x42, 0x20, 0x71, 0xdc, 
+0x2c, 0x2b, 0xee, 0x25, 0xfa, 0x59, 0x41, 0x41, 
+0x41, 0x05, 0xc0, 0x52, 0x73, 0xff, 0x7f, 0xb6, 
+0x2d, 0x3d, 0xf8, 0x0b, 0x4b, 0xfe, 0x0e, 0xa5, 
+0x8d, 0x0c, 0xc1, 0xeb, 0x33, 0xf8, 0x57, 0x37, 
+0x5c, 0xc2, 0xb8, 0xff, 0xe3, 0x63, 0xbb, 0x0d, 
+0xe2, 0xfe, 0x4f, 0x1d, 0x4d, 0x60, 0x9e, 0xf9, 
+0x6f, 0xde, 0xf8, 0x0a, 0x7c, 0xf8, 0xfe, 0x13, 
+0xf0, 0xfc, 0xb3, 0xf7, 0xc0, 0xdd, 0x77, 0x5f, 
+0xcf, 0x5c, 0x04, 0x5c, 0xbf, 0xf6, 0x25, 0x48, 
+0x8a, 0xdf, 0x06, 0xe3, 0x43, 0x11, 0x0a, 0x05, 
+0xc0, 0x29, 0x7c, 0x14, 0x70, 0xe5, 0x95, 0x97, 
+0x2a, 0x25, 0xff, 0x0d, 0xeb, 0x5e, 0xd2, 0x6a, 
+0xf0, 0x6f, 0x7a, 0x78, 0x27, 0xe3, 0xfe, 0x0b, 
+0x07, 0xcb, 0x68, 0xf0, 0x4f, 0x2d, 0xf7, 0x2f, 
+0x4c, 0xfe, 0x04, 0xae, 0xc3, 0xcd, 0x0c, 0x9c, 
+0x7b, 0xeb, 0xc1, 0xba, 0x20, 0x17, 0xb6, 0x15, 
+0xf0, 0x05, 0x00, 0x0b, 0xb3, 0xa4, 0xc4, 0xa1, 
+0xad, 0x39, 0xb1, 0x4f, 0xd3, 0xcf, 0x0d, 0x0a, 
+0x2a, 0x00, 0x28, 0x96, 0x86, 0x00, 0x48, 0x3f, 
+0x98, 0xc9, 0x75, 0xff, 0xbb, 0xdb, 0xfa, 0xe6, 
+0x19, 0xfc, 0x9b, 0xd1, 0x28, 0xf8, 0x97, 0x33, 
+0x3b, 0x04, 0xc3, 0x58, 0xf9, 0x3b, 0xde, 0xe5, 
+0x03, 0xdf, 0xe9, 0xa8, 0xf2, 0x57, 0x11, 0xf9, 
+0x4f, 0x0c, 0x47, 0x80, 0xb3, 0xc3, 0x27, 0x70, 
+0xd5, 0x55, 0x97, 0xab, 0x4c, 0xfa, 0x9f, 0x75, 
+0xd6, 0x59, 0xf0, 0x2a, 0x16, 0xfc, 0x4c, 0x8d, 
+0x45, 0xc9, 0xb9, 0xff, 0x16, 0x4c, 0xf5, 0x2b, 
+0xfb, 0xb5, 0x5b, 0x8c, 0x5e, 0xc7, 0x23, 0x3e, 
+0xc9, 0x5a, 0x13, 0x00, 0xa7, 0x8f, 0xc5, 0xc3, 
+0x60, 0x9b, 0x27, 0xb4, 0x75, 0x84, 0xc0, 0x6e, 
+0x24, 0x76, 0x1a, 0xfc, 0x53, 0x1c, 0xfc, 0x13, 
+0x1a, 0xfd, 0x73, 0xc9, 0x9f, 0x2b, 0x00, 0x5c, 
+0x87, 0x0f, 0x83, 0x0b, 0xc2, 0xb1, 0xf7, 0x00, 
+0x58, 0xe5, 0xe5, 0x88, 0x85, 0x40, 0x0c, 0x0f, 
+0x5b, 0x0b, 0xa3, 0x61, 0x5b, 0x62, 0x62, 0xcf, 
+0xd6, 0xdc, 0x98, 0xc7, 0xe8, 0xe7, 0x07, 0x05, 
+0x15, 0x00, 0x14, 0x8b, 0xd8, 0xfd, 0x37, 0x5c, 
+0x6b, 0x5b, 0x76, 0xf0, 0x37, 0x96, 0xfc, 0x1d, 
+0x4b, 0xf4, 0xef, 0xfe, 0x9b, 0x06, 0xb3, 0x19, 
+0xf7, 0x7f, 0x12, 0x6f, 0xde, 0xeb, 0xcb, 0xfd, 
+0x13, 0xd2, 0xdd, 0x61, 0xf3, 0x3e, 0x5c, 0x78, 
+0xe1, 0xf9, 0x1a, 0xef, 0xfb, 0x93, 0x4b, 0x81, 
+0xc7, 0xa6, 0x62, 0x79, 0x02, 0x80, 0xac, 0xfc, 
+0xdd, 0x78, 0xe3, 0xff, 0xc9, 0xb7, 0x07, 0x9e, 
+0x7b, 0x8e, 0xd2, 0xd0, 0xdf, 0x5c, 0xdd, 0xff, 
+0xe4, 0x40, 0x10, 0xe3, 0xfe, 0xb3, 0x86, 0x6a, 
+0x69, 0xf0, 0x4f, 0xcd, 0xe0, 0x9f, 0x2a, 0xf7, 
+0xcf, 0x92, 0xbf, 0xcb, 0xf0, 0x21, 0x06, 0xce, 
+0xc3, 0x4d, 0xe0, 0xd0, 0xbd, 0x1f, 0xac, 0x72, 
+0x33, 0xe5, 0x04, 0x00, 0x8b, 0x6d, 0x09, 0x89, 
+0x6d, 0x5b, 0xf3, 0x63, 0x1e, 0xa0, 0x9f, 0x25, 
+0x14, 0x54, 0x00, 0x50, 0x2c, 0x42, 0xf7, 0xdf, 
+0x50, 0xca, 0x75, 0xff, 0x91, 0x9d, 0x03, 0x7a, 
+0x0d, 0xfe, 0xe5, 0xcf, 0xf4, 0x60, 0xe5, 0xaf, 
+0x17, 0x4c, 0xe8, 0xb0, 0xf2, 0x57, 0x96, 0xfc, 
+0x4f, 0x1f, 0x4b, 0x84, 0x8f, 0x3f, 0x7a, 0x7a, 
+0xce, 0x6d, 0x7f, 0xe7, 0x9e, 0x7b, 0x36, 0x93, 
+0xfe, 0x97, 0x5d, 0xfb, 0x6b, 0x6f, 0x09, 0x62, 
+0x44, 0x00, 0x99, 0x14, 0x90, 0xef, 0x59, 0xbd, 
+0xea, 0x05, 0x3c, 0x13, 0x1c, 0xa2, 0x75, 0xf2, 
+0x67, 0x5b, 0xff, 0x0e, 0x77, 0x45, 0xd0, 0xe0, 
+0xdf, 0x1c, 0x82, 0x7f, 0xc2, 0xe4, 0x2f, 0x2c, 
+0x00, 0x44, 0x68, 0x04, 0xfb, 0xae, 0x5a, 0x3c, 
+0x41, 0x9c, 0x21, 0x27, 0x00, 0x18, 0x14, 0xa0, 
+0x10, 0x88, 0x4f, 0x68, 0xda, 0x5a, 0x10, 0x75, 
+0x17, 0xfd, 0x4c, 0xa1, 0xa0, 0x02, 0x80, 0x62, 
+0xb1, 0xb8, 0xff, 0x5b, 0x6c, 0x2b, 0x1a, 0xfe, 
+0x60, 0xc9, 0xdf, 0xa9, 0xa4, 0x49, 0xaf, 0xc1, 
+0x3f, 0x82, 0x96, 0xbe, 0x24, 0x51, 0xe5, 0xef, 
+0x4c, 0x8c, 0xde, 0x46, 0xff, 0xe4, 0x1a, 0xdf, 
+0x5c, 0xc9, 0x9f, 0xe0, 0xae, 0xbb, 0xae, 0xe3, 
+0x11, 0x7f, 0x77, 0x7b, 0x08, 0x8c, 0xe3, 0xa3, 
+0x04, 0xb2, 0x92, 0xc7, 0x90, 0x3a, 0xfe, 0x7c, 
+0x62, 0x26, 0x5e, 0x6b, 0xd7, 0xfe, 0x64, 0x05, 
+0xc0, 0x58, 0xaf, 0xe8, 0x04, 0x70, 0xca, 0x48, 
+0xd3, 0xa2, 0x08, 0xfe, 0x05, 0x18, 0x38, 0xf8, 
+0x37, 0x57, 0xf7, 0xcf, 0x92, 0xbf, 0x13, 0x83, 
+0x06, 0x06, 0x76, 0x9d, 0x7b, 0x99, 0x83, 0x43, 
+0xf2, 0x22, 0x20, 0x0a, 0xb6, 0xe6, 0x47, 0x11, 
+0x21, 0x50, 0x87, 0x5f, 0xdf, 0x4a, 0x3f, 0x5f, 
+0x28, 0xa8, 0x00, 0xa0, 0x58, 0xe8, 0xee, 0xbf, 
+0x0e, 0x45, 0x80, 0xc4, 0xfd, 0x47, 0xf7, 0x0e, 
+0xe9, 0xd5, 0xfd, 0x97, 0x4c, 0xb6, 0x30, 0xe4, 
+0x3f, 0xd5, 0x17, 0xa8, 0x37, 0xf7, 0x4f, 0x3a, 
+0xf8, 0x95, 0x91, 0xfb, 0x3d, 0x18, 0xfc, 0x23, 
+0xcf, 0xf9, 0xc9, 0x31, 0x1f, 0x45, 0xb9, 0x00, 
+0x72, 0x2c, 0x88, 0x10, 0xff, 0xc4, 0x48, 0x24, 
+0xbc, 0xf3, 0xf6, 0xa3, 0x92, 0x7f, 0x4e, 0xbe, 
+0xfe, 0xfa, 0x64, 0xb2, 0x56, 0x4f, 0xfd, 0xca, 
+0x92, 0x3f, 0x7b, 0xf4, 0xe7, 0x40, 0x77, 0x02, 
+0x0d, 0xfe, 0x69, 0x29, 0xf8, 0x27, 0x4b, 0xfe, 
+0x0a, 0x05, 0x00, 0x5e, 0x5a, 0x74, 0x1c, 0x39, 
+0xc8, 0xc0, 0xb6, 0xa3, 0x0a, 0xcc, 0xb3, 0x53, 
+0xf9, 0x02, 0x80, 0x45, 0x5e, 0xf4, 0x1f, 0x28, 
+0x04, 0xaa, 0xb6, 0x16, 0x44, 0xde, 0x48, 0x3f, 
+0x67, 0x28, 0xa8, 0x00, 0xa0, 0x58, 0x88, 0xee, 
+0xff, 0x6e, 0xdb, 0x4a, 0xe2, 0xfe, 0x45, 0x02, 
+0xc0, 0xb9, 0xe4, 0x90, 0x5e, 0x83, 0x7f, 0x04, 
+0x1d, 0x3d, 0x51, 0x8c, 0x00, 0xf8, 0xea, 0x68, 
+0x9c, 0xde, 0xdc, 0x3f, 0x71, 0xef, 0x42, 0xa4, 
+0x4e, 0xba, 0xff, 0xab, 0xcb, 0x5d, 0x78, 0xe9, 
+0xfe, 0xbe, 0xce, 0x50, 0xe6, 0x74, 0x2f, 0xf7, 
+0xfb, 0x6e, 0xbf, 0xed, 0x1a, 0x1c, 0xff, 0x27, 
+0x31, 0x02, 0x60, 0xf3, 0xa6, 0x57, 0xe5, 0x7e, 
+0x1f, 0x17, 0xa7, 0x4f, 0x75, 0x2a, 0x00, 0x46, 
+0xba, 0x7c, 0xa1, 0xbf, 0xd5, 0x03, 0xe2, 0x46, 
+0x5b, 0x17, 0x65, 0xf0, 0xcf, 0xdf, 0xe0, 0xc1, 
+0xbf, 0xb9, 0xbb, 0x7f, 0x96, 0xfc, 0x09, 0x1c, 
+0x46, 0xea, 0x19, 0xec, 0x68, 0xab, 0x40, 0x21, 
+0x90, 0xc2, 0x17, 0x00, 0x12, 0x21, 0x10, 0x85, 
+0x42, 0x20, 0xbe, 0x08, 0x85, 0xc0, 0xb5, 0xf4, 
+0x33, 0x87, 0x82, 0x0a, 0x00, 0x8a, 0x05, 0xb4, 
+0xf7, 0xdf, 0xd0, 0x22, 0x22, 0x7f, 0x91, 0x00, 
+0x88, 0x1b, 0x18, 0xd6, 0x6b, 0xf0, 0xaf, 0x72, 
+0xfc, 0xa0, 0xa8, 0xf2, 0x77, 0x30, 0x44, 0x6f, 
+0xee, 0xbf, 0xbc, 0xd8, 0x49, 0x90, 0xfc, 0x6f, 
+0xbd, 0xe5, 0x2a, 0x98, 0x44, 0x37, 0x2f, 0xbb, 
+0xde, 0x47, 0xfa, 0xfd, 0x65, 0xbf, 0x37, 0x35, 
+0xc9, 0x5c, 0x32, 0xfa, 0x7f, 0x0e, 0x57, 0x05, 
+0x65, 0xff, 0xfd, 0xe3, 0x8f, 0xdd, 0xae, 0x33, 
+0xf2, 0x3f, 0x3a, 0xbe, 0x87, 0x71, 0xff, 0xd5, 
+0xbd, 0x19, 0x34, 0xf8, 0xa7, 0xc3, 0xe0, 0x1f, 
+0x9f, 0xfc, 0xe5, 0xdd, 0xbf, 0xa3, 0x98, 0xfc, 
+0x1d, 0x46, 0x0e, 0x30, 0xb0, 0x1f, 0xa9, 0x83, 
+0xed, 0x47, 0xca, 0xc8, 0xa9, 0x61, 0x19, 0x11, 
+0x10, 0x29, 0x42, 0x6e, 0xd4, 0xef, 0x28, 0x04, 
+0xb2, 0xf1, 0xeb, 0xbf, 0xd0, 0xcf, 0x1e, 0x0a, 
+0x2a, 0x00, 0x28, 0x0c, 0x4b, 0xfe, 0x65, 0x0d, 
+0x8f, 0x49, 0xc9, 0xbf, 0x01, 0x5c, 0x4b, 0x0f, 
+0xeb, 0x75, 0xf4, 0x9f, 0x71, 0x6c, 0x02, 0x7a, 
+0xbb, 0x42, 0x99, 0xca, 0xdf, 0xaf, 0x75, 0x54, 
+0xf9, 0x2b, 0xe4, 0xfe, 0x4d, 0x8d, 0xdf, 0x10, 
+0x14, 0x00, 0xe5, 0x25, 0x8e, 0x82, 0x15, 0xc0, 
+0x67, 0x9f, 0x7d, 0x16, 0xef, 0xfb, 0x9e, 0x7c, 
+0xe2, 0x0e, 0xde, 0xb3, 0xff, 0xe7, 0x9f, 0x93, 
+0x17, 0x00, 0xa4, 0x0b, 0x40, 0x17, 0xe4, 0xff, 
+0x15, 0x96, 0x23, 0x0d, 0x77, 0x78, 0x43, 0x6f, 
+0xbb, 0x8f, 0xe4, 0xe0, 0x0f, 0x0d, 0xfe, 0xe9, 
+0x36, 0xf8, 0x27, 0x4c, 0xfe, 0x52, 0xf7, 0x2f, 
+0x22, 0x7f, 0x91, 0x00, 0x10, 0x61, 0x3f, 0xd8, 
+0x1c, 0xc6, 0x3b, 0x03, 0x59, 0x89, 0x7c, 0x01, 
+0xc0, 0x22, 0x27, 0xea, 0x37, 0x14, 0x02, 0x29, 
+0x5b, 0x0b, 0x22, 0xae, 0xa4, 0x9f, 0x43, 0x14, 
+0x54, 0x00, 0x50, 0x18, 0xa8, 0xf3, 0xbf, 0xa1, 
+0x8f, 0x2b, 0x00, 0x12, 0x46, 0x46, 0xf4, 0x1a, 
+0xfc, 0xab, 0x1d, 0xa9, 0x62, 0xdc, 0xff, 0xd1, 
+0x91, 0x30, 0xbd, 0xee, 0xfc, 0xbf, 0xfc, 0xd2, 
+0xfd, 0x72, 0x84, 0xfd, 0x97, 0xbf, 0x5c, 0xc6, 
+0x3c, 0xb7, 0x97, 0x15, 0x00, 0x42, 0xdf, 0x5b, 
+0x85, 0x8f, 0x08, 0xb8, 0x02, 0x40, 0x68, 0x02, 
+0x40, 0x70, 0x6c, 0x2a, 0x4e, 0xeb, 0x02, 0x60, 
+0x66, 0x74, 0x17, 0xe3, 0xfe, 0x4b, 0xfb, 0x0b, 
+0xb5, 0xe8, 0xfe, 0x69, 0xf0, 0x4f, 0xd3, 0xd1, 
+0xbf, 0x90, 0xfb, 0x67, 0xc9, 0xdf, 0x8e, 0xc1, 
+0x3e, 0x06, 0x36, 0x4d, 0xc5, 0x28, 0x04, 0x12, 
+0xe4, 0x45, 0x00, 0x41, 0x76, 0xd4, 0xaf, 0xdb, 
+0xe2, 0xe3, 0x62, 0x51, 0x08, 0x5c, 0x4e, 0x3f, 
+0x8f, 0x28, 0xa8, 0x00, 0xa0, 0xd0, 0x1f, 0xf9, 
+0x17, 0x37, 0xbe, 0xc0, 0x25, 0x7f, 0xb7, 0xb2, 
+0x23, 0x7a, 0x75, 0xff, 0x59, 0x47, 0x47, 0x61, 
+0xb0, 0x33, 0x10, 0xc6, 0xd0, 0xcd, 0x7e, 0x8b, 
+0xc4, 0xab, 0x4f, 0x01, 0xf0, 0xc0, 0xfd, 0xf2, 
+0x1d, 0xfd, 0x4f, 0x3c, 0x7e, 0xbb, 0x1c, 0xf9, 
+0x17, 0xe5, 0xd9, 0xc9, 0x7d, 0xdf, 0xbb, 0xef, 
+0x3c, 0x26, 0xb7, 0xf6, 0xf7, 0x30, 0xe6, 0x06, 
+0x64, 0xbf, 0xef, 0xe2, 0x8b, 0x2f, 0xd0, 0x3a, 
+0xf9, 0x93, 0xca, 0xdf, 0x41, 0x14, 0x4c, 0x5d, 
+0xed, 0x81, 0xb0, 0x67, 0xa2, 0x4f, 0x37, 0xa3, 
+0xff, 0x71, 0x1a, 0xfc, 0x53, 0xed, 0xfe, 0xeb, 
+0x95, 0xba, 0x7f, 0xae, 0x00, 0xb0, 0x1d, 0xa9, 
+0x65, 0x60, 0xdd, 0x80, 0x77, 0x06, 0xb2, 0xe2, 
+0x65, 0x44, 0x40, 0x04, 0x83, 0x6d, 0xd9, 0x51, 
+0xbf, 0xa0, 0x10, 0xd8, 0x65, 0x5a, 0xb0, 0xe7, 
+0x12, 0xfa, 0xd9, 0x44, 0x41, 0x05, 0x00, 0x85, 
+0xee, 0x05, 0x40, 0x56, 0xe3, 0x04, 0x57, 0x00, 
+0x24, 0x8f, 0x8f, 0xeb, 0x35, 0xf8, 0x57, 0x3f, 
+0x54, 0xa4, 0xd3, 0xca, 0x5f, 0x65, 0x75, 0xbf, 
+0x9f, 0x7f, 0xfa, 0xac, 0x1c, 0x61, 0x5f, 0x73, 
+0xf5, 0x15, 0x3c, 0xf2, 0x27, 0xd3, 0x00, 0xd9, 
+0x63, 0x3e, 0x64, 0xa7, 0xbf, 0xf5, 0x70, 0x00, 
+0x8f, 0xfc, 0xc9, 0xca, 0xdf, 0xff, 0xfd, 0xdf, 
+0x65, 0x82, 0x5b, 0x04, 0xda, 0x16, 0x00, 0x53, 
+0x43, 0x21, 0x8c, 0xfb, 0xcf, 0x1b, 0xac, 0x5c, 
+0x38, 0xc1, 0xbf, 0x31, 0x43, 0x07, 0xff, 0x3a, 
+0x0d, 0x16, 0xfc, 0x53, 0xe5, 0xfe, 0x59, 0xf2, 
+0xb7, 0x1d, 0xa9, 0x81, 0x1d, 0x04, 0xc3, 0x35, 
+0x60, 0x55, 0x9f, 0x8f, 0x42, 0x20, 0x8e, 0x27, 
+0x00, 0x08, 0x4c, 0xc9, 0xcf, 0x59, 0x51, 0xff, 
+0xdd, 0x96, 0x10, 0x1b, 0x80, 0x42, 0xe0, 0x22, 
+0xfa, 0x19, 0x45, 0x41, 0x05, 0x00, 0x85, 0x6e, 
+0xc8, 0xbf, 0xa0, 0xf1, 0x1d, 0xdb, 0xaa, 0x46, 
+0x09, 0xf9, 0x7b, 0x56, 0xb4, 0xe8, 0x35, 0xf8, 
+0x97, 0x3b, 0x33, 0x80, 0xcf, 0xb1, 0x7d, 0xb1, 
+0xf2, 0xd7, 0xd7, 0x20, 0xa7, 0x7e, 0x7d, 0xbd, 
+0x56, 0x09, 0x8e, 0xec, 0xb3, 0xd2, 0xac, 0x24, 
+0xdf, 0x13, 0x13, 0xb9, 0x45, 0xee, 0xdf, 0x6f, 
+0xda, 0xf0, 0x8a, 0x9c, 0xfb, 0xaf, 0x2c, 0x75, 
+0x16, 0xfc, 0xbd, 0xde, 0x7c, 0xe3, 0x61, 0xad, 
+0x92, 0xbf, 0xa8, 0xf2, 0xd7, 0x03, 0x5a, 0x3b, 
+0x42, 0x15, 0x56, 0xfe, 0xd2, 0xe0, 0x9f, 0x61, 
+0x82, 0x7f, 0x6a, 0x0b, 0x80, 0x91, 0xbd, 0x0c, 
+0xb6, 0x0f, 0x57, 0x81, 0x65, 0x1d, 0x1e, 0x1c, 
+0xca, 0x8e, 0xe1, 0x09, 0x00, 0x24, 0x7e, 0x06, 
+0x5b, 0x33, 0xa3, 0xfe, 0xb3, 0x35, 0x21, 0xd6, 
+0x13, 0xbf, 0x3e, 0x9f, 0x7e, 0x5e, 0x51, 0x50, 
+0x01, 0x40, 0xa1, 0x5d, 0x01, 0x90, 0xd3, 0x78, 
+0x5c, 0x22, 0x00, 0x2a, 0x1b, 0x20, 0x65, 0x72, 
+0x42, 0x6f, 0xa3, 0x7f, 0x82, 0x43, 0x03, 0x99, 
+0x8c, 0xfb, 0x3f, 0xa5, 0xa3, 0xca, 0x5f, 0x55, 
+0xd7, 0xfe, 0xca, 0x8b, 0x1d, 0x05, 0x49, 0x9b, 
+0xb4, 0xf7, 0x0d, 0xf4, 0x84, 0xc1, 0xc9, 0xd9, 
+0x78, 0xb8, 0xe1, 0x86, 0x3f, 0xf3, 0xfe, 0xdd, 
+0x25, 0x97, 0x5c, 0x00, 0xc3, 0xfd, 0xbb, 0xe5, 
+0x04, 0xc0, 0x67, 0x9f, 0x3c, 0x23, 0xf8, 0x7b, 
+0xf9, 0x7a, 0x7d, 0xa9, 0x35, 0xf2, 0x27, 0x98, 
+0xe8, 0x0f, 0x64, 0xdc, 0x7f, 0xc6, 0x50, 0x1d, 
+0x0d, 0xfe, 0x29, 0x1c, 0xfd, 0xb7, 0x1b, 0x34, 
+0xf8, 0xa7, 0x16, 0xf9, 0x8f, 0x54, 0x4b, 0x31, 
+0x5c, 0x09, 0x96, 0xb5, 0x39, 0x8c, 0x10, 0xe0, 
+0x0a, 0x00, 0x89, 0x10, 0xc8, 0x88, 0xfa, 0xd7, 
+0xd6, 0xc4, 0x18, 0x47, 0xd3, 0x82, 0xdd, 0xe7, 
+0xd1, 0xcf, 0x2d, 0x0a, 0x2a, 0x00, 0x28, 0xe6, 
+0x4f, 0xfe, 0x79, 0x8d, 0x5f, 0x88, 0xc8, 0x5f, 
+0x24, 0x00, 0xbc, 0xab, 0x5a, 0xb5, 0x1e, 0xfc, 
+0x53, 0xe6, 0xfe, 0x0b, 0xa6, 0xbb, 0x98, 0xd4, 
+0xff, 0x44, 0x8f, 0xbf, 0xc1, 0x4e, 0xfd, 0x4e, 
+0x8f, 0x47, 0x2b, 0x3c, 0xd7, 0x7b, 0xfd, 0x75, 
+0x57, 0xc2, 0xc6, 0xf5, 0x2f, 0xcb, 0xfd, 0x73, 
+0x47, 0xbb, 0x8f, 0xe4, 0xc8, 0x3f, 0x6a, 0x8f, 
+0xb1, 0xe0, 0xef, 0x41, 0x7e, 0xef, 0xb1, 0xc1, 
+0x08, 0xad, 0x09, 0x80, 0x93, 0xb3, 0x31, 0x0c, 
+0xf9, 0x37, 0x76, 0x45, 0xd1, 0xe0, 0xdf, 0x22, 
+0x08, 0xfe, 0xa9, 0x27, 0x00, 0xaa, 0xc0, 0x86, 
+0xc5, 0x10, 0x76, 0x08, 0xd4, 0x64, 0x93, 0x50, 
+0xa0, 0x9c, 0x08, 0x40, 0xf2, 0x87, 0xad, 0xe9, 
+0x51, 0xff, 0x40, 0x21, 0x60, 0x65, 0x9a, 0xbf, 
+0xfb, 0x1c, 0xfa, 0x19, 0x46, 0x41, 0x05, 0x00, 
+0xc5, 0xdc, 0xc8, 0xbf, 0xba, 0xf1, 0x2c, 0x14, 
+0x00, 0x5f, 0x4b, 0x04, 0x40, 0x45, 0x03, 0xa4, 
+0x4d, 0x4f, 0xea, 0xd5, 0xfd, 0xb7, 0xf6, 0xc5, 
+0x8b, 0x2b, 0x7f, 0x63, 0x0d, 0x26, 0x00, 0x08, 
+0xdc, 0x5d, 0x3f, 0x57, 0xbb, 0xf2, 0xf7, 0xea, 
+0xab, 0xae, 0x80, 0xa3, 0x78, 0xf4, 0x87, 0x4b, 
+0xfe, 0x21, 0x41, 0xeb, 0xe5, 0xca, 0x81, 0x58, 
+0x7c, 0x80, 0x67, 0x84, 0xb5, 0xe9, 0xfe, 0xc7, 
+0x7a, 0xfc, 0x60, 0x00, 0x4b, 0x7f, 0x92, 0x46, 
+0x0e, 0xd3, 0xe0, 0xdf, 0x22, 0x0a, 0xfe, 0x29, 
+0x73, 0xff, 0x12, 0xf2, 0x1f, 0xa9, 0x64, 0x60, 
+0x3d, 0x52, 0x01, 0xd6, 0x43, 0x65, 0x60, 0x5e, 
+0x95, 0x49, 0xd6, 0x04, 0x79, 0x02, 0x80, 0x41, 
+0x3e, 0x0a, 0x81, 0xb4, 0xa8, 0x1f, 0xb7, 0x26, 
+0x45, 0x9b, 0x9a, 0xe6, 0x87, 0x9f, 0x4d, 0x3f, 
+0xcf, 0x28, 0xa8, 0x00, 0xa0, 0xd0, 0x74, 0xf4, 
+0x6f, 0x84, 0x22, 0x00, 0x58, 0x01, 0xe0, 0x5b, 
+0xd3, 0xae, 0xf3, 0xe0, 0x1f, 0x57, 0x00, 0x94, 
+0x4e, 0x36, 0x33, 0xe4, 0x3f, 0xdd, 0x1f, 0x64, 
+0x50, 0xf2, 0x27, 0xf8, 0x0a, 0xaf, 0xf6, 0x91, 
+0xb2, 0x1e, 0x75, 0x04, 0x00, 0x59, 0x05, 0x4c, 
+0xc1, 0xe2, 0x1f, 0xb2, 0xfe, 0x17, 0xe8, 0xbf, 
+0x06, 0x56, 0xbc, 0x70, 0xaf, 0xc2, 0xef, 0x25, 
+0x9d, 0x01, 0x7b, 0x2b, 0x5c, 0xb5, 0x26, 0x00, 
+0x8e, 0x4f, 0x45, 0x32, 0xee, 0x7f, 0x7f, 0x4f, 
+0x32, 0x0d, 0xfe, 0x2d, 0xc6, 0xe0, 0x9f, 0x52, 
+0xf7, 0xcf, 0x21, 0x7f, 0x31, 0xac, 0x46, 0xca, 
+0xc1, 0x6a, 0xb0, 0x14, 0xcc, 0x2b, 0xd2, 0xc1, 
+0x34, 0x27, 0x92, 0x27, 0x00, 0x58, 0x6c, 0x4d, 
+0x8d, 0xfa, 0x61, 0x6b, 0x52, 0xd4, 0x06, 0x14, 
+0x02, 0x67, 0xd1, 0xcf, 0x35, 0x0a, 0x2a, 0x00, 
+0x28, 0xd4, 0x71, 0xff, 0xe7, 0x60, 0xf8, 0xef, 
+0x07, 0x89, 0x00, 0xa8, 0x68, 0x84, 0xf4, 0x99, 
+0x29, 0xbd, 0x05, 0xff, 0xd2, 0x8f, 0x4d, 0x42, 
+0x57, 0x4f, 0x04, 0x23, 0x00, 0xbe, 0x3e, 0x96, 
+0xa0, 0xf7, 0xe0, 0x9f, 0x10, 0x48, 0xa2, 0xff, 
+0x82, 0x0b, 0xce, 0x9b, 0xd7, 0x41, 0x20, 0x59, 
+0x98, 0x99, 0xbe, 0xa5, 0x3d, 0xf7, 0x7f, 0x92, 
+0x54, 0xfe, 0xfa, 0x40, 0x7f, 0x9b, 0x27, 0xc4, 
+0x8e, 0xb5, 0xd3, 0xe0, 0xdf, 0x62, 0x0e, 0xfe, 
+0x29, 0x70, 0xff, 0xd6, 0x1c, 0x01, 0xc0, 0x90, 
+0x3f, 0x83, 0x32, 0x06, 0x96, 0x83, 0xd8, 0x21, 
+0x50, 0x96, 0x06, 0xa6, 0xb9, 0x11, 0x3c, 0x01, 
+0x80, 0xc4, 0xcf, 0x60, 0x6b, 0x4a, 0xd4, 0xb7, 
+0x88, 0x95, 0xf4, 0xf3, 0x8d, 0x82, 0x0a, 0x00, 
+0x0a, 0xe5, 0x02, 0x20, 0xbb, 0x71, 0x3b, 0x43, 
+0xfe, 0x62, 0x01, 0x10, 0xb0, 0xbf, 0x53, 0xaf, 
+0xa3, 0xff, 0xaa, 0xf1, 0x3a, 0x71, 0xe5, 0xef, 
+0x4e, 0x83, 0xb8, 0xff, 0xb1, 0xc1, 0x3d, 0x78, 
+0x3e, 0x37, 0x41, 0x4e, 0x04, 0xc4, 0x46, 0x99, 
+0x68, 0x4d, 0x04, 0x3c, 0xf6, 0xe8, 0x6d, 0x82, 
+0xd7, 0xff, 0xe6, 0x3a, 0xfa, 0x9f, 0xc5, 0x15, 
+0x49, 0xe2, 0xfe, 0x2b, 0xfb, 0xb2, 0x69, 0xf0, 
+0x4f, 0x9f, 0xc1, 0xbf, 0x61, 0x1d, 0x06, 0xff, 
+0x14, 0xba, 0x7f, 0x19, 0xf2, 0x67, 0x50, 0xca, 
+0xc0, 0x62, 0xa0, 0x08, 0xcc, 0x4a, 0xb0, 0xc1, 
+0x32, 0x67, 0x0f, 0x4f, 0x00, 0x48, 0x84, 0x40, 
+0x72, 0xd4, 0x99, 0xad, 0xa9, 0x11, 0x1f, 0xd2, 
+0xcf, 0x39, 0x0a, 0x2a, 0x00, 0x28, 0x04, 0xdc, 
+0x7f, 0xd3, 0xf9, 0xb6, 0x45, 0x8d, 0xff, 0x60, 
+0x05, 0x80, 0x5d, 0x79, 0x23, 0x64, 0xce, 0x4e, 
+0xe9, 0x2d, 0xf8, 0x97, 0x71, 0x74, 0x02, 0xfa, 
+0xba, 0x42, 0x98, 0xf0, 0xdf, 0x37, 0x27, 0x12, 
+0xf5, 0x4a, 0xfe, 0x24, 0xf1, 0xff, 0xd2, 0x8b, 
+0xd2, 0x36, 0xbf, 0xdb, 0x6e, 0xbd, 0x1a, 0x7a, 
+0x3b, 0x76, 0xf2, 0x44, 0xc0, 0xa1, 0x83, 0x3e, 
+0xcc, 0xde, 0xfe, 0x7c, 0xc8, 0xff, 0x99, 0xa7, 
+0xee, 0x82, 0x99, 0xf1, 0x18, 0xed, 0x55, 0xfe, 
+0xe2, 0x23, 0x8a, 0x21, 0xfc, 0xf3, 0xea, 0x69, 
+0xf7, 0x85, 0xc8, 0xf1, 0x6e, 0xad, 0x05, 0xff, 
+0x76, 0xd2, 0xe0, 0xdf, 0xc2, 0x08, 0xfe, 0x29, 
+0x71, 0xff, 0x5c, 0xf2, 0xb7, 0x1c, 0x29, 0x01, 
+0x0b, 0x06, 0xc5, 0x28, 0x04, 0x0a, 0xc0, 0xac, 
+0x28, 0x05, 0x27, 0x02, 0xf2, 0x22, 0xc0, 0x34, 
+0x7f, 0x17, 0xe0, 0x63, 0x81, 0xe3, 0x5b, 0xd3, 
+0x22, 0xde, 0xa4, 0x9f, 0x79, 0x14, 0x54, 0x00, 
+0x50, 0x70, 0x4a, 0x7f, 0x9a, 0x3c, 0x24, 0xee, 
+0x1f, 0x11, 0x54, 0xdf, 0xad, 0x57, 0xf7, 0xbf, 
+0x0f, 0x3f, 0xe0, 0x88, 0xfb, 0x3f, 0x86, 0x35, 
+0xb6, 0xfa, 0x74, 0xff, 0x56, 0x16, 0xef, 0x08, 
+0x92, 0xf5, 0x2d, 0x37, 0x5f, 0xc5, 0x10, 0x2c, 
+0x57, 0x04, 0x90, 0xd5, 0x3f, 0xe3, 0xcd, 0xaf, 
+0x6a, 0x4c, 0xfc, 0x7f, 0xfa, 0xd3, 0x25, 0xe0, 
+0xee, 0xf2, 0x39, 0x1c, 0x9f, 0x8e, 0xd3, 0x6a, 
+0xf0, 0x6f, 0x66, 0x38, 0x8c, 0x71, 0xff, 0xc5, 
+0x03, 0xc5, 0x34, 0xf8, 0xb7, 0x94, 0x83, 0x7f, 
+0x82, 0xee, 0x5f, 0x96, 0xfc, 0x45, 0x02, 0xc0, 
+0x9c, 0x41, 0x11, 0x98, 0xf7, 0x63, 0x99, 0x50, 
+0x41, 0x92, 0x8c, 0x10, 0xd8, 0x25, 0x01, 0x0a, 
+0x81, 0x69, 0xd3, 0x8c, 0x3d, 0x2f, 0xd1, 0xcf, 
+0x3e, 0x0a, 0x2a, 0x00, 0xa8, 0xfb, 0xbf, 0xc8, 
+0xb6, 0xb8, 0xe9, 0xdf, 0x52, 0xf7, 0xdf, 0x84, 
+0x35, 0xbc, 0xd3, 0x7a, 0x0b, 0xfe, 0x65, 0x1d, 
+0x1d, 0x81, 0xc1, 0x0e, 0x7f, 0x18, 0xeb, 0xf4, 
+0x81, 0x6f, 0x91, 0xec, 0xf4, 0x41, 0xfe, 0x84, 
+0x78, 0xd7, 0xae, 0x79, 0x51, 0x69, 0x50, 0x4f, 
+0x51, 0x2e, 0xa0, 0xb6, 0xca, 0x8d, 0x11, 0x0e, 
+0xf7, 0xdd, 0x7b, 0xa3, 0x52, 0xe2, 0xbf, 0xec, 
+0xd2, 0x8b, 0xc0, 0x01, 0x57, 0x03, 0xc9, 0x4a, 
+0xa1, 0xb6, 0x1b, 0xff, 0x4e, 0x1f, 0x4f, 0x60, 
+0x2a, 0x7f, 0x3b, 0x3b, 0x82, 0xb0, 0xf4, 0xa7, 
+0x5f, 0x67, 0xc1, 0xbf, 0x10, 0x1a, 0xfc, 0xd3, 
+0x7a, 0xf0, 0xcf, 0x76, 0xae, 0xc1, 0x3f, 0x01, 
+0xf7, 0xcf, 0x25, 0x7f, 0x0b, 0x96, 0xfc, 0xc5, 
+0x30, 0x1b, 0x29, 0x04, 0xb3, 0xbe, 0x5c, 0xd8, 
+0x96, 0x9f, 0x08, 0xa6, 0x79, 0xbb, 0x79, 0x02, 
+0x80, 0xc0, 0x84, 0x08, 0x81, 0xc4, 0xa8, 0x31, 
+0xd3, 0xac, 0xf0, 0xa7, 0xe9, 0xe7, 0x20, 0x05, 
+0x15, 0x00, 0xcb, 0xf6, 0xdc, 0x6f, 0xd3, 0x4e, 
+0x14, 0x01, 0x12, 0xf7, 0xbf, 0xb3, 0xa9, 0x47, 
+0x8f, 0xc1, 0xbf, 0x29, 0x68, 0x18, 0xcc, 0x67, 
+0xdc, 0xff, 0x89, 0x89, 0x3d, 0x7a, 0x73, 0xff, 
+0x7e, 0xde, 0x5f, 0x2a, 0x25, 0xef, 0xbb, 0xee, 
+0xbc, 0x56, 0x69, 0x38, 0xf0, 0x5b, 0xf1, 0xaa, 
+0x5f, 0x3f, 0x96, 0x02, 0xed, 0x0e, 0xdb, 0xc4, 
+0x34, 0x00, 0x5a, 0x59, 0xbc, 0x0b, 0xde, 0x9e, 
+0xab, 0x20, 0x6a, 0xb7, 0x31, 0xe4, 0x64, 0xd8, 
+0xc0, 0xc4, 0x70, 0xa4, 0x4e, 0xae, 0xfd, 0x11, 
+0x4c, 0x0e, 0x8a, 0x2a, 0x7f, 0x73, 0x06, 0xf7, 
+0xd2, 0xe0, 0xdf, 0x72, 0x0b, 0xfe, 0x09, 0x8d, 
+0xfe, 0x85, 0xc8, 0x9f, 0x01, 0xde, 0x17, 0x20, 
+0xe8, 0xcd, 0x86, 0x6d, 0xb9, 0x09, 0x28, 0x04, 
+0xf8, 0x02, 0xc0, 0x24, 0x3f, 0x8c, 0xc1, 0xd6, 
+0x84, 0xa8, 0x41, 0x93, 0xec, 0xf0, 0xc7, 0xe8, 
+0xe7, 0x21, 0x05, 0x15, 0x00, 0xcb, 0xcb, 0xfd, 
+0x5f, 0x6e, 0x5b, 0xda, 0xf4, 0x5f, 0x56, 0x00, 
+0xd8, 0x97, 0x35, 0x41, 0xf6, 0xb1, 0x19, 0xbd, 
+0x8d, 0xfe, 0x73, 0x67, 0xfa, 0x61, 0x04, 0x8f, 
+0xfd, 0x8c, 0x77, 0xfb, 0xe9, 0x8d, 0xfc, 0x0f, 
+0x37, 0xf8, 0x29, 0xdc, 0xcf, 0x67, 0x83, 0x7a, 
+0xa3, 0x03, 0x7b, 0x04, 0x49, 0xbf, 0xa7, 0x3d, 
+0x04, 0xe2, 0xa2, 0x4d, 0x18, 0x67, 0x1f, 0x1c, 
+0xb0, 0x0e, 0x5a, 0x9b, 0x03, 0xf9, 0xe5, 0x3f, 
+0xa7, 0xd4, 0xc7, 0x5c, 0xc9, 0xff, 0xd4, 0xd1, 
+0x38, 0xa6, 0xf2, 0xf7, 0x48, 0x67, 0x38, 0x92, 
+0xff, 0x00, 0x0d, 0xfe, 0x2d, 0xd7, 0xe0, 0x9f, 
+0xd0, 0xe8, 0x9f, 0x47, 0xfe, 0x1c, 0x01, 0x30, 
+0x92, 0xcf, 0x60, 0x6b, 0x4f, 0x16, 0x76, 0x08, 
+0xc4, 0xcb, 0x09, 0x00, 0x8e, 0x10, 0xe8, 0x32, 
+0xc9, 0x0d, 0x7b, 0x80, 0x7e, 0x36, 0x52, 0x50, 
+0x01, 0xb0, 0x3c, 0xdc, 0x7f, 0x9c, 0x88, 0xfc, 
+0x45, 0x02, 0x60, 0xd7, 0x91, 0x3e, 0xbd, 0x05, 
+0xff, 0x08, 0x9a, 0xfb, 0xd3, 0x60, 0x04, 0x57, 
+0xd8, 0x4e, 0x4d, 0x45, 0xe9, 0xed, 0xb9, 0xbf, 
+0xd0, 0xa1, 0x1f, 0x16, 0xaf, 0xbd, 0xf2, 0x20, 
+0xf3, 0xac, 0x5e, 0x96, 0xf8, 0xc9, 0x18, 0xdf, 
+0x7c, 0xdb, 0x5b, 0x82, 0xed, 0x80, 0x8f, 0x3c, 
+0x7c, 0x2b, 0x74, 0xb6, 0x05, 0x6b, 0x44, 0xfe, 
+0xf3, 0x11, 0x00, 0xe3, 0x7d, 0xa2, 0xca, 0xdf, 
+0xb4, 0xe1, 0x7a, 0x1a, 0xfc, 0xa3, 0xc1, 0x3f, 
+0xd5, 0xee, 0x9f, 0x25, 0xff, 0x91, 0x3c, 0x31, 
+0x72, 0xc1, 0xb4, 0x3b, 0x03, 0x5b, 0x05, 0xe3, 
+0xe4, 0x04, 0x00, 0x83, 0xbc, 0x50, 0xd8, 0x1a, 
+0x1f, 0xd5, 0x62, 0x92, 0x1f, 0x7a, 0x17, 0xfd, 
+0x8c, 0xa4, 0xa0, 0x02, 0x60, 0xe9, 0xba, 0xff, 
+0xff, 0xb3, 0x2d, 0x6b, 0xfa, 0x95, 0x15, 0x00, 
+0x0e, 0xa5, 0x4d, 0x0c, 0xd1, 0xeb, 0xcb, 0xfd, 
+0x17, 0x4d, 0x75, 0x20, 0xf9, 0x7b, 0xc1, 0x64, 
+0x6f, 0x80, 0xde, 0xdc, 0xff, 0xb1, 0xa9, 0x38, 
+0xe6, 0x0c, 0xaf, 0x10, 0xf9, 0xbf, 0xf5, 0xe6, 
+0x23, 0x72, 0x6b, 0x80, 0x24, 0x08, 0x18, 0x1a, 
+0xbc, 0x5e, 0xf0, 0x9a, 0x1f, 0x17, 0x57, 0x5c, 
+0x7e, 0x31, 0x64, 0xa4, 0x5a, 0xe9, 0x9c, 0xfc, 
+0x4f, 0x4c, 0x8b, 0x2a, 0x7f, 0x0f, 0x76, 0xc7, 
+0xd2, 0xe0, 0x1f, 0x0d, 0xfe, 0x29, 0x71, 0xff, 
+0x7c, 0xf2, 0x97, 0x13, 0x00, 0x04, 0xa3, 0x39, 
+0x60, 0xda, 0x85, 0x65, 0x42, 0x59, 0xb1, 0x32, 
+0x22, 0x20, 0x54, 0x04, 0x91, 0x10, 0x68, 0xc4, 
+0x9f, 0x6f, 0xa5, 0x9f, 0x97, 0x14, 0x54, 0x00, 
+0x2c, 0x3d, 0xf7, 0x9f, 0x2d, 0x75, 0xff, 0x4d, 
+0xb0, 0xbb, 0xad, 0x5f, 0x6f, 0xc1, 0x3f, 0x82, 
+0xf6, 0xde, 0x58, 0xc6, 0xfd, 0x9f, 0x99, 0x8d, 
+0xd5, 0x9b, 0xfb, 0x8f, 0x8f, 0x31, 0x15, 0x24, 
+0xf0, 0x57, 0x5e, 0x7e, 0x00, 0x83, 0x75, 0x89, 
+0x3c, 0xf2, 0x1f, 0x1f, 0x8a, 0x80, 0xe7, 0x9f, 
+0xbb, 0x47, 0xed, 0xb4, 0xff, 0x79, 0xe7, 0x9e, 
+0x03, 0xdd, 0xf8, 0x88, 0x40, 0x97, 0x02, 0x60, 
+0xb4, 0xdb, 0x97, 0xa9, 0xfc, 0x4d, 0x18, 0x6d, 
+0xa6, 0xc1, 0x3f, 0x0d, 0x82, 0x7f, 0xee, 0xcb, 
+0x29, 0xf8, 0xa7, 0xca, 0xfd, 0xb3, 0xe4, 0x8f, 
+0x30, 0x19, 0xcd, 0x16, 0xa1, 0x03, 0x3b, 0x04, 
+0xb2, 0x62, 0xf8, 0x02, 0x80, 0x45, 0x4e, 0xd8, 
+0x1f, 0x5b, 0xe3, 0x22, 0xf7, 0x99, 0xe4, 0xed, 
+0xbc, 0x91, 0x7e, 0x6e, 0x52, 0x50, 0x01, 0xb0, 
+0x04, 0x60, 0x57, 0xdd, 0x74, 0x9d, 0x6d, 0x45, 
+0xd3, 0xef, 0x2c, 0xf9, 0x3b, 0x96, 0x1e, 0x66, 
+0xc8, 0x5e, 0x5f, 0xc1, 0xbf, 0xb2, 0x89, 0x43, 
+0xa2, 0xca, 0xdf, 0x81, 0x60, 0xbd, 0x36, 0xfe, 
+0x99, 0x1a, 0xbf, 0x2e, 0x48, 0xde, 0xa4, 0xec, 
+0x87, 0x4b, 0xfe, 0x4d, 0xf5, 0x3e, 0x70, 0xd3, 
+0x4d, 0x7f, 0xd1, 0x78, 0xe5, 0x6f, 0xf5, 0xaa, 
+0x17, 0x74, 0x46, 0xfe, 0xc7, 0x26, 0x23, 0x18, 
+0xf7, 0x5f, 0xdb, 0x9b, 0x4a, 0x83, 0x7f, 0x3a, 
+0x0e, 0xfe, 0x39, 0x1b, 0x38, 0xf8, 0x67, 0xad, 
+0x8d, 0xe0, 0x9f, 0x00, 0xf9, 0x2b, 0x14, 0x00, 
+0xa3, 0x59, 0xb0, 0x85, 0xa0, 0x0d, 0xdf, 0x23, 
+0x99, 0x51, 0x7c, 0x01, 0x90, 0x47, 0xb0, 0x13, 
+0x85, 0x40, 0x28, 0x11, 0x02, 0x15, 0xf8, 0xf5, 
+0xb5, 0xf4, 0x33, 0x94, 0x82, 0x0a, 0x80, 0xc5, 
+0x2c, 0x00, 0xd2, 0x9b, 0xca, 0xb9, 0xee, 0x3f, 
+0xb2, 0x6b, 0x50, 0x6f, 0xa3, 0xff, 0x0c, 0xac, 
+0xfc, 0xed, 0xe9, 0x0e, 0x67, 0x4a, 0x7f, 0xbe, 
+0x3e, 0xae, 0xdf, 0xd2, 0x1f, 0x1b, 0xcb, 0x77, 
+0x05, 0x89, 0x7b, 0x87, 0xcd, 0xfb, 0x12, 0xf2, 
+0x8f, 0x8e, 0x30, 0x56, 0xf8, 0x98, 0x40, 0x15, 
+0xce, 0x39, 0xe7, 0x6c, 0x18, 0xec, 0x0d, 0xd7, 
+0x3a, 0xf9, 0x7f, 0x45, 0x2a, 0x7f, 0x71, 0x4d, 
+0xb2, 0xaf, 0xcd, 0x1b, 0xa2, 0xc7, 0x3a, 0x69, 
+0xf0, 0x8f, 0x06, 0xff, 0x78, 0xa3, 0xff, 0x79, 
+0xb9, 0x7f, 0x96, 0xfc, 0x47, 0x33, 0x19, 0x18, 
+0x93, 0x9f, 0x5b, 0x92, 0x51, 0x08, 0x44, 0xf2, 
+0x05, 0x00, 0x8b, 0x6c, 0x46, 0x08, 0x14, 0x98, 
+0xe4, 0x85, 0x5c, 0x45, 0x3f, 0x4b, 0x29, 0xa8, 
+0x00, 0x58, 0x7c, 0xee, 0xff, 0x56, 0xbb, 0xca, 
+0xa6, 0x3f, 0x58, 0xf2, 0x77, 0x2a, 0x6d, 0xd6, 
+0x6b, 0xf0, 0xaf, 0x7a, 0xac, 0x96, 0x19, 0xfd, 
+0xcf, 0x0e, 0x85, 0xea, 0xbd, 0xef, 0xdf, 0xd9, 
+0xe1, 0x13, 0x41, 0xe2, 0x3e, 0xeb, 0xac, 0xb3, 
+0xe0, 0xed, 0xb7, 0x1e, 0xc5, 0x40, 0xdf, 0x2d, 
+0x4a, 0x09, 0xfe, 0x9a, 0xab, 0xaf, 0x00, 0x1f, 
+0xaf, 0x55, 0xe0, 0xe5, 0xfe, 0x05, 0x9c, 0x7b, 
+0xee, 0xd9, 0x82, 0xdf, 0x73, 0x70, 0xbf, 0xb7, 
+0xd6, 0x05, 0xc0, 0xec, 0x58, 0x38, 0xe3, 0xfe, 
+0x2b, 0x70, 0xaf, 0x7b, 0xf9, 0x05, 0xff, 0xba, 
+0x68, 0xf0, 0x4f, 0x1b, 0xc1, 0x3f, 0x0e, 0xf9, 
+0x2b, 0x17, 0x00, 0x19, 0x62, 0xa4, 0xc3, 0x96, 
+0x66, 0xec, 0x10, 0xc8, 0x88, 0xe4, 0x0b, 0x00, 
+0x16, 0x59, 0xa1, 0xbf, 0x6f, 0x8d, 0x8f, 0xc8, 
+0x40, 0x21, 0x70, 0x25, 0xfd, 0x5c, 0xa5, 0xa0, 
+0x02, 0x60, 0xb1, 0x08, 0x80, 0x8c, 0xa6, 0x7a, 
+0x3b, 0x8e, 0xfb, 0x8f, 0xee, 0x1b, 0xd6, 0x9b, 
+0xfb, 0xcf, 0x3c, 0x3a, 0x06, 0xfd, 0x5d, 0xc1, 
+0x30, 0xda, 0x81, 0x95, 0xbf, 0x27, 0x93, 0xf4, 
+0xde, 0xf7, 0x5f, 0x98, 0x6b, 0x3b, 0xe7, 0x2a, 
+0xdf, 0x77, 0xdf, 0x79, 0x0c, 0x66, 0x26, 0x62, 
+0x24, 0x2b, 0x7f, 0x64, 0xef, 0x5f, 0xe8, 0xfb, 
+0x6a, 0x2a, 0xdd, 0xb4, 0x4a, 0xfe, 0x67, 0xb0, 
+0x1a, 0x79, 0x08, 0x1f, 0x97, 0xf4, 0xb4, 0xfb, 
+0x41, 0xc4, 0x78, 0xef, 0x12, 0x0b, 0xfe, 0x75, 
+0xd3, 0xe0, 0x9f, 0xd6, 0x83, 0x7f, 0xf3, 0x73, 
+0xff, 0xac, 0x00, 0x30, 0x42, 0x01, 0x20, 0x42, 
+0x1a, 0x18, 0x37, 0x11, 0x21, 0xb0, 0x47, 0x46, 
+0x04, 0x84, 0x88, 0x90, 0x15, 0xfa, 0x1b, 0x0a, 
+0x81, 0xc4, 0x2d, 0x79, 0x21, 0x97, 0xd3, 0xcf, 
+0x57, 0x0a, 0x2a, 0x00, 0x16, 0x32, 0xf9, 0x57, 
+0x1c, 0xba, 0xd7, 0xae, 0xaa, 0xe9, 0x0f, 0x56, 
+0x00, 0x38, 0x6b, 0xe0, 0xfe, 0xb5, 0x11, 0xfc, 
+0xdb, 0x8f, 0x1f, 0x66, 0xc4, 0xfd, 0x1f, 0x1b, 
+0xdd, 0x6d, 0xb0, 0x53, 0xbf, 0xcf, 0x3d, 0x73, 
+0xb7, 0x46, 0xc4, 0x4f, 0xa6, 0x03, 0x64, 0xef, 
+0x9f, 0x90, 0x31, 0x77, 0xe7, 0xff, 0xfd, 0x77, 
+0x1f, 0x17, 0xfc, 0xfe, 0xca, 0x32, 0x67, 0xad, 
+0x0a, 0x80, 0x69, 0x9c, 0x94, 0x10, 0xf7, 0x5f, 
+0x38, 0x50, 0x4a, 0x83, 0x7f, 0x34, 0xf8, 0xa7, 
+0xbd, 0xe0, 0x9f, 0x84, 0xfc, 0x85, 0xdd, 0x3f, 
+0x4b, 0xfe, 0x04, 0x9b, 0x47, 0x53, 0x19, 0x18, 
+0x37, 0x60, 0x87, 0x40, 0xc6, 0x6e, 0xbe, 0x00, 
+0x60, 0x91, 0x19, 0xf6, 0xab, 0x69, 0xfc, 0x9e, 
+0xc8, 0x2d, 0x79, 0xc1, 0x97, 0xd0, 0xcf, 0x5a, 
+0x0a, 0x2a, 0x00, 0x16, 0xa6, 0xfb, 0x6f, 0x23, 
+0xe4, 0xcf, 0x0a, 0x80, 0xb8, 0xc1, 0x11, 0xbd, 
+0x05, 0xff, 0x72, 0x66, 0x87, 0x60, 0xb8, 0xc3, 
+0x8f, 0xa9, 0xfc, 0xfd, 0x4e, 0x4f, 0x95, 0xbf, 
+0x42, 0x65, 0x3e, 0x35, 0x95, 0xae, 0x4c, 0x62, 
+0x5f, 0xad, 0x1e, 0xff, 0x2b, 0x2e, 0x86, 0xd4, 
+0x64, 0x0b, 0x7e, 0xd9, 0x0f, 0xa2, 0xaf, 0x2b, 
+0x94, 0xa9, 0xfa, 0x95, 0xfd, 0xfe, 0x4b, 0x2f, 
+0xbd, 0x50, 0xb0, 0xf3, 0x7f, 0xae, 0xe4, 0x7f, 
+0xfa, 0x58, 0x3c, 0x96, 0xfe, 0x78, 0x42, 0x7b, 
+0x47, 0x08, 0x56, 0xfe, 0x0e, 0xd0, 0xe0, 0x1f, 
+0x0d, 0xfe, 0x69, 0x48, 0xfe, 0xf3, 0x77, 0xff, 
+0x9b, 0x39, 0x02, 0x60, 0xd3, 0x68, 0x0a, 0x6c, 
+0x1a, 0x49, 0x01, 0xe3, 0xfa, 0x38, 0x14, 0x02, 
+0xe1, 0x3c, 0x01, 0xb0, 0x85, 0x41, 0x30, 0x0a, 
+0x81, 0x50, 0x22, 0x04, 0x76, 0xe2, 0xd7, 0x17, 
+0xd1, 0xcf, 0x5c, 0x0a, 0xfa, 0x87, 0xb0, 0x50, 
+0xc8, 0xbf, 0xf4, 0xd0, 0xe3, 0x76, 0xd5, 0x87, 
+0x80, 0x15, 0x00, 0xae, 0x65, 0x47, 0xf4, 0x36, 
+0xfa, 0x27, 0x68, 0x1c, 0xcc, 0x65, 0xdc, 0xff, 
+0xc9, 0x89, 0x48, 0x83, 0xb9, 0x7f, 0x6e, 0x9f, 
+0xff, 0xf5, 0xd7, 0x5d, 0xa9, 0x90, 0xf8, 0xc9, 
+0xf3, 0x7d, 0x13, 0xa3, 0xd7, 0x61, 0x62, 0x24, 
+0x52, 0x8e, 0xfc, 0x8f, 0x4e, 0xc5, 0xc2, 0x43, 
+0x0f, 0xde, 0x2c, 0xf8, 0xeb, 0x56, 0x7d, 0xf1, 
+0xbc, 0xd6, 0xc8, 0x9f, 0xa9, 0xfc, 0xc5, 0x2d, 
+0x09, 0xe2, 0xfe, 0xb3, 0x86, 0x6a, 0x69, 0xf0, 
+0x8f, 0x06, 0xff, 0x74, 0x1a, 0xfc, 0x53, 0xe5, 
+0xfe, 0x37, 0x13, 0xf2, 0x67, 0x90, 0xcc, 0x60, 
+0xe3, 0x48, 0x32, 0x18, 0xd7, 0x61, 0x87, 0x40, 
+0xe6, 0x2e, 0x9e, 0x00, 0x60, 0x61, 0x92, 0x11, 
+0xfa, 0x3f, 0x93, 0x84, 0xdd, 0x3e, 0x5b, 0xf2, 
+0x82, 0x2e, 0xa0, 0x9f, 0xbf, 0x54, 0x00, 0x50, 
+0x18, 0x5a, 0x00, 0x64, 0x35, 0xf5, 0x73, 0x05, 
+0x40, 0xc2, 0xe8, 0x98, 0xde, 0x82, 0x7f, 0xf9, 
+0x33, 0xbd, 0x30, 0x8c, 0xa9, 0xff, 0x09, 0x3d, 
+0x56, 0xfe, 0xaa, 0xea, 0xf2, 0x27, 0x7b, 0xfe, 
+0x84, 0xb0, 0x65, 0x4b, 0x7e, 0xde, 0x7c, 0xfd, 
+0x61, 0x68, 0x39, 0x14, 0x20, 0xe9, 0xfb, 0xe7, 
+0xe2, 0x50, 0x83, 0xaf, 0xd2, 0xb3, 0xc0, 0xf9, 
+0x39, 0xb6, 0x5a, 0xac, 0xfc, 0x8d, 0x65, 0xc8, 
+0xbf, 0xb9, 0x6b, 0x0f, 0x0d, 0xfe, 0x2d, 0x89, 
+0xe0, 0x5f, 0xf5, 0xa2, 0x08, 0xfe, 0x29, 0x75, 
+0xff, 0x62, 0x01, 0xb0, 0x91, 0x41, 0x92, 0x08, 
+0x23, 0x89, 0x60, 0xb4, 0x2f, 0x06, 0xb6, 0xa0, 
+0x10, 0xe0, 0x0a, 0x00, 0x89, 0x10, 0x48, 0x0f, 
+0xfd, 0xaf, 0x49, 0x62, 0xb8, 0x0b, 0x0a, 0x81, 
+0xf3, 0xe8, 0xe7, 0x30, 0x15, 0x00, 0x14, 0x86, 
+0x20, 0xff, 0xe2, 0x43, 0x2f, 0x8a, 0xc8, 0x5f, 
+0x24, 0x00, 0xdc, 0xcb, 0x5b, 0xf4, 0xea, 0xfe, 
+0x8f, 0xf4, 0x27, 0x33, 0xee, 0xff, 0xf4, 0x4c, 
+0x8c, 0x5e, 0xdd, 0xff, 0x89, 0x99, 0x38, 0x08, 
+0xf2, 0x5f, 0x0b, 0x0f, 0xdc, 0x7f, 0x13, 0xd3, 
+0xf1, 0xff, 0xf1, 0x47, 0x4f, 0xc1, 0xe4, 0x68, 
+0x14, 0xff, 0xa8, 0x0f, 0x92, 0xed, 0x91, 0x46, 
+0x3f, 0x68, 0x69, 0xf2, 0x67, 0xbe, 0x9f, 0x7b, 
+0xec, 0x87, 0x05, 0x21, 0x64, 0x77, 0xd7, 0xcf, 
+0x55, 0xde, 0x10, 0x38, 0x73, 0x3c, 0x49, 0x6b, 
+0xee, 0x7f, 0x0c, 0x1b, 0x12, 0x89, 0x00, 0x48, 
+0x19, 0x69, 0xa4, 0xee, 0x7f, 0x59, 0x06, 0xff, 
+0x4a, 0x0d, 0x1a, 0xfc, 0x53, 0xea, 0xfe, 0x59, 
+0xf2, 0x1f, 0x4d, 0x84, 0x0d, 0x2c, 0x86, 0xe3, 
+0xc1, 0x68, 0x6f, 0x34, 0x6c, 0xc9, 0x0a, 0x95, 
+0x11, 0x01, 0x41, 0x0c, 0x50, 0x08, 0xfc, 0x07, 
+0x85, 0x80, 0x2d, 0x7e, 0x7d, 0x0e, 0xfd, 0x4c, 
+0xa6, 0x02, 0x80, 0x42, 0x9f, 0x02, 0x20, 0xfb, 
+0xd0, 0x24, 0x57, 0x00, 0x24, 0x8f, 0x8f, 0xeb, 
+0x2d, 0xf8, 0x57, 0x3c, 0xd5, 0xca, 0x90, 0xff, 
+0x54, 0x6f, 0xa0, 0x5e, 0xc9, 0x9f, 0x8c, 0xf9, 
+0xaf, 0xbe, 0xea, 0x0a, 0x39, 0xa2, 0x7e, 0xf4, 
+0x91, 0x5b, 0x05, 0xfb, 0xfe, 0x65, 0x2f, 0xfd, 
+0x71, 0x41, 0x7a, 0x02, 0x54, 0x9d, 0xfe, 0xed, 
+0x6c, 0x0d, 0xd6, 0x5e, 0xe5, 0x2f, 0xde, 0x46, 
+0x20, 0xe4, 0x5f, 0xdf, 0x13, 0xaf, 0xda, 0xfd, 
+0xd3, 0xe0, 0xdf, 0x22, 0x0c, 0xfe, 0x55, 0x2e, 
+0x9a, 0xe0, 0x9f, 0x32, 0xf7, 0x2f, 0x21, 0xff, 
+0xd1, 0x04, 0x06, 0xeb, 0x47, 0xe3, 0x61, 0xfd, 
+0x70, 0x1c, 0x18, 0x55, 0x71, 0x85, 0x40, 0x10, 
+0x0f, 0x26, 0x69, 0x61, 0xff, 0x32, 0x49, 0xdc, 
+0x65, 0xb6, 0x25, 0x37, 0xf0, 0x6c, 0xfa, 0xd9, 
+0x4c, 0x05, 0x00, 0x85, 0xae, 0xc9, 0x3f, 0xff, 
+0xd0, 0x7b, 0x52, 0xf2, 0x3f, 0x04, 0x9e, 0x95, 
+0x6d, 0x7a, 0x0b, 0xfe, 0x11, 0x74, 0xf6, 0x46, 
+0x33, 0x02, 0xe0, 0x2b, 0xbc, 0x62, 0xa7, 0xaf, 
+0xd1, 0x3f, 0x59, 0xf7, 0x53, 0x56, 0xe6, 0xd3, 
+0xdb, 0xb1, 0x53, 0x6d, 0x01, 0x40, 0xea, 0x7d, 
+0x55, 0x55, 0x00, 0xa7, 0x91, 0xa0, 0xa0, 0x16, 
+0x9f, 0xfd, 0x8f, 0x74, 0xf9, 0x42, 0x3f, 0x56, 
+0xfe, 0xc6, 0x8f, 0xb6, 0xd2, 0xe0, 0x1f, 0x0d, 
+0xfe, 0xa9, 0xd5, 0xf7, 0xaf, 0xd3, 0xe0, 0x9f, 
+0x52, 0xf7, 0xcf, 0x21, 0x7f, 0x31, 0xd6, 0x8d, 
+0xc6, 0xc1, 0xba, 0xa1, 0x58, 0x30, 0xaa, 0x88, 
+0x42, 0x21, 0x10, 0x22, 0x27, 0x02, 0x90, 0xfc, 
+0xc1, 0x24, 0x25, 0xf4, 0x1f, 0x26, 0x49, 0x61, 
+0x9b, 0xf1, 0xeb, 0xb3, 0xe8, 0xe7, 0x34, 0x15, 
+0x00, 0x14, 0xba, 0x12, 0x00, 0xb9, 0x87, 0x4e, 
+0x48, 0x04, 0x40, 0xd5, 0x21, 0x48, 0x9d, 0x9c, 
+0xd0, 0xdb, 0xe8, 0xbf, 0x62, 0xbc, 0x81, 0x21, 
+0xff, 0x19, 0xbc, 0x5f, 0xaf, 0x2f, 0xf7, 0x7f, 
+0xe8, 0xa0, 0x8f, 0xd2, 0x51, 0xfd, 0xd9, 0x67, 
+0x9f, 0x25, 0xf7, 0x18, 0x40, 0x99, 0xfb, 0xaf, 
+0xc1, 0x49, 0x82, 0x32, 0xe7, 0x5f, 0x98, 0x67, 
+0xa7, 0x55, 0xf2, 0x3f, 0x3a, 0xb1, 0x87, 0x71, 
+0xff, 0x7b, 0x7b, 0x33, 0xe6, 0xb4, 0xf6, 0xb7, 
+0xd8, 0x46, 0xff, 0x3e, 0xcb, 0x3e, 0xf8, 0x57, 
+0xbe, 0x78, 0x82, 0x7f, 0x0a, 0xdc, 0xff, 0x7a, 
+0x8e, 0x00, 0x60, 0xc8, 0x5f, 0x82, 0x58, 0x14, 
+0x02, 0x31, 0x60, 0x54, 0x16, 0x09, 0x5b, 0xb2, 
+0x43, 0x78, 0x02, 0x80, 0x85, 0x49, 0x4a, 0xd8, 
+0x4f, 0x26, 0xc9, 0x61, 0x5f, 0xd2, 0xcf, 0x6a, 
+0x2a, 0x00, 0x28, 0xb4, 0x4d, 0xfe, 0x79, 0x87, 
+0x56, 0x71, 0xdd, 0xbf, 0x77, 0x75, 0xbb, 0xde, 
+0x82, 0x7f, 0x4c, 0xe5, 0x6f, 0x57, 0x98, 0x5e, 
+0x2b, 0x7f, 0xc9, 0x35, 0xbf, 0xfb, 0xee, 0xbd, 
+0x51, 0x21, 0x61, 0x5f, 0x78, 0xe1, 0xf9, 0x90, 
+0x91, 0x62, 0xa9, 0x90, 0xfc, 0x47, 0xfa, 0x77, 
+0x43, 0x75, 0x85, 0x2b, 0x1c, 0xa8, 0xf5, 0x64, 
+0xea, 0x77, 0x89, 0x00, 0x38, 0x85, 0xff, 0xed, 
+0xe4, 0xb1, 0x81, 0xec, 0xef, 0x45, 0x72, 0x05, 
+0x0d, 0x75, 0xde, 0x5a, 0xaf, 0xfc, 0x1d, 0xee, 
+0xf0, 0x86, 0xbe, 0x76, 0x1f, 0x88, 0x1e, 0xef, 
+0xd2, 0x93, 0xfb, 0xd7, 0x5d, 0xf0, 0xcf, 0x6f, 
+0x49, 0x06, 0xff, 0xf6, 0xd3, 0xe0, 0x9f, 0x2a, 
+0xf7, 0xcf, 0x92, 0x3f, 0x62, 0xed, 0x68, 0x0c, 
+0x83, 0x75, 0x83, 0x51, 0x60, 0x54, 0x12, 0x01, 
+0x5b, 0x72, 0x82, 0x79, 0x02, 0x40, 0x22, 0x04, 
+0x92, 0x43, 0x7f, 0x30, 0x49, 0xd9, 0xf9, 0x09, 
+0xfd, 0xdc, 0xa6, 0x02, 0x80, 0x42, 0x2b, 0x95, 
+0xbf, 0x87, 0xcf, 0x42, 0x01, 0xf0, 0x8d, 0x44, 
+0x00, 0x54, 0x1e, 0x82, 0xb4, 0xe9, 0x49, 0xbd, 
+0xb9, 0xff, 0x9a, 0xd1, 0xbd, 0x8c, 0xfb, 0x3f, 
+0x3a, 0x12, 0xa6, 0x37, 0xf7, 0x1f, 0xe0, 0xb7, 
+0x46, 0xf1, 0x4e, 0xff, 0x9f, 0x2e, 0x61, 0x72, 
+0x01, 0x42, 0xc4, 0x5f, 0x5d, 0xee, 0x02, 0x8f, 
+0x3e, 0xcc, 0x27, 0xf9, 0x2b, 0xaf, 0xbc, 0x14, 
+0xd6, 0xae, 0x79, 0x11, 0xa6, 0xc7, 0xa3, 0x61, 
+0x62, 0x38, 0x12, 0x3e, 0xfe, 0xf0, 0x29, 0x78, 
+0x16, 0x4b, 0x84, 0x9e, 0x7b, 0xf6, 0x1e, 0x48, 
+0x49, 0x34, 0x87, 0xaf, 0x89, 0x40, 0xd0, 0x22, 
+0xf9, 0x33, 0x95, 0xbf, 0xa3, 0xbb, 0x18, 0xf7, 
+0x5f, 0xd6, 0x5f, 0x40, 0x83, 0x7f, 0x06, 0x09, 
+0xfe, 0x1d, 0xa4, 0xc1, 0x3f, 0x4d, 0x82, 0x7f, 
+0x0a, 0xdd, 0x3f, 0x9f, 0xfc, 0x09, 0xd6, 0x8c, 
+0x46, 0x33, 0x58, 0x3b, 0x18, 0x09, 0x46, 0x45, 
+0x7b, 0x70, 0x22, 0x10, 0x24, 0x23, 0x02, 0x02, 
+0x18, 0xe0, 0x34, 0xe0, 0xdb, 0x2d, 0x69, 0x21, 
+0xef, 0xd0, 0xcf, 0x70, 0x2a, 0x00, 0x28, 0xe6, 
+0x23, 0x00, 0x72, 0x0e, 0x99, 0x70, 0xdd, 0xbf, 
+0x5f, 0x6d, 0xa7, 0xde, 0x82, 0x7f, 0x59, 0x47, 
+0x47, 0x61, 0xa0, 0x33, 0x10, 0xc6, 0xd0, 0xcd, 
+0x7e, 0x8b, 0x44, 0xa9, 0xaf, 0xe0, 0x9f, 0x90, 
+0x53, 0x27, 0x20, 0xab, 0x7e, 0x8d, 0x07, 0xbc, 
+0xe5, 0x88, 0x9f, 0x64, 0x01, 0x08, 0xb1, 0x2b, 
+0x7b, 0xc6, 0x7f, 0xdb, 0xad, 0x57, 0x2b, 0x74, 
+0xfa, 0xda, 0xae, 0xfc, 0x1d, 0xc4, 0xca, 0xdf, 
+0xae, 0xf6, 0x00, 0xd8, 0x33, 0xd1, 0xb7, 0xe4, 
+0x82, 0x7f, 0xbe, 0x4b, 0x32, 0xf8, 0x57, 0x4b, 
+0x83, 0x7f, 0x0a, 0xdc, 0xff, 0x5a, 0x8e, 0x00, 
+0x60, 0xc9, 0x7f, 0x0d, 0x3e, 0x7a, 0x23, 0x58, 
+0x3d, 0x1a, 0x09, 0x6b, 0x06, 0x22, 0xc0, 0x28, 
+0x7f, 0x37, 0x47, 0x08, 0x04, 0x48, 0x60, 0x4c, 
+0x7e, 0x4e, 0x0a, 0xfb, 0x6a, 0x4b, 0x7a, 0xf0, 
+0x2b, 0xf4, 0xb3, 0x9c, 0x0a, 0x00, 0x0a, 0xcd, 
+0xdd, 0xff, 0x39, 0x76, 0x05, 0x87, 0xff, 0xca, 
+0x75, 0xff, 0x19, 0x33, 0x53, 0x7a, 0x0b, 0xfe, 
+0xd5, 0x0f, 0x17, 0x33, 0xee, 0xff, 0xf8, 0x98, 
+0xfe, 0x2a, 0x7f, 0xdb, 0x8f, 0x04, 0x0a, 0x12, 
+0xf8, 0x55, 0x57, 0x5d, 0x0e, 0xcd, 0xb8, 0xe6, 
+0x27, 0x4b, 0xfe, 0x21, 0x81, 0xeb, 0xe0, 0x82, 
+0x0b, 0xce, 0x53, 0xab, 0x11, 0x90, 0x3c, 0x3a, 
+0xe8, 0x69, 0xdf, 0xa9, 0x33, 0xf2, 0x27, 0x98, 
+0x1a, 0xda, 0xc9, 0xb8, 0xff, 0xfc, 0xc1, 0x0a, 
+0x1a, 0xfc, 0xd3, 0xb2, 0xfb, 0x9f, 0x5b, 0xf0, 
+0xef, 0x00, 0x0d, 0xfe, 0x69, 0x1a, 0xfc, 0x13, 
+0x74, 0xff, 0xb2, 0xe4, 0x2f, 0x12, 0x00, 0x04, 
+0x5f, 0x8e, 0x46, 0xc0, 0x9a, 0xfe, 0x3d, 0x60, 
+0x94, 0x87, 0x42, 0x20, 0x27, 0x90, 0x27, 0x00, 
+0x44, 0xf0, 0x27, 0x42, 0xe0, 0xe4, 0x96, 0xf4, 
+0xa0, 0xe7, 0xe8, 0xe7, 0x3a, 0x15, 0x00, 0x14, 
+0x6a, 0x97, 0xfe, 0x1c, 0xb2, 0x45, 0x11, 0x20, 
+0x71, 0xff, 0x01, 0x75, 0x5d, 0x7a, 0x1b, 0xfd, 
+0xe7, 0xcc, 0x0e, 0xc2, 0x50, 0x87, 0x2f, 0x8c, 
+0x61, 0x92, 0xfd, 0xbb, 0xd3, 0x29, 0x7a, 0x73, 
+0xff, 0x8a, 0xc6, 0xff, 0xd6, 0x78, 0xb4, 0x87, 
+0x4b, 0xfc, 0xa7, 0x8f, 0xe1, 0x07, 0xd7, 0xda, 
+0x97, 0x34, 0x3e, 0x06, 0xb4, 0x76, 0xf5, 0x8b, 
+0x3a, 0x23, 0x7f, 0x51, 0xe5, 0xaf, 0x07, 0xb4, 
+0x75, 0xee, 0xc4, 0xb5, 0x3f, 0x1a, 0xfc, 0x9b, 
+0x4b, 0xf0, 0x4f, 0x9b, 0xee, 0x7f, 0x2e, 0xe4, 
+0xaf, 0x5e, 0xdf, 0xff, 0xf2, 0x08, 0xfe, 0x29, 
+0x72, 0xff, 0x5c, 0xf2, 0x5f, 0x8d, 0xe4, 0xff, 
+0x25, 0x83, 0x3d, 0x0c, 0x56, 0xf7, 0x85, 0x83, 
+0x51, 0x4e, 0x38, 0x0a, 0x01, 0xbe, 0x00, 0x60, 
+0x81, 0x42, 0xe0, 0xa8, 0x71, 0x56, 0xe0, 0x63, 
+0xf4, 0xf3, 0x9d, 0x0a, 0x00, 0x0a, 0xe5, 0xee, 
+0xff, 0x7c, 0xbb, 0xc2, 0xc3, 0xff, 0x60, 0x05, 
+0x80, 0x7d, 0xc5, 0x21, 0xc8, 0x9c, 0x9d, 0xd6, 
+0x4b, 0xf0, 0x8f, 0xe0, 0xd0, 0x40, 0x16, 0xe3, 
+0xfe, 0x4f, 0x4d, 0x46, 0xea, 0xb5, 0xf1, 0x8f, 
+0x14, 0xfe, 0x08, 0x11, 0xb7, 0xbd, 0xed, 0x87, 
+0x92, 0xef, 0x19, 0xee, 0x0f, 0x87, 0xa7, 0x9f, 
+0xba, 0x73, 0x4e, 0xd7, 0x00, 0x49, 0x3d, 0x70, 
+0x57, 0x5b, 0x88, 0x4e, 0x04, 0xc0, 0x44, 0x7f, 
+0x10, 0xe3, 0xfe, 0x33, 0x86, 0xeb, 0x68, 0xf0, 
+0x6f, 0x99, 0x04, 0xff, 0xac, 0x96, 0x41, 0xf0, 
+0x6f, 0xad, 0xc0, 0xe8, 0x9f, 0x4f, 0xfe, 0x22, 
+0x01, 0xb0, 0x8a, 0xc1, 0x6e, 0x06, 0x5f, 0xf6, 
+0xec, 0x02, 0xa3, 0xec, 0x5d, 0x72, 0x02, 0x40, 
+0x2a, 0x04, 0x42, 0x27, 0x8d, 0x73, 0xfc, 0x1f, 
+0xa4, 0x9f, 0xf5, 0x54, 0x00, 0x50, 0x08, 0x09, 
+0x80, 0xcc, 0x43, 0x5e, 0x22, 0xf2, 0x17, 0x09, 
+0x80, 0xe0, 0x83, 0x3d, 0x7a, 0x73, 0xff, 0x05, 
+0xd3, 0x5d, 0x48, 0xfe, 0x58, 0xf9, 0xdb, 0xe3, 
+0xaf, 0xf7, 0xbe, 0xff, 0x88, 0x70, 0x23, 0x85, 
+0xc4, 0xed, 0xe6, 0xfc, 0x29, 0xd8, 0xed, 0xf8, 
+0x00, 0x2e, 0xbb, 0xec, 0x22, 0xa5, 0x24, 0xff, 
+0xe2, 0x8a, 0xfb, 0xe0, 0xc3, 0x0f, 0x9e, 0x54, 
+0xf8, 0xef, 0xb3, 0xd2, 0xac, 0xb5, 0x4e, 0xfe, 
+0x27, 0x67, 0x63, 0x18, 0xf2, 0x6f, 0xea, 0x8a, 
+0xa4, 0xc1, 0x3f, 0xad, 0x8d, 0xfe, 0x0f, 0xd3, 
+0xe0, 0xdf, 0x02, 0x0a, 0xfe, 0x09, 0x8d, 0xfe, 
+0xb9, 0xee, 0x9f, 0x25, 0x7f, 0x82, 0x95, 0xa3, 
+0xe1, 0x0c, 0xbe, 0xec, 0x0e, 0x03, 0xa3, 0xac, 
+0x30, 0x01, 0x11, 0xe0, 0x07, 0xc6, 0x39, 0x88, 
+0xe4, 0xd0, 0x11, 0xfc, 0xfa, 0x2e, 0xfa, 0x99, 
+0x4f, 0x05, 0x00, 0x85, 0xd4, 0xfd, 0x5f, 0x6c, 
+0x57, 0x7c, 0xf8, 0x3f, 0xac, 0x00, 0xb0, 0x2f, 
+0x3f, 0x8c, 0x81, 0xbc, 0x69, 0xbd, 0x04, 0xff, 
+0x08, 0x5a, 0xfa, 0x12, 0x75, 0x52, 0xf9, 0xab, 
+0xce, 0xb1, 0x9f, 0xb2, 0x22, 0x87, 0x39, 0x39, 
+0x7b, 0x36, 0x24, 0x98, 0x8f, 0xe5, 0x41, 0x92, 
+0xe6, 0x3f, 0x6b, 0xe1, 0xe6, 0xbf, 0xe4, 0x78, 
+0x33, 0xad, 0x0b, 0x80, 0x31, 0x14, 0x4b, 0x03, 
+0x58, 0xfa, 0x93, 0x3c, 0x7a, 0x88, 0x06, 0xff, 
+0xd4, 0x0a, 0xfe, 0xb5, 0xd2, 0xe0, 0xdf, 0x22, 
+0x0d, 0xfe, 0x09, 0x8d, 0xfe, 0x85, 0xc8, 0x7f, 
+0x25, 0x6e, 0xc3, 0x7c, 0x31, 0x46, 0x10, 0x06, 
+0x5f, 0xe2, 0xe5, 0x4d, 0xa3, 0xcc, 0x50, 0xbe, 
+0x00, 0x60, 0x91, 0x83, 0xff, 0x3b, 0x29, 0xb4, 
+0xcf, 0x38, 0xd7, 0xf7, 0x36, 0xfa, 0xf9, 0x4f, 
+0x05, 0x00, 0x15, 0x00, 0x19, 0x87, 0x76, 0x49, 
+0xdd, 0xff, 0x61, 0x08, 0x3d, 0xd4, 0xab, 0xb7, 
+0xe0, 0x5f, 0xc9, 0xe4, 0x11, 0x86, 0xfc, 0xa7, 
+0xfb, 0x82, 0x0c, 0x76, 0xed, 0x6f, 0x2e, 0xe3, 
+0xfd, 0x07, 0x1f, 0xb8, 0x09, 0x7a, 0x3b, 0x43, 
+0x79, 0xe5, 0x3f, 0x8e, 0xf6, 0x1f, 0x0b, 0x7e, 
+0x6f, 0x4c, 0xa4, 0x89, 0x56, 0xc9, 0xff, 0xf8, 
+0x54, 0x24, 0xe3, 0xfe, 0xeb, 0xba, 0x13, 0x69, 
+0xf0, 0x4f, 0x67, 0xc1, 0xbf, 0x26, 0x1a, 0xfc, 
+0x5b, 0x60, 0xc1, 0x3f, 0xa1, 0xd1, 0xbf, 0x94, 
+0xfc, 0xf9, 0x02, 0x80, 0xe0, 0xf3, 0xb1, 0x50, 
+0xf8, 0x12, 0xf3, 0x31, 0x22, 0x21, 0xe0, 0x27, 
+0x8f, 0x6c, 0x66, 0x22, 0xd0, 0x69, 0x9c, 0xe3, 
+0x7b, 0x23, 0xe5, 0x01, 0x2a, 0x00, 0x96, 0xa9, 
+0xfb, 0x6f, 0xbe, 0xdc, 0xae, 0xf4, 0xf0, 0xff, 
+0x58, 0xf2, 0x77, 0x28, 0x6b, 0x86, 0xac, 0x63, 
+0x33, 0x1c, 0xf2, 0x9f, 0xd5, 0xd9, 0xe8, 0x3f, 
+0x1d, 0x4b, 0x7f, 0xba, 0xba, 0x23, 0x18, 0x01, 
+0xf0, 0x35, 0x86, 0xec, 0x0c, 0x75, 0xea, 0xb7, 
+0xa2, 0xd4, 0x49, 0x23, 0xf2, 0xff, 0x08, 0x57, 
+0x00, 0x8f, 0xe1, 0x5d, 0x00, 0xde, 0xe1, 0x1f, 
+0x5c, 0x5b, 0x7c, 0xe4, 0x61, 0xe1, 0x75, 0xc2, 
+0x83, 0xfb, 0xbd, 0xb5, 0x46, 0xfe, 0xe4, 0xff, 
+0xce, 0x48, 0x97, 0x0f, 0xf4, 0xe3, 0x9f, 0x59, 
+0xec, 0x68, 0x1b, 0x0d, 0xfe, 0xd1, 0xe0, 0xdf, 
+0xb2, 0x0b, 0xfe, 0xa9, 0x72, 0xff, 0x2c, 0xf9, 
+0x8b, 0xb0, 0x13, 0x3e, 0x43, 0x7c, 0xd9, 0x1e, 
+0x0c, 0x46, 0x19, 0x3b, 0x65, 0x44, 0x80, 0xaf, 
+0x08, 0x59, 0x44, 0x08, 0xec, 0x3c, 0x82, 0x42, 
+0xe0, 0x5a, 0xca, 0x09, 0x54, 0x00, 0x2c, 0x2f, 
+0x01, 0x90, 0x7e, 0x38, 0x81, 0xeb, 0xfe, 0x77, 
+0xb5, 0xf4, 0xeb, 0x2d, 0xf8, 0x57, 0x35, 0x76, 
+0x40, 0x5c, 0xf9, 0xbb, 0xd3, 0xe0, 0xa7, 0x7e, 
+0xe3, 0x63, 0x4c, 0x95, 0xde, 0x01, 0x20, 0xb8, 
+0xe5, 0xe6, 0xab, 0x20, 0x95, 0xf4, 0xf7, 0xcb, 
+0x56, 0xff, 0x22, 0x61, 0x6f, 0x57, 0x30, 0xfe, 
+0xbf, 0xeb, 0xce, 0xeb, 0xb4, 0x5b, 0xfa, 0x83, 
+0x2b, 0x92, 0xc4, 0xfd, 0x57, 0xf5, 0x65, 0xd3, 
+0xe0, 0x9f, 0x9e, 0x82, 0x7f, 0xea, 0xf5, 0xfd, 
+0xd3, 0xe0, 0x9f, 0xbe, 0x83, 0x7f, 0x8a, 0xc8, 
+0x5f, 0x48, 0x00, 0x7c, 0x36, 0x16, 0xc2, 0x60, 
+0x55, 0x0b, 0x11, 0x02, 0x21, 0x7c, 0x01, 0x90, 
+0x23, 0x46, 0xa6, 0xff, 0x1f, 0x46, 0x29, 0x21, 
+0x0d, 0xc6, 0x39, 0x3e, 0x57, 0x51, 0x6e, 0xa0, 
+0x02, 0x60, 0x39, 0xb8, 0xff, 0xbf, 0xd8, 0x95, 
+0x35, 0xff, 0xca, 0x92, 0xbf, 0x23, 0xba, 0x7f, 
+0x42, 0xee, 0xfa, 0x08, 0xfe, 0x65, 0x1c, 0x9b, 
+0x80, 0x3e, 0x1c, 0xcf, 0x91, 0xca, 0xdf, 0x6f, 
+0x4e, 0x24, 0x1a, 0xcc, 0xfd, 0x73, 0x41, 0xf6, 
+0xfe, 0xef, 0xbd, 0xe7, 0x06, 0x39, 0x12, 0xbf, 
+0x1c, 0x43, 0x80, 0x5e, 0xee, 0x5f, 0xc0, 0x29, 
+0x9c, 0x52, 0xc8, 0x92, 0xff, 0x69, 0x3c, 0xe5, 
+0x6b, 0x6d, 0xf9, 0xae, 0x42, 0xd1, 0xe0, 0xec, 
+0xf8, 0x89, 0xd6, 0xc8, 0xff, 0xab, 0x13, 0x49, 
+0x30, 0x84, 0x7f, 0x5e, 0xbd, 0x6d, 0xbe, 0x10, 
+0x31, 0xde, 0x4d, 0x83, 0x7f, 0x34, 0xf8, 0x27, 
+0x48, 0xfe, 0x66, 0xcb, 0x2c, 0xf8, 0xa7, 0xca, 
+0xfd, 0xb3, 0xe4, 0xff, 0xe9, 0x58, 0xb0, 0x18, 
+0x41, 0xf0, 0x65, 0x33, 0x11, 0x02, 0xc1, 0x7c, 
+0x01, 0xc0, 0xc0, 0x07, 0x85, 0x80, 0x1f, 0x11, 
+0x02, 0xb5, 0x46, 0x39, 0x3e, 0x57, 0x52, 0x9e, 
+0xa0, 0x02, 0x60, 0x29, 0xbb, 0xff, 0x5c, 0x14, 
+0x01, 0x12, 0xf7, 0xbf, 0xa7, 0x63, 0x50, 0x6f, 
+0xc1, 0xbf, 0xda, 0xe1, 0x4a, 0xc6, 0xfd, 0x1f, 
+0xc3, 0x37, 0xef, 0x42, 0x20, 0x7f, 0x2e, 0xc8, 
+0x89, 0xde, 0xdd, 0x61, 0x9b, 0x20, 0xd0, 0x7f, 
+0x0d, 0x64, 0xa7, 0x5b, 0x63, 0xa5, 0x6f, 0x84, 
+0xbc, 0xeb, 0x47, 0x1c, 0x46, 0xc1, 0xa0, 0xa8, 
+0x45, 0x90, 0x80, 0x4c, 0x14, 0x7a, 0x3b, 0x42, 
+0xb5, 0x26, 0x00, 0x66, 0xb0, 0x1e, 0x99, 0xb8, 
+0xff, 0xe2, 0x81, 0x22, 0x83, 0x05, 0xff, 0x82, 
+0x68, 0xf0, 0x6f, 0xc9, 0x05, 0xff, 0x4c, 0x0c, 
+0x1c, 0xfc, 0x5b, 0xab, 0xa5, 0xe0, 0x9f, 0x2c, 
+0xf9, 0x2b, 0x13, 0x00, 0x9f, 0x30, 0x08, 0x84, 
+0x2f, 0x0f, 0x05, 0x81, 0x71, 0x5a, 0x30, 0x5f, 
+0x00, 0x88, 0x61, 0x94, 0xe1, 0xf7, 0xc7, 0xe6, 
+0xd4, 0x90, 0x0a, 0xa3, 0x1c, 0xef, 0xcb, 0x29, 
+0x5f, 0x50, 0x01, 0xb0, 0xd4, 0xdc, 0xff, 0xf5, 
+0x76, 0x15, 0xcd, 0xbf, 0xb3, 0x02, 0xc0, 0xa9, 
+0xf4, 0x08, 0x12, 0xbc, 0x7e, 0x82, 0x7f, 0x59, 
+0xb3, 0x23, 0x30, 0xd8, 0x19, 0x00, 0x63, 0x9d, 
+0x3e, 0xf0, 0xed, 0xa9, 0x94, 0x05, 0x27, 0x00, 
+0xd4, 0xbd, 0xf6, 0x47, 0x9a, 0xfe, 0x94, 0x3d, 
+0x32, 0x88, 0xdc, 0x6d, 0xa4, 0xbd, 0xd2, 0x9f, 
+0xe3, 0x09, 0x4c, 0xe5, 0x6f, 0x67, 0x47, 0x10, 
+0xec, 0x1e, 0xef, 0xa3, 0xc1, 0x3f, 0x1a, 0xfc, 
+0x5b, 0xb6, 0xc1, 0xbf, 0xf9, 0xba, 0x7f, 0x96, 
+0xfc, 0x09, 0x3e, 0x66, 0x10, 0x00, 0x5f, 0x36, 
+0x10, 0x21, 0x10, 0xc4, 0x17, 0x00, 0x2c, 0x32, 
+0xfc, 0x7e, 0xdf, 0x94, 0x16, 0x5c, 0x88, 0x42, 
+0xe0, 0x12, 0xca, 0x1d, 0x54, 0x00, 0x2c, 0x15, 
+0xf7, 0x5f, 0x25, 0x22, 0x7f, 0x91, 0x00, 0x88, 
+0xe8, 0x1e, 0xd2, 0x53, 0xf0, 0x6f, 0x0a, 0x0e, 
+0x0e, 0x16, 0x30, 0xee, 0xff, 0x04, 0x9e, 0xb0, 
+0x35, 0x04, 0xf9, 0x93, 0x56, 0xbf, 0x98, 0xc8, 
+0x2d, 0x60, 0xb4, 0xe9, 0x55, 0xf8, 0x08, 0xf7, 
+0xf7, 0x9f, 0x7f, 0xee, 0x1e, 0xb8, 0xfb, 0xee, 
+0xeb, 0xe1, 0x8e, 0xdb, 0xaf, 0x61, 0x0e, 0xf9, 
+0x24, 0xc6, 0x6e, 0x85, 0xd1, 0x81, 0x3d, 0x0a, 
+0xc9, 0x9f, 0x5c, 0xdf, 0xbb, 0xe6, 0xea, 0x2b, 
+0x94, 0x92, 0xff, 0xca, 0xcf, 0x9f, 0x9b, 0xc3, 
+0xb3, 0xff, 0x64, 0x85, 0x98, 0xc4, 0xd3, 0xc8, 
+0xc4, 0xfd, 0xe7, 0x0c, 0x55, 0x2d, 0x98, 0xe0, 
+0x5f, 0xa0, 0xc1, 0x83, 0x7f, 0x1d, 0x34, 0xf8, 
+0x47, 0x83, 0x7f, 0x1a, 0x90, 0xbf, 0x90, 0x00, 
+0x08, 0x10, 0xc3, 0x1f, 0x3e, 0x1a, 0xf5, 0x87, 
+0x2f, 0xeb, 0x03, 0xc1, 0x38, 0x3d, 0x90, 0x2f, 
+0x00, 0x72, 0xbc, 0x45, 0x48, 0x47, 0x21, 0x90, 
+0x11, 0x94, 0x85, 0x5f, 0x5f, 0x44, 0x39, 0x84, 
+0x0a, 0x80, 0xc5, 0xec, 0xfe, 0x6f, 0xb3, 0xab, 
+0x6c, 0xfe, 0x83, 0x15, 0x00, 0xce, 0xe8, 0xfe, 
+0xf5, 0x15, 0xfc, 0xcb, 0x9b, 0xe9, 0x87, 0xe1, 
+0x76, 0x6f, 0x18, 0xef, 0xf6, 0xd3, 0x53, 0xe5, 
+0xaf, 0x94, 0xf8, 0x27, 0xf1, 0x03, 0xc6, 0xdd, 
+0xf5, 0x73, 0xb8, 0xf6, 0x9a, 0x3f, 0xa9, 0x4c, 
+0xfa, 0x9f, 0x75, 0xd6, 0x59, 0xb0, 0xe2, 0x85, 
+0x7b, 0x05, 0xc7, 0xff, 0x3d, 0x78, 0x0c, 0x48, 
+0xd9, 0xaf, 0x25, 0x95, 0xc1, 0xa7, 0x8f, 0x25, 
+0x69, 0xcd, 0xfd, 0x9f, 0x3a, 0x1a, 0xc7, 0x54, 
+0xfe, 0xb6, 0x74, 0xee, 0x42, 0xc2, 0xef, 0xd7, 
+0x4b, 0xf0, 0x2f, 0x98, 0x06, 0xff, 0x68, 0xf0, 
+0x6f, 0x51, 0x04, 0xff, 0xe6, 0xef, 0xfe, 0x09, 
+0x3e, 0x22, 0x02, 0x80, 0x81, 0x1f, 0x7c, 0x38, 
+0xea, 0x07, 0x5f, 0xd6, 0x05, 0x20, 0xe1, 0x07, 
+0xf0, 0x05, 0x80, 0x44, 0x08, 0xf8, 0xff, 0xb6, 
+0x29, 0x33, 0x30, 0xc9, 0x28, 0xc7, 0xeb, 0x02, 
+0xca, 0x27, 0x54, 0x00, 0x2c, 0xc2, 0xbd, 0xff, 
+0xc3, 0x0d, 0x52, 0xf7, 0xdf, 0x0c, 0xd1, 0x7d, 
+0x23, 0x7a, 0x09, 0xfe, 0x11, 0x1c, 0xee, 0x4f, 
+0x17, 0x55, 0xfe, 0x4e, 0x45, 0xe9, 0xd5, 0xfd, 
+0x3b, 0xe1, 0x8e, 0xbe, 0xaa, 0x94, 0xbf, 0x10, 
+0xee, 0xb8, 0xe3, 0x5a, 0x98, 0xc2, 0xd3, 0xbe, 
+0xbc, 0x95, 0x3f, 0x24, 0x65, 0x32, 0x2d, 0x90, 
+0xfd, 0xde, 0x73, 0xce, 0x39, 0x1b, 0x5c, 0x9c, 
+0x3e, 0xd5, 0x6a, 0xea, 0x9f, 0x60, 0xbc, 0x2f, 
+0x90, 0x71, 0xff, 0x69, 0xc3, 0x07, 0x68, 0xf0, 
+0x4f, 0xe1, 0xe8, 0xbf, 0x8d, 0x06, 0xff, 0x68, 
+0xf0, 0x4f, 0x6d, 0xf2, 0x97, 0x73, 0xff, 0x62, 
+0xf2, 0x67, 0x04, 0xc0, 0x98, 0xaf, 0x08, 0xa3, 
+0xbe, 0xf0, 0x65, 0x2d, 0x11, 0x02, 0xfe, 0xf2, 
+0x22, 0x20, 0xc7, 0x0b, 0x8c, 0xd2, 0xfc, 0x7e, 
+0xdb, 0x98, 0x15, 0x10, 0x85, 0x5f, 0x9f, 0x47, 
+0x79, 0x85, 0x0a, 0x80, 0xc5, 0x41, 0xfe, 0x95, 
+0xcd, 0xf7, 0xd9, 0x55, 0x49, 0xdd, 0xbf, 0x4b, 
+0x59, 0xab, 0xde, 0x82, 0x7f, 0x85, 0x53, 0x1d, 
+0x4c, 0xe5, 0xef, 0x64, 0x6f, 0x80, 0xde, 0xc8, 
+0xff, 0x0c, 0xa6, 0xf4, 0x57, 0x7d, 0xf1, 0xfc, 
+0x9c, 0xdb, 0xfe, 0xc8, 0x24, 0xe0, 0xe8, 0x54, 
+0xac, 0xdc, 0xda, 0x1f, 0xb9, 0xf2, 0x77, 0xeb, 
+0x2d, 0x57, 0xc1, 0xd9, 0x67, 0x9f, 0xc5, 0x10, 
+0x3f, 0x19, 0xf9, 0xb7, 0x1f, 0x09, 0xd2, 0x7a, 
+0xe3, 0xdf, 0x89, 0x19, 0x51, 0xe5, 0x6f, 0x43, 
+0x57, 0x0c, 0x0d, 0xfe, 0xd1, 0xe0, 0x1f, 0x0d, 
+0xfe, 0x29, 0x25, 0x7f, 0x2d, 0xb8, 0x7f, 0x8e, 
+0x00, 0xf8, 0x60, 0xcc, 0x87, 0xc1, 0x87, 0x23, 
+0xde, 0xb0, 0x7a, 0xaf, 0x3f, 0xc9, 0x02, 0xf0, 
+0x05, 0x00, 0x8b, 0x34, 0xbf, 0x5f, 0x37, 0x64, 
+0x07, 0xec, 0x32, 0xca, 0xf1, 0x3c, 0x87, 0x72, 
+0x0c, 0x15, 0x00, 0x0b, 0xbc, 0xf3, 0xff, 0x70, 
+0x3b, 0xd7, 0xfd, 0xc7, 0x0d, 0x8d, 0xea, 0x25, 
+0xf8, 0x47, 0xd0, 0xd6, 0x1b, 0xc7, 0xb8, 0xff, 
+0x33, 0xb3, 0xb1, 0x7a, 0x13, 0x00, 0x16, 0x66, 
+0x6f, 0xcf, 0x99, 0xfc, 0x09, 0x6e, 0xba, 0xe9, 
+0x2f, 0x3c, 0xf2, 0xef, 0x6e, 0x0f, 0x81, 0xb1, 
+0xc1, 0x08, 0x46, 0x58, 0x30, 0xe4, 0x7e, 0x92, 
+0x90, 0x74, 0xbc, 0x4e, 0x8e, 0xfd, 0x30, 0x95, 
+0xbf, 0xdd, 0xbe, 0xcc, 0xf8, 0x3f, 0x61, 0xf4, 
+0x30, 0x0d, 0xfe, 0xd1, 0xe0, 0x9f, 0xc1, 0x82, 
+0x7f, 0x9b, 0x97, 0x60, 0xf0, 0x4f, 0xa9, 0xfb, 
+0x17, 0x93, 0xff, 0x07, 0x63, 0xde, 0x0c, 0xde, 
+0x27, 0x3f, 0x8f, 0x78, 0xc1, 0xea, 0x2a, 0x56, 
+0x08, 0x78, 0xc9, 0x23, 0xd5, 0xef, 0x97, 0x0d, 
+0xb9, 0x7e, 0x01, 0x28, 0x04, 0xce, 0xa6, 0x5c, 
+0x43, 0x05, 0xc0, 0xc2, 0x23, 0xff, 0xb2, 0x23, 
+0x4f, 0xd8, 0xed, 0x95, 0x92, 0xbf, 0x5b, 0x59, 
+0x9b, 0xde, 0x82, 0x7f, 0xa5, 0xe3, 0x87, 0x44, 
+0x95, 0xbf, 0x03, 0xc1, 0x7a, 0x23, 0xff, 0xe2, 
+0x7c, 0x3b, 0xc6, 0xc1, 0x2b, 0x22, 0xf7, 0xbb, 
+0xee, 0xba, 0x0e, 0x5e, 0x7d, 0xf9, 0x01, 0x06, 
+0x8a, 0x42, 0x7d, 0x5e, 0x1e, 0x2b, 0x19, 0xe2, 
+0x27, 0x8f, 0x01, 0x48, 0x03, 0x20, 0xfb, 0xcf, 
+0xc9, 0xaf, 0x61, 0x45, 0xc0, 0xfc, 0xce, 0xfd, 
+0x2a, 0x26, 0xff, 0x63, 0x93, 0x11, 0x8c, 0xfb, 
+0xaf, 0xed, 0x49, 0xa1, 0xc1, 0x3f, 0x1a, 0xfc, 
+0x5b, 0x54, 0xc1, 0x3f, 0x75, 0xfb, 0xfe, 0x75, 
+0x15, 0xfc, 0x53, 0x2e, 0x00, 0x64, 0xc9, 0x5f, 
+0xb1, 0xfb, 0x67, 0xc9, 0xff, 0xfd, 0x31, 0x2f, 
+0x31, 0x3c, 0xe1, 0xfd, 0x61, 0x4f, 0x58, 0x5d, 
+0x81, 0x42, 0x20, 0xd3, 0x47, 0x46, 0x04, 0x78, 
+0x8a, 0x90, 0xea, 0xf7, 0xdf, 0xf5, 0x79, 0xbe, 
+0x1e, 0x46, 0xd9, 0x9e, 0x67, 0x51, 0xde, 0xa1, 
+0x02, 0x60, 0xe1, 0x08, 0x80, 0xac, 0xe6, 0x41, 
+0xae, 0x00, 0x48, 0x18, 0x1d, 0x9f, 0x9b, 0xfb, 
+0xd7, 0x30, 0xf8, 0x97, 0x81, 0x95, 0xbf, 0xdd, 
+0x5d, 0xe1, 0x4c, 0xe9, 0xcf, 0xd7, 0xc7, 0x13, 
+0xf4, 0x16, 0xfc, 0x7b, 0xe8, 0xc1, 0x9b, 0x05, 
+0x49, 0xfd, 0xfe, 0xfb, 0x6e, 0x84, 0xf2, 0x12, 
+0x47, 0x5e, 0x40, 0x90, 0x9c, 0xfc, 0xbd, 0xe8, 
+0x22, 0xfe, 0x5a, 0xdf, 0x8d, 0x37, 0xfe, 0x1f, 
+0x9c, 0x3c, 0x2a, 0x2a, 0xff, 0x31, 0xdf, 0xf6, 
+0x96, 0xdc, 0xef, 0x43, 0x8e, 0xff, 0xcc, 0x8f, 
+0xfc, 0x95, 0x94, 0xfe, 0x90, 0xca, 0x5f, 0x5c, 
+0x93, 0xec, 0x6b, 0xf3, 0x86, 0xe8, 0xb1, 0x76, 
+0x1a, 0xfc, 0x5b, 0x40, 0xc1, 0x3f, 0x7b, 0x1a, 
+0xfc, 0x5b, 0x72, 0xc1, 0x3f, 0xe5, 0xee, 0x5f, 
+0x4a, 0xfe, 0xef, 0x49, 0xe0, 0x81, 0x42, 0xc0, 
+0x03, 0xd6, 0x94, 0xf9, 0x71, 0x84, 0x80, 0xa7, 
+0x14, 0xd9, 0x88, 0x14, 0xff, 0x9f, 0xd7, 0x15, 
+0xf8, 0x38, 0x50, 0xee, 0xa1, 0x02, 0xc0, 0xf0, 
+0xe4, 0x5f, 0xd4, 0xfc, 0xb2, 0xdd, 0xde, 0x23, 
+0xc0, 0x0a, 0x00, 0xf7, 0x8a, 0x76, 0xbd, 0x05, 
+0xff, 0xaa, 0x46, 0xf7, 0x31, 0xee, 0x7f, 0x76, 
+0x28, 0x54, 0x6f, 0xee, 0x7f, 0x5f, 0xb5, 0x9b, 
+0x20, 0xf9, 0xdf, 0x70, 0xc3, 0x9f, 0x79, 0x2b, 
+0x7e, 0x2c, 0x36, 0xac, 0x7b, 0x49, 0xfe, 0x88, 
+0x4f, 0x94, 0x89, 0x64, 0xf4, 0xff, 0xda, 0x2b, 
+0x0f, 0x0a, 0x0a, 0x09, 0x5d, 0x8d, 0xfe, 0x67, 
+0xc7, 0xc2, 0x19, 0xf7, 0x5f, 0xd1, 0x97, 0x43, 
+0x83, 0x7f, 0x34, 0xf8, 0xb7, 0xc8, 0x83, 0x7f, 
+0xb1, 0x06, 0x0e, 0xfe, 0x05, 0xa9, 0x1f, 0xfc, 
+0x53, 0xe2, 0xfe, 0xb9, 0xe4, 0xff, 0xae, 0x04, 
+0xee, 0xf0, 0xfe, 0x90, 0x3b, 0xac, 0x29, 0x26, 
+0x13, 0x01, 0x6f, 0xbe, 0x00, 0x60, 0xe0, 0x01, 
+0x9b, 0x53, 0xfc, 0xfe, 0xb3, 0xb6, 0xc8, 0xcb, 
+0x9a, 0xf2, 0x10, 0x15, 0x00, 0x86, 0x13, 0x00, 
+0x39, 0xcd, 0x53, 0x5c, 0x01, 0x90, 0x34, 0x3e, 
+0x31, 0xef, 0xb5, 0x3f, 0x75, 0x82, 0x7f, 0x19, 
+0xb3, 0xe3, 0xd0, 0xdf, 0x19, 0x0c, 0xa3, 0x1d, 
+0x58, 0xf9, 0x7b, 0x32, 0x49, 0x6f, 0xa9, 0x7f, 
+0x6b, 0x0b, 0xe1, 0x7a, 0xde, 0xfc, 0x9c, 0x1d, 
+0x72, 0xe4, 0xdf, 0x72, 0x28, 0x80, 0x09, 0xf2, 
+0x71, 0xbf, 0x8f, 0x4c, 0x0f, 0x08, 0x11, 0x4b, 
+0x04, 0xc0, 0xab, 0x0f, 0x09, 0x36, 0xfd, 0xe9, 
+0x42, 0x00, 0x9c, 0xc1, 0x6a, 0xe4, 0x21, 0x2c, 
+0xfd, 0xe9, 0x69, 0xf7, 0xc3, 0xca, 0xdf, 0x1e, 
+0x1a, 0xfc, 0xa3, 0xc1, 0xbf, 0x65, 0x16, 0xfc, 
+0xdb, 0x63, 0xf0, 0xe0, 0x9f, 0x62, 0xf7, 0xef, 
+0xc1, 0x11, 0x00, 0xee, 0x0c, 0xde, 0x19, 0x73, 
+0x63, 0xf0, 0xde, 0xa0, 0x2b, 0xac, 0x2d, 0xc4, 
+0x89, 0x40, 0x96, 0x17, 0x4f, 0x00, 0xb0, 0xd8, 
+0x94, 0xe2, 0xf7, 0xaf, 0x35, 0x25, 0x5e, 0xa6, 
+0x94, 0x8f, 0xa8, 0x00, 0xd0, 0x2f, 0xf9, 0xe7, 
+0x37, 0xbf, 0x2f, 0x22, 0x7f, 0x91, 0x00, 0xf0, 
+0xac, 0xea, 0xd0, 0x5b, 0xf0, 0x6f, 0xff, 0x70, 
+0x99, 0xb8, 0xf2, 0x37, 0x5c, 0xaf, 0x6b, 0x7f, 
+0x6f, 0xbf, 0xf5, 0xa8, 0x1c, 0x61, 0x5f, 0x71, 
+0xf9, 0xc5, 0xd8, 0xa8, 0x97, 0x28, 0x27, 0x00, 
+0xde, 0x79, 0x5b, 0xfe, 0x7b, 0x8b, 0x30, 0x3f, 
+0xc0, 0x0d, 0xff, 0x09, 0x4d, 0x00, 0x08, 0xc6, 
+0x87, 0x22, 0xb4, 0xee, 0xfe, 0xa7, 0x87, 0x43, 
+0x19, 0xf7, 0x5f, 0x38, 0x50, 0x42, 0x83, 0x7f, 
+0x34, 0xf8, 0xb7, 0xc4, 0x82, 0x7f, 0xd1, 0x8b, 
+0x2a, 0xf8, 0xa7, 0xd8, 0xfd, 0xf3, 0xc9, 0x5f, 
+0x04, 0x57, 0x78, 0x1b, 0xc1, 0x08, 0x81, 0x7c, 
+0x56, 0x08, 0x48, 0x05, 0xc0, 0x66, 0x31, 0x36, 
+0xa5, 0xf8, 0xfe, 0x63, 0x75, 0x99, 0xc7, 0x46, 
+0xca, 0x4d, 0x54, 0x00, 0xe8, 0x47, 0x00, 0xe4, 
+0x35, 0x9f, 0x94, 0x08, 0x00, 0x74, 0xff, 0x29, 
+0x93, 0x93, 0x1a, 0x05, 0xff, 0xb2, 0xe6, 0x38, 
+0xfa, 0xcf, 0x9a, 0x19, 0x86, 0xa1, 0x0e, 0x3f, 
+0xa6, 0xf2, 0xf7, 0x3b, 0x2d, 0x56, 0xfe, 0xaa, 
+0xd3, 0xf8, 0xf7, 0xc4, 0xe3, 0xb7, 0xcb, 0x91, 
+0xf5, 0x03, 0xf7, 0xdf, 0x24, 0x47, 0xfe, 0x95, 
+0xa5, 0xce, 0x72, 0xdf, 0x47, 0x02, 0x7e, 0xb2, 
+0x6b, 0x7f, 0xcf, 0x3c, 0x75, 0x97, 0xdc, 0xf7, 
+0x9d, 0x77, 0xee, 0x39, 0x78, 0xa0, 0x27, 0x59, 
+0xab, 0xc1, 0xbf, 0xd3, 0xc7, 0xe3, 0x31, 0xf5, 
+0xef, 0x09, 0xed, 0x1d, 0xc1, 0x10, 0x3e, 0xd1, 
+0x47, 0x83, 0x7f, 0x34, 0xf8, 0x47, 0x83, 0x7f, 
+0x0b, 0x20, 0xf8, 0xa7, 0xca, 0xfd, 0xb3, 0xe4, 
+0xff, 0xf6, 0x98, 0x0b, 0x83, 0xb7, 0xc6, 0x9c, 
+0xe1, 0xdd, 0x01, 0x17, 0x58, 0x87, 0xc7, 0x86, 
+0x8c, 0xb2, 0x3c, 0x79, 0x02, 0x60, 0x73, 0xb6, 
+0x3b, 0x03, 0x14, 0x02, 0x3f, 0x7e, 0x59, 0xe9, 
+0xbe, 0x92, 0x72, 0x14, 0x15, 0x00, 0x3a, 0x83, 
+0x7d, 0x6e, 0xf3, 0x6a, 0xa9, 0xfb, 0x3f, 0x02, 
+0xde, 0x7b, 0x3b, 0xf5, 0x12, 0xfc, 0x23, 0x68, 
+0x18, 0xc8, 0x65, 0xdc, 0xff, 0xc9, 0x89, 0x08, 
+0xbd, 0x9f, 0xfa, 0x5d, 0x87, 0x95, 0xbe, 0x42, 
+0x13, 0x00, 0xd9, 0xef, 0x93, 0x15, 0x0a, 0x64, 
+0xaf, 0xbf, 0xb1, 0xde, 0x87, 0x47, 0xfe, 0x04, 
+0xd7, 0x5d, 0x77, 0xa5, 0xe0, 0x79, 0x60, 0x6d, 
+0xbb, 0xff, 0x49, 0xdc, 0x92, 0x20, 0xee, 0x3f, 
+0x6b, 0xb0, 0x86, 0x06, 0xff, 0x74, 0xe2, 0xfe, 
+0x69, 0xf0, 0x4f, 0x4a, 0xfe, 0x19, 0x06, 0x0e, 
+0xfe, 0x45, 0x2e, 0xba, 0xe0, 0x9f, 0x3a, 0xe4, 
+0xcf, 0x0a, 0x00, 0x11, 0x9c, 0xe0, 0xdd, 0x7e, 
+0x67, 0x58, 0x8f, 0x87, 0x86, 0x36, 0x67, 0xf1, 
+0x05, 0x00, 0x8b, 0x8d, 0xa9, 0x7e, 0x7f, 0x5d, 
+0xb9, 0xd7, 0xe5, 0x63, 0xca, 0x57, 0x54, 0x00, 
+0x68, 0x97, 0xfc, 0xf7, 0x1e, 0x39, 0xcb, 0x3e, 
+0xbf, 0xf9, 0x5b, 0x89, 0x00, 0xa8, 0x3a, 0x02, 
+0xa9, 0xd3, 0x93, 0x7a, 0x09, 0xfe, 0xe5, 0x4e, 
+0xf5, 0x62, 0xe5, 0xaf, 0x17, 0x4c, 0x30, 0x95, 
+0xbf, 0xfa, 0xef, 0xfb, 0xdf, 0x19, 0xb4, 0x5e, 
+0x70, 0x64, 0x9f, 0x14, 0xb7, 0x4d, 0xf2, 0x3d, 
+0x29, 0x89, 0xe6, 0x72, 0xff, 0x7e, 0xd5, 0xca, 
+0xe7, 0xe5, 0xdc, 0x7f, 0x5d, 0x8d, 0x87, 0xe0, 
+0xef, 0xf5, 0xe2, 0x8a, 0xfb, 0xb4, 0x4a, 0xfe, 
+0xa7, 0x8e, 0xc6, 0x32, 0xe4, 0x7f, 0xb8, 0x73, 
+0x37, 0x0d, 0xfe, 0xcd, 0x33, 0xf8, 0xe7, 0x6a, 
+0xe0, 0xe0, 0xdf, 0xf6, 0x25, 0x19, 0xfc, 0x4b, 
+0x5a, 0xd6, 0xc1, 0x3f, 0x4d, 0xdc, 0x3f, 0x4b, 
+0xfe, 0x6f, 0x32, 0x70, 0x64, 0xf0, 0x6e, 0xaf, 
+0x23, 0xac, 0xcb, 0xf2, 0x95, 0x13, 0x00, 0x22, 
+0xb8, 0xa1, 0x10, 0xf0, 0xfd, 0xee, 0x8b, 0x5a, 
+0xe7, 0xb7, 0x29, 0x77, 0x51, 0x01, 0xa0, 0x1d, 
+0x01, 0x90, 0xd3, 0xbc, 0xd5, 0x9e, 0xe3, 0xfe, 
+0xfd, 0xf6, 0x75, 0xeb, 0x25, 0xf8, 0x97, 0x76, 
+0x74, 0x0a, 0x9a, 0xfb, 0x52, 0x18, 0xf7, 0x7f, 
+0x1a, 0x9b, 0xec, 0x0c, 0x71, 0xe9, 0x4f, 0xd1, 
+0x16, 0x00, 0xb9, 0x03, 0xd0, 0x8b, 0x5d, 0xfe, 
+0x24, 0x0b, 0x70, 0xdb, 0xad, 0x57, 0xf3, 0xfe, 
+0xdd, 0x05, 0x17, 0x9c, 0x07, 0x7d, 0x5d, 0xa1, 
+0x72, 0xee, 0x5f, 0x68, 0x9a, 0x40, 0xe0, 0x2a, 
+0x53, 0xfb, 0x3b, 0xef, 0xd2, 0x1f, 0x6c, 0x48, 
+0x24, 0x02, 0x20, 0x05, 0x89, 0x49, 0xd9, 0xe8, 
+0x3f, 0x8c, 0x06, 0xff, 0x96, 0x5c, 0xf0, 0xcf, 
+0xd2, 0xe0, 0xc1, 0xbf, 0x34, 0x1a, 0xfc, 0x9b, 
+0x43, 0xf0, 0x4f, 0x19, 0xf9, 0xcb, 0x0a, 0x80, 
+0x37, 0xc6, 0x1c, 0x18, 0x10, 0x21, 0xb0, 0x3e, 
+0xd3, 0x57, 0x4e, 0x00, 0x30, 0xc8, 0x72, 0x83, 
+0x0d, 0x69, 0xbe, 0x5f, 0x7f, 0x5e, 0xe7, 0xf8, 
+0x0a, 0x15, 0x00, 0x14, 0xf3, 0x71, 0xff, 0xe7, 
+0xda, 0x17, 0x36, 0xff, 0xcd, 0x9e, 0xe3, 0xfe, 
+0xd3, 0x67, 0xa6, 0xf4, 0x12, 0xfc, 0x2b, 0x9a, 
+0x6c, 0x63, 0xc8, 0x7f, 0xaa, 0x37, 0xd0, 0x60, 
+0xa7, 0x7e, 0x4f, 0xcc, 0xc4, 0x29, 0x3c, 0xd7, 
+0x7b, 0xf5, 0x55, 0x57, 0x80, 0xf1, 0xe6, 0x57, 
+0xe5, 0xfe, 0xb9, 0x15, 0x6e, 0x0e, 0xc8, 0xba, 
+0x7f, 0x32, 0x31, 0x10, 0xfa, 0x3d, 0xc8, 0xd6, 
+0x40, 0x7f, 0x77, 0x98, 0xd6, 0xc8, 0xff, 0xc4, 
+0x54, 0x34, 0x43, 0xfe, 0xf5, 0xdd, 0x71, 0x34, 
+0xf8, 0x47, 0x83, 0x7f, 0x8b, 0x20, 0xf8, 0x97, 
+0x40, 0x83, 0x7f, 0x1a, 0xb8, 0x7f, 0x96, 0xfc, 
+0xdf, 0x18, 0xb7, 0x87, 0xd7, 0xc5, 0x78, 0xaf, 
+0xdb, 0x11, 0x36, 0x64, 0xf8, 0xf2, 0x05, 0x80, 
+0x44, 0x08, 0xb8, 0xc3, 0xfa, 0x74, 0xef, 0xd3, 
+0x9f, 0x1d, 0x70, 0x78, 0x81, 0x0a, 0x00, 0x0a, 
+0xcd, 0x05, 0x40, 0x56, 0xb3, 0x3d, 0x21, 0x7f, 
+0x56, 0x00, 0x04, 0x1c, 0xe8, 0xd1, 0xa0, 0xef, 
+0x7f, 0xee, 0xc1, 0x3f, 0xe2, 0xfe, 0x3b, 0x7a, 
+0xa2, 0x19, 0x01, 0xf0, 0x15, 0x5e, 0xb1, 0x33, 
+0x04, 0xf9, 0xb3, 0x08, 0xf0, 0x5d, 0xad, 0x76, 
+0xe5, 0xef, 0x95, 0x57, 0x5e, 0xca, 0x3f, 0xfa, 
+0x83, 0x84, 0xbd, 0x67, 0xd7, 0x66, 0x85, 0x22, 
+0xe2, 0x8d, 0xd7, 0x1f, 0xd6, 0x5a, 0xf0, 0x8f, 
+0x60, 0xb4, 0xcb, 0x17, 0x06, 0xb0, 0xf2, 0x37, 
+0x6e, 0xf4, 0x88, 0xd6, 0xd7, 0xfe, 0x74, 0x1a, 
+0xfc, 0x1b, 0xa5, 0xc1, 0xbf, 0xa5, 0x17, 0xfc, 
+0x4b, 0xa1, 0xc1, 0x3f, 0x2d, 0x8e, 0xfe, 0x25, 
+0xe4, 0xcf, 0x13, 0x00, 0x76, 0x0c, 0x5e, 0x1b, 
+0xb7, 0x85, 0x77, 0x3b, 0x1d, 0x60, 0x43, 0xba, 
+0xb7, 0xbc, 0x08, 0xc8, 0x76, 0x65, 0x26, 0x02, 
+0xeb, 0x32, 0xbc, 0x8f, 0x7f, 0x52, 0x6f, 0xff, 
+0x0c, 0x15, 0x00, 0x14, 0x6a, 0xba, 0xff, 0x96, 
+0x0b, 0xec, 0x8b, 0x9b, 0xff, 0xc9, 0x0a, 0x00, 
+0xfb, 0xca, 0x23, 0xb8, 0x8f, 0x3f, 0xad, 0x97, 
+0xe0, 0x5f, 0xf9, 0x58, 0x03, 0x43, 0xfe, 0x33, 
+0x78, 0xbf, 0x5e, 0x9f, 0xc1, 0xbf, 0xbe, 0xce, 
+0x50, 0x08, 0x0b, 0xd9, 0x00, 0xd1, 0x11, 0xc6, 
+0x92, 0xa2, 0x9f, 0x6f, 0x90, 0x58, 0x9f, 0x7f, 
+0xf6, 0x1e, 0xb5, 0x04, 0xc0, 0xf3, 0xcf, 0xdd, 
+0x03, 0xc9, 0x09, 0x66, 0x50, 0x55, 0xee, 0x02, 
+0xc1, 0x01, 0xeb, 0xe0, 0x95, 0x97, 0x1e, 0x50, 
+0x7a, 0x20, 0xa8, 0xb4, 0xd0, 0x41, 0x6b, 0xee, 
+0xff, 0xe8, 0x84, 0xa8, 0xf2, 0x77, 0x6f, 0x6f, 
+0xda, 0xd2, 0x0f, 0xfe, 0x8d, 0xd0, 0xe0, 0x9f, 
+0xd6, 0x83, 0x7f, 0x6a, 0x09, 0x00, 0x1a, 0xfc, 
+0xd3, 0x67, 0xf0, 0x4f, 0x95, 0xfb, 0xe7, 0x0a, 
+0x00, 0x11, 0x76, 0xc0, 0xbb, 0x6d, 0xb2, 0x42, 
+0xc0, 0x55, 0x8a, 0x4c, 0x14, 0x02, 0x99, 0x5e, 
+0x33, 0x1f, 0x1f, 0xb4, 0x7b, 0x8c, 0x0a, 0x00, 
+0x0a, 0xe5, 0x02, 0x20, 0xf3, 0x88, 0x8f, 0x84, 
+0xfc, 0x11, 0x41, 0x8d, 0xbd, 0x7a, 0x09, 0xfe, 
+0xa5, 0x1f, 0x9d, 0x84, 0x9e, 0xae, 0x30, 0x71, 
+0xe5, 0x6f, 0xa2, 0xde, 0xdc, 0x7f, 0x45, 0xa9, 
+0x13, 0xfc, 0xf9, 0xcf, 0x97, 0xf2, 0x9e, 0xe5, 
+0x27, 0xc5, 0x8b, 0xc2, 0x7e, 0xdd, 0x6d, 0x21, 
+0x70, 0xc9, 0x25, 0x17, 0xcc, 0xeb, 0x20, 0x90, 
+0x2c, 0x36, 0x6f, 0x78, 0x45, 0x6b, 0xe4, 0x4f, 
+0x2a, 0x7f, 0x87, 0x3b, 0xbc, 0x99, 0xca, 0xdf, 
+0xa8, 0xf1, 0x4e, 0x1a, 0xfc, 0xa3, 0xc1, 0x3f, 
+0x19, 0xf2, 0x2f, 0xa4, 0xc1, 0xbf, 0x45, 0x1c, 
+0xfc, 0x53, 0x97, 0xfc, 0x5f, 0x65, 0xb0, 0x9d, 
+0xc1, 0x7b, 0xad, 0xf6, 0xb0, 0x31, 0xcd, 0x9b, 
+0x2f, 0x00, 0x58, 0x64, 0xb8, 0xc1, 0xda, 0x2c, 
+0xcf, 0xc9, 0x8f, 0x1a, 0x6d, 0x1f, 0xa4, 0x02, 
+0x80, 0x42, 0xc8, 0xfd, 0x5f, 0x6c, 0x5f, 0xd2, 
+0xf2, 0x33, 0x4b, 0xfe, 0x0e, 0x15, 0x47, 0x20, 
+0xf3, 0xe8, 0xb4, 0x5e, 0x82, 0x7f, 0x35, 0xf8, 
+0x81, 0x48, 0xdc, 0xff, 0xd1, 0x91, 0x30, 0xbd, 
+0x91, 0xff, 0xc9, 0xd9, 0x78, 0x86, 0xf0, 0x65, 
+0x49, 0x9a, 0x04, 0xfc, 0xd8, 0xef, 0x21, 0xce, 
+0x5e, 0xb6, 0xe7, 0x7f, 0xae, 0x20, 0x0d, 0x81, 
+0x47, 0x27, 0x63, 0xb5, 0x57, 0xf9, 0x8b, 0x1f, 
+0x76, 0xc4, 0xfd, 0x97, 0xf6, 0xe7, 0x2f, 0xbb, 
+0xe0, 0x9f, 0xb7, 0x81, 0x83, 0x7f, 0x8e, 0x4b, 
+0x32, 0xf8, 0x97, 0x4d, 0x83, 0x7f, 0x0b, 0x30, 
+0xf8, 0xf7, 0x86, 0x42, 0xf2, 0x97, 0x17, 0x00, 
+0xaf, 0x8c, 0xdb, 0x30, 0x78, 0xff, 0x08, 0x11, 
+0x02, 0x5e, 0x7c, 0x01, 0x90, 0xe5, 0x22, 0x42, 
+0xba, 0x1b, 0xac, 0xce, 0xf6, 0x18, 0xfd, 0xe0, 
+0xd0, 0xf6, 0x7b, 0xa8, 0x00, 0xa0, 0x90, 0x0a, 
+0x80, 0x8c, 0x23, 0xbb, 0x51, 0x04, 0x48, 0xdc, 
+0x7f, 0xe8, 0xe1, 0x7e, 0xbd, 0x04, 0xff, 0x32, 
+0x67, 0xc7, 0x60, 0xa0, 0x33, 0x08, 0xc6, 0xd0, 
+0xcd, 0x7e, 0x8b, 0xae, 0x56, 0x5f, 0x02, 0x80, 
+0x1c, 0xf5, 0x11, 0x22, 0xea, 0xab, 0xae, 0xba, 
+0x9c, 0x5f, 0xf7, 0xdb, 0xe4, 0x0f, 0x0f, 0x3e, 
+0x70, 0xd3, 0xbc, 0xc8, 0xff, 0xb1, 0x47, 0x6f, 
+0x83, 0x49, 0xfc, 0x40, 0xd3, 0x16, 0xf9, 0x93, 
+0xca, 0xdf, 0x41, 0xac, 0xfc, 0xed, 0xea, 0x08, 
+0x80, 0x3d, 0x13, 0xbd, 0x34, 0xf8, 0x47, 0x83, 
+0x7f, 0x4a, 0xc9, 0x5f, 0x9b, 0xee, 0x9f, 0x06, 
+0xff, 0x0c, 0x13, 0xfc, 0x53, 0xe5, 0xfe, 0x59, 
+0xf2, 0x7f, 0x65, 0xdc, 0x1a, 0x5e, 0x66, 0x60, 
+0x05, 0x1f, 0x1c, 0xe2, 0x08, 0x01, 0x56, 0x00, 
+0x20, 0x36, 0x11, 0xa0, 0x10, 0xf8, 0x32, 0xd7, 
+0x6d, 0xe0, 0xbd, 0x66, 0x9b, 0x3b, 0xa8, 0x00, 
+0xa0, 0xee, 0xff, 0x0a, 0xfb, 0xb2, 0x96, 0xff, 
+0xb1, 0x02, 0xc0, 0xb1, 0xbc, 0x05, 0xb2, 0x8e, 
+0xcd, 0xe8, 0x25, 0xf8, 0x57, 0x37, 0x54, 0xcc, 
+0xb8, 0xff, 0xe3, 0x63, 0xbb, 0xf5, 0x1a, 0xfc, 
+0xf3, 0xf7, 0xf9, 0x52, 0x90, 0xac, 0xef, 0xbd, 
+0xe7, 0x06, 0xb9, 0x50, 0xe0, 0xe9, 0x63, 0x09, 
+0xb0, 0xcd, 0xf4, 0x4d, 0xa5, 0x27, 0x82, 0x85, 
+0x40, 0x0a, 0x84, 0x9c, 0x1d, 0x3f, 0xe1, 0x39, 
+0x7f, 0x6d, 0x04, 0xff, 0xa6, 0x86, 0x76, 0x32, 
+0xee, 0x3f, 0x7f, 0xa0, 0x6c, 0x01, 0x04, 0xff, 
+0x7a, 0x69, 0xf0, 0x6f, 0x89, 0x05, 0xff, 0xb6, 
+0x18, 0x38, 0xf8, 0xb7, 0x86, 0x06, 0xff, 0x54, 
+0xb8, 0x7f, 0x3e, 0xf9, 0x2b, 0x12, 0x00, 0x04, 
+0x2f, 0x8d, 0x5b, 0xc2, 0x07, 0x8d, 0xf6, 0xb0, 
+0x29, 0xd5, 0x93, 0x2f, 0x00, 0x18, 0x38, 0xc3, 
+0xa6, 0x34, 0x37, 0x58, 0x95, 0xe7, 0xda, 0xf3, 
+0xce, 0x11, 0xeb, 0x5b, 0xa9, 0x00, 0x58, 0xbe, 
+0xee, 0x3f, 0x59, 0x44, 0xfe, 0x22, 0x01, 0xb0, 
+0xab, 0x65, 0x40, 0x2f, 0xee, 0x3f, 0x7b, 0x66, 
+0x10, 0x2b, 0x7f, 0x7d, 0x61, 0x0c, 0x93, 0xec, 
+0xdf, 0x9d, 0x4e, 0xd1, 0x6b, 0xe3, 0x5f, 0x13, 
+0xb6, 0xf6, 0x09, 0x91, 0xf6, 0x73, 0xcf, 0xdc, 
+0xad, 0x70, 0x3b, 0x60, 0x3f, 0x16, 0xfb, 0xd8, 
+0x58, 0xbd, 0xc7, 0x4c, 0x04, 0x94, 0x89, 0x01, 
+0x92, 0x1d, 0x20, 0x27, 0x7f, 0xb9, 0xae, 0x5f, 
+0x5b, 0xee, 0xff, 0xf4, 0x31, 0x52, 0xf9, 0xeb, 
+0x01, 0xad, 0x1d, 0x21, 0x58, 0xf9, 0xdb, 0xbf, 
+0xac, 0xdd, 0x3f, 0x0d, 0xfe, 0xd1, 0xe0, 0x1f, 
+0x21, 0x7f, 0x6d, 0xba, 0xff, 0xc5, 0x12, 0xfc, 
+0x53, 0xe5, 0xfe, 0x59, 0xf2, 0x17, 0xc1, 0x02, 
+0x5e, 0x1c, 0xb3, 0x80, 0x0f, 0xea, 0x89, 0x10, 
+0xf0, 0xe0, 0x0b, 0x00, 0x16, 0x28, 0x04, 0x56, 
+0x16, 0xb8, 0xb4, 0xbd, 0xd5, 0x66, 0x71, 0x23, 
+0x15, 0x00, 0xcb, 0xcb, 0xfd, 0xff, 0xc5, 0xbe, 
+0xa2, 0xe5, 0x37, 0x56, 0x00, 0x10, 0xf7, 0x9f, 
+0x7d, 0x6c, 0x46, 0xe7, 0xc1, 0x3f, 0xe2, 0xfe, 
+0x1b, 0x07, 0xb2, 0x18, 0xf7, 0x7f, 0x6a, 0x32, 
+0x52, 0xaf, 0xee, 0xff, 0xd4, 0xd1, 0x04, 0x38, 
+0x3e, 0x1d, 0xc7, 0x74, 0xfc, 0x0b, 0x8d, 0xeb, 
+0x85, 0xc8, 0xff, 0x1b, 0x19, 0x0c, 0xf6, 0x85, 
+0x43, 0x44, 0xb8, 0x11, 0x6c, 0xc2, 0x60, 0x1f, 
+0xe9, 0x01, 0xf0, 0xf2, 0x58, 0x09, 0x91, 0xbb, 
+0x8d, 0x20, 0x27, 0xc3, 0x06, 0xc6, 0x06, 0x23, 
+0x74, 0x72, 0xea, 0x97, 0x60, 0xa2, 0x3f, 0x88, 
+0x71, 0xff, 0x19, 0x43, 0xfb, 0x68, 0xf0, 0x6f, 
+0x59, 0x04, 0xff, 0xca, 0x68, 0xf0, 0x8f, 0x06, 
+0xff, 0xd4, 0x22, 0x7f, 0xa5, 0x02, 0x80, 0x81, 
+0x39, 0xbc, 0x34, 0x66, 0x0e, 0x1f, 0xd6, 0x39, 
+0x60, 0x7b, 0xa0, 0x07, 0x5f, 0x00, 0xb0, 0x48, 
+0x75, 0x83, 0x2f, 0x8a, 0x9d, 0x9a, 0xdf, 0xe8, 
+0x30, 0xbf, 0x8e, 0x0a, 0x80, 0xe5, 0x20, 0x00, 
+0xd2, 0x8f, 0xe4, 0x4b, 0xdd, 0x7f, 0x0b, 0xec, 
+0xe9, 0x18, 0xd2, 0x4b, 0xf0, 0x2f, 0x6f, 0xaa, 
+0x9b, 0x21, 0xff, 0x89, 0x1e, 0x7f, 0xbd, 0x92, 
+0x3f, 0x21, 0x69, 0x72, 0x8c, 0xe7, 0xbc, 0xf3, 
+0xce, 0x85, 0x3f, 0x5d, 0x71, 0xb1, 0x9c, 0x00, 
+0xb8, 0xeb, 0xae, 0xeb, 0x54, 0x92, 0xbf, 0x6c, 
+0xe3, 0x9f, 0xba, 0x98, 0xaf, 0x00, 0x38, 0x39, 
+0x1b, 0xc3, 0x90, 0x7f, 0x53, 0x57, 0x04, 0x0d, 
+0xfe, 0x2d, 0x89, 0xe0, 0x5f, 0x15, 0x0d, 0xfe, 
+0xd1, 0xe0, 0x9f, 0x56, 0x82, 0x7f, 0xaa, 0xc9, 
+0x5f, 0x24, 0x00, 0x56, 0x30, 0x30, 0xc3, 0x89, 
+0x80, 0x19, 0x7c, 0x54, 0x4b, 0x26, 0x02, 0xee, 
+0x32, 0x22, 0xc0, 0x89, 0xc1, 0xc6, 0x54, 0xb7, 
+0x3f, 0x3e, 0x2b, 0x71, 0x6c, 0x78, 0xad, 0x7b, 
+0xdb, 0xd5, 0x54, 0x00, 0x2c, 0x59, 0xf7, 0xdf, 
+0x7a, 0xbd, 0x7d, 0x65, 0xcb, 0xef, 0x2c, 0xf9, 
+0x3b, 0x95, 0xb5, 0xa2, 0xfb, 0xd7, 0xfd, 0xe8, 
+0x9f, 0x08, 0x80, 0x96, 0xde, 0x44, 0xbd, 0x57, 
+0xfe, 0x66, 0xa6, 0x5a, 0x31, 0x47, 0x7b, 0x54, 
+0x15, 0xfb, 0x9c, 0x39, 0x9e, 0xa4, 0x75, 0x01, 
+0xa0, 0x0d, 0xf7, 0x3f, 0x86, 0x62, 0x69, 0xa0, 
+0xd5, 0x03, 0x92, 0x46, 0x1a, 0x17, 0xc1, 0xe8, 
+0xbf, 0x87, 0x06, 0xff, 0xb4, 0x1e, 0xfc, 0x2b, 
+0xa1, 0xc1, 0x3f, 0x1a, 0xfc, 0xd3, 0x80, 0xfc, 
+0xf9, 0xee, 0xff, 0x45, 0x31, 0xf9, 0x8b, 0xb0, 
+0x0d, 0x5e, 0x40, 0xac, 0x18, 0x35, 0x83, 0x8f, 
+0xf7, 0x3a, 0x30, 0x8f, 0x00, 0xb8, 0x02, 0x80, 
+0x2b, 0x04, 0x3e, 0x2d, 0xb3, 0xdf, 0xf7, 0x52, 
+0xbf, 0xe9, 0xff, 0x51, 0x01, 0xb0, 0xe4, 0xdc, 
+0x7f, 0xcb, 0x5e, 0xae, 0xfb, 0x8f, 0xec, 0x19, 
+0xd6, 0x4b, 0xf0, 0xaf, 0x78, 0xf2, 0x08, 0x43, 
+0xfe, 0xd3, 0x7d, 0x81, 0x7a, 0x75, 0xff, 0x9f, 
+0x7e, 0xf2, 0xb4, 0x5a, 0xe1, 0xbd, 0x5d, 0x3b, 
+0x37, 0x1a, 0xc0, 0xfd, 0x2b, 0x27, 0xff, 0xe3, 
+0x53, 0x91, 0x8c, 0xfb, 0xaf, 0xeb, 0x49, 0xa4, 
+0xc1, 0xbf, 0x25, 0x19, 0xfc, 0xab, 0xa0, 0xc1, 
+0x3f, 0x1a, 0xfc, 0x53, 0x23, 0xf8, 0x37, 0x7f, 
+0xf7, 0x4f, 0xf0, 0x82, 0x58, 0x00, 0xbc, 0x30, 
+0xbe, 0x15, 0x9e, 0x47, 0xbc, 0x30, 0xba, 0x15, 
+0x3e, 0xae, 0x22, 0x42, 0xc0, 0x55, 0x4e, 0x04, 
+0x6c, 0xca, 0x72, 0x44, 0x21, 0xe0, 0xfa, 0xc7, 
+0xc7, 0x95, 0x76, 0x55, 0x2b, 0x06, 0x4c, 0xfe, 
+0x44, 0x05, 0xc0, 0xd2, 0x70, 0xff, 0xb7, 0xd9, 
+0x57, 0xb5, 0xfe, 0xc1, 0x92, 0xbf, 0x4b, 0x59, 
+0x9b, 0x5e, 0x82, 0x7f, 0x69, 0x58, 0xfa, 0xd3, 
+0xd9, 0x13, 0xc9, 0x08, 0x80, 0xaf, 0x31, 0xd0, 
+0xa6, 0xcf, 0xe0, 0x1f, 0x79, 0xbe, 0xaf, 0x8e, 
+0x00, 0x20, 0x7d, 0xfd, 0xce, 0x0e, 0x9f, 0x30, 
+0xe9, 0xff, 0x85, 0x30, 0xfa, 0xff, 0x1a, 0xd7, 
+0x23, 0x47, 0xba, 0x7c, 0xd0, 0xfd, 0x7b, 0x42, 
+0xec, 0x58, 0x2b, 0x0d, 0xfe, 0x2d, 0x88, 0xe0, 
+0x5f, 0xdd, 0xb2, 0x0e, 0xfe, 0x6d, 0xa2, 0xc1, 
+0xbf, 0x85, 0x1f, 0xfc, 0x53, 0xe1, 0xfe, 0x09, 
+0xf9, 0x8b, 0x04, 0x80, 0xa9, 0x04, 0x2f, 0x8c, 
+0x98, 0xc2, 0x27, 0xe5, 0xb2, 0x42, 0xc0, 0x51, 
+0x82, 0x0d, 0x28, 0x04, 0x3e, 0xaa, 0xde, 0x51, 
+0xfa, 0xdc, 0xb0, 0xd1, 0xe5, 0x54, 0x00, 0x2c, 
+0xea, 0xe4, 0x7f, 0x4b, 0x23, 0x8a, 0x00, 0x89, 
+0xfb, 0x8f, 0xee, 0x1f, 0xd5, 0x4b, 0xf0, 0xaf, 
+0x62, 0xec, 0x80, 0xb8, 0xf2, 0x77, 0xe7, 0x9c, 
+0xc9, 0xfe, 0xeb, 0x13, 0xc9, 0x0c, 0x41, 0xdf, 
+0x79, 0xc7, 0xb5, 0x70, 0xcd, 0xd5, 0x57, 0xc0, 
+0x47, 0x1f, 0x3c, 0x09, 0xf9, 0x39, 0xb6, 0x2a, 
+0x05, 0xc0, 0x86, 0x75, 0x2f, 0x69, 0xb4, 0xc6, 
+0x77, 0xdd, 0x75, 0x57, 0x82, 0x3f, 0xde, 0x05, 
+0x38, 0x86, 0x81, 0x41, 0x43, 0x8e, 0xfe, 0x8f, 
+0x8e, 0xef, 0x66, 0xdc, 0x7f, 0x55, 0x6f, 0x26, 
+0x0d, 0xfe, 0xd1, 0xe0, 0x1f, 0x0d, 0xfe, 0xcd, 
+0x81, 0xfc, 0x3f, 0x5d, 0x92, 0xc1, 0x3f, 0x1b, 
+0xb5, 0x82, 0x7f, 0xaa, 0xdc, 0x3f, 0x4b, 0xfe, 
+0xcf, 0x8d, 0x9b, 0x88, 0xb1, 0x05, 0x85, 0x80, 
+0x09, 0x7c, 0x5a, 0x8a, 0xa4, 0x9f, 0xee, 0xc2, 
+0x13, 0x00, 0x1c, 0x21, 0xf0, 0xfb, 0x07, 0x35, 
+0x36, 0xf9, 0x4f, 0x8d, 0x6f, 0xbc, 0x94, 0x0a, 
+0x80, 0xc5, 0x46, 0xfe, 0xe5, 0xad, 0x0f, 0xd8, 
+0x57, 0x13, 0xf2, 0x17, 0x09, 0x00, 0xd7, 0xf2, 
+0x36, 0xbd, 0x04, 0xff, 0xd2, 0x8f, 0x4e, 0x60, 
+0xf7, 0xfe, 0x4e, 0xa6, 0xf2, 0xf7, 0x9b, 0x13, 
+0x73, 0xaf, 0xfc, 0xb5, 0xb1, 0x7c, 0x4f, 0x90, 
+0xb0, 0x1f, 0x7e, 0xe8, 0x16, 0x48, 0x4d, 0xb2, 
+0x40, 0xc7, 0x2c, 0xbc, 0xc6, 0x37, 0x8d, 0x47, 
+0x7b, 0x3e, 0x7c, 0xff, 0x09, 0x8d, 0x8b, 0x7c, 
+0xfe, 0xef, 0xff, 0x2e, 0x03, 0x37, 0x97, 0xcf, 
+0x98, 0x5f, 0xaf, 0x6f, 0xf7, 0xff, 0xd5, 0x89, 
+0x24, 0x18, 0xc2, 0x3f, 0xaf, 0xde, 0x36, 0x1f, 
+0x88, 0x1c, 0xef, 0xa2, 0xc1, 0xbf, 0x05, 0x18, 
+0xfc, 0x53, 0x4f, 0x00, 0xd0, 0xe0, 0xdf, 0x62, 
+0x0a, 0xfe, 0x7d, 0x68, 0xe0, 0xe0, 0x9f, 0x36, 
+0xdd, 0xff, 0x0a, 0xb5, 0xdc, 0xbf, 0x94, 0xfc, 
+0x09, 0x9e, 0x65, 0x60, 0x0c, 0x2f, 0x0c, 0x6f, 
+0x81, 0xcf, 0x8a, 0x89, 0x10, 0x70, 0x96, 0x11, 
+0x01, 0x38, 0x25, 0xc8, 0x74, 0x80, 0xf5, 0x29, 
+0xae, 0xbf, 0xbf, 0xb7, 0xdf, 0x2a, 0xe3, 0xa9, 
+0xf1, 0x0d, 0x97, 0x50, 0x01, 0xb0, 0x68, 0x3a, 
+0xff, 0x5b, 0x3a, 0x45, 0xe4, 0x2f, 0x12, 0x00, 
+0x71, 0x43, 0x63, 0x7a, 0x09, 0xfe, 0xd5, 0xe2, 
+0x87, 0x1f, 0x71, 0xff, 0xc7, 0xf0, 0x4d, 0x3c, 
+0x57, 0xf2, 0xff, 0xea, 0x78, 0x32, 0x5c, 0x7e, 
+0xd9, 0x45, 0x4a, 0x09, 0xfb, 0xae, 0x3b, 0xaf, 
+0x83, 0xa8, 0x3d, 0xc6, 0x72, 0x61, 0x3e, 0x16, 
+0x95, 0xa5, 0xce, 0xf0, 0xda, 0x2b, 0x0f, 0x6a, 
+0x2c, 0x04, 0xc8, 0xff, 0x5d, 0xb2, 0xdf, 0xaf, 
+0x68, 0xcd, 0x4f, 0x17, 0xee, 0x7f, 0x06, 0xeb, 
+0x91, 0x89, 0xfb, 0x2f, 0xee, 0x2f, 0xa4, 0xc1, 
+0x3f, 0x83, 0x04, 0xff, 0xea, 0x69, 0xf0, 0x8f, 
+0x06, 0xff, 0x54, 0x06, 0xff, 0x0c, 0xb1, 0xf6, 
+0xc7, 0x25, 0x7f, 0xe5, 0xee, 0x5f, 0x96, 0xfc, 
+0x95, 0xbb, 0x7f, 0x96, 0xfc, 0x45, 0x30, 0x82, 
+0x67, 0x10, 0x2f, 0x0c, 0x6d, 0x81, 0xcf, 0x0b, 
+0x91, 0xf8, 0x33, 0x9c, 0x78, 0x02, 0x60, 0xa3, 
+0x18, 0xeb, 0x52, 0x5c, 0x7f, 0x7b, 0xe7, 0x80, 
+0x79, 0xd2, 0x93, 0xe3, 0xeb, 0x2f, 0xa6, 0x02, 
+0x60, 0x21, 0x93, 0x7f, 0x49, 0xcb, 0x53, 0x52, 
+0xf2, 0x6f, 0x05, 0xb7, 0x8a, 0x76, 0x35, 0x83, 
+0x7f, 0x33, 0xf3, 0x0a, 0xfe, 0x65, 0xce, 0x8c, 
+0xc2, 0x60, 0x87, 0x3f, 0x8c, 0x75, 0x62, 0xe5, 
+0xef, 0xa9, 0x94, 0x79, 0x8d, 0xff, 0xcf, 0xc7, 
+0x15, 0x3e, 0x75, 0x08, 0xfb, 0xc6, 0x1b, 0xff, 
+0x8f, 0xb9, 0xd0, 0x47, 0x7a, 0xff, 0x85, 0x84, 
+0x40, 0xfd, 0x3e, 0x4f, 0x66, 0x22, 0xa0, 0x6a, 
+0x33, 0x40, 0x16, 0xe4, 0x3e, 0xc0, 0x56, 0x93, 
+0x37, 0xa1, 0xbf, 0x3b, 0x4c, 0xa7, 0x02, 0xe0, 
+0xf4, 0xf1, 0x04, 0xac, 0xfc, 0xf5, 0x80, 0xce, 
+0xf6, 0x40, 0xd8, 0x8d, 0xc4, 0x4d, 0x83, 0x7f, 
+0xea, 0x04, 0xff, 0x5a, 0x0c, 0x1c, 0xfc, 0xab, 
+0xa1, 0xc1, 0x3f, 0x1a, 0xfc, 0x5b, 0xf0, 0xc1, 
+0x3f, 0xe5, 0xee, 0x9f, 0x4f, 0xfe, 0x22, 0x6c, 
+0x86, 0xa7, 0x11, 0xcf, 0x0f, 0x1a, 0xc1, 0x17, 
+0xf9, 0x44, 0x08, 0x38, 0xf2, 0x04, 0x80, 0x08, 
+0xf6, 0xb0, 0x36, 0xd5, 0xe5, 0xb7, 0xb7, 0x1a, 
+0xcc, 0x62, 0x9f, 0x98, 0x58, 0x77, 0x11, 0x15, 
+0x00, 0x0b, 0x51, 0x00, 0x64, 0xb5, 0x0c, 0x73, 
+0x05, 0x40, 0xe2, 0xe8, 0xb8, 0x5e, 0xdc, 0x7f, 
+0xfd, 0x60, 0x01, 0xe3, 0xfe, 0x4f, 0x4c, 0xec, 
+0x99, 0x77, 0xe0, 0x6f, 0xcd, 0x97, 0x2b, 0x34, 
+0x22, 0x6c, 0xd2, 0xef, 0xef, 0xe1, 0xf6, 0x39, 
+0xcc, 0x4e, 0xc4, 0x08, 0x0a, 0x81, 0xd6, 0xc3, 
+0x01, 0xb0, 0x7a, 0xd5, 0x0b, 0x4c, 0x3f, 0x80, 
+0x26, 0xbf, 0xef, 0xf9, 0xe7, 0x9f, 0x0b, 0x6e, 
+0xce, 0x9f, 0x31, 0x93, 0x06, 0x5d, 0xb8, 0xff, 
+0x49, 0x3c, 0x8d, 0x4c, 0xdc, 0x7f, 0xee, 0x60, 
+0x25, 0x0d, 0xfe, 0xd1, 0xe0, 0x1f, 0x0d, 0xfe, 
+0x2d, 0x9a, 0xe0, 0x9f, 0xeb, 0xa2, 0x0a, 0xfe, 
+0x29, 0x72, 0xff, 0xb2, 0xe4, 0x2f, 0xc2, 0x26, 
+0x06, 0x44, 0x08, 0xac, 0xcc, 0xc5, 0x35, 0x41, 
+0x14, 0x02, 0x5c, 0x01, 0xc0, 0x62, 0x4d, 0x9a, 
+0xf3, 0xaf, 0x6f, 0x1c, 0x32, 0xdd, 0xf3, 0xf8, 
+0xc4, 0x9a, 0x0b, 0xa9, 0x00, 0x58, 0x28, 0xe4, 
+0x5f, 0xd8, 0xf2, 0x0a, 0x97, 0xfc, 0x3d, 0x2a, 
+0x3b, 0xf5, 0x12, 0xfc, 0xcb, 0x99, 0xee, 0x87, 
+0xe1, 0x76, 0x6f, 0x18, 0xef, 0xf6, 0x65, 0x08, 
+0x77, 0xbe, 0x02, 0xe0, 0xf8, 0x54, 0x1c, 0x43, 
+0xd8, 0x9a, 0x8e, 0xf0, 0x49, 0x37, 0xbf, 0xdd, 
+0x8e, 0x0f, 0x60, 0x62, 0x38, 0x42, 0x50, 0x08, 
+0xf4, 0x75, 0x86, 0x82, 0xb1, 0xd1, 0x6b, 0x70, 
+0xe1, 0x85, 0x9a, 0x5d, 0x00, 0x74, 0xb4, 0xff, 
+0x58, 0xeb, 0xe4, 0x7f, 0xea, 0x68, 0x1c, 0x53, 
+0xf9, 0x7b, 0xa4, 0x33, 0x0c, 0x89, 0xbf, 0x9f, 
+0x06, 0xff, 0xe6, 0x14, 0xfc, 0x6b, 0xa6, 0xc1, 
+0x3f, 0x1a, 0xfc, 0xa3, 0xc1, 0x3f, 0x35, 0x83, 
+0x7f, 0xaa, 0xdc, 0x3f, 0x4b, 0xfe, 0x18, 0xfc, 
+0x13, 0x63, 0x03, 0x3c, 0x3f, 0xb0, 0x19, 0x56, 
+0x66, 0xb3, 0x42, 0xc0, 0x5e, 0x0e, 0xab, 0xd3, 
+0x9c, 0x7e, 0x79, 0xad, 0xc5, 0x78, 0xe7, 0x63, 
+0x13, 0xab, 0x2f, 0xa0, 0x02, 0xc0, 0xd0, 0x02, 
+0x20, 0xa7, 0x65, 0x86, 0x2b, 0x00, 0x92, 0xc6, 
+0x27, 0x74, 0x1e, 0xfc, 0x23, 0x38, 0xd4, 0x9f, 
+0x2e, 0xaa, 0xfc, 0x9d, 0x8a, 0xd2, 0xea, 0xca, 
+0xdf, 0xbe, 0x6a, 0x77, 0x78, 0xfb, 0xad, 0x47, 
+0x35, 0x3e, 0xd2, 0x73, 0xf1, 0xc5, 0x17, 0x30, 
+0xc7, 0x7d, 0x06, 0x7a, 0xc2, 0x04, 0x0b, 0x7f, 
+0x46, 0x06, 0xf6, 0x80, 0xb5, 0xe5, 0xbb, 0x70, 
+0x99, 0x8a, 0xac, 0x01, 0x8b, 0xbf, 0xfc, 0xe5, 
+0x32, 0xad, 0x0b, 0x80, 0x71, 0xec, 0x48, 0x20, 
+0xee, 0x3f, 0x7d, 0xf8, 0xc0, 0x3c, 0xdc, 0xbf, 
+0xee, 0x82, 0x7f, 0x01, 0x06, 0x0e, 0xfe, 0x79, 
+0xd0, 0xe0, 0x1f, 0x0d, 0xfe, 0x2d, 0x8a, 0xe0, 
+0x9f, 0xf3, 0xa2, 0x0b, 0xfe, 0x09, 0xbb, 0x7f, 
+0x59, 0xf2, 0x17, 0x09, 0x80, 0x27, 0x19, 0xac, 
+0x87, 0x17, 0xfa, 0x36, 0xc3, 0xaa, 0x2c, 0x21, 
+0x11, 0x60, 0xc7, 0xe0, 0xe3, 0x6a, 0xf3, 0x6a, 
+0x2a, 0x00, 0x0c, 0x49, 0xfe, 0xf9, 0xad, 0x1f, 
+0x72, 0xc9, 0xdf, 0xab, 0xaa, 0x4b, 0x2f, 0xee, 
+0xbf, 0x60, 0xb2, 0x13, 0x53, 0xff, 0x9e, 0x30, 
+0xd9, 0x1b, 0xa0, 0xb3, 0x9d, 0xff, 0x43, 0x07, 
+0x7d, 0xe1, 0xb3, 0x4f, 0x9e, 0x61, 0xf6, 0xf7, 
+0x35, 0x11, 0x02, 0xa4, 0x0e, 0x78, 0xfd, 0xda, 
+0x97, 0xa0, 0xb3, 0x35, 0x58, 0xb0, 0xf4, 0x67, 
+0x72, 0x2c, 0x0a, 0x5c, 0x9c, 0x3e, 0x85, 0x3f, 
+0xff, 0xf9, 0x52, 0xa5, 0xbf, 0xcf, 0xd5, 0x57, 
+0x5d, 0xa1, 0x55, 0xf2, 0x3f, 0x31, 0x23, 0xaa, 
+0xfc, 0x6d, 0xe8, 0x8e, 0xa6, 0xc1, 0x3f, 0x2d, 
+0x8d, 0xfe, 0xd5, 0x73, 0xff, 0xba, 0x0b, 0xfe, 
+0xd9, 0xd0, 0xe0, 0x1f, 0x0d, 0xfe, 0x2d, 0xb2, 
+0xe0, 0x9f, 0x2a, 0xf7, 0xcf, 0x92, 0x3f, 0xc1, 
+0x13, 0xe3, 0xeb, 0x00, 0x9f, 0xfb, 0xc3, 0x0b, 
+0xbd, 0x9b, 0xe0, 0x4b, 0x0c, 0x0a, 0xca, 0x0a, 
+0x80, 0xd5, 0x85, 0x36, 0xcf, 0x53, 0x01, 0x60, 
+0x48, 0x01, 0x90, 0xd7, 0x7a, 0x4a, 0x22, 0x00, 
+0x70, 0x05, 0x30, 0x65, 0x72, 0x52, 0xe7, 0xc1, 
+0x3f, 0x82, 0xb6, 0xde, 0x38, 0xc6, 0xfd, 0x9f, 
+0x99, 0x8d, 0xd5, 0x79, 0xe3, 0x1f, 0x21, 0x72, 
+0xb2, 0xeb, 0x7f, 0x9e, 0x9a, 0x21, 0x41, 0x6e, 
+0xf1, 0x0f, 0x69, 0x09, 0x6c, 0x3a, 0xe8, 0x23, 
+0x58, 0xfa, 0x73, 0x0c, 0x1f, 0x39, 0xf8, 0xfb, 
+0xac, 0x66, 0x7a, 0x01, 0x84, 0x7e, 0xbd, 0x83, 
+0xed, 0x47, 0x5a, 0x15, 0x00, 0xa3, 0xf8, 0xa8, 
+0x64, 0xb0, 0xcd, 0x1d, 0x12, 0x46, 0x0f, 0x2f, 
+0x8a, 0xe0, 0x9f, 0xff, 0x12, 0x0c, 0xfe, 0x39, 
+0x18, 0x38, 0xf8, 0x67, 0x41, 0x83, 0x7f, 0x3a, 
+0x08, 0xfe, 0x05, 0x18, 0x34, 0xf8, 0xa7, 0x5e, 
+0xdf, 0xff, 0xc2, 0x0b, 0xfe, 0xa9, 0x22, 0x7f, 
+0x46, 0x00, 0x4c, 0xac, 0x13, 0x63, 0x2d, 0xbc, 
+0xda, 0x6c, 0xca, 0x13, 0x00, 0xeb, 0x12, 0x5d, 
+0x67, 0x68, 0x06, 0xc0, 0xa0, 0xa3, 0xff, 0xd6, 
+0x75, 0xf6, 0x7b, 0xdb, 0x24, 0xee, 0xdf, 0xa7, 
+0xa6, 0x5b, 0x2f, 0xc1, 0xbf, 0xd2, 0x89, 0x43, 
+0xa2, 0xca, 0xdf, 0x81, 0x60, 0xbd, 0x36, 0xfe, 
+0x0d, 0xf6, 0xee, 0x82, 0x2d, 0xf8, 0x2c, 0x5f, 
+0xd3, 0x8c, 0x00, 0x79, 0x94, 0x40, 0x1e, 0x29, 
+0xd4, 0x56, 0xbb, 0x09, 0x16, 0xfe, 0x90, 0x2b, 
+0x82, 0xbb, 0xc3, 0x36, 0xc1, 0x73, 0xcf, 0xde, 
+0xc3, 0x88, 0x0c, 0x32, 0x19, 0xb0, 0xdb, 0xfe, 
+0x01, 0xee, 0xea, 0x27, 0x6b, 0x8d, 0xfc, 0x8f, 
+0x4d, 0x46, 0x30, 0xee, 0x7f, 0x5f, 0x4f, 0x32, 
+0x0d, 0xfe, 0xe9, 0x2c, 0xf8, 0xd7, 0xb8, 0xe4, 
+0x82, 0x7f, 0x5b, 0x69, 0xf0, 0x8f, 0x06, 0xff, 
+0xb4, 0x1c, 0xfc, 0x53, 0xdb, 0xfd, 0x73, 0xc8, 
+0xff, 0x71, 0xc4, 0xfa, 0x14, 0x67, 0xa9, 0x00, 
+0xc8, 0xc0, 0xcd, 0x80, 0xbc, 0x1d, 0xf7, 0x50, 
+0x01, 0x60, 0xb0, 0xca, 0xdf, 0xb6, 0xb3, 0x71, 
+0xfc, 0xff, 0x9d, 0x44, 0x00, 0x54, 0xb5, 0x42, 
+0xda, 0xd4, 0xa4, 0xce, 0x47, 0xff, 0xe9, 0x58, 
+0xf9, 0xdb, 0xdd, 0x15, 0xce, 0x8c, 0xff, 0xbf, 
+0xc6, 0x75, 0x36, 0x7d, 0xf5, 0xfd, 0x13, 0x94, 
+0x15, 0x39, 0x30, 0x57, 0xfd, 0x34, 0x15, 0x00, 
+0x5c, 0xac, 0x78, 0xe1, 0x5e, 0x28, 0xce, 0xb7, 
+0xd7, 0x6b, 0xe3, 0xdf, 0x57, 0x58, 0xf9, 0x3b, 
+0x8c, 0x6b, 0x92, 0xfd, 0x6d, 0x5e, 0x10, 0x33, 
+0xd6, 0x4e, 0x83, 0x7f, 0x34, 0xf8, 0x47, 0x83, 
+0x7f, 0x3a, 0x0b, 0xfe, 0xf9, 0xd1, 0xe0, 0x9f, 
+0x16, 0xdc, 0x3f, 0x3b, 0xfa, 0x27, 0xe4, 0x4f, 
+0xf0, 0xe6, 0x41, 0x33, 0x5e, 0x06, 0x60, 0x5d, 
+0x92, 0x4b, 0x37, 0xdd, 0x02, 0x30, 0xe8, 0xda, 
+0x5f, 0xab, 0x99, 0x88, 0xfc, 0x45, 0x02, 0xc0, 
+0x6f, 0x7f, 0x8f, 0x5e, 0x82, 0x7f, 0x55, 0xa3, 
+0xfb, 0x19, 0xf7, 0x3f, 0x3b, 0x14, 0xaa, 0x37, 
+0xf2, 0x3f, 0x7d, 0x3c, 0x11, 0xbe, 0xf8, 0xec, 
+0xd9, 0x79, 0x11, 0xbf, 0x2c, 0xc8, 0xfd, 0x80, 
+0x0c, 0xbc, 0x22, 0x48, 0xfa, 0xf8, 0x75, 0x2d, 
+0x00, 0x66, 0xc7, 0xc2, 0x19, 0xf7, 0x5f, 0xd1, 
+0x97, 0x43, 0x83, 0x7f, 0x34, 0xf8, 0x47, 0x83, 
+0x7f, 0x34, 0xf8, 0xb7, 0xa0, 0x83, 0x7f, 0xb2, 
+0xee, 0x9f, 0x88, 0x81, 0x0d, 0x5c, 0xf7, 0x9f, 
+0xe6, 0xf8, 0x07, 0x3e, 0x02, 0xb8, 0x8e, 0x0a, 
+0x00, 0xc3, 0xb9, 0xff, 0x73, 0xed, 0x0b, 0x5b, 
+0x7f, 0x94, 0x08, 0x00, 0x74, 0xff, 0xe9, 0xd3, 
+0x53, 0x3a, 0x77, 0xff, 0x19, 0xb3, 0xe3, 0xb8, 
+0x52, 0x17, 0x0c, 0xa3, 0x1d, 0x58, 0xf9, 0x7b, 
+0x32, 0x49, 0x6f, 0x02, 0x60, 0xd3, 0x86, 0x57, 
+0xb4, 0x4a, 0xfe, 0x5c, 0xdc, 0x7b, 0xcf, 0x0d, 
+0x90, 0x9b, 0xb9, 0x5d, 0x67, 0xe4, 0x7f, 0x86, 
+0xa9, 0xfc, 0xf5, 0x84, 0x9e, 0x76, 0x3f, 0xd8, 
+0x33, 0xde, 0xad, 0x9d, 0xd1, 0xff, 0x38, 0x0d, 
+0xfe, 0xd1, 0xe0, 0x1f, 0x0d, 0xfe, 0xa9, 0x0e, 
+0xfe, 0xf9, 0xd0, 0xe0, 0xdf, 0x3c, 0xdd, 0x3f, 
+0x19, 0xfd, 0xbf, 0x57, 0x63, 0xc9, 0x73, 0xff, 
+0x6b, 0x93, 0x5d, 0x6b, 0x69, 0x11, 0x90, 0x41, 
+0x2b, 0x7f, 0x5b, 0x1d, 0xa5, 0xee, 0xbf, 0x0d, 
+0x02, 0xeb, 0x7b, 0xb5, 0x16, 0xfc, 0x53, 0xe6, 
+0xfe, 0xf7, 0x0d, 0x97, 0x89, 0x2b, 0x7f, 0xc3, 
+0xf5, 0x46, 0xfe, 0x61, 0x21, 0x1b, 0x14, 0xa7, 
+0xfd, 0xb1, 0xe0, 0xe7, 0x8d, 0xd7, 0x1e, 0x82, 
+0x3d, 0xbb, 0x36, 0x43, 0x62, 0xec, 0x56, 0xd8, 
+0x83, 0xcf, 0xf1, 0x89, 0x58, 0x20, 0xeb, 0x7b, 
+0x9a, 0x0a, 0x01, 0x57, 0xdc, 0x0a, 0xd0, 0x85, 
+0x00, 0x98, 0x1e, 0x0e, 0x65, 0xdc, 0x7f, 0xe1, 
+0x40, 0x89, 0xe1, 0x82, 0x7f, 0x63, 0x86, 0x0e, 
+0xfe, 0x75, 0xd2, 0xe0, 0x1f, 0x0d, 0xfe, 0xd1, 
+0xe0, 0xdf, 0x22, 0x0c, 0xfe, 0x3d, 0x39, 0xba, 
+0x0e, 0x4f, 0x06, 0x73, 0xd2, 0xff, 0xa9, 0x4e, 
+0xbf, 0xe3, 0xcf, 0x57, 0x50, 0x01, 0x60, 0x38, 
+0xf7, 0x7f, 0x81, 0x7d, 0x71, 0xeb, 0xbf, 0x58, 
+0xf2, 0x77, 0xa8, 0x6c, 0x43, 0x67, 0x3e, 0xa5, 
+0xf3, 0xe0, 0x5f, 0xd6, 0xcc, 0x30, 0x0c, 0x75, 
+0xf8, 0x61, 0xe5, 0xaf, 0xcf, 0xbc, 0x2a, 0x7f, 
+0x35, 0x09, 0xfe, 0x4d, 0x8e, 0x44, 0xc2, 0x05, 
+0x17, 0x9c, 0x27, 0x48, 0xd8, 0x97, 0x5e, 0x7a, 
+0x21, 0x1c, 0xa8, 0xf5, 0x14, 0x2c, 0xfe, 0x21, 
+0xae, 0x3b, 0x2e, 0xc6, 0x94, 0x69, 0x0a, 0xd4, 
+0x64, 0x63, 0xa0, 0xa7, 0x7d, 0xa7, 0x56, 0xc9, 
+0xff, 0xf4, 0xf1, 0x78, 0xa6, 0xf4, 0xa7, 0xbd, 
+0x23, 0x08, 0xc2, 0x27, 0xfa, 0x68, 0xf0, 0x8f, 
+0x06, 0xff, 0x96, 0x71, 0xf0, 0x2f, 0xdc, 0xc0, 
+0xc1, 0x3f, 0x2f, 0x1a, 0xfc, 0x9b, 0x43, 0xf0, 
+0xef, 0xc3, 0xf2, 0xed, 0x7c, 0xf7, 0x9f, 0xe2, 
+0x92, 0x41, 0xab, 0x80, 0x0d, 0x7b, 0xee, 0xd7, 
+0x9f, 0xeb, 0xfe, 0x43, 0x1a, 0xfb, 0x75, 0x3e, 
+0xfa, 0x27, 0x38, 0x38, 0x98, 0xcb, 0xb8, 0xff, 
+0x93, 0x13, 0x11, 0x7a, 0x73, 0xff, 0xfe, 0x3e, 
+0x5f, 0x2a, 0x24, 0xec, 0xe2, 0x7c, 0x3b, 0x41, 
+0xf2, 0xe7, 0xed, 0xfb, 0xe3, 0x87, 0xd4, 0x6b, 
+0xaf, 0x3e, 0xa4, 0xb6, 0x08, 0x28, 0xcc, 0xb3, 
+0xd3, 0x1a, 0xf9, 0x13, 0x4c, 0xe0, 0x96, 0x04, 
+0x71, 0xff, 0xd9, 0x43, 0xd5, 0x34, 0xf8, 0x27, 
+0x21, 0xff, 0x76, 0x1a, 0xfc, 0xd3, 0x72, 0xf0, 
+0xcf, 0xd8, 0xc0, 0xc1, 0xbf, 0xd5, 0x34, 0xf8, 
+0xb7, 0x24, 0x83, 0x7f, 0x4f, 0x0f, 0xaf, 0xc7, 
+0xe7, 0xfd, 0x1c, 0xf7, 0x9f, 0xe2, 0xfc, 0x2b, 
+0xfe, 0x7c, 0x21, 0x15, 0x00, 0x86, 0x22, 0xff, 
+0x9a, 0xf6, 0x4b, 0xec, 0x4b, 0x5b, 0x7f, 0x96, 
+0xb8, 0xff, 0x8a, 0x36, 0xc8, 0x9c, 0x9d, 0x9e, 
+0x53, 0xf0, 0x2f, 0x53, 0x83, 0xd1, 0x7f, 0xee, 
+0x74, 0x2f, 0x8c, 0x60, 0xe5, 0xef, 0x44, 0xb7, 
+0x9f, 0x5e, 0x53, 0xff, 0xcf, 0x3d, 0x73, 0xb7, 
+0x20, 0x51, 0xdf, 0x7c, 0xf3, 0x5f, 0x04, 0xc9, 
+0x5f, 0xa8, 0xf4, 0xe7, 0xd8, 0x74, 0x1c, 0x3c, 
+0xfe, 0xd8, 0xed, 0x6a, 0xf5, 0xff, 0x4f, 0x0c, 
+0x47, 0x6a, 0xb1, 0xf2, 0x37, 0x96, 0x21, 0xff, 
+0xc3, 0x9d, 0xbb, 0x69, 0xf0, 0x8f, 0x06, 0xff, 
+0x16, 0x54, 0xf0, 0x6f, 0xa3, 0x81, 0x83, 0x7f, 
+0xda, 0x74, 0xff, 0x34, 0xf8, 0xa7, 0x9b, 0xe0, 
+0x1f, 0x71, 0xff, 0x9f, 0x16, 0xd8, 0xf1, 0x6e, 
+0x01, 0xac, 0x49, 0x75, 0x0e, 0xa6, 0xd7, 0x00, 
+0x0d, 0xea, 0xfe, 0x5b, 0x23, 0xb8, 0xee, 0x3f, 
+0xf4, 0xf0, 0x80, 0x5e, 0xdc, 0x7f, 0x73, 0x5f, 
+0x0a, 0xe3, 0xfe, 0x4f, 0x63, 0x93, 0x9d, 0x3e, 
+0x05, 0xc0, 0x2d, 0x37, 0x5f, 0x25, 0x48, 0xd6, 
+0x9f, 0x7c, 0xfc, 0xb4, 0x5a, 0xe4, 0xcf, 0xa2, 
+0xab, 0x2d, 0x44, 0x69, 0xad, 0x30, 0x79, 0x9c, 
+0x50, 0x5a, 0xe8, 0xa0, 0x55, 0xf7, 0x3f, 0x8e, 
+0x0d, 0x89, 0x44, 0x00, 0xa4, 0x0c, 0x1f, 0xa4, 
+0xc1, 0x3f, 0x1a, 0xfc, 0xa3, 0xc1, 0xbf, 0x79, 
+0x8c, 0xfe, 0x3f, 0xa1, 0xc1, 0x3f, 0xbd, 0x07, 
+0xff, 0x9e, 0x19, 0x44, 0xf7, 0x9f, 0xee, 0x28, 
+0x11, 0x00, 0x1b, 0x92, 0x5c, 0x7e, 0xc6, 0x9f, 
+0xcf, 0xa1, 0x02, 0xc0, 0x70, 0xee, 0xff, 0x0a, 
+0xfb, 0xf2, 0xb6, 0x5f, 0x58, 0xf2, 0x77, 0x2c, 
+0x6f, 0x83, 0xac, 0xa3, 0xd3, 0x3a, 0x0f, 0xfe, 
+0x15, 0x4e, 0xb6, 0x31, 0xe4, 0x3f, 0xd5, 0x1b, 
+0xa8, 0x57, 0xf2, 0x27, 0xb8, 0xf2, 0xca, 0x4b, 
+0x15, 0xae, 0xf0, 0xa9, 0x4b, 0xfe, 0xec, 0x33, 
+0xfd, 0x67, 0x9e, 0xba, 0x4b, 0xee, 0xf7, 0xf1, 
+0xf6, 0x5c, 0x05, 0xc9, 0xf1, 0x66, 0xd0, 0x7a, 
+0x28, 0x40, 0xab, 0xcf, 0xfe, 0x8f, 0x4f, 0x47, 
+0x33, 0xe4, 0x7f, 0xb0, 0x3b, 0x96, 0x06, 0xff, 
+0x68, 0xf0, 0x8f, 0x06, 0xff, 0x94, 0x92, 0xff, 
+0xce, 0x25, 0x17, 0xfc, 0x7b, 0x6d, 0x91, 0x07, 
+0xff, 0x88, 0x00, 0xf8, 0x22, 0x9b, 0x7f, 0x0d, 
+0x70, 0x4d, 0x9a, 0x93, 0xb5, 0x21, 0xf9, 0x8f, 
+0x0a, 0x80, 0x8c, 0xd6, 0x54, 0x14, 0x01, 0x12, 
+0xf7, 0x1f, 0xde, 0x32, 0xa8, 0xf3, 0xe0, 0x1f, 
+0x41, 0x7b, 0x4f, 0x34, 0x23, 0x00, 0xbe, 0xc2, 
+0x2b, 0x76, 0xfa, 0x6a, 0xfc, 0x63, 0xf1, 0xe8, 
+0xc3, 0xb7, 0x2a, 0x74, 0xed, 0x3d, 0xed, 0x21, 
+0xaa, 0x05, 0x00, 0x27, 0xd1, 0xbf, 0x6e, 0xcd, 
+0x8b, 0x72, 0xbf, 0x87, 0x93, 0xc3, 0x27, 0x5a, 
+0x4f, 0xfd, 0x8b, 0x2a, 0x7f, 0x7d, 0x60, 0x00, 
+0xc3, 0x7f, 0xf1, 0xa3, 0x47, 0x68, 0xf0, 0x8f, 
+0x06, 0xff, 0x68, 0xf0, 0x8f, 0x06, 0xff, 0x16, 
+0x76, 0xf0, 0x4f, 0xc6, 0xfd, 0x3f, 0xdf, 0xb7, 
+0x11, 0x9b, 0xfe, 0x1c, 0x24, 0x02, 0x60, 0x43, 
+0xa2, 0xeb, 0xdf, 0x0d, 0xcd, 0x7f, 0xcb, 0xdd, 
+0xfd, 0x5f, 0x65, 0x5f, 0xd9, 0xfe, 0x1b, 0x2b, 
+0x00, 0x9c, 0xca, 0xdb, 0x21, 0xfb, 0xd8, 0xb4, 
+0xce, 0x47, 0xff, 0xe5, 0xe3, 0x0d, 0x0c, 0xf9, 
+0xcf, 0xe0, 0xfd, 0x7a, 0x7d, 0xbb, 0x7f, 0x82, 
+0xb5, 0x02, 0xa4, 0xcd, 0xe2, 0xa9, 0x27, 0xef, 
+0x80, 0x93, 0xb3, 0xf1, 0x6a, 0xb9, 0x7f, 0x82, 
+0xbb, 0xef, 0xba, 0x5e, 0xee, 0xf7, 0x78, 0xe5, 
+0xa5, 0x07, 0xb4, 0x4e, 0xfe, 0xc7, 0x26, 0xf6, 
+0x30, 0xee, 0x7f, 0x6f, 0x6f, 0x2a, 0x0d, 0xfe, 
+0xe9, 0x32, 0xf8, 0x37, 0x4c, 0x83, 0x7f, 0xda, 
+0x0f, 0xfe, 0xc5, 0x69, 0x25, 0xf8, 0xb7, 0xaa, 
+0x6f, 0x17, 0xac, 0x2b, 0x0a, 0x84, 0xcd, 0x41, 
+0x9e, 0x60, 0xe4, 0xec, 0x0a, 0x46, 0xf6, 0x2e, 
+0xb0, 0x3e, 0xc1, 0x0b, 0x56, 0x62, 0x87, 0x88, 
+0x72, 0xf2, 0x0f, 0xa6, 0xc1, 0x3f, 0x03, 0x07, 
+0xff, 0x88, 0x00, 0x58, 0x9d, 0xee, 0xcc, 0x71, 
+0xff, 0x0e, 0xb0, 0x36, 0xc3, 0xf1, 0x33, 0x2a, 
+0x00, 0x0c, 0xeb, 0xfe, 0x8b, 0x18, 0xf2, 0x17, 
+0x0b, 0x80, 0x3d, 0x1d, 0x43, 0x3a, 0x0f, 0xfe, 
+0x91, 0xca, 0xdf, 0x9e, 0xae, 0x30, 0x71, 0xe5, 
+0x6f, 0xa2, 0xde, 0xc9, 0x9f, 0xa0, 0xae, 0xc6, 
+0x43, 0x69, 0x70, 0xef, 0xdd, 0x77, 0x1e, 0x83, 
+0xd9, 0x89, 0x18, 0x95, 0xe4, 0xbf, 0x7f, 0xaf, 
+0x87, 0x60, 0x06, 0xe0, 0x89, 0xc7, 0x6f, 0xd7, 
+0x7e, 0xe5, 0x6f, 0x87, 0x37, 0xf4, 0xb5, 0x79, 
+0x43, 0xd4, 0x58, 0xc7, 0x9c, 0x83, 0x7f, 0x3b, 
+0x69, 0xf0, 0x8f, 0x06, 0xff, 0x16, 0x45, 0xf0, 
+0x4f, 0x24, 0x00, 0x56, 0x63, 0x35, 0xf8, 0xc6, 
+0xbc, 0x40, 0xd8, 0xe2, 0xe3, 0x05, 0x66, 0xeb, 
+0x9c, 0xc0, 0x6a, 0xc5, 0x76, 0xb0, 0x7c, 0xce, 
+0x06, 0x2c, 0x9e, 0xb3, 0x06, 0xf3, 0x67, 0xad, 
+0xc0, 0xfc, 0x19, 0x2b, 0x30, 0x7b, 0xda, 0x12, 
+0xb6, 0xbe, 0x6a, 0x05, 0xab, 0xcb, 0xfc, 0x68, 
+0xf0, 0x6f, 0x01, 0x07, 0xff, 0x5e, 0xec, 0x34, 
+0x82, 0x4d, 0x1c, 0xf2, 0x5f, 0x9f, 0xe8, 0xf6, 
+0xf5, 0x42, 0xe0, 0xc0, 0x65, 0x4b, 0xfe, 0x0e, 
+0x35, 0xed, 0x37, 0xd8, 0x57, 0xb5, 0xff, 0xce, 
+0x0a, 0x00, 0xa7, 0x32, 0xe2, 0xfe, 0x75, 0x1f, 
+0xfc, 0xdb, 0x3b, 0xba, 0x97, 0x71, 0xff, 0x47, 
+0x47, 0xc2, 0xe6, 0x4c, 0xfa, 0xdf, 0x9c, 0x4c, 
+0x01, 0x37, 0xe7, 0xcf, 0xe0, 0xae, 0x3b, 0xaf, 
+0x63, 0x4e, 0xeb, 0x7e, 0xf0, 0xde, 0x13, 0x90, 
+0x9b, 0xb5, 0x5d, 0x6d, 0x01, 0x40, 0xf0, 0xba, 
+0x8a, 0x35, 0xbe, 0xeb, 0xaf, 0xff, 0x33, 0x64, 
+0x67, 0xd8, 0x30, 0x04, 0x2c, 0x24, 0x00, 0xea, 
+0xf7, 0x79, 0xc1, 0x15, 0x57, 0x5c, 0x2c, 0xf8, 
+0x6b, 0xb7, 0x99, 0xbe, 0xa9, 0x55, 0xf7, 0x3f, 
+0x83, 0xe3, 0x4e, 0xe2, 0xfe, 0xcb, 0xfa, 0xf3, 
+0x68, 0xf0, 0x8f, 0x06, 0xff, 0x16, 0x79, 0xf0, 
+0x4f, 0xb1, 0xfb, 0x5f, 0xdb, 0x16, 0x0e, 0x46, 
+0x59, 0xc1, 0xb0, 0xd5, 0xd3, 0x1b, 0xac, 0x56, 
+0xbb, 0xc2, 0x8e, 0x97, 0xec, 0x61, 0xfb, 0x0a, 
+0x3b, 0xb0, 0x79, 0xc1, 0x16, 0xac, 0x5f, 0xd8, 
+0x01, 0x56, 0xcf, 0x8b, 0x05, 0xc0, 0xb3, 0xd6, 
+0x22, 0xf2, 0x7f, 0xc6, 0x12, 0xb6, 0x3d, 0x6d, 
+0x01, 0x5b, 0x9f, 0x32, 0x07, 0x93, 0xe7, 0xcc, 
+0xe1, 0x8b, 0x23, 0x81, 0x34, 0xf8, 0xb7, 0x00, 
+0x83, 0x7f, 0x8f, 0x4f, 0xac, 0x81, 0x75, 0x69, 
+0x2e, 0x3c, 0x01, 0xb0, 0x36, 0xcb, 0xe1, 0x79, 
+0x2a, 0x00, 0x0c, 0xeb, 0xfe, 0x6b, 0x24, 0xee, 
+0x1f, 0x11, 0xd5, 0x33, 0xa2, 0xf3, 0xe0, 0x5f, 
+0xe6, 0xec, 0x28, 0x0c, 0x74, 0x06, 0x62, 0xe5, 
+0xaf, 0x37, 0x7c, 0x8b, 0xae, 0x76, 0xae, 0x02, 
+0x80, 0x9c, 0xd3, 0x15, 0x22, 0xde, 0x07, 0xee, 
+0xbf, 0x09, 0x92, 0x30, 0x7c, 0x47, 0x7a, 0xf8, 
+0x55, 0x09, 0x00, 0x52, 0x06, 0x74, 0xeb, 0x2d, 
+0x57, 0xa9, 0x5c, 0xe3, 0xbb, 0xee, 0xda, 0x2b, 
+0xf1, 0x52, 0xe0, 0xeb, 0xb0, 0x33, 0x78, 0x3d, 
+0xc4, 0x45, 0x9b, 0x42, 0x68, 0xf0, 0x06, 0xa6, 
+0x03, 0x40, 0xd9, 0x09, 0xe1, 0xfc, 0x1c, 0x5b, 
+0x2d, 0x56, 0xfe, 0x26, 0xc2, 0x20, 0x4e, 0x4b, 
+0xba, 0xdb, 0xfd, 0xb1, 0xf2, 0xb7, 0x47, 0x6b, 
+0xc1, 0xbf, 0x90, 0x25, 0x18, 0xfc, 0x73, 0x37, 
+0x70, 0xf0, 0xcf, 0x96, 0x06, 0xff, 0x34, 0x0a, 
+0xfe, 0x6d, 0x68, 0xde, 0x03, 0x5b, 0xd2, 0x42, 
+0xc0, 0xc2, 0xd5, 0x17, 0x76, 0xac, 0x74, 0x03, 
+0xfb, 0x57, 0x9c, 0xc0, 0xee, 0x65, 0x47, 0xb0, 
+0x7d, 0xc9, 0x01, 0x76, 0xbc, 0x88, 0xe4, 0xff, 
+0x22, 0x92, 0xff, 0x0a, 0x01, 0xf2, 0x7f, 0x96, 
+0x4f, 0xfe, 0xa6, 0x4f, 0x9a, 0x81, 0xc9, 0x13, 
+0xdb, 0x60, 0x83, 0x9d, 0x83, 0xd6, 0x83, 0x7f, 
+0x1f, 0xd0, 0xe0, 0xdf, 0xbc, 0x83, 0x7f, 0xe4, 
+0xdc, 0xef, 0xa6, 0x2c, 0x07, 0x89, 0x00, 0x40, 
+0xf7, 0x3f, 0xb5, 0x50, 0x78, 0x70, 0x79, 0xba, 
+0xff, 0xaa, 0xf6, 0x3b, 0x1c, 0xaa, 0xdb, 0xff, 
+0x60, 0xc9, 0xdf, 0xa5, 0xbc, 0x43, 0x2f, 0xc1, 
+0xbf, 0xba, 0xa1, 0x62, 0xc6, 0xfd, 0x1f, 0x1f, 
+0xdb, 0x3d, 0x2f, 0xf7, 0xaf, 0x28, 0xc5, 0xcf, 
+0xe2, 0x8e, 0xdb, 0xaf, 0x61, 0x6a, 0x7c, 0xc9, 
+0xb1, 0x1f, 0x65, 0x22, 0xe0, 0x48, 0xa3, 0x1f, 
+0xb3, 0xaa, 0xa7, 0xcd, 0x1b, 0x00, 0x97, 0x5d, 
+0x7a, 0x11, 0x9c, 0x98, 0x89, 0xd7, 0x9a, 0xfb, 
+0x9f, 0x1a, 0xda, 0xc9, 0xb8, 0xff, 0x82, 0xc1, 
+0x32, 0x1a, 0xfc, 0x5b, 0x62, 0xc1, 0x3f, 0x6b, 
+0x83, 0x07, 0xff, 0x32, 0xf5, 0x17, 0xfc, 0x1b, 
+0x89, 0x81, 0x4d, 0x0d, 0x7b, 0x60, 0x6b, 0x52, 
+0x28, 0x58, 0x3b, 0xfb, 0x83, 0xc3, 0xe7, 0x9e, 
+0xe0, 0xf4, 0xba, 0x2b, 0x38, 0xbe, 0xe6, 0x02, 
+0x0e, 0xaf, 0x3a, 0x4b, 0xc9, 0xff, 0x65, 0x07, 
+0x91, 0xf3, 0x17, 0x20, 0x7f, 0x9e, 0xfb, 0xc7, 
+0xd1, 0xff, 0xb6, 0xa7, 0xf8, 0x02, 0xc0, 0x78, 
+0x85, 0x19, 0x7c, 0x36, 0x1c, 0x6c, 0xd0, 0xe0, 
+0xdf, 0x3b, 0x06, 0x0e, 0xfe, 0xbd, 0xb4, 0xc0, 
+0x82, 0x7f, 0xc4, 0xfd, 0xaf, 0x4f, 0x75, 0x95, 
+0x0a, 0x80, 0x0c, 0x47, 0x58, 0x9f, 0x6d, 0x7f, 
+0x0f, 0x15, 0x00, 0x86, 0xed, 0xfc, 0x3f, 0xe4, 
+0xc0, 0x71, 0xff, 0x31, 0xfd, 0xa3, 0x3a, 0x1f, 
+0xfd, 0x67, 0xcf, 0x0c, 0xe2, 0x73, 0x6c, 0x5f, 
+0xac, 0xfc, 0xf5, 0x65, 0xc8, 0x77, 0xce, 0xcf, 
+0xfc, 0x91, 0x38, 0x2f, 0xba, 0xe8, 0x7c, 0xb5, 
+0xc8, 0x98, 0x8c, 0xf1, 0x03, 0xfc, 0xd6, 0x20, 
+0x21, 0xc7, 0x29, 0x14, 0x01, 0xd9, 0xe9, 0xd6, 
+0x4c, 0x5d, 0xaf, 0xb6, 0x04, 0x40, 0xd4, 0x1e, 
+0x63, 0xad, 0x91, 0xff, 0xa9, 0x63, 0xa2, 0xca, 
+0xdf, 0xb6, 0x8e, 0x10, 0xac, 0xfc, 0xed, 0xa7, 
+0xc1, 0x3f, 0x1a, 0xfc, 0x33, 0x70, 0xf0, 0x2f, 
+0x59, 0xfd, 0xe0, 0xdf, 0x70, 0x1c, 0x18, 0xd7, 
+0x45, 0x82, 0x79, 0x7c, 0x18, 0xd8, 0x3a, 0x04, 
+0x82, 0xcb, 0xa7, 0xde, 0xe0, 0xfa, 0xa6, 0x07, 
+0xb8, 0xbc, 0xe9, 0x0e, 0xce, 0x6f, 0xb8, 0x81, 
+0x33, 0x92, 0xbf, 0x13, 0x92, 0xbf, 0x23, 0x92, 
+0xbf, 0x03, 0x92, 0xbf, 0xfd, 0x2b, 0x8e, 0x28, 
+0x00, 0x1c, 0xa4, 0xee, 0x7f, 0x85, 0x02, 0xf7, 
+0xff, 0x8c, 0xb0, 0xfb, 0xdf, 0xf2, 0xf8, 0x56, 
+0x30, 0x7e, 0xdc, 0x14, 0x56, 0x96, 0x7b, 0xd3, 
+0xe0, 0x9f, 0x06, 0xc1, 0xbf, 0xe7, 0x75, 0x1c, 
+0xfc, 0x23, 0xe7, 0x7e, 0x37, 0x65, 0x39, 0x4a, 
+0x04, 0xc0, 0xba, 0x44, 0xb7, 0xce, 0x85, 0xc4, 
+0x85, 0xcb, 0xcf, 0xfd, 0x57, 0x74, 0x3c, 0xe8, 
+0xb0, 0xb7, 0x1d, 0x58, 0x01, 0xe0, 0x5a, 0xde, 
+0xa9, 0xf3, 0xe0, 0x1f, 0x41, 0xe3, 0x40, 0x96, 
+0xa8, 0xf2, 0x77, 0x32, 0x72, 0xde, 0xc1, 0xbf, 
+0x8d, 0xeb, 0x5f, 0xd6, 0x88, 0x94, 0xff, 0xef, 
+0xff, 0x2e, 0x03, 0x37, 0x97, 0xcf, 0x60, 0x7a, 
+0x3c, 0x5a, 0x38, 0x14, 0x58, 0xeb, 0x01, 0xf7, 
+0xdd, 0x7b, 0xe3, 0xbc, 0xc9, 0x9f, 0xac, 0x04, 
+0x6a, 0xb5, 0xf2, 0xb7, 0x3f, 0x88, 0x71, 0xff, 
+0x99, 0x43, 0xb5, 0x34, 0xf8, 0x47, 0x83, 0x7f, 
+0x3a, 0x0e, 0xfe, 0xa5, 0xcf, 0x2b, 0xf8, 0xb7, 
+0x61, 0x30, 0x0e, 0x4c, 0x6a, 0xa2, 0xc0, 0x2a, 
+0x7a, 0x17, 0x3e, 0xa2, 0x0b, 0x06, 0x8f, 0x4f, 
+0x7c, 0xc1, 0xf3, 0x1d, 0x6f, 0xf0, 0x78, 0xdb, 
+0x0b, 0xdc, 0xdf, 0xf6, 0x04, 0xb7, 0xb7, 0x3c, 
+0x50, 0x00, 0xb8, 0x83, 0x0b, 0x4b, 0xfe, 0x42, 
+0xee, 0x5f, 0xc3, 0xd1, 0xff, 0xd6, 0x27, 0x65, 
+0x04, 0xc0, 0x63, 0xa6, 0xb0, 0xc6, 0xd7, 0x91, 
+0x06, 0xff, 0x16, 0x48, 0xf0, 0xef, 0x89, 0xf1, 
+0xb5, 0x78, 0xe4, 0xc7, 0x55, 0x2a, 0x00, 0xd2, 
+0x9c, 0xf0, 0xdc, 0xaf, 0xc3, 0x75, 0x54, 0x00, 
+0x18, 0xd2, 0xfd, 0x67, 0xb5, 0x75, 0x13, 0xf2, 
+0x67, 0x05, 0x40, 0xdc, 0xd0, 0x98, 0xce, 0xdd, 
+0x7f, 0xfe, 0x54, 0x37, 0x0c, 0xb7, 0x7b, 0xc1, 
+0x44, 0x8f, 0x76, 0x2a, 0x7f, 0x8f, 0x4f, 0xa3, 
+0xd3, 0x58, 0xf3, 0x92, 0xc6, 0x04, 0x7d, 0xf9, 
+0x65, 0x17, 0xc1, 0x76, 0xeb, 0xf7, 0x61, 0x6c, 
+0x70, 0x8f, 0x9c, 0x08, 0x20, 0x8f, 0x0b, 0x1c, 
+0xed, 0x3f, 0x56, 0xfa, 0x6c, 0x5f, 0x11, 0xc8, 
+0x26, 0x80, 0x83, 0xdd, 0x47, 0x5a, 0x25, 0xff, 
+0x93, 0xb3, 0x31, 0x0c, 0xf9, 0x1f, 0xea, 0x8c, 
+0x58, 0x02, 0xc1, 0xbf, 0x6e, 0x1a, 0xfc, 0x5b, 
+0x62, 0xc1, 0xbf, 0x4d, 0xfd, 0x09, 0xb0, 0xad, 
+0x32, 0x1a, 0x76, 0x44, 0xec, 0x06, 0xd7, 0xed, 
+0x3b, 0xc1, 0xe7, 0x93, 0x00, 0xf0, 0x79, 0xdf, 
+0x0f, 0xbc, 0xdf, 0xf3, 0x05, 0xaf, 0x77, 0x7d, 
+0xc0, 0x13, 0xe1, 0x81, 0x02, 0xc0, 0x1d, 0x05, 
+0x80, 0xdb, 0x5b, 0x9e, 0x22, 0xf7, 0xff, 0x86, 
+0xc8, 0xfd, 0xab, 0x3b, 0xfa, 0x17, 0x74, 0xff, 
+0x02, 0xa3, 0x7f, 0x96, 0xfc, 0x8d, 0x1e, 0x33, 
+0x81, 0x0d, 0x9f, 0x5b, 0xd0, 0xe0, 0xdf, 0x02, 
+0x09, 0xfe, 0xbd, 0x57, 0x63, 0x25, 0x26, 0x7f, 
+0x91, 0x00, 0x58, 0x97, 0xe4, 0x56, 0xb3, 0xd0, 
+0xf8, 0x70, 0x79, 0xb9, 0xff, 0x92, 0xf6, 0x67, 
+0x1c, 0x6a, 0x3a, 0x80, 0x15, 0x00, 0x6e, 0x15, 
+0x9d, 0x3a, 0x0f, 0xfe, 0xa5, 0xe1, 0xda, 0x5f, 
+0x4b, 0x5f, 0xa2, 0xd6, 0x2a, 0x7f, 0xb9, 0x49, 
+0x7f, 0xb2, 0xce, 0x47, 0x56, 0xf6, 0x94, 0xd5, 
+0xf1, 0x0a, 0x81, 0x3c, 0x42, 0x30, 0x35, 0x7e, 
+0x1d, 0xfa, 0xbb, 0x42, 0xe5, 0x0a, 0x7f, 0x0e, 
+0x63, 0x2e, 0x60, 0xfd, 0xda, 0x97, 0xe0, 0xda, 
+0x6b, 0xfe, 0xa4, 0xf2, 0xf7, 0x21, 0x5b, 0x00, 
+0x5b, 0x4d, 0xde, 0xd4, 0x7a, 0xe3, 0x1f, 0xc1, 
+0x58, 0x8f, 0x3f, 0x0c, 0xb4, 0x7a, 0x40, 0xd2, 
+0x48, 0x23, 0x0d, 0xfe, 0xd1, 0xe0, 0x9f, 0x9e, 
+0x83, 0x7f, 0xf2, 0xee, 0xdf, 0xa8, 0x27, 0x11, 
+0x2c, 0x4a, 0x63, 0xc1, 0x3e, 0x3c, 0x02, 0x3c, 
+0xad, 0x76, 0x81, 0xff, 0xa7, 0xc1, 0xe0, 0xff, 
+0x51, 0x10, 0xf8, 0x7d, 0x18, 0x08, 0xbe, 0x1f, 
+0x10, 0xf2, 0xf7, 0x07, 0x6f, 0x14, 0x00, 0x5e, 
+0x28, 0x00, 0x84, 0xc8, 0x9f, 0xe7, 0xfe, 0xd9, 
+0xd1, 0xff, 0xab, 0x5a, 0x18, 0xfd, 0x3f, 0x21, 
+0x1a, 0xfd, 0x13, 0xf2, 0x37, 0x7a, 0xd4, 0x04, 
+0x36, 0x3f, 0xba, 0x05, 0x3e, 0xeb, 0xf4, 0xa7, 
+0xc1, 0x3f, 0x03, 0x07, 0xff, 0x9e, 0x1c, 0x45, 
+0xf7, 0x4f, 0x92, 0xff, 0xac, 0x00, 0x48, 0x73, 
+0xfe, 0x1d, 0x1f, 0x01, 0xfc, 0x89, 0x0a, 0x00, 
+0x43, 0xba, 0xff, 0xec, 0xb6, 0x11, 0xae, 0x00, 
+0x48, 0x1c, 0x1d, 0xd7, 0x79, 0xf0, 0xaf, 0x68, 
+0xa2, 0x45, 0x54, 0xf9, 0xdb, 0xa7, 0xbb, 0xca, 
+0x5f, 0x12, 0xe6, 0xfb, 0xe2, 0xb3, 0x67, 0xe1, 
+0xdc, 0x73, 0x35, 0x7b, 0x96, 0x7f, 0xde, 0xb9, 
+0xe7, 0xc0, 0xda, 0xd5, 0x2b, 0xa0, 0x1d, 0xd7, 
+0x87, 0x64, 0xf7, 0xfd, 0x09, 0x09, 0xd7, 0xef, 
+0xf3, 0x64, 0xa6, 0x02, 0xa4, 0xd8, 0xe7, 0xb5, 
+0x57, 0x1e, 0x84, 0x77, 0xde, 0x7a, 0x14, 0x3e, 
+0xfa, 0xf0, 0x29, 0x58, 0xf9, 0xf9, 0x73, 0x10, 
+0xb5, 0xdb, 0x18, 0x27, 0x11, 0x71, 0x3a, 0x69, 
+0xfc, 0x3b, 0x3e, 0x15, 0xc5, 0xb8, 0xff, 0x03, 
+0xdd, 0x09, 0x34, 0xf8, 0xa7, 0xe5, 0xe0, 0x9f, 
+0xf3, 0x92, 0x0c, 0xfe, 0xe5, 0x69, 0x3d, 0xf8, 
+0xb7, 0xa5, 0x33, 0x19, 0x6c, 0x0a, 0xe3, 0xc0, 
+0x39, 0x34, 0x0a, 0x7c, 0x2c, 0x76, 0x43, 0xf0, 
+0xe7, 0xa1, 0x10, 0xf4, 0xe9, 0x4e, 0x08, 0xfc, 
+0x24, 0x04, 0x02, 0x3e, 0xe6, 0x93, 0xbf, 0xef, 
+0x07, 0xfe, 0x7c, 0xf7, 0x4f, 0x46, 0xff, 0xef, 
+0xc8, 0x8e, 0xfe, 0xd1, 0xfd, 0xbf, 0xee, 0xa6, 
+0x78, 0xf4, 0xaf, 0x20, 0xf8, 0xc7, 0xee, 0xfc, 
+0x13, 0xf2, 0x97, 0xb8, 0x7f, 0x81, 0xd1, 0x3f, 
+0x4b, 0xfe, 0x9b, 0x1e, 0x31, 0x86, 0x95, 0x29, 
+0xae, 0x34, 0xf8, 0x37, 0xef, 0xe0, 0xdf, 0xfc, 
+0xdc, 0xff, 0x47, 0x78, 0xee, 0x57, 0xea, 0xfe, 
+0x1d, 0x61, 0x5d, 0x8a, 0x6b, 0xea, 0x42, 0xe4, 
+0xc4, 0xe5, 0xe3, 0xfe, 0x0b, 0xdb, 0x5f, 0x13, 
+0x91, 0xbf, 0x48, 0x00, 0x78, 0x56, 0x75, 0xe9, 
+0x7c, 0xf4, 0x4f, 0xdc, 0x7f, 0x67, 0x4f, 0xa4, 
+0xa8, 0xf2, 0x17, 0x03, 0x6d, 0xba, 0x2e, 0xfd, 
+0xe9, 0xc6, 0xe3, 0x3c, 0x9b, 0x36, 0xbc, 0xc2, 
+0x5c, 0xe0, 0xd3, 0x44, 0x08, 0x9c, 0x7d, 0xf6, 
+0x59, 0x0c, 0xb1, 0x37, 0x1c, 0xf0, 0x56, 0x58, 
+0xfa, 0xa3, 0x0a, 0xda, 0x22, 0x7f, 0x82, 0x91, 
+0x2e, 0xac, 0xfc, 0x6d, 0xf5, 0x84, 0xd8, 0xb1, 
+0x16, 0x1a, 0xfc, 0x5b, 0xe6, 0xc1, 0x3f, 0x6d, 
+0xba, 0x7f, 0x65, 0xc1, 0xbf, 0xad, 0xad, 0xc9, 
+0x60, 0x9b, 0x9f, 0x00, 0xee, 0xc1, 0x31, 0x10, 
+0x68, 0x16, 0x01, 0xa1, 0x5f, 0x84, 0xc3, 0xce, 
+0xcf, 0x77, 0x41, 0xc8, 0xe7, 0x61, 0x10, 0xf2, 
+0x59, 0x28, 0x04, 0x23, 0xf9, 0x07, 0x21, 0xf9, 
+0x07, 0x22, 0xf9, 0x07, 0x7c, 0x1c, 0x84, 0x02, 
+0x20, 0x10, 0x05, 0x00, 0x4b, 0xfe, 0xe8, 0xfe, 
+0xdf, 0x53, 0xec, 0xfe, 0x85, 0x46, 0xff, 0x6c, 
+0xf0, 0x8f, 0x1d, 0xfd, 0x4b, 0xdc, 0xbf, 0xa2, 
+0x9d, 0xff, 0xa7, 0x15, 0x04, 0xff, 0xc4, 0xa3, 
+0x7f, 0x96, 0xfc, 0x37, 0x3e, 0x6c, 0x04, 0xab, 
+0xad, 0x6d, 0x16, 0x74, 0xf0, 0xef, 0x8d, 0x25, 
+0x19, 0xfc, 0x93, 0x0a, 0x80, 0xa7, 0x47, 0xd6, 
+0xc1, 0x26, 0x6c, 0xfd, 0x93, 0x08, 0x80, 0x14, 
+0xd7, 0x5f, 0xf1, 0x11, 0xc0, 0x45, 0x54, 0x00, 
+0x18, 0xd2, 0xfd, 0xe7, 0xb6, 0xcd, 0x72, 0x05, 
+0x40, 0xd2, 0xc4, 0x84, 0xce, 0x83, 0x7f, 0x15, 
+0x63, 0x07, 0xc4, 0x95, 0xbf, 0x3b, 0xf5, 0xda, 
+0xf7, 0x3f, 0xdc, 0x1f, 0xce, 0x8c, 0xe6, 0xe7, 
+0x12, 0xe4, 0x7b, 0xe3, 0xf5, 0x87, 0xa1, 0xba, 
+0xc2, 0x55, 0x23, 0xf2, 0xd7, 0xa6, 0x00, 0x38, 
+0x3a, 0x2e, 0xaa, 0xfc, 0xad, 0xea, 0xcb, 0x58, 
+0x06, 0xc1, 0xbf, 0x2e, 0x1a, 0xfc, 0xd3, 0x72, 
+0xf0, 0x4f, 0xbd, 0xbe, 0xff, 0x74, 0x30, 0x3f, 
+0x8c, 0x7d, 0x1a, 0xd9, 0x49, 0xe0, 0x1d, 0x18, 
+0x07, 0xa1, 0x5b, 0xa3, 0x60, 0xf7, 0x97, 0x11, 
+0x10, 0xbe, 0x6a, 0x0f, 0xec, 0x5a, 0xb9, 0x1b, 
+0xc2, 0x56, 0x86, 0xa3, 0x00, 0xd8, 0x85, 0x02, 
+0x80, 0x25, 0x7f, 0x74, 0xff, 0x9f, 0x08, 0xbb, 
+0x7f, 0x45, 0xa3, 0x7f, 0xc1, 0xe0, 0x1f, 0x6f, 
+0xf4, 0x3f, 0xbf, 0x9d, 0x7f, 0x32, 0xfa, 0xe7, 
+0xb9, 0xff, 0x47, 0xa4, 0x02, 0x60, 0xfd, 0x4b, 
+0x26, 0x34, 0xf8, 0xa7, 0xc5, 0xe0, 0x9f, 0x52, 
+0x01, 0x30, 0x21, 0xef, 0xfe, 0x3f, 0x2d, 0xb4, 
+0xe7, 0xbb, 0xff, 0x54, 0xd7, 0x80, 0x85, 0xca, 
+0x8b, 0xcb, 0xc3, 0xfd, 0xe7, 0xb5, 0x7f, 0x22, 
+0x25, 0xff, 0x0e, 0xf0, 0xde, 0xdb, 0xad, 0x73, 
+0xf7, 0x9f, 0x7e, 0x74, 0x1c, 0x7a, 0xbb, 0x76, 
+0x62, 0xe5, 0xaf, 0x17, 0x7c, 0x73, 0x42, 0xbf, 
+0x95, 0xbf, 0x15, 0xa5, 0x4e, 0x70, 0xef, 0x3d, 
+0x37, 0xcc, 0x2b, 0xd1, 0xff, 0xdc, 0xb3, 0xf7, 
+0x40, 0x41, 0xae, 0xad, 0x5e, 0xc9, 0xff, 0xab, 
+0x13, 0x49, 0xb8, 0x2a, 0xe9, 0x05, 0xbd, 0xed, 
+0x3e, 0x10, 0x39, 0xd6, 0x49, 0x83, 0x7f, 0x34, 
+0xf8, 0x27, 0x43, 0xfe, 0x73, 0x73, 0xff, 0x26, 
+0x23, 0x99, 0x60, 0xd5, 0x90, 0x0e, 0x2e, 0x19, 
+0x29, 0xe0, 0xef, 0x9f, 0x08, 0xbb, 0x4d, 0x63, 
+0x21, 0x72, 0x6d, 0x34, 0x44, 0xac, 0x89, 0x82, 
+0x3d, 0xab, 0x23, 0x91, 0xfc, 0x23, 0x21, 0x1c, 
+0x05, 0xc0, 0x2e, 0x14, 0x00, 0x61, 0x28, 0x00, 
+0x24, 0xee, 0xff, 0xb3, 0x30, 0x08, 0xfe, 0x4c, 
+0x7e, 0xf4, 0xcf, 0x77, 0xff, 0x8a, 0x46, 0xff, 
+0x1c, 0xf7, 0xff, 0xba, 0x9b, 0xc6, 0x3b, 0xff, 
+0x64, 0xf4, 0xaf, 0x56, 0xf0, 0xef, 0x51, 0xbe, 
+0xfb, 0xdf, 0xf0, 0xd0, 0x66, 0xd8, 0xf8, 0x90, 
+0x11, 0x7c, 0xbe, 0xdf, 0x9b, 0x06, 0xff, 0x0c, 
+0x10, 0xfc, 0x7b, 0x66, 0x68, 0x3d, 0x6c, 0xca, 
+0x70, 0x92, 0x90, 0xff, 0xc6, 0x64, 0xd7, 0x9f, 
+0xf1, 0xe7, 0x73, 0xa9, 0x00, 0x30, 0xac, 0x00, 
+0x38, 0x2d, 0x11, 0x00, 0x7b, 0x3b, 0x20, 0x79, 
+0x72, 0x52, 0xe7, 0xc1, 0xbf, 0x1a, 0xfc, 0x10, 
+0x64, 0x2a, 0x7f, 0xb1, 0xc6, 0x56, 0x5f, 0xe4, 
+0x7f, 0xe6, 0x78, 0x12, 0xac, 0x5e, 0xf5, 0x82, 
+0x56, 0x8b, 0x7d, 0x1e, 0xc1, 0xcb, 0x81, 0xa9, 
+0x49, 0x16, 0x4c, 0xbb, 0xa0, 0xae, 0x05, 0xc0, 
+0x0c, 0xd6, 0x23, 0x13, 0xf7, 0x5f, 0xd2, 0x5f, 
+0x48, 0x83, 0x7f, 0x34, 0xf8, 0x37, 0xe7, 0xd1, 
+0xbf, 0xe9, 0x50, 0x16, 0x6c, 0x3f, 0x90, 0x01, 
+0xee, 0xa9, 0x69, 0x10, 0xec, 0x93, 0x0c, 0x51, 
+0xa6, 0x09, 0x10, 0xb3, 0x21, 0x1e, 0xa2, 0xd7, 
+0xc7, 0x41, 0xd4, 0x3a, 0x42, 0xfe, 0x31, 0x48, 
+0xfe, 0xd1, 0x48, 0xfe, 0xe8, 0xfc, 0x57, 0xcb, 
+0x93, 0x3f, 0xdf, 0xfd, 0x0b, 0x8d, 0xfe, 0x39, 
+0xee, 0x5f, 0xd9, 0xe8, 0xff, 0x4d, 0xe9, 0xe8, 
+0x5f, 0xeb, 0x3b, 0xff, 0x02, 0xa3, 0x7f, 0x42, 
+0xfc, 0x8c, 0x00, 0x78, 0xd0, 0x08, 0x56, 0xed, 
+0x74, 0xa4, 0xc1, 0x3f, 0x9d, 0x04, 0xff, 0x94, 
+0xbb, 0xff, 0x95, 0x39, 0x4e, 0x7c, 0xf7, 0x9f, 
+0xe6, 0x62, 0xb9, 0x90, 0xb9, 0x71, 0xe9, 0x8f, 
+0xfe, 0x73, 0xda, 0x36, 0x70, 0xdd, 0xbf, 0x6f, 
+0x6d, 0xaf, 0xce, 0x83, 0x7f, 0x99, 0xb3, 0x23, 
+0x30, 0xd8, 0x11, 0x00, 0xa3, 0x9d, 0xde, 0x4c, 
+0x71, 0x8f, 0xbe, 0x46, 0xff, 0x24, 0xd9, 0xaf, 
+0x4d, 0xf2, 0xe7, 0x82, 0xdc, 0x1d, 0xc8, 0x4a, 
+0xb3, 0xd6, 0x19, 0xf9, 0x9f, 0x3e, 0x91, 0x80, 
+0x95, 0xbf, 0x1e, 0xd0, 0xd9, 0x1e, 0x00, 0xbb, 
+0xc7, 0x7b, 0x69, 0xf0, 0x8f, 0x06, 0xff, 0xd4, 
+0x0e, 0xfe, 0x6d, 0x1b, 0xcc, 0x01, 0xfb, 0x7d, 
+0x59, 0xe0, 0x9d, 0x8c, 0x8f, 0x8d, 0xbc, 0xd2, 
+0x20, 0xce, 0x24, 0x19, 0xe2, 0x37, 0x25, 0x41, 
+0xdc, 0xa6, 0x44, 0x88, 0xdb, 0x98, 0x00, 0xb1, 
+0x48, 0xfe, 0x31, 0x48, 0xfe, 0xd1, 0x48, 0xfe, 
+0x51, 0xeb, 0x62, 0x64, 0xdc, 0xbf, 0x78, 0xf4, 
+0xbf, 0x8a, 0x3b, 0xfa, 0x17, 0xbb, 0x7f, 0x65, 
+0xa3, 0xff, 0x0f, 0xf8, 0xa3, 0x7f, 0xa5, 0x3b, 
+0xff, 0x84, 0xfc, 0xe7, 0xb9, 0xf3, 0x4f, 0xc8, 
+0x5f, 0xd0, 0xfd, 0x3f, 0x22, 0xe3, 0xfe, 0x91, 
+0xfc, 0x37, 0x3d, 0x68, 0x8c, 0x6b, 0xc2, 0x56, 
+0x34, 0xf8, 0xa7, 0xa6, 0xfb, 0xd7, 0x56, 0xf0, 
+0xef, 0xf9, 0xbe, 0x4d, 0x58, 0xf6, 0xc3, 0x71, 
+0xff, 0x49, 0x6e, 0x3f, 0xe1, 0xcf, 0x67, 0x51, 
+0x01, 0x60, 0xb0, 0x83, 0x3f, 0x9d, 0x67, 0x3b, 
+0x14, 0xb4, 0x7f, 0x2f, 0x11, 0x00, 0xd5, 0x1d, 
+0x90, 0x3a, 0x35, 0xa9, 0xf3, 0xe0, 0xdf, 0x81, 
+0xa1, 0x42, 0xc6, 0xfd, 0x9f, 0xc0, 0xe7, 0xd9, 
+0xfa, 0x72, 0xff, 0xa4, 0xfa, 0x57, 0x11, 0x79, 
+0x93, 0xed, 0x00, 0x92, 0xe2, 0xdf, 0x13, 0xb6, 
+0x09, 0x12, 0x63, 0xb7, 0x32, 0x3f, 0x6f, 0xde, 
+0xf4, 0x2a, 0x73, 0x48, 0x48, 0x53, 0x21, 0x40, 
+0xee, 0x10, 0xe8, 0x22, 0xf8, 0x37, 0x89, 0xa7, 
+0x91, 0x89, 0xfb, 0xcf, 0x1b, 0xac, 0x54, 0xcb, 
+0xfd, 0xd3, 0xe0, 0xdf, 0x62, 0x0b, 0xfe, 0x95, 
+0x6b, 0x2d, 0xf8, 0x67, 0xd1, 0x9b, 0x07, 0xce, 
+0xd5, 0x39, 0xe0, 0x9f, 0x90, 0x05, 0x91, 0x9e, 
+0x19, 0x90, 0x6c, 0x9a, 0x06, 0xc9, 0xc6, 0xa9, 
+0x90, 0x64, 0x94, 0x02, 0x89, 0x46, 0xc9, 0x90, 
+0xb0, 0x39, 0x09, 0x05, 0x80, 0x0c, 0xf9, 0xaf, 
+0x67, 0xc9, 0x9f, 0xe3, 0xfe, 0x15, 0x8d, 0xfe, 
+0x3f, 0xe7, 0x8f, 0xfe, 0x19, 0xf7, 0xaf, 0x72, 
+0xf4, 0xaf, 0xe7, 0x9d, 0x7f, 0x05, 0xa3, 0xff, 
+0x8d, 0x48, 0xfe, 0x44, 0x00, 0x6c, 0xc6, 0x7f, 
+0xff, 0xc9, 0x80, 0xdf, 0x12, 0x0f, 0xfe, 0x59, 
+0x2c, 0x98, 0xe0, 0x1f, 0x11, 0x00, 0xab, 0x33, 
+0xc8, 0xda, 0x9f, 0x54, 0x00, 0xac, 0x4f, 0x77, 
+0xfe, 0x74, 0xa1, 0x73, 0xe4, 0x12, 0x2f, 0xfd, 
+0x69, 0xb7, 0xe0, 0xba, 0x7f, 0xff, 0xba, 0x3e, 
+0x9d, 0x07, 0xff, 0x72, 0xa6, 0xfb, 0xb1, 0xf4, 
+0xc7, 0x07, 0xc6, 0xbb, 0xe6, 0x57, 0xf9, 0xab, 
+0x89, 0xfb, 0x9f, 0xc1, 0x86, 0xbf, 0x8b, 0x2f, 
+0xbe, 0x40, 0x90, 0xb0, 0xc9, 0x3f, 0xdf, 0x57, 
+0xed, 0x26, 0xf7, 0x6b, 0x48, 0xca, 0x9f, 0x9c, 
+0xd9, 0x4d, 0x8a, 0xdf, 0x06, 0xd7, 0x5c, 0x7d, 
+0x85, 0x46, 0x1b, 0x03, 0xed, 0x47, 0x82, 0xb4, 
+0x2a, 0x00, 0x4e, 0x1d, 0x8d, 0x63, 0x2a, 0x7f, 
+0x5b, 0x3a, 0x42, 0xb1, 0xf2, 0x97, 0x06, 0xff, 
+0x16, 0x5f, 0xf0, 0xaf, 0x5a, 0xa7, 0xc1, 0x3f, 
+0xab, 0xae, 0x7c, 0xec, 0xec, 0xc8, 0x83, 0x90, 
+0xb8, 0x1c, 0x88, 0x75, 0xcf, 0x86, 0xf4, 0x6d, 
+0x99, 0x90, 0x66, 0x9a, 0x01, 0xa9, 0x26, 0xe9, 
+0x90, 0xb2, 0x05, 0xc9, 0x7f, 0x0b, 0x92, 0xbf, 
+0x31, 0x4b, 0xfe, 0x62, 0xf7, 0xbf, 0x31, 0x11, 
+0x62, 0x37, 0xca, 0x8f, 0xfe, 0x59, 0xf7, 0xcf, 
+0x1d, 0xfd, 0x33, 0xc1, 0x3f, 0xa5, 0xa3, 0x7f, 
+0xcd, 0x76, 0xfe, 0x5d, 0xf4, 0xb0, 0xf3, 0x4f, 
+0xc8, 0x9f, 0x71, 0xff, 0x0f, 0x1b, 0xf3, 0x46, 
+0xff, 0x0c, 0xf9, 0x3f, 0xb0, 0x05, 0x8c, 0x1e, 
+0x30, 0x81, 0x2f, 0x72, 0xdd, 0x69, 0xf0, 0x8f, 
+0x47, 0xfe, 0x26, 0x3a, 0x0b, 0xfe, 0x31, 0xe7, 
+0x7e, 0x19, 0xf2, 0x17, 0x09, 0x80, 0x0d, 0x49, 
+0xee, 0x5f, 0x2d, 0x06, 0x8e, 0x5c, 0xca, 0xee, 
+0xff, 0x5c, 0x87, 0xa2, 0x8e, 0x9f, 0xb8, 0xee, 
+0x3f, 0x6d, 0x66, 0x4a, 0xe7, 0xee, 0xff, 0x50, 
+0x7f, 0x3a, 0xe3, 0xfe, 0x4f, 0xe1, 0x2e, 0xbb, 
+0xbe, 0xdc, 0x7f, 0x48, 0xe0, 0x3a, 0x85, 0x84, 
+0x2d, 0x3a, 0x13, 0x2c, 0x4f, 0xfe, 0x5c, 0x4c, 
+0xa1, 0x80, 0x78, 0xeb, 0xcd, 0x47, 0xd4, 0x16, 
+0x01, 0x39, 0xcc, 0x99, 0x60, 0xed, 0xb9, 0xff, 
+0x89, 0xfe, 0x40, 0xc6, 0xfd, 0xa7, 0x0d, 0xd7, 
+0xd1, 0xb5, 0xbf, 0x65, 0x11, 0xfc, 0x53, 0xde, 
+0xf7, 0xbf, 0xa3, 0xbd, 0x10, 0xbc, 0xca, 0x0a, 
+0x60, 0x57, 0x4c, 0x3e, 0x24, 0xb9, 0xe5, 0x42, 
+0x96, 0x79, 0x0e, 0x64, 0x9a, 0x65, 0x43, 0xc6, 
+0x36, 0x24, 0xff, 0xad, 0x59, 0x48, 0xfe, 0x99, 
+0x48, 0xfe, 0x19, 0x90, 0x82, 0x02, 0x20, 0x19, 
+0x05, 0x40, 0x12, 0xba, 0xff, 0x44, 0x74, 0xff, 
+0x84, 0xfc, 0x05, 0xdd, 0xbf, 0xca, 0xd1, 0xbf, 
+0xea, 0xe0, 0x1f, 0x77, 0xf4, 0x2f, 0xe7, 0xfe, 
+0x05, 0x47, 0xff, 0x6e, 0x9a, 0xd7, 0xfd, 0x3e, 
+0xc7, 0x1f, 0xfd, 0x2b, 0xdd, 0xf9, 0x57, 0x30, 
+0xfa, 0x27, 0xe4, 0xbf, 0x19, 0xc9, 0xdf, 0xe8, 
+0x7e, 0xac, 0x05, 0x76, 0xb2, 0x5b, 0x46, 0xc1, 
+0x3f, 0x33, 0x83, 0x05, 0xff, 0x44, 0xe7, 0x7e, 
+0x5d, 0x79, 0x02, 0x60, 0x7d, 0xa6, 0xd3, 0xf3, 
+0x54, 0x00, 0x18, 0xd6, 0xfd, 0xbb, 0xa0, 0x08, 
+0x90, 0xb8, 0xff, 0xa0, 0x83, 0xfd, 0x3a, 0x0f, 
+0xfe, 0x15, 0x4c, 0x75, 0xc2, 0x08, 0x9e, 0xae, 
+0x9d, 0xec, 0xf5, 0xd7, 0x6b, 0xea, 0xff, 0xa5, 
+0x17, 0xef, 0x57, 0x78, 0xca, 0x57, 0x15, 0xf9, 
+0xb3, 0x20, 0x17, 0xfc, 0x9e, 0x7e, 0xea, 0x4e, 
+0xd5, 0xe5, 0x41, 0x58, 0x15, 0x3c, 0xdc, 0xbf, 
+0x5b, 0x6b, 0x02, 0xe0, 0xc4, 0x4c, 0x34, 0x43, 
+0xfe, 0x8d, 0x5d, 0xd1, 0x4b, 0x22, 0xf8, 0xe7, 
+0xbb, 0xec, 0x83, 0x7f, 0x95, 0x1a, 0x07, 0xff, 
+0xec, 0x5b, 0x8a, 0xc0, 0xaf, 0xa4, 0x08, 0x22, 
+0xa3, 0x8a, 0x20, 0xdd, 0xa5, 0x10, 0x72, 0x2d, 
+0x0b, 0x20, 0xc7, 0x32, 0x1f, 0xb2, 0x2d, 0xf2, 
+0x90, 0xfc, 0x73, 0x91, 0xfc, 0x73, 0x18, 0xf2, 
+0xcf, 0xd8, 0x96, 0x85, 0x02, 0x40, 0xc6, 0xfd, 
+0x1b, 0x73, 0xdd, 0xbf, 0xd0, 0xe8, 0x5f, 0xbd, 
+0xe0, 0x1f, 0x77, 0xf4, 0xcf, 0x73, 0xff, 0x82, 
+0xa3, 0x7f, 0xcd, 0x76, 0xfe, 0xed, 0x39, 0x3b, 
+0xff, 0xf6, 0xaf, 0x3b, 0x41, 0xf1, 0xee, 0x52, 
+0x38, 0x98, 0xd3, 0x00, 0x7b, 0xcc, 0x22, 0xe7, 
+0x54, 0xf7, 0xab, 0x74, 0xf4, 0x2f, 0x76, 0xff, 
+0xc6, 0x28, 0x00, 0x36, 0xbf, 0x69, 0xb9, 0x80, 
+0x83, 0x7f, 0xb6, 0x06, 0x0e, 0xfe, 0x19, 0x6b, 
+0x2d, 0xf8, 0xf7, 0xea, 0x11, 0x53, 0x0e, 0xf9, 
+0x3b, 0xc1, 0x86, 0x44, 0xf7, 0xc9, 0xc5, 0xc2, 
+0x93, 0x4b, 0xd5, 0xfd, 0x5f, 0xe0, 0x50, 0xd2, 
+0xf1, 0x2f, 0x56, 0x00, 0x38, 0x56, 0x75, 0x40, 
+0xfa, 0xec, 0x94, 0x4e, 0x83, 0x7f, 0x44, 0x00, 
+0xb4, 0xf6, 0xc6, 0x33, 0xee, 0xff, 0xcc, 0x6c, 
+0xac, 0xde, 0x82, 0x7f, 0x04, 0x77, 0xdd, 0x79, 
+0xad, 0x20, 0x59, 0xbf, 0xff, 0xee, 0xe3, 0x6a, 
+0x0b, 0x00, 0x32, 0xd2, 0xef, 0xef, 0x0a, 0x63, 
+0x46, 0xfc, 0x8a, 0xc8, 0x9f, 0x3c, 0x4e, 0x28, 
+0xcc, 0xb3, 0xd3, 0xaa, 0xfb, 0x1f, 0xed, 0xf6, 
+0xc3, 0xf1, 0xbf, 0x3b, 0x24, 0x8e, 0x1c, 0xa2, 
+0xc1, 0x3f, 0x83, 0x04, 0xff, 0x0e, 0xe8, 0x35, 
+0xf8, 0x67, 0x35, 0x5c, 0x02, 0x4e, 0xcd, 0xa5, 
+0x10, 0x54, 0x58, 0x02, 0xb1, 0x91, 0x25, 0x90, 
+0xed, 0x52, 0x02, 0x05, 0x36, 0xc5, 0x90, 0x6f, 
+0x5d, 0x84, 0x28, 0x84, 0x3c, 0xab, 0x02, 0x14, 
+0x00, 0xf9, 0x90, 0x83, 0xe4, 0x9f, 0x8d, 0xe4, 
+0x9f, 0x65, 0xc6, 0xba, 0x7f, 0x01, 0xf2, 0x67, 
+0x46, 0xff, 0x52, 0xf7, 0xcf, 0x06, 0xff, 0xb8, 
+0xa3, 0x7f, 0xc6, 0xfd, 0xaf, 0x55, 0xe0, 0xfe, 
+0x15, 0x8e, 0xfe, 0x35, 0xdb, 0xf9, 0x27, 0xe4, 
+0xaf, 0x7c, 0xe7, 0xdf, 0x91, 0x71, 0xff, 0x8e, 
+0xaf, 0xbb, 0xc0, 0x58, 0xfb, 0x38, 0x70, 0x7f, 
+0x7c, 0x73, 0xfc, 0x1b, 0xc8, 0x0d, 0xce, 0x63, 
+0x44, 0x80, 0xb2, 0x9d, 0x7f, 0x32, 0xfa, 0xe7, 
+0xb9, 0xff, 0x87, 0x85, 0xdd, 0xbf, 0x91, 0xd8, 
+0xfd, 0x1b, 0xdf, 0x8f, 0x3d, 0x01, 0xf7, 0x6d, 
+0x83, 0x4f, 0x9b, 0xbd, 0x69, 0xf0, 0x4f, 0x87, 
+0xc1, 0x3f, 0xd1, 0xb9, 0x5f, 0x37, 0xa9, 0x00, 
+0xc8, 0x74, 0x86, 0x8d, 0xd9, 0x0e, 0xf7, 0x50, 
+0x01, 0x60, 0x48, 0xf7, 0x9f, 0xd1, 0x1e, 0x28, 
+0x22, 0x7f, 0x91, 0x00, 0x08, 0x69, 0x1a, 0xd0, 
+0xf9, 0xe8, 0xbf, 0x74, 0xe2, 0x30, 0x43, 0xfe, 
+0xd3, 0x03, 0xc1, 0x7a, 0x75, 0xff, 0x04, 0x8a, 
+0x9e, 0xe1, 0x3f, 0xf8, 0xc0, 0x4d, 0x6a, 0x93, 
+0x3f, 0x8b, 0x15, 0x2f, 0xdc, 0x2b, 0xf7, 0xfb, 
+0x78, 0xb8, 0x7e, 0x0e, 0xc9, 0xf1, 0x66, 0x70, 
+0xa4, 0xc9, 0x5f, 0xab, 0xe4, 0x7f, 0x7c, 0x32, 
+0x82, 0x71, 0xff, 0xfb, 0x7a, 0x92, 0x96, 0x64, 
+0xf0, 0xcf, 0x87, 0x06, 0xff, 0xc0, 0x7a, 0xa8, 
+0x0c, 0xdc, 0x9a, 0xca, 0x21, 0x2c, 0xbf, 0x1c, 
+0x92, 0x22, 0xca, 0xa1, 0xd0, 0xa5, 0x1c, 0x4a, 
+0x6c, 0xcb, 0xa0, 0x78, 0x47, 0x29, 0x14, 0x6d, 
+0x2f, 0x81, 0xc2, 0xed, 0xc5, 0x28, 0x00, 0x04, 
+0xc8, 0xdf, 0x22, 0x97, 0xe7, 0xfe, 0x25, 0xa3, 
+0x7f, 0x53, 0xfe, 0xe8, 0x9f, 0x09, 0xfe, 0x69, 
+0x34, 0xfa, 0xd7, 0x6c, 0xe7, 0x9f, 0x90, 0xbf, 
+0xea, 0x9d, 0x7f, 0x0f, 0xb5, 0x76, 0xfe, 0xe3, 
+0xed, 0x12, 0x41, 0xf6, 0xc7, 0x6f, 0xbf, 0xfd, 
+0x06, 0xff, 0xfd, 0xef, 0x7f, 0xb1, 0x00, 0xeb, 
+0x18, 0x44, 0xef, 0x88, 0x55, 0xbb, 0xee, 0x97, 
+0xeb, 0xfe, 0xf9, 0xa3, 0x7f, 0x91, 0xfb, 0xdf, 
+0x72, 0xdf, 0x56, 0x30, 0x41, 0x01, 0xb0, 0x2a, 
+0xca, 0x65, 0xc1, 0x07, 0xff, 0xb4, 0xe9, 0xfe, 
+0xf5, 0x1d, 0xfc, 0x13, 0x9d, 0xfb, 0x95, 0xba, 
+0xff, 0xf5, 0x89, 0x1e, 0xed, 0x8b, 0x89, 0x2b, 
+0x97, 0xa2, 0xfb, 0xbf, 0xc4, 0xa1, 0xb4, 0xe3, 
+0x67, 0x56, 0x00, 0x38, 0x56, 0x76, 0x40, 0xc6, 
+0xec, 0xb4, 0x4e, 0x83, 0x7f, 0x69, 0x47, 0x27, 
+0xa0, 0xab, 0x7b, 0x37, 0x96, 0xfe, 0x78, 0xc2, 
+0xd7, 0xc7, 0x13, 0xf4, 0xea, 0xfe, 0x09, 0x9e, 
+0x7a, 0xf2, 0x0e, 0x85, 0xae, 0x9d, 0xf4, 0xfc, 
+0x2b, 0x15, 0x00, 0x32, 0x6b, 0x7d, 0x9b, 0x37, 
+0xbe, 0x2a, 0xf7, 0x7b, 0xd8, 0xda, 0x7c, 0xa0, 
+0xfd, 0xd2, 0x9f, 0x93, 0x58, 0xfa, 0xd3, 0xe5, 
+0x0d, 0xfd, 0x28, 0x9a, 0x62, 0xc6, 0xda, 0x74, 
+0xe4, 0xfe, 0x75, 0x17, 0xfc, 0xf3, 0x5b, 0x92, 
+0xc1, 0xbf, 0xf9, 0xbb, 0xff, 0x1d, 0x83, 0x15, 
+0xe0, 0x75, 0xb0, 0x12, 0xf6, 0xe4, 0x56, 0x42, 
+0xfa, 0xee, 0x2a, 0x28, 0x75, 0xad, 0x82, 0x72, 
+0x87, 0x4a, 0x28, 0xb3, 0xaf, 0x80, 0x52, 0x3b, 
+0x0e, 0xf9, 0xef, 0x20, 0xe4, 0x2f, 0x75, 0xff, 
+0x79, 0x56, 0x38, 0xfa, 0xb7, 0xe2, 0x8f, 0xfe, 
+0x19, 0xf7, 0xaf, 0xe9, 0xe8, 0x7f, 0xa3, 0x66, 
+0x3b, 0xff, 0x84, 0xfc, 0x77, 0xaa, 0xac, 0xfb, 
+0xd5, 0x6c, 0xe7, 0xdf, 0x51, 0x66, 0xe7, 0xdf, 
+0x56, 0x1c, 0xfc, 0xab, 0x8c, 0xad, 0xe6, 0x91, 
+0xff, 0x1f, 0x7f, 0xfc, 0x01, 0xbf, 0xfc, 0xf2, 
+0x0b, 0xfc, 0xe7, 0x3f, 0xff, 0x81, 0x7f, 0xfc, 
+0xe3, 0x1f, 0xf0, 0xb7, 0xbf, 0xfd, 0x0d, 0xba, 
+0x1a, 0xf1, 0xf5, 0xb4, 0x2e, 0x40, 0xad, 0xd1, 
+0xbf, 0x90, 0xfb, 0x67, 0xc8, 0x5f, 0xec, 0xfe, 
+0x4d, 0xee, 0x35, 0x83, 0x0d, 0x46, 0xb6, 0x06, 
+0x0e, 0xfe, 0xd9, 0x2f, 0xd9, 0xe0, 0x9f, 0xf4, 
+0xdc, 0xaf, 0x58, 0x00, 0x64, 0xb8, 0xfc, 0x81, 
+0x3f, 0x5f, 0x4f, 0x05, 0x80, 0x61, 0xdd, 0x7f, 
+0x94, 0xd4, 0xfd, 0x77, 0x42, 0x68, 0xf3, 0xa0, 
+0xce, 0xdd, 0x7f, 0xd5, 0xe8, 0x7e, 0xc6, 0xfd, 
+0xcf, 0x0e, 0x85, 0xea, 0xdd, 0xfd, 0x13, 0x6c, 
+0xde, 0xf8, 0x8a, 0x42, 0x01, 0xf0, 0xd8, 0xa3, 
+0xb7, 0x89, 0x8e, 0xf6, 0xa8, 0x29, 0x00, 0xc8, 
+0xd4, 0x40, 0xf6, 0xf7, 0x78, 0xfe, 0xb9, 0x7b, 
+0xb4, 0xbe, 0xf6, 0x37, 0x3b, 0x16, 0xce, 0xb8, 
+0xff, 0xca, 0xbe, 0x2c, 0x1a, 0xfc, 0xd3, 0x4b, 
+0xf0, 0xef, 0xa0, 0x4e, 0x82, 0x7f, 0x76, 0xfd, 
+0x95, 0xe0, 0x7f, 0xa0, 0x1a, 0xa2, 0xb3, 0xf7, 
+0x42, 0x4e, 0x78, 0x0d, 0x54, 0xb9, 0x22, 0x9c, 
+0xf7, 0x42, 0xa5, 0xd3, 0x5e, 0xa8, 0x70, 0xac, 
+0x46, 0xf2, 0xaf, 0x42, 0xf2, 0xaf, 0x44, 0xf2, 
+0x17, 0x09, 0x80, 0x62, 0x14, 0x00, 0x45, 0x28, 
+0x00, 0x08, 0xf9, 0x17, 0xda, 0x28, 0x70, 0xff, 
+0xca, 0x46, 0xff, 0x02, 0xc1, 0x3f, 0xee, 0xe8, 
+0x9f, 0xe7, 0xfe, 0xd7, 0xaa, 0xb3, 0xf3, 0x1f, 
+0xa6, 0xfd, 0x9d, 0x7f, 0x66, 0xf4, 0x2f, 0x1f, 
+0xfc, 0x0b, 0x35, 0x0e, 0x87, 0xdf, 0x7f, 0xfb, 
+0x5d, 0x22, 0x00, 0x7e, 0xfd, 0xf5, 0x57, 0xf8, 
+0xf9, 0xe7, 0x9f, 0xe1, 0x5f, 0xff, 0xfa, 0x17, 
+0xfc, 0xf4, 0xd3, 0x4f, 0xf0, 0xc3, 0x0f, 0x3f, 
+0xc0, 0x37, 0xdf, 0x7c, 0x03, 0xa7, 0x4f, 0x9f, 
+0x86, 0xda, 0xbc, 0x7d, 0xe0, 0xf8, 0x9e, 0xb3, 
+0xda, 0xc1, 0x3f, 0xe9, 0xe8, 0x5f, 0xea, 0xfe, 
+0x4d, 0xef, 0x25, 0x22, 0xc2, 0x12, 0x3e, 0x1c, 
+0xd1, 0x24, 0xf8, 0xe7, 0x61, 0xe0, 0xe0, 0x9f, 
+0xf5, 0xa2, 0x09, 0xfe, 0xbd, 0x57, 0x6b, 0xcd, 
+0x77, 0xff, 0x49, 0xee, 0x55, 0x8b, 0x8d, 0x2f, 
+0x97, 0x9a, 0xfb, 0xff, 0x93, 0x43, 0x79, 0xc7, 
+0x2f, 0x2c, 0xf9, 0x3b, 0xe1, 0xb9, 0xdf, 0xcc, 
+0xa3, 0xd3, 0x3a, 0x0d, 0xfe, 0xa5, 0xcf, 0x8e, 
+0x43, 0x5f, 0x67, 0x08, 0x8c, 0x76, 0x90, 0xca, 
+0xdf, 0x24, 0xbd, 0x93, 0x3f, 0x41, 0x43, 0x9d, 
+0xb7, 0xd2, 0xe0, 0xde, 0x9b, 0x6f, 0x3c, 0xcc, 
+0x24, 0xfd, 0x55, 0x91, 0x7f, 0xfd, 0x3e, 0x2f, 
+0xc1, 0x0c, 0xc0, 0x43, 0x0f, 0xdd, 0xa2, 0x55, 
+0x01, 0x70, 0x06, 0xff, 0x9c, 0x86, 0xda, 0x49, 
+0xe5, 0xaf, 0x2f, 0x44, 0x8c, 0x77, 0xd3, 0xe0, 
+0x9f, 0xe0, 0xe8, 0xbf, 0xd5, 0xc0, 0xc1, 0x3f, 
+0x61, 0x01, 0xe0, 0xd8, 0xbb, 0x17, 0x82, 0xf7, 
+0xd7, 0x40, 0x42, 0xd6, 0x3e, 0x28, 0xdc, 0xb5, 
+0x0f, 0x6a, 0xdc, 0xf7, 0x43, 0x8d, 0x2b, 0xc1, 
+0x3e, 0xd8, 0xeb, 0x52, 0x0b, 0xd5, 0xce, 0x28, 
+0x00, 0x90, 0xfc, 0x2b, 0x91, 0xfc, 0x2b, 0x1c, 
+0x14, 0xb8, 0x7f, 0x45, 0xa3, 0x7f, 0x81, 0xe0, 
+0x1f, 0x33, 0xfa, 0xdf, 0x2a, 0x1d, 0xfd, 0x4b, 
+0xdc, 0xbf, 0xb2, 0xd1, 0xff, 0x7a, 0xee, 0xe8, 
+0x5f, 0xc5, 0xce, 0xbf, 0xc0, 0xe8, 0x5f, 0x57, 
+0x3b, 0xff, 0x04, 0xbd, 0x07, 0xfb, 0x18, 0xf2, 
+0xff, 0xfd, 0xf7, 0xdf, 0xe1, 0x7f, 0xff, 0xfb, 
+0x1f, 0xfc, 0xfb, 0xdf, 0xff, 0x86, 0xbf, 0xff, 
+0xfd, 0xef, 0xf0, 0xd7, 0xbf, 0xfe, 0x15, 0xbe, 
+0xfd, 0xf6, 0x5b, 0xf8, 0xea, 0xab, 0xaf, 0xe0, 
+0xe4, 0xc9, 0x93, 0x70, 0xf4, 0xe8, 0x51, 0x18, 
+0x1f, 0x1b, 0x87, 0x9c, 0xdd, 0xb9, 0x60, 0xbe, 
+0xc2, 0x4a, 0x75, 0xf0, 0x4f, 0x66, 0xf4, 0x4f, 
+0xc8, 0xdf, 0xf4, 0x5e, 0x73, 0xd8, 0x7a, 0x8f, 
+0x05, 0x7c, 0x56, 0xee, 0x4e, 0x83, 0x7f, 0x5a, 
+0x0e, 0xfe, 0x3d, 0x39, 0x46, 0xdc, 0x3f, 0xe7, 
+0xd9, 0x7f, 0x9a, 0xcb, 0xef, 0xf8, 0xf3, 0x95, 
+0x54, 0x00, 0x18, 0xd2, 0xfd, 0xa7, 0xb7, 0x67, 
+0x70, 0xdd, 0x7f, 0x78, 0xdb, 0x90, 0xce, 0x83, 
+0x7f, 0xfb, 0x86, 0xcb, 0x19, 0xf7, 0x7f, 0x6c, 
+0x34, 0xdc, 0x20, 0xee, 0x9f, 0xc5, 0x3b, 0x6f, 
+0x3f, 0xaa, 0x54, 0x04, 0x90, 0x8d, 0x80, 0xf4, 
+0x14, 0x4b, 0x86, 0x80, 0x85, 0x04, 0x40, 0x53, 
+0xbd, 0x0f, 0x5c, 0x79, 0xe5, 0xa5, 0x82, 0xbf, 
+0xd6, 0x78, 0xf3, 0x6b, 0x5a, 0x75, 0xff, 0xd3, 
+0xc3, 0xa1, 0x8c, 0xfb, 0x2f, 0x1a, 0x28, 0x5e, 
+0x96, 0xc1, 0x3f, 0xaf, 0x45, 0x14, 0xfc, 0x73, 
+0xed, 0xaa, 0x81, 0xb0, 0xda, 0xfd, 0x90, 0x9a, 
+0x79, 0x00, 0xca, 0xc3, 0xea, 0xe1, 0x80, 0xe7, 
+0x41, 0xa8, 0xf3, 0xa8, 0x87, 0xfd, 0xee, 0x07, 
+0x60, 0x9f, 0x7b, 0x1d, 0xd4, 0xba, 0x09, 0x90, 
+0xbf, 0x13, 0x92, 0xbf, 0xa3, 0x00, 0xf9, 0x73, 
+0xdc, 0xbf, 0xd0, 0xe8, 0x9f, 0xe7, 0xfe, 0xb7, 
+0x29, 0x0b, 0xfe, 0x71, 0x47, 0xff, 0x8a, 0x77, 
+0xfe, 0x09, 0xf9, 0xcb, 0xee, 0xfc, 0x87, 0xa9, 
+0xdc, 0xf9, 0x0f, 0xd2, 0x78, 0xe7, 0xdf, 0x59, 
+0xd6, 0xfd, 0xcb, 0xd4, 0xfd, 0x86, 0x9b, 0xec, 
+0x81, 0xa6, 0xc2, 0xc3, 0xf0, 0xd3, 0x77, 0x3f, 
+0xf1, 0x46, 0xff, 0xc4, 0xfd, 0xff, 0xf3, 0x9f, 
+0xff, 0x84, 0x1f, 0x7f, 0xfc, 0x11, 0xbe, 0xff, 
+0xfe, 0x7b, 0xf8, 0xfa, 0xeb, 0xaf, 0xe1, 0xd4, 
+0xa9, 0x53, 0x70, 0xec, 0xd8, 0x31, 0x98, 0x99, 
+0x99, 0x81, 0x09, 0x3c, 0x58, 0x36, 0x32, 0x32, 
+0x82, 0xed, 0x98, 0x5d, 0x10, 0xe5, 0x1a, 0x03, 
+0xc6, 0x4f, 0x98, 0x2a, 0xdc, 0xf9, 0xe7, 0x8d, 
+0xfe, 0xef, 0x63, 0xc9, 0xdf, 0x1c, 0xb6, 0xa1, 
+0x00, 0x58, 0xeb, 0xe5, 0x38, 0xc7, 0xe0, 0x9f, 
+0x9b, 0x81, 0x83, 0x7f, 0x96, 0x0b, 0x36, 0xf8, 
+0xf7, 0x61, 0xf9, 0x0e, 0x24, 0x7e, 0x67, 0xa9, 
+0xfb, 0x4f, 0x76, 0x4f, 0x59, 0x8c, 0x9c, 0xb9, 
+0x84, 0xdc, 0x7f, 0xd7, 0xd5, 0x0e, 0x95, 0x9d, 
+0xbf, 0x71, 0xdd, 0x7f, 0xd6, 0xb1, 0x69, 0x9d, 
+0x8e, 0xfe, 0xb3, 0x66, 0x87, 0xb0, 0xf2, 0xd7, 
+0x0f, 0x2b, 0x7f, 0x7d, 0xe6, 0x5d, 0xf9, 0x3b, 
+0x1f, 0xf2, 0x27, 0x98, 0x46, 0x87, 0x7f, 0xe7, 
+0x1d, 0xd7, 0xaa, 0x5c, 0xe3, 0xbb, 0xf6, 0x9a, 
+0x3f, 0x81, 0xd1, 0xe6, 0x57, 0x61, 0x67, 0xd0, 
+0x7a, 0x88, 0x8b, 0x36, 0x85, 0x5d, 0x3b, 0x37, 
+0x32, 0x17, 0x00, 0xc9, 0x7a, 0x9f, 0xa2, 0x5f, 
+0x93, 0x95, 0x6e, 0xa3, 0x35, 0xf2, 0x3f, 0x7d, 
+0x3c, 0x9e, 0x29, 0xfd, 0xe9, 0x68, 0x0f, 0xc2, 
+0xd2, 0x9f, 0x3e, 0x1a, 0xfc, 0x53, 0x23, 0xf8, 
+0xa7, 0x4d, 0xf7, 0xaf, 0x8a, 0xfc, 0x3d, 0x3b, 
+0xf6, 0x43, 0xc4, 0xde, 0x03, 0x90, 0x95, 0xd1, 
+0x00, 0x7b, 0xc3, 0x1a, 0xa1, 0xc1, 0xa7, 0x09, 
+0x0e, 0x7a, 0x37, 0x42, 0xbd, 0x57, 0x83, 0x94, 
+0xfc, 0x3d, 0x04, 0xc8, 0x1f, 0x51, 0x85, 0x02, 
+0x80, 0x1d, 0xfd, 0x33, 0xee, 0xdf, 0x5e, 0x2a, 
+0x00, 0x8a, 0xb9, 0xee, 0xdf, 0x46, 0x59, 0xf0, 
+0x8f, 0x3b, 0xfa, 0x57, 0xbe, 0xf3, 0x4f, 0xc8, 
+0x3f, 0x7e, 0x4e, 0x75, 0xbf, 0xe1, 0xfc, 0xba, 
+0xdf, 0x4f, 0x95, 0x8f, 0xfe, 0x55, 0xef, 0xfc, 
+0xbb, 0x2a, 0xdc, 0xf9, 0xcf, 0x0d, 0xcc, 0x67, 
+0x08, 0x5f, 0x28, 0xf8, 0x27, 0x3b, 0xfa, 0x3f, 
+0x73, 0xe6, 0x0c, 0x9c, 0x38, 0x71, 0x02, 0x66, 
+0x67, 0x67, 0x61, 0x12, 0xef, 0x95, 0x8c, 0x8e, 
+0x8e, 0xc2, 0xe0, 0xe0, 0x20, 0xf4, 0xf5, 0xf5, 
+0x41, 0x57, 0x57, 0x17, 0x1c, 0xa8, 0xa9, 0x07, 
+0x7f, 0xd3, 0x40, 0xd8, 0xf4, 0x90, 0xb1, 0xdc, 
+0xce, 0xbf, 0xac, 0xfb, 0xdf, 0x2a, 0x76, 0xff, 
+0xdb, 0xee, 0xb1, 0x04, 0xe3, 0x0f, 0x77, 0xc8, 
+0x8d, 0xfe, 0xdf, 0xa7, 0xc1, 0xbf, 0x39, 0x07, 
+0xff, 0x9e, 0x62, 0xce, 0xfd, 0xba, 0x4a, 0x05, 
+0x40, 0x2a, 0x39, 0xf7, 0xeb, 0x74, 0x11, 0x15, 
+0x00, 0x06, 0x75, 0xff, 0x1d, 0x25, 0x5c, 0xf7, 
+0xbf, 0xa7, 0x73, 0x58, 0xeb, 0xc1, 0x3f, 0x59, 
+0x01, 0x70, 0x70, 0x30, 0x8f, 0x71, 0xff, 0x27, 
+0x27, 0x22, 0xf4, 0x1e, 0xfc, 0x13, 0x42, 0xeb, 
+0xe1, 0x00, 0xb8, 0xfc, 0xb2, 0x8b, 0xb4, 0x7a, 
+0x03, 0x80, 0xac, 0xfe, 0xcd, 0x4c, 0xc4, 0x6a, 
+0xaf, 0xf2, 0x17, 0xb7, 0x24, 0x88, 0xfb, 0xcf, 
+0x1e, 0xaa, 0xa6, 0xc1, 0xbf, 0x05, 0x12, 0xfc, 
+0xf3, 0x6e, 0xaf, 0x83, 0xac, 0x9c, 0x26, 0x38, 
+0x10, 0xda, 0x0c, 0x87, 0xfc, 0x9b, 0xa1, 0xc9, 
+0xef, 0x30, 0x34, 0xfa, 0x1e, 0xe2, 0x93, 0xbf, 
+0x17, 0x92, 0xbf, 0xa7, 0x94, 0xfc, 0xf7, 0xb9, 
+0x29, 0x70, 0xff, 0xca, 0x46, 0xff, 0x3b, 0x64, 
+0x47, 0xff, 0x8a, 0x77, 0xfe, 0x09, 0xf9, 0x6b, 
+0xbe, 0xf3, 0x1f, 0xab, 0xf1, 0xce, 0x7f, 0x90, 
+0xca, 0x9d, 0x7f, 0x5f, 0x8d, 0x77, 0xfe, 0xd9, 
+0xd1, 0x7f, 0x96, 0x6f, 0x0e, 0xfc, 0xf1, 0x3b, 
+0x9f, 0xfc, 0xd9, 0xd1, 0x3f, 0x37, 0xf8, 0xf7, 
+0xdd, 0x77, 0xdf, 0xf1, 0x46, 0xff, 0xd3, 0xd3, 
+0xd3, 0x30, 0x3e, 0x3e, 0x0e, 0xc3, 0xc3, 0xc3, 
+0xd0, 0xdf, 0xdf, 0x0f, 0xdd, 0xdd, 0xdd, 0xd0, 
+0xde, 0xde, 0x0e, 0x47, 0x8e, 0x1c, 0x81, 0x43, 
+0x87, 0x0e, 0x41, 0x71, 0x66, 0x31, 0x38, 0x7f, 
+0xe6, 0xc6, 0x77, 0xff, 0x62, 0xf2, 0x37, 0xe1, 
+0x8c, 0xfe, 0x09, 0xf9, 0x9b, 0xdd, 0x6d, 0x09, 
+0xe6, 0xf7, 0x5a, 0xc1, 0x47, 0x5d, 0x5e, 0xf3, 
+0x22, 0x7f, 0x43, 0xac, 0xfd, 0xbd, 0xa8, 0xb6, 
+0xfb, 0xd7, 0x5f, 0xf0, 0x4f, 0x7a, 0xee, 0xd7, 
+0x59, 0x22, 0x00, 0xd6, 0xa7, 0xb8, 0xf9, 0x2f, 
+0x56, 0xde, 0x5c, 0x2a, 0xee, 0xff, 0x46, 0x87, 
+0xaa, 0xae, 0xdf, 0x59, 0xf2, 0x77, 0x2e, 0xef, 
+0x42, 0xf7, 0xaf, 0xdb, 0xe0, 0x5f, 0xee, 0x74, 
+0x2f, 0x56, 0xfe, 0x7a, 0xc3, 0x04, 0xee, 0xb1, 
+0x1b, 0x72, 0xf4, 0x2f, 0x8b, 0xfc, 0x9c, 0x1d, 
+0x4c, 0xf7, 0xbf, 0xb6, 0x04, 0xc0, 0xae, 0xd0, 
+0x4d, 0x5a, 0x23, 0x7f, 0xa6, 0xf2, 0x17, 0xc9, 
+0xbf, 0xb9, 0x2b, 0x1c, 0x09, 0xbf, 0x9f, 0x06, 
+0xff, 0xe6, 0x44, 0xfe, 0x87, 0xb5, 0x1a, 0xfc, 
+0x8b, 0xac, 0x39, 0x08, 0xcd, 0x81, 0x2d, 0x70, 
+0x38, 0xe0, 0x08, 0x8f, 0xfc, 0x1b, 0x7d, 0x0e, 
+0x09, 0xbb, 0x7f, 0x45, 0xa3, 0x7f, 0x67, 0xd9, 
+0xd1, 0xbf, 0x28, 0xf8, 0x57, 0x22, 0x13, 0xfc, 
+0xe3, 0x8e, 0xfe, 0x35, 0xdf, 0xf9, 0x4f, 0xe1, 
+0x07, 0xff, 0x04, 0x46, 0xff, 0x51, 0x32, 0x75, 
+0xbf, 0xaa, 0x77, 0xfe, 0x43, 0x34, 0xde, 0xf9, 
+0x27, 0xe4, 0xef, 0xaa, 0xa2, 0xee, 0x77, 0xcf, 
+0xb6, 0x48, 0x86, 0xec, 0x65, 0x7f, 0xb0, 0xc1, 
+0xbf, 0xe9, 0xe1, 0x19, 0xa8, 0xc9, 0xd8, 0x07, 
+0x69, 0xbe, 0x19, 0x50, 0x18, 0x59, 0x04, 0xfb, 
+0xf3, 0xeb, 0x30, 0xa7, 0x33, 0xc5, 0x1b, 0xfd, 
+0x0f, 0x0c, 0x0c, 0x40, 0x6f, 0x6f, 0x2f, 0x74, 
+0x76, 0x76, 0x42, 0x6b, 0x6b, 0x2b, 0x1c, 0x3e, 
+0x7c, 0x18, 0x1a, 0x1a, 0x1a, 0xa0, 0xae, 0x0e, 
+0xff, 0xfc, 0x6b, 0x6b, 0x21, 0xd6, 0x2f, 0x0e, 
+0x4c, 0x1f, 0x35, 0x93, 0xec, 0xfc, 0x8b, 0x46, 
+0xff, 0x22, 0xf7, 0x4f, 0x46, 0xff, 0x84, 0xfc, 
+0xcd, 0xee, 0xb6, 0x02, 0xf3, 0xbb, 0xad, 0x61, 
+0x65, 0xb2, 0xeb, 0xb2, 0x0a, 0xfe, 0x3d, 0xa7, 
+0xa3, 0xe0, 0x9f, 0xe8, 0xdc, 0xaf, 0x8b, 0x54, 
+0x00, 0xa4, 0xb8, 0xe1, 0xb9, 0x5f, 0xa7, 0x73, 
+0xa9, 0x00, 0x30, 0xac, 0xfb, 0xdf, 0x87, 0x22, 
+0x40, 0xe2, 0xfe, 0x23, 0x7b, 0x46, 0x75, 0x1a, 
+0xfc, 0x23, 0x68, 0xee, 0x4f, 0x15, 0x55, 0xfe, 
+0x4e, 0x47, 0x2f, 0x18, 0xf2, 0x67, 0x71, 0x70, 
+0xbf, 0x97, 0x60, 0x9a, 0x5f, 0x53, 0xac, 0xfa, 
+0xe2, 0x79, 0xad, 0x3e, 0xfb, 0x1f, 0xef, 0x0b, 
+0x60, 0x04, 0x40, 0x2a, 0x12, 0x12, 0x0d, 0xfe, 
+0x19, 0x3e, 0xf8, 0x17, 0xd8, 0x7c, 0x00, 0x9a, 
+0x83, 0x5a, 0xa1, 0x39, 0x00, 0x05, 0x80, 0x3f, 
+0x0a, 0x00, 0x3f, 0x05, 0xee, 0xdf, 0x93, 0xef, 
+0xfe, 0x45, 0xe4, 0xbf, 0x1f, 0xc9, 0x7f, 0x9f, 
+0x64, 0xf4, 0xcf, 0x73, 0xff, 0xf6, 0x1a, 0x04, 
+0xff, 0x78, 0xa3, 0x7f, 0xe5, 0x3b, 0xff, 0x89, 
+0x1a, 0xef, 0xfc, 0x47, 0x68, 0xbc, 0xf3, 0x4f, 
+0xc8, 0x5f, 0xf5, 0xce, 0xbf, 0xbb, 0xf2, 0x9d, 
+0x7f, 0x1c, 0xfd, 0x8f, 0xb6, 0x8d, 0x29, 0xdc, 
+0xf9, 0xaf, 0x48, 0xa8, 0x64, 0x0a, 0x7f, 0x64, 
+0x77, 0xfe, 0x2d, 0x5e, 0xb0, 0x86, 0x68, 0xc7, 
+0x18, 0xe8, 0xe9, 0xe8, 0x85, 0xa1, 0xa1, 0x21, 
+0xc9, 0xe8, 0xbf, 0xad, 0xad, 0x0d, 0x9a, 0x9b, 
+0xf1, 0xef, 0xa6, 0xa9, 0x09, 0xea, 0xeb, 0xeb, 
+0x61, 0xdf, 0x3e, 0xfc, 0x73, 0xaf, 0xc6, 0x0d, 
+0x8b, 0xf2, 0x72, 0xc8, 0x88, 0xcf, 0x60, 0x4a, 
+0x84, 0x64, 0x83, 0x7f, 0x22, 0xf7, 0x4f, 0xc8, 
+0xdf, 0x0a, 0x2c, 0xee, 0xc2, 0xb4, 0xba, 0x85, 
+0x83, 0x16, 0x47, 0xff, 0x4e, 0xcb, 0x32, 0xf8, 
+0x27, 0x3a, 0xf7, 0xeb, 0xcc, 0x71, 0xff, 0xce, 
+0xa4, 0x04, 0xc8, 0x7c, 0x31, 0x73, 0xe7, 0xe2, 
+0x77, 0xff, 0x55, 0x5d, 0x77, 0x3a, 0x54, 0x77, 
+0xfd, 0xc1, 0x0a, 0x00, 0x97, 0x8a, 0x2e, 0x9d, 
+0x07, 0xff, 0x0a, 0x27, 0xdb, 0x18, 0xf2, 0x9f, 
+0xea, 0x0d, 0x5c, 0x50, 0xee, 0x9f, 0x8b, 0xd3, 
+0xc7, 0x93, 0xc0, 0x15, 0x8f, 0x51, 0x9d, 0x7f, 
+0xfe, 0xb9, 0x73, 0x22, 0xff, 0x1d, 0xd6, 0xef, 
+0x33, 0xc7, 0x82, 0xb4, 0x45, 0xfe, 0x27, 0xa6, 
+0x45, 0x95, 0xbf, 0x07, 0xbb, 0x63, 0x69, 0xf0, 
+0x4f, 0x6b, 0xa3, 0xff, 0xa6, 0x79, 0x05, 0xff, 
+0x72, 0xb3, 0x0e, 0x89, 0xc8, 0x5f, 0xc6, 0xfd, 
+0x4b, 0xc8, 0xdf, 0x5b, 0x3a, 0xfa, 0x97, 0xb8, 
+0x7f, 0x37, 0x0d, 0x83, 0x7f, 0xbc, 0xd1, 0x3f, 
+0x27, 0xf8, 0x27, 0x30, 0xfa, 0xcf, 0x9c, 0x4b, 
+0xdd, 0xaf, 0x86, 0x3b, 0xff, 0x21, 0x2a, 0x77, 
+0xfe, 0xfd, 0x55, 0xef, 0xfc, 0x0b, 0x8c, 0xfe, 
+0xb9, 0x3b, 0xff, 0x5e, 0x9f, 0xfa, 0xca, 0x91, 
+0x3f, 0x1b, 0xfc, 0xdb, 0x97, 0xb1, 0x5f, 0x5a, 
+0xf7, 0xfb, 0xb4, 0x70, 0xdd, 0xaf, 0xd5, 0xab, 
+0xdb, 0xa1, 0x3a, 0xaf, 0x1a, 0x7a, 0x7a, 0x7a, 
+0xa0, 0xa3, 0xa3, 0x03, 0x5a, 0x5a, 0x5a, 0x98, 
+0xd1, 0xff, 0xc1, 0x83, 0x07, 0x61, 0xff, 0x7e, 
+0xfc, 0xb3, 0xaf, 0xc1, 0xac, 0x45, 0x25, 0x4e, 
+0x58, 0x4a, 0x71, 0xaa, 0x52, 0x58, 0x08, 0x3b, 
+0x6d, 0xc3, 0x38, 0xa3, 0x7f, 0xa9, 0xfb, 0x27, 
+0xe4, 0x6f, 0x8e, 0xe4, 0x6f, 0x71, 0x97, 0x0d, 
+0x6c, 0x7b, 0xd6, 0x96, 0x06, 0xff, 0xe6, 0xe9, 
+0xfe, 0x9f, 0xed, 0xdb, 0x88, 0x4d, 0x7f, 0x52, 
+0xf7, 0xbf, 0x31, 0xc9, 0x03, 0xcf, 0xfd, 0x3a, 
+0x9d, 0x45, 0x05, 0x80, 0x41, 0xf7, 0xfe, 0x3b, 
+0x8e, 0x88, 0xc8, 0x5f, 0x24, 0x00, 0x62, 0x06, 
+0x46, 0x75, 0x3a, 0xfa, 0x27, 0x68, 0xeb, 0x89, 
+0x61, 0x04, 0xc0, 0x57, 0x38, 0xd2, 0x5e, 0x88, 
+0xe4, 0xcf, 0x5d, 0xf5, 0x6b, 0x39, 0x14, 0x00, 
+0x1b, 0xd7, 0xbf, 0x0c, 0xd7, 0x5d, 0x77, 0xa5, 
+0x4a, 0xd2, 0xbf, 0xe2, 0xf2, 0x8b, 0xc1, 0xc4, 
+0xf8, 0x75, 0xa6, 0xf1, 0xef, 0x1b, 0x2d, 0x3a, 
+0x7f, 0x51, 0xe5, 0xaf, 0x2f, 0x0c, 0xa0, 0x00, 
+0x88, 0x1f, 0x6d, 0xa6, 0xc1, 0xbf, 0x05, 0x12, 
+0xfc, 0xdb, 0x1b, 0xdd, 0xcc, 0x90, 0xbf, 0xc4, 
+0xfd, 0xfb, 0x1e, 0x56, 0x3c, 0xfa, 0xf7, 0x50, 
+0x35, 0xfa, 0xe7, 0xef, 0xfc, 0x0b, 0x8d, 0xfe, 
+0x35, 0xde, 0xf9, 0x67, 0x46, 0xff, 0x69, 0x4a, 
+0xeb, 0x7e, 0x35, 0xdf, 0xf9, 0x0f, 0x55, 0xbe, 
+0xf3, 0x2f, 0x30, 0xfa, 0x57, 0xbd, 0xf3, 0xef, 
+0xc4, 0x73, 0xff, 0xc9, 0x2e, 0xa9, 0x0a, 0x47, 
+0xff, 0x3e, 0xab, 0xfd, 0x15, 0xd6, 0xfd, 0x72, 
+0x77, 0xfe, 0xc9, 0xff, 0xde, 0x5b, 0x5c, 0x23, 
+0x19, 0xfd, 0x37, 0x36, 0x36, 0xc2, 0x81, 0x03, 
+0x07, 0x98, 0xd1, 0x7f, 0x55, 0x15, 0xfe, 0x39, 
+0x97, 0xe1, 0x9f, 0x6d, 0x11, 0xfe, 0x79, 0xe6, 
+0xe7, 0x43, 0xc8, 0xf6, 0x9d, 0x72, 0xc1, 0x3f, 
+0x76, 0xf4, 0x4f, 0xc8, 0xdf, 0xf2, 0xae, 0xed, 
+0x60, 0x75, 0xe7, 0x76, 0xf8, 0xb4, 0xce, 0x5d, 
+0xfb, 0xc1, 0x3f, 0xa5, 0xee, 0x7f, 0xe9, 0x04, 
+0xff, 0x44, 0xe7, 0x7e, 0x5d, 0x79, 0xee, 0x7f, 
+0x43, 0x9a, 0xdb, 0xa7, 0x8b, 0x9d, 0x3f, 0x17, 
+0xb7, 0xfb, 0x2f, 0xeb, 0x7c, 0xc8, 0x61, 0x2f, 
+0x4b, 0xfe, 0x5d, 0x78, 0x32, 0xb4, 0x4b, 0xe7, 
+0xc1, 0xbf, 0xb2, 0xf1, 0x46, 0x86, 0xfc, 0x67, 
+0xf0, 0x7e, 0xbd, 0xb6, 0xdc, 0xff, 0xf1, 0xe9, 
+0x78, 0x68, 0x6b, 0x0e, 0x82, 0xb2, 0x22, 0x47, 
+0x48, 0x8c, 0xdd, 0x0a, 0x45, 0xd8, 0xb7, 0x4f, 
+0x02, 0x7d, 0x27, 0x66, 0xe2, 0xe6, 0x2d, 0x00, 
+0xb8, 0x2b, 0x7f, 0x07, 0xf7, 0x7b, 0x83, 0x93, 
+0xc3, 0x27, 0xf0, 0xca, 0x4b, 0x0f, 0xc0, 0xab, 
+0x2f, 0x3f, 0x00, 0x6f, 0xbf, 0xf9, 0x28, 0x7c, 
+0xf4, 0xe1, 0x53, 0xb0, 0xf2, 0xf3, 0xe7, 0x60, 
+0xcf, 0xae, 0xcd, 0x70, 0x6c, 0x2a, 0x4e, 0xeb, 
+0x8d, 0x7f, 0x04, 0xc7, 0x26, 0xf6, 0x30, 0xee, 
+0xbf, 0xa6, 0x27, 0x55, 0x67, 0xc1, 0xbf, 0xe0, 
+0x65, 0x1e, 0xfc, 0x53, 0xee, 0xfe, 0x85, 0x1b, 
+0xff, 0x2a, 0xe2, 0x0e, 0x8b, 0xc8, 0x5f, 0xcd, 
+0xe0, 0x1f, 0x77, 0xf4, 0x3f, 0xef, 0x9d, 0x7f, 
+0x66, 0xf4, 0xaf, 0x7c, 0xe7, 0x3f, 0x59, 0xe3, 
+0x9d, 0xff, 0x28, 0x8d, 0x77, 0xfe, 0xfd, 0x55, 
+0xee, 0xfc, 0x7b, 0xc9, 0xbb, 0xff, 0xd7, 0x95, 
+0xef, 0xfc, 0xe7, 0xef, 0x2c, 0x14, 0x0c, 0xfe, 
+0x7d, 0x7b, 0xe6, 0x5b, 0xd5, 0xc7, 0x7e, 0x38, 
+0x75, 0xbf, 0x56, 0xaf, 0xd9, 0x40, 0x53, 0xe3, 
+0x21, 0xde, 0xe8, 0x7f, 0xef, 0x5e, 0xdc, 0xb2, 
+0xa8, 0x40, 0x81, 0x55, 0x82, 0xa2, 0xaa, 0xa0, 
+0x00, 0xb2, 0x32, 0xb3, 0xc1, 0xf6, 0x55, 0x07, 
+0x85, 0xa3, 0x7f, 0x46, 0x00, 0xdc, 0x49, 0x04, 
+0xc0, 0x0e, 0x58, 0x1b, 0xec, 0x42, 0x83, 0x7f, 
+0x73, 0x0c, 0xfe, 0xad, 0x60, 0xce, 0xfd, 0x4a, 
+0xc9, 0x7f, 0x63, 0xa2, 0xc7, 0x57, 0x4b, 0xe1, 
+0xf1, 0xf9, 0xe2, 0x76, 0xff, 0x99, 0x1d, 0xbd, 
+0x52, 0xf7, 0xdf, 0x05, 0x71, 0xc3, 0xe3, 0x3a, 
+0x75, 0xff, 0xe9, 0x58, 0xf9, 0xdb, 0xdd, 0xb5, 
+0x4b, 0x5c, 0xf9, 0x9b, 0x38, 0x6f, 0xf2, 0xff, 
+0xea, 0x44, 0x32, 0x38, 0xd8, 0x7d, 0x04, 0x17, 
+0x5c, 0x70, 0x9e, 0x42, 0x57, 0xfe, 0xe7, 0x3f, 
+0x5f, 0x0a, 0x0f, 0x63, 0x11, 0xcf, 0xbb, 0xef, 
+0x3c, 0x06, 0xa6, 0xe8, 0xce, 0x7d, 0xbd, 0x56, 
+0x41, 0x4a, 0xa2, 0x39, 0xec, 0xdf, 0xeb, 0x8e, 
+0x57, 0xf9, 0xc2, 0x91, 0xac, 0x93, 0x35, 0xee, 
+0xfb, 0x57, 0x05, 0x6d, 0x92, 0x3f, 0x53, 0xf9, 
+0xdb, 0xe9, 0x0d, 0x7d, 0x6d, 0x5e, 0x10, 0x39, 
+0xd6, 0x41, 0x83, 0x7f, 0x12, 0xf2, 0x6f, 0x33, 
+0x58, 0xf0, 0x8f, 0x5d, 0xfb, 0xcb, 0xc8, 0x6d, 
+0x54, 0x38, 0xfa, 0x57, 0x2b, 0xf8, 0xa7, 0x72, 
+0xf4, 0x5f, 0xaa, 0xb4, 0xee, 0x37, 0x7b, 0x4e, 
+0x75, 0xbf, 0x89, 0x1a, 0xd7, 0xfd, 0x2a, 0xdf, 
+0xf9, 0x0f, 0xe4, 0xbb, 0x7f, 0x35, 0xeb, 0x7e, 
+0x15, 0xed, 0xfc, 0x93, 0xc6, 0xbf, 0x18, 0x9b, 
+0x38, 0x85, 0x75, 0xbf, 0xf6, 0x6f, 0x3a, 0x2a, 
+0x1c, 0xfd, 0xcb, 0xd6, 0xfd, 0x92, 0x9d, 0xff, 
+0x9c, 0xf8, 0x5c, 0x49, 0xf0, 0x8f, 0x1d, 0xfd, 
+0xe7, 0x65, 0xe4, 0x41, 0x4e, 0x66, 0x2e, 0xa4, 
+0x27, 0xa4, 0x83, 0xdd, 0x1b, 0x8e, 0x72, 0xa3, 
+0x7f, 0x33, 0xce, 0xe8, 0x9f, 0x25, 0x7f, 0xeb, 
+0x3b, 0x6c, 0xc1, 0x64, 0xa5, 0x23, 0x0d, 0xfe, 
+0xcd, 0x61, 0xf4, 0x4f, 0xb0, 0x36, 0xcd, 0x9d, 
+0x2f, 0x00, 0x32, 0x5c, 0x9e, 0xa7, 0x02, 0xc0, 
+0x90, 0xee, 0xbf, 0xa8, 0xf3, 0x39, 0x2e, 0xf9, 
+0xbb, 0x57, 0xf6, 0xe8, 0x3c, 0xf8, 0x57, 0x8d, 
+0xc5, 0x28, 0xc4, 0xfd, 0x1f, 0x1d, 0x09, 0xd3, 
+0x8a, 0xf3, 0xb7, 0xb1, 0x7c, 0x6f, 0xde, 0x41, 
+0x3d, 0xb2, 0xbf, 0x7f, 0xeb, 0x2d, 0x57, 0xc1, 
+0x0b, 0xcf, 0xdf, 0x0b, 0xab, 0x56, 0x3e, 0x0f, 
+0x76, 0x3b, 0x3e, 0x80, 0xf0, 0xb0, 0x4d, 0xcc, 
+0xd5, 0x3e, 0x32, 0x45, 0x38, 0x36, 0x1d, 0xa7, 
+0x11, 0xf9, 0x6b, 0x5b, 0x00, 0xcc, 0x8c, 0xee, 
+0x62, 0xdc, 0x7f, 0x59, 0x5f, 0xae, 0xde, 0x82, 
+0x7f, 0x41, 0x34, 0xf8, 0xa7, 0x56, 0xe3, 0xdf, 
+0xce, 0xfa, 0x03, 0xca, 0x83, 0x7f, 0x4a, 0x47, 
+0xff, 0x35, 0xbc, 0xba, 0x5f, 0xd9, 0x9d, 0xff, 
+0x22, 0x55, 0x3b, 0xff, 0xe6, 0xb2, 0x3b, 0xff, 
+0x99, 0x2a, 0x77, 0xfe, 0xe3, 0xe6, 0xb4, 0xf3, 
+0xbf, 0x8b, 0xbf, 0xf3, 0xaf, 0x46, 0xdd, 0xaf, 
+0x97, 0x3a, 0x75, 0xbf, 0x02, 0xc1, 0x3f, 0x42, 
+0xfe, 0xa4, 0xed, 0xcf, 0xe7, 0x0b, 0x3f, 0x85, 
+0x3b, 0xff, 0x89, 0x6e, 0x49, 0x12, 0xf2, 0x17, 
+0x74, 0xff, 0x32, 0x75, 0xbf, 0xe1, 0xf6, 0xbb, 
+0x79, 0xa3, 0x7f, 0x12, 0xfc, 0x73, 0xfd, 0xdc, 
+0x5d, 0xe1, 0xce, 0xbf, 0xec, 0xe8, 0x9f, 0x2b, 
+0x00, 0xac, 0xef, 0xb5, 0x83, 0xf7, 0x07, 0x68, 
+0xf0, 0x8f, 0x25, 0x7f, 0x75, 0xdd, 0xff, 0x2b, 
+0xcc, 0xb9, 0x5f, 0xe9, 0xb3, 0xff, 0x0d, 0x89, 
+0x9e, 0x13, 0x4b, 0x65, 0x7d, 0x7e, 0xf1, 0xba, 
+0xff, 0xec, 0x8e, 0x31, 0xae, 0x00, 0x48, 0x18, 
+0x9d, 0xd0, 0x69, 0xf0, 0x2f, 0x63, 0x76, 0x14, 
+0xfa, 0x3b, 0x83, 0xb0, 0xf2, 0xd7, 0x1b, 0xbe, 
+0xc5, 0x70, 0xdc, 0x7c, 0x05, 0x40, 0x5f, 0x67, 
+0x18, 0x9c, 0x75, 0xd6, 0x59, 0x5a, 0xdd, 0xd9, 
+0x57, 0x36, 0x45, 0x20, 0x75, 0xbe, 0xef, 0xbe, 
+0xfd, 0x18, 0xf3, 0x8c, 0xdf, 0xdb, 0x73, 0x15, 
+0x73, 0xdd, 0xaf, 0xb3, 0x35, 0x58, 0xa7, 0xe4, 
+0x7f, 0xe6, 0x44, 0x22, 0x56, 0xfe, 0x7a, 0x42, 
+0x77, 0xbb, 0x3f, 0xec, 0x19, 0xef, 0xa1, 0xc1, 
+0xbf, 0x05, 0x10, 0xfc, 0xe3, 0x0a, 0x00, 0xc7, 
+0x81, 0x7d, 0xd0, 0x10, 0xa0, 0xde, 0xe8, 0x5f, 
+0xe3, 0x9d, 0x7f, 0xc1, 0xd1, 0x7f, 0x81, 0xd2, 
+0xba, 0x5f, 0x39, 0xf7, 0x6f, 0xa4, 0x6a, 0xe7, 
+0x3f, 0x86, 0xef, 0xfe, 0xbf, 0x54, 0xbd, 0xf3, 
+0x1f, 0xa8, 0x6a, 0xe7, 0x9f, 0x90, 0xbf, 0xd8, 
+0xfd, 0x07, 0x7c, 0x11, 0x0c, 0xe5, 0x11, 0x95, 
+0xb0, 0x3f, 0xf5, 0x00, 0x24, 0x3b, 0xa4, 0x32, 
+0x13, 0x00, 0x55, 0x75, 0xbf, 0x36, 0x2b, 0x6c, 
+0xc1, 0xe6, 0x45, 0x5b, 0xf8, 0xf5, 0x97, 0x5f, 
+0x79, 0x75, 0xbf, 0xec, 0xce, 0xff, 0xf1, 0xd9, 
+0xe3, 0xd8, 0xf1, 0xef, 0xa2, 0xf6, 0xa5, 0xbf, 
+0xd4, 0xf0, 0x34, 0x26, 0xf8, 0xc7, 0x1d, 0xfd, 
+0x07, 0x60, 0x19, 0x90, 0xaa, 0xd4, 0xbf, 0xac, 
+0xfb, 0xb7, 0xb9, 0x03, 0xab, 0x88, 0x6f, 0xb7, 
+0x87, 0xcf, 0x73, 0xdd, 0x68, 0xf0, 0x4f, 0x03, 
+0xf7, 0xff, 0xd8, 0xc4, 0x6a, 0x4c, 0xfa, 0xbb, 
+0x4b, 0x05, 0x80, 0x28, 0x04, 0x78, 0x0f, 0x15, 
+0x00, 0x86, 0x74, 0xff, 0xf9, 0x9d, 0x6f, 0x72, 
+0xc9, 0xdf, 0xb3, 0xaa, 0x47, 0xe7, 0xc1, 0xbf, 
+0xfd, 0x43, 0x25, 0x8c, 0xfb, 0x3f, 0x3e, 0xb6, 
+0x5b, 0x2b, 0xee, 0x3f, 0x34, 0x78, 0x83, 0x5e, 
+0xc8, 0x5f, 0x15, 0xee, 0xbc, 0xf3, 0x5a, 0x7c, 
+0x9c, 0xe0, 0xa1, 0x81, 0x00, 0x50, 0x3f, 0xf8, 
+0x37, 0x35, 0xb4, 0x93, 0x71, 0xff, 0x05, 0x03, 
+0xa5, 0x06, 0x1b, 0xfd, 0x07, 0x1a, 0x3c, 0xf8, 
+0xd7, 0xb1, 0x20, 0x1b, 0xff, 0xd8, 0xba, 0xdf, 
+0xe2, 0xb8, 0x06, 0xcd, 0x77, 0xfe, 0x05, 0x47, 
+0xff, 0xca, 0x77, 0xfe, 0x73, 0xe7, 0xb4, 0xf3, 
+0x9f, 0xac, 0x74, 0xe7, 0x3f, 0x52, 0x66, 0xe7, 
+0x3f, 0x5c, 0x9d, 0x9d, 0x7f, 0x66, 0xf4, 0xaf, 
+0x3a, 0xf8, 0x97, 0xed, 0x9d, 0x0b, 0xff, 0xfb, 
+0xf9, 0x7f, 0xbc, 0x67, 0xf9, 0x13, 0x1d, 0x13, 
+0xe0, 0xf1, 0xbe, 0x97, 0xdc, 0xce, 0xbf, 0xc4, 
+0xfd, 0xaf, 0x10, 0x09, 0x00, 0xeb, 0x17, 0x76, 
+0xc0, 0x50, 0xcb, 0xb0, 0x24, 0xf8, 0x27, 0x5b, 
+0xf7, 0xdb, 0x7d, 0xb8, 0x1b, 0xec, 0xde, 0x72, 
+0x60, 0x82, 0x7e, 0xc6, 0x8f, 0x4b, 0x47, 0xff, 
+0x8c, 0xfb, 0x7f, 0xd8, 0x58, 0x52, 0xf7, 0xbb, 
+0xe5, 0x49, 0x0c, 0x02, 0x56, 0xd5, 0x48, 0x46, 
+0xff, 0x6c, 0xf0, 0x6f, 0xb7, 0xcb, 0x1e, 0x69, 
+0xdd, 0xaf, 0xc0, 0xce, 0x3f, 0x9f, 0xfc, 0xc5, 
+0x02, 0xe0, 0x76, 0x91, 0x00, 0xd8, 0x64, 0xe7, 
+0x42, 0x83, 0x7f, 0x1a, 0x04, 0xff, 0x44, 0xe7, 
+0x7e, 0x5d, 0x24, 0x02, 0x00, 0xdd, 0x7f, 0xdb, 
+0x52, 0xaa, 0xcf, 0x5f, 0x9c, 0xee, 0x3f, 0xa7, 
+0xf3, 0x28, 0x57, 0x00, 0x24, 0x4d, 0x4c, 0xea, 
+0x34, 0xf8, 0x97, 0x3d, 0x33, 0x88, 0x4e, 0xd6, 
+0x0f, 0xc6, 0x3a, 0x7d, 0x99, 0xe7, 0xec, 0x4b, 
+0x49, 0x00, 0xb0, 0x77, 0x02, 0x4e, 0xce, 0x26, 
+0x68, 0xd5, 0xfd, 0x9f, 0x3a, 0x26, 0xaa, 0xfc, 
+0x6d, 0xeb, 0x08, 0x81, 0x5d, 0x72, 0xa5, 0x3f, 
+0x34, 0xf8, 0x67, 0xa8, 0xe0, 0x9f, 0xac, 0x00, 
+0x88, 0x2d, 0x3d, 0xa0, 0xe6, 0xe8, 0x7f, 0x1f, 
+0xaf, 0xee, 0x57, 0xe5, 0xce, 0xbf, 0x5a, 0x75, 
+0xbf, 0xd9, 0x2a, 0xeb, 0x7e, 0x35, 0xda, 0xf9, 
+0x67, 0x46, 0xff, 0x9a, 0xed, 0xfc, 0xfb, 0x08, 
+0x04, 0xff, 0x02, 0x57, 0x06, 0x33, 0x0e, 0x5e, 
+0xe8, 0xc7, 0xc1, 0xec, 0x06, 0x85, 0xa3, 0x7f, 
+0x96, 0xfc, 0xc9, 0x5e, 0xbe, 0xf7, 0x17, 0xbe, 
+0xf0, 0xaf, 0x7f, 0xfe, 0x8b, 0x19, 0xfd, 0x73, 
+0x8f, 0xfd, 0xb0, 0x75, 0xbf, 0x23, 0x83, 0xa3, 
+0x10, 0x6a, 0xbe, 0x4b, 0x24, 0x00, 0x04, 0x46, 
+0xff, 0xa6, 0x4f, 0x9b, 0x41, 0x41, 0x6a, 0x21, 
+0x6f, 0xe7, 0xbf, 0xb8, 0xb8, 0x98, 0x49, 0xfd, 
+0xef, 0x72, 0x0a, 0x57, 0x32, 0xfa, 0xb7, 0xc6, 
+0xd1, 0xbf, 0xb0, 0xfb, 0xdf, 0x71, 0x9b, 0x03, 
+0x98, 0xe3, 0x7f, 0x37, 0x0d, 0xfe, 0xa9, 0x37, 
+0xfa, 0x7f, 0x7c, 0x7c, 0x0d, 0x1e, 0xfc, 0x71, 
+0x97, 0x0a, 0x80, 0x0c, 0x57, 0x3c, 0xf7, 0xeb, 
+0x7c, 0x03, 0x15, 0x00, 0x86, 0x74, 0xff, 0xb9, 
+0x9d, 0x9f, 0x39, 0xd4, 0x74, 0x4b, 0xc8, 0xdf, 
+0x7b, 0x6f, 0xaf, 0xce, 0xdd, 0x7f, 0xe3, 0x40, 
+0xb6, 0xa8, 0xf2, 0x77, 0x32, 0x52, 0x6b, 0x6b, 
+0x7f, 0xed, 0x47, 0x82, 0x14, 0xf6, 0xef, 0x93, 
+0x13, 0xbe, 0xc5, 0xf9, 0x76, 0x4c, 0x32, 0xdf, 
+0xd2, 0xfc, 0x1d, 0x78, 0xfb, 0xad, 0x47, 0xe1, 
+0x8e, 0xdb, 0xaf, 0xd1, 0x6a, 0xc3, 0x9f, 0x2c, 
+0xa6, 0xc7, 0x63, 0xb4, 0xea, 0xfe, 0x27, 0xfa, 
+0x83, 0x18, 0xf7, 0x9f, 0x31, 0x54, 0x4b, 0x83, 
+0x7f, 0x0b, 0x28, 0xf8, 0x27, 0x7b, 0xec, 0xc7, 
+0xbb, 0xa5, 0x56, 0x6e, 0xe7, 0x9f, 0x90, 0xbf, 
+0xd2, 0x9d, 0x7f, 0x47, 0x75, 0x76, 0xfe, 0x8b, 
+0x94, 0xee, 0xfc, 0x67, 0xcc, 0x65, 0xe7, 0x9f, 
+0x19, 0xfd, 0xc7, 0x69, 0x5c, 0xf7, 0x1b, 0xac, 
+0xb2, 0xee, 0x97, 0xef, 0xfe, 0xf3, 0xfc, 0x0b, 
+0x40, 0xd1, 0x8f, 0x6f, 0x8e, 0x7d, 0xc3, 0x90, 
+0x3f, 0xbb, 0xf3, 0x2f, 0xb9, 0xf4, 0x47, 0xdc, 
+0xff, 0x0b, 0x52, 0x01, 0x60, 0xf9, 0x9c, 0x0d, 
+0x54, 0x26, 0x54, 0x09, 0xd6, 0xfd, 0x92, 0x63, 
+0x3f, 0x6c, 0xdd, 0x6f, 0x4b, 0x43, 0x0b, 0xc4, 
+0x79, 0xc6, 0x83, 0xe7, 0x5a, 0x6f, 0xb0, 0x7b, 
+0xcf, 0x01, 0x1c, 0x3e, 0x72, 0x82, 0x70, 0x87, 
+0x3d, 0x50, 0x96, 0x5f, 0xce, 0x1b, 0xfd, 0xb3, 
+0x3b, 0xff, 0xb9, 0xb9, 0xb9, 0xe0, 0xf4, 0x81, 
+0x2b, 0x67, 0xf4, 0x2f, 0xdd, 0xf9, 0x57, 0x3c, 
+0xfa, 0x97, 0x0a, 0x00, 0xdb, 0xdb, 0x1c, 0xe1, 
+0xc3, 0x23, 0x6e, 0x34, 0xf8, 0xa7, 0x46, 0xf0, 
+0xef, 0xdd, 0x1a, 0x6b, 0xd8, 0x2c, 0x71, 0xff, 
+0x2e, 0xe8, 0xfe, 0x3d, 0x2a, 0x97, 0x12, 0xf9, 
+0x2f, 0x4e, 0x01, 0x90, 0xdf, 0xf9, 0x95, 0x44, 
+0x00, 0xe0, 0x0a, 0x60, 0xf2, 0xe4, 0xa4, 0x4e, 
+0x83, 0x7f, 0x79, 0xd3, 0xdd, 0x58, 0xf9, 0xeb, 
+0x05, 0x93, 0x3d, 0xfe, 0x5a, 0xdf, 0xf9, 0x37, 
+0xdf, 0xf6, 0xb6, 0x42, 0x42, 0x7e, 0xfe, 0xd9, 
+0x7b, 0x60, 0x76, 0x22, 0x46, 0xa6, 0xdc, 0x27, 
+0x91, 0x09, 0xf6, 0x65, 0xa6, 0x5a, 0x81, 0xa7, 
+0xdb, 0x17, 0xb0, 0xe6, 0xcb, 0x17, 0xe0, 0xa9, 
+0x27, 0xef, 0x80, 0x3f, 0xfd, 0xe9, 0x92, 0x79, 
+0x91, 0x3f, 0xb9, 0x1f, 0xa0, 0x4d, 0xf7, 0x7f, 
+0x72, 0x36, 0x86, 0x21, 0xff, 0x43, 0x5d, 0x7b, 
+0x68, 0xf0, 0x6f, 0x11, 0x9c, 0xfa, 0xad, 0x0d, 
+0x6a, 0x98, 0x43, 0xdd, 0x6f, 0x95, 0xca, 0xba, 
+0x5f, 0x6d, 0xef, 0xfc, 0x47, 0xab, 0xda, 0xf9, 
+0x5f, 0x29, 0xb4, 0xf3, 0xbf, 0x53, 0xa3, 0x9d, 
+0x7f, 0x92, 0xfa, 0xcf, 0x70, 0xcf, 0x52, 0x21, 
+0x00, 0x1c, 0xf9, 0xee, 0x7f, 0x05, 0xdf, 0xfd, 
+0x13, 0xf2, 0xb7, 0x78, 0xd6, 0x1a, 0xac, 0x5f, 
+0xda, 0x01, 0x47, 0x27, 0x8e, 0x49, 0x8e, 0xfd, 
+0x9c, 0x3e, 0x7d, 0x1a, 0x8e, 0x1f, 0x3f, 0xce, 
+0xab, 0xfb, 0x25, 0xc7, 0x7e, 0x84, 0xea, 0x7e, 
+0x85, 0x76, 0xfe, 0xf3, 0xf2, 0xf2, 0x20, 0x3d, 
+0x39, 0x1d, 0xb6, 0x3e, 0x20, 0x1d, 0xfd, 0x2b, 
+0xda, 0xf9, 0x97, 0x1d, 0xfd, 0xb3, 0xe4, 0x6f, 
+0x77, 0xab, 0x13, 0xac, 0x8e, 0x70, 0xa5, 0xc1, 
+0x3f, 0x15, 0xee, 0xff, 0x89, 0xb1, 0x35, 0x78, 
+0xe4, 0xc7, 0x5d, 0x2a, 0x00, 0xd2, 0xdc, 0xf0, 
+0xdc, 0xaf, 0xf3, 0x95, 0x54, 0x00, 0x18, 0x76, 
+0xf4, 0xbf, 0x49, 0x44, 0xfe, 0x22, 0x01, 0xe0, 
+0x5b, 0xdb, 0xa7, 0xd3, 0xe0, 0x1f, 0x41, 0x83, 
+0xd8, 0xfd, 0x9f, 0x9e, 0x89, 0xd1, 0xba, 0x00, 
+0x20, 0xae, 0xfb, 0xea, 0xab, 0xae, 0x50, 0x48, 
+0xcc, 0x8f, 0x3e, 0x7c, 0x2b, 0x4c, 0x0c, 0x47, 
+0xa8, 0xb5, 0xf3, 0xdf, 0xde, 0x12, 0xa4, 0x74, 
+0x9d, 0x50, 0x11, 0x48, 0x10, 0x31, 0xd0, 0x7f, 
+0xad, 0x56, 0xdd, 0xff, 0x18, 0x8a, 0x25, 0x22, 
+0x00, 0x92, 0x46, 0x1a, 0x69, 0xf0, 0x6f, 0x81, 
+0x05, 0xff, 0x64, 0xc9, 0x9f, 0x20, 0x23, 0xb5, 
+0x4e, 0xe9, 0xce, 0x7f, 0xb5, 0x56, 0x76, 0xfe, 
+0x73, 0xe7, 0xbf, 0xf3, 0x2f, 0x38, 0xfa, 0x8f, 
+0xd4, 0xb8, 0xee, 0x57, 0xf9, 0xce, 0xbf, 0x27, 
+0x78, 0xbd, 0xef, 0x0b, 0xff, 0xf8, 0xeb, 0x3f, 
+0x05, 0x05, 0x40, 0x75, 0x42, 0x8d, 0x24, 0xf8, 
+0xe7, 0xbb, 0x32, 0x00, 0x0e, 0x64, 0xd6, 0x43, 
+0x4b, 0x79, 0x2b, 0xb3, 0xfb, 0xef, 0xf8, 0x96, 
+0xb3, 0x88, 0xfc, 0x9f, 0xb3, 0x66, 0x04, 0x00, 
+0xd9, 0xf9, 0x77, 0xff, 0xc4, 0x13, 0x86, 0xf0, 
+0x30, 0x19, 0x3b, 0xfa, 0x27, 0xc7, 0x7e, 0xa6, 
+0xa6, 0xa6, 0x60, 0x6c, 0x6c, 0x8c, 0x57, 0xf7, 
+0xcb, 0x1e, 0xfb, 0x11, 0xaa, 0xfb, 0x65, 0x77, 
+0xfe, 0x73, 0x72, 0x72, 0xc0, 0x67, 0xb3, 0x9f, 
+0xc2, 0xe0, 0x9f, 0xc2, 0xd1, 0xff, 0xed, 0x28, 
+0x54, 0x90, 0xfc, 0x6d, 0x6f, 0x15, 0x09, 0x00, 
+0x93, 0x0d, 0x2e, 0x34, 0xf8, 0xa7, 0x22, 0xf8, 
+0x47, 0xce, 0xfd, 0x12, 0xf2, 0x67, 0x05, 0xc0, 
+0xfa, 0x24, 0xcf, 0xa4, 0xa5, 0x46, 0xfe, 0x8b, 
+0x4a, 0x00, 0x38, 0xd6, 0x76, 0x9f, 0xed, 0x50, 
+0xd8, 0xf5, 0x83, 0x44, 0x00, 0x54, 0x77, 0x41, 
+0x2a, 0xbe, 0x91, 0x74, 0x39, 0xfa, 0x4f, 0xc5, 
+0xbd, 0x7f, 0x26, 0xf9, 0x8f, 0xe7, 0x7e, 0x75, 
+0xd5, 0xf8, 0xd7, 0x54, 0xef, 0x03, 0x57, 0x5e, 
+0x79, 0xa9, 0x42, 0x82, 0xbe, 0xe7, 0xee, 0xeb, 
+0x61, 0xb0, 0x77, 0x97, 0xca, 0xc2, 0x1f, 0x2b, 
+0x8b, 0x77, 0x15, 0xfe, 0x1e, 0x1b, 0xd6, 0xbd, 
+0xc4, 0xac, 0x05, 0x06, 0x21, 0xd1, 0x1b, 0x6d, 
+0x7a, 0x15, 0x5e, 0x7a, 0xf1, 0x7e, 0x78, 0xe8, 
+0xc1, 0x9b, 0x99, 0x33, 0xc0, 0x31, 0x91, 0x26, 
+0x5a, 0x25, 0xff, 0xe3, 0x53, 0x51, 0x0c, 0xf9, 
+0xd7, 0x75, 0x27, 0xd0, 0xe0, 0xdf, 0x02, 0x0d, 
+0xfe, 0x71, 0xc9, 0x9f, 0x20, 0xb4, 0xa6, 0x96, 
+0xef, 0xfe, 0xe7, 0x5c, 0xf7, 0xab, 0x78, 0xe7, 
+0x3f, 0x6b, 0x4e, 0x3b, 0xff, 0x09, 0x3a, 0xd8, 
+0xf9, 0x0f, 0x50, 0x6b, 0xe7, 0x3f, 0xda, 0x22, 
+0x16, 0x7e, 0xfc, 0xf6, 0x47, 0x69, 0x93, 0xdf, 
+0xff, 0x7e, 0x85, 0xa6, 0xfc, 0x43, 0x4c, 0xf8, 
+0x8f, 0x90, 0x7f, 0xb8, 0x69, 0x04, 0xfc, 0xfc, 
+0xaf, 0x9f, 0x79, 0xe2, 0xe0, 0xdf, 0xff, 0xf8, 
+0x37, 0x94, 0x46, 0x95, 0x31, 0x5b, 0x00, 0x4c, 
+0xe1, 0x8f, 0xb8, 0xf1, 0xcf, 0x72, 0x85, 0x0d, 
+0xec, 0xcb, 0xdd, 0xcf, 0x1b, 0xfd, 0x93, 0x4b, 
+0x7f, 0xe4, 0xd8, 0x8f, 0x50, 0xdd, 0x2f, 0x77, 
+0xe7, 0x9f, 0x3b, 0xfa, 0xf7, 0xdf, 0x1a, 0xa8, 
+0xf6, 0xce, 0xbf, 0xd0, 0xe8, 0x9f, 0x90, 0xbf, 
+0xfd, 0xad, 0xce, 0x60, 0xfb, 0x20, 0x0a, 0x80, 
+0x51, 0x1a, 0xfc, 0x53, 0xe4, 0xfe, 0x9f, 0x1c, 
+0x59, 0x0b, 0x9b, 0xd3, 0xdc, 0xa4, 0x02, 0x20, 
+0xd5, 0x1d, 0xcf, 0xfd, 0xba, 0x5c, 0x4c, 0x05, 
+0x80, 0x21, 0x47, 0xff, 0x59, 0x9d, 0xd6, 0x0e, 
+0xb5, 0xac, 0xfb, 0x47, 0x07, 0x57, 0xd7, 0xaf, 
+0xd3, 0xe0, 0x1f, 0x53, 0xfc, 0x33, 0x3b, 0x26, 
+0xea, 0xfc, 0xef, 0x0f, 0xd4, 0xe9, 0xa9, 0xdf, 
+0x86, 0x3a, 0x6f, 0xa5, 0x63, 0xfc, 0x5b, 0x6e, 
+0xbe, 0x0a, 0xba, 0xdb, 0x42, 0x14, 0x0a, 0x80, 
+0xbe, 0xae, 0x50, 0x85, 0xee, 0x9f, 0x8c, 0xf7, 
+0xc7, 0x87, 0x22, 0xf4, 0xb2, 0xf3, 0x4f, 0x30, 
+0xd2, 0xe5, 0x03, 0xfd, 0xad, 0x1e, 0x10, 0x33, 
+0xda, 0x4a, 0x83, 0x7f, 0x06, 0x0c, 0xfe, 0xa9, 
+0x2b, 0x00, 0xb6, 0x8f, 0x54, 0x83, 0x53, 0xcf, 
+0x5e, 0x35, 0xea, 0x7e, 0xf7, 0xf2, 0xea, 0x7e, 
+0x65, 0x77, 0xfe, 0x0b, 0x55, 0xed, 0xfc, 0x0b, 
+0x8e, 0xfe, 0x95, 0xef, 0xfc, 0xc7, 0xca, 0xba, 
+0xff, 0xb5, 0xda, 0xdf, 0xf9, 0xf7, 0x54, 0xb2, 
+0xf3, 0x4f, 0x10, 0x65, 0x1e, 0x03, 0x31, 0x56, 
+0x71, 0xe0, 0xf9, 0x91, 0x0f, 0x2f, 0xf8, 0x37, 
+0xde, 0x31, 0x2e, 0x58, 0xf7, 0x4b, 0x76, 0xfe, 
+0x4f, 0x1f, 0x3d, 0x8d, 0xfb, 0xfe, 0xc9, 0x8c, 
+0x00, 0xe0, 0x16, 0xfe, 0x24, 0x78, 0x24, 0xc1, 
+0xf8, 0xd8, 0x38, 0x8c, 0x8e, 0x8e, 0xca, 0x8d, 
+0xfe, 0xc9, 0xb1, 0x1f, 0xa1, 0xba, 0x5f, 0x36, 
+0xf8, 0x17, 0x68, 0x16, 0xa4, 0x56, 0xdd, 0xaf, 
+0x44, 0x00, 0x08, 0x90, 0xbf, 0x1d, 0x92, 0xbf, 
+0xfd, 0x2d, 0xb8, 0xc2, 0x88, 0xf8, 0xb4, 0x8c, 
+0x06, 0xff, 0x14, 0xb9, 0xff, 0xcf, 0x8a, 0x1c, 
+0x24, 0xe4, 0x4f, 0xb0, 0x3e, 0xd9, 0xc3, 0x77, 
+0x29, 0x92, 0xff, 0xa2, 0x11, 0x00, 0xe8, 0xfe, 
+0xcf, 0x73, 0x2c, 0xee, 0xfa, 0xbb, 0x44, 0x00, 
+0x54, 0x75, 0x43, 0xda, 0x8c, 0xae, 0xdd, 0xbf, 
+0x08, 0x43, 0x1d, 0xbe, 0x30, 0x31, 0x8f, 0xe7, 
+0xff, 0xea, 0xf6, 0xfd, 0xd7, 0xef, 0xf3, 0x84, 
+0x3f, 0x5d, 0x71, 0xb1, 0x42, 0x11, 0x70, 0xed, 
+0x35, 0x7f, 0x82, 0x23, 0x8d, 0x7e, 0x82, 0xee, 
+0x9f, 0x54, 0xf9, 0x2a, 0xfa, 0x75, 0xee, 0x2e, 
+0x9f, 0xeb, 0x8d, 0xfc, 0x8f, 0x8e, 0x8b, 0x2a, 
+0x7f, 0xab, 0x7a, 0x33, 0x68, 0xf0, 0x6f, 0x01, 
+0x07, 0xff, 0xb8, 0xe4, 0xcf, 0xa2, 0x28, 0x7c, 
+0x3f, 0x6f, 0xf4, 0x3f, 0xff, 0x9d, 0xff, 0x7c, 
+0xa5, 0x3b, 0xff, 0xa9, 0x42, 0x3b, 0xff, 0x6a, 
+0xd5, 0xfd, 0x46, 0x6b, 0x5c, 0xf7, 0x1b, 0xa0, 
+0xb2, 0xee, 0x57, 0xf5, 0xb1, 0x1f, 0xd9, 0x9d, 
+0xff, 0xef, 0x4e, 0x7e, 0x27, 0x58, 0xf7, 0x4b, 
+0x76, 0xfe, 0x49, 0xea, 0x9f, 0x04, 0xff, 0x06, 
+0xda, 0x07, 0x21, 0x78, 0xcb, 0x4e, 0xde, 0xce, 
+0xbf, 0x2d, 0xae, 0xff, 0x25, 0x78, 0x27, 0x41, 
+0xe3, 0xbe, 0x46, 0xe8, 0xee, 0xee, 0x96, 0x1b, 
+0xfd, 0xcb, 0xee, 0xfc, 0x27, 0xee, 0x4a, 0x04, 
+0x8f, 0x55, 0x9e, 0x73, 0xda, 0xf9, 0x17, 0x8d, 
+0xfe, 0x39, 0xee, 0xff, 0x16, 0x67, 0x86, 0xfc, 
+0x1d, 0x6f, 0x76, 0x85, 0x8d, 0xee, 0xba, 0x1f, 
+0xfd, 0xbf, 0xb2, 0x08, 0x83, 0x7f, 0x4f, 0xe3, 
+0xb9, 0xdf, 0xcd, 0x99, 0x1c, 0xf7, 0x9f, 0xec, 
+0xf1, 0x1f, 0x74, 0xff, 0xe7, 0x52, 0x01, 0x60, 
+0x48, 0xf7, 0x9f, 0xd9, 0xe9, 0xee, 0x48, 0xc8, 
+0x5f, 0x2c, 0x00, 0x82, 0x1a, 0x06, 0xd4, 0x76, 
+0xff, 0x73, 0x09, 0xfe, 0x71, 0x05, 0x40, 0x6b, 
+0x6f, 0x3c, 0x33, 0x05, 0x38, 0x33, 0x87, 0xc3, 
+0x3f, 0x9a, 0x1e, 0xfb, 0xa9, 0xab, 0xf5, 0x60, 
+0x1c, 0xbb, 0x22, 0x32, 0x27, 0x8f, 0x0a, 0xc8, 
+0xf7, 0x70, 0xc9, 0xff, 0x20, 0x4e, 0x0f, 0x14, 
+0x15, 0x0a, 0x91, 0x03, 0x40, 0xc7, 0x95, 0x34, 
+0x01, 0x6a, 0xb5, 0xf2, 0xf7, 0x04, 0x56, 0xfe, 
+0x76, 0x78, 0x41, 0x5f, 0xbb, 0x37, 0x56, 0xfe, 
+0x76, 0xd2, 0xe0, 0xdf, 0x02, 0x0f, 0xfe, 0xf1, 
+0x05, 0x40, 0x15, 0xc4, 0xe6, 0xd6, 0x6a, 0x56, 
+0xf7, 0xab, 0x62, 0xe7, 0x3f, 0x47, 0xd6, 0xfd, 
+0x6f, 0x53, 0x67, 0xe7, 0x3f, 0x49, 0xe9, 0xce, 
+0x3f, 0x21, 0x7f, 0xee, 0xce, 0xff, 0x2e, 0xb5, 
+0x76, 0xfe, 0x83, 0xd4, 0x0a, 0xfe, 0xc9, 0xd6, 
+0xfd, 0x3a, 0xab, 0xa8, 0xfb, 0x25, 0xcf, 0xfd, 
+0x65, 0xeb, 0x7e, 0x85, 0x76, 0xfe, 0x4f, 0x9d, 
+0x3a, 0x05, 0x07, 0xcb, 0x1a, 0xc0, 0xe5, 0x63, 
+0x37, 0xde, 0xce, 0x3f, 0x59, 0xf9, 0x73, 0xf8, 
+0xd0, 0x19, 0xe2, 0xfd, 0x12, 0xa1, 0x38, 0xb3, 
+0x04, 0x8a, 0x32, 0x50, 0x40, 0xa5, 0xa3, 0x78, 
+0x4a, 0x45, 0xd1, 0x94, 0x94, 0x03, 0x61, 0xb6, 
+0xbb, 0xc0, 0xe6, 0x65, 0x5b, 0x6c, 0xfc, 0xdb, 
+0x26, 0xdd, 0xf9, 0x57, 0x63, 0xf4, 0xaf, 0xc8, 
+0xfd, 0x93, 0xd1, 0xbf, 0x03, 0xe3, 0xfe, 0x5d, 
+0x19, 0x01, 0x60, 0xf9, 0x8e, 0xdb, 0x82, 0x0b, 
+0xfe, 0xad, 0x30, 0x70, 0xf0, 0x8f, 0xb8, 0xff, 
+0x95, 0xb9, 0x48, 0xfc, 0xd9, 0xae, 0x12, 0x01, 
+0xb0, 0x31, 0xc5, 0xdd, 0x6c, 0xa9, 0x92, 0xff, 
+0xa2, 0x10, 0x00, 0x8e, 0xb5, 0x3d, 0x17, 0x3a, 
+0x96, 0x76, 0xfd, 0x9b, 0x15, 0x00, 0x8e, 0xe8, 
+0xfe, 0xd3, 0x67, 0xa7, 0x75, 0x1a, 0xfc, 0x4b, 
+0xe5, 0xa0, 0x70, 0xb2, 0x95, 0x11, 0x00, 0x63, 
+0x5d, 0xbe, 0xf0, 0xd5, 0xf1, 0x78, 0x9d, 0x5f, 
+0xfb, 0x23, 0x1d, 0xff, 0x97, 0x29, 0x11, 0x01, 
+0xe4, 0xdf, 0x55, 0x94, 0x3a, 0x49, 0x04, 0x00, 
+0x79, 0x9e, 0xaf, 0xe8, 0x7b, 0x23, 0xc2, 0x8d, 
+0xf4, 0xe6, 0xfe, 0x67, 0xb0, 0x1e, 0x99, 0xb8, 
+0xff, 0x92, 0xfe, 0x7c, 0x1a, 0xfc, 0x5b, 0x04, 
+0xc1, 0x3f, 0xae, 0xfb, 0xb7, 0x41, 0x01, 0xe0, 
+0xdb, 0xb0, 0x97, 0x4f, 0xfe, 0x9c, 0x9d, 0xff, 
+0x0a, 0xad, 0xec, 0xfc, 0x67, 0xa9, 0xdc, 0xf9, 
+0x27, 0xe4, 0x1f, 0xaf, 0x71, 0xdd, 0xaf, 0x8c, 
+0xfb, 0xff, 0x54, 0xf9, 0xce, 0xbf, 0xb7, 0xac, 
+0xfb, 0x57, 0x54, 0xf7, 0x2b, 0xe4, 0xfe, 0xc5, 
+0xe4, 0xef, 0xf4, 0x96, 0x2b, 0x78, 0x7d, 0xe6, 
+0x0b, 0xb3, 0x83, 0xb3, 0x82, 0x75, 0xbf, 0xb2, 
+0x3b, 0xff, 0xb3, 0xb3, 0xb3, 0x30, 0x31, 0x3e, 
+0x01, 0x05, 0xb1, 0x45, 0x60, 0xf5, 0xca, 0x76, 
+0xb9, 0x9d, 0xff, 0x8d, 0x0f, 0xe2, 0xa1, 0x99, 
+0x07, 0x8d, 0x61, 0xf3, 0x03, 0x58, 0x06, 0xf4, 
+0x80, 0x09, 0x18, 0xdd, 0x6f, 0x0a, 0xc6, 0x08, 
+0xf5, 0xea, 0x7e, 0x15, 0xef, 0xfc, 0xdb, 0x72, 
+0x82, 0x7f, 0x5c, 0xf7, 0xef, 0x74, 0x33, 0x4e, 
+0x37, 0x6e, 0xc1, 0xcb, 0x80, 0x5d, 0x34, 0xf8, 
+0xc7, 0x25, 0xff, 0x67, 0xfb, 0x37, 0x22, 0xe9, 
+0xbb, 0x49, 0x04, 0xc0, 0xa6, 0x24, 0xcf, 0x1f, 
+0xf1, 0xe7, 0xb3, 0xa8, 0x00, 0x30, 0xa4, 0xfb, 
+0xcf, 0xe8, 0x0c, 0x26, 0xe4, 0xcf, 0x0a, 0x80, 
+0x90, 0xa6, 0x41, 0x41, 0xf2, 0xcf, 0xd2, 0xf2, 
+0xe8, 0x9f, 0x8b, 0x9a, 0xe1, 0x0a, 0x18, 0xc1, 
+0x4a, 0xdb, 0x11, 0x5c, 0x07, 0x3c, 0x36, 0x1a, 
+0x0e, 0xdf, 0x9e, 0x4a, 0xd6, 0xe9, 0xa9, 0xdf, 
+0x9a, 0x4a, 0x57, 0xb8, 0xf4, 0xd2, 0x0b, 0x15, 
+0x12, 0xfb, 0x85, 0x17, 0x9e, 0x8f, 0xb7, 0xdc, 
+0xb7, 0x43, 0x5e, 0xce, 0x0e, 0x85, 0xdf, 0x73, 
+0xdf, 0xbd, 0x37, 0x32, 0xc7, 0x86, 0xe6, 0x2e, 
+0x00, 0xd4, 0x27, 0xff, 0xd3, 0x27, 0x12, 0x60, 
+0xb0, 0xdd, 0x03, 0x3a, 0xdb, 0x03, 0x20, 0x7c, 
+0xa2, 0x97, 0x06, 0xff, 0x16, 0x41, 0xf0, 0x8f, 
+0xeb, 0xfe, 0x89, 0x00, 0xd8, 0x31, 0x54, 0x09, 
+0xd5, 0x5e, 0x1a, 0x8e, 0xfe, 0x77, 0xc8, 0x8e, 
+0xfe, 0x0b, 0x95, 0xd6, 0xfd, 0x6a, 0xbe, 0xf3, 
+0x1f, 0xab, 0xf1, 0xce, 0x7f, 0x90, 0xca, 0x9d, 
+0x7f, 0x5f, 0x85, 0xee, 0xdf, 0xff, 0xf3, 0x20, 
+0x28, 0xde, 0x55, 0x0a, 0xc5, 0x61, 0x25, 0x10, 
+0xf8, 0x65, 0xb0, 0xe0, 0xe8, 0xbf, 0x36, 0x75, 
+0xbf, 0xe8, 0x79, 0x3f, 0x16, 0x05, 0x75, 0xee, 
+0xeb, 0x82, 0x8a, 0xd8, 0x4a, 0xf8, 0xf1, 0xfb, 
+0x1f, 0x25, 0xc7, 0x7e, 0x64, 0x77, 0xfe, 0x49, 
+0xea, 0x9f, 0x1b, 0xfc, 0xeb, 0xee, 0xec, 0x86, 
+0x38, 0xef, 0x04, 0xd8, 0xf2, 0xf4, 0x56, 0x49, 
+0xdd, 0xef, 0x46, 0x24, 0x7f, 0x56, 0x00, 0x18, 
+0xa1, 0x00, 0x60, 0xc9, 0x9f, 0x71, 0xff, 0x72, 
+0xa3, 0x7f, 0xcd, 0x76, 0xfe, 0xb9, 0xee, 0x9f, 
+0x90, 0xbf, 0x23, 0x21, 0xff, 0x9b, 0x70, 0xca, 
+0x71, 0x93, 0x07, 0xac, 0x4a, 0x74, 0xa5, 0xc1, 
+0x3f, 0x8e, 0x00, 0x58, 0x9d, 0x29, 0x26, 0x7f, 
+0xb1, 0x00, 0xd8, 0x98, 0xe6, 0xfe, 0xf1, 0x52, 
+0x26, 0xff, 0x05, 0x2f, 0x00, 0xd0, 0xfd, 0x5f, 
+0xea, 0x58, 0xde, 0xfd, 0x5f, 0x56, 0x00, 0x10, 
+0xf7, 0x9f, 0xa1, 0xcc, 0xfd, 0x1f, 0xd3, 0xae, 
+0xfb, 0x27, 0x48, 0x11, 0xa3, 0x64, 0xbc, 0x01, 
+0x7a, 0xbb, 0x82, 0x45, 0xd3, 0x00, 0xdc, 0x0a, 
+0x38, 0xa1, 0xa2, 0x14, 0x68, 0xae, 0xe4, 0xcf, 
+0xa2, 0xba, 0xdc, 0x05, 0x2e, 0xb9, 0xe4, 0x02, 
+0xc5, 0x47, 0x80, 0xce, 0x3d, 0x87, 0x19, 0xf1, 
+0x2b, 0xfa, 0xf7, 0x79, 0x28, 0x10, 0xf4, 0xe5, 
+0xfe, 0xa7, 0x86, 0x42, 0x18, 0xf7, 0x9f, 0x3b, 
+0x58, 0xb1, 0xac, 0x83, 0x7f, 0x9e, 0x8b, 0x28, 
+0xf8, 0xc7, 0x75, 0xff, 0x22, 0x54, 0x42, 0x46, 
+0x4c, 0x8d, 0x82, 0x9d, 0xff, 0x4a, 0x95, 0x3b, 
+0xff, 0x84, 0xfc, 0xf3, 0x34, 0xae, 0xfb, 0x95, 
+0x09, 0xfe, 0x09, 0x8c, 0xfe, 0xa3, 0x64, 0xea, 
+0x7e, 0x77, 0xab, 0x53, 0xf7, 0xab, 0xc1, 0xce, 
+0x3f, 0x21, 0x7f, 0xe2, 0xfe, 0x53, 0x9c, 0xd2, 
+0x98, 0xa4, 0x3f, 0x77, 0xac, 0x3f, 0x74, 0x78, 
+0x08, 0x82, 0xd6, 0x86, 0x48, 0x46, 0xff, 0x87, 
+0x8b, 0x8f, 0xc8, 0x05, 0xff, 0x5a, 0x2a, 0x5b, 
+0xc1, 0xfe, 0x0d, 0x27, 0xd8, 0x9b, 0x5a, 0x03, 
+0xdf, 0x7f, 0xf7, 0x3d, 0x33, 0xfa, 0x57, 0xb4, 
+0xf3, 0x4f, 0x52, 0xff, 0x6c, 0xf0, 0xef, 0xe0, 
+0xfe, 0x83, 0x10, 0x64, 0x11, 0xc2, 0x54, 0xff, 
+0x72, 0xc9, 0x5f, 0xe4, 0xfe, 0xc5, 0xe4, 0xcf, 
+0x71, 0xff, 0x8a, 0xeb, 0x7e, 0x95, 0xef, 0xfc, 
+0x4b, 0x83, 0x7f, 0xae, 0x12, 0xf7, 0xef, 0x8c, 
+0x02, 0xc0, 0x05, 0x05, 0x80, 0xe9, 0x56, 0x77, 
+0x1a, 0xfc, 0x13, 0x93, 0xff, 0x8a, 0x2e, 0x23, 
+0x29, 0xf9, 0x23, 0x36, 0x25, 0x7a, 0x9e, 0x59, 
+0xea, 0xe4, 0xbf, 0xe0, 0x05, 0x00, 0xba, 0xff, 
+0x18, 0x14, 0x01, 0xc0, 0x0a, 0x80, 0xd0, 0x23, 
+0x43, 0x7a, 0x09, 0xfe, 0xc9, 0x92, 0x7f, 0x0a, 
+0xae, 0x03, 0x12, 0xa4, 0xe1, 0x41, 0xa0, 0xda, 
+0xa1, 0x52, 0x18, 0xc4, 0x60, 0x20, 0x11, 0x02, 
+0x24, 0x1c, 0x78, 0x7a, 0x26, 0x56, 0xab, 0xee, 
+0x9f, 0x0b, 0x32, 0xea, 0xbf, 0xf8, 0xe2, 0x0b, 
+0x34, 0xde, 0xed, 0x27, 0x97, 0x01, 0xf5, 0x45, 
+0xfe, 0xa7, 0x30, 0x1b, 0x41, 0x2a, 0x7f, 0x5b, 
+0x3a, 0x42, 0xb1, 0xf2, 0x97, 0x06, 0xff, 0x34, 
+0x09, 0xfe, 0xb9, 0x1a, 0x38, 0xf8, 0xb7, 0x9d, 
+0x43, 0xfe, 0x04, 0x61, 0xa5, 0xd5, 0x92, 0xd1, 
+0x7f, 0x95, 0x3a, 0x75, 0xbf, 0xdb, 0x55, 0x8d, 
+0xfe, 0x73, 0xf8, 0x75, 0xbf, 0xa6, 0xfc, 0xd1, 
+0xbf, 0xe6, 0x3b, 0xff, 0x11, 0x1a, 0xef, 0xfc, 
+0x13, 0xf2, 0x57, 0xb6, 0xf3, 0x4f, 0xc8, 0x9f, 
+0x88, 0x80, 0xbf, 0x7f, 0xff, 0x77, 0xc1, 0xbd, 
+0xff, 0xdf, 0x7e, 0xfd, 0x0d, 0x0e, 0x17, 0x35, 
+0x43, 0xba, 0x67, 0xa6, 0xfc, 0xbf, 0xc3, 0xd1, 
+0xff, 0x64, 0xdf, 0x24, 0x98, 0x3f, 0x6b, 0xc5, 
+0xac, 0xfd, 0xb9, 0x7c, 0xe0, 0x0e, 0xf5, 0x85, 
+0x07, 0xe1, 0xcc, 0x69, 0xe9, 0xe8, 0x5f, 0x68, 
+0xe7, 0xbf, 0xad, 0xad, 0x8d, 0x49, 0xfd, 0x93, 
+0xe0, 0x5f, 0x69, 0x6e, 0x29, 0xb8, 0x7f, 0xe9, 
+0x29, 0x1e, 0xfd, 0x9b, 0xc8, 0x8d, 0xfe, 0xe7, 
+0xbb, 0xf3, 0x2f, 0x3b, 0xfa, 0x77, 0x16, 0xbb, 
+0x7f, 0x97, 0x1b, 0x3d, 0xc1, 0xfe, 0x71, 0x4f, 
+0x1a, 0xfc, 0x13, 0x0b, 0x80, 0x75, 0x69, 0x1e, 
+0x7c, 0x01, 0x90, 0xee, 0xf6, 0x3c, 0x15, 0x00, 
+0x86, 0x75, 0xff, 0x57, 0x3a, 0x56, 0x74, 0xff, 
+0xc2, 0x0a, 0x00, 0xe7, 0xca, 0x6e, 0xc8, 0x3c, 
+0x3a, 0xad, 0x97, 0xe0, 0x9f, 0x22, 0x01, 0x90, 
+0x3c, 0x2b, 0x42, 0xc6, 0xf4, 0x00, 0x1c, 0x1c, 
+0xc8, 0x82, 0x61, 0x14, 0x01, 0x44, 0x08, 0x4c, 
+0x0f, 0x04, 0xc3, 0x57, 0xc7, 0x12, 0xb4, 0x4a, 
+0xfe, 0x2c, 0xca, 0x8b, 0x1d, 0xe1, 0xa2, 0x8b, 
+0xce, 0xd7, 0xa8, 0xd8, 0xe7, 0x40, 0xad, 0xa7, 
+0xde, 0x04, 0xc0, 0x04, 0xae, 0x48, 0x12, 0xf7, 
+0x9f, 0x36, 0xb4, 0x9f, 0x47, 0xfe, 0x61, 0x34, 
+0xf8, 0xa7, 0xf5, 0xe0, 0x9f, 0xa3, 0x96, 0x83, 
+0x7f, 0x5c, 0xf2, 0xb7, 0x46, 0x38, 0xb7, 0x57, 
+0x6a, 0xb0, 0xf3, 0x5f, 0xcc, 0x0f, 0xfe, 0x09, 
+0x8c, 0xfe, 0x33, 0xe7, 0x52, 0xf7, 0xab, 0xc1, 
+0xce, 0x3f, 0x21, 0x7f, 0xd5, 0x3b, 0xff, 0xfe, 
+0x2a, 0x77, 0xfe, 0xc3, 0x36, 0x85, 0x83, 0xa6, 
+0x3f, 0xd8, 0xe0, 0x5f, 0x55, 0x52, 0x35, 0x6f, 
+0xe7, 0x9f, 0xac, 0xfd, 0x79, 0xad, 0xf2, 0x81, 
+0xa6, 0xaa, 0x43, 0xbc, 0xd1, 0x7f, 0x7f, 0x7f, 
+0xbf, 0xe0, 0xce, 0x3f, 0x49, 0xfd, 0x93, 0x9d, 
+0xff, 0xe4, 0x5d, 0x29, 0x60, 0xf6, 0x94, 0x25, 
+0x6c, 0xb9, 0x5f, 0x76, 0xf4, 0x6f, 0xce, 0xab, 
+0xfb, 0x35, 0x9f, 0xc3, 0xe8, 0x5f, 0xe4, 0xfe, 
+0xa5, 0xa3, 0x7f, 0x97, 0x1b, 0x31, 0xef, 0x80, 
+0x02, 0xc0, 0xed, 0x06, 0x2f, 0xf8, 0xa8, 0xce, 
+0x79, 0xd9, 0x07, 0xff, 0xc8, 0xb9, 0x5f, 0x2e, 
+0xf9, 0x6f, 0x4c, 0xf4, 0x1a, 0x5f, 0x0e, 0xe4, 
+0xbf, 0xa0, 0x05, 0x00, 0xba, 0xff, 0x2c, 0x11, 
+0xf9, 0x8b, 0x04, 0x40, 0x78, 0xfb, 0x88, 0xde, 
+0x82, 0x7f, 0x42, 0xe4, 0x9f, 0x32, 0x2b, 0x15, 
+0x00, 0x2c, 0xb2, 0x27, 0x3b, 0xe1, 0x08, 0xb3, 
+0x25, 0xe0, 0xc1, 0x64, 0x04, 0x66, 0x87, 0xc3, 
+0xe0, 0x9b, 0x93, 0x49, 0x5a, 0x15, 0x00, 0x04, 
+0x25, 0x05, 0xf6, 0xcc, 0x73, 0x7f, 0x75, 0x04, 
+0xc0, 0xa7, 0x1f, 0x3f, 0xad, 0x37, 0xf2, 0x3f, 
+0x31, 0x13, 0xcd, 0x90, 0x7f, 0x43, 0x57, 0x24, 
+0x0d, 0xfe, 0x2d, 0xc2, 0xe0, 0x1f, 0x2b, 0x00, 
+0xac, 0x19, 0x54, 0x30, 0x28, 0xf4, 0xaf, 0x16, 
+0x93, 0x7f, 0x35, 0xaf, 0xee, 0xb7, 0x54, 0x60, 
+0xf4, 0xaf, 0xd9, 0xce, 0x7f, 0xba, 0xca, 0x9d, 
+0xff, 0x18, 0x8d, 0x77, 0xfe, 0xc3, 0x54, 0xef, 
+0xfc, 0x0b, 0x8c, 0xfe, 0x65, 0x83, 0x7f, 0x9e, 
+0xef, 0x7b, 0xc3, 0x7f, 0xfe, 0xf1, 0x1f, 0x8d, 
+0x04, 0x00, 0xd9, 0xf9, 0x27, 0xc7, 0x7e, 0xbc, 
+0x56, 0xfa, 0xf2, 0xc8, 0x5f, 0xb2, 0xf2, 0x87, 
+0x97, 0xfe, 0x02, 0x8d, 0x83, 0xa1, 0xb9, 0xae, 
+0x59, 0xb0, 0xee, 0x57, 0x68, 0xe7, 0x3f, 0x35, 
+0x2a, 0x15, 0x4c, 0xee, 0xdf, 0xa6, 0x46, 0xf0, 
+0x6f, 0x7e, 0xa3, 0x7f, 0xe2, 0xfe, 0x5d, 0x6f, 
+0x44, 0x01, 0x74, 0x83, 0x37, 0x6c, 0x08, 0x74, 
+0x5b, 0x54, 0xc1, 0xbf, 0x67, 0xb5, 0x1c, 0xfc, 
+0x23, 0xd8, 0x90, 0xca, 0x71, 0xff, 0xa2, 0x10, 
+0xe0, 0xbd, 0x54, 0x00, 0x18, 0xd6, 0xfd, 0x5f, 
+0x8d, 0xcf, 0xfb, 0x7f, 0x63, 0x05, 0x00, 0x71, 
+0xff, 0x59, 0xc7, 0xf4, 0x1b, 0xfc, 0x53, 0xe4, 
+0xfe, 0x59, 0x24, 0x71, 0x50, 0x34, 0xd6, 0x08, 
+0x9d, 0x5d, 0xbb, 0x70, 0x22, 0x80, 0x42, 0xa0, 
+0xc3, 0x1b, 0x8e, 0x8d, 0xef, 0xc6, 0xa0, 0x60, 
+0x8a, 0x56, 0xc8, 0x9f, 0xdd, 0xf9, 0x27, 0x4d, 
+0x7e, 0xea, 0x54, 0xfd, 0xb6, 0x34, 0x05, 0xe8, 
+0x25, 0xf8, 0x47, 0x30, 0xda, 0xed, 0x07, 0x03, 
+0x58, 0xfa, 0x93, 0x38, 0xd2, 0x34, 0xef, 0xb5, 
+0x3f, 0x9d, 0x06, 0xff, 0x46, 0x69, 0xf0, 0x4f, 
+0xb9, 0xfb, 0xaf, 0x10, 0xa3, 0x1c, 0x62, 0x53, 
+0xaa, 0xe6, 0x51, 0xf7, 0x9b, 0xa7, 0xb4, 0xee, 
+0x57, 0xf3, 0x9d, 0xff, 0x28, 0x8d, 0x77, 0xfe, 
+0xfd, 0x55, 0xee, 0xfc, 0x7b, 0x09, 0xee, 0xfc, 
+0xe7, 0xf8, 0xe5, 0x31, 0xe3, 0x7e, 0x75, 0x7e, 
+0xb0, 0x3b, 0xff, 0x87, 0xcb, 0x9b, 0x45, 0xee, 
+0xff, 0x69, 0x14, 0x00, 0x4f, 0xc9, 0x08, 0x00, 
+0xdc, 0xf9, 0x37, 0x7e, 0xcc, 0x94, 0x59, 0xfd, 
+0x0b, 0xb3, 0x09, 0x87, 0x43, 0x07, 0x0f, 0x0b, 
+0xd6, 0xfd, 0x72, 0x77, 0xfe, 0x49, 0xdd, 0xaf, 
+0xc3, 0xdb, 0x4e, 0xf3, 0xd8, 0xf9, 0x77, 0x14, 
+0xdc, 0xf9, 0xe7, 0xbb, 0x7f, 0x4f, 0x89, 0xfb, 
+0x77, 0x47, 0x01, 0x60, 0x85, 0x55, 0xc5, 0x4b, 
+0x39, 0xf8, 0xa7, 0xca, 0xfd, 0xbf, 0xd1, 0x60, 
+0xce, 0x77, 0xff, 0x49, 0x5e, 0xad, 0xcb, 0x85, 
+0xfc, 0x17, 0xac, 0x00, 0x70, 0x48, 0xef, 0x2c, 
+0x93, 0xba, 0xff, 0x1e, 0xd8, 0xd3, 0x35, 0x62, 
+0x90, 0xe0, 0x9f, 0x32, 0xf7, 0x2f, 0x15, 0x00, 
+0xe3, 0x0c, 0x92, 0xb1, 0x35, 0xb0, 0x12, 0x3f, 
+0x54, 0xfb, 0x3b, 0x03, 0x18, 0x21, 0x40, 0xd6, 
+0x06, 0x4f, 0x62, 0x2d, 0xee, 0x7c, 0xc9, 0x9f, 
+0x5b, 0xfa, 0x43, 0x52, 0xff, 0xe7, 0x9f, 0x7f, 
+0xae, 0x52, 0x01, 0xf0, 0x32, 0xae, 0x05, 0x1e, 
+0x9d, 0x8c, 0xd5, 0xb9, 0xfb, 0x3f, 0x3e, 0x19, 
+0xc1, 0xb8, 0xff, 0x7d, 0x3d, 0x49, 0xcb, 0xce, 
+0xfd, 0x2f, 0xa5, 0xe0, 0x1f, 0xd7, 0xfd, 0x5b, 
+0xa1, 0x00, 0xf0, 0xdb, 0x57, 0x21, 0x3c, 0xfa, 
+0x57, 0xb1, 0xf3, 0x9f, 0x3d, 0xa7, 0x9d, 0xff, 
+0x44, 0xa5, 0x3b, 0xff, 0x42, 0xa3, 0xff, 0x30, 
+0xb5, 0xea, 0x7e, 0x03, 0xd5, 0xaa, 0xfb, 0x95, 
+0xdd, 0xf9, 0x8f, 0x32, 0x8b, 0x86, 0x53, 0x13, 
+0xa7, 0xd4, 0x1a, 0xfd, 0x93, 0xd4, 0x3f, 0xd9, 
+0xf9, 0x6f, 0xaf, 0xc3, 0xd7, 0xc1, 0x17, 0xde, 
+0x82, 0xe4, 0xcf, 0xdd, 0xf9, 0x37, 0x7e, 0xd2, 
+0x14, 0x22, 0x9c, 0xa3, 0xa0, 0xbe, 0xae, 0x9e, 
+0x39, 0xf6, 0x23, 0x54, 0xf7, 0x4b, 0x8e, 0xfd, 
+0x38, 0xbe, 0xeb, 0xac, 0x51, 0xdd, 0xaf, 0x8d, 
+0x3a, 0xa3, 0x7f, 0xd6, 0xfd, 0x8b, 0x47, 0xff, 
+0xae, 0x37, 0x88, 0xdc, 0xbf, 0xfb, 0xf5, 0x3e, 
+0xe0, 0x76, 0x9b, 0x2f, 0xbc, 0x3d, 0xb8, 0x58, 
+0x83, 0x7f, 0x9b, 0xe7, 0x15, 0xfc, 0x13, 0x9d, 
+0xfb, 0xf5, 0x94, 0x90, 0xbf, 0x51, 0x26, 0xbe, 
+0x1e, 0x32, 0x82, 0x1e, 0xa2, 0x02, 0xc0, 0xb0, 
+0xee, 0xff, 0x26, 0xc7, 0xea, 0x9e, 0x3f, 0x58, 
+0xf2, 0x77, 0xa9, 0xec, 0x11, 0x74, 0xff, 0xfa, 
+0x0a, 0xfe, 0x29, 0x77, 0xff, 0xe3, 0x12, 0x24, 
+0x8a, 0x91, 0x32, 0x33, 0x04, 0xfb, 0x06, 0x0a, 
+0x60, 0x08, 0x0b, 0x71, 0x88, 0x10, 0x98, 0xec, 
+0x0d, 0xc0, 0x6a, 0xd0, 0xd8, 0x79, 0x93, 0x3f, 
+0x8b, 0x9c, 0x4c, 0x1b, 0x85, 0x67, 0x84, 0x59, 
+0x3c, 0xf1, 0xf8, 0xed, 0x30, 0x39, 0x12, 0xa5, 
+0x33, 0xf2, 0xff, 0x0a, 0x1f, 0x73, 0x0c, 0x77, 
+0x79, 0x43, 0x3f, 0xe6, 0x1f, 0xa2, 0xc7, 0xda, 
+0x68, 0xf0, 0x6f, 0x11, 0x07, 0xff, 0xb8, 0xee, 
+0x9f, 0x08, 0x80, 0x1d, 0xfd, 0x65, 0x50, 0xe6, 
+0xc4, 0x0f, 0xfe, 0x15, 0xab, 0xb3, 0xf3, 0x6f, 
+0x2e, 0xbb, 0xf3, 0x9f, 0xa9, 0x72, 0xe7, 0x3f, 
+0x4e, 0xe3, 0x9d, 0xff, 0x70, 0xf9, 0x9d, 0x7f, 
+0x35, 0xea, 0x7e, 0x35, 0xd9, 0xf9, 0x27, 0xc8, 
+0xf1, 0xcf, 0x83, 0xbf, 0x7d, 0xf3, 0x37, 0xe1, 
+0x50, 0xa0, 0xcc, 0xce, 0x3f, 0xb9, 0xf4, 0xf7, 
+0xd5, 0x57, 0x5f, 0x43, 0x75, 0xc6, 0x5e, 0xb0, 
+0x7d, 0xd3, 0x81, 0x2f, 0x00, 0x1e, 0x35, 0x91, 
+0xdb, 0xf9, 0xdf, 0xf6, 0x9c, 0x39, 0xc4, 0xfa, 
+0xc4, 0x41, 0xcd, 0xde, 0x1a, 0x66, 0xf4, 0x4f, 
+0x8e, 0xfd, 0xb0, 0x75, 0xbf, 0x49, 0x51, 0xc9, 
+0xb0, 0xf5, 0x7e, 0x73, 0xa5, 0xa3, 0x7f, 0x4b, 
+0x95, 0x75, 0xbf, 0xca, 0x83, 0x7f, 0xec, 0xe8, 
+0x9f, 0xb8, 0x7f, 0x0f, 0x14, 0x00, 0x9e, 0xd7, 
+0xfb, 0xc2, 0xe7, 0x39, 0x2e, 0xcb, 0x24, 0xf8, 
+0xc7, 0x17, 0x00, 0xef, 0xd6, 0xda, 0x20, 0xf1, 
+0x4b, 0x57, 0xff, 0x5c, 0xe2, 0x77, 0x41, 0x6a, 
+0x6a, 0xea, 0xdf, 0x52, 0x52, 0x52, 0xb6, 0x21, 
+0xce, 0xa6, 0x02, 0xc0, 0x30, 0xcf, 0xfe, 0xeb, 
+0xb8, 0xee, 0x3f, 0xaa, 0x77, 0x6c, 0x41, 0x04, 
+0xff, 0x94, 0x09, 0x80, 0x44, 0x59, 0xcc, 0x8c, 
+0x43, 0xc6, 0x64, 0x0f, 0x34, 0xf5, 0x25, 0x33, 
+0x41, 0x41, 0x22, 0x04, 0xa6, 0x07, 0x43, 0xe0, 
+0xeb, 0x13, 0x89, 0xf3, 0x22, 0x7f, 0x16, 0x59, 
+0x69, 0xd6, 0xcc, 0x1a, 0xa0, 0x32, 0x11, 0x70, 
+0xef, 0x3d, 0x37, 0x48, 0x6e, 0x00, 0x68, 0x5b, 
+0x00, 0xcc, 0x8e, 0x85, 0x33, 0xee, 0xbf, 0xb2, 
+0x2f, 0x6b, 0xc9, 0x07, 0xff, 0xbc, 0x97, 0x64, 
+0xf0, 0x4f, 0xd8, 0xfd, 0x8b, 0x50, 0x06, 0xe9, 
+0x61, 0x15, 0x6a, 0xec, 0xfc, 0x17, 0x28, 0xdd, 
+0xf9, 0x4f, 0x9b, 0xd3, 0xce, 0x7f, 0x0c, 0xdf, 
+0xfd, 0x7f, 0xa9, 0x7a, 0xe7, 0x3f, 0x50, 0xd5, 
+0xce, 0x3f, 0x21, 0x7f, 0x21, 0xf7, 0xaf, 0xa2, 
+0xee, 0x37, 0x60, 0x4d, 0x30, 0x33, 0xea, 0x57, 
+0x54, 0xf7, 0x2b, 0xb4, 0xf3, 0x3f, 0x39, 0x8e, 
+0xf7, 0x43, 0x82, 0x33, 0xc1, 0xec, 0x39, 0x0b, 
+0x11, 0xf9, 0x3f, 0x2a, 0x53, 0xf8, 0xc3, 0xd9, 
+0xf9, 0xb7, 0x7e, 0x65, 0x07, 0x44, 0x79, 0x46, 
+0xe3, 0xa3, 0x3d, 0xfc, 0xb3, 0xcc, 0xcd, 0x83, 
+0x28, 0xdf, 0x68, 0xb0, 0x7c, 0x66, 0xbb, 0xc6, 
+0xa3, 0x7f, 0x75, 0x77, 0xfe, 0xb9, 0xc1, 0x3f, 
+0xd6, 0xfd, 0x7b, 0x20, 0xf9, 0x7b, 0x5e, 0xe7, 
+0x07, 0x26, 0xdb, 0x3d, 0x96, 0x40, 0xf0, 0x4f, 
+0x33, 0xf7, 0xcf, 0x9c, 0xfb, 0x4d, 0xf3, 0x94, 
+0x08, 0x00, 0xe3, 0x74, 0xec, 0x31, 0xe9, 0xc3, 
+0xa0, 0x79, 0x66, 0xe6, 0x1f, 0x48, 0xfe, 0x80, 
+0xe8, 0x41, 0x3c, 0x43, 0x05, 0x80, 0x3e, 0xdd, 
+0x7f, 0x45, 0xcf, 0xdd, 0x8e, 0x7b, 0xa5, 0xee, 
+0xdf, 0xb5, 0xb2, 0x77, 0xc1, 0x05, 0xff, 0x94, 
+0xb9, 0x7f, 0x96, 0xfc, 0x13, 0x24, 0x18, 0x83, 
+0xdc, 0xf1, 0x23, 0xd0, 0xda, 0x1d, 0xc1, 0x88, 
+0x80, 0x61, 0x2c, 0x12, 0x9a, 0x1d, 0xd9, 0x85, 
+0x41, 0xc1, 0xe4, 0x79, 0x09, 0x00, 0x42, 0xea, 
+0xe9, 0x29, 0x96, 0x2a, 0x45, 0xc0, 0x17, 0x9f, 
+0x3d, 0xab, 0x75, 0xf2, 0x3f, 0x83, 0x95, 0xbf, 
+0x43, 0xf8, 0xff, 0x8f, 0x9e, 0x76, 0x5f, 0xd8, 
+0x33, 0xde, 0x45, 0x83, 0x7f, 0x4b, 0x20, 0xf8, 
+0x67, 0xcd, 0x21, 0x7f, 0x82, 0xb0, 0xdc, 0x32, 
+0x95, 0x3b, 0xff, 0xb9, 0x1a, 0xef, 0xfc, 0xa7, 
+0xa8, 0xdc, 0xf9, 0x8f, 0x94, 0xd9, 0xf9, 0x0f, 
+0x57, 0x67, 0xe7, 0x9f, 0x19, 0xfd, 0x07, 0x6b, 
+0x54, 0xf7, 0xcb, 0x73, 0xff, 0x6c, 0xdd, 0xef, 
+0xab, 0xfc, 0xba, 0xdf, 0xf6, 0xbd, 0x9d, 0x72, 
+0xa3, 0x7f, 0x12, 0xfc, 0x13, 0xaa, 0xfb, 0x95, 
+0xdd, 0xf9, 0xef, 0x6a, 0xed, 0x82, 0xdd, 0xb6, 
+0x7b, 0x98, 0x29, 0x00, 0xd9, 0xf3, 0x27, 0xc4, 
+0x2f, 0xdb, 0xf8, 0x27, 0xbf, 0xf3, 0x6f, 0xa6, 
+0xc6, 0xce, 0xff, 0x0e, 0xa5, 0xc1, 0x3f, 0x7b, 
+0x25, 0xc1, 0x3f, 0xde, 0xe8, 0xff, 0x06, 0x29, 
+0xf9, 0x7b, 0x21, 0x1c, 0x9e, 0xf7, 0x31, 0x40, 
+0xf0, 0x6f, 0x9b, 0x41, 0x83, 0x7f, 0x1f, 0x56, 
+0xd8, 0x89, 0xc9, 0x5f, 0x24, 0x00, 0x62, 0x2b, 
+0xf3, 0x98, 0xbf, 0x67, 0xf2, 0x68, 0x87, 0x6c, 
+0x68, 0x88, 0x45, 0x00, 0x11, 0x03, 0xa9, 0x88, 
+0xab, 0xa8, 0x00, 0xd0, 0x4b, 0xe7, 0x7f, 0x57, 
+0x2b, 0xd7, 0xfd, 0xc7, 0x0c, 0x8c, 0x2d, 0xd8, 
+0xe0, 0x9f, 0x3a, 0xe4, 0xcf, 0x22, 0x1e, 0x51, 
+0x3c, 0xba, 0x1f, 0x7a, 0x3a, 0x43, 0x24, 0x41, 
+0xc1, 0xe3, 0x13, 0x11, 0x73, 0x26, 0x7f, 0x16, 
+0x29, 0x89, 0xe6, 0x70, 0xee, 0xb9, 0x67, 0x2b, 
+0x15, 0x01, 0x7d, 0x5d, 0x61, 0x5a, 0x0d, 0xfe, 
+0x4d, 0x0f, 0x8b, 0x2a, 0x7f, 0x8b, 0x06, 0x8a, 
+0x0c, 0x10, 0xfc, 0xeb, 0xa5, 0xc1, 0x3f, 0xad, 
+0x07, 0xff, 0xf8, 0xee, 0xdf, 0x12, 0xe1, 0x7a, 
+0xa8, 0x6c, 0x0e, 0x3b, 0xff, 0xd9, 0xfc, 0x9d, 
+0x7f, 0x81, 0xd1, 0xbf, 0xc6, 0x3b, 0xff, 0xcc, 
+0xe8, 0x5f, 0xb3, 0x9d, 0x7f, 0x1f, 0x15, 0x3b, 
+0xff, 0x22, 0xf2, 0x47, 0x57, 0xfc, 0xba, 0x9b, 
+0xd2, 0xba, 0xdf, 0x53, 0x53, 0xa7, 0x15, 0x8e, 
+0xfe, 0xc9, 0xb1, 0x1f, 0xa1, 0xba, 0xdf, 0xc9, 
+0xc9, 0x49, 0xde, 0xce, 0x7f, 0x5d, 0xd5, 0x01, 
+0xf0, 0xda, 0xe0, 0xa3, 0x76, 0xdd, 0xaf, 0xa9, 
+0xe0, 0xe8, 0xdf, 0x5a, 0x69, 0xdd, 0xaf, 0xba, 
+0x3b, 0xff, 0xb2, 0xa3, 0x7f, 0xa9, 0x00, 0x40, 
+0xb1, 0x74, 0x6d, 0x00, 0xbc, 0xd7, 0xe2, 0xb8, 
+0x6c, 0x82, 0x7f, 0xcc, 0xb9, 0xdf, 0x74, 0x0f, 
+0x89, 0x00, 0x30, 0x49, 0xf5, 0x82, 0xff, 0xfc, 
+0x8f, 0x7f, 0xda, 0x99, 0x94, 0x39, 0x91, 0xcd, 
+0x0c, 0xb1, 0x10, 0xf8, 0x09, 0x61, 0x89, 0x38, 
+0x87, 0x0a, 0x00, 0x5d, 0xb9, 0xff, 0xd2, 0x9e, 
+0x47, 0x1c, 0x6b, 0x7a, 0x25, 0xe4, 0xef, 0xbe, 
+0xa8, 0xdd, 0xff, 0x98, 0x9c, 0x00, 0x20, 0x48, 
+0x98, 0x1e, 0x81, 0x2a, 0x2c, 0x12, 0x1a, 0xc0, 
+0x22, 0x21, 0x26, 0x28, 0x88, 0x29, 0xfa, 0x93, 
+0x33, 0x31, 0xea, 0x0b, 0x00, 0x81, 0x64, 0x7f, 
+0x52, 0xdc, 0x36, 0x38, 0xe7, 0x1c, 0x61, 0x11, 
+0x40, 0x02, 0x83, 0xa7, 0x8e, 0x25, 0x69, 0xaf, 
+0xf2, 0xf7, 0x78, 0x02, 0x53, 0xfa, 0xd3, 0xd1, 
+0x11, 0x84, 0xa5, 0x3f, 0x7d, 0x34, 0xf8, 0xb7, 
+0x44, 0x82, 0x7f, 0x5c, 0xf7, 0x6f, 0x39, 0x52, 
+0x0a, 0x56, 0xc3, 0xa5, 0x90, 0xef, 0xaa, 0xd9, 
+0xce, 0x7f, 0xc6, 0x5c, 0x76, 0xfe, 0x99, 0xd1, 
+0x7f, 0x9c, 0x46, 0x75, 0xbf, 0x72, 0xee, 0x5f, 
+0x70, 0xf4, 0xaf, 0x24, 0xf8, 0xa7, 0x60, 0xf4, 
+0x4f, 0xdc, 0x3f, 0x5b, 0xf7, 0xbb, 0xfd, 0x45, 
+0x3b, 0x38, 0xcd, 0x11, 0x00, 0x64, 0xf4, 0x4f, 
+0x82, 0x7f, 0x7d, 0x87, 0xfa, 0x21, 0x78, 0xf3, 
+0x4e, 0xe8, 0x3b, 0xd2, 0x2f, 0x19, 0xfd, 0x93, 
+0x63, 0x3f, 0xc7, 0x8e, 0x1d, 0x93, 0xdb, 0xf9, 
+0x27, 0x97, 0xfe, 0xd8, 0x9d, 0xff, 0xc2, 0xd4, 
+0x42, 0xb0, 0x7b, 0xdf, 0x51, 0xbe, 0xee, 0x57, 
+0xc5, 0xce, 0xbf, 0x85, 0x96, 0x77, 0xfe, 0x65, 
+0x47, 0xff, 0x2c, 0xf9, 0x13, 0xac, 0xdd, 0xe3, 
+0x66, 0xc0, 0xe0, 0x9f, 0xa9, 0xde, 0x82, 0x7f, 
+0x04, 0x9f, 0x16, 0x3a, 0x72, 0xdc, 0xbf, 0x1b, 
+0x64, 0xd5, 0x57, 0x28, 0x0c, 0x7c, 0x92, 0xd3, 
+0xcd, 0x9c, 0xc7, 0x02, 0xfd, 0x88, 0xe7, 0xa9, 
+0x00, 0xd0, 0x85, 0xfb, 0xcf, 0xea, 0xea, 0x73, 
+0xac, 0x95, 0x0a, 0x80, 0xb8, 0xe1, 0x89, 0x45, 
+0x13, 0xfc, 0x53, 0xe5, 0xfe, 0xb9, 0x88, 0x43, 
+0x24, 0x4f, 0xf5, 0xc1, 0x81, 0xfe, 0x4c, 0x18, 
+0xc2, 0x7c, 0xc0, 0x10, 0x09, 0x0a, 0xf6, 0x05, 
+0xc2, 0x99, 0x63, 0xf1, 0x1a, 0xb9, 0x7f, 0x2e, 
+0xe2, 0x63, 0xb6, 0x0a, 0x8a, 0x80, 0x0f, 0x3f, 
+0x78, 0x52, 0xab, 0xee, 0x7f, 0x12, 0x0b, 0x8f, 
+0x06, 0xd0, 0xfd, 0x67, 0x0f, 0x56, 0xd1, 0xe0, 
+0xdf, 0x12, 0x0a, 0xfe, 0x49, 0xc9, 0x5f, 0x24, 
+0x00, 0x08, 0x62, 0x62, 0x4a, 0xe5, 0x46, 0xff, 
+0x1a, 0xed, 0xfc, 0x33, 0xa3, 0x7f, 0xe5, 0x3b, 
+0xff, 0xd1, 0xaa, 0x76, 0xfe, 0x57, 0xca, 0xee, 
+0xfc, 0x87, 0x6a, 0xbc, 0xf3, 0xef, 0xae, 0x28, 
+0xf8, 0x27, 0x37, 0xfa, 0x97, 0xba, 0xff, 0xed, 
+0x2b, 0xec, 0x30, 0x03, 0x10, 0x04, 0xff, 0xf9, 
+0xe7, 0xcf, 0x92, 0x9d, 0xff, 0x11, 0xec, 0x21, 
+0x71, 0x7c, 0xc7, 0x45, 0xb2, 0xf3, 0xbf, 0xc7, 
+0x3a, 0x12, 0x06, 0x3b, 0x07, 0x79, 0xa3, 0x7f, 
+0x42, 0x16, 0x42, 0x3b, 0xff, 0x24, 0xf5, 0x4f, 
+0x76, 0xfe, 0x13, 0x83, 0x93, 0xc0, 0x72, 0x85, 
+0x0d, 0x67, 0xf4, 0xbf, 0x55, 0xae, 0xee, 0x57, 
+0xdb, 0x3b, 0xff, 0xae, 0x3c, 0xf7, 0x2f, 0x26, 
+0x7f, 0x04, 0x19, 0xfd, 0x7b, 0x5d, 0x2b, 0x12, 
+0x00, 0x3e, 0xd7, 0x04, 0x82, 0xd5, 0x1a, 0x6f, 
+0x1d, 0x05, 0xff, 0xcc, 0x17, 0x54, 0xf0, 0x4f, 
+0x74, 0xee, 0xd7, 0x5d, 0x42, 0xfe, 0x5b, 0x53, 
+0xfc, 0xe0, 0xd7, 0xdf, 0x7e, 0x55, 0xba, 0xf9, 
+0x41, 0x1e, 0x0b, 0x90, 0xbf, 0x47, 0xce, 0x63, 
+0x81, 0x0c, 0xc4, 0x35, 0x54, 0x00, 0x68, 0xcb, 
+0xfd, 0x17, 0x75, 0xbf, 0x20, 0x22, 0x7f, 0x91, 
+0x00, 0xf0, 0xa8, 0xea, 0x35, 0x68, 0xf0, 0x2f, 
+0x65, 0x8e, 0xc1, 0x3f, 0x55, 0xe4, 0xcf, 0x0a, 
+0x80, 0xb8, 0x99, 0x51, 0x88, 0x9b, 0x1e, 0x85, 
+0xf4, 0x89, 0x76, 0x38, 0xd4, 0x13, 0xc7, 0x88, 
+0x00, 0x12, 0x16, 0x9c, 0x1e, 0xda, 0xc9, 0x04, 
+0x05, 0x35, 0x21, 0x7f, 0x16, 0xa4, 0x27, 0xe0, 
+0xea, 0xab, 0xae, 0x90, 0x90, 0xbf, 0x89, 0xf1, 
+0xeb, 0xe8, 0xd8, 0x93, 0xb4, 0x5b, 0xf9, 0x8b, 
+0xe4, 0xdf, 0xdc, 0x19, 0x8e, 0xc4, 0xdf, 0x4f, 
+0x83, 0x7f, 0x4b, 0x2c, 0xf8, 0xc7, 0x25, 0x7f, 
+0xcb, 0x91, 0x12, 0xf0, 0x2b, 0x2f, 0x51, 0x63, 
+0xf4, 0xaf, 0x78, 0xe7, 0x3f, 0x59, 0x9d, 0x9d, 
+0x7f, 0xc1, 0xd1, 0x7f, 0xa4, 0xc6, 0x75, 0xbf, 
+0xca, 0x77, 0xfe, 0x3d, 0xf9, 0xee, 0xff, 0x75, 
+0xc5, 0xc1, 0x3f, 0xe2, 0xfe, 0x77, 0xbc, 0x6c, 
+0x0f, 0x89, 0x4e, 0xc9, 0x50, 0x9f, 0xd3, 0x00, 
+0x65, 0x51, 0xe5, 0x90, 0x1d, 0x98, 0x0b, 0xe9, 
+0xbe, 0x99, 0x60, 0xf5, 0xfc, 0x76, 0xb9, 0x9d, 
+0xff, 0x6d, 0xcf, 0x58, 0x40, 0x9c, 0x6b, 0x02, 
+0x0c, 0xf4, 0x0c, 0xc8, 0xd5, 0xfd, 0x0a, 0xed, 
+0xfc, 0x57, 0x57, 0x57, 0x43, 0x71, 0x41, 0x31, 
+0xb8, 0x7c, 0xe2, 0xa6, 0xd3, 0xba, 0x5f, 0x27, 
+0xb9, 0xd1, 0xbf, 0x97, 0xc2, 0xd1, 0xbf, 0xcf, 
+0xb5, 0x28, 0x9e, 0x50, 0x00, 0x78, 0xdc, 0x1d, 
+0x00, 0xaf, 0x8f, 0x6a, 0xd7, 0xfd, 0xcf, 0x2d, 
+0xf8, 0xb7, 0x45, 0x67, 0xc1, 0x3f, 0xe9, 0xb9, 
+0x5f, 0xa9, 0xfb, 0xaf, 0x68, 0xad, 0x57, 0xbb, 
+0xfc, 0x89, 0x3c, 0xf2, 0x21, 0x5b, 0x1b, 0x69, 
+0x69, 0x69, 0x64, 0x5b, 0xe0, 0xef, 0x28, 0x02, 
+0x6c, 0x16, 0xfb, 0x63, 0x81, 0x05, 0xf1, 0x1f, 
+0x61, 0xbb, 0xf2, 0x90, 0x9f, 0x7d, 0x48, 0x3b, 
+0xb0, 0x8f, 0x00, 0x12, 0xc7, 0x26, 0x16, 0x75, 
+0xf0, 0x4f, 0x99, 0xfb, 0x67, 0xc8, 0x5f, 0x2c, 
+0x00, 0x62, 0xc5, 0xc8, 0x1b, 0x6d, 0x84, 0x8e, 
+0xce, 0x30, 0x91, 0x10, 0xc0, 0x80, 0xdd, 0x51, 
+0xbc, 0x38, 0xf8, 0x0d, 0x92, 0xae, 0x26, 0x02, 
+0x80, 0xe0, 0x0c, 0x12, 0x7e, 0x43, 0x9d, 0x37, 
+0xf4, 0x60, 0x2f, 0xbf, 0xb6, 0x4b, 0x7f, 0xc6, 
+0xfb, 0x02, 0x18, 0xf7, 0x9f, 0x32, 0x5c, 0xbf, 
+0x00, 0x47, 0xff, 0x3d, 0x4b, 0x30, 0xf8, 0x57, 
+0xaf, 0xd7, 0xe0, 0x1f, 0x97, 0xfc, 0x2d, 0x10, 
+0x3b, 0xba, 0x4a, 0x94, 0xee, 0xfc, 0x67, 0xa9, 
+0xda, 0xf9, 0x57, 0x34, 0xfa, 0xd7, 0x60, 0xe7, 
+0x3f, 0x54, 0xad, 0x9d, 0xff, 0x00, 0x8d, 0x76, 
+0xfe, 0x9d, 0xb8, 0xee, 0x9f, 0x33, 0xfa, 0x27, 
+0xee, 0x3f, 0xc5, 0x25, 0x0d, 0x7e, 0xf8, 0xea, 
+0xaf, 0xbc, 0x11, 0xf0, 0x4f, 0x3f, 0xfc, 0x04, 
+0x3e, 0xab, 0xfc, 0xe4, 0xea, 0x7e, 0xb9, 0x3b, 
+0xff, 0x66, 0xcf, 0x59, 0x42, 0x4a, 0x60, 0x1a, 
+0xf4, 0x74, 0xf5, 0x08, 0xd6, 0xfd, 0xca, 0xee, 
+0xfc, 0xe7, 0x66, 0xe5, 0x82, 0xd9, 0x13, 0x56, 
+0xe2, 0xe0, 0x9f, 0xfa, 0x3b, 0xff, 0xea, 0x8f, 
+0xfe, 0xdd, 0x55, 0x8c, 0xfe, 0x51, 0x28, 0x71, 
+0xdc, 0xbf, 0xef, 0x35, 0x28, 0xa4, 0xae, 0x0e, 
+0x86, 0x4f, 0x2a, 0x9c, 0x96, 0x74, 0xf0, 0x4f, 
+0x74, 0xee, 0x57, 0xea, 0xfe, 0x2d, 0x92, 0x83, 
+0xe0, 0x0f, 0xfc, 0x7f, 0xea, 0xfe, 0x20, 0x8f, 
+0x82, 0xc8, 0x0d, 0x07, 0xb2, 0xb6, 0x99, 0x95, 
+0x95, 0xc5, 0x3e, 0x16, 0x18, 0x46, 0xbc, 0x48, 
+0x05, 0xc0, 0x5c, 0xc9, 0xff, 0xf1, 0xc6, 0x4b, 
+0x77, 0x3c, 0xde, 0xf0, 0xf7, 0x1d, 0x4f, 0x1c, 
+0x04, 0xdb, 0x77, 0x9b, 0xc0, 0x27, 0xbd, 0x67, 
+0x41, 0x05, 0xff, 0x92, 0xe7, 0x11, 0xfc, 0x53, 
+0x46, 0xfe, 0x5c, 0x01, 0x10, 0xcb, 0xfc, 0xef, 
+0x11, 0x28, 0x19, 0xaa, 0x82, 0xde, 0x8e, 0x00, 
+0x46, 0x08, 0x8c, 0x74, 0xf9, 0x60, 0xd9, 0x4e, 
+0xa4, 0xda, 0xe4, 0xaf, 0xcb, 0xc6, 0xbf, 0x13, 
+0xd3, 0xa2, 0xca, 0xdf, 0x83, 0xdd, 0x31, 0x34, 
+0xf8, 0xb7, 0x44, 0x83, 0x7f, 0xac, 0x00, 0xb0, 
+0x10, 0x0b, 0x00, 0x8b, 0x91, 0x62, 0x48, 0xf5, 
+0xd1, 0xb4, 0xee, 0x37, 0x43, 0x65, 0xdd, 0x6f, 
+0xac, 0xc6, 0x75, 0xbf, 0x9a, 0xed, 0xfc, 0x7b, 
+0xaa, 0xda, 0xf9, 0x27, 0xe4, 0x2f, 0x10, 0xfc, 
+0xdb, 0x9b, 0x54, 0xcb, 0x10, 0xbe, 0x6c, 0xdd, 
+0x2f, 0x09, 0xfe, 0xf5, 0x37, 0x0f, 0xc8, 0x91, 
+0xbf, 0x5c, 0xe9, 0x0f, 0xae, 0xfd, 0x59, 0xbe, 
+0x6c, 0x03, 0x19, 0xe1, 0x99, 0xd0, 0xda, 0xd2, 
+0xca, 0x10, 0x85, 0x50, 0xdd, 0x2f, 0xbb, 0xf3, 
+0xef, 0xf4, 0x81, 0x8b, 0x5a, 0x75, 0xbf, 0xca, 
+0x77, 0xfe, 0x9d, 0x35, 0xde, 0xf9, 0xf7, 0xe2, 
+0xba, 0x7f, 0x0e, 0xf9, 0xfb, 0x5d, 0x1d, 0x02, 
+0x46, 0xae, 0x1e, 0x32, 0xe4, 0xbf, 0x63, 0xc9, 
+0x04, 0xff, 0x98, 0x73, 0xbf, 0x19, 0xee, 0x3c, 
+0xf7, 0xdf, 0x34, 0xd0, 0xa1, 0x11, 0xf9, 0x93, 
+0xc7, 0x00, 0x64, 0x02, 0x40, 0xfa, 0x1f, 0xc8, 
+0x36, 0x08, 0x99, 0xf0, 0x88, 0x45, 0x00, 0x41, 
+0x0e, 0xe2, 0x3a, 0x2a, 0x00, 0x34, 0x84, 0xfd, 
+0x23, 0x87, 0xb3, 0x09, 0xf9, 0x73, 0xe1, 0x69, 
+0xd4, 0x0a, 0x89, 0x4d, 0x63, 0x4b, 0x22, 0xf8, 
+0x27, 0x34, 0xfa, 0x97, 0x25, 0x7f, 0x16, 0x31, 
+0x88, 0xf8, 0xa9, 0x01, 0xa8, 0x19, 0xc8, 0x83, 
+0x81, 0x36, 0x6f, 0x46, 0x08, 0x8c, 0xe3, 0xc5, 
+0xc1, 0x53, 0x33, 0xb1, 0x5a, 0x24, 0xff, 0xb9, 
+0x54, 0xfe, 0xfa, 0x32, 0xee, 0x3f, 0x6e, 0xb4, 
+0x99, 0x06, 0xff, 0x0c, 0x12, 0xfc, 0xab, 0xd3, 
+0x79, 0xf0, 0x8f, 0xeb, 0xfe, 0x09, 0xf9, 0x13, 
+0x84, 0xa5, 0xca, 0x90, 0xbf, 0x92, 0x9d, 0xff, 
+0x54, 0x59, 0xf7, 0x6f, 0xa4, 0xce, 0xce, 0x7f, 
+0xb4, 0xc6, 0x3b, 0xff, 0x01, 0xaa, 0x76, 0xfe, 
+0x99, 0xd1, 0xbf, 0x66, 0x3b, 0xff, 0xf5, 0xd9, 
+0x07, 0x15, 0xd6, 0xfd, 0x92, 0x9d, 0xff, 0x96, 
+0xbd, 0xad, 0x4a, 0xeb, 0x7e, 0x65, 0x77, 0xfe, 
+0x6d, 0xde, 0xb2, 0x85, 0xec, 0xd8, 0x1c, 0x66, 
+0xf4, 0x4f, 0x8e, 0xfd, 0xc8, 0xd6, 0xfd, 0xe6, 
+0xe4, 0xe4, 0x80, 0xcd, 0x0b, 0xb6, 0x73, 0xac, 
+0xfb, 0x75, 0x50, 0xa3, 0xee, 0xd7, 0x83, 0x57, 
+0xf7, 0xeb, 0xae, 0x64, 0xf4, 0xcf, 0x0a, 0x00, 
+0x7f, 0x14, 0x00, 0x0e, 0xaf, 0xfb, 0x2f, 0xd9, 
+0xe0, 0x9f, 0xe8, 0xdc, 0xaf, 0x54, 0x00, 0x6c, 
+0x4f, 0x09, 0x55, 0x9b, 0xfc, 0xc9, 0x06, 0x08, 
+0x79, 0x94, 0x43, 0xc8, 0x9f, 0x6c, 0x80, 0x70, 
+0x7f, 0x90, 0x30, 0x28, 0xf9, 0xbb, 0x15, 0x8b, 
+0x80, 0x7f, 0x22, 0xec, 0x10, 0xe7, 0x52, 0x01, 
+0xa0, 0x06, 0x90, 0xec, 0xff, 0x64, 0xfb, 0x78, 
+0xc3, 0xaf, 0x2c, 0xf1, 0x3b, 0xdf, 0xdf, 0x01, 
+0x4e, 0xcf, 0x1f, 0x11, 0x09, 0x81, 0x27, 0x0f, 
+0x82, 0x9f, 0x5d, 0x3b, 0x24, 0xf7, 0x8c, 0x2f, 
+0x89, 0xe0, 0x9f, 0xd0, 0xe8, 0x5f, 0x96, 0xfc, 
+0x63, 0x70, 0x0a, 0xc0, 0x22, 0x69, 0xb2, 0x0b, 
+0xea, 0xfb, 0x52, 0x60, 0x08, 0xbb, 0xf6, 0x99, 
+0xa0, 0x20, 0x06, 0xf0, 0xce, 0x60, 0x0a, 0x5f, 
+0xdf, 0xe4, 0x7f, 0x6c, 0x62, 0x0f, 0x43, 0xfe, 
+0x35, 0xbd, 0x29, 0x34, 0xf8, 0xb7, 0xc4, 0x83, 
+0x7f, 0x5c, 0xf7, 0x6f, 0x8e, 0x70, 0xad, 0xe3, 
+0x8f, 0xfe, 0x73, 0x34, 0xae, 0xfb, 0x55, 0xbe, 
+0xf3, 0x4f, 0xc8, 0x9f, 0xbb, 0xf3, 0xbf, 0x4b, 
+0xad, 0x9d, 0xff, 0x20, 0x8d, 0x76, 0xfe, 0x5d, 
+0x54, 0xec, 0xfc, 0xa7, 0x7b, 0x64, 0x2a, 0xac, 
+0xfb, 0x25, 0x2e, 0xef, 0xaf, 0xdf, 0xff, 0x15, 
+0x22, 0x6c, 0xa2, 0x04, 0x8f, 0xfd, 0x90, 0x9e, 
+0x7f, 0x6e, 0xdd, 0xaf, 0xec, 0xce, 0xbf, 0xd3, 
+0x27, 0xae, 0x90, 0x93, 0x98, 0x2b, 0x19, 0xfd, 
+0x17, 0x15, 0x15, 0x31, 0x75, 0xbf, 0xa1, 0xf6, 
+0x61, 0x22, 0xf2, 0xbf, 0x57, 0xf5, 0xe8, 0x5f, 
+0xd9, 0xce, 0xbf, 0x83, 0x50, 0xf0, 0x4f, 0xa0, 
+0xee, 0x57, 0xd5, 0xe8, 0x9f, 0x90, 0x7f, 0xc0, 
+0x55, 0x3b, 0xc1, 0xff, 0xda, 0x50, 0x78, 0xab, 
+0xc7, 0x56, 0x01, 0xf9, 0xdb, 0x2c, 0xda, 0xe0, 
+0x9f, 0xe8, 0xdc, 0xaf, 0x27, 0x4f, 0x00, 0xf4, 
+0x4d, 0x0f, 0xab, 0x4d, 0xfe, 0x64, 0x92, 0x43, 
+0x48, 0x9e, 0x94, 0x3f, 0x29, 0xda, 0x16, 0x20, 
+0x1b, 0x20, 0xd9, 0xd9, 0xd9, 0xec, 0x63, 0x81, 
+0x51, 0xc4, 0xab, 0x54, 0x00, 0xa8, 0x80, 0xdd, 
+0xa3, 0x4d, 0x59, 0x2c, 0xf9, 0xe3, 0x24, 0x00, 
+0x3c, 0xee, 0xea, 0x67, 0xe0, 0x7a, 0x6f, 0x37, 
+0x38, 0xad, 0x68, 0x66, 0xfe, 0xb9, 0xdd, 0xb3, 
+0x0d, 0x10, 0xec, 0xdf, 0x05, 0x69, 0x23, 0x93, 
+0x4b, 0x22, 0xf8, 0x17, 0xa7, 0x90, 0xfc, 0xf9, 
+0x02, 0x20, 0x9a, 0x60, 0x6a, 0x04, 0x32, 0xc6, 
+0x9a, 0xe1, 0x08, 0x5e, 0xdb, 0x23, 0x22, 0x80, 
+0x6c, 0x0d, 0xcc, 0x0c, 0x87, 0x32, 0x55, 0xbc, 
+0xfa, 0x10, 0x00, 0x4c, 0xe5, 0x6f, 0xa7, 0x37, 
+0xf4, 0xb5, 0x79, 0x41, 0xd4, 0x58, 0x07, 0x0d, 
+0xfe, 0x69, 0xd9, 0xfd, 0xcf, 0x25, 0xf8, 0xa7, 
+0x9e, 0x00, 0x98, 0x5b, 0xf0, 0x8f, 0xeb, 0xfe, 
+0xcd, 0x47, 0x8a, 0xc0, 0x72, 0xb0, 0x08, 0x72, 
+0x76, 0x28, 0xda, 0xf9, 0xcf, 0x52, 0xba, 0xf3, 
+0x9f, 0x30, 0xa7, 0x9d, 0xff, 0xdd, 0x1a, 0xef, 
+0xfc, 0x7b, 0xcb, 0xba, 0x7f, 0xc1, 0xd1, 0xbf, 
+0xb0, 0xfb, 0x77, 0x7a, 0xd3, 0x15, 0xfe, 0xfd, 
+0xf7, 0x7f, 0x2b, 0xac, 0xfb, 0x3d, 0x36, 0x71, 
+0x1c, 0xbc, 0x57, 0xf9, 0x32, 0xe4, 0xcf, 0xb8, 
+0xff, 0x27, 0xa5, 0x02, 0x80, 0xc0, 0x63, 0x95, 
+0x17, 0x04, 0x9a, 0x04, 0x43, 0xf0, 0xb6, 0x9d, 
+0x60, 0xb6, 0xc2, 0x52, 0xda, 0xf8, 0xc7, 0xdd, 
+0xf9, 0x7f, 0xd0, 0x04, 0x9c, 0x3e, 0x76, 0x85, 
+0x70, 0xc7, 0xdd, 0x10, 0xee, 0xbc, 0x1b, 0xdc, 
+0xbe, 0xf0, 0x00, 0xd3, 0xfb, 0x94, 0x8d, 0xfe, 
+0x15, 0xef, 0xfc, 0xdb, 0x6a, 0x69, 0xe7, 0x5f, 
+0xe4, 0xfe, 0xa5, 0xa3, 0x7f, 0xff, 0xab, 0x44, 
+0x02, 0x20, 0xf0, 0x2f, 0xa1, 0xf0, 0x65, 0x92, 
+0xcb, 0x92, 0x0b, 0xfe, 0xbd, 0xd5, 0xb4, 0x5d, 
+0x4c, 0xfe, 0x22, 0x01, 0xe0, 0x9c, 0x16, 0xa1, 
+0xf6, 0xc5, 0x47, 0xb2, 0xc1, 0x41, 0x04, 0x1c, 
+0xe9, 0x7f, 0x50, 0xf5, 0x83, 0xbc, 0x66, 0x48, 
+0xf6, 0x03, 0x03, 0x82, 0xec, 0x44, 0x20, 0x1f, 
+0x71, 0x03, 0x15, 0x00, 0xc2, 0xee, 0xff, 0x2a, 
+0x7c, 0xf6, 0xff, 0x1b, 0x2b, 0x00, 0x08, 0xe9, 
+0xb3, 0x02, 0x80, 0x85, 0xcb, 0xfd, 0x9d, 0xe0, 
+0xb0, 0xe2, 0x90, 0x48, 0x20, 0xbc, 0xdc, 0x08, 
+0x61, 0xd1, 0xbd, 0x90, 0x3e, 0x3d, 0xa5, 0x7d, 
+0xf7, 0x3f, 0xbb, 0xb0, 0xdc, 0x7f, 0x34, 0x47, 
+0x00, 0xb0, 0xc8, 0x1f, 0xde, 0x07, 0x5d, 0x1d, 
+0xc1, 0xa2, 0xa0, 0x20, 0x16, 0x09, 0x1d, 0xc5, 
+0x8b, 0x83, 0x4c, 0x50, 0x50, 0x87, 0xee, 0x7f, 
+0x66, 0x6c, 0x17, 0xe3, 0xfe, 0xcb, 0xfb, 0x72, 
+0x69, 0xf0, 0x6f, 0x91, 0x06, 0xff, 0x6c, 0x34, 
+0x08, 0xfe, 0x71, 0xdd, 0x3f, 0x11, 0x00, 0x04, 
+0xd1, 0x3b, 0x15, 0xd7, 0xfd, 0xa6, 0xcf, 0xa9, 
+0xee, 0x57, 0xfd, 0x9d, 0xff, 0x60, 0xb5, 0x76, 
+0xfe, 0x7d, 0x35, 0xde, 0xf9, 0x67, 0x47, 0xff, 
+0x05, 0xa1, 0x45, 0x0a, 0x47, 0xff, 0x43, 0xad, 
+0xc3, 0x60, 0xf7, 0xba, 0x83, 0xdc, 0xe8, 0xdf, 
+0xf4, 0x29, 0x33, 0xd8, 0x6d, 0x13, 0x01, 0xad, 
+0x0d, 0xad, 0xbc, 0x9d, 0xff, 0xb6, 0xd6, 0x36, 
+0x28, 0x48, 0x2e, 0x04, 0xcb, 0x57, 0x6d, 0x24, 
+0x75, 0xbf, 0xbc, 0x9d, 0xff, 0xfb, 0x64, 0x77, 
+0xfe, 0x2d, 0xe6, 0xbd, 0xf3, 0xaf, 0x49, 0xdd, 
+0x2f, 0x97, 0xfc, 0x85, 0xdc, 0x7f, 0xe0, 0x55, 
+0x28, 0xb4, 0xfe, 0x12, 0x06, 0x16, 0x5b, 0x7c, 
+0x55, 0x92, 0xbf, 0x7a, 0x7d, 0xff, 0x0b, 0x23, 
+0xf8, 0x47, 0xb0, 0x29, 0xc5, 0x57, 0x2a, 0x00, 
+0x30, 0x04, 0x38, 0x7d, 0xe6, 0x98, 0x4a, 0x32, 
+0x27, 0x13, 0x20, 0xf2, 0x08, 0x87, 0x64, 0x37, 
+0xd4, 0x21, 0x7f, 0xee, 0x0f, 0xd2, 0x10, 0x49, 
+0x44, 0x83, 0x58, 0x04, 0xfc, 0x0b, 0xe1, 0x88, 
+0x38, 0x8f, 0x0a, 0x00, 0x6e, 0xf8, 0xef, 0xb1, 
+0x46, 0xc9, 0xb3, 0x7f, 0xfb, 0x87, 0x0f, 0x83, 
+0xfb, 0x5d, 0xbd, 0x88, 0x3e, 0x39, 0x11, 0xc0, 
+0x08, 0x81, 0x47, 0xda, 0xc1, 0xfe, 0xf9, 0x46, 
+0xe6, 0x7b, 0x9d, 0xde, 0x3d, 0x04, 0x7b, 0x72, 
+0x06, 0x20, 0xe3, 0xe8, 0xe2, 0x0f, 0xfe, 0xa9, 
+0x4b, 0xfe, 0x51, 0x0c, 0x86, 0xf1, 0xeb, 0x41, 
+0x28, 0x1b, 0x2c, 0x81, 0x3e, 0xac, 0xe1, 0x25, 
+0x42, 0x60, 0x14, 0x2f, 0x0e, 0x9e, 0x98, 0x8e, 
+0xd2, 0x89, 0x00, 0x38, 0x83, 0xeb, 0x88, 0x43, 
+0xed, 0x9e, 0xd0, 0xdd, 0xee, 0x87, 0x95, 0xbf, 
+0x3d, 0x34, 0xf8, 0x27, 0x38, 0xfa, 0x6f, 0x31, 
+0x70, 0xf0, 0xaf, 0x46, 0xeb, 0xc1, 0x3f, 0x2e, 
+0xf9, 0x13, 0xf8, 0xe5, 0x17, 0x68, 0x50, 0xf7, 
+0xab, 0x7c, 0xe7, 0x3f, 0x4a, 0x26, 0xf8, 0xb7, 
+0x5b, 0x76, 0xe7, 0x5f, 0x70, 0xf4, 0xaf, 0xd9, 
+0xce, 0x3f, 0x21, 0x7f, 0xd5, 0x3b, 0xff, 0xa2, 
+0xd4, 0xff, 0x99, 0xe9, 0x33, 0x82, 0xae, 0xaf, 
+0xb9, 0xfc, 0x08, 0x58, 0xad, 0xd8, 0x2e, 0x17, 
+0xfc, 0x8b, 0xb0, 0x8d, 0x82, 0xae, 0x23, 0x5d, 
+0xcc, 0xce, 0xff, 0xc8, 0xc8, 0x88, 0xe0, 0xce, 
+0x7f, 0x6d, 0x55, 0x2d, 0x38, 0x7c, 0xe8, 0xa4, 
+0xa0, 0xee, 0x57, 0xc5, 0xce, 0xff, 0x9d, 0x5a, 
+0xd8, 0xf9, 0x57, 0x50, 0xf7, 0xeb, 0xa5, 0x64, 
+0xf4, 0xcf, 0xba, 0x7f, 0x22, 0x00, 0xbc, 0x1e, 
+0x0c, 0xd1, 0x7a, 0xf0, 0xef, 0x05, 0x03, 0x06, 
+0xff, 0xde, 0x68, 0x30, 0xe3, 0xb8, 0x7f, 0x77, 
+0xf0, 0xce, 0x8e, 0x53, 0x8b, 0xfc, 0x49, 0x78, 
+0x93, 0xac, 0x6d, 0x92, 0x0c, 0xc8, 0x5c, 0x7f, 
+0x90, 0x66, 0x48, 0xcc, 0x7b, 0xb0, 0x8f, 0x05, 
+0x26, 0x10, 0x6f, 0x50, 0x01, 0x20, 0x72, 0xff, 
+0x37, 0x20, 0x24, 0xee, 0xdf, 0xf9, 0x9e, 0x76, 
+0x70, 0xbd, 0xb3, 0x1b, 0xdc, 0xee, 0xec, 0x51, 
+0x28, 0x04, 0xdc, 0xef, 0xee, 0x03, 0xe7, 0x27, 
+0xda, 0xc0, 0xf6, 0x99, 0x06, 0xe6, 0xd7, 0xb8, 
+0x7d, 0xd9, 0x0c, 0xd1, 0x35, 0xc3, 0x4b, 0x22, 
+0xf8, 0x27, 0x34, 0xfa, 0xe7, 0x0b, 0x80, 0x61, 
+0x1e, 0xe2, 0x26, 0x7a, 0xa0, 0xb6, 0x2f, 0x13, 
+0x5b, 0xf9, 0x44, 0x45, 0x42, 0xe3, 0xe2, 0x8b, 
+0x83, 0x5a, 0xad, 0xfc, 0xc5, 0x4e, 0x02, 0xe2, 
+0xfe, 0x0b, 0x06, 0x4a, 0x69, 0xf0, 0x6f, 0x19, 
+0x05, 0xff, 0xb8, 0xe4, 0x6f, 0x36, 0x52, 0x08, 
+0xb6, 0x2d, 0x85, 0x9c, 0xd1, 0x7f, 0x0e, 0xbf, 
+0xee, 0xd7, 0x94, 0x3f, 0xfa, 0x4f, 0x9a, 0x4b, 
+0xdd, 0xaf, 0x86, 0x3b, 0xff, 0x84, 0xfc, 0x7d, 
+0x55, 0xd6, 0xfd, 0x7a, 0xa8, 0xac, 0xfb, 0xf5, 
+0xff, 0x32, 0x50, 0x70, 0xf4, 0x7f, 0x72, 0xfa, 
+0x14, 0x98, 0x3f, 0x6b, 0xc5, 0xdb, 0xf9, 0xdf, 
+0xf1, 0xba, 0x3d, 0x34, 0x94, 0x35, 0xc0, 0xd1, 
+0xa3, 0x47, 0x61, 0x6a, 0x6a, 0x4a, 0x6e, 0xe7, 
+0xbf, 0xad, 0xad, 0x8d, 0xb7, 0xf3, 0x5f, 0x53, 
+0x8d, 0x7f, 0x37, 0x6f, 0xda, 0x23, 0xf9, 0x9b, 
+0xa8, 0x51, 0xf7, 0xab, 0xed, 0x9d, 0x7f, 0xd5, 
+0xa3, 0x7f, 0x89, 0x00, 0xe0, 0x8c, 0xfe, 0x09, 
+0xf9, 0x07, 0xff, 0xdf, 0x2e, 0x44, 0x38, 0xbc, 
+0x7f, 0xc0, 0x7e, 0x49, 0x04, 0xff, 0x44, 0xe7, 
+0x7e, 0xbd, 0x24, 0xe4, 0x6f, 0x94, 0xe1, 0x09, 
+0x67, 0xfe, 0xfa, 0x8d, 0x52, 0xd2, 0x26, 0xd3, 
+0x1f, 0xb2, 0xb6, 0x49, 0x82, 0x9b, 0xa4, 0x00, 
+0x68, 0xbe, 0x3f, 0xc8, 0x63, 0x01, 0x22, 0x0e, 
+0x39, 0x8f, 0x05, 0x8a, 0x11, 0x37, 0x2d, 0x6f, 
+0x01, 0xf0, 0x78, 0x43, 0x1e, 0x4b, 0xfe, 0x76, 
+0x0f, 0xe1, 0x07, 0xe4, 0x9d, 0x1d, 0xe0, 0x72, 
+0x67, 0x27, 0x8a, 0x80, 0x2e, 0x14, 0x01, 0x52, 
+0x21, 0xe0, 0x21, 0x28, 0x04, 0x7a, 0xc1, 0xf9, 
+0xd9, 0x16, 0x26, 0x24, 0x48, 0x7e, 0xbd, 0xd7, 
+0xd6, 0x56, 0x88, 0x3f, 0x32, 0xba, 0x24, 0x82, 
+0x7f, 0xca, 0xdc, 0x3f, 0x8b, 0x48, 0x0e, 0x92, 
+0xc7, 0x5b, 0xa1, 0xa1, 0x47, 0x54, 0xd0, 0x43, 
+0x30, 0x85, 0x17, 0x07, 0x49, 0x50, 0x70, 0xbe, 
+0xe4, 0x7f, 0x0a, 0x5b, 0x09, 0x49, 0xe5, 0x6f, 
+0x5b, 0x47, 0x08, 0x56, 0xfe, 0xf6, 0xd3, 0xe0, 
+0x9f, 0x5a, 0xc1, 0xbf, 0xe6, 0x25, 0x11, 0xfc, 
+0xe3, 0x92, 0x3f, 0x8b, 0x64, 0x27, 0xd1, 0xe8, 
+0x5f, 0xd7, 0x3b, 0xff, 0x84, 0xfc, 0x55, 0xef, 
+0xfc, 0xfb, 0x6b, 0xb4, 0xf3, 0xef, 0x28, 0xb0, 
+0xf3, 0x4f, 0x0a, 0x7f, 0x76, 0x6e, 0x0c, 0x13, 
+0x0c, 0xfe, 0xb5, 0xd7, 0x76, 0xf0, 0x76, 0xfe, 
+0x77, 0x6e, 0xdd, 0x05, 0xe3, 0xc3, 0xe3, 0x72, 
+0x75, 0xbf, 0x03, 0x03, 0x03, 0x82, 0x3b, 0xff, 
+0x24, 0xf5, 0x4f, 0x76, 0xfe, 0xa3, 0xbd, 0x63, 
+0xd4, 0xaa, 0xfb, 0xd5, 0xfd, 0xce, 0xbf, 0xbf, 
+0xd2, 0xe0, 0x1f, 0x19, 0xfd, 0x07, 0x22, 0xf9, 
+0x07, 0xfd, 0x65, 0x17, 0x23, 0x00, 0x42, 0xfe, 
+0x1c, 0x0e, 0x9b, 0x02, 0x3c, 0x96, 0x44, 0xf0, 
+0xef, 0xdd, 0x5a, 0x6b, 0x9e, 0xfb, 0xdf, 0x59, 
+0x98, 0xa6, 0x92, 0xfc, 0xd9, 0xbf, 0x3f, 0x12, 
+0x00, 0xd5, 0xe6, 0x0f, 0x72, 0x36, 0x9a, 0x3c, 
+0x4e, 0x10, 0x8b, 0x80, 0x7f, 0x23, 0x5c, 0x11, 
+0xe7, 0x13, 0x3e, 0x8c, 0x8f, 0x8f, 0x3f, 0x67, 
+0xd9, 0x08, 0x00, 0x24, 0xed, 0x3b, 0x10, 0xbf, 
+0xb3, 0x02, 0xc0, 0xf1, 0xae, 0x23, 0xe0, 0x74, 
+0x47, 0x2b, 0x38, 0xdf, 0xd1, 0x8e, 0x22, 0x40, 
+0x91, 0x10, 0x90, 0x7f, 0x2c, 0xe0, 0x76, 0x4f, 
+0x0f, 0x38, 0xbd, 0x20, 0xda, 0x18, 0xb0, 0x7d, 
+0x0a, 0x37, 0x06, 0x9c, 0x3b, 0x20, 0xb1, 0x77, 
+0x5c, 0xeb, 0xee, 0xdf, 0x10, 0xc1, 0x3f, 0x45, 
+0xe4, 0x2f, 0x2b, 0x00, 0x08, 0x22, 0xa6, 0x86, 
+0x20, 0x13, 0x89, 0xa4, 0xad, 0x53, 0x74, 0xa4, 
+0x87, 0x8c, 0xed, 0x67, 0xf0, 0xe2, 0x20, 0x09, 
+0xf0, 0xcd, 0x55, 0x00, 0x4c, 0xf4, 0x07, 0x31, 
+0xee, 0x3f, 0x73, 0xa8, 0x46, 0x03, 0xf7, 0xaf, 
+0xbb, 0xe0, 0x5f, 0x00, 0x0d, 0xfe, 0xe9, 0x2d, 
+0xf8, 0x27, 0x2f, 0x00, 0x0a, 0x20, 0x34, 0x3a, 
+0x4f, 0x78, 0xf4, 0xaf, 0xf5, 0x9d, 0xff, 0x30, 
+0xd5, 0x3b, 0xff, 0x02, 0xa3, 0x7f, 0x0f, 0x95, 
+0x75, 0xbf, 0xf2, 0xc7, 0x7e, 0x76, 0x99, 0xee, 
+0x91, 0x1b, 0xfd, 0x93, 0x0f, 0x7d, 0x92, 0xf4, 
+0x8e, 0x77, 0x4e, 0x84, 0xc0, 0x4d, 0xc1, 0x50, 
+0x97, 0x7f, 0x00, 0x4e, 0x9f, 0x12, 0x5d, 0xfa, 
+0x63, 0x8f, 0xfd, 0x08, 0xd5, 0xfd, 0x0a, 0xed, 
+0xfc, 0x97, 0x14, 0x95, 0x80, 0xd9, 0x93, 0x16, 
+0x72, 0x75, 0xbf, 0x5b, 0xe7, 0x5d, 0xf7, 0xeb, 
+0x22, 0x37, 0xfa, 0x77, 0x91, 0xab, 0xfb, 0xf5, 
+0x11, 0xac, 0xfb, 0x55, 0x14, 0xfc, 0x63, 0xdd, 
+0x7f, 0x08, 0xba, 0xff, 0x9d, 0x7f, 0xde, 0x0d, 
+0xf6, 0xf8, 0x67, 0xbd, 0xd8, 0x83, 0x7f, 0xa2, 
+0x73, 0xbf, 0x52, 0xf7, 0x6f, 0x9c, 0xee, 0x05, 
+0x3f, 0xfe, 0xeb, 0xef, 0x4a, 0x9d, 0x3a, 0xf9, 
+0xbb, 0x23, 0x20, 0x5f, 0xeb, 0xea, 0x07, 0x99, 
+0x20, 0x71, 0x1e, 0x0b, 0x4c, 0x25, 0x27, 0x27, 
+0xaf, 0x41, 0x01, 0x60, 0xb9, 0x7c, 0x04, 0xc0, 
+0xe3, 0x07, 0x8b, 0x25, 0xee, 0xff, 0xc1, 0x46, 
+0x70, 0xb8, 0xa3, 0x19, 0x1c, 0xef, 0x10, 0x89, 
+0x00, 0xa7, 0x3b, 0xda, 0x04, 0x85, 0x80, 0xb2, 
+0x7c, 0x80, 0xeb, 0xbd, 0x5d, 0xe0, 0xf8, 0xe2, 
+0x61, 0xd1, 0xef, 0xf7, 0x3c, 0x6e, 0x0c, 0x04, 
+0x77, 0x41, 0x0a, 0x36, 0x09, 0x2e, 0x85, 0xe0, 
+0x9f, 0x6a, 0xf2, 0x47, 0x4c, 0x0e, 0x31, 0x88, 
+0x9c, 0x1c, 0x84, 0xc2, 0xc1, 0x4a, 0x7c, 0x66, 
+0x1f, 0xc0, 0x08, 0x01, 0x12, 0x14, 0x3c, 0x86, 
+0x17, 0x07, 0x35, 0x25, 0xff, 0x93, 0xb3, 0xb1, 
+0x0c, 0xf9, 0x1f, 0xee, 0xda, 0x43, 0x83, 0x7f, 
+0x73, 0x24, 0x7f, 0xf5, 0xdc, 0xff, 0xc2, 0x0d, 
+0xfe, 0x71, 0xc9, 0x7f, 0x1b, 0xc2, 0x0d, 0x4f, 
+0xa5, 0x0a, 0xd5, 0xfd, 0xa6, 0xa8, 0x53, 0xf7, 
+0xbb, 0x5e, 0x76, 0xf4, 0x1f, 0xa5, 0x51, 0xdd, 
+0xaf, 0xea, 0x9d, 0x7f, 0x2f, 0x8d, 0x82, 0x7f, 
+0xec, 0xb1, 0x1f, 0xaf, 0xcf, 0x7c, 0x99, 0xc0, 
+0x9f, 0xec, 0xce, 0x3f, 0xf7, 0xd2, 0x1f, 0x39, 
+0xf6, 0x73, 0xf2, 0xe4, 0x49, 0xb9, 0xd1, 0x3f, 
+0x09, 0xfe, 0x1d, 0x69, 0x3a, 0x02, 0x31, 0x1e, 
+0xb1, 0xb0, 0xc7, 0x39, 0x12, 0x1a, 0x0e, 0x36, 
+0x48, 0xea, 0x7e, 0xb9, 0x3b, 0xff, 0x8e, 0xef, 
+0x3a, 0xab, 0x1c, 0xfd, 0x5b, 0xa8, 0x1a, 0xfd, 
+0xab, 0xdc, 0xf9, 0xf7, 0xe4, 0xed, 0xfc, 0x7b, 
+0xa8, 0xb9, 0xf3, 0xcf, 0x25, 0xff, 0x20, 0xf1, 
+0xe8, 0x3f, 0x04, 0xc9, 0x7f, 0xe7, 0x9f, 0xf7, 
+0x40, 0xf0, 0xf5, 0xbb, 0xe1, 0xb5, 0x21, 0x9b, 
+0x45, 0x1d, 0xfc, 0x13, 0x9d, 0xfb, 0x95, 0xba, 
+0xff, 0xd8, 0xca, 0x7c, 0x85, 0xa4, 0x4c, 0x84, 
+0x1f, 0x71, 0xfd, 0xe4, 0xef, 0x4f, 0x97, 0xe4, 
+0xcf, 0x9d, 0x34, 0x90, 0xc7, 0x46, 0xe4, 0xb1, 
+0x40, 0x42, 0x42, 0x02, 0xc1, 0x81, 0x65, 0x21, 
+0x00, 0x90, 0xa4, 0x1f, 0x40, 0xfc, 0x21, 0x11, 
+0x00, 0x77, 0x36, 0x81, 0xfd, 0xed, 0x87, 0xc0, 
+0xe1, 0xf6, 0xc3, 0x28, 0x04, 0x8e, 0xa0, 0x10, 
+0x68, 0x11, 0x4f, 0x03, 0xa4, 0x42, 0xc0, 0x95, 
+0x11, 0x02, 0xca, 0xf3, 0x01, 0x8c, 0x10, 0x78, 
+0xb0, 0x03, 0xec, 0x5f, 0x68, 0x62, 0x7e, 0x5f, 
+0x87, 0xd7, 0x9a, 0x20, 0x2c, 0xa1, 0x17, 0x52, 
+0xa6, 0x17, 0x7f, 0xf0, 0x4f, 0x11, 0xf9, 0xb3, 
+0xee, 0x9f, 0x15, 0x00, 0x04, 0x7b, 0x10, 0x51, 
+0x78, 0xa5, 0xaf, 0xb2, 0x3f, 0x0f, 0xfa, 0xb1, 
+0x48, 0x88, 0x08, 0x01, 0x52, 0xe2, 0x43, 0x2e, 
+0x0e, 0xaa, 0x2b, 0x00, 0xc6, 0x7a, 0xfd, 0x19, 
+0x01, 0x90, 0x8c, 0x64, 0xb5, 0x10, 0x83, 0x7f, 
+0xfe, 0x4b, 0x30, 0xf8, 0xe7, 0x60, 0xe0, 0xe0, 
+0x9f, 0x32, 0xf7, 0x4f, 0x04, 0x80, 0x45, 0x5f, 
+0x3e, 0xa4, 0x9b, 0xa9, 0xda, 0xf9, 0x4f, 0x52, 
+0xb9, 0xf3, 0x2f, 0x34, 0xfa, 0xd7, 0x78, 0xe7, 
+0x5f, 0x8d, 0xd1, 0xbf, 0xb3, 0x40, 0xdd, 0x2f, 
+0x1b, 0xfc, 0x63, 0x8f, 0xfd, 0xd8, 0xac, 0xb0, 
+0x85, 0xfe, 0xa6, 0x01, 0xc9, 0xe8, 0x9f, 0x3c, 
+0xef, 0xfd, 0xe7, 0x3f, 0xff, 0x09, 0x3f, 0xfe, 
+0xf8, 0x23, 0x93, 0xe2, 0xfe, 0xfa, 0xeb, 0xaf, 
+0x25, 0x97, 0xfe, 0xd8, 0x63, 0x3f, 0x24, 0xf8, 
+0x47, 0x46, 0xff, 0xb9, 0x38, 0x11, 0x31, 0x79, 
+0x7a, 0x9b, 0x64, 0xe7, 0x3f, 0xdc, 0x61, 0xb7, 
+0x5c, 0xdd, 0x6f, 0x61, 0x21, 0x5e, 0x00, 0x7c, 
+0xd3, 0x51, 0xe3, 0xba, 0x5f, 0x7d, 0xed, 0xfc, 
+0x07, 0xc8, 0x8e, 0xfe, 0xc5, 0xee, 0x3f, 0xf4, 
+0x4a, 0xfc, 0x7b, 0xb9, 0x32, 0x02, 0x3e, 0xcf, 
+0x71, 0x5a, 0xb4, 0xc1, 0xbf, 0x27, 0x47, 0xd6, 
+0xe0, 0xb9, 0x5f, 0xa9, 0xfb, 0x37, 0x49, 0xf5, 
+0x81, 0x7f, 0xff, 0xf7, 0x3f, 0x0a, 0x0f, 0xfd, 
+0x10, 0xd1, 0x46, 0x46, 0xff, 0x84, 0x98, 0xf5, 
+0xf9, 0x83, 0x94, 0x42, 0x45, 0x47, 0x47, 0x13, 
+0x01, 0xd0, 0xb7, 0x5c, 0x04, 0x40, 0x95, 0xa4, 
+0xf1, 0xef, 0x01, 0x1c, 0xdd, 0xdf, 0xde, 0x00, 
+0x76, 0xb7, 0x37, 0x22, 0x58, 0x21, 0x20, 0x9a, 
+0x06, 0xf0, 0x84, 0xc0, 0x9d, 0xac, 0x10, 0xe8, 
+0x52, 0x4b, 0x08, 0xb8, 0x3c, 0xd6, 0x0e, 0x76, 
+0xcf, 0x89, 0x36, 0x06, 0x9c, 0x3f, 0xc4, 0x8d, 
+0x81, 0x82, 0x81, 0x25, 0x11, 0xfc, 0x53, 0xe6, 
+0xfe, 0xb9, 0x02, 0x80, 0x45, 0xdc, 0x78, 0x27, 
+0xec, 0xef, 0x49, 0x46, 0x11, 0xe0, 0xc1, 0x08, 
+0x81, 0x89, 0xfe, 0x40, 0x38, 0x8d, 0xcf, 0xf6, 
+0x95, 0x91, 0xff, 0xf1, 0xa9, 0x28, 0x86, 0xfc, 
+0x0f, 0x60, 0xae, 0x80, 0x06, 0xff, 0xb4, 0x35, 
+0xfa, 0x6f, 0x5c, 0x74, 0xc1, 0x3f, 0x2e, 0xf9, 
+0x6f, 0x1b, 0xc9, 0x67, 0x10, 0xe5, 0xad, 0x7c, 
+0xe7, 0x9f, 0x90, 0xbf, 0xe6, 0x3b, 0xff, 0xe1, 
+0x7c, 0xf7, 0xff, 0xa9, 0xea, 0x9d, 0x7f, 0x2f, 
+0x95, 0x3b, 0xff, 0xae, 0x0a, 0x83, 0x7f, 0x0c, 
+0xf9, 0xbf, 0x28, 0x22, 0x7f, 0xeb, 0x17, 0x76, 
+0x40, 0xf8, 0xd6, 0x3d, 0x92, 0xba, 0x5f, 0xb2, 
+0xea, 0x45, 0x2a, 0x5e, 0xc9, 0xb3, 0x5a, 0x72, 
+0x0b, 0xfe, 0xcc, 0x99, 0x33, 0x70, 0xe2, 0xc4, 
+0x09, 0xde, 0xe8, 0xbf, 0xbb, 0xa3, 0x1b, 0x82, 
+0xcd, 0x76, 0x4a, 0x1a, 0xff, 0xd8, 0x9d, 0xff, 
+0xa4, 0x90, 0x64, 0xc9, 0xe8, 0x9f, 0xb4, 0xc5, 
+0xb1, 0x75, 0xbf, 0x3b, 0x5e, 0xb5, 0x57, 0x39, 
+0xfa, 0xb7, 0x54, 0x59, 0xf7, 0xeb, 0xa4, 0x71, 
+0xdd, 0xaf, 0xa7, 0x92, 0xba, 0x5f, 0x45, 0xa3, 
+0x7f, 0xd6, 0xfd, 0x87, 0x22, 0xf9, 0x87, 0x5d, 
+0x19, 0x09, 0x66, 0xd6, 0x3e, 0x7a, 0x0d, 0xfe, 
+0x3d, 0xa3, 0xa5, 0xe0, 0x9f, 0xe8, 0xdc, 0x2f, 
+0x6e, 0x61, 0x64, 0x7b, 0x48, 0x04, 0x40, 0xe6, 
+0x01, 0xe1, 0x73, 0xbf, 0x64, 0xe2, 0x43, 0x92, 
+0xfe, 0x44, 0xbc, 0x11, 0x11, 0xa8, 0xcf, 0x1f, 
+0x44, 0x48, 0x46, 0x45, 0x45, 0x31, 0x02, 0x20, 
+0x31, 0x31, 0x71, 0x64, 0xc9, 0x0b, 0x00, 0x24, 
+0xe4, 0x27, 0x25, 0xe4, 0xff, 0xf8, 0x41, 0xd8, 
+0x7e, 0xc7, 0x01, 0x7c, 0xa1, 0xd7, 0x23, 0xa4, 
+0x42, 0xc0, 0x9e, 0x11, 0x02, 0x87, 0x15, 0x08, 
+0x01, 0x4d, 0x82, 0x82, 0xb8, 0x31, 0xf0, 0x74, 
+0x2b, 0xd8, 0x3e, 0x2d, 0xde, 0x18, 0x58, 0x77, 
+0x04, 0xa2, 0xf6, 0x0f, 0x2f, 0x89, 0xe0, 0x9f, 
+0x3a, 0xe4, 0x4f, 0xb0, 0x1b, 0x1f, 0x09, 0x10, 
+0xa4, 0x8c, 0x1e, 0x82, 0xc3, 0xdd, 0x11, 0xa2, 
+0xa0, 0x20, 0x06, 0xfb, 0xa6, 0x30, 0xdd, 0x4f, 
+0x56, 0xfc, 0x64, 0xc9, 0xff, 0xf4, 0xf1, 0x78, 
+0xcc, 0x0f, 0x78, 0x41, 0x3f, 0x0a, 0x86, 0xd8, 
+0xd1, 0x96, 0x65, 0x1c, 0xfc, 0x6b, 0xa7, 0xc1, 
+0x3f, 0x01, 0x01, 0xe0, 0x9b, 0x96, 0x33, 0x87, 
+0x9d, 0xff, 0x18, 0xbe, 0xfb, 0x57, 0xa3, 0xee, 
+0x57, 0xe5, 0xce, 0x3f, 0x21, 0xff, 0x39, 0xec, 
+0xfc, 0xb3, 0xa3, 0x7f, 0x96, 0xfc, 0x09, 0xc8, 
+0x85, 0xbf, 0x14, 0xf7, 0x34, 0xf8, 0xfb, 0x4f, 
+0x7f, 0x67, 0x9e, 0xfd, 0xff, 0xed, 0x6f, 0x7f, 
+0x63, 0xaa, 0x5d, 0xb9, 0xa3, 0x7f, 0x36, 0xf8, 
+0x57, 0x91, 0x59, 0x09, 0xdb, 0xdf, 0xb4, 0xe5, 
+0x93, 0x3f, 0x4e, 0x00, 0x2c, 0xb0, 0xff, 0x9f, 
+0xa4, 0xfe, 0x65, 0xeb, 0x7e, 0xb3, 0x32, 0xb2, 
+0xc1, 0xec, 0x51, 0x2b, 0x99, 0xd1, 0xbf, 0xa5, 
+0xca, 0xd1, 0xbf, 0xb6, 0x77, 0xfe, 0x7d, 0x95, 
+0xec, 0xfc, 0xf3, 0x47, 0xff, 0x52, 0xf7, 0xbf, 
+0xeb, 0x4f, 0x91, 0xe0, 0xf5, 0x54, 0xd8, 0x82, 
+0x0e, 0xfe, 0x29, 0x12, 0x00, 0x4f, 0x0f, 0xad, 
+0x83, 0xcd, 0x19, 0x9e, 0x12, 0x01, 0xb0, 0x35, 
+0xc5, 0x5f, 0xf0, 0xdc, 0x2f, 0x21, 0x7f, 0x22, 
+0xd8, 0xc8, 0xa3, 0x1b, 0x7d, 0x93, 0x3f, 0x79, 
+0x9d, 0xc5, 0xc4, 0xc4, 0x30, 0x02, 0x20, 0x2e, 
+0x2e, 0x8e, 0x08, 0x80, 0xb1, 0xe5, 0x20, 0x00, 
+0x0e, 0xb0, 0x02, 0x60, 0xfb, 0xfd, 0x75, 0x60, 
+0x73, 0xdb, 0x7e, 0xd8, 0x7e, 0x5b, 0x1d, 0x42, 
+0x24, 0x04, 0x6c, 0x79, 0x42, 0xe0, 0x90, 0x48, 
+0x08, 0x48, 0xf2, 0x01, 0x2d, 0x73, 0x0a, 0x0a, 
+0xba, 0xdf, 0x83, 0x1b, 0x03, 0xcf, 0xb7, 0x48, 
+0x6e, 0x0c, 0x78, 0x59, 0xb6, 0x42, 0x5c, 0xeb, 
+0xc8, 0x92, 0x08, 0xfe, 0xa9, 0x2b, 0x00, 0x58, 
+0x64, 0x0d, 0xd5, 0x42, 0x3b, 0x16, 0x09, 0x71, 
+0x83, 0x82, 0xa7, 0x70, 0x75, 0x90, 0x9c, 0xf9, 
+0x3d, 0x3a, 0xbe, 0x87, 0x69, 0xfc, 0x13, 0xad, 
+0xfd, 0x95, 0xd0, 0xe0, 0x1f, 0x0d, 0xfe, 0xf1, 
+0xc8, 0x7f, 0xeb, 0x48, 0x1e, 0xd8, 0x1d, 0xcc, 
+0x15, 0x18, 0xfd, 0xa7, 0xa8, 0xac, 0xfb, 0xe5, 
+0xee, 0xfc, 0x87, 0xab, 0xdc, 0xf9, 0x0f, 0xd1, 
+0x78, 0xe7, 0x9f, 0x90, 0xbf, 0x3a, 0x3b, 0xff, 
+0xdc, 0xd1, 0x3f, 0x4b, 0xfe, 0x96, 0xcf, 0xd9, 
+0x80, 0xc5, 0xb3, 0xd6, 0xb0, 0x73, 0x0b, 0x79, 
+0x2f, 0x9c, 0x92, 0x8c, 0xfe, 0x4f, 0x9f, 0x16, 
+0x05, 0xff, 0x66, 0xa6, 0x67, 0xa0, 0x2a, 0xbb, 
+0x1a, 0x9c, 0xb1, 0xd2, 0x97, 0xe9, 0xfb, 0x7f, 
+0x64, 0x0b, 0xaf, 0xee, 0x77, 0xeb, 0xb3, 0xe6, 
+0x50, 0x92, 0x53, 0x22, 0x19, 0xfd, 0x93, 0x63, 
+0x3f, 0x6c, 0xdd, 0xef, 0x4e, 0xbb, 0x30, 0xde, 
+0xce, 0xbf, 0x64, 0xf4, 0x7f, 0xb7, 0x2c, 0xf9, 
+0xef, 0x50, 0x5a, 0xf7, 0xab, 0xfd, 0x9d, 0xff, 
+0x50, 0xc1, 0xe0, 0x9f, 0xc4, 0xfd, 0x23, 0xf9, 
+0xef, 0xfa, 0x53, 0x14, 0x84, 0x5f, 0x19, 0x05, 
+0x6f, 0xb5, 0xee, 0x58, 0x54, 0xc1, 0x3f, 0xe6, 
+0xdc, 0x6f, 0x8e, 0xab, 0x98, 0xfc, 0x45, 0x02, 
+0xa0, 0x5c, 0xe0, 0xdc, 0x2f, 0x99, 0xf6, 0x90, 
+0xbf, 0x2f, 0xb2, 0xb5, 0x41, 0x26, 0x40, 0xfa, 
+0xfc, 0x41, 0x1e, 0x39, 0x61, 0xf0, 0x8f, 0x21, 
+0xff, 0xac, 0xcc, 0x4c, 0xc0, 0x00, 0x20, 0x11, 
+0x00, 0xd3, 0x4b, 0x5a, 0x00, 0x20, 0xf9, 0xbe, 
+0x28, 0x75, 0xff, 0xf5, 0x60, 0x75, 0x5b, 0x0d, 
+0x58, 0xdf, 0x5a, 0x8b, 0xd8, 0xa7, 0x40, 0x08, 
+0x70, 0x1f, 0x0b, 0xc8, 0x0a, 0x01, 0xe1, 0xa0, 
+0xa0, 0x9b, 0x92, 0xc7, 0x02, 0x6e, 0xa4, 0x5a, 
+0xf8, 0x45, 0x51, 0xb5, 0x30, 0x99, 0x0a, 0xf8, 
+0x79, 0x74, 0x40, 0xc2, 0xc0, 0xd8, 0xa2, 0x0f, 
+0xfe, 0xa9, 0x4b, 0xfe, 0x04, 0xe1, 0x13, 0xf8, 
+0x33, 0xae, 0xf4, 0x15, 0xf7, 0x17, 0x43, 0x6f, 
+0x9b, 0xaf, 0x64, 0x75, 0x90, 0x45, 0x3f, 0x76, 
+0x0a, 0x94, 0x62, 0x76, 0x60, 0xce, 0xa3, 0xff, 
+0x71, 0x1a, 0xfc, 0x5b, 0x4a, 0xc1, 0x3f, 0x96, 
+0xfc, 0x59, 0x01, 0xb0, 0x75, 0x38, 0x0f, 0x12, 
+0xac, 0xf8, 0xa3, 0xff, 0xc4, 0x39, 0xd5, 0xfd, 
+0xee, 0xd1, 0xb8, 0xee, 0x57, 0xf9, 0xce, 0xbf, 
+0xbb, 0xca, 0x9d, 0x7f, 0xd9, 0xd1, 0xbf, 0x84, 
+0xfc, 0x9f, 0xb3, 0x66, 0x76, 0xfe, 0xc9, 0xca, 
+0x1f, 0xf9, 0x7a, 0xa7, 0x49, 0x18, 0x94, 0xc6, 
+0xe3, 0xc5, 0xbe, 0xb8, 0x12, 0xc8, 0x08, 0xce, 
+0x04, 0x97, 0x4f, 0xdc, 0xa4, 0xc7, 0x7e, 0x1e, 
+0xd9, 0xc2, 0x73, 0xff, 0x3e, 0x9b, 0xfc, 0xa0, 
+0xaa, 0xac, 0x9a, 0x09, 0x8e, 0x91, 0x31, 0x32, 
+0x77, 0xf4, 0x4f, 0x8e, 0xfd, 0x90, 0xff, 0x7b, 
+0x1a, 0xef, 0xfc, 0xdf, 0xa6, 0x7c, 0xe7, 0x7f, 
+0xee, 0x75, 0xbf, 0x8a, 0x77, 0xfe, 0xa5, 0xa3, 
+0x7f, 0xa9, 0xfb, 0x0f, 0x27, 0x02, 0xe0, 0x8a, 
+0x68, 0x58, 0xbf, 0xdb, 0x7d, 0x51, 0x05, 0xff, 
+0x9e, 0xed, 0xdf, 0x00, 0x46, 0x59, 0x9e, 0x12, 
+0x01, 0x60, 0x9e, 0x14, 0xc8, 0x84, 0x37, 0xb9, 
+0x57, 0x1e, 0xc9, 0xa4, 0x87, 0x4c, 0x6a, 0x48, 
+0xc5, 0x2f, 0xe9, 0x7d, 0xd0, 0xf7, 0x0f, 0x22, 
+0x3c, 0x08, 0xf9, 0x27, 0x25, 0x26, 0x42, 0x39, 
+0x8a, 0x45, 0xb1, 0x00, 0x38, 0xb1, 0xd4, 0x05, 
+0xc0, 0x11, 0x56, 0x00, 0x58, 0xdf, 0x57, 0x0b, 
+0x96, 0xb7, 0x56, 0x21, 0xf6, 0x82, 0xd5, 0xad, 
+0x8a, 0x84, 0x80, 0x50, 0x3e, 0x80, 0x1f, 0x14, 
+0x74, 0x9a, 0x4b, 0x50, 0xf0, 0xfe, 0x2e, 0x70, 
+0x78, 0x51, 0x54, 0x2d, 0x6c, 0xb7, 0xa2, 0x11, 
+0x82, 0x77, 0x75, 0x43, 0xe2, 0xf8, 0xf8, 0xa2, 
+0x0f, 0xfe, 0xa9, 0x12, 0x00, 0x84, 0xfc, 0xb9, 
+0x20, 0xcd, 0x7e, 0xd9, 0x43, 0xd5, 0x50, 0x8b, 
+0x07, 0x7e, 0x6a, 0x7a, 0xd3, 0xa0, 0xa4, 0xbf, 
+0x40, 0xda, 0xf5, 0xaf, 0xaf, 0xe0, 0xdf, 0x98, 
+0xa1, 0x83, 0x7f, 0x9d, 0x34, 0xf8, 0xa7, 0xa6, 
+0xfb, 0x17, 0x21, 0x17, 0x76, 0x86, 0x66, 0x28, 
+0x1f, 0xfd, 0x6b, 0xb8, 0xf3, 0x1f, 0xa2, 0xd6, 
+0xce, 0xbf, 0x9f, 0xf2, 0xe0, 0x9f, 0xc0, 0xe8, 
+0x5f, 0x76, 0xe7, 0x9f, 0x90, 0x31, 0xe3, 0xfe, 
+0x5f, 0x90, 0x77, 0xff, 0x92, 0xc2, 0x9f, 0xa7, 
+0x15, 0x5c, 0xfa, 0x7b, 0x8c, 0x7f, 0xe9, 0xcf, 
+0xe2, 0x65, 0x2b, 0xc8, 0x4f, 0x2e, 0x90, 0xec, 
+0xfc, 0xb3, 0xa3, 0x7f, 0x36, 0xf8, 0x97, 0x9b, 
+0x9b, 0x0b, 0x7b, 0xbc, 0x22, 0x74, 0xb4, 0xf3, 
+0xaf, 0xde, 0xe8, 0x5f, 0xd9, 0xce, 0x7f, 0x90, 
+0xcc, 0xce, 0x3f, 0x77, 0xf4, 0x2f, 0x71, 0xff, 
+0x48, 0xfe, 0xbb, 0xaf, 0x88, 0x01, 0xbb, 0x55, 
+0x41, 0x8b, 0x26, 0xf8, 0xf7, 0xd8, 0xc4, 0x97, 
+0xb0, 0x26, 0xc3, 0x03, 0x8c, 0x24, 0xee, 0xdf, 
+0x03, 0x8a, 0xea, 0xab, 0x19, 0x51, 0x46, 0xf2, 
+0x19, 0x64, 0xab, 0x83, 0x6c, 0x78, 0x10, 0xa1, 
+0x46, 0x0a, 0x9b, 0x0c, 0x41, 0xfe, 0x64, 0x83, 
+0x84, 0x90, 0x3f, 0x19, 0xff, 0xd7, 0xa2, 0x10, 
+0xc8, 0x4d, 0x4f, 0x67, 0x05, 0xc0, 0x99, 0x25, 
+0x2b, 0x00, 0x90, 0x6c, 0xdf, 0x91, 0x8c, 0xfe, 
+0x1f, 0xab, 0x07, 0xf3, 0x5b, 0x2b, 0xc0, 0xfc, 
+0x96, 0x0a, 0xb0, 0xb8, 0xa5, 0x12, 0x45, 0x40, 
+0x35, 0x4f, 0x08, 0xd8, 0x70, 0x84, 0x80, 0x6c, 
+0x3e, 0x40, 0xab, 0x41, 0xc1, 0x87, 0xa5, 0x1b, 
+0x03, 0x8e, 0x6f, 0x35, 0x41, 0x68, 0x6a, 0x2f, 
+0x24, 0xcd, 0x2c, 0xfe, 0xe0, 0x9f, 0x32, 0xf7, 
+0xcf, 0xc5, 0x2e, 0x24, 0x79, 0x2e, 0xc2, 0x64, 
+0x41, 0x83, 0x7f, 0x34, 0xf8, 0x27, 0x43, 0xfe, 
+0x04, 0x6e, 0x85, 0x59, 0x4a, 0xeb, 0x7e, 0x55, 
+0xee, 0xfc, 0xaf, 0x94, 0xdd, 0xf9, 0x0f, 0xd5, 
+0x78, 0xe7, 0xdf, 0x5d, 0xe5, 0xce, 0xbf, 0x93, 
+0xbc, 0xfb, 0x47, 0xf2, 0x77, 0xfb, 0xc0, 0x13, 
+0xca, 0xa2, 0xca, 0xe1, 0xf8, 0xd8, 0x09, 0xf8, 
+0xe6, 0xc4, 0x37, 0xf0, 0xf5, 0x89, 0xaf, 0xe1, 
+0xab, 0x13, 0x5f, 0x61, 0x5f, 0xc6, 0x57, 0x30, 
+0xd8, 0x31, 0x04, 0x39, 0xa1, 0xb9, 0xe0, 0xfc, 
+0x91, 0x9b, 0xe4, 0xd2, 0x1f, 0xef, 0xd4, 0xaf, 
+0x78, 0xf4, 0x6f, 0xfe, 0x92, 0x15, 0xec, 0x2d, 
+0xab, 0x91, 0xdb, 0xf9, 0xe7, 0x8e, 0xfe, 0x93, 
+0xa2, 0x92, 0xc1, 0x1c, 0x9f, 0xfd, 0x6b, 0x67, 
+0xe7, 0xdf, 0x55, 0x8d, 0x9d, 0x7f, 0x5f, 0xa5, 
+0x3b, 0xff, 0xfe, 0x2a, 0x76, 0xfe, 0xb9, 0xc1, 
+0x3f, 0x86, 0xfc, 0x11, 0xbb, 0xc5, 0x02, 0x20, 
+0xe4, 0x96, 0x28, 0x78, 0x69, 0x6c, 0x71, 0x04, 
+0xff, 0x56, 0x74, 0x6d, 0x66, 0xc8, 0x9f, 0x15, 
+0x00, 0xdb, 0x53, 0xc2, 0x24, 0x29, 0xff, 0xf6, 
+0xf6, 0x76, 0x66, 0x32, 0x43, 0xfe, 0x8e, 0x48, 
+0x61, 0x13, 0xbb, 0xfe, 0xa9, 0xcf, 0x1f, 0x64, 
+0xbb, 0x84, 0x7d, 0xee, 0x5f, 0x81, 0x62, 0x31, 
+0x03, 0xd7, 0xff, 0x9a, 0xf0, 0x35, 0x24, 0x16, 
+0x00, 0xdf, 0x2d, 0x65, 0x01, 0xd0, 0xc3, 0x0a, 
+0x00, 0xcb, 0x7b, 0xaa, 0x61, 0xdb, 0x2d, 0xa5, 
+0x60, 0x76, 0x4b, 0x19, 0x8a, 0x80, 0x72, 0x14, 
+0x01, 0x44, 0x08, 0x54, 0x31, 0x42, 0xc0, 0x8a, 
+0x2b, 0x04, 0x6e, 0x23, 0x42, 0x40, 0xfa, 0x58, 
+0x40, 0x17, 0x41, 0x41, 0xf2, 0xcf, 0x9c, 0x9f, 
+0x68, 0x67, 0xae, 0x0d, 0x92, 0xff, 0x36, 0x97, 
+0xcf, 0x0e, 0x43, 0x78, 0x69, 0xff, 0x92, 0x08, 
+0xfe, 0xcd, 0x8f, 0xfc, 0x69, 0xf0, 0x8f, 0x06, 
+0xff, 0xe4, 0x05, 0x80, 0x29, 0xc2, 0xb2, 0x33, 
+0x5b, 0xc3, 0x9d, 0xff, 0x48, 0x8d, 0x76, 0xfe, 
+0xfd, 0xd5, 0xda, 0xf9, 0xf7, 0xe4, 0xbb, 0xff, 
+0xd7, 0x95, 0x07, 0xff, 0xe2, 0xed, 0x13, 0x61, 
+0xe0, 0xd0, 0x20, 0xfc, 0xf6, 0xeb, 0x6f, 0x92, 
+0xba, 0x5f, 0xa1, 0x9d, 0x7f, 0x92, 0xfa, 0x27, 
+0xc1, 0xbf, 0x8e, 0x43, 0x9d, 0xe0, 0xb7, 0x21, 
+0x40, 0x4a, 0xfe, 0x1c, 0xf7, 0x1f, 0xed, 0x11, 
+0x23, 0xa9, 0xfb, 0xe5, 0x8e, 0xfe, 0xd9, 0xe0, 
+0x5f, 0x7a, 0x72, 0x06, 0x33, 0x65, 0xd0, 0x66, 
+0xdd, 0xef, 0xbc, 0x77, 0xfe, 0x35, 0x18, 0xfd, 
+0x73, 0xdd, 0xff, 0x9e, 0xcb, 0x63, 0x21, 0xe2, 
+0xf2, 0x38, 0xf8, 0xa8, 0xdc, 0x7e, 0xc1, 0x07, 
+0xff, 0x88, 0xfb, 0x5f, 0x87, 0xa5, 0x3f, 0x5c, 
+0x01, 0xd0, 0x23, 0x73, 0xee, 0x97, 0xe4, 0x3b, 
+0x48, 0x79, 0x93, 0x21, 0xc8, 0x9f, 0x3c, 0x82, 
+0x20, 0xc5, 0x3f, 0x84, 0xfc, 0x73, 0xb2, 0xb2, 
+0x20, 0x2f, 0x2d, 0x0d, 0x1a, 0xf0, 0xf5, 0x33, 
+0x89, 0xbd, 0x12, 0x62, 0x01, 0xf0, 0xe3, 0x92, 
+0x14, 0x00, 0x48, 0xac, 0x9f, 0x49, 0xdd, 0xff, 
+0x01, 0x30, 0xbd, 0xa5, 0x18, 0xb6, 0xde, 0x5c, 
+0x0c, 0xdb, 0x6e, 0xc6, 0x96, 0x2c, 0x9e, 0x10, 
+0xa8, 0x54, 0x20, 0x04, 0xf4, 0x10, 0x14, 0x24, 
+0x1b, 0x03, 0xcf, 0xb5, 0x32, 0x6d, 0x82, 0xe4, 
+0xbf, 0xd3, 0x7d, 0xf3, 0x11, 0x88, 0x3c, 0x38, 
+0xa4, 0xb5, 0xe0, 0x5f, 0xac, 0x01, 0x83, 0x7f, 
+0xb2, 0xe4, 0xaf, 0x1d, 0xf7, 0x4f, 0x83, 0x7f, 
+0xcb, 0x25, 0xf8, 0xc7, 0x25, 0x7f, 0xd3, 0xd1, 
+0x1c, 0x06, 0x11, 0x8e, 0x29, 0x1c, 0xf2, 0x4f, 
+0xd4, 0xb8, 0xee, 0x57, 0xf9, 0xce, 0x7f, 0xa0, 
+0xc6, 0x3b, 0xff, 0x4e, 0x0a, 0x76, 0xfe, 0x1d, 
+0xdf, 0x70, 0x81, 0x8e, 0xbd, 0x9d, 0x82, 0x75, 
+0xbf, 0xc4, 0x15, 0x92, 0x67, 0xc1, 0x42, 0x3b, 
+0xff, 0x24, 0xf5, 0x3f, 0x34, 0x30, 0x0c, 0x9e, 
+0x6b, 0x7c, 0x78, 0xe4, 0x4f, 0x9e, 0xfb, 0xc7, 
+0xf9, 0xc6, 0x33, 0xcf, 0x8e, 0x85, 0x76, 0xfe, 
+0x13, 0x77, 0x27, 0x81, 0xd5, 0x73, 0x3b, 0x34, 
+0xda, 0xf9, 0x57, 0x6b, 0xf4, 0x2f, 0xb3, 0xf3, 
+0xef, 0xa6, 0x83, 0x9d, 0xff, 0x30, 0x41, 0xf2, 
+0x47, 0x5c, 0x16, 0x07, 0xa6, 0xce, 0xde, 0x0b, 
+0x3e, 0xf8, 0xf7, 0x72, 0x8b, 0xa9, 0x84, 0xfc, 
+0x09, 0x9c, 0xd2, 0x22, 0x61, 0x21, 0xfd, 0x20, 
+0x42, 0x91, 0x90, 0x3f, 0x29, 0xfd, 0x29, 0xc5, 
+0x29, 0x51, 0x0d, 0x8a, 0x46, 0x42, 0xfe, 0xa4, 
+0x77, 0x42, 0x2c, 0x00, 0xfe, 0xb9, 0xe4, 0x04, 
+0x00, 0x92, 0xe9, 0xd9, 0x88, 0x51, 0x56, 0x00, 
+0x98, 0xdf, 0x5d, 0x01, 0x26, 0x37, 0x17, 0x80, 
+0xe9, 0xcd, 0x85, 0x28, 0x02, 0x8a, 0x38, 0x42, 
+0xa0, 0x0c, 0x51, 0xce, 0x79, 0x2c, 0x20, 0x15, 
+0x02, 0x7a, 0x0d, 0x0a, 0x92, 0x6a, 0xe1, 0x15, 
+0xa2, 0x6a, 0x61, 0x72, 0x67, 0xc0, 0xdb, 0xb6, 
+0x0d, 0xa2, 0x3b, 0x46, 0x16, 0x7d, 0xf0, 0x4f, 
+0xa7, 0xa3, 0x7f, 0x1a, 0xfc, 0x5b, 0xda, 0xc1, 
+0x3f, 0x01, 0x01, 0xe0, 0x1b, 0x9b, 0x2e, 0x19, 
+0xfd, 0xc7, 0xcd, 0xa9, 0xee, 0x77, 0x97, 0xea, 
+0xba, 0xdf, 0x0f, 0xf8, 0xa3, 0x7f, 0x4f, 0x55, 
+0x75, 0xbf, 0x32, 0xee, 0xdf, 0xf1, 0x75, 0x17, 
+0x38, 0x3a, 0x7c, 0x4c, 0xf0, 0xd2, 0x9f, 0xd0, 
+0xce, 0x3f, 0x49, 0xfd, 0xcb, 0xee, 0xfc, 0x27, 
+0xf9, 0x26, 0xcb, 0x05, 0xff, 0xac, 0x5f, 0xdb, 
+0x0e, 0x7b, 0x2b, 0xf7, 0xf2, 0x47, 0xff, 0x05, 
+0x45, 0xb0, 0xcb, 0x31, 0x1c, 0xb6, 0x3e, 0x6c, 
+0xae, 0x56, 0xdd, 0xaf, 0xf2, 0x9d, 0x7f, 0x67, 
+0x8d, 0x77, 0xfe, 0xbd, 0xb4, 0xb0, 0xf3, 0x2f, 
+0x3b, 0xfa, 0x67, 0xdd, 0x7f, 0xe4, 0x65, 0xf1, 
+0xe0, 0xf9, 0x52, 0xf8, 0x82, 0x0e, 0xfe, 0x11, 
+0xf7, 0xbf, 0x11, 0x8b, 0x7e, 0x24, 0x02, 0x00, 
+0x43, 0x80, 0x93, 0xa7, 0x8f, 0x2e, 0x18, 0xf2, 
+0x27, 0xaf, 0x25, 0x76, 0xdf, 0xbf, 0x02, 0x1f, 
+0x41, 0x94, 0xe2, 0xa3, 0x88, 0x21, 0x3c, 0x22, 
+0xf5, 0x1f, 0x9c, 0x40, 0xcd, 0xa2, 0xd8, 0x14, 
+0x0b, 0x80, 0x9f, 0x97, 0xa2, 0x00, 0xd8, 0xc0, 
+0x92, 0xbf, 0xcd, 0xa3, 0x75, 0x60, 0x7c, 0x53, 
+0x2e, 0x6c, 0xb9, 0x09, 0x1b, 0xb4, 0x6e, 0xca, 
+0x17, 0x10, 0x02, 0xa5, 0x0a, 0x84, 0xc0, 0x5c, 
+0x82, 0x82, 0xcd, 0x4a, 0x82, 0x82, 0x5d, 0xaa, 
+0x83, 0x82, 0xb8, 0x31, 0xe0, 0xf8, 0x92, 0xa8, 
+0x5a, 0xd8, 0x16, 0x1f, 0x0f, 0xf8, 0xf9, 0x76, 
+0x40, 0xec, 0xe0, 0x88, 0x56, 0x82, 0x7f, 0x31, 
+0x06, 0x0c, 0xfe, 0xc9, 0x92, 0xff, 0x2e, 0x35, 
+0x46, 0xff, 0x34, 0xf8, 0x47, 0x83, 0x7f, 0x5c, 
+0xf2, 0x37, 0x19, 0xcd, 0x06, 0xbb, 0x9a, 0x4c, 
+0x15, 0xa3, 0x7f, 0xf5, 0x77, 0xfe, 0x03, 0xd5, 
+0xd9, 0xf9, 0x67, 0x46, 0xff, 0x9a, 0xed, 0xfc, 
+0x77, 0xd6, 0x76, 0xc9, 0x7d, 0x10, 0xcb, 0xd6, 
+0xfd, 0x0a, 0xed, 0xfc, 0xb3, 0x75, 0xbf, 0xe4, 
+0xd8, 0x8f, 0xd7, 0x5a, 0x1f, 0xb9, 0x9d, 0xff, 
+0x8d, 0x0f, 0x1a, 0x33, 0xa7, 0x7e, 0x23, 0xdc, 
+0x70, 0x7f, 0x3b, 0x20, 0x1e, 0x82, 0x2c, 0x42, 
+0xc0, 0xfc, 0x29, 0xab, 0x79, 0xd6, 0xfd, 0x3a, 
+0xa8, 0x51, 0xf7, 0xeb, 0xc1, 0x1b, 0xfd, 0xbb, 
+0x6b, 0xa1, 0xee, 0x57, 0xd5, 0xe8, 0x3f, 0xf2, 
+0x32, 0x91, 0x00, 0x88, 0xf8, 0x53, 0x3c, 0xbc, 
+0xda, 0x6b, 0xb9, 0x60, 0x83, 0x7f, 0x6f, 0x34, 
+0x98, 0x23, 0xf1, 0x7b, 0x4a, 0x04, 0x80, 0x77, 
+0x76, 0xfc, 0x82, 0x21, 0x7f, 0xf2, 0x3a, 0x63, 
+0x9f, 0xfb, 0x17, 0xe3, 0x23, 0xa2, 0x3c, 0x0c, 
+0xfd, 0x75, 0x61, 0x05, 0xf0, 0xdf, 0xf0, 0xb1, 
+0xd3, 0x0f, 0xf8, 0xda, 0x3b, 0x82, 0x8f, 0x93, 
+0xc4, 0x02, 0xe0, 0xd7, 0x25, 0x25, 0x00, 0x90, 
+0x3c, 0xcf, 0x43, 0xcc, 0xb2, 0x02, 0x60, 0xeb, 
+0x9d, 0xc5, 0x60, 0x74, 0x53, 0x16, 0x8a, 0x80, 
+0x1c, 0x85, 0x42, 0x80, 0x4c, 0x03, 0x58, 0x21, 
+0x60, 0xce, 0x13, 0x02, 0x86, 0x09, 0x0a, 0xba, 
+0x3e, 0xd8, 0x89, 0x1b, 0x03, 0xa2, 0xa0, 0xa0, 
+0xfd, 0xcb, 0x8d, 0x10, 0x14, 0xd9, 0x85, 0x67, 
+0x78, 0x47, 0x69, 0xf0, 0x8f, 0x06, 0xff, 0x96, 
+0x55, 0xf0, 0x4f, 0x56, 0x00, 0x6c, 0x1d, 0xcc, 
+0x86, 0x18, 0x63, 0xc5, 0xa3, 0x7f, 0xee, 0xce, 
+0xff, 0x2e, 0x55, 0x3b, 0xff, 0xcc, 0xe8, 0x5f, 
+0xb3, 0x9d, 0x7f, 0x17, 0x15, 0x3b, 0xff, 0x69, 
+0xee, 0x19, 0x82, 0xcf, 0x60, 0xc9, 0xe8, 0xff, 
+0x1f, 0x3f, 0xfd, 0x03, 0x1a, 0x8a, 0x9a, 0xa0, 
+0x28, 0xa2, 0x18, 0xf2, 0x76, 0xe5, 0x43, 0x53, 
+0x79, 0x13, 0x4c, 0x4f, 0x4c, 0x8b, 0x76, 0xfe, 
+0x39, 0x75, 0xbf, 0x8d, 0xb5, 0x8d, 0x18, 0x04, 
+0x34, 0x65, 0x82, 0x7f, 0x36, 0x6f, 0xec, 0x80, 
+0xf4, 0x3d, 0x19, 0x90, 0x14, 0x9c, 0x0c, 0xfe, 
+0x26, 0x01, 0xb0, 0xf9, 0x81, 0x2d, 0x60, 0xf4, 
+0x80, 0xe8, 0xcc, 0xaf, 0x31, 0x7b, 0xe9, 0x8f, 
+0xad, 0xfb, 0x55, 0xb9, 0xf3, 0x6f, 0xab, 0x74, 
+0xe7, 0xdf, 0x41, 0x9d, 0x9d, 0xff, 0x39, 0x8d, 
+0xfe, 0xc3, 0xe4, 0x46, 0xff, 0xa1, 0x72, 0xa3, 
+0x7f, 0x14, 0x6e, 0x97, 0xc7, 0x48, 0x46, 0xff, 
+0x84, 0xfc, 0xa3, 0x2e, 0x4d, 0x80, 0xe8, 0x4b, 
+0x13, 0x61, 0x75, 0xa2, 0x8b, 0xfe, 0x83, 0x7f, 
+0xea, 0xb8, 0xff, 0xf1, 0xd5, 0xb0, 0x89, 0x71, 
+0xff, 0x22, 0x01, 0x60, 0x9c, 0xe9, 0xa5, 0xf2, 
+0xdc, 0xaf, 0x3e, 0x9f, 0xfb, 0x93, 0xae, 0x7f, 
+0x42, 0xfe, 0x99, 0x48, 0xfc, 0x24, 0xf4, 0x77, 
+0x04, 0xc3, 0xa3, 0x5f, 0x63, 0xd6, 0xe4, 0x9f, 
+0xf8, 0xf8, 0xa9, 0xbf, 0xbb, 0x1b, 0x8a, 0xb2, 
+0xb3, 0x59, 0x01, 0xf0, 0xc7, 0x52, 0x13, 0x00, 
+0xdb, 0x24, 0x6b, 0x7f, 0x8f, 0xec, 0x83, 0x4d, 
+0x37, 0xa6, 0xc3, 0xe6, 0x1b, 0x33, 0x10, 0x99, 
+0x28, 0x04, 0xb2, 0x19, 0x21, 0xb0, 0x85, 0x23, 
+0x04, 0x4c, 0x19, 0x21, 0x20, 0x7d, 0x2c, 0xb0, 
+0x70, 0x82, 0x82, 0xe2, 0x6a, 0xe1, 0xe7, 0x45, 
+0xd5, 0xc2, 0x8e, 0xef, 0xe2, 0xc6, 0x40, 0x56, 
+0x2f, 0x12, 0x3e, 0x0d, 0xfe, 0xd1, 0xe0, 0x9f, 
+0x66, 0xee, 0x7f, 0xb1, 0x06, 0xff, 0xb8, 0xe4, 
+0x2f, 0x42, 0x16, 0x84, 0xf8, 0x24, 0x6b, 0x50, 
+0xf7, 0xab, 0xd9, 0xce, 0xbf, 0xb7, 0xac, 0xfb, 
+0x17, 0x1c, 0xfd, 0x2b, 0xde, 0xf9, 0x3f, 0x35, 
+0x79, 0x5a, 0xee, 0xc3, 0x98, 0x04, 0xff, 0x06, 
+0x8e, 0x0c, 0x82, 0xc3, 0xdb, 0xce, 0x92, 0x33, 
+0xbf, 0xdb, 0x9e, 0xb2, 0x60, 0xbe, 0xee, 0x6e, 
+0xee, 0xe1, 0x8d, 0xfe, 0x87, 0x06, 0x87, 0xc0, 
+0xf5, 0x0b, 0x0f, 0xc6, 0xfd, 0x3b, 0x7d, 0xea, 
+0x02, 0x4d, 0x8d, 0x4d, 0x4c, 0xea, 0x9f, 0x0d, 
+0xfe, 0xb9, 0x7c, 0x8e, 0x77, 0xe5, 0x19, 0xf2, 
+0x37, 0x55, 0xe3, 0xd2, 0x9f, 0xf2, 0x9d, 0x7f, 
+0x5b, 0x9d, 0xec, 0xfc, 0x87, 0xa8, 0x11, 0xfc, 
+0x8b, 0xe0, 0xed, 0xfc, 0x0b, 0x8d, 0xfe, 0xa3, 
+0x2e, 0x23, 0xe4, 0x8f, 0xb8, 0x24, 0x11, 0xb6, 
+0x6f, 0x0e, 0x5a, 0x90, 0xc1, 0xbf, 0x77, 0xf6, 
+0xd9, 0x88, 0xc9, 0x5f, 0x24, 0x00, 0x54, 0x9d, 
+0xfb, 0xd5, 0xe7, 0x0f, 0x92, 0x11, 0x21, 0xe4, 
+0x4f, 0x08, 0x3e, 0x3f, 0x23, 0x03, 0xea, 0xf1, 
+0x7f, 0x1f, 0xc3, 0xd7, 0xd9, 0xaf, 0x28, 0x44, 
+0xc7, 0x70, 0xc2, 0x54, 0x85, 0xc1, 0xd1, 0x32, 
+0x9c, 0x0a, 0x88, 0x05, 0x00, 0x09, 0x09, 0x5e, 
+0xb8, 0x24, 0x04, 0x00, 0x12, 0xe5, 0x85, 0x88, 
+0xd3, 0xac, 0x00, 0xd8, 0x72, 0x47, 0x1e, 0x6c, 
+0xbc, 0x31, 0x15, 0x91, 0x26, 0x16, 0x02, 0x28, 
+0x02, 0x6e, 0xcc, 0x52, 0x20, 0x04, 0x0a, 0x79, 
+0x42, 0x40, 0xdb, 0x41, 0x41, 0xc7, 0xf9, 0x04, 
+0x05, 0x9f, 0x6e, 0x03, 0xdb, 0x67, 0xc4, 0x1b, 
+0x03, 0x2b, 0x0f, 0xc3, 0xae, 0xaa, 0xfe, 0x65, 
+0x15, 0xfc, 0xdb, 0x49, 0x83, 0x7f, 0xcb, 0x36, 
+0xf8, 0x27, 0x25, 0x7f, 0x91, 0x00, 0x70, 0xcd, 
+0x48, 0x15, 0x8f, 0xfe, 0x35, 0xdb, 0xf9, 0x0f, 
+0x96, 0x75, 0xff, 0x8a, 0x46, 0xff, 0x1a, 0xec, 
+0xfc, 0xdb, 0x73, 0x76, 0xfe, 0x23, 0xcc, 0xa3, 
+0x04, 0x47, 0xff, 0x53, 0xfd, 0x53, 0xb0, 0xfd, 
+0x65, 0x3b, 0xe9, 0xce, 0xff, 0x53, 0xa2, 0x9d, 
+0xff, 0x8c, 0xa0, 0x4c, 0x49, 0xf0, 0x8f, 0xd4, 
+0xfd, 0x92, 0xd1, 0x7f, 0xd6, 0x9e, 0x6c, 0xc9, 
+0xe8, 0x3f, 0xc6, 0x33, 0x96, 0x59, 0x1b, 0xe3, 
+0xee, 0xfc, 0xe7, 0xa4, 0xe4, 0x48, 0xc8, 0x9f, 
+0x71, 0xff, 0xbc, 0xd1, 0xbf, 0x85, 0x1a, 0x75, 
+0xbf, 0x76, 0x5a, 0xaf, 0xfb, 0xf5, 0x51, 0x59, 
+0xf7, 0xab, 0x7a, 0xe7, 0x9f, 0x0d, 0xfe, 0x45, 
+0xca, 0xb8, 0xff, 0x98, 0x4b, 0x92, 0x60, 0xe7, 
+0x3d, 0x31, 0x0b, 0x2e, 0xf8, 0xf7, 0xf8, 0xd8, 
+0x6a, 0x3c, 0xf8, 0xe3, 0x23, 0x11, 0x00, 0x5b, 
+0xd2, 0xbd, 0xe1, 0x6f, 0xff, 0xfc, 0x69, 0x41, 
+0x90, 0x3f, 0x79, 0x2d, 0xb1, 0xcf, 0xfd, 0x8b, 
+0xb0, 0x17, 0x62, 0x2f, 0x06, 0x45, 0x27, 0x70, 
+0xb2, 0x44, 0x84, 0xe8, 0x51, 0x7c, 0xad, 0x1d, 
+0xc0, 0xd7, 0x51, 0x01, 0xb6, 0x00, 0x76, 0xe1, 
+0x29, 0x69, 0x8e, 0x00, 0xf8, 0xf3, 0x52, 0x11, 
+0x00, 0x76, 0x2c, 0xf9, 0x5b, 0x3d, 0x5c, 0x03, 
+0xeb, 0x6f, 0x48, 0x82, 0x0d, 0x37, 0x24, 0x23, 
+0x52, 0x18, 0x21, 0x40, 0x44, 0xc0, 0x26, 0x76, 
+0x1a, 0x20, 0x23, 0x04, 0x84, 0xf3, 0x01, 0xac, 
+0x10, 0x90, 0x3e, 0x16, 0xe0, 0x0a, 0x01, 0x6b, 
+0x46, 0x08, 0xe8, 0x27, 0x28, 0xe8, 0x7e, 0xb7, 
+0xb8, 0x5a, 0xf8, 0x49, 0xf1, 0xc6, 0x80, 0xe9, 
+0x11, 0xd8, 0xd3, 0x34, 0x48, 0x83, 0x7f, 0x34, 
+0xf8, 0xb7, 0xa4, 0x83, 0x7f, 0x5c, 0xf2, 0xdf, 
+0x82, 0xb0, 0x6c, 0x4e, 0x67, 0xc8, 0x5f, 0x36, 
+0xf8, 0xb7, 0x5b, 0x76, 0xe7, 0x5f, 0x70, 0xf4, 
+0xbf, 0x53, 0xe3, 0xba, 0x5f, 0xe5, 0x3b, 0xff, 
+0x8e, 0x12, 0xf7, 0x5f, 0x19, 0x5b, 0x2d, 0x18, 
+0xfc, 0xdb, 0x63, 0x11, 0x29, 0x69, 0xfc, 0x63, 
+0x0b, 0x7f, 0x9c, 0xde, 0x77, 0x85, 0x99, 0xa9, 
+0x19, 0xde, 0xe8, 0xbf, 0xed, 0x70, 0x1b, 0x53, 
+0xef, 0xcb, 0xd6, 0xfd, 0xa6, 0x84, 0xa6, 0x32, 
+0xa9, 0x7f, 0xee, 0xce, 0x7f, 0x51, 0x7e, 0x11, 
+0x67, 0xf4, 0xbf, 0x8d, 0x57, 0xf7, 0xab, 0xed, 
+0x9d, 0x7f, 0x57, 0xa1, 0x9d, 0x7f, 0xb5, 0xea, 
+0x7e, 0x77, 0xaa, 0x57, 0xf7, 0x2b, 0x76, 0xff, 
+0x64, 0xf4, 0xbf, 0x47, 0x60, 0xf4, 0x4f, 0xc8, 
+0x3f, 0xf6, 0x12, 0x9c, 0xf6, 0x5c, 0x9c, 0x02, 
+0xef, 0xd4, 0xdb, 0x2c, 0xa8, 0xe0, 0x1f, 0x39, 
+0xf7, 0x6b, 0x94, 0xe3, 0x29, 0x11, 0x00, 0x31, 
+0x15, 0xf9, 0x0b, 0x82, 0xfc, 0xc9, 0x76, 0x09, 
+0xfb, 0xdc, 0x3f, 0x1f, 0x1b, 0x21, 0x4b, 0x50, 
+0x00, 0x0c, 0xf4, 0xf4, 0xc0, 0xbf, 0x30, 0xf1, 
+0x7f, 0x06, 0x37, 0x4d, 0x0e, 0xa3, 0x98, 0xcc, 
+0x44, 0xc2, 0x6f, 0x45, 0x61, 0x49, 0xfe, 0x37, 
+0x47, 0x00, 0xdc, 0xb8, 0xe8, 0x05, 0x00, 0x92, 
+0xe2, 0xa5, 0x88, 0xef, 0x58, 0x01, 0xb0, 0xf9, 
+0xb6, 0x2c, 0x58, 0x77, 0x7d, 0x02, 0xac, 0xbb, 
+0x21, 0x51, 0x46, 0x08, 0xa4, 0xc9, 0x09, 0x01, 
+0x63, 0x46, 0x08, 0xcc, 0x25, 0x28, 0x58, 0xad, 
+0x24, 0x28, 0x58, 0xaf, 0x24, 0x28, 0x78, 0x64, 
+0xce, 0x41, 0x41, 0x66, 0x63, 0x40, 0x5c, 0x2d, 
+0xbc, 0x03, 0xd7, 0x07, 0xbd, 0x9d, 0xda, 0x20, 
+0xb2, 0x7b, 0x78, 0xd9, 0x04, 0xff, 0x42, 0x96, 
+0x60, 0xf0, 0xcf, 0xdd, 0xc0, 0xc1, 0x3f, 0xdb, 
+0x05, 0x1c, 0xfc, 0xe3, 0x92, 0xff, 0x96, 0xd1, 
+0x4c, 0x06, 0xbb, 0xcd, 0xe3, 0x84, 0x47, 0xff, 
+0x1a, 0xec, 0xfc, 0x13, 0xf2, 0x57, 0xbd, 0xf3, 
+0xef, 0xa1, 0xf6, 0xce, 0x7f, 0xd7, 0xbe, 0x6e, 
+0xb9, 0xd1, 0xff, 0x0f, 0xdf, 0xfc, 0x55, 0x54, 
+0xf9, 0xcb, 0x75, 0xff, 0x4f, 0x9a, 0x43, 0x53, 
+0xd5, 0x21, 0x5e, 0xf0, 0x8f, 0xb4, 0xb4, 0x05, 
+0x98, 0x04, 0xf1, 0x82, 0x7f, 0x99, 0x51, 0x59, 
+0x72, 0x3b, 0xff, 0xa4, 0x59, 0xce, 0xf4, 0x41, 
+0x33, 0x95, 0xc1, 0xbf, 0xb9, 0xec, 0xfc, 0x3b, 
+0xc9, 0xed, 0xfc, 0x7b, 0xa9, 0xb1, 0xf3, 0x1f, 
+0xa4, 0xb5, 0x9d, 0x7f, 0xde, 0xe8, 0x9f, 0x15, 
+0x00, 0x17, 0x27, 0x43, 0x1c, 0x0a, 0x00, 0x23, 
+0x5f, 0xcf, 0x05, 0x12, 0xfc, 0x5b, 0x0d, 0x4f, 
+0x8c, 0xae, 0x01, 0xa3, 0x0c, 0x6f, 0x89, 0x00, 
+0x30, 0x49, 0xf5, 0x53, 0x78, 0xee, 0x57, 0xdf, 
+0x3f, 0xd2, 0x70, 0xc7, 0x9f, 0x90, 0x7f, 0x1a, 
+0x3e, 0xff, 0xcf, 0x45, 0x74, 0xb6, 0xb4, 0xc0, 
+0x5f, 0x71, 0xd5, 0x94, 0x80, 0x7c, 0x4d, 0xfe, 
+0x59, 0x03, 0x4e, 0x93, 0x4e, 0xe2, 0xe4, 0x89, 
+0x04, 0x52, 0x39, 0x02, 0xe0, 0xee, 0xa5, 0x20, 
+0x00, 0x3c, 0x58, 0xf2, 0xb7, 0x78, 0xa8, 0x1a, 
+0xd6, 0x5c, 0x1f, 0x8b, 0x88, 0x83, 0xb5, 0xd7, 
+0xc7, 0xa3, 0x08, 0xe0, 0x0a, 0x81, 0x14, 0x04, 
+0xf7, 0xb1, 0x00, 0x9b, 0x0f, 0xd0, 0x67, 0x50, 
+0xf0, 0xb0, 0x92, 0xa0, 0xa0, 0x9a, 0xd5, 0xc2, 
+0xf7, 0x61, 0xb5, 0xf0, 0x4b, 0xe2, 0x6a, 0xe1, 
+0xe7, 0x71, 0x63, 0x20, 0xa8, 0x03, 0xa2, 0x86, 
+0x47, 0x68, 0xf0, 0x8f, 0x06, 0xff, 0x74, 0x1e, 
+0xfc, 0xb3, 0xd6, 0x63, 0xf0, 0x4f, 0x48, 0x00, 
+0x78, 0x87, 0x25, 0xa9, 0x35, 0xfa, 0xdf, 0xa9, 
+0xb2, 0xee, 0x57, 0xb3, 0x9d, 0x7f, 0x47, 0x99, 
+0x9d, 0x7f, 0x5b, 0xce, 0xb1, 0x9f, 0xa6, 0xc2, 
+0xc3, 0x72, 0xc1, 0xbf, 0xef, 0xbf, 0xfe, 0x5e, 
+0x44, 0xfe, 0x1c, 0xf7, 0x1f, 0x69, 0x17, 0x2d, 
+0x37, 0xfa, 0x2f, 0xcb, 0x28, 0x97, 0x4b, 0xfd, 
+0x17, 0xa4, 0x15, 0xca, 0xed, 0xfc, 0x17, 0xe4, 
+0x17, 0x88, 0x04, 0x80, 0x84, 0xfc, 0xb5, 0xb8, 
+0xf3, 0xcf, 0x90, 0xbf, 0xbb, 0x1a, 0xa3, 0x7f, 
+0x7f, 0xa5, 0x75, 0xbf, 0x81, 0x1a, 0xd4, 0xfd, 
+0x72, 0x77, 0xfe, 0x85, 0xdc, 0x3f, 0x21, 0xff, 
+0xb8, 0x8b, 0x53, 0xc1, 0xfd, 0x9d, 0x5d, 0x0b, 
+0x22, 0xf8, 0xf7, 0x28, 0xba, 0xff, 0x4f, 0x8b, 
+0x9c, 0x44, 0xe4, 0x2f, 0x16, 0x00, 0x99, 0x07, 
+0x2a, 0x17, 0x04, 0xf9, 0x13, 0xa1, 0xc8, 0x3c, 
+0xf7, 0xc7, 0x0b, 0x7f, 0xc4, 0xe5, 0x13, 0xb7, 
+0x4f, 0x5c, 0xfe, 0xbf, 0x71, 0xed, 0x94, 0x4c, 
+0x01, 0xc8, 0x34, 0xa0, 0x16, 0x6b, 0xa3, 0xa7, 
+0xf0, 0x35, 0x47, 0x5e, 0x9f, 0xe4, 0x67, 0x22, 
+0x00, 0x48, 0x3f, 0x40, 0x40, 0x4e, 0xd6, 0xc6, 
+0x45, 0x2d, 0x00, 0x90, 0x04, 0xaf, 0x44, 0xfc, 
+0xc4, 0x0a, 0x80, 0x0d, 0xb7, 0xa4, 0xc0, 0x97, 
+0xd7, 0x45, 0xc1, 0xea, 0xeb, 0x63, 0xe4, 0x84, 
+0xc0, 0x7a, 0x46, 0x08, 0x88, 0xa7, 0x01, 0x82, 
+0x42, 0x40, 0x4b, 0x41, 0xc1, 0x5b, 0xe7, 0x1a, 
+0x14, 0x6c, 0x97, 0x3c, 0x16, 0x70, 0x55, 0x27, 
+0x28, 0x48, 0xaa, 0x85, 0x57, 0x88, 0x37, 0x06, 
+0x5e, 0x6b, 0x84, 0xc0, 0xb8, 0x2e, 0x88, 0x9e, 
+0xa0, 0xc1, 0x3f, 0x1a, 0xfc, 0x5b, 0x3a, 0xc1, 
+0x3f, 0x2e, 0xf9, 0x1b, 0x23, 0xec, 0x4a, 0x52, 
+0xd4, 0xd8, 0xf9, 0x0f, 0xd3, 0x78, 0xe7, 0xdf, 
+0x43, 0xd5, 0xce, 0x3f, 0x33, 0xfa, 0x17, 0x3e, 
+0xf6, 0x53, 0x1a, 0x51, 0xc6, 0x1b, 0xfd, 0xff, 
+0xfc, 0xf3, 0xcf, 0x4c, 0xd9, 0x8a, 0xe3, 0x3b, 
+0x2e, 0x12, 0xf2, 0xb7, 0x7e, 0x65, 0x07, 0x8c, 
+0x0e, 0x8e, 0xf1, 0x82, 0x7f, 0x3d, 0x9d, 0x3d, 
+0x60, 0xf5, 0xea, 0x76, 0x9e, 0x00, 0x20, 0x8f, 
+0x01, 0xaa, 0xcb, 0xab, 0xe5, 0xea, 0x7e, 0x93, 
+0x22, 0x92, 0x55, 0x04, 0xff, 0x34, 0x1d, 0xfd, 
+0xab, 0x0a, 0xfe, 0xf9, 0xf0, 0x77, 0xfe, 0xaf, 
+0xd5, 0x6c, 0xe7, 0x7f, 0xa7, 0x3a, 0x3b, 0xff, 
+0x02, 0xe4, 0xcf, 0x75, 0xff, 0xf1, 0x17, 0xa5, 
+0x42, 0xf4, 0x5f, 0x92, 0xe1, 0xc5, 0xe1, 0x6d, 
+0xbc, 0xd1, 0xff, 0xf3, 0x06, 0x08, 0xfe, 0x3d, 
+0x35, 0xbc, 0x0e, 0x8c, 0x30, 0xed, 0xcf, 0x0a, 
+0x80, 0x6d, 0x29, 0x01, 0x82, 0xe7, 0x7e, 0xf5, 
+0xfd, 0x83, 0xbc, 0x96, 0xd8, 0xe7, 0xfe, 0x64, 
+0xdd, 0x8f, 0x3c, 0xe7, 0x27, 0xcf, 0xfb, 0xc9, 
+0x14, 0x6a, 0x02, 0x5f, 0x63, 0x24, 0x07, 0x40, 
+0x42, 0x7f, 0xc3, 0xfd, 0xfd, 0xf0, 0x33, 0x16, 
+0x51, 0x9d, 0xc2, 0xde, 0x89, 0x46, 0x14, 0x97, 
+0xac, 0x00, 0x70, 0x2e, 0xcc, 0xfd, 0xc3, 0xb2, 
+0x34, 0x3f, 0x19, 0xf1, 0xe7, 0xc5, 0x2a, 0x00, 
+0x82, 0x25, 0xa5, 0x3f, 0x0f, 0x96, 0xc3, 0xca, 
+0xeb, 0xf6, 0xc0, 0xaa, 0xeb, 0x22, 0xc4, 0x22, 
+0x20, 0x5a, 0x22, 0x04, 0xd6, 0xf2, 0x84, 0x40, 
+0x92, 0x42, 0x21, 0xa0, 0x6e, 0x50, 0x70, 0x9b, 
+0x9a, 0x41, 0x41, 0x1b, 0x1d, 0x07, 0x05, 0x19, 
+0x21, 0x40, 0xaa, 0x85, 0x9f, 0x13, 0x6d, 0x0c, 
+0x38, 0x7d, 0x78, 0x08, 0x42, 0xf2, 0x7a, 0x68, 
+0xf0, 0x8f, 0x06, 0xff, 0x96, 0x44, 0xf0, 0x8f, 
+0x2f, 0x00, 0x32, 0xc0, 0xb4, 0x37, 0x1d, 0xf6, 
+0xac, 0x8d, 0x52, 0xbe, 0xf3, 0x2f, 0x30, 0xfa, 
+0x0f, 0x50, 0xab, 0xee, 0x57, 0xfd, 0x9d, 0x7f, 
+0xf6, 0xd8, 0x0f, 0xb9, 0xf4, 0x97, 0xe4, 0x92, 
+0x22, 0xb8, 0xf3, 0x5f, 0x9d, 0xba, 0x57, 0x12, 
+0xfc, 0xab, 0x4c, 0xab, 0x96, 0x1b, 0xfd, 0x47, 
+0x38, 0x46, 0xc9, 0xb9, 0x7f, 0xb7, 0x55, 0x1e, 
+0xbc, 0x63, 0x3f, 0x6c, 0xdd, 0x2f, 0x29, 0xfd, 
+0x99, 0xfb, 0xce, 0xbf, 0xa3, 0xc6, 0x3b, 0xff, 
+0x1e, 0x7a, 0xd9, 0xf9, 0x8f, 0x57, 0xe8, 0xfe, 
+0x09, 0xf9, 0x27, 0x5c, 0x94, 0x06, 0x09, 0x17, 
+0xa6, 0xc3, 0x67, 0x39, 0x0e, 0x06, 0x0d, 0xfe, 
+0x11, 0xf7, 0xbf, 0x32, 0xd7, 0x4d, 0xea, 0xfe, 
+0x11, 0xe5, 0xad, 0x07, 0x0d, 0x4e, 0xfe, 0x44, 
+0x64, 0xc6, 0xc6, 0xc6, 0x32, 0x02, 0x20, 0x1b, 
+0x13, 0xff, 0x24, 0xe1, 0x4f, 0x92, 0xfe, 0x64, 
+0x02, 0x45, 0x92, 0xff, 0xf5, 0x28, 0x22, 0xc9, 
+0x26, 0x40, 0x37, 0xde, 0x24, 0xf8, 0x11, 0xfb, 
+0x27, 0xbe, 0xc7, 0xea, 0xe9, 0xf6, 0xe6, 0x66, 
+0xc8, 0xc2, 0xb3, 0xc0, 0xac, 0x00, 0x70, 0x29, 
+0xc8, 0x01, 0x24, 0x7f, 0x82, 0xef, 0x11, 0x46, 
+0x96, 0xa5, 0x79, 0x67, 0x2d, 0x1a, 0x01, 0x80, 
+0x84, 0x77, 0x0d, 0xe2, 0x5f, 0xac, 0x00, 0x58, 
+0x73, 0x73, 0x1c, 0x7c, 0x71, 0x6d, 0x38, 0x8a, 
+0x80, 0xdd, 0x8c, 0x08, 0x58, 0x75, 0x5d, 0xa4, 
+0x02, 0x21, 0x20, 0x7d, 0x2c, 0xb0, 0x9e, 0x17, 
+0x14, 0x4c, 0x53, 0x18, 0x14, 0x64, 0x84, 0xc0, 
+0x82, 0x0e, 0x0a, 0x8a, 0xab, 0x85, 0x9f, 0x16, 
+0x6f, 0x0c, 0xac, 0x6d, 0x86, 0xb0, 0x9a, 0x7e, 
+0x1a, 0xfc, 0x33, 0xb8, 0xfb, 0xa7, 0xc1, 0x3f, 
+0x29, 0xf9, 0xcf, 0xcf, 0xfd, 0x13, 0x01, 0x40, 
+0x10, 0xe8, 0x10, 0x2b, 0x37, 0xfa, 0x0f, 0x53, 
+0x59, 0xf7, 0xab, 0x6e, 0xf0, 0xcf, 0x13, 0xa2, 
+0xcc, 0x31, 0x95, 0x6e, 0x16, 0xc3, 0x4c, 0x00, 
+0x84, 0xea, 0x7e, 0xb9, 0xc7, 0x7e, 0x88, 0x00, 
+0x08, 0xde, 0x18, 0xca, 0xab, 0xfb, 0x25, 0x1f, 
+0xcc, 0xa4, 0xee, 0x97, 0x74, 0xfd, 0xc7, 0x3a, 
+0xc6, 0x41, 0xc0, 0xa6, 0x20, 0x38, 0x76, 0xf4, 
+0x18, 0x2f, 0xf8, 0x57, 0x57, 0x5e, 0x27, 0xaa, 
+0xfc, 0x15, 0x07, 0xff, 0x18, 0x01, 0xf0, 0xa0, 
+0x11, 0x64, 0x44, 0x65, 0xca, 0xd5, 0xfd, 0x92, 
+0x63, 0x3f, 0x1e, 0xab, 0xbd, 0x35, 0x1a, 0xfd, 
+0x6b, 0xb4, 0xf3, 0x7f, 0xa3, 0x36, 0x76, 0xfe, 
+0xd5, 0xad, 0xfb, 0x8d, 0x51, 0x3a, 0xfa, 0x8f, 
+0x65, 0x46, 0xff, 0x52, 0x01, 0x90, 0x88, 0x02, 
+0xc0, 0xca, 0x22, 0xc0, 0xa0, 0xc1, 0xbf, 0x67, 
+0x07, 0x36, 0xe2, 0xc8, 0xdf, 0x5b, 0x42, 0xfe, 
+0x16, 0x29, 0x21, 0xf0, 0x07, 0xfc, 0x61, 0x70, 
+0x01, 0x90, 0x81, 0xe4, 0x4e, 0xc8, 0x3f, 0x05, 
+0x09, 0xbd, 0x18, 0x83, 0x7f, 0x64, 0xc7, 0x9f, 
+0xec, 0xfa, 0x93, 0x9d, 0x7f, 0xb2, 0xfb, 0x9f, 
+0x8e, 0x24, 0xdf, 0x82, 0xa5, 0x3f, 0xdf, 0x60, 
+0xe9, 0xd4, 0x3f, 0x50, 0x90, 0xf6, 0x75, 0x75, 
+0x31, 0x1d, 0x00, 0xfb, 0x71, 0xb2, 0xc4, 0x0a, 
+0x00, 0x37, 0xa9, 0x00, 0x40, 0xe4, 0x11, 0xb4, 
+0x20, 0x1e, 0x5a, 0x2c, 0x02, 0x20, 0x92, 0x25, 
+0xff, 0x6d, 0x0f, 0x94, 0xc0, 0x67, 0xd7, 0x86, 
+0xc2, 0xe7, 0xd7, 0x86, 0xa1, 0x08, 0xd8, 0x05, 
+0x5f, 0x5c, 0x17, 0x2e, 0x99, 0x06, 0xc8, 0x0b, 
+0x01, 0xf1, 0x34, 0x40, 0xa3, 0xa0, 0x60, 0x8e, 
+0x92, 0xa0, 0xe0, 0x5c, 0xab, 0x85, 0xb5, 0x1f, 
+0x14, 0x74, 0xbf, 0xa7, 0x57, 0x5a, 0x2d, 0x4c, 
+0x36, 0x06, 0x2c, 0x5a, 0x20, 0xbc, 0x79, 0x80, 
+0x06, 0xff, 0x68, 0xf0, 0x6f, 0xd1, 0x06, 0xff, 
+0xb6, 0x70, 0xc8, 0xdf, 0x78, 0x34, 0x1d, 0x5c, 
+0xe2, 0x13, 0x04, 0x46, 0xff, 0xe1, 0xfc, 0xba, 
+0xdf, 0x4f, 0x55, 0x8f, 0xfe, 0x65, 0x77, 0xfe, 
+0xfd, 0x3e, 0x0b, 0x80, 0xf1, 0xf6, 0x71, 0xc9, 
+0x07, 0xec, 0xdf, 0xbe, 0xfe, 0x1b, 0x04, 0xad, 
+0x09, 0x51, 0x38, 0xfa, 0x27, 0xe4, 0xcf, 0x9e, 
+0xf9, 0x9d, 0xec, 0x9d, 0x52, 0x58, 0xf7, 0x3b, 
+0x26, 0x33, 0xfa, 0xef, 0xef, 0xeb, 0x07, 0x87, 
+0x0f, 0x9c, 0xf9, 0xee, 0x1f, 0xc9, 0x3f, 0xdc, 
+0x7e, 0xb7, 0x5c, 0xf0, 0x8f, 0x5c, 0x93, 0x4b, 
+0x4b, 0x4a, 0x87, 0x6d, 0x0f, 0x59, 0x28, 0x19, 
+0xfd, 0xcb, 0x08, 0x00, 0xc1, 0xd1, 0xbf, 0x93, 
+0xc6, 0x75, 0xbf, 0x9e, 0x1a, 0xd6, 0xfd, 0x06, 
+0x0b, 0xd6, 0xfd, 0x2a, 0xd9, 0xf9, 0xbf, 0x54, 
+0xba, 0xf3, 0x2f, 0x3b, 0xfa, 0x67, 0xc9, 0x3f, 
+0xf1, 0xc2, 0x0c, 0x08, 0x7e, 0x34, 0x56, 0x8b, 
+0xa3, 0x7f, 0xcd, 0xdd, 0xff, 0x9a, 0x4c, 0x42, 
+0xfc, 0xd2, 0xf1, 0x7f, 0x43, 0x7f, 0xbb, 0xc1, 
+0xc9, 0x9f, 0x6c, 0x88, 0x10, 0xf2, 0x8f, 0xc3, 
+0xe7, 0xfe, 0xd9, 0x28, 0x00, 0xda, 0x8f, 0x1c, 
+0x81, 0xef, 0xb1, 0xe5, 0x8f, 0xb4, 0xfd, 0x91, 
+0xd6, 0x3f, 0xf2, 0x38, 0xe0, 0x20, 0x4e, 0x00, 
+0x8e, 0xe3, 0xd4, 0xe9, 0x17, 0x9c, 0x4a, 0x8d, 
+0xe1, 0xc4, 0xa9, 0x12, 0x5f, 0x4f, 0x95, 0xf8, 
+0x38, 0x69, 0x74, 0x70, 0x90, 0x21, 0x7f, 0x82, 
+0xa0, 0x7a, 0x7c, 0xff, 0xd7, 0x96, 0xb1, 0xe4, 
+0xcf, 0xe2, 0x57, 0xc4, 0x2e, 0xcb, 0xd2, 0xdc, 
+0x4b, 0x17, 0xac, 0x00, 0x40, 0x72, 0xbb, 0x19, 
+0xf1, 0x5f, 0x96, 0xe8, 0x56, 0xdd, 0x18, 0x01, 
+0x9f, 0x5e, 0x13, 0x82, 0x22, 0x60, 0x27, 0x47, 
+0x08, 0x84, 0xa3, 0x10, 0xd8, 0xcd, 0x79, 0x2c, 
+0x20, 0x15, 0x02, 0xfa, 0x0b, 0x0a, 0x56, 0x19, 
+0x24, 0x28, 0xe8, 0xc6, 0x54, 0x0b, 0x8b, 0x36, 
+0x06, 0x6c, 0x9f, 0xc6, 0x8d, 0x01, 0xb7, 0x36, 
+0xd8, 0xd3, 0x3b, 0x48, 0x83, 0x7f, 0x8b, 0x30, 
+0xf8, 0xe7, 0xbc, 0x24, 0x83, 0x7f, 0x73, 0x73, 
+0xff, 0x46, 0x28, 0x00, 0x2c, 0xeb, 0x52, 0x54, 
+0xd6, 0xfd, 0x06, 0xa9, 0x53, 0xf7, 0xcb, 0x3b, 
+0xf5, 0xeb, 0x05, 0xdf, 0x9f, 0xfa, 0x5e, 0xee, 
+0x83, 0xf6, 0xdb, 0xe3, 0xdf, 0x82, 0xdb, 0x7b, 
+0x9e, 0x82, 0xa3, 0x7f, 0x72, 0x81, 0x8f, 0x15, 
+0x00, 0x41, 0x1b, 0x77, 0x32, 0xe4, 0x4f, 0xd6, 
+0xb1, 0x84, 0xea, 0x7e, 0xb9, 0xc1, 0xbf, 0x94, 
+0xc0, 0x54, 0x1e, 0xf9, 0x1b, 0x3d, 0x6e, 0x02, 
+0x91, 0x6e, 0xd1, 0x82, 0xa3, 0xff, 0x5c, 0x0c, 
+0x70, 0xf9, 0x9b, 0x06, 0xca, 0x8c, 0xfe, 0x2d, 
+0x55, 0x8e, 0xfe, 0xb5, 0xbd, 0xf3, 0xef, 0xab, 
+0x72, 0xe7, 0x3f, 0x5c, 0x2e, 0xf8, 0xb7, 0x4b, 
+0x83, 0x9d, 0x7f, 0x6e, 0xf0, 0x2f, 0x5e, 0x3c, 
+0xfa, 0x27, 0x02, 0x20, 0xe9, 0x82, 0x0c, 0x48, 
+0xbe, 0x30, 0x13, 0x5e, 0x6b, 0xb3, 0x50, 0x23, 
+0xf8, 0x67, 0xa4, 0xf5, 0xe0, 0xdf, 0x0b, 0xe4, 
+0xdc, 0x2f, 0x43, 0xfe, 0x22, 0x01, 0xb0, 0x23, 
+0x75, 0x97, 0xc1, 0xc9, 0x9f, 0xbc, 0x96, 0xd8, 
+0xe7, 0xfe, 0xe9, 0x18, 0xfa, 0x3b, 0x84, 0x62, 
+0xe0, 0x34, 0xbe, 0xce, 0x48, 0xcf, 0x3f, 0xe9, 
+0xfb, 0x2f, 0x43, 0xd1, 0xb8, 0x17, 0xb3, 0x23, 
+0x93, 0x28, 0x36, 0xc9, 0x63, 0xa9, 0x59, 0x7c, 
+0xec, 0x54, 0x87, 0xa2, 0xb2, 0x10, 0x2f, 0x02, 
+0xf6, 0x76, 0x76, 0x62, 0x33, 0xe5, 0x4f, 0x12, 
+0x01, 0x10, 0xd2, 0x58, 0xc3, 0x7c, 0xfe, 0xd8, 
+0xb7, 0xd4, 0x82, 0x55, 0x45, 0x01, 0x47, 0x04, 
+0xe4, 0x12, 0x9c, 0x42, 0x7c, 0xb6, 0x50, 0x05, 
+0x40, 0x0a, 0x4b, 0xfe, 0x26, 0xf7, 0x15, 0xc0, 
+0xc7, 0xf8, 0x02, 0xfd, 0x04, 0x5f, 0xa0, 0x9f, 
+0x5c, 0x13, 0x0c, 0x9f, 0x5e, 0xcb, 0x15, 0x02, 
+0xbb, 0x24, 0x8f, 0x05, 0xe4, 0x85, 0xc0, 0xd2, 
+0x0f, 0x0a, 0xba, 0x3e, 0xc0, 0xd9, 0x18, 0x58, 
+0xd1, 0x00, 0xbe, 0x61, 0x1d, 0x10, 0x31, 0x32, 
+0x24, 0x25, 0xff, 0x29, 0x1a, 0xfc, 0xa3, 0xc1, 
+0x3f, 0xed, 0x06, 0xff, 0xb4, 0xe9, 0xfe, 0x8d, 
+0x65, 0xdc, 0x3f, 0x11, 0x00, 0xc6, 0x23, 0x69, 
+0x10, 0xba, 0x31, 0x42, 0x79, 0xdd, 0xaf, 0x86, 
+0x3b, 0xff, 0x51, 0xdb, 0x62, 0x14, 0x5f, 0x55, 
+0x4b, 0xd8, 0x2b, 0x38, 0xfa, 0x67, 0xc9, 0xdf, 
+0xf2, 0x39, 0x1b, 0xb0, 0x78, 0xd6, 0x1a, 0x0e, 
+0x16, 0x36, 0xf2, 0x2e, 0xfd, 0x11, 0xf7, 0x2f, 
+0x5b, 0xf7, 0x3b, 0x30, 0x30, 0x00, 0x85, 0x09, 
+0x78, 0xc8, 0x67, 0xc7, 0x6e, 0xf0, 0x33, 0x0e, 
+0x80, 0x58, 0x9f, 0x38, 0x74, 0x65, 0x95, 0x4c, 
+0xea, 0x5f, 0x36, 0xf8, 0x47, 0x46, 0xff, 0xe9, 
+0xc9, 0xe9, 0x60, 0xfe, 0x98, 0x95, 0x8a, 0xba, 
+0x5f, 0xe5, 0xc1, 0x3f, 0x7b, 0x55, 0x3b, 0xff, 
+0x37, 0xcc, 0x65, 0xe7, 0x3f, 0x54, 0xe3, 0x9d, 
+0x7f, 0x4d, 0x47, 0xff, 0x49, 0xe8, 0xfe, 0x93, 
+0x2f, 0xc8, 0x44, 0x64, 0xc1, 0x86, 0x5d, 0x6e, 
+0x3a, 0x08, 0xfe, 0x29, 0xef, 0xfb, 0x27, 0x02, 
+0x60, 0x5d, 0xba, 0x37, 0x4f, 0x00, 0xc8, 0x9e, 
+0xfb, 0xd5, 0xf7, 0x0f, 0x92, 0x2f, 0x61, 0x9f, 
+0xfb, 0xa7, 0xe3, 0xa9, 0x5f, 0x32, 0xce, 0x9f, 
+0xc1, 0xc9, 0x12, 0x21, 0x7a, 0x72, 0xe9, 0x8f, 
+0x5c, 0xfc, 0x23, 0x97, 0xff, 0x06, 0xf1, 0x04, 
+0x31, 0xd9, 0x02, 0x38, 0x83, 0xc2, 0xe0, 0x10, 
+0xae, 0x94, 0x66, 0x25, 0x25, 0x61, 0xdf, 0xc4, 
+0x61, 0xf8, 0x0e, 0xa7, 0x52, 0x3f, 0xe1, 0x6b, 
+0x34, 0x51, 0x2c, 0x00, 0x76, 0xd6, 0x57, 0x31, 
+0x9f, 0x37, 0xe4, 0xb3, 0xc5, 0x7e, 0xb0, 0x0e, 
+0x6c, 0x0e, 0x96, 0xb2, 0xe4, 0xcf, 0x41, 0x4e, 
+0x2d, 0xe2, 0xf6, 0x05, 0x23, 0x00, 0xc4, 0xc9, 
+0xff, 0x5f, 0x99, 0x73, 0xbf, 0x4f, 0xd4, 0xc3, 
+0x67, 0xd7, 0xef, 0x84, 0x8f, 0xae, 0xf6, 0x87, 
+0x8f, 0xae, 0x09, 0x90, 0x08, 0x81, 0x4f, 0x39, 
+0x42, 0x80, 0x4c, 0x03, 0x84, 0x85, 0xc0, 0x22, 
+0x09, 0x0a, 0xde, 0xae, 0x85, 0xa0, 0xe0, 0xa3, 
+0x1d, 0x60, 0xf7, 0x82, 0x28, 0x28, 0xe8, 0xf0, 
+0x66, 0x13, 0x04, 0x24, 0x75, 0xc9, 0x39, 0x7f, 
+0x1a, 0xfc, 0x53, 0x27, 0xf8, 0xd7, 0xb5, 0x04, 
+0x83, 0x7f, 0xd5, 0x06, 0x0d, 0xfe, 0x29, 0x17, 
+0x00, 0x7c, 0xf2, 0x17, 0x21, 0x0d, 0x3c, 0x7d, 
+0x62, 0x34, 0xaa, 0xfb, 0x55, 0xb5, 0xf3, 0x1f, 
+0xb9, 0x2d, 0x5a, 0xe1, 0x87, 0xee, 0x4f, 0xdf, 
+0xff, 0x04, 0x0e, 0xaf, 0x39, 0xf3, 0xdc, 0x3f, 
+0x8f, 0xfc, 0xc9, 0xbe, 0x3f, 0x16, 0xfe, 0xd8, 
+0xbf, 0xe5, 0x04, 0x27, 0x67, 0x4f, 0x32, 0xcf, 
+0xfe, 0xcf, 0xe0, 0x73, 0x58, 0xf6, 0xd2, 0x1f, 
+0x37, 0xf8, 0xd7, 0x87, 0x0e, 0xad, 0x0b, 0x9f, 
+0xc5, 0xb6, 0xe1, 0x98, 0xb6, 0x19, 0x03, 0x59, 
+0x4d, 0xf8, 0x8c, 0x56, 0x68, 0xe7, 0x9f, 0x8c, 
+0xfe, 0xb3, 0x32, 0xb2, 0xc0, 0x01, 0x7f, 0x4f, 
+0x8d, 0x77, 0xfe, 0x6f, 0x53, 0xbe, 0xf3, 0x3f, 
+0xf7, 0xba, 0x5f, 0xcd, 0x76, 0xfe, 0xc3, 0x55, 
+0xed, 0xfc, 0x2b, 0x18, 0xfd, 0x27, 0x88, 0x47, 
+0xff, 0x49, 0x62, 0xf2, 0x4f, 0x39, 0x1f, 0x5b, 
+0x20, 0x3f, 0xdb, 0xa5, 0x51, 0xf0, 0x4f, 0xa9, 
+0x00, 0x50, 0x73, 0xf4, 0xff, 0x72, 0xab, 0x29, 
+0x87, 0xfc, 0xbd, 0xc0, 0x29, 0xdd, 0xf0, 0xe7, 
+0x7e, 0x33, 0xb1, 0xc9, 0x8f, 0x90, 0x7f, 0x12, 
+0x3a, 0x7f, 0x76, 0x9c, 0xff, 0x3f, 0x7c, 0xf4, 
+0x74, 0x02, 0xa7, 0x4c, 0x0d, 0xf8, 0x1a, 0xca, 
+0xc5, 0x3e, 0x00, 0xd2, 0xf4, 0xf7, 0x37, 0x7c, 
+0x04, 0xf5, 0x03, 0x0a, 0xd1, 0x0e, 0x7c, 0x34, 
+0x90, 0x83, 0x42, 0x81, 0x24, 0xff, 0x4f, 0xa1, 
+0x18, 0x25, 0x1b, 0x2a, 0xc3, 0x28, 0x42, 0xd9, 
+0x09, 0xc0, 0xce, 0xba, 0x72, 0xe6, 0xb3, 0x85, 
+0x7c, 0x96, 0x90, 0xcf, 0x0e, 0xf2, 0x19, 0x61, 
+0xd3, 0x5d, 0x01, 0x96, 0x7b, 0xf3, 0x59, 0xf2, 
+0x67, 0xf1, 0xb3, 0x65, 0x49, 0x8e, 0x27, 0xe2, 
+0x82, 0x85, 0x20, 0x00, 0x1e, 0x90, 0x3c, 0xfb, 
+0x7f, 0xb0, 0x14, 0x3e, 0xb8, 0xda, 0x1b, 0x3e, 
+0xbc, 0xda, 0x17, 0xe1, 0x87, 0x22, 0xc0, 0x1f, 
+0x45, 0x80, 0xac, 0x10, 0x90, 0x3e, 0x16, 0x90, 
+0x17, 0x02, 0x91, 0x4a, 0x84, 0xc0, 0xd2, 0x0a, 
+0x0a, 0x92, 0x29, 0x01, 0x53, 0x2d, 0xfc, 0xac, 
+0x28, 0x28, 0xe8, 0xf4, 0xc9, 0x21, 0x08, 0x2e, 
+0xea, 0xa1, 0xc1, 0x3f, 0x1a, 0xfc, 0x5b, 0xf0, 
+0xc1, 0x3f, 0x2e, 0xf9, 0x6f, 0x46, 0xd8, 0xe2, 
+0xf5, 0x35, 0xee, 0xe8, 0x5f, 0xf9, 0xce, 0xbf, 
+0xbf, 0xca, 0x9d, 0x7f, 0x82, 0x7f, 0xfe, 0xf8, 
+0x2f, 0x85, 0x1f, 0xbc, 0xb9, 0x41, 0xf9, 0x52, 
+0xf7, 0xff, 0x82, 0xbc, 0xfb, 0x67, 0x0b, 0x7f, 
+0x9c, 0xde, 0x73, 0x85, 0xee, 0xc3, 0x3d, 0x70, 
+0x0a, 0xf7, 0xb0, 0x65, 0x77, 0xfe, 0xfb, 0x71, 
+0x15, 0xab, 0x07, 0xf7, 0xb2, 0x3b, 0x3a, 0x3a, 
+0xa0, 0x05, 0xcb, 0x59, 0xb8, 0x75, 0xbf, 0xb2, 
+0xc1, 0xbf, 0x9c, 0xec, 0x1c, 0x70, 0xfa, 0xc0, 
+0x55, 0x2e, 0xf8, 0x67, 0xae, 0x95, 0x9d, 0x7f, 
+0xf5, 0x46, 0xff, 0xca, 0x76, 0xfe, 0x83, 0xe6, 
+0xb0, 0xf3, 0xaf, 0xd6, 0xe8, 0x9f, 0x75, 0xff, 
+0x17, 0x88, 0xdc, 0x3f, 0x21, 0xff, 0x94, 0xf3, 
+0xf1, 0x10, 0xd4, 0xb5, 0x69, 0xf0, 0xdc, 0x98, 
+0xee, 0x82, 0x7f, 0x42, 0xee, 0x7f, 0x43, 0x9a, 
+0x8f, 0x54, 0x00, 0x64, 0x7b, 0xe1, 0xb9, 0xdf, 
+0x59, 0x83, 0x92, 0x3f, 0x79, 0xad, 0x10, 0xf2, 
+0x27, 0x13, 0x80, 0x02, 0xf1, 0x38, 0xff, 0xef, 
+0x38, 0xce, 0x27, 0x21, 0x3f, 0x12, 0xf6, 0x23, 
+0x87, 0x7f, 0x9a, 0xb1, 0x41, 0xf2, 0x2b, 0x9c, 
+0x3c, 0x91, 0x06, 0x40, 0x12, 0x0a, 0x24, 0xe1, 
+0xc0, 0x7d, 0xf8, 0xba, 0x9a, 0xc6, 0x09, 0x14, 
+0xf3, 0xf8, 0x00, 0x7f, 0x26, 0x9d, 0x00, 0x12, 
+0x01, 0xb0, 0xaf, 0x94, 0xf9, 0x3c, 0x11, 0x91, 
+0x7f, 0x2d, 0xf3, 0x79, 0x40, 0xde, 0xfb, 0x96, 
+0xc3, 0x38, 0xe1, 0x3b, 0x82, 0x8f, 0x04, 0xca, 
+0xc5, 0x02, 0xa0, 0x44, 0x04, 0x8b, 0x92, 0xec, 
+0x49, 0xc4, 0x1b, 0x86, 0x16, 0x00, 0x8f, 0x49, 
+0x8a, 0x7f, 0x1e, 0xae, 0xfc, 0xef, 0x7b, 0x57, 
+0x79, 0xc2, 0xfb, 0x57, 0x7b, 0xa1, 0x10, 0xf0, 
+0x51, 0x20, 0x04, 0x82, 0x99, 0x7c, 0xc0, 0xa7, 
+0xbc, 0x7c, 0x80, 0xaa, 0xa0, 0x60, 0xac, 0x92, 
+0xa0, 0x60, 0xea, 0x82, 0x0c, 0x0a, 0xba, 0xa8, 
+0x1b, 0x14, 0x24, 0xd5, 0xc2, 0x2f, 0xb4, 0x80, 
+0xed, 0x53, 0xa2, 0x3f, 0x43, 0xd7, 0x4d, 0xcd, 
+0xa8, 0x04, 0xfb, 0xb4, 0xef, 0xfe, 0x69, 0xf0, 
+0x6f, 0x11, 0x06, 0xff, 0x2a, 0x0d, 0x1c, 0xfc, 
+0x53, 0xe6, 0xfe, 0xd3, 0xc4, 0x02, 0x20, 0x15, 
+0x4c, 0xdb, 0x92, 0x65, 0x46, 0xff, 0xa1, 0x1a, 
+0xd7, 0xfd, 0xca, 0xee, 0xfc, 0xef, 0x4f, 0xad, 
+0x53, 0xf8, 0xe1, 0xfb, 0xd5, 0xd1, 0xaf, 0x85, 
+0xdd, 0xff, 0xb3, 0xd6, 0x72, 0x75, 0xbf, 0x66, 
+0xcf, 0x59, 0x42, 0x45, 0x6a, 0xa5, 0x64, 0xf4, 
+0x4f, 0x82, 0x7f, 0x83, 0xe8, 0xd4, 0x7a, 0x71, 
+0x2c, 0xdb, 0x89, 0x1f, 0xda, 0xad, 0xe8, 0xd0, 
+0x0e, 0xe3, 0x38, 0x96, 0x1c, 0xfb, 0xe1, 0xd6, 
+0xfd, 0x72, 0x47, 0xff, 0x6e, 0x9f, 0x7b, 0x68, 
+0x71, 0xe7, 0x5f, 0x7e, 0xf4, 0xaf, 0xe9, 0xce, 
+0xbf, 0xbf, 0x0e, 0x76, 0xfe, 0x45, 0xa3, 0xff, 
+0x64, 0xc1, 0xd1, 0xbf, 0xd4, 0xfd, 0x67, 0x43, 
+0x2a, 0x22, 0xed, 0xbc, 0x1c, 0xf8, 0xa0, 0x7c, 
+0xbb, 0xde, 0x82, 0x7f, 0x6f, 0x34, 0x5a, 0xf0, 
+0xdc, 0xbf, 0x77, 0x76, 0x82, 0x41, 0xc9, 0x9f, 
+0x4c, 0x92, 0xb8, 0xcf, 0xfd, 0xb9, 0xe3, 0xfc, 
+0x1e, 0x5c, 0xf3, 0x2b, 0xc0, 0x8d, 0x80, 0x03, 
+0xe4, 0xf0, 0x0f, 0xbe, 0xe6, 0x48, 0x17, 0xc5, 
+0x38, 0x3e, 0x6e, 0xaa, 0xc6, 0x1c, 0x49, 0x39, 
+0x8a, 0x49, 0xe2, 0xf8, 0xff, 0x8b, 0xce, 0xff, 
+0x24, 0x4e, 0x00, 0xc8, 0x24, 0x20, 0x07, 0x5b, 
+0x01, 0x93, 0xf0, 0x91, 0x00, 0x11, 0x00, 0xa1, 
+0x35, 0xc5, 0xcc, 0x67, 0x87, 0x94, 0xfc, 0x2b, 
+0x99, 0xf7, 0x3b, 0x79, 0x5f, 0x33, 0xef, 0xe1, 
+0x81, 0x3c, 0x30, 0x3f, 0x40, 0xc8, 0x3f, 0x9b, 
+0x90, 0x3f, 0x17, 0x45, 0x16, 0x25, 0x59, 0xe7, 
+0x19, 0x4a, 0x00, 0x3c, 0xc3, 0x0a, 0x00, 0xd1, 
+0xe5, 0xbf, 0xda, 0x1f, 0xbe, 0xb8, 0x31, 0xfc, 
+0x27, 0x22, 0x02, 0xde, 0xc7, 0x69, 0x80, 0x90, 
+0x10, 0x90, 0xe4, 0x03, 0x16, 0x41, 0x50, 0xd0, 
+0x9a, 0x17, 0x14, 0x3c, 0xa0, 0x30, 0x28, 0xe8, 
+0x20, 0x9b, 0x0f, 0xb8, 0x43, 0xc3, 0xa0, 0x20, 
+0xa9, 0x16, 0x7e, 0x49, 0xbc, 0x31, 0x80, 0x77, 
+0x06, 0xdc, 0xb7, 0xb7, 0x40, 0x58, 0x6b, 0x3f, 
+0x0d, 0xfe, 0xd1, 0xe0, 0xdf, 0x82, 0x0b, 0xfe, 
+0x71, 0xdd, 0x3f, 0x11, 0x00, 0x04, 0x7e, 0x66, 
+0x7b, 0x14, 0x8e, 0xfe, 0x55, 0xef, 0xfc, 0x7b, 
+0xf2, 0x77, 0xfe, 0xb1, 0xee, 0xd7, 0xeb, 0x43, 
+0x1f, 0xf8, 0xcf, 0x3f, 0x7f, 0x56, 0xf8, 0x21, 
+0x9c, 0xe0, 0x90, 0x24, 0x37, 0xfa, 0xe7, 0xba, 
+0x7f, 0x76, 0xe7, 0xdf, 0xf4, 0x49, 0x6c, 0xec, 
+0x7b, 0x62, 0x1b, 0x44, 0x39, 0x44, 0x63, 0x0d, 
+0x6b, 0x97, 0x64, 0xf4, 0xdf, 0x8d, 0x8e, 0xac, 
+0x1d, 0x3f, 0xac, 0x8f, 0xe0, 0x58, 0x96, 0x3b, 
+0xfa, 0xe7, 0x06, 0xff, 0x92, 0xf6, 0x24, 0x83, 
+0xcb, 0xc7, 0x6e, 0xf3, 0xdb, 0xf9, 0xbf, 0x55, 
+0xd5, 0xce, 0xbf, 0xa7, 0xe6, 0x3b, 0xff, 0x5a, 
+0xaa, 0xfb, 0x8d, 0x12, 0xa8, 0xfb, 0xe5, 0x8f, 
+0xfe, 0xf9, 0xee, 0x9f, 0x90, 0x7f, 0x2a, 0x92, 
+0x7f, 0xda, 0x79, 0xb9, 0x60, 0xe6, 0xe8, 0xa7, 
+0x97, 0xe0, 0xdf, 0x63, 0xe3, 0x5f, 0xc2, 0xa6, 
+0x34, 0x5f, 0x09, 0xf9, 0x1b, 0x67, 0x79, 0xc3, 
+0xe9, 0x1f, 0x0c, 0x77, 0xee, 0x97, 0xac, 0x96, 
+0xb2, 0xcf, 0xfd, 0x53, 0x90, 0xb4, 0x09, 0x89, 
+0x9f, 0xe4, 0x8c, 0xf3, 0xcb, 0x31, 0x2c, 0x5a, 
+0x8d, 0x93, 0x23, 0x42, 0xfa, 0x84, 0xfc, 0x89, 
+0x08, 0x20, 0x62, 0x80, 0x1c, 0xfe, 0xe9, 0xc1, 
+0x69, 0x13, 0x11, 0x09, 0x44, 0x2c, 0x10, 0xd1, 
+0x90, 0x89, 0xc4, 0x4f, 0x9a, 0x02, 0xb1, 0x02, 
+0x98, 0x11, 0x00, 0x61, 0xd5, 0x05, 0xcc, 0x67, 
+0x04, 0xf9, 0x5c, 0xb0, 0xe1, 0x91, 0x7f, 0x21, 
+0xf3, 0x7e, 0x25, 0xef, 0x4d, 0xf2, 0x5e, 0x34, 
+0x6d, 0xc9, 0x90, 0x11, 0x00, 0x59, 0x11, 0x86, 
+0x9c, 0x00, 0xbc, 0xc8, 0x92, 0xff, 0xf6, 0x47, 
+0x0f, 0x80, 0xb4, 0x06, 0xb8, 0xea, 0xcc, 0x27, 
+0xd7, 0x07, 0xff, 0x57, 0x56, 0x08, 0x7c, 0x24, 
+0x11, 0x02, 0xfa, 0x0d, 0x0a, 0x1a, 0xab, 0x19, 
+0x14, 0x34, 0x57, 0x1a, 0x14, 0xdc, 0xaf, 0x24, 
+0x28, 0x78, 0x48, 0x49, 0x50, 0xb0, 0x43, 0xfd, 
+0xa0, 0xe0, 0x7d, 0xdd, 0xe0, 0xf0, 0xf2, 0x61, 
+0xd1, 0xc6, 0x00, 0x3e, 0x1e, 0xf0, 0xf2, 0x6e, 
+0x83, 0x5d, 0xfd, 0x03, 0x5a, 0x5f, 0xfb, 0xa3, 
+0xc1, 0xbf, 0xc5, 0x16, 0xfc, 0x2b, 0x5f, 0x30, 
+0xc1, 0x3f, 0xae, 0xfb, 0x17, 0x21, 0x05, 0x9c, 
+0xc2, 0xa3, 0x95, 0x8c, 0xfe, 0x03, 0x35, 0xae, 
+0xfb, 0x25, 0x3b, 0xff, 0xf5, 0x59, 0x8a, 0x0b, 
+0x5e, 0xa6, 0x7a, 0xa7, 0x85, 0x47, 0xff, 0x1c, 
+0xf7, 0xcf, 0x92, 0xff, 0x96, 0xc7, 0xb7, 0x82, 
+0xf1, 0x63, 0xa6, 0x4c, 0xc2, 0xdf, 0x63, 0xb5, 
+0x17, 0x64, 0x84, 0x67, 0xc1, 0xe1, 0x86, 0xc3, 
+0x92, 0xd1, 0x3f, 0x39, 0xf6, 0xc3, 0xd6, 0xfd, 
+0x12, 0xf2, 0x8f, 0x0d, 0x88, 0x03, 0x87, 0x77, 
+0x9d, 0xc4, 0xc7, 0x7e, 0x74, 0x50, 0xf7, 0x6b, 
+0x90, 0x9d, 0x7f, 0x75, 0xea, 0x7e, 0x15, 0x04, 
+0xff, 0xc4, 0xa3, 0x7f, 0x96, 0xfc, 0xd3, 0xcf, 
+0xcd, 0x85, 0xc0, 0xe7, 0x63, 0xf5, 0x12, 0xfc, 
+0x63, 0xce, 0xfd, 0x72, 0xdc, 0xff, 0xce, 0xc2, 
+0x74, 0x83, 0xba, 0xff, 0x2c, 0x1c, 0xf7, 0x13, 
+0xf2, 0x4f, 0xc4, 0xdd, 0x7d, 0xd9, 0x71, 0x3e, 
+0xf9, 0xdf, 0xc5, 0x9c, 0xc3, 0x3f, 0x64, 0xfc, 
+0x4f, 0x1e, 0x03, 0x90, 0xc7, 0x01, 0x2d, 0xf8, 
+0x3a, 0xfb, 0x16, 0xc3, 0xa8, 0xe4, 0x31, 0x01, 
+0x79, 0x5c, 0x40, 0xb6, 0x00, 0xc8, 0x36, 0xc0, 
+0x2c, 0x3e, 0x96, 0x4a, 0xc7, 0x35, 0x41, 0x22, 
+0x00, 0x76, 0x55, 0xe6, 0x71, 0xc8, 0xbf, 0x9c, 
+0x79, 0x6f, 0xb3, 0xe4, 0x4f, 0xde, 0xa3, 0xe4, 
+0xfd, 0x68, 0x84, 0xa1, 0x5b, 0xb3, 0xbd, 0x99, 
+0x5c, 0xf2, 0xef, 0x9c, 0x8f, 0xfb, 0xd7, 0x86, 
+0x00, 0x78, 0x83, 0x25, 0x7d, 0xcb, 0x07, 0xf6, 
+0xc2, 0xd6, 0xdb, 0x8a, 0xc0, 0xfa, 0xa1, 0x7d, 
+0xac, 0x10, 0xf8, 0x63, 0xeb, 0xfd, 0xc5, 0x27, 
+0x3e, 0xbc, 0xd6, 0xef, 0x0f, 0xd1, 0x63, 0x01, 
+0xae, 0x10, 0x98, 0x5b, 0x50, 0xf0, 0xcb, 0x45, 
+0x19, 0x14, 0x6c, 0x53, 0x12, 0x14, 0x54, 0x20, 
+0x04, 0x1e, 0xee, 0x04, 0xfb, 0x17, 0x45, 0xd5, 
+0xc2, 0x76, 0x2f, 0xe3, 0xc6, 0xc0, 0x9e, 0x0e, 
+0x08, 0x1f, 0xd5, 0x95, 0xfb, 0x37, 0x6c, 0xf0, 
+0xcf, 0x8f, 0x06, 0xff, 0x16, 0x5d, 0xf0, 0x8f, 
+0xeb, 0xfe, 0x37, 0xa1, 0x00, 0xb0, 0xa8, 0x8c, 
+0x57, 0xbb, 0xee, 0x57, 0x76, 0xe7, 0x5f, 0xb0, 
+0xee, 0x17, 0xe1, 0xf5, 0xb1, 0x2f, 0xfc, 0xf7, 
+0x3f, 0xff, 0x53, 0xf8, 0x61, 0x1c, 0x6a, 0xbc, 
+0x4b, 0xe1, 0xe8, 0x9f, 0x90, 0xbf, 0x9c, 0x00, 
+0x78, 0xd4, 0x04, 0x36, 0x3f, 0xb2, 0x85, 0x59, 
+0xfb, 0xdb, 0xfc, 0xf8, 0x16, 0x70, 0x5d, 0xe5, 
+0x0e, 0x1e, 0x6b, 0xbd, 0x99, 0xc6, 0x3f, 0xe7, 
+0x4f, 0x5c, 0xc1, 0xe1, 0x7d, 0x67, 0xb0, 0x78, 
+0xde, 0x46, 0x72, 0xea, 0x57, 0x9d, 0xba, 0x5f, 
+0xd5, 0x3b, 0xff, 0xce, 0x1a, 0xef, 0xfc, 0x7b, 
+0x69, 0xb8, 0xf3, 0x1f, 0x32, 0xa7, 0x9d, 0xff, 
+0x44, 0xa5, 0x3b, 0xff, 0x49, 0x32, 0xc1, 0x3f, 
+0x76, 0xf4, 0x9f, 0xce, 0x08, 0x80, 0x3c, 0x48, 
+0xbb, 0x28, 0x17, 0x5e, 0xec, 0x33, 0xd5, 0x69, 
+0xf0, 0x8f, 0x39, 0xf7, 0x9b, 0xe6, 0x27, 0x21, 
+0xff, 0x2d, 0x19, 0xbe, 0xf0, 0xd7, 0x7f, 0xfc, 
+0x68, 0x30, 0xf2, 0x27, 0x8f, 0x89, 0x98, 0xe7, 
+0xfe, 0x78, 0xe9, 0x8f, 0xac, 0xf7, 0x11, 0xc7, 
+0xff, 0x33, 0x77, 0x9c, 0x8f, 0x4e, 0xbe, 0x03, 
+0x45, 0x25, 0x09, 0xfc, 0x91, 0xe0, 0x5f, 0x27, 
+0x3e, 0x5e, 0x22, 0x41, 0x40, 0x12, 0x08, 0x3c, 
+0x81, 0x19, 0x14, 0x12, 0x10, 0x24, 0x41, 0xc1, 
+0x0a, 0x7c, 0xb4, 0x54, 0x85, 0xe1, 0x52, 0xd2, 
+0x07, 0x40, 0x0a, 0xab, 0x52, 0xf1, 0x31, 0x00, 
+0x11, 0x00, 0xe1, 0xf8, 0x8c, 0x9f, 0x7c, 0x06, 
+0xb0, 0xe4, 0x4f, 0xde, 0xcb, 0xe4, 0x7d, 0x2b, 
+0x21, 0x7f, 0x7c, 0xef, 0x99, 0x36, 0xb0, 0xee, 
+0x3f, 0x8b, 0xe0, 0x6f, 0x88, 0x5b, 0x0c, 0x9d, 
+0x01, 0x78, 0x4f, 0x2a, 0x00, 0xaa, 0x25, 0x04, 
+0xbb, 0xed, 0x8e, 0x12, 0xb0, 0x79, 0x64, 0xbf, 
+0x68, 0x32, 0xf0, 0x78, 0xfd, 0x6f, 0x46, 0x77, 
+0x67, 0x9f, 0x20, 0x93, 0x00, 0xbe, 0x10, 0x50, 
+0x14, 0x14, 0x0c, 0x59, 0x3e, 0x41, 0x41, 0x46, 
+0x08, 0xf4, 0x29, 0xde, 0x18, 0x78, 0xbc, 0x5d, 
+0xba, 0x31, 0xf0, 0x4e, 0x13, 0xf8, 0xa7, 0x77, 
+0x41, 0xf8, 0x38, 0x5d, 0xfb, 0x33, 0x6c, 0xf0, 
+0xef, 0xa0, 0x81, 0x83, 0x7f, 0xa5, 0x06, 0x0d, 
+0xfe, 0xc9, 0xba, 0x7f, 0x22, 0x00, 0x36, 0x0f, 
+0x24, 0x41, 0xe0, 0xca, 0x50, 0x86, 0xfc, 0x35, 
+0xd9, 0xf9, 0x57, 0x55, 0xf7, 0xdb, 0x54, 0x70, 
+0x48, 0xe1, 0x07, 0x72, 0x4f, 0x7d, 0xaf, 0x5c, 
+0xf0, 0x4f, 0x76, 0xf4, 0xcf, 0x23, 0xff, 0x47, 
+0xb7, 0xc8, 0xd5, 0xfd, 0x6e, 0x7c, 0xd0, 0x18, 
+0x36, 0x21, 0x36, 0x3f, 0xb0, 0x05, 0x8c, 0xee, 
+0x37, 0x91, 0x23, 0xff, 0xb9, 0x8d, 0xfe, 0x1d, 
+0x34, 0xaa, 0xfb, 0xd5, 0x78, 0xe7, 0x5f, 0xb0, 
+0xee, 0x77, 0xb7, 0x1a, 0xa3, 0xff, 0x38, 0xa5, 
+0x75, 0xbf, 0xf1, 0x6a, 0x8c, 0xfe, 0x09, 0xf9, 
+0x67, 0x9c, 0x9b, 0x0f, 0x99, 0xe7, 0x14, 0xc0, 
+0xea, 0x04, 0x27, 0x9d, 0x06, 0xff, 0x3e, 0xac, 
+0xb0, 0x47, 0xe2, 0x97, 0xae, 0xfe, 0xc5, 0x54, 
+0x1a, 0xee, 0xdc, 0x2f, 0x09, 0x91, 0xb2, 0xcf, 
+0xfd, 0xc9, 0x73, 0x7b, 0xf2, 0xac, 0x9f, 0x3b, 
+0xce, 0x27, 0xab, 0x7d, 0x87, 0xf1, 0x31, 0x12, 
+0x7b, 0xf8, 0x87, 0xac, 0xfe, 0x91, 0x15, 0x40, 
+0xb2, 0x0a, 0x38, 0x85, 0x5b, 0x27, 0xa4, 0x9d, 
+0x92, 0xac, 0x08, 0x92, 0x55, 0x41, 0xd2, 0x00, 
+0x48, 0x9a, 0x00, 0xff, 0x89, 0x8d, 0x80, 0xc7, 
+0x70, 0x63, 0x80, 0x5c, 0x02, 0x24, 0x02, 0x60, 
+0x77, 0x69, 0x36, 0xf3, 0x9e, 0x27, 0xef, 0x6f, 
+0x3e, 0xf9, 0x67, 0x31, 0xef, 0xbd, 0x2d, 0xed, 
+0x69, 0x5c, 0xf2, 0xff, 0x03, 0xf1, 0xe1, 0x42, 
+0xd8, 0x02, 0xf8, 0x44, 0x32, 0xf6, 0xbf, 0xbf, 
+0x8a, 0x33, 0x6e, 0x17, 0x11, 0xac, 0xd9, 0xdd, 
+0xe5, 0xb0, 0xfd, 0x31, 0xd1, 0xa3, 0x01, 0xfc, 
+0xf9, 0xe7, 0xf5, 0xb7, 0x27, 0x7d, 0xf5, 0xde, 
+0x55, 0x5e, 0x0b, 0x28, 0x28, 0x98, 0xab, 0xf5, 
+0xa0, 0xa0, 0xad, 0xd6, 0x83, 0x82, 0xb8, 0x31, 
+0xf0, 0x2c, 0x56, 0x0b, 0x3f, 0x23, 0xde, 0x18, 
+0x58, 0x79, 0x08, 0x82, 0xca, 0x7b, 0x96, 0x64, 
+0xf0, 0xcf, 0x97, 0x06, 0xff, 0x16, 0x45, 0xf0, 
+0x8f, 0xeb, 0xfe, 0x45, 0x48, 0x06, 0x77, 0xec, 
+0xc8, 0x17, 0x8d, 0xfe, 0xd5, 0xdf, 0xf9, 0x67, 
+0x47, 0xff, 0xf2, 0xc7, 0x7e, 0x44, 0x75, 0xbf, 
+0xde, 0x9f, 0xfa, 0xc2, 0xaf, 0xff, 0x93, 0x3f, 
+0xf4, 0x42, 0x3e, 0x50, 0x49, 0xd7, 0xbf, 0xc7, 
+0xa7, 0xde, 0x8a, 0x47, 0xff, 0x4f, 0x20, 0xf9, 
+0x3f, 0x8e, 0xe4, 0xff, 0x98, 0x88, 0xfc, 0x19, 
+0xf7, 0xcf, 0xa9, 0xfb, 0x35, 0x7d, 0xc6, 0x0c, 
+0x05, 0x82, 0xa9, 0x88, 0xfc, 0x1f, 0x10, 0x91, 
+0xbf, 0xf1, 0xfd, 0x5b, 0xf9, 0xa3, 0x7f, 0xa5, 
+0x3b, 0xff, 0x3b, 0x54, 0xee, 0xfc, 0x3b, 0xcc, 
+0x61, 0xe7, 0x5f, 0xbd, 0xd1, 0xbf, 0x8a, 0x9d, 
+0x7f, 0x86, 0xfc, 0xe7, 0xbf, 0xf3, 0x2f, 0x3b, 
+0xfa, 0xcf, 0x20, 0x02, 0xe0, 0x1c, 0x91, 0x00, 
+0x70, 0x5c, 0x1f, 0xa6, 0xb3, 0xe0, 0xdf, 0x13, 
+0xa3, 0x6b, 0xc1, 0x28, 0xdd, 0x57, 0x22, 0x00, 
+0x4c, 0xd2, 0xfd, 0x0d, 0x76, 0xee, 0x97, 0xb8, 
+0x7c, 0xd2, 0xf2, 0xc7, 0xac, 0xfc, 0xb1, 0x95, 
+0xbe, 0x42, 0xe3, 0x7c, 0x5c, 0x31, 0xfd, 0x9d, 
+0x3d, 0xfc, 0x83, 0x21, 0x52, 0x32, 0x25, 0x20, 
+0x65, 0x40, 0xa4, 0x14, 0xe8, 0x34, 0xae, 0xa1, 
+0x36, 0x61, 0xc8, 0x94, 0x69, 0x0a, 0xc4, 0x95, 
+0x53, 0x72, 0x0b, 0x80, 0x34, 0x05, 0xe6, 0xa0, 
+0x18, 0x20, 0x55, 0xc0, 0x24, 0x08, 0x18, 0xb8, 
+0x2f, 0x8f, 0x43, 0xfe, 0x05, 0xcc, 0xfb, 0x94, 
+0xbc, 0x1f, 0x99, 0xf7, 0x5f, 0x7f, 0x1a, 0x98, 
+0x97, 0x49, 0xc8, 0x9f, 0x20, 0x74, 0xa1, 0xf4, 
+0x00, 0xac, 0x92, 0x08, 0x80, 0xfb, 0x2a, 0x19, 
+0x87, 0x2d, 0x7d, 0xee, 0x2e, 0x26, 0xd8, 0x9b, 
+0x31, 0xbd, 0x78, 0x6f, 0x25, 0x99, 0x04, 0x30, 
+0xdf, 0x67, 0xf3, 0xe8, 0xfe, 0xbf, 0x7f, 0x79, 
+0x73, 0xd4, 0x5f, 0xf5, 0x17, 0x14, 0x4c, 0x56, 
+0x12, 0x14, 0xcc, 0x56, 0x18, 0x14, 0x14, 0x09, 
+0x81, 0x85, 0x13, 0x14, 0x24, 0x1b, 0x03, 0x4e, 
+0x2f, 0x1e, 0x61, 0x42, 0x82, 0xcc, 0x8d, 0x01, 
+0x93, 0x66, 0x08, 0x6e, 0xe8, 0xa5, 0xc1, 0x3f, 
+0x83, 0x06, 0xff, 0x0e, 0x18, 0x38, 0xf8, 0x57, 
+0x6c, 0xb0, 0xe0, 0x1f, 0x97, 0xfc, 0x09, 0xb6, 
+0x27, 0x45, 0x09, 0x8e, 0xfe, 0xe5, 0x82, 0x7f, 
+0x82, 0xa3, 0x7f, 0x05, 0xc7, 0x7e, 0xb0, 0xf0, 
+0xe7, 0x48, 0x59, 0x8b, 0xdc, 0x87, 0x32, 0xb9, 
+0xb0, 0x46, 0xea, 0x7e, 0xeb, 0x72, 0x0e, 0x48, 
+0xc8, 0x9f, 0x71, 0xff, 0x4f, 0x9a, 0x83, 0xcd, 
+0xab, 0xb6, 0xe0, 0xfa, 0xa9, 0x07, 0xf8, 0x6f, 
+0x0e, 0x82, 0xf0, 0xed, 0x7b, 0x20, 0xde, 0x33, 
+0x01, 0xd2, 0xc3, 0x32, 0x21, 0x3f, 0xa1, 0x00, 
+0xca, 0x73, 0xca, 0xd1, 0x95, 0xd5, 0x42, 0xfd, 
+0x81, 0x7a, 0x26, 0xf8, 0x57, 0x5b, 0x53, 0x0b, 
+0xb9, 0x29, 0x79, 0xb0, 0xd3, 0x26, 0x0c, 0xb6, 
+0x3c, 0xb0, 0x55, 0x8d, 0xd1, 0xbf, 0xf2, 0x9d, 
+0x7f, 0x5b, 0x9d, 0xec, 0xfc, 0x87, 0x68, 0xbc, 
+0xf3, 0xbf, 0x5b, 0x4b, 0x3b, 0xff, 0xb2, 0xa3, 
+0x7f, 0xd6, 0xfd, 0x67, 0x9d, 0x53, 0x08, 0xd1, 
+0xb7, 0xa5, 0xeb, 0x24, 0xf8, 0x27, 0x3a, 0xf7, 
+0xeb, 0x2c, 0x26, 0x7f, 0x91, 0x00, 0xc8, 0x3c, 
+0x50, 0x61, 0x30, 0xf7, 0x9f, 0x8d, 0x24, 0xcd, 
+0x9e, 0xf8, 0x65, 0xc6, 0xf9, 0xe8, 0xda, 0xd9, 
+0x71, 0x7e, 0x25, 0x77, 0x9c, 0x8f, 0x82, 0xf4, 
+0x38, 0x6e, 0x08, 0x90, 0xda, 0x5f, 0x52, 0xff, 
+0xdb, 0x8d, 0xfd, 0x12, 0x3f, 0x22, 0xc9, 0x93, 
+0x5a, 0x60, 0x42, 0xfa, 0x84, 0xfc, 0x89, 0x08, 
+0x20, 0x62, 0x80, 0x84, 0x09, 0xf7, 0x8a, 0xef, 
+0x00, 0x90, 0x09, 0x40, 0x64, 0x61, 0x26, 0x58, 
+0x0d, 0x97, 0x32, 0xef, 0x67, 0xf2, 0xde, 0x25, 
+0xef, 0x53, 0x13, 0x86, 0xfc, 0x91, 0xab, 0x46, 
+0x52, 0xc5, 0xcf, 0xfd, 0x25, 0xe4, 0xdf, 0x82, 
+0x38, 0x77, 0xa1, 0x08, 0x80, 0xf5, 0x92, 0x0b, 
+0x80, 0xf7, 0x55, 0x70, 0x46, 0xed, 0x59, 0x3c, 
+0x21, 0x40, 0x48, 0xd6, 0xe4, 0x16, 0x2c, 0x34, 
+0xb8, 0xbf, 0x5a, 0x12, 0x14, 0xb4, 0x7c, 0x78, 
+0xef, 0x77, 0x9f, 0xdd, 0x10, 0xfa, 0xef, 0xb9, 
+0x06, 0x05, 0xbf, 0x50, 0x33, 0x28, 0xb8, 0x6e, 
+0xce, 0x41, 0xc1, 0x42, 0x25, 0x41, 0xc1, 0x4a, 
+0x25, 0x41, 0xc1, 0x3a, 0x9d, 0x06, 0x05, 0xc9, 
+0xc6, 0x80, 0xe3, 0x2b, 0xa2, 0x6a, 0xe1, 0x1d, 
+0xb8, 0x3e, 0xe8, 0xee, 0xd0, 0x02, 0x3b, 0x3b, 
+0xfa, 0x96, 0xdc, 0xe8, 0xdf, 0x87, 0x06, 0xff, 
+0x16, 0x74, 0xf0, 0x8f, 0x4b, 0xfe, 0x1b, 0x11, 
+0xa6, 0x8d, 0xf1, 0x0a, 0x46, 0xff, 0x4a, 0xdc, 
+0xbf, 0x82, 0xd1, 0x3f, 0x71, 0xff, 0x6c, 0xdd, 
+0x6f, 0xf0, 0x86, 0x9d, 0xf0, 0xc7, 0xef, 0xd2, 
+0x83, 0x2f, 0xa4, 0x69, 0x8d, 0x3d, 0xf6, 0xf3, 
+0xd7, 0xef, 0xff, 0x0a, 0x47, 0xaa, 0x5b, 0xa0, 
+0xb7, 0xb9, 0x17, 0xc6, 0x06, 0xc6, 0x99, 0x43, 
+0x3f, 0x42, 0x3b, 0xff, 0x24, 0xf5, 0x2f, 0xb4, 
+0xf3, 0xcf, 0xa6, 0xfe, 0xc9, 0xce, 0x7f, 0x88, 
+0xd5, 0x4e, 0x91, 0xfb, 0xe7, 0x8d, 0xfe, 0x2d, 
+0xd4, 0xa8, 0xfb, 0xb5, 0xd3, 0x7a, 0xdd, 0xaf, 
+0x8f, 0xca, 0xba, 0x5f, 0x2d, 0xef, 0xfc, 0xab, 
+0x3d, 0xfa, 0xc7, 0x52, 0x24, 0x22, 0x00, 0xce, 
+0x2e, 0x84, 0xec, 0xb3, 0x8b, 0xe0, 0xcd, 0x7a, 
+0x0b, 0xad, 0x07, 0xff, 0x9e, 0x1a, 0x46, 0xf7, 
+0x9f, 0xe9, 0x23, 0x11, 0x00, 0xdb, 0x52, 0x03, 
+0xe1, 0x17, 0x03, 0x9d, 0xfb, 0x25, 0xaf, 0x15, 
+0x42, 0xfe, 0x31, 0xf8, 0xdc, 0x9f, 0xa4, 0xfb, 
+0x49, 0xc3, 0xdf, 0x1f, 0xf8, 0xfa, 0x93, 0x1d, 
+0xe7, 0x93, 0x03, 0x3f, 0xdc, 0xc3, 0x3f, 0xe4, 
+0x67, 0xf2, 0xbf, 0xc9, 0x41, 0x20, 0xd2, 0x01, 
+0xc0, 0x1e, 0xfe, 0x21, 0xbf, 0x8e, 0x4c, 0xaf, 
+0xda, 0x31, 0x1f, 0xc0, 0x1e, 0x01, 0x4a, 0xcc, 
+0x48, 0x83, 0x1d, 0x7d, 0x25, 0x92, 0x75, 0x3f, 
+0x69, 0xe2, 0x3f, 0x43, 0xb4, 0x66, 0x7b, 0x30, 
+0x9d, 0x4b, 0xfe, 0xdf, 0x23, 0x6e, 0x5c, 0x48, 
+0x4d, 0x80, 0xc6, 0x2c, 0xa1, 0x9b, 0xdd, 0x5b, 
+0x2e, 0x21, 0x55, 0x79, 0x21, 0x20, 0x25, 0x59, 
+0xd3, 0x5b, 0x0b, 0xc0, 0xea, 0xc1, 0x1a, 0x89, 
+0x10, 0x30, 0x7b, 0xb0, 0xfc, 0xf4, 0xc7, 0xd7, 
+0x05, 0xfe, 0xa6, 0x2a, 0x28, 0xf8, 0xc9, 0xa2, 
+0x09, 0x0a, 0xee, 0x53, 0x12, 0x14, 0x6c, 0xd2, 
+0x5e, 0x50, 0x90, 0x54, 0x0b, 0xbf, 0x2c, 0xaa, 
+0x16, 0xb6, 0x7d, 0xae, 0x01, 0x3c, 0x03, 0xda, 
+0x20, 0x74, 0xa0, 0x5f, 0x8b, 0xee, 0x9f, 0x06, 
+0xff, 0x34, 0x0b, 0xfe, 0xed, 0x5f, 0x56, 0xc1, 
+0x3f, 0x56, 0x00, 0x6c, 0x64, 0x90, 0xc4, 0xc0, 
+0x7b, 0x7d, 0x88, 0x9a, 0x97, 0xfe, 0x3c, 0x20, 
+0x64, 0x6d, 0x28, 0xe4, 0x07, 0x16, 0x40, 0x55, 
+0x6c, 0x35, 0x1c, 0xcc, 0x6a, 0x80, 0xb6, 0xca, 
+0x76, 0x18, 0x3c, 0x34, 0x08, 0xd3, 0x7d, 0xd3, 
+0xf0, 0xd5, 0xcc, 0x57, 0x4c, 0xeb, 0xdf, 0xaf, 
+0xbf, 0xc8, 0x7f, 0xf0, 0x93, 0xf5, 0x2a, 0x32, 
+0x96, 0x65, 0x2f, 0xfd, 0x91, 0xba, 0x5f, 0xf6, 
+0xd8, 0x8f, 0x6c, 0xdd, 0xaf, 0xd0, 0xce, 0x3f, 
+0x49, 0xfd, 0x0b, 0xed, 0xfc, 0x27, 0xee, 0x4e, 
+0xe2, 0xb9, 0xff, 0x6d, 0x3a, 0xd8, 0xf9, 0x77, 
+0x95, 0xdb, 0xf9, 0xf7, 0x55, 0xb9, 0xf3, 0x2f, 
+0x1a, 0xfd, 0x6b, 0xb6, 0xf3, 0x4f, 0x46, 0xff, 
+0x7b, 0xe6, 0x30, 0xfa, 0x4f, 0x92, 0x1b, 0xfd, 
+0x8b, 0xdc, 0x3f, 0x77, 0xf4, 0xcf, 0x92, 0x7f, 
+0xce, 0x59, 0xc5, 0xb0, 0x39, 0xc8, 0x43, 0xab, 
+0xc1, 0x3f, 0xd1, 0xb9, 0x5f, 0x77, 0x8e, 0xfb, 
+0xf7, 0x86, 0xb2, 0x96, 0x7a, 0x83, 0x90, 0x3f, 
+0x69, 0x8f, 0x64, 0x9f, 0xfb, 0xe7, 0xe3, 0x98, 
+0x5f, 0x32, 0xce, 0x27, 0x95, 0xbe, 0xf8, 0xfa, 
+0xc9, 0xe2, 0x8c, 0xf3, 0xc9, 0x89, 0x5f, 0xe2, 
+0xf8, 0xf3, 0xd1, 0xf9, 0x93, 0xd3, 0xbf, 0x64, 
+0x12, 0x40, 0x44, 0x2a, 0x39, 0x09, 0x4c, 0x26, 
+0x04, 0x24, 0xf8, 0x37, 0x22, 0x6e, 0x0a, 0x9c, 
+0x44, 0x61, 0xca, 0xee, 0xfe, 0x27, 0xe3, 0xef, 
+0xe1, 0xd6, 0x52, 0x28, 0xb8, 0xee, 0x47, 0xde, 
+0x6f, 0x5b, 0xda, 0xd2, 0xb8, 0xe4, 0x4f, 0x9e, 
+0xfb, 0xbf, 0xb3, 0xa0, 0x6e, 0x01, 0x20, 0xf9, 
+0x98, 0x49, 0x9a, 0x00, 0xef, 0x2d, 0x15, 0x3f, 
+0x6b, 0x67, 0xdd, 0x35, 0x27, 0x7c, 0x77, 0xa3, 
+0xac, 0x10, 0xc8, 0x81, 0xad, 0xb7, 0xe3, 0xc6, 
+0xc0, 0xc3, 0x92, 0x8d, 0x81, 0xdf, 0x4d, 0xee, 
+0xcd, 0x3f, 0xf9, 0xe1, 0x35, 0xbe, 0xcb, 0x26, 
+0x28, 0x68, 0xaf, 0xad, 0xa0, 0x20, 0x56, 0x0b, 
+0x4b, 0x36, 0x06, 0x5e, 0x6d, 0x04, 0x9f, 0xe8, 
+0x0e, 0x08, 0x1d, 0xa1, 0xc1, 0x3f, 0x1a, 0xfc, 
+0xd3, 0x6d, 0xf0, 0x4f, 0xea, 0xfe, 0x93, 0xc4, 
+0x48, 0x04, 0x07, 0xdf, 0x70, 0x95, 0x3b, 0xff, 
+0xbe, 0x9f, 0xf8, 0xc3, 0x44, 0xc7, 0xc4, 0x9c, 
+0x3e, 0x94, 0xc9, 0xe8, 0x9f, 0x3c, 0xfb, 0x27, 
+0x3d, 0xec, 0x7f, 0x47, 0xd7, 0xf5, 0x57, 0x1c, 
+0xb1, 0x72, 0xeb, 0x7e, 0xc9, 0xb1, 0x1f, 0xa1, 
+0xba, 0x5f, 0xa1, 0x9d, 0x7f, 0xb6, 0xee, 0x97, 
+0x3d, 0xf6, 0x13, 0x86, 0x19, 0x06, 0x65, 0xc1, 
+0x3f, 0xcb, 0x39, 0xec, 0xfc, 0x3b, 0xc9, 0xed, 
+0xfc, 0x7b, 0xa9, 0xb1, 0xf3, 0x1f, 0xa4, 0xf5, 
+0x9d, 0xff, 0x68, 0x95, 0x3b, 0xff, 0x19, 0x72, 
+0xee, 0x3f, 0x4d, 0x20, 0xf8, 0x47, 0xdc, 0x7f, 
+0x36, 0x0a, 0x80, 0x1c, 0xb1, 0x00, 0x30, 0x77, 
+0xf4, 0xd7, 0x6a, 0xf0, 0xef, 0xd9, 0x81, 0x0d, 
+0xd8, 0xf4, 0x27, 0x75, 0xff, 0x16, 0x29, 0x3b, 
+0x19, 0xc7, 0x6c, 0xc8, 0xe7, 0xfe, 0x29, 0x38, 
+0xa2, 0x27, 0x57, 0xfd, 0xfe, 0xc6, 0x8e, 0xf3, 
+0xf1, 0x75, 0xc4, 0x8e, 0xf3, 0x4f, 0xe1, 0x6b, 
+0xee, 0x67, 0x9c, 0x44, 0x0d, 0xe1, 0x94, 0x89, 
+0x3d, 0xfc, 0x43, 0x32, 0x00, 0xe4, 0x75, 0x7a, 
+0x14, 0xa7, 0x50, 0x75, 0x38, 0x61, 0x2a, 0x94, 
+0x69, 0x0a, 0xcc, 0xc2, 0xa2, 0x20, 0xc9, 0x73, 
+0xff, 0xda, 0x1c, 0xde, 0xba, 0x1f, 0x79, 0x4f, 
+0x8a, 0x12, 0xff, 0xf8, 0x9e, 0xeb, 0x4b, 0xc1, 
+0xe7, 0xfe, 0x59, 0x5c, 0x01, 0x10, 0xb8, 0xe0, 
+0x8e, 0x01, 0x21, 0xe9, 0xd8, 0x48, 0x04, 0xc0, 
+0xdd, 0x25, 0x8c, 0xab, 0x96, 0x9e, 0xf1, 0x65, 
+0x83, 0x77, 0xb2, 0x53, 0x01, 0x7e, 0x4e, 0x60, 
+0xdb, 0x9d, 0xb8, 0x31, 0xf0, 0x68, 0x1d, 0xbb, 
+0x31, 0xf0, 0xcb, 0xa6, 0xbb, 0xd2, 0xcf, 0x48, 
+0x37, 0x06, 0x7c, 0x94, 0x54, 0x0b, 0x2b, 0x0a, 
+0x0a, 0xee, 0x5e, 0x76, 0x41, 0x41, 0x32, 0x25, 
+0x70, 0x79, 0xba, 0x9d, 0x99, 0x04, 0x30, 0x1b, 
+0x03, 0x1f, 0x34, 0x81, 0x5f, 0x4e, 0xe7, 0x32, 
+0x0e, 0xfe, 0xb5, 0x1a, 0x38, 0xf8, 0x57, 0xbb, 
+0x2c, 0x82, 0x7f, 0x5c, 0xf7, 0xbf, 0x01, 0x05, 
+0x80, 0x79, 0x7e, 0x94, 0xca, 0x9d, 0xff, 0xc9, 
+0xae, 0xa9, 0x39, 0x7d, 0x28, 0x13, 0x22, 0x60, 
+0x47, 0xff, 0xdc, 0x4b, 0x7f, 0xe4, 0xd8, 0x8f, 
+0x50, 0xdd, 0x2f, 0x39, 0xf6, 0x23, 0x54, 0xf7, 
+0xcb, 0xee, 0xfc, 0x73, 0xeb, 0x7e, 0xc9, 0xa5, 
+0x3f, 0x51, 0xe3, 0x9f, 0x96, 0x77, 0xfe, 0x19, 
+0xf2, 0x77, 0x57, 0x31, 0xfa, 0x57, 0x1e, 0xfc, 
+0x0b, 0x94, 0xdd, 0xf9, 0xff, 0xb3, 0x36, 0x76, 
+0xfe, 0x53, 0xf9, 0xee, 0xff, 0x02, 0xc5, 0x3b, 
+0xff, 0xc4, 0xfd, 0xcb, 0x8e, 0xfe, 0x09, 0xf9, 
+0xe7, 0x9e, 0x55, 0x02, 0xa6, 0x5e, 0xde, 0x5a, 
+0x0b, 0xfe, 0x11, 0xac, 0xce, 0xf4, 0xe2, 0xb9, 
+0xff, 0x83, 0x7d, 0x6d, 0x06, 0x71, 0xff, 0xe4, 
+0xf5, 0xc0, 0x9c, 0xf8, 0xc5, 0xd2, 0x1f, 0xd9, 
+0x71, 0x3e, 0xa9, 0xf4, 0xe5, 0x8e, 0xf3, 0xa7, 
+0xf0, 0xf5, 0x46, 0x2a, 0x7d, 0x4b, 0xb8, 0x87, 
+0x7f, 0xf0, 0xf5, 0x48, 0x4a, 0x7e, 0x32, 0x51, 
+0x3c, 0xb4, 0x72, 0x9a, 0x02, 0xcb, 0xf1, 0xf5, 
+0xc6, 0x7d, 0xee, 0x6f, 0x39, 0x2c, 0x22, 0x7f, 
+0xfe, 0xba, 0x1f, 0xf2, 0xe7, 0x70, 0x0a, 0x98, 
+0x55, 0x67, 0x70, 0xc9, 0xff, 0x90, 0x45, 0x49, 
+0xe6, 0x39, 0x0b, 0x51, 0x00, 0x38, 0xb0, 0x02, 
+0x60, 0xeb, 0xdd, 0x45, 0x9c, 0xf1, 0x7a, 0xaa, 
+0x1a, 0x42, 0x80, 0x9f, 0x13, 0xe0, 0x6e, 0x0c, 
+0xd8, 0x3c, 0x56, 0xf7, 0xef, 0x35, 0xb7, 0xc5, 
+0x7d, 0x3f, 0xb7, 0xa0, 0xe0, 0x2e, 0x25, 0x41, 
+0xc1, 0x18, 0x25, 0x41, 0xc1, 0x94, 0x25, 0x10, 
+0x14, 0xec, 0x03, 0xa7, 0x17, 0x70, 0x63, 0xe0, 
+0x69, 0xf1, 0xc6, 0xc0, 0xda, 0x43, 0x10, 0x50, 
+0xdd, 0xbd, 0xa4, 0x82, 0x7f, 0x5e, 0x34, 0xf8, 
+0xb7, 0x60, 0x82, 0x7f, 0x5c, 0xf7, 0x4f, 0x04, 
+0xc0, 0xe6, 0xee, 0x78, 0xf0, 0xf9, 0x90, 0x3f, 
+0xfa, 0xe7, 0x06, 0xff, 0x02, 0x56, 0x06, 0xcd, 
+0xd9, 0xd1, 0x91, 0xd1, 0x3f, 0x09, 0xfe, 0x91, 
+0x53, 0xbf, 0x3f, 0xa1, 0x9b, 0xfa, 0x01, 0x77, 
+0xad, 0xb9, 0xa3, 0x7f, 0x52, 0xd1, 0x3a, 0x89, 
+0x1f, 0xca, 0x42, 0x75, 0xbf, 0xe4, 0xd8, 0x8f, 
+0x50, 0xdd, 0x2f, 0x39, 0xf6, 0x93, 0x9d, 0x91, 
+0x0d, 0xbe, 0xc6, 0xfe, 0x6a, 0xd5, 0xfd, 0xaa, 
+0xde, 0xf9, 0x77, 0xd1, 0xf9, 0xce, 0xff, 0x5c, 
+0xeb, 0x7e, 0xe7, 0xba, 0xf3, 0x2f, 0x71, 0xff, 
+0x3c, 0xf2, 0xc7, 0x3f, 0xb7, 0x73, 0x8b, 0x99, 
+0x23, 0x3d, 0xda, 0x0a, 0xfe, 0xbd, 0xd0, 0x65, 
+0xc4, 0x23, 0xff, 0xed, 0xa9, 0xe1, 0x06, 0x21, 
+0x7f, 0xf2, 0x5a, 0x61, 0x9f, 0xfb, 0xef, 0xc7, 
+0x29, 0xd1, 0x31, 0xee, 0x38, 0x1f, 0xa7, 0x45, 
+0xec, 0x38, 0x9f, 0xbc, 0x16, 0xc9, 0x7e, 0x7f, 
+0x03, 0x66, 0x49, 0x72, 0x71, 0x35, 0x90, 0xec, 
+0xfd, 0xff, 0x15, 0x5f, 0x93, 0x7f, 0x25, 0x87, 
+0x7f, 0x50, 0x70, 0x92, 0x75, 0xc1, 0x46, 0xfc, 
+0x77, 0xa4, 0x27, 0x80, 0xd4, 0xff, 0x1e, 0xc6, 
+0xe9, 0x93, 0xe4, 0xb9, 0x7f, 0x26, 0x79, 0xee, 
+0x5f, 0x24, 0xb8, 0xeb, 0x4f, 0xde, 0x5f, 0xa6, 
+0xf5, 0xbc, 0xe7, 0xfe, 0xdf, 0x20, 0xf9, 0x5f, 
+0xa7, 0x0b, 0xf2, 0xd7, 0x86, 0x00, 0x70, 0x63, 
+0x05, 0x80, 0xe9, 0x5d, 0x85, 0x92, 0xd1, 0xba, 
+0xbc, 0x10, 0x48, 0x53, 0x43, 0x08, 0xe0, 0xf8, 
+0xe3, 0xe6, 0x5c, 0x66, 0x63, 0x60, 0x87, 0x78, 
+0x63, 0xc0, 0xfa, 0xd1, 0xda, 0xbf, 0x7d, 0x71, 
+0xd3, 0xee, 0x7f, 0xea, 0x27, 0x28, 0x98, 0xa4, 
+0x24, 0x28, 0x98, 0xa5, 0x24, 0x28, 0x58, 0x64, 
+0xb0, 0xa0, 0xa0, 0x42, 0x21, 0x70, 0x0f, 0x6e, 
+0x0c, 0xbc, 0xcc, 0xd9, 0x18, 0x30, 0x6f, 0x86, 
+0xc0, 0x43, 0x3d, 0xcb, 0x32, 0xf8, 0xa7, 0x4d, 
+0xf7, 0x3f, 0x17, 0xf2, 0x57, 0xee, 0xfe, 0x17, 
+0x77, 0xf0, 0x8f, 0xeb, 0xfe, 0x45, 0x48, 0xc0, 
+0xd7, 0x5a, 0xb0, 0xcc, 0xe8, 0x5f, 0xea, 0xfe, 
+0xfd, 0x3e, 0x0d, 0x9c, 0x93, 0x00, 0x20, 0xc1, 
+0x3f, 0xa1, 0xd1, 0xff, 0x57, 0x38, 0x52, 0x3d, 
+0x89, 0xcf, 0x64, 0x65, 0x47, 0xff, 0x24, 0xf8, 
+0xd7, 0xd1, 0xde, 0x81, 0xcf, 0x63, 0x0f, 0x42, 
+0x79, 0x5e, 0x05, 0xe4, 0xc4, 0xe5, 0x40, 0x62, 
+0x50, 0x12, 0x44, 0xb8, 0x44, 0x42, 0xb0, 0x45, 
+0x08, 0x78, 0xad, 0xf7, 0x01, 0xe7, 0x8f, 0x5d, 
+0x61, 0xc7, 0xab, 0x76, 0x60, 0x7a, 0xbf, 0xd9, 
+0xfc, 0xea, 0x7e, 0x35, 0xd8, 0xf9, 0x77, 0xd7, 
+0xca, 0xce, 0xbf, 0x7a, 0xa3, 0x7f, 0x65, 0x3b, 
+0xff, 0x09, 0x1a, 0xee, 0xfc, 0xb3, 0xa3, 0x7f, 
+0xae, 0xfb, 0x37, 0x51, 0xe8, 0xfe, 0x35, 0x0f, 
+0xfe, 0x3d, 0x3a, 0xb1, 0x0a, 0xcf, 0xfd, 0xfa, 
+0xf2, 0x04, 0x80, 0x21, 0xce, 0xfd, 0x92, 0xd7, 
+0x12, 0xfb, 0xdc, 0x9f, 0xb4, 0xfa, 0x71, 0xc7, 
+0xf9, 0x07, 0xc8, 0x38, 0x1f, 0x2b, 0x7d, 0xd9, 
+0x71, 0x3e, 0x69, 0xf6, 0x6b, 0xc5, 0xa9, 0x12, 
+0x71, 0xf9, 0xcd, 0xe8, 0xf6, 0xd9, 0xc3, 0x3f, 
+0xa4, 0x09, 0xb0, 0x04, 0x7f, 0x2d, 0x99, 0x0a, 
+0x90, 0xe9, 0x00, 0xf9, 0x31, 0x84, 0xd3, 0x28, 
+0x76, 0xdf, 0x9f, 0x3c, 0xf7, 0x77, 0x6d, 0x29, 
+0x90, 0x92, 0xbf, 0x78, 0xdd, 0x8f, 0xbc, 0xe7, 
+0xc8, 0x7b, 0x6c, 0x4b, 0x6b, 0x2a, 0x87, 0xfc, 
+0x33, 0x7f, 0x47, 0xbc, 0xae, 0x2b, 0xf2, 0xd7, 
+0x86, 0x00, 0xf0, 0x61, 0x05, 0xc0, 0x96, 0xbb, 
+0xf2, 0xc5, 0xcf, 0xd7, 0xd9, 0x67, 0xec, 0xc9, 
+0x9c, 0xae, 0xfe, 0x54, 0xb9, 0xc7, 0x03, 0xca, 
+0x72, 0x02, 0x5b, 0xc8, 0xc6, 0xc0, 0x03, 0xd5, 
+0xdc, 0x6a, 0xe1, 0x6f, 0x3e, 0xbd, 0x3e, 0xe4, 
+0x97, 0xa5, 0x1a, 0x14, 0xdc, 0xa1, 0x66, 0x50, 
+0xd0, 0x59, 0xc3, 0xa0, 0xa0, 0x1b, 0xa9, 0x16, 
+0x7e, 0x45, 0x54, 0x2d, 0xbc, 0xe3, 0x69, 0xdc, 
+0x18, 0x70, 0x6d, 0x81, 0xa0, 0xae, 0x5e, 0x1a, 
+0xfc, 0x53, 0x42, 0xfe, 0xea, 0xf5, 0xfd, 0xeb, 
+0x2e, 0xf8, 0x67, 0xb5, 0xc8, 0x82, 0x7f, 0x1b, 
+0x39, 0xe4, 0x4f, 0x60, 0xb3, 0x67, 0x97, 0xd2, 
+0x9d, 0xff, 0xde, 0xfa, 0x3e, 0x8d, 0x47, 0xff, 
+0x3f, 0xff, 0xe7, 0x67, 0xf8, 0xe6, 0xe4, 0x37, 
+0x30, 0xde, 0x3b, 0x2e, 0x09, 0xfe, 0x71, 0x47, 
+0xff, 0x24, 0xf8, 0x47, 0x46, 0xff, 0xfe, 0xc6, 
+0x81, 0xb0, 0xe3, 0x6d, 0x7b, 0x30, 0x7d, 0xd6, 
+0x8c, 0xb7, 0xf3, 0xbf, 0xf1, 0x41, 0x23, 0x69, 
+0xe1, 0x8f, 0x78, 0xe7, 0x7f, 0x8b, 0xec, 0xce, 
+0xbf, 0x1a, 0xa3, 0x7f, 0x8d, 0x77, 0xfe, 0x75, 
+0x54, 0xf7, 0xab, 0xf5, 0x9d, 0xff, 0xf3, 0x95, 
+0xef, 0xfc, 0x73, 0xdd, 0x7f, 0xcc, 0x6d, 0x99, 
+0xb0, 0x31, 0xd4, 0x5d, 0xab, 0xc1, 0xbf, 0x97, 
+0x5b, 0x4d, 0x90, 0xf4, 0xa5, 0xcf, 0xfe, 0x9d, 
+0xd2, 0xa3, 0x0c, 0xf2, 0xdc, 0x9f, 0x38, 0x74, 
+0x22, 0x00, 0xd2, 0x90, 0xa4, 0x09, 0x91, 0xcb, 
+0x8d, 0xf3, 0x49, 0xa5, 0x2f, 0x7b, 0xf8, 0x07, 
+0x1f, 0x2d, 0x91, 0x8e, 0x7f, 0x22, 0x0c, 0x88, 
+0x40, 0xf8, 0x8d, 0x3d, 0xfc, 0x83, 0x63, 0x7e, 
+0x72, 0x13, 0x60, 0x18, 0x45, 0x28, 0xc9, 0x07, 
+0x90, 0xb5, 0xc1, 0x74, 0x6c, 0x04, 0x64, 0x9f, 
+0xfb, 0x07, 0xec, 0xcb, 0xe1, 0xed, 0xfa, 0x4b, 
+0xd6, 0xfd, 0xc8, 0xfb, 0xac, 0x2f, 0x19, 0x2c, 
+0x4a, 0x25, 0xe4, 0x4f, 0xe0, 0xad, 0x4b, 0xf2, 
+0xd7, 0x86, 0x00, 0x08, 0x92, 0x08, 0x80, 0x3b, 
+0xf3, 0x78, 0x6e, 0x5a, 0x5e, 0x08, 0x48, 0x49, 
+0x55, 0xdd, 0x9c, 0x80, 0xc9, 0x6d, 0xb8, 0x31, 
+0xf0, 0x90, 0x74, 0x63, 0x60, 0xeb, 0xfd, 0x25, 
+0xa7, 0x3f, 0xc2, 0x37, 0xcc, 0x42, 0x0d, 0x0a, 
+0x9a, 0xaa, 0x19, 0x14, 0xb4, 0x52, 0x1a, 0x14, 
+0x6c, 0x50, 0x12, 0x14, 0x6c, 0x55, 0x12, 0x14, 
+0xec, 0x55, 0x18, 0x14, 0x74, 0x7d, 0xa8, 0x0b, 
+0xec, 0x5f, 0x16, 0x05, 0x05, 0x6d, 0x57, 0xe0, 
+0xc6, 0xc0, 0xce, 0x56, 0x08, 0x1e, 0xe8, 0x5d, 
+0x86, 0xc1, 0xbf, 0xc3, 0x4b, 0x2e, 0xf8, 0x67, 
+0x66, 0xe0, 0xe0, 0x1f, 0xd7, 0xfd, 0xaf, 0x47, 
+0x98, 0xd4, 0x44, 0x29, 0xdd, 0xf9, 0x77, 0x7b, 
+0xdb, 0x03, 0x1a, 0x72, 0x9b, 0xe0, 0xd8, 0xf0, 
+0x31, 0xf8, 0xfb, 0x0f, 0xff, 0x80, 0xef, 0x4e, 
+0x7d, 0x0f, 0x33, 0x03, 0xb3, 0xd0, 0xdf, 0x30, 
+0x00, 0x87, 0x8a, 0x9a, 0xa1, 0x2a, 0xbe, 0x1a, 
+0xb2, 0x03, 0x72, 0x21, 0x76, 0x47, 0x3c, 0x04, 
+0x6d, 0x08, 0x01, 0xa7, 0x77, 0x5c, 0xc1, 0x12, 
+0x2b, 0x7a, 0xd9, 0xba, 0xdf, 0xb6, 0xba, 0x76, 
+0x66, 0xf4, 0xcf, 0x06, 0xff, 0xb8, 0xa3, 0xff, 
+0x78, 0xaf, 0x44, 0x49, 0xdd, 0xaf, 0xa4, 0xf1, 
+0x8f, 0x43, 0xfe, 0x9b, 0x91, 0xfc, 0x8d, 0x98, 
+0xc2, 0x1f, 0x75, 0xeb, 0x7e, 0x95, 0xef, 0xfc, 
+0x8b, 0x46, 0xff, 0xf3, 0xdc, 0xf9, 0xbf, 0x46, 
+0xd3, 0x9d, 0xff, 0x08, 0xd5, 0x3b, 0xff, 0x97, 
+0x2a, 0xdf, 0xf9, 0x4f, 0xd4, 0x60, 0xe7, 0x3f, 
+0xf5, 0x72, 0xec, 0xfe, 0x7f, 0x31, 0x0e, 0xac, 
+0x76, 0x04, 0xc2, 0xa7, 0xb9, 0x76, 0xf0, 0xcc, 
+0xa8, 0x91, 0x56, 0x83, 0x7f, 0xc4, 0xfd, 0x6f, 
+0x48, 0xf5, 0x93, 0x0a, 0x80, 0x6c, 0x6f, 0x98, 
+0x30, 0xc0, 0xb9, 0x5f, 0x72, 0xf9, 0x91, 0x7d, 
+0xee, 0xdf, 0x81, 0x41, 0x3f, 0x76, 0x9c, 0xdf, 
+0xc9, 0x1d, 0xe7, 0xa3, 0xd8, 0x24, 0xe3, 0xfc, 
+0x11, 0x74, 0xf4, 0x15, 0x98, 0x1d, 0x21, 0x57, 
+0xfe, 0xc6, 0xf1, 0xd1, 0xc0, 0xaf, 0xf8, 0x88, 
+0x80, 0x1c, 0xfe, 0xa9, 0xc7, 0x6c, 0x49, 0x3e, 
+0x86, 0xfc, 0xba, 0x49, 0x53, 0x20, 0xc9, 0xa8, 
+0xe0, 0x94, 0xaa, 0x18, 0xbf, 0x8f, 0x7d, 0xee, 
+0x1f, 0x51, 0x84, 0xcf, 0xf5, 0x87, 0xd9, 0x75, 
+0xbf, 0x5c, 0xde, 0xba, 0xdf, 0xa6, 0xe1, 0x24, 
+0x30, 0xab, 0xca, 0xe0, 0x92, 0x7f, 0x3d, 0xe2, 
+0xec, 0x85, 0x2e, 0x00, 0x76, 0xb1, 0xe4, 0x6c, 
+0x7c, 0x47, 0x0e, 0x27, 0x64, 0xc7, 0x0a, 0x81, 
+0x44, 0x25, 0x42, 0x40, 0xfd, 0x9c, 0xc0, 0xd6, 
+0x3b, 0x70, 0x63, 0xe0, 0x11, 0xf1, 0xc6, 0x00, 
+0xa9, 0x16, 0xbe, 0x27, 0xfb, 0xcc, 0x07, 0xd7, 
+0xf8, 0x48, 0x84, 0x80, 0xb6, 0x83, 0x82, 0x6b, 
+0xd5, 0x0c, 0x0a, 0x1a, 0x2d, 0xa8, 0xa0, 0x60, 
+0xb7, 0x8a, 0xa0, 0x20, 0xa9, 0x16, 0xee, 0x00, 
+0xbb, 0x15, 0xa2, 0x6a, 0x61, 0xfb, 0x37, 0x1a, 
+0xc1, 0x2b, 0xa1, 0x1d, 0x82, 0x47, 0x69, 0xf0, 
+0x8f, 0x06, 0xff, 0xe6, 0x1e, 0xfc, 0xe3, 0xba, 
+0xff, 0xf5, 0xa3, 0xf1, 0xb0, 0x7e, 0x38, 0x1e, 
+0xdc, 0xb1, 0xc1, 0x4f, 0xdd, 0x9d, 0x7f, 0xa6, 
+0xf0, 0x47, 0xbc, 0xf3, 0xcf, 0x9e, 0xf9, 0xb5, 
+0x79, 0xc1, 0x56, 0xf8, 0xd8, 0x0f, 0xd6, 0xfd, 
+0xee, 0x34, 0xdd, 0xc5, 0x1b, 0xfd, 0x73, 0x83, 
+0x7f, 0x6d, 0x47, 0xda, 0x61, 0xcb, 0x53, 0x5b, 
+0x15, 0xd7, 0xfd, 0x3e, 0xc0, 0xaf, 0xfb, 0x35, 
+0x91, 0x1b, 0xfd, 0xeb, 0x7f, 0xe7, 0xdf, 0x57, 
+0xe5, 0xce, 0x7f, 0xb8, 0x5e, 0x77, 0xfe, 0xe3, 
+0xff, 0x92, 0x09, 0x3e, 0x6f, 0x46, 0xc1, 0x36, 
+0x17, 0x9c, 0xb0, 0x96, 0xec, 0x80, 0x67, 0x47, 
+0x8c, 0x55, 0x16, 0xfe, 0xcc, 0xc7, 0xfd, 0x8b, 
+0xce, 0xfd, 0xfa, 0x48, 0x04, 0x80, 0x97, 0x01, 
+0xce, 0xfd, 0x92, 0x90, 0x28, 0xfb, 0xdc, 0x9f, 
+0x3c, 0xd3, 0x27, 0xae, 0x5f, 0x68, 0x9c, 0x4f, 
+0xa6, 0x51, 0x92, 0xc3, 0x3f, 0x18, 0x06, 0x24, 
+0xa1, 0x40, 0x12, 0x0e, 0x24, 0x21, 0x41, 0xc9, 
+0xe1, 0x1f, 0xd2, 0x14, 0x88, 0xaf, 0x4f, 0xd2, 
+0x0d, 0x70, 0x10, 0x03, 0xa7, 0xdc, 0xe7, 0xfe, 
+0xdb, 0xfb, 0x8b, 0x64, 0xd6, 0xfd, 0x32, 0x98, 
+0x29, 0x1b, 0xd3, 0xa3, 0x71, 0x20, 0x9d, 0x4b, 
+0xfe, 0x5f, 0x21, 0xae, 0xd6, 0x35, 0xf9, 0x6b, 
+0x43, 0x00, 0x44, 0xb1, 0x02, 0xc0, 0xe8, 0xf6, 
+0x2c, 0xc9, 0x73, 0x75, 0x29, 0x89, 0x8a, 0x88, 
+0x54, 0x7e, 0x2a, 0x90, 0x22, 0xf7, 0x78, 0x40, 
+0x9d, 0x9c, 0xc0, 0xb6, 0xbb, 0xb8, 0x1b, 0x03, 
+0x07, 0xfe, 0xbb, 0xfe, 0x8e, 0xe4, 0xef, 0x3e, 
+0x50, 0x12, 0x14, 0xe4, 0x56, 0x0b, 0x7f, 0xa6, 
+0x66, 0xb5, 0xf0, 0x52, 0x0f, 0x0a, 0x7a, 0x30, 
+0xd5, 0xc2, 0x6d, 0xcc, 0xb5, 0x41, 0x66, 0x63, 
+0xe0, 0x93, 0x26, 0xf0, 0x2d, 0xe8, 0x5c, 0x86, 
+0xc1, 0xbf, 0x26, 0x1a, 0xfc, 0xd3, 0x42, 0xf0, 
+0x8f, 0x47, 0xfe, 0x62, 0xd8, 0x3a, 0x05, 0xf1, 
+0xc8, 0xdf, 0x55, 0x49, 0xdd, 0xaf, 0x1d, 0x92, 
+0x3f, 0x69, 0xfc, 0xdb, 0xf1, 0x22, 0x0a, 0x80, 
+0x15, 0x22, 0x01, 0xa0, 0xea, 0xd2, 0x5f, 0xcf, 
+0x91, 0x5e, 0xb9, 0x9d, 0x7f, 0x92, 0xfa, 0x27, 
+0xc1, 0xbf, 0x70, 0xdb, 0xdd, 0x0a, 0x47, 0xff, 
+0x46, 0x72, 0x75, 0xbf, 0x66, 0x2a, 0xea, 0x7e, 
+0xb7, 0xab, 0xac, 0xfb, 0xb5, 0x9f, 0x43, 0xdd, 
+0xaf, 0x97, 0xca, 0xd1, 0x7f, 0xa8, 0xea, 0xba, 
+0x5f, 0xce, 0xce, 0x7f, 0xc4, 0x3c, 0x76, 0xfe, 
+0xa3, 0xf0, 0x33, 0xd8, 0xed, 0xc3, 0xdd, 0xb0, 
+0xc5, 0xd7, 0x1b, 0xde, 0xdb, 0x6b, 0x03, 0xcf, 
+0x8e, 0x6d, 0xd1, 0xcb, 0xa9, 0x5f, 0xd1, 0xb9, 
+0xdf, 0x55, 0xb0, 0x39, 0xd5, 0x5f, 0x22, 0x00, 
+0x8c, 0xb3, 0x7c, 0xe0, 0xd4, 0xf7, 0x5f, 0xeb, 
+0x95, 0xfc, 0x49, 0x88, 0x94, 0x7d, 0xee, 0x5f, 
+0x86, 0x01, 0x3f, 0x66, 0x9c, 0x4f, 0x2a, 0x7d, 
+0xf1, 0x35, 0xb5, 0x57, 0x66, 0x9c, 0x4f, 0xd6, 
+0xfe, 0x9a, 0x90, 0xd4, 0xb3, 0xc9, 0xe1, 0x1f, 
+0x9c, 0x12, 0xfc, 0x80, 0x5b, 0x28, 0x64, 0x3d, 
+0xb0, 0x0b, 0x03, 0x80, 0x79, 0x38, 0xe6, 0x3f, 
+0xc8, 0x36, 0x05, 0x62, 0x5e, 0xa5, 0x07, 0xd7, 
+0x4f, 0x13, 0x91, 0xf8, 0x99, 0xe7, 0xfe, 0x29, 
+0x78, 0x5a, 0xba, 0x35, 0x5f, 0x6e, 0xd7, 0x9f, 
+0x49, 0xfc, 0xe3, 0x7b, 0xca, 0xb8, 0x25, 0x85, 
+0x4b, 0xfe, 0xbf, 0x21, 0x5e, 0xd2, 0x07, 0xf9, 
+0x6b, 0x43, 0x00, 0x24, 0xb0, 0x02, 0x60, 0xd3, 
+0xed, 0x19, 0xe2, 0x70, 0x1d, 0x1b, 0xb0, 0x93, 
+0x8a, 0x01, 0xc5, 0x42, 0x40, 0xf9, 0xe3, 0x01, 
+0xc1, 0x9c, 0xc0, 0xcd, 0xb8, 0x31, 0x70, 0x4f, 
+0x19, 0x11, 0x00, 0x6c, 0xb5, 0xf0, 0x3f, 0xbf, 
+0xbc, 0x25, 0xfa, 0xa7, 0xe5, 0x10, 0x14, 0xb4, 
+0xd3, 0x66, 0x50, 0x90, 0xa9, 0x16, 0x6e, 0x61, 
+0xda, 0x04, 0x99, 0x8d, 0x81, 0x8d, 0x87, 0xc0, 
+0x6f, 0x5f, 0xd7, 0x02, 0x0e, 0xfe, 0x75, 0xd0, 
+0xe0, 0xdf, 0x02, 0x0d, 0xfe, 0xad, 0xe7, 0x08, 
+0x80, 0x75, 0xa3, 0x71, 0x60, 0x96, 0xba, 0x4b, 
+0x66, 0xf4, 0xef, 0xae, 0xb4, 0xee, 0x97, 0xeb, 
+0xfe, 0x79, 0xe4, 0xff, 0x9c, 0xf4, 0xd2, 0x9f, 
+0xe4, 0xd8, 0x0f, 0xd6, 0xfd, 0x46, 0xd9, 0xc5, 
+0x30, 0xa3, 0x7f, 0xa1, 0x9d, 0xff, 0x03, 0x7b, 
+0x0f, 0xc0, 0xa6, 0x47, 0x45, 0xcf, 0xff, 0xf9, 
+0xa3, 0x7f, 0xf5, 0x8f, 0xfd, 0xcc, 0x75, 0xe7, 
+0x7f, 0xee, 0x75, 0xbf, 0x5a, 0xde, 0xf9, 0x57, 
+0x52, 0xf7, 0xbb, 0xeb, 0xce, 0x04, 0x70, 0x5c, 
+0x15, 0x06, 0x9b, 0x42, 0x3c, 0xe0, 0xed, 0x03, 
+0xd6, 0xf0, 0xfc, 0xb8, 0x09, 0x3c, 0xc7, 0x60, 
+0x0b, 0x03, 0x96, 0xfc, 0x75, 0x7d, 0xea, 0x97, 
+0x8c, 0xfe, 0xc9, 0xb9, 0x5f, 0x63, 0x89, 0xfb, 
+0xf7, 0x81, 0x10, 0x3d, 0x9f, 0xfb, 0xe5, 0x3e, 
+0xf7, 0x4f, 0xc7, 0x31, 0xff, 0x18, 0x3b, 0xce, 
+0xc7, 0xd7, 0x16, 0x77, 0x9c, 0xff, 0xa3, 0x78, 
+0x9c, 0xcf, 0x1e, 0xfe, 0x39, 0x84, 0x5d, 0x12, 
+0xa4, 0x10, 0x88, 0x14, 0x03, 0x0d, 0xe2, 0xeb, 
+0x8e, 0x3d, 0xfc, 0x43, 0x9a, 0x02, 0x49, 0x60, 
+0x95, 0x4c, 0x09, 0xd2, 0x50, 0x24, 0xb0, 0xcf, 
+0xfd, 0xfd, 0xf1, 0xb9, 0xbf, 0xdc, 0x69, 0x5f, 
+0x31, 0xf9, 0x6f, 0xea, 0x25, 0xcf, 0xfd, 0x33, 
+0x59, 0xf2, 0x27, 0x70, 0xd5, 0x17, 0xf9, 0x6b, 
+0x43, 0x00, 0xa4, 0x49, 0x04, 0x00, 0x76, 0x43, 
+0x73, 0x47, 0xe9, 0x8a, 0x85, 0x80, 0x3a, 0x39, 
+0x01, 0xd5, 0x8f, 0x07, 0x8c, 0x6f, 0xc1, 0x8d, 
+0x81, 0xfb, 0xa4, 0x1b, 0x03, 0x56, 0x8f, 0xd4, 
+0xfc, 0xf0, 0xf9, 0x8d, 0xbb, 0xfe, 0xbb, 0x30, 
+0x83, 0x82, 0x05, 0x4a, 0x82, 0x82, 0x15, 0x86, 
+0x0d, 0x0a, 0x92, 0x6a, 0xe1, 0x57, 0xc5, 0xd5, 
+0xc2, 0xb8, 0x35, 0xe0, 0x62, 0xd3, 0x0c, 0xfe, 
+0x47, 0xba, 0x69, 0xf0, 0x8f, 0x06, 0xff, 0xd4, 
+0x0e, 0xfe, 0x71, 0xdd, 0x3f, 0x11, 0x00, 0x9b, 
+0x5a, 0xa2, 0x95, 0x8e, 0xfe, 0x1d, 0x64, 0xea, 
+0x7e, 0x25, 0xee, 0x5f, 0xc9, 0xe8, 0x9f, 0x7b, 
+0xec, 0x67, 0xeb, 0xd3, 0xe6, 0xd0, 0x87, 0xf5, 
+0xd7, 0xdc, 0xba, 0x5f, 0xee, 0xce, 0xbf, 0xbf, 
+0x49, 0x80, 0xf2, 0xe0, 0xdf, 0xbd, 0xf2, 0xc1, 
+0x3f, 0x73, 0xad, 0xec, 0xfc, 0xab, 0x33, 0xfa, 
+0x57, 0xbe, 0xf3, 0x1f, 0x34, 0x87, 0x9d, 0x7f, 
+0x85, 0xa3, 0xff, 0x4b, 0x52, 0x20, 0xf8, 0xa1, 
+0x18, 0xb0, 0xdb, 0x18, 0x0c, 0xeb, 0x22, 0xdc, 
+0xe0, 0xcd, 0x66, 0x2b, 0x78, 0x61, 0x7c, 0x2b, 
+0x92, 0xbe, 0xa9, 0x18, 0x2c, 0xf9, 0x9b, 0x88, 
+0xc9, 0x5f, 0xc8, 0xfd, 0x6b, 0xff, 0xd4, 0xaf, 
+0xe8, 0xdc, 0xef, 0x97, 0x60, 0x94, 0xe6, 0x2f, 
+0x11, 0x00, 0x5b, 0x32, 0xfc, 0xe1, 0x07, 0x3d, 
+0x9f, 0xfb, 0xcd, 0xc7, 0xf2, 0x1e, 0xb6, 0xe7, 
+0x9f, 0xb9, 0xd0, 0x27, 0x1e, 0xe7, 0x93, 0xdd, 
+0x7f, 0xd9, 0x71, 0x3e, 0xf9, 0xf7, 0x45, 0xdc, 
+0xc3, 0x3f, 0x48, 0xf4, 0x84, 0xf0, 0x09, 0xf1, 
+0x97, 0xe2, 0xef, 0x33, 0xc8, 0x69, 0x0a, 0xcc, 
+0xc7, 0xc7, 0x06, 0xec, 0x73, 0xff, 0x3d, 0xf8, 
+0xdc, 0x5f, 0xd1, 0xba, 0xdf, 0xc6, 0xe1, 0x44, 
+0x7c, 0xee, 0x9f, 0xce, 0x25, 0xff, 0x5a, 0xc4, 
+0x59, 0x8b, 0x49, 0x00, 0xe4, 0xb2, 0x02, 0x60, 
+0xc3, 0xad, 0xa9, 0x1c, 0xe2, 0x64, 0xc9, 0x33, 
+0x46, 0x58, 0x08, 0x68, 0x9c, 0x13, 0x50, 0xfc, 
+0x78, 0x60, 0xcb, 0xad, 0xb9, 0xbc, 0x8d, 0x01, 
+0xac, 0x16, 0xfe, 0xfa, 0x93, 0xeb, 0x83, 0x7e, 
+0x97, 0x0b, 0x0a, 0x5e, 0xad, 0xdb, 0xa0, 0xe0, 
+0xc6, 0x39, 0x07, 0x05, 0xcb, 0x94, 0x04, 0x05, 
+0x6b, 0x95, 0x04, 0x05, 0x1b, 0xb5, 0x1b, 0x14, 
+0x7c, 0x80, 0x6c, 0x0c, 0x88, 0xab, 0x85, 0x9f, 
+0x39, 0x08, 0x6e, 0x5e, 0x2d, 0x10, 0xd0, 0xdd, 
+0xb3, 0x40, 0x83, 0x7f, 0x6d, 0x34, 0xf8, 0xb7, 
+0x80, 0x82, 0x7f, 0x5c, 0xf2, 0x17, 0x21, 0x16, 
+0xaf, 0xc5, 0xf9, 0x28, 0x19, 0xfd, 0x73, 0xdc, 
+0xff, 0x8b, 0x0a, 0xdc, 0xff, 0xb3, 0x52, 0xf7, 
+0x2f, 0x74, 0xe9, 0x2f, 0xc1, 0x2b, 0x49, 0x70, 
+0xe7, 0x9f, 0xd4, 0xfd, 0x96, 0xe7, 0x97, 0xc3, 
+0xa6, 0x87, 0x84, 0x46, 0xff, 0xea, 0x04, 0xff, 
+0xe6, 0x57, 0xf7, 0xeb, 0x22, 0x57, 0xf7, 0xeb, 
+0xa3, 0xb2, 0xee, 0x57, 0x5b, 0x3b, 0xff, 0x51, 
+0x97, 0x27, 0x80, 0xdf, 0x53, 0x11, 0x60, 0xb3, 
+0x35, 0x10, 0x56, 0xc7, 0xbb, 0xc0, 0xeb, 0x1d, 
+0x56, 0xb0, 0x62, 0xdc, 0x0c, 0x49, 0x7f, 0x9b, 
+0x18, 0x84, 0xfc, 0xa5, 0x02, 0xe0, 0x39, 0x9d, 
+0xb8, 0x7f, 0xf5, 0x82, 0x7f, 0xe4, 0xdc, 0x2f, 
+0x21, 0x7f, 0x56, 0x00, 0x44, 0x57, 0x16, 0xe8, 
+0x95, 0xfc, 0xc9, 0x6b, 0x85, 0x7d, 0xee, 0x7f, 
+0x18, 0x09, 0x5f, 0x32, 0xce, 0xc7, 0xd6, 0x3f, 
+0x72, 0xcc, 0x87, 0x8c, 0xf3, 0x8f, 0x8b, 0xc7, 
+0xf9, 0xa3, 0x38, 0x61, 0xaa, 0xc4, 0xce, 0x08, 
+0x02, 0xf2, 0x35, 0xf9, 0x67, 0x64, 0xd4, 0x4f, 
+0xbe, 0x87, 0x8c, 0xfe, 0xd9, 0xa6, 0x40, 0xf2, 
+0x7b, 0xec, 0x43, 0x81, 0xc0, 0x3c, 0xf7, 0x4f, 
+0xc4, 0xf1, 0x3f, 0x3e, 0xf7, 0xb7, 0xe9, 0x2f, 
+0x94, 0x3b, 0xed, 0xcb, 0x90, 0x3f, 0xbe, 0x7f, 
+0x4c, 0x0f, 0xa4, 0x71, 0xc9, 0xff, 0x24, 0xe2, 
+0xff, 0xf4, 0x49, 0xfe, 0xda, 0x10, 0x00, 0xc5, 
+0x2c, 0xf1, 0xae, 0xbf, 0x25, 0x49, 0x4c, 0x9a, 
+0x22, 0xe2, 0xe4, 0x92, 0xa7, 0xfc, 0x54, 0x60, 
+0x6e, 0x39, 0x81, 0x8d, 0x4a, 0x84, 0x80, 0xc9, 
+0x6d, 0xf9, 0xb8, 0x31, 0x50, 0xcb, 0x0a, 0x81, 
+0x3f, 0x4c, 0xee, 0x2b, 0xf8, 0xea, 0xc3, 0x6b, 
+0xfd, 0x34, 0x0e, 0x0a, 0x7e, 0xbe, 0x68, 0x82, 
+0x82, 0x07, 0x95, 0x04, 0x05, 0x95, 0x54, 0x0b, 
+0xab, 0x08, 0x0a, 0xba, 0x3e, 0xda, 0x09, 0xf6, 
+0x2f, 0x89, 0x37, 0x06, 0x5e, 0x6a, 0x00, 0x8f, 
+0xf0, 0x56, 0x08, 0x18, 0xa4, 0xc1, 0xbf, 0xc5, 
+0x1c, 0xfc, 0x33, 0xd1, 0x75, 0xf0, 0x4f, 0x40, 
+0x00, 0x58, 0x05, 0x04, 0x2b, 0x1f, 0xfd, 0xbf, 
+0xac, 0x78, 0xf4, 0x2f, 0xe7, 0xfe, 0x9f, 0x92, 
+0x11, 0x00, 0x8f, 0x6f, 0x05, 0xf3, 0x17, 0xac, 
+0xf0, 0x39, 0x6b, 0x0f, 0x33, 0xfa, 0x27, 0xc7, 
+0x7e, 0x64, 0xeb, 0x7e, 0xdd, 0x57, 0x7b, 0x8a, 
+0x04, 0x80, 0x06, 0xa3, 0x7f, 0x8b, 0x39, 0x8c, 
+0xfe, 0x1d, 0xe5, 0xea, 0x7e, 0x3d, 0xd5, 0xa8, 
+0xfb, 0x0d, 0xd4, 0x4a, 0xdd, 0xef, 0xee, 0xbf, 
+0xc4, 0x82, 0xe7, 0x8b, 0xbb, 0xc0, 0xdc, 0xc6, 
+0x0f, 0xbe, 0x48, 0x77, 0x86, 0x57, 0x7b, 0xad, 
+0xe0, 0xc5, 0x71, 0x73, 0x24, 0x7d, 0x73, 0x86, 
+0xf8, 0x65, 0xc9, 0x5f, 0xd8, 0xfd, 0xcb, 0x92, 
+0xbf, 0xb1, 0x5a, 0xe4, 0x3f, 0x1f, 0xf7, 0xff, 
+0xc4, 0xe8, 0x1a, 0x30, 0x4e, 0xf7, 0x93, 0x08, 
+0x00, 0x93, 0xb4, 0x00, 0xbd, 0x9e, 0xfb, 0x25, 
+0x1b, 0x24, 0xec, 0x73, 0xff, 0x0a, 0x2c, 0x84, 
+0x62, 0xc7, 0xf9, 0xa4, 0xef, 0x9f, 0xb8, 0xf9, 
+0x1a, 0xfc, 0x67, 0xec, 0x38, 0x9f, 0xb8, 0x7d, 
+0xe2, 0xfa, 0x89, 0xfb, 0x67, 0x0f, 0xff, 0x90, 
+0xa9, 0x00, 0x99, 0x0e, 0x90, 0x29, 0x01, 0x09, 
+0xff, 0xb1, 0x4d, 0x81, 0x6d, 0xf8, 0xfa, 0x4b, 
+0xe0, 0x3c, 0xf7, 0x77, 0x6a, 0xcb, 0x93, 0x3b, 
+0xed, 0x4b, 0xde, 0x5b, 0xe4, 0x7d, 0x64, 0x7c, 
+0x24, 0x99, 0x4b, 0xfe, 0xbf, 0x5a, 0x94, 0x64, 
+0x3c, 0xaf, 0x6f, 0xf2, 0xd7, 0x86, 0x00, 0xa8, 
+0x64, 0x05, 0xc0, 0xba, 0x9b, 0x13, 0xc4, 0x84, 
+0x19, 0xa1, 0x40, 0x08, 0xa8, 0xf3, 0x78, 0x60, 
+0xfe, 0x39, 0x01, 0x53, 0x66, 0x63, 0x60, 0x3f, 
+0x5b, 0x2d, 0xfc, 0x2b, 0x56, 0x0b, 0x7f, 0xfb, 
+0x01, 0x53, 0x2d, 0x6c, 0xc0, 0xa0, 0xe0, 0x8d, 
+0xda, 0x0f, 0x0a, 0x6e, 0x57, 0x33, 0x28, 0xe8, 
+0x34, 0x97, 0xa0, 0x20, 0xd9, 0x18, 0x78, 0x0a, 
+0xab, 0x85, 0x5f, 0x10, 0x05, 0x05, 0xed, 0xdf, 
+0x69, 0x04, 0xcf, 0x94, 0x36, 0x08, 0x18, 0xa1, 
+0xc1, 0xbf, 0xe5, 0x10, 0xfc, 0xdb, 0x3c, 0x87, 
+0xe0, 0x1f, 0x97, 0xfc, 0x09, 0xb6, 0x94, 0x84, 
+0x4b, 0x46, 0xff, 0x12, 0xf7, 0xff, 0xca, 0xdc, 
+0x83, 0x7f, 0x5c, 0xf2, 0x37, 0x7e, 0xcc, 0x14, 
+0x8c, 0x1e, 0x33, 0x81, 0xb4, 0x90, 0x74, 0xb9, 
+0xba, 0x5f, 0x72, 0xec, 0x87, 0xd4, 0xfd, 0x66, 
+0x27, 0xe4, 0xcc, 0x6b, 0xe7, 0x9f, 0x90, 0xbf, 
+0x8d, 0x3a, 0xa3, 0x7f, 0x1d, 0xef, 0xfc, 0x73, 
+0x47, 0xff, 0x3b, 0xaf, 0x8d, 0x04, 0x97, 0xb7, 
+0x76, 0xc2, 0x56, 0x47, 0x6f, 0xf8, 0x2c, 0xcf, 
+0x11, 0x5e, 0x19, 0xb4, 0x82, 0x97, 0xc6, 0x2d, 
+0x11, 0x16, 0x48, 0xfc, 0x16, 0x0c, 0xf9, 0xbf, 
+0xc8, 0x21, 0xff, 0x15, 0x72, 0xe4, 0x2f, 0xec, 
+0xfe, 0x85, 0x47, 0xff, 0xda, 0x0d, 0xfe, 0x71, 
+0xdd, 0xff, 0xa7, 0x45, 0x2e, 0x12, 0xf2, 0x27, 
+0xc8, 0x38, 0x50, 0xa9, 0x37, 0xf2, 0x27, 0x0d, 
+0x7e, 0x84, 0xa0, 0x89, 0x00, 0xc8, 0x40, 0xf7, 
+0x2e, 0x37, 0xce, 0x17, 0x57, 0xfa, 0x4a, 0x0e, 
+0xff, 0xa0, 0x98, 0x24, 0xcf, 0xfd, 0xc9, 0xf3, 
+0x7f, 0x92, 0x03, 0x20, 0xeb, 0x7d, 0x24, 0x17, 
+0x40, 0xf2, 0x01, 0x24, 0x27, 0x40, 0xd6, 0xff, 
+0x48, 0x6e, 0x80, 0xb4, 0x03, 0xa6, 0x60, 0x7f, 
+0x00, 0xfb, 0xdc, 0xdf, 0x6f, 0x7f, 0x8e, 0xfc, 
+0x69, 0x5f, 0x31, 0xf9, 0x6f, 0xea, 0x49, 0x94, 
+0x79, 0xee, 0x9f, 0x61, 0x6f, 0x08, 0xf2, 0xd7, 
+0x86, 0x00, 0xd8, 0xc7, 0x0a, 0x80, 0x35, 0x37, 
+0xc7, 0x49, 0xc6, 0xe7, 0x7c, 0xd2, 0x54, 0x24, 
+0x04, 0x62, 0x74, 0x9a, 0x13, 0x20, 0x1b, 0x03, 
+0x9c, 0x6a, 0xe1, 0xff, 0xac, 0xbd, 0x2d, 0xe1, 
+0xc7, 0xf7, 0x65, 0x84, 0x80, 0x60, 0x50, 0x50, 
+0x4e, 0x08, 0x84, 0x2b, 0xa9, 0x16, 0xd6, 0x5f, 
+0x50, 0xd0, 0xd2, 0x20, 0x41, 0x41, 0x71, 0xb5, 
+0xf0, 0x33, 0xe2, 0x8d, 0x81, 0x2f, 0x9a, 0xc0, 
+0xab, 0xa4, 0x83, 0x06, 0xff, 0x68, 0xf0, 0x4f, 
+0xc1, 0xe8, 0x5f, 0x24, 0x00, 0xd6, 0x12, 0x11, 
+0xd0, 0x1f, 0x0d, 0x4e, 0x6f, 0xbb, 0x89, 0xc8, 
+0x5f, 0x28, 0xf8, 0xa7, 0xe1, 0xe8, 0x5f, 0x4e, 
+0x00, 0x3c, 0x6a, 0x02, 0xd6, 0xaf, 0x6d, 0x67, 
+0xc8, 0xbf, 0x0d, 0x47, 0xb0, 0x42, 0x75, 0xbf, 
+0x8e, 0x1f, 0xb8, 0x68, 0xb0, 0xf3, 0xbf, 0x9d, 
+0x2f, 0x00, 0x14, 0x8e, 0xfe, 0x9d, 0x35, 0xaa, 
+0xfb, 0xf5, 0x9c, 0x43, 0xdd, 0x2f, 0xeb, 0xfe, 
+0x03, 0x6f, 0xd9, 0x0d, 0x0e, 0x78, 0x62, 0xd9, 
+0xd8, 0xd3, 0x0b, 0x3e, 0x29, 0x43, 0xc2, 0x1f, 
+0xb1, 0x81, 0x97, 0xc7, 0xad, 0x18, 0x88, 0x88, 
+0x9f, 0x4b, 0xfe, 0x16, 0x4a, 0xdd, 0xff, 0xf3, 
+0x6a, 0xb9, 0x7f, 0xdd, 0x07, 0xff, 0xc8, 0xb9, 
+0x5f, 0xe3, 0x4c, 0xa9, 0xfb, 0xdf, 0x96, 0x1a, 
+0xac, 0xd7, 0x73, 0xbf, 0xe4, 0xf6, 0x03, 0xf3, 
+0xdc, 0x1f, 0x89, 0x7a, 0x18, 0x37, 0x47, 0xe4, 
+0xc6, 0xf9, 0xf8, 0x68, 0xe0, 0x6f, 0xd8, 0x01, 
+0x40, 0xc6, 0xf9, 0x24, 0xe9, 0x9f, 0x83, 0x61, 
+0x3e, 0x92, 0xfc, 0x3f, 0x85, 0x5b, 0x27, 0x64, 
+0x13, 0x80, 0x6c, 0x04, 0x90, 0xcd, 0x00, 0x52, 
+0xf8, 0x43, 0x36, 0x05, 0x48, 0x01, 0x10, 0xd9, 
+0x1c, 0xc8, 0xc1, 0x09, 0x81, 0xe4, 0xb9, 0x7f, 
+0x71, 0x86, 0xe0, 0x69, 0x5f, 0xe6, 0xbd, 0x34, 
+0x84, 0xcf, 0xfd, 0x2b, 0xb9, 0xcf, 0xfd, 0x33, 
+0x2a, 0x0d, 0x45, 0xfe, 0xda, 0x10, 0x00, 0x8d, 
+0x12, 0x01, 0x70, 0x63, 0x2c, 0x87, 0x2c, 0x65, 
+0x85, 0x80, 0xd4, 0x41, 0xcb, 0xe6, 0x04, 0x56, 
+0xeb, 0x30, 0x27, 0x40, 0x08, 0xd7, 0xec, 0x9e, 
+0x72, 0x32, 0x09, 0x10, 0x57, 0x0b, 0xef, 0xfb, 
+0x69, 0xe5, 0xcd, 0x11, 0xff, 0xd1, 0x4e, 0x50, 
+0x30, 0x52, 0x49, 0x50, 0x30, 0x51, 0x61, 0x50, 
+0x50, 0xf4, 0xdf, 0xb5, 0xb8, 0x82, 0x82, 0x64, 
+0x63, 0xc0, 0x91, 0x53, 0x2d, 0xec, 0xb4, 0xe5, 
+0x30, 0xf8, 0x1c, 0xe8, 0xa4, 0xc1, 0x3f, 0x1a, 
+0xfc, 0x13, 0x74, 0xff, 0x6b, 0x47, 0x63, 0x18, 
+0x6c, 0xb7, 0xf0, 0x51, 0x6b, 0xf4, 0xaf, 0x30, 
+0xf8, 0xf7, 0x94, 0x02, 0xf7, 0x8f, 0xe4, 0xbf, 
+0xf9, 0x51, 0x51, 0xe1, 0x4f, 0x56, 0x54, 0xb6, 
+0x64, 0xf4, 0x4f, 0x8e, 0xfd, 0xec, 0xc7, 0x3d, 
+0xee, 0xbd, 0xd8, 0xce, 0x56, 0x81, 0xbb, 0xdb, 
+0x09, 0x3b, 0x13, 0xe7, 0x35, 0xfa, 0x97, 0x73, 
+0xff, 0xb7, 0xe8, 0x60, 0xe7, 0x9f, 0x53, 0xf7, 
+0xeb, 0x73, 0x77, 0x28, 0xec, 0x58, 0x19, 0x00, 
+0x9b, 0x02, 0x3d, 0xe0, 0xa3, 0x1a, 0x24, 0xfc, 
+0x31, 0x1b, 0x78, 0x65, 0x9c, 0xc0, 0x1a, 0x49, 
+0xdf, 0x5a, 0x25, 0xf9, 0x2b, 0x77, 0xff, 0x86, 
+0x0f, 0xfe, 0x11, 0x01, 0xb0, 0x32, 0xd7, 0x03, 
+0x89, 0xdf, 0x57, 0x22, 0x00, 0x4a, 0x8f, 0x1c, 
+0xd0, 0x1b, 0xf9, 0x93, 0xc7, 0x44, 0xec, 0x73, 
+0xff, 0x56, 0x14, 0x8c, 0x42, 0xe3, 0x7c, 0x52, 
+0xe9, 0xcb, 0x3d, 0xfc, 0x43, 0x76, 0xfe, 0x49, 
+0xaa, 0x9f, 0xfc, 0x90, 0x1c, 0xfe, 0xc1, 0x90, 
+0x1f, 0xe9, 0x08, 0x20, 0x5d, 0x01, 0xe4, 0xfb, 
+0x2b, 0xf1, 0x91, 0x01, 0x4b, 0xfe, 0xe4, 0xb9, 
+0xbf, 0x75, 0x7f, 0x81, 0xe0, 0xba, 0x1f, 0x79, 
+0xdf, 0x98, 0xd6, 0x71, 0x9f, 0xfb, 0x67, 0x1c, 
+0x43, 0x5c, 0xb9, 0x98, 0x05, 0x40, 0x2b, 0x2b, 
+0x00, 0xbe, 0xbc, 0x31, 0x4a, 0x4c, 0x94, 0xec, 
+0x7a, 0x5d, 0xb8, 0x12, 0x21, 0xa0, 0x8f, 0x9c, 
+0x80, 0xf4, 0xf1, 0x80, 0xd1, 0xcd, 0xd9, 0x60, 
+0x71, 0x7f, 0xa5, 0xb4, 0x5a, 0xf8, 0xe1, 0xaa, 
+0xef, 0x3f, 0xbb, 0x21, 0xf4, 0x37, 0xc3, 0x04, 
+0x05, 0xd3, 0x15, 0x07, 0x05, 0x05, 0xaa, 0x85, 
+0xcd, 0xd4, 0xaa, 0x16, 0xd6, 0x4f, 0x50, 0xd0, 
+0xed, 0xde, 0x1e, 0xfc, 0x30, 0x17, 0x57, 0x0b, 
+0xe3, 0xfa, 0xa0, 0xb3, 0x7d, 0x33, 0xf8, 0xb4, 
+0x74, 0xd1, 0xe0, 0x1f, 0x0d, 0xfe, 0xc9, 0x91, 
+0x3f, 0xc1, 0xd6, 0xa8, 0xe0, 0x79, 0xef, 0xfc, 
+0x73, 0x83, 0x7f, 0xc6, 0x8f, 0x8b, 0x46, 0xff, 
+0x84, 0xfc, 0x99, 0xc6, 0x3f, 0xac, 0xfb, 0xb5, 
+0x7b, 0xdf, 0x91, 0x09, 0xfe, 0xb1, 0xa3, 0x7f, 
+0xf6, 0xd2, 0x1f, 0x39, 0xf6, 0x53, 0x84, 0x7b, 
+0xdd, 0x56, 0xcf, 0x6d, 0x97, 0x8e, 0xfe, 0x95, 
+0xee, 0xfc, 0xef, 0x50, 0xb9, 0xf3, 0xef, 0xa0, 
+0xe5, 0x9d, 0x7f, 0xf7, 0x47, 0x82, 0xc1, 0x6a, 
+0x83, 0x2f, 0xac, 0xdf, 0xe5, 0x0e, 0x1f, 0xd4, 
+0x3b, 0xc0, 0xab, 0xe3, 0x3b, 0x10, 0xdb, 0x19, 
+0x88, 0x88, 0x9f, 0x4b, 0xfe, 0xca, 0x04, 0x80, 
+0x2c, 0xf9, 0x2f, 0xcc, 0xe0, 0x1f, 0x39, 0xf7, 
+0x6b, 0x9c, 0xe5, 0x27, 0x11, 0x00, 0x96, 0xa9, 
+0xfa, 0x3b, 0xf7, 0x4b, 0xca, 0xa3, 0xc8, 0x33, 
+0x7f, 0x82, 0x2a, 0x1c, 0xf5, 0x33, 0x17, 0xfa, 
+0x70, 0x9c, 0xdf, 0x23, 0x3b, 0xce, 0x27, 0x95, 
+0xbe, 0xb8, 0x59, 0x42, 0x5a, 0xfe, 0x48, 0xdb, 
+0x1f, 0x69, 0xfd, 0x23, 0xed, 0x7f, 0xe4, 0xa8, 
+0x0f, 0x69, 0x03, 0x24, 0xad, 0x80, 0xe4, 0xd8, 
+0x0f, 0x69, 0x09, 0x24, 0x6d, 0x81, 0x87, 0xf0, 
+0x75, 0xc7, 0x7d, 0xee, 0xef, 0xd8, 0x96, 0x27, 
+0xb8, 0xee, 0x47, 0xde, 0x3b, 0xd2, 0xe7, 0xfe, 
+0xa4, 0xf1, 0x2f, 0xe3, 0x7f, 0x88, 0xa7, 0x0c, 
+0x49, 0xfe, 0x5a, 0x10, 0x00, 0xf5, 0x3d, 0x2c, 
+0xa9, 0xae, 0xbc, 0x61, 0x8f, 0x0c, 0x51, 0xca, 
+0x0a, 0x81, 0xdd, 0x82, 0x42, 0x60, 0xeb, 0xad, 
+0x19, 0x10, 0xf2, 0x68, 0x33, 0x78, 0x3d, 0xb8, 
+0x1f, 0xcc, 0x6f, 0xcf, 0xd1, 0x49, 0x4e, 0x80, 
+0x9d, 0x0a, 0x18, 0x93, 0x8d, 0x81, 0x07, 0xf7, 
+0x4a, 0x84, 0xc0, 0xb6, 0x07, 0x4a, 0xbe, 0xfe, 
+0xf8, 0xba, 0xc0, 0xb9, 0x05, 0x05, 0xaf, 0x5d, 
+0xc6, 0x41, 0x41, 0x52, 0x2d, 0xfc, 0x8a, 0x38, 
+0x28, 0x88, 0x27, 0x88, 0x5d, 0xfd, 0x8e, 0x80, 
+0x6f, 0x4f, 0x17, 0x0d, 0xfe, 0x2d, 0xf3, 0xe0, 
+0xdf, 0x5a, 0x9e, 0x00, 0x88, 0x86, 0x8d, 0xf5, 
+0xbb, 0xd5, 0x1f, 0xfd, 0x2b, 0xd8, 0xf9, 0x17, 
+0x74, 0xff, 0x32, 0x75, 0xbf, 0x79, 0x89, 0x79, 
+0x4c, 0xf0, 0x6f, 0x1f, 0x8e, 0x71, 0xab, 0x31, 
+0xb0, 0x55, 0x8e, 0x1f, 0xf0, 0xe4, 0xd2, 0x1f, 
+0x59, 0xf3, 0x12, 0x9d, 0xf9, 0x55, 0x34, 0xfa, 
+0xb7, 0x56, 0x5a, 0xf7, 0xab, 0xd5, 0x9d, 0xff, 
+0x6b, 0x83, 0xf0, 0x64, 0x77, 0x00, 0x98, 0x99, 
+0x7a, 0xc3, 0x9a, 0x68, 0x37, 0x78, 0xaf, 0xd9, 
+0x01, 0x5e, 0x1b, 0xb7, 0xe5, 0x60, 0x87, 0x0a, 
+0x01, 0x30, 0xb7, 0xd1, 0xff, 0x42, 0x09, 0xfe, 
+0x11, 0x01, 0xb0, 0x06, 0xab, 0xed, 0x45, 0xe4, 
+0x2f, 0x12, 0x00, 0xfa, 0x3a, 0xf7, 0xcb, 0x7d, 
+0xee, 0x9f, 0x89, 0x64, 0xcf, 0x8c, 0xf3, 0x91, 
+0xd4, 0xb9, 0xe3, 0xfc, 0x71, 0x76, 0x9c, 0x8f, 
+0x22, 0x80, 0xf4, 0xfb, 0x93, 0x9e, 0x7f, 0xd2, 
+0xf7, 0x4f, 0x7a, 0xff, 0x89, 0x58, 0x60, 0x0f, 
+0xff, 0x90, 0xbb, 0x00, 0xa4, 0x29, 0x90, 0xdc, 
+0x09, 0x20, 0xa1, 0xc0, 0x24, 0xfc, 0x67, 0xc4, 
+0xfd, 0x93, 0x23, 0x3f, 0x7e, 0x75, 0xd9, 0x82, 
+0xeb, 0x7e, 0xe4, 0xbd, 0xb3, 0xb1, 0x27, 0x41, 
+0xfc, 0xdc, 0x3f, 0x83, 0x85, 0x8d, 0xa1, 0xc9, 
+0x5f, 0x1b, 0x02, 0x60, 0x88, 0x25, 0xd3, 0x2f, 
+0xae, 0x0f, 0x97, 0x3c, 0x3b, 0xe7, 0x12, 0xa5, 
+0xa4, 0x70, 0x47, 0xe0, 0xf1, 0xc0, 0xfa, 0x1b, 
+0xe3, 0x20, 0xee, 0x99, 0x01, 0x48, 0x78, 0x76, 
+0x48, 0x02, 0x67, 0xbc, 0x06, 0xa8, 0xeb, 0x9c, 
+0x00, 0xb3, 0x31, 0xf0, 0x30, 0xbb, 0x31, 0x50, 
+0xff, 0xbb, 0xf1, 0x3d, 0x39, 0xdf, 0x7c, 0x78, 
+0x8d, 0xaf, 0x58, 0x08, 0x2c, 0xfc, 0xa0, 0xa0, 
+0x99, 0x56, 0x82, 0x82, 0xcd, 0x4a, 0x82, 0x82, 
+0x5d, 0xea, 0x05, 0x05, 0x49, 0xb5, 0xf0, 0x8b, 
+0xa2, 0x6a, 0x61, 0xbb, 0x57, 0x1b, 0xc0, 0x2d, 
+0xaa, 0x15, 0x7c, 0x07, 0x69, 0xf0, 0x6f, 0xb9, 
+0x06, 0xff, 0xb8, 0xe4, 0xbf, 0x46, 0x8c, 0x1d, 
+0x78, 0x75, 0x8f, 0xbb, 0xf3, 0x4f, 0xc8, 0x5f, 
+0xe5, 0xce, 0xff, 0x53, 0x8a, 0x83, 0x7f, 0xec, 
+0xe8, 0x9f, 0x5b, 0xf7, 0xeb, 0xf2, 0x85, 0x3b, 
+0x6f, 0xf4, 0x5f, 0x8a, 0x1f, 0xe8, 0xe4, 0x59, 
+0x2f, 0xb9, 0xeb, 0x4e, 0xfe, 0xef, 0x48, 0x47, 
+0xff, 0x16, 0x7a, 0xab, 0xfb, 0xf5, 0xbc, 0xc1, 
+0x1f, 0xb7, 0x69, 0x7c, 0xc1, 0xd4, 0xca, 0x13, 
+0xbe, 0x4c, 0x72, 0x85, 0x77, 0x3b, 0x1c, 0xe0, 
+0xf5, 0x71, 0x7b, 0x31, 0xec, 0x18, 0xcc, 0x9d, 
+0xfc, 0x17, 0x5f, 0xf0, 0x8f, 0x9c, 0xfb, 0x95, 
+0x92, 0xbf, 0x2f, 0xec, 0xd0, 0xe3, 0xb9, 0x5f, 
+0x32, 0x09, 0x22, 0xe4, 0x9f, 0x80, 0x44, 0x4d, 
+0xc2, 0x7e, 0xe4, 0x07, 0x19, 0xeb, 0x0b, 0x8d, 
+0xf3, 0xc9, 0x63, 0x00, 0xc9, 0xe1, 0x1f, 0x3c, 
+0x38, 0x45, 0x2e, 0xff, 0x91, 0x0b, 0x80, 0xe4, 
+0x12, 0x60, 0x1d, 0x7b, 0xf8, 0x87, 0x34, 0x05, 
+0xe2, 0x0a, 0x6a, 0x26, 0xae, 0x0b, 0xb2, 0xa3, 
+0xff, 0xdd, 0xf8, 0xdc, 0x5f, 0x70, 0xd7, 0x9f, 
+0xbc, 0x77, 0x86, 0x12, 0xf0, 0xb9, 0x7f, 0x06, 
+0x97, 0xfc, 0x4b, 0x16, 0x02, 0xf9, 0xcf, 0x5b, 
+0x00, 0x6c, 0x7f, 0xa2, 0x7e, 0x82, 0x15, 0x00, 
+0x9f, 0x5f, 0x17, 0x2a, 0x76, 0xca, 0x21, 0x02, 
+0x42, 0x20, 0x4c, 0x50, 0x08, 0xb8, 0xdc, 0x57, 
+0xc5, 0x23, 0x7f, 0x16, 0x1e, 0x0f, 0xec, 0x53, 
+0x90, 0x13, 0xe0, 0x3f, 0x1e, 0x98, 0x6f, 0x4e, 
+0xc0, 0xf4, 0xce, 0x22, 0xd2, 0x24, 0xc8, 0x56, 
+0x0b, 0xff, 0x6f, 0xc3, 0x9d, 0x29, 0x7f, 0x15, 
+0xdd, 0x18, 0x10, 0x0a, 0x0a, 0x06, 0x68, 0x3d, 
+0x28, 0xb8, 0x41, 0xcd, 0xa0, 0xa0, 0x89, 0x6c, 
+0x50, 0xf0, 0xe6, 0x85, 0x13, 0x14, 0x24, 0xb9, 
+0x01, 0xa6, 0x5a, 0xf8, 0x79, 0xf1, 0xc6, 0xc0, 
+0x07, 0x8d, 0xe0, 0x91, 0xd9, 0x46, 0x83, 0x7f, 
+0x4b, 0x3c, 0xf8, 0xa7, 0xcc, 0xfd, 0xaf, 0x91, 
+0x08, 0x80, 0x28, 0x30, 0x77, 0xf1, 0xe1, 0xbb, 
+0xff, 0x15, 0x9a, 0xef, 0xfc, 0x93, 0xd1, 0x3f, 
+0xcf, 0xfd, 0x3f, 0x2c, 0x7f, 0xec, 0x27, 0xc4, 
+0x2a, 0x94, 0x09, 0xfe, 0xb1, 0xa3, 0x7f, 0x72, 
+0xdc, 0x25, 0xc8, 0x22, 0x98, 0x57, 0xf7, 0xab, 
+0xed, 0x9d, 0x7f, 0x57, 0x8e, 0xfb, 0x77, 0xbb, 
+0xc5, 0x07, 0xb6, 0xbf, 0xe5, 0x05, 0xc6, 0x0e, 
+0x1e, 0xb0, 0x12, 0xcb, 0xdc, 0xde, 0xe9, 0x71, 
+0x82, 0x37, 0xc6, 0x1c, 0xa4, 0x50, 0x93, 0xfc, 
+0xb5, 0xe9, 0xfe, 0x17, 0x4a, 0xf0, 0x8f, 0x60, 
+0x7d, 0xba, 0x1f, 0x4f, 0x00, 0x74, 0x4f, 0x0d, 
+0xe9, 0x85, 0xfc, 0x49, 0x3f, 0x04, 0xfb, 0xdc, 
+0x9f, 0xec, 0xeb, 0x4b, 0xc6, 0xf9, 0xf8, 0xb8, 
+0x48, 0x76, 0x9c, 0xdf, 0x89, 0x01, 0xc0, 0x5c, 
+0x0c, 0x02, 0x92, 0x7b, 0x00, 0x27, 0xf0, 0xf0, 
+0xcf, 0xff, 0x70, 0x72, 0x40, 0xd2, 0xfd, 0x15, 
+0xf8, 0x7a, 0xaa, 0xc2, 0x47, 0x02, 0xa4, 0x29, 
+0xf0, 0x17, 0x4c, 0xfc, 0x1f, 0xc7, 0xa6, 0xc0, 
+0x12, 0xce, 0x91, 0x9f, 0x84, 0xac, 0x34, 0xb0, 
+0xec, 0xcf, 0x93, 0x59, 0xf7, 0x4b, 0x61, 0xde, 
+0x3f, 0xe4, 0x7d, 0x62, 0xba, 0x3f, 0x95, 0x4b, 
+0xfe, 0x33, 0x88, 0xcb, 0x97, 0x8a, 0x00, 0x38, 
+0xc6, 0x0a, 0x00, 0x42, 0xfc, 0x22, 0x72, 0x0c, 
+0x96, 0x11, 0x02, 0x3b, 0x05, 0x84, 0xc0, 0x2e, 
+0x24, 0xc8, 0x08, 0x88, 0x7e, 0xba, 0x57, 0x50, 
+0x00, 0x10, 0x90, 0x47, 0x03, 0xaa, 0x73, 0x02, 
+0x71, 0x5a, 0xc8, 0x09, 0xe0, 0xc6, 0xc0, 0xdd, 
+0xbc, 0x8d, 0x81, 0x7f, 0xad, 0xbe, 0x35, 0xf6, 
+0x9f, 0xf2, 0x41, 0x41, 0x3f, 0x85, 0x41, 0x41, 
+0x6e, 0xb5, 0xf0, 0x4a, 0x35, 0xab, 0x85, 0x97, 
+0x5e, 0x50, 0xb0, 0x4f, 0x54, 0x2d, 0xfc, 0xb4, 
+0xe8, 0xf5, 0xe0, 0xb0, 0xba, 0x09, 0x3c, 0x2a, 
+0xdb, 0xe7, 0x14, 0xfc, 0xf3, 0x34, 0x70, 0xf0, 
+0xcf, 0x9e, 0x06, 0xff, 0xb4, 0xe0, 0xfe, 0xa3, 
+0x18, 0x18, 0x65, 0x06, 0x2b, 0xdd, 0xf9, 0x27, 
+0xa3, 0x7f, 0x39, 0xf7, 0xff, 0xa4, 0xf2, 0xe0, 
+0x1f, 0xd7, 0xfd, 0x4b, 0xeb, 0x7e, 0xb7, 0x80, 
+0xaf, 0x91, 0x3f, 0xa4, 0x46, 0xa6, 0x41, 0x72, 
+0x44, 0x0a, 0xb8, 0x7e, 0xea, 0xae, 0x93, 0xba, 
+0x5f, 0xd6, 0xfd, 0x3b, 0xdd, 0xe9, 0x09, 0x56, 
+0x1f, 0x79, 0xc0, 0x66, 0x37, 0x77, 0xf8, 0xbc, 
+0x00, 0x09, 0x7f, 0xc0, 0x19, 0xde, 0x1a, 0x73, 
+0x82, 0x37, 0x19, 0x38, 0x32, 0x90, 0x27, 0x7f, 
+0x6d, 0xb8, 0xff, 0xc5, 0x17, 0xfc, 0x7b, 0xa9, 
+0x15, 0x05, 0x5c, 0xae, 0x94, 0xfc, 0x9d, 0xd2, 
+0xa3, 0xf5, 0x42, 0xfe, 0xe4, 0x64, 0x34, 0xfb, 
+0xdc, 0x7f, 0x2f, 0x8a, 0x43, 0xc9, 0x38, 0x1f, 
+0x33, 0x23, 0x99, 0xb8, 0xaa, 0xc7, 0x1d, 0xe7, 
+0x93, 0xd5, 0x3f, 0xb2, 0x02, 0xc8, 0x3d, 0xfc, 
+0x33, 0x83, 0x57, 0x26, 0xf7, 0xe3, 0xaf, 0x2b, 
+0xca, 0xce, 0xe6, 0x1d, 0xfe, 0x39, 0x80, 0x5b, 
+0x26, 0x09, 0x62, 0xf2, 0x4f, 0xc1, 0x2d, 0x01, 
+0x87, 0xb6, 0x5c, 0xc1, 0x75, 0x3f, 0xf2, 0x3e, 
+0x31, 0x6e, 0x4e, 0xe2, 0x92, 0xff, 0x7f, 0x11, 
+0x8f, 0x2d, 0x14, 0xf2, 0xd7, 0x86, 0x00, 0x38, 
+0xcd, 0x0a, 0x00, 0x42, 0x8a, 0x5c, 0x72, 0xfc, 
+0x84, 0x23, 0x04, 0x3e, 0xe5, 0x08, 0x01, 0x56, 
+0x0c, 0xd8, 0xde, 0x5d, 0xa4, 0x90, 0xfc, 0x09, 
+0xc2, 0x1e, 0x6f, 0xd5, 0x6f, 0x9f, 0x00, 0xd9, 
+0x18, 0xb8, 0x57, 0xba, 0x31, 0x80, 0xd5, 0xc2, 
+0x7f, 0xfb, 0xe2, 0xa6, 0xdd, 0xbf, 0x08, 0x05, 
+0x05, 0x3f, 0xd2, 0x28, 0x28, 0x18, 0xb1, 0xe8, 
+0x82, 0x82, 0x8e, 0xf3, 0x09, 0x0a, 0xde, 0xd3, 
+0x2b, 0xaa, 0x16, 0x16, 0x6f, 0x0c, 0x38, 0x9a, 
+0x1d, 0x06, 0xcf, 0x86, 0x8e, 0x25, 0x1d, 0xfc, 
+0xdb, 0xbe, 0xec, 0x83, 0x7f, 0xc2, 0xee, 0x7f, 
+0x35, 0x62, 0x6d, 0xe7, 0x1e, 0x91, 0x00, 0x50, 
+0x55, 0xf7, 0xab, 0x62, 0xe7, 0x5f, 0x96, 0xfc, 
+0x85, 0x8e, 0xfd, 0xa8, 0xaa, 0xfb, 0x35, 0x9b, 
+0x47, 0xdd, 0xaf, 0xdd, 0xfd, 0x6e, 0x60, 0xb6, 
+0xd2, 0x1d, 0x36, 0xf8, 0xb9, 0xc1, 0xa7, 0xe5, 
+0x6e, 0xf0, 0xce, 0xb0, 0x0b, 0xbc, 0x3d, 0xe6, 
+0x82, 0xa4, 0xef, 0x2c, 0x86, 0x76, 0xc9, 0xff, 
+0x95, 0x25, 0x12, 0xfc, 0x23, 0xd8, 0x48, 0x2a, 
+0x7f, 0x59, 0x01, 0x90, 0xed, 0x0b, 0x13, 0xa7, 
+0x66, 0xf5, 0xf2, 0xdc, 0x9f, 0x10, 0x34, 0x71, 
+0xff, 0x59, 0xf8, 0xdc, 0x9f, 0x37, 0xce, 0x67, 
+0x2b, 0x7d, 0x39, 0xe3, 0xfc, 0xbd, 0x38, 0x39, 
+0x2a, 0xc3, 0xcc, 0xc8, 0x10, 0xe6, 0x02, 0xfe, 
+0xc3, 0x1e, 0xfe, 0xc1, 0x95, 0xd2, 0x6c, 0x7c, 
+0xb6, 0xdf, 0x8e, 0x1b, 0x03, 0xdf, 0xe3, 0x5a, 
+0xe0, 0x8f, 0xd8, 0xf6, 0xd7, 0x8e, 0x1b, 0x27, 
+0xe4, 0xc8, 0x0f, 0xfb, 0xdc, 0xdf, 0xb7, 0x2e, 
+0x4b, 0xee, 0xb4, 0xaf, 0x88, 0xfc, 0x13, 0x60, 
+0x53, 0x77, 0x02, 0x97, 0xfc, 0x09, 0xcc, 0x16, 
+0x12, 0xf9, 0x6b, 0x23, 0x03, 0xf0, 0x1d, 0x2b, 
+0x00, 0x44, 0xa4, 0x28, 0x22, 0x46, 0xa9, 0x10, 
+0x08, 0x12, 0x14, 0x02, 0x84, 0x28, 0xf7, 0x3c, 
+0xd9, 0x29, 0x47, 0xfa, 0x9e, 0x38, 0xfa, 0xe7, 
+0x4d, 0x01, 0x6e, 0xcb, 0xd0, 0x7b, 0x9f, 0x80, 
+0xec, 0xc6, 0x80, 0xf9, 0x43, 0x15, 0xdf, 0x7d, 
+0x7a, 0x7d, 0xc8, 0x1f, 0x8b, 0x23, 0x28, 0x58, 
+0xca, 0xcb, 0x07, 0x70, 0x85, 0x80, 0x35, 0x23, 
+0x04, 0xf4, 0x17, 0x14, 0x74, 0xbb, 0x1f, 0xab, 
+0x85, 0x5f, 0x13, 0x55, 0x0b, 0x93, 0xa9, 0x80, 
+0x93, 0x33, 0x06, 0x3d, 0xdb, 0x3a, 0x68, 0xf0, 
+0x6f, 0x41, 0x04, 0xff, 0xd2, 0x74, 0x16, 0xfc, 
+0xe3, 0xba, 0xff, 0xd5, 0xa3, 0x91, 0x0c, 0x2c, 
+0x37, 0xb8, 0x6a, 0x5c, 0xf7, 0xab, 0x2a, 0xf8, 
+0x27, 0x7c, 0xe9, 0xcf, 0x54, 0xa3, 0xba, 0x5f, 
+0x65, 0x3b, 0xff, 0x36, 0x8f, 0x39, 0x83, 0x29, 
+0xfe, 0x77, 0xaf, 0xdb, 0xe9, 0x06, 0x9f, 0xd4, 
+0x22, 0xe1, 0x8f, 0x22, 0xc6, 0x5c, 0x91, 0xf4, 
+0x5d, 0x19, 0xe2, 0x17, 0x26, 0x7f, 0x65, 0x02, 
+0x40, 0x96, 0xfc, 0xb5, 0x1b, 0xfc, 0x5b, 0xb1, 
+0x40, 0x83, 0x7f, 0xaf, 0xe3, 0xb9, 0x5f, 0x86, 
+0xfc, 0xc5, 0x02, 0xc0, 0x2b, 0x3b, 0x51, 0x2f, 
+0xee, 0xbf, 0x04, 0x47, 0xf6, 0xec, 0x73, 0x7f, 
+0x42, 0xf4, 0x64, 0x9c, 0x3f, 0xca, 0x8e, 0xf3, 
+0x31, 0x20, 0x3a, 0x86, 0x95, 0xbe, 0xec, 0x38, 
+0xff, 0x20, 0x3a, 0xfa, 0x7c, 0x7c, 0x9e, 0xdf, 
+0x8d, 0x8f, 0x08, 0xc8, 0xe1, 0x9f, 0xef, 0xb1, 
+0xf0, 0x87, 0x90, 0x3e, 0x21, 0xff, 0x43, 0x28, 
+0x02, 0x4e, 0xa3, 0x18, 0x60, 0x9b, 0x02, 0xb9, 
+0x47, 0x7e, 0xc2, 0x91, 0xd4, 0x65, 0x4f, 0xfb, 
+0xb2, 0xeb, 0x7e, 0xeb, 0x07, 0xf1, 0x28, 0x56, 
+0x45, 0x3a, 0x97, 0xfc, 0xf3, 0x16, 0x1a, 0xf9, 
+0x6b, 0x43, 0x00, 0xfc, 0x24, 0x7e, 0x7e, 0x2e, 
+0x79, 0x56, 0xce, 0x25, 0x46, 0x79, 0x21, 0x20, 
+0x12, 0x03, 0xe6, 0x77, 0x64, 0xca, 0x91, 0x7f, 
+0xfc, 0x33, 0x83, 0xb0, 0xe6, 0x86, 0x28, 0x08, 
+0x7d, 0xec, 0x88, 0xe4, 0x9f, 0xf9, 0x3c, 0x74, 
+0x60, 0x0e, 0x7d, 0x02, 0x8a, 0xd7, 0x08, 0x35, 
+0xc9, 0x09, 0x30, 0x1b, 0x03, 0x0f, 0x49, 0x36, 
+0x06, 0xfe, 0x30, 0xbd, 0xbf, 0xf0, 0xdb, 0x8f, 
+0x71, 0xa5, 0x47, 0x67, 0x41, 0xc1, 0xeb, 0x15, 
+0x07, 0x05, 0x37, 0x69, 0x25, 0x28, 0x58, 0xad, 
+0x24, 0x28, 0x58, 0xaf, 0x24, 0x28, 0x78, 0x64, 
+0x5e, 0x41, 0x41, 0xd7, 0x47, 0x3a, 0xc1, 0x8e, 
+0xdd, 0x18, 0x58, 0xd1, 0x00, 0x2e, 0x41, 0x47, 
+0xc0, 0xab, 0x97, 0x06, 0xff, 0x96, 0x72, 0xf0, 
+0x8f, 0x75, 0xff, 0xac, 0x00, 0xd8, 0x12, 0xec, 
+0xcb, 0x23, 0xff, 0xb9, 0xee, 0xfc, 0x73, 0x47, 
+0xff, 0x1b, 0x91, 0xfc, 0x25, 0x02, 0x40, 0x0b, 
+0x75, 0xbf, 0x96, 0xcf, 0x39, 0x82, 0xb1, 0x89, 
+0x33, 0xac, 0x89, 0x70, 0x85, 0x8f, 0x0f, 0xba, 
+0xc3, 0xbb, 0x63, 0x22, 0xbc, 0x33, 0xe6, 0xc6, 
+0x81, 0x2a, 0x01, 0xa0, 0xcb, 0xd1, 0xff, 0xe2, 
+0x0b, 0xfe, 0x3d, 0x36, 0xfe, 0x25, 0x6c, 0xc6, 
+0x9a, 0x5f, 0x56, 0x00, 0x6c, 0xc1, 0x15, 0xc0, 
+0x53, 0xdf, 0x7f, 0xa5, 0x73, 0xf2, 0x27, 0x57, 
+0x21, 0xd9, 0xe7, 0xfe, 0xbd, 0x38, 0xba, 0x97, 
+0x1d, 0xe7, 0xcb, 0x1e, 0xfe, 0x49, 0x47, 0x42, 
+0x27, 0x3f, 0x93, 0xff, 0x2d, 0x39, 0xfc, 0x83, 
+0xdf, 0x47, 0xbe, 0x9f, 0xfc, 0x3a, 0xf2, 0xeb, 
+0xa7, 0x30, 0x3c, 0x58, 0x80, 0xbd, 0x00, 0xec, 
+0x73, 0xff, 0x78, 0x7c, 0xee, 0x6f, 0x31, 0x20, 
+0x72, 0xfe, 0x5b, 0x64, 0x76, 0xfd, 0xc9, 0xfb, 
+0xc3, 0x74, 0x5f, 0x8a, 0x84, 0xfc, 0xcd, 0x8b, 
+0xd3, 0x27, 0x10, 0x97, 0x2e, 0x41, 0x01, 0x70, 
+0xf0, 0xdf, 0xe2, 0xe7, 0xe6, 0x52, 0x42, 0x94, 
+0x13, 0x02, 0x01, 0x72, 0x42, 0x80, 0x4b, 0xf2, 
+0x2c, 0xfc, 0x1e, 0xae, 0x97, 0x7b, 0x34, 0x40, 
+0x36, 0x04, 0x56, 0xdf, 0x10, 0x39, 0xcf, 0x3e, 
+0x01, 0x75, 0x1e, 0x0f, 0x28, 0xce, 0x09, 0x6c, 
+0xb9, 0x3d, 0x1f, 0xab, 0x85, 0xf7, 0xb1, 0xd5, 
+0xc2, 0xbf, 0x6d, 0xbe, 0x3b, 0xf3, 0x07, 0xd1, 
+0xc6, 0xc0, 0x72, 0x09, 0x0a, 0x1e, 0x56, 0x12, 
+0x14, 0x54, 0xbf, 0x5a, 0xd8, 0x99, 0x54, 0x0b, 
+0xaf, 0x10, 0x6d, 0x0c, 0xd8, 0xbe, 0x81, 0xab, 
+0x83, 0x71, 0x2d, 0xe0, 0x35, 0x44, 0x83, 0x7f, 
+0x86, 0x0f, 0xfe, 0xa5, 0x68, 0x3d, 0xf8, 0xc7, 
+0x25, 0xff, 0xd5, 0xa3, 0x11, 0xb0, 0xa1, 0x72, 
+0xa7, 0xe6, 0x75, 0xbf, 0x8f, 0xf3, 0x47, 0xff, 
+0x4c, 0xf0, 0xef, 0x21, 0x23, 0x85, 0xa3, 0x7f, 
+0x63, 0x0d, 0xeb, 0x7e, 0xcd, 0x5e, 0xb1, 0x87, 
+0x4d, 0x96, 0x4e, 0xf0, 0x65, 0x9c, 0x1b, 0x7c, 
+0xdc, 0xec, 0x01, 0xef, 0x8d, 0x79, 0x22, 0x3c, 
+0x18, 0xbc, 0xcb, 0x40, 0x56, 0x00, 0x68, 0x48, 
+0xfe, 0xcb, 0x3a, 0xf8, 0x27, 0x12, 0x00, 0x6f, 
+0xef, 0xdf, 0x8e, 0xc4, 0xef, 0x27, 0x11, 0x00, 
+0x21, 0x85, 0x19, 0x3a, 0x27, 0xff, 0x6f, 0xf0, 
+0x19, 0x3f, 0x79, 0xe6, 0x4f, 0x04, 0x40, 0x2d, 
+0xa6, 0xf6, 0xc9, 0x38, 0xff, 0xb4, 0xec, 0x38, 
+0x1f, 0x1d, 0x3e, 0x19, 0xe7, 0x13, 0xc7, 0x4f, 
+0x9c, 0x3f, 0x99, 0x00, 0x90, 0x49, 0x00, 0x99, 
+0x08, 0x90, 0xc9, 0x00, 0x99, 0x10, 0x90, 0x49, 
+0x01, 0x99, 0x18, 0x90, 0xc9, 0x01, 0x09, 0x04, 
+0xd6, 0x90, 0x62, 0x29, 0xf6, 0xb9, 0x7f, 0x6a, 
+0x0a, 0xd8, 0xb7, 0xe7, 0xc8, 0xec, 0xfa, 0x8b, 
+0xd6, 0xfd, 0xc8, 0x7b, 0xc3, 0xf8, 0x70, 0x22, 
+0x97, 0xfc, 0xff, 0x83, 0x78, 0x68, 0x21, 0x92, 
+0xbf, 0x36, 0x04, 0xc0, 0x2f, 0x4c, 0xc3, 0xde, 
+0x63, 0xfb, 0x18, 0x32, 0x94, 0x3a, 0x63, 0x5f, 
+0xce, 0xf3, 0x72, 0x7f, 0xde, 0xe3, 0x01, 0xa3, 
+0x5b, 0x12, 0x84, 0x43, 0x7f, 0xb7, 0xa7, 0x33, 
+0x84, 0xb9, 0xfa, 0x86, 0x08, 0x88, 0x7f, 0x76, 
+0x50, 0xf2, 0xcf, 0x77, 0xdc, 0x55, 0x28, 0xd9, 
+0x1e, 0x50, 0xd6, 0x27, 0xa0, 0x79, 0x4e, 0x20, 
+0x41, 0xa3, 0x9c, 0x80, 0xe9, 0x9d, 0x85, 0xb8, 
+0x31, 0x50, 0xc7, 0x6e, 0x0c, 0xfc, 0x77, 0xdd, 
+0xed, 0x89, 0xff, 0xf8, 0x40, 0xb0, 0x5a, 0x78, 
+0x11, 0x06, 0x05, 0x6f, 0x9d, 0x6b, 0x50, 0xb0, 
+0x5d, 0xf2, 0x58, 0xc0, 0x55, 0x8d, 0xa0, 0xa0, 
+0x07, 0x5b, 0x2d, 0xfc, 0x9c, 0x68, 0x63, 0xc0, 
+0xee, 0xe3, 0x46, 0x70, 0xcd, 0x6b, 0xa5, 0xc1, 
+0x3f, 0x9d, 0x05, 0xff, 0x32, 0x0c, 0x12, 0xfc, 
+0x93, 0x92, 0x3f, 0xbe, 0xb6, 0x51, 0x00, 0x7c, 
+0x39, 0x1c, 0x01, 0x56, 0xaf, 0xdb, 0x09, 0xee, 
+0xfc, 0x13, 0xf2, 0xd7, 0x64, 0xe7, 0x9f, 0x4b, 
+0xfe, 0x9b, 0xd5, 0x1d, 0xfd, 0xdf, 0x6b, 0x0d, 
+0x26, 0xef, 0xd8, 0xc1, 0x06, 0x7b, 0x27, 0x58, 
+0x95, 0x8a, 0x84, 0xdf, 0xe1, 0x05, 0xef, 0x8f, 
+0xb1, 0xf0, 0x14, 0x93, 0xbf, 0xa7, 0xda, 0xe4, 
+0xaf, 0x7f, 0xf7, 0xbf, 0xf8, 0x82, 0x7f, 0x8f, 
+0xa2, 0xfb, 0x37, 0x4a, 0x0f, 0x90, 0x08, 0x00, 
+0x93, 0x2c, 0x7f, 0xf8, 0xab, 0x8e, 0xcf, 0xfd, 
+0x92, 0xe7, 0xfe, 0x64, 0x34, 0x4f, 0xc8, 0x3f, 
+0x1b, 0xd7, 0xf6, 0x08, 0xc9, 0x73, 0xc7, 0xf9, 
+0x4d, 0xec, 0x38, 0x1f, 0x45, 0x01, 0x19, 0xe7, 
+0x93, 0x67, 0xfe, 0xe4, 0xd9, 0x3f, 0xc9, 0x00, 
+0x90, 0x2c, 0x00, 0x79, 0x54, 0x40, 0xb2, 0x01, 
+0x24, 0x23, 0x40, 0xb2, 0x02, 0x24, 0x33, 0x40, 
+0xb2, 0x03, 0x87, 0x71, 0x35, 0x30, 0x91, 0x2d, 
+0xfb, 0xc1, 0xdf, 0xc7, 0xe7, 0x40, 0x96, 0xe0, 
+0xae, 0x3f, 0x79, 0x8f, 0x6c, 0xec, 0x8a, 0xe7, 
+0x92, 0x3f, 0x81, 0xf1, 0x42, 0x25, 0x7f, 0x6d, 
+0x08, 0x00, 0x51, 0x60, 0xee, 0xd1, 0x1a, 0xe0, 
+0x86, 0xe5, 0xe4, 0x85, 0x80, 0x9f, 0x44, 0x08, 
+0xf8, 0xa3, 0xd3, 0x97, 0x25, 0xff, 0xc8, 0xa7, 
+0xba, 0x19, 0x92, 0x64, 0x73, 0x02, 0x81, 0x8f, 
+0x34, 0x4a, 0xfe, 0x5d, 0xe8, 0xe3, 0x2d, 0x0a, 
+0xd7, 0x08, 0xe7, 0x7d, 0x77, 0xe0, 0x7a, 0x0d, 
+0x73, 0x02, 0x37, 0xe1, 0xae, 0xe7, 0x3d, 0x25, 
+0xcc, 0x23, 0x0f, 0x71, 0xb5, 0xf0, 0x3f, 0xbe, 
+0xbc, 0x25, 0xea, 0xbf, 0xba, 0x0d, 0x0a, 0x26, 
+0xf0, 0x83, 0x82, 0x32, 0x42, 0x40, 0xdd, 0xa0, 
+0xe0, 0x36, 0x35, 0x83, 0x82, 0x36, 0x7a, 0x08, 
+0x0a, 0x32, 0xd5, 0xc2, 0xaf, 0x1c, 0x61, 0xda, 
+0x04, 0x99, 0xd5, 0xc1, 0x0d, 0x4d, 0xe0, 0xb6, 
+0xb7, 0x45, 0xa3, 0xe0, 0x9f, 0xeb, 0x92, 0x0c, 
+0xfe, 0x15, 0x1a, 0x38, 0xf8, 0x97, 0xa4, 0x95, 
+0xe0, 0x1f, 0x8f, 0xfc, 0x19, 0xec, 0x81, 0xad, 
+0x56, 0x6e, 0x5a, 0xd9, 0xf9, 0xe7, 0x8d, 0xfe, 
+0x1f, 0x90, 0x8e, 0xfe, 0xb9, 0xc1, 0x3f, 0xd3, 
+0x07, 0x2c, 0xc1, 0xe8, 0xe3, 0x1d, 0xb0, 0xce, 
+0xcd, 0x11, 0x56, 0xe6, 0xb8, 0xc3, 0xc7, 0x3d, 
+0xf8, 0x99, 0x34, 0xc6, 0x02, 0x45, 0x3b, 0x03, 
+0x91, 0x00, 0xe0, 0x92, 0xbf, 0xd6, 0xdc, 0x3f, 
+0x0d, 0xfe, 0xc1, 0x07, 0x95, 0x0e, 0x62, 0xf2, 
+0x17, 0x09, 0x80, 0xe8, 0xca, 0x7c, 0x9d, 0xbb, 
+0x7f, 0xd2, 0xff, 0xc0, 0x3e, 0xf7, 0x27, 0xab, 
+0x7e, 0x64, 0xcc, 0x2f, 0x38, 0xce, 0x27, 0x95, 
+0xbe, 0x9c, 0xc3, 0x3f, 0x64, 0x0b, 0x80, 0x6c, 
+0x03, 0x1c, 0xc6, 0x32, 0xa9, 0x4c, 0xf6, 0xf0, 
+0x0f, 0x69, 0x0a, 0xc4, 0xad, 0x01, 0x52, 0x06, 
+0x94, 0x82, 0xff, 0x4c, 0xfa, 0xdc, 0x3f, 0x9d, 
+0x77, 0xda, 0x77, 0xb3, 0x78, 0xd7, 0x9f, 0x79, 
+0x9f, 0x0c, 0xc6, 0x4a, 0x9e, 0xfb, 0x8b, 0xc9, 
+0x3f, 0x73, 0x21, 0x93, 0xff, 0xbc, 0x04, 0x00, 
+0x7e, 0x70, 0x9f, 0xc7, 0x0a, 0x00, 0xcb, 0x47, 
+0xf6, 0xc2, 0x7b, 0x57, 0x79, 0x32, 0x22, 0x40, 
+0x04, 0x6f, 0xde, 0x0a, 0x1d, 0x2b, 0x04, 0xd6, 
+0x62, 0x5b, 0xa0, 0x90, 0xfb, 0x77, 0xba, 0xaf, 
+0x9c, 0x97, 0x13, 0xb0, 0xbc, 0x23, 0x9b, 0xf7, 
+0xef, 0x37, 0xe1, 0xa5, 0x41, 0xd9, 0x35, 0x42, 
+0xd5, 0x75, 0xc3, 0x73, 0xcb, 0x09, 0xac, 0x53, 
+0x23, 0x27, 0xb0, 0xf9, 0x66, 0x3c, 0xf6, 0x80, 
+0xff, 0xcd, 0x3b, 0xc4, 0x1b, 0x03, 0x96, 0x0f, 
+0x57, 0xff, 0xf5, 0xf3, 0x1b, 0xc3, 0x7e, 0xd7, 
+0x4d, 0x50, 0x30, 0x8e, 0x17, 0x14, 0x5c, 0xcf, 
+0x0b, 0x0a, 0xa6, 0x29, 0x0c, 0x0a, 0x32, 0x42, 
+0x60, 0xa1, 0x07, 0x05, 0x49, 0xb5, 0xf0, 0x6b, 
+0xe2, 0x6a, 0x61, 0xdc, 0x1a, 0x70, 0xb0, 0x3e, 
+0x04, 0x6e, 0x87, 0x5a, 0x74, 0x12, 0xfc, 0x73, 
+0x34, 0x70, 0xf0, 0xcf, 0x72, 0x99, 0x05, 0xff, 
+0x56, 0x73, 0xc8, 0x9f, 0x60, 0x53, 0x9c, 0x9f, 
+0xda, 0x3b, 0xff, 0x84, 0xfc, 0x79, 0x3b, 0xff, 
+0x0f, 0x29, 0x0b, 0xfe, 0xe1, 0xaf, 0x79, 0xd4, 
+0x0c, 0x36, 0xae, 0xda, 0x0e, 0x6b, 0x7c, 0x9c, 
+0xe0, 0x8b, 0x22, 0x0f, 0xf8, 0x78, 0x00, 0xdf, 
+0x7f, 0x63, 0x7e, 0x08, 0x5f, 0x06, 0x5c, 0xf2, 
+0xff, 0x80, 0x43, 0xfe, 0xef, 0xcf, 0x93, 0xfc, 
+0xdf, 0x5a, 0x92, 0xc1, 0xbf, 0xf9, 0xbb, 0xff, 
+0xc7, 0x47, 0x57, 0x83, 0x71, 0x46, 0x80, 0x44, 
+0x00, 0x98, 0x66, 0x04, 0xc2, 0xbf, 0x74, 0x7c, 
+0xee, 0x97, 0x9c, 0x84, 0x66, 0x9f, 0xfb, 0x0f, 
+0xa0, 0xbb, 0x67, 0xc6, 0xf9, 0xb8, 0xb7, 0xcf, 
+0x8e, 0xf3, 0x47, 0x38, 0xe3, 0x7c, 0xb2, 0xe7, 
+0x4f, 0xf6, 0xfd, 0xc9, 0xde, 0x3f, 0xd9, 0xff, 
+0xff, 0x01, 0x7b, 0x00, 0x48, 0x1f, 0x00, 0x39, 
+0xfc, 0x43, 0xfa, 0x01, 0x88, 0x78, 0x20, 0x7d, 
+0x01, 0xe4, 0x58, 0x50, 0x0e, 0x4e, 0x12, 0x24, 
+0xcf, 0xfd, 0xb3, 0xd3, 0xc0, 0x7c, 0x20, 0x47, 
+0xbc, 0xee, 0x97, 0xce, 0x5b, 0xf7, 0x23, 0xef, 
+0x05, 0xd3, 0xda, 0x14, 0x2e, 0xf9, 0x8f, 0x20, 
+0x2e, 0x5e, 0xca, 0x02, 0xe0, 0x52, 0x4e, 0xb7, 
+0x3e, 0x0a, 0x00, 0x0f, 0x46, 0x04, 0x28, 0x12, 
+0x02, 0x04, 0xee, 0x0f, 0x54, 0x0b, 0x8f, 0xff, 
+0x6f, 0x4b, 0xe1, 0xe5, 0x04, 0x3e, 0xbf, 0x2e, 
+0x0c, 0x62, 0x9f, 0xe9, 0x97, 0xfc, 0x7b, 0xb7, 
+0xfb, 0xab, 0x15, 0xf6, 0x09, 0xa8, 0x53, 0x37, 
+0xac, 0xab, 0x9c, 0xc0, 0xe6, 0x5b, 0xb2, 0xc0, 
+0xe2, 0x81, 0x2a, 0x4e, 0xb5, 0x70, 0xe9, 0x77, 
+0x9f, 0x5c, 0x17, 0xa4, 0xd5, 0xa0, 0xe0, 0xea, 
+0x39, 0x07, 0x05, 0x73, 0x94, 0x04, 0x05, 0xe7, 
+0x5a, 0x2d, 0xac, 0xa3, 0xa0, 0xe0, 0x83, 0xdd, 
+0x60, 0xff, 0x9a, 0x28, 0x28, 0xb8, 0xe3, 0x19, 
+0x24, 0x6b, 0x0f, 0x14, 0x02, 0x9d, 0x47, 0x96, 
+0x75, 0xf0, 0x4f, 0x9b, 0xee, 0x7f, 0x6e, 0xc1, 
+0xbf, 0x84, 0x79, 0x05, 0xff, 0xb8, 0xee, 0x7f, 
+0x15, 0x62, 0xf5, 0x91, 0x50, 0xb0, 0x78, 0x5e, 
+0x44, 0xfe, 0xf3, 0xdd, 0xf9, 0xdf, 0xf4, 0xf4, 
+0x56, 0x58, 0xbf, 0xc1, 0x06, 0x56, 0x07, 0x3b, 
+0xc1, 0xe7, 0x95, 0x5e, 0xf0, 0xf1, 0x30, 0xbe, 
+0xb7, 0xc6, 0x70, 0xea, 0xc6, 0xc0, 0x8f, 0x01, 
+0x4b, 0xfe, 0x1f, 0xca, 0x91, 0xbf, 0xb0, 0xfb, 
+0x17, 0x26, 0xff, 0xa5, 0x15, 0xfc, 0x7b, 0x56, 
+0x0f, 0xc1, 0x3f, 0xe6, 0xdc, 0x6f, 0xb1, 0x0b, 
+0xc7, 0xfd, 0xfb, 0x41, 0x46, 0x5d, 0x85, 0x4e, 
+0xc9, 0xff, 0x5b, 0x1c, 0xf3, 0xb3, 0xcf, 0xfd, 
+0xf7, 0xe1, 0xf3, 0x7c, 0xc9, 0x38, 0x1f, 0x33, 
+0x00, 0xb2, 0xe3, 0x7c, 0xd2, 0xf0, 0x97, 0x81, 
+0x64, 0xce, 0x1e, 0xfe, 0x21, 0x0d, 0x80, 0xa4, 
+0x09, 0x90, 0x34, 0x02, 0x72, 0x0f, 0xff, 0x90, 
+0x9f, 0xcb, 0x51, 0x3c, 0xc4, 0x73, 0x9e, 0xfb, 
+0xdb, 0xb5, 0x67, 0x0b, 0xee, 0xfa, 0x93, 0xf7, 
+0x84, 0xf1, 0xa1, 0x44, 0x96, 0xf8, 0x09, 0xfe, 
+0x85, 0xb8, 0x6f, 0xa1, 0x93, 0xff, 0x7c, 0x05, 
+0xc0, 0x9f, 0x25, 0xab, 0x72, 0x0f, 0x57, 0xc0, 
+0xbb, 0x57, 0xb9, 0x33, 0x10, 0x09, 0x01, 0x0f, 
+0x39, 0x21, 0xf0, 0xf9, 0x75, 0xc1, 0x72, 0xb5, 
+0xbf, 0x92, 0x0d, 0x00, 0x7c, 0xe6, 0xef, 0xf9, 
+0x60, 0x0d, 0x3e, 0xff, 0x0f, 0x97, 0x6c, 0x0f, 
+0x78, 0x3f, 0x28, 0x5d, 0x09, 0x24, 0x85, 0x41, 
+0x4c, 0xd3, 0xa0, 0x40, 0x9f, 0x80, 0xb2, 0xba, 
+0x61, 0xae, 0x10, 0xb0, 0xc3, 0xb2, 0x1f, 0xef, 
+0x07, 0xeb, 0x60, 0xdb, 0x6d, 0x59, 0x5a, 0xcf, 
+0x09, 0x18, 0xdf, 0x96, 0x03, 0x56, 0x0f, 0xd5, 
+0x48, 0x36, 0x06, 0xb6, 0xdc, 0x9b, 0xfb, 0xc3, 
+0x47, 0xcc, 0xc6, 0x80, 0xb7, 0xa0, 0x10, 0x58, 
+0xd8, 0x41, 0xc1, 0x2a, 0x83, 0x05, 0x05, 0x99, 
+0x6a, 0xe1, 0x97, 0xc5, 0x41, 0xc1, 0x97, 0x90, 
+0xc4, 0xc3, 0x50, 0x08, 0xf4, 0xd3, 0xe0, 0xdf, 
+0x62, 0x08, 0xfe, 0x29, 0x73, 0xff, 0xab, 0x46, 
+0x77, 0x33, 0xd8, 0x62, 0xe7, 0x3a, 0xb7, 0x9d, 
+0xff, 0x15, 0x26, 0xb0, 0xd6, 0xd4, 0x06, 0xbe, 
+0xdc, 0xed, 0x0c, 0x9f, 0xd7, 0xfa, 0xc0, 0x27, 
+0xa3, 0x28, 0xa4, 0xc7, 0xf0, 0x73, 0x62, 0x2c, 
+0x40, 0x0c, 0x96, 0xfc, 0xfd, 0xc5, 0xe4, 0x2f, 
+0xec, 0xfe, 0xdf, 0xd7, 0xa2, 0xfb, 0x5f, 0x0e, 
+0xc1, 0x3f, 0xf5, 0xdc, 0x3f, 0x3f, 0xf8, 0xf7, 
+0x24, 0x39, 0xf7, 0x9b, 0x25, 0x75, 0xff, 0xdb, 
+0xd2, 0x42, 0xe0, 0x7f, 0xbf, 0xfe, 0xa2, 0x33, 
+0xf2, 0x27, 0xe7, 0x7c, 0xd9, 0xe7, 0xfe, 0x59, 
+0x48, 0xf6, 0x92, 0x71, 0x3e, 0x96, 0xfc, 0xfc, 
+0xff, 0xf6, 0xce, 0x02, 0xba, 0xaa, 0x3b, 0xeb, 
+0xe2, 0x6b, 0xec, 0x1b, 0xab, 0xe2, 0xee, 0xee, 
+0xd4, 0x05, 0x28, 0xee, 0x92, 0x20, 0x11, 0x88, 
+0xbb, 0x0b, 0x81, 0xe0, 0x0e, 0x11, 0x24, 0x09, 
+0x81, 0x04, 0x42, 0x5c, 0xb0, 0x60, 0x49, 0xb0, 
+0x40, 0x70, 0x0a, 0xb4, 0x68, 0xf1, 0xb6, 0xd3, 
+0xe9, 0xb4, 0x9d, 0xce, 0x4c, 0xa7, 0x53, 0x99, 
+0xb6, 0xd3, 0x52, 0x8a, 0x9c, 0x6f, 0x9f, 0xfb, 
+0xde, 0xbd, 0xef, 0x3e, 0xc9, 0xcb, 0x4b, 0xf2, 
+0xa2, 0xfc, 0xbb, 0xd6, 0x59, 0xd0, 0x24, 0x40, 
+0x1b, 0x5e, 0x72, 0xf6, 0x3d, 0xe7, 0x77, 0xf6, 
+0x96, 0x2c, 0x7d, 0x0d, 0xc6, 0xf9, 0xec, 0xf1, 
+0xcf, 0x5e, 0xff, 0x1f, 0xcb, 0xc1, 0x3f, 0xc8, 
+0x00, 0xe0, 0x2c, 0x00, 0xce, 0x04, 0xe0, 0x27, 
+0xfe, 0x7b, 0x5a, 0xa7, 0xc0, 0x12, 0x08, 0x09, 
+0xf5, 0xde, 0x7f, 0xc9, 0xd1, 0x6c, 0xa3, 0x68, 
+0x5f, 0x0d, 0xf1, 0x9f, 0x84, 0xbd, 0x7f, 0xb2, 
+0xba, 0xf9, 0x73, 0x39, 0xd5, 0x85, 0xe6, 0x5f, 
+0x59, 0x01, 0xd0, 0x4c, 0x16, 0x00, 0x7e, 0xbd, 
+0xf7, 0xd1, 0xe8, 0xc6, 0xf0, 0xbb, 0x6e, 0x3c, 
+0xdf, 0xb4, 0x10, 0x40, 0x05, 0x77, 0xce, 0x35, 
+0x6b, 0xfc, 0x23, 0x53, 0xff, 0x73, 0x7b, 0x14, 
+0xd0, 0xb4, 0x16, 0xab, 0xe1, 0xd7, 0x9f, 0xa6, 
+0xf7, 0x3e, 0x3e, 0x1d, 0x34, 0x67, 0x2c, 0x54, 
+0x16, 0x27, 0x90, 0xf8, 0xf2, 0x65, 0xe5, 0xcf, 
+0x08, 0xee, 0xb8, 0xa3, 0x82, 0x9c, 0x80, 0xf9, 
+0xf5, 0x80, 0x67, 0x47, 0xbd, 0x8b, 0x81, 0x5f, 
+0x5c, 0x3a, 0x65, 0x7c, 0x57, 0xba, 0xb5, 0xb0, 
+0x00, 0x05, 0x4b, 0xbd, 0x18, 0x60, 0x6b, 0xe1, 
+0x37, 0x35, 0xa0, 0x60, 0xf8, 0x68, 0x34, 0xf4, 
+0xd4, 0x53, 0x34, 0xef, 0xc6, 0x13, 0x0c, 0xfe, 
+0x59, 0x24, 0x00, 0x6a, 0x19, 0xf8, 0xa7, 0x7a, 
+0xfa, 0x97, 0x05, 0x80, 0xfd, 0xb9, 0xd5, 0xe4, 
+0x3d, 0x39, 0xdc, 0xe4, 0xe8, 0x5f, 0xfd, 0xf4, 
+0xef, 0x32, 0xdc, 0x8f, 0xa6, 0x07, 0x85, 0x91, 
+0xfd, 0xc6, 0x79, 0x34, 0xe5, 0xf8, 0x32, 0xb2, 
+0xbd, 0x83, 0xaf, 0x91, 0x3b, 0xf8, 0x5a, 0x91, 
+0x4a, 0x6e, 0xfe, 0x3a, 0x01, 0x30, 0xd1, 0xe2, 
+0xa7, 0x7f, 0x01, 0xfe, 0xe9, 0x9a, 0xbf, 0x9b, 
+0xd5, 0xc1, 0xbf, 0xbe, 0x52, 0xdc, 0xef, 0x22, 
+0xbd, 0xa7, 0xff, 0x3d, 0x67, 0x4b, 0xaa, 0xf4, 
+0xe9, 0x9f, 0xad, 0x9f, 0xe5, 0xbd, 0xff, 0x3f, 
+0x71, 0xc6, 0xf7, 0xb5, 0x3c, 0xce, 0x87, 0xcd, 
+0x2f, 0xa7, 0xf7, 0xc9, 0xe3, 0x7c, 0x4e, 0xf5, 
+0xdb, 0x07, 0xfb, 0x5e, 0x4e, 0xf9, 0xe3, 0xb4, 
+0x3f, 0x6e, 0xfe, 0x9c, 0xfe, 0xc7, 0x29, 0x80, 
+0x3b, 0x60, 0x14, 0xc4, 0xa9, 0x80, 0xb2, 0x53, 
+0x20, 0x33, 0x00, 0x5b, 0xb4, 0x66, 0x3f, 0x2c, 
+0x2e, 0xd6, 0xee, 0xc9, 0x34, 0x19, 0xed, 0x2b, 
+0x7d, 0x5d, 0x5c, 0xdf, 0x48, 0x7e, 0x7b, 0x33, 
+0xd4, 0xcd, 0x3f, 0xb5, 0xae, 0x34, 0xff, 0xca, 
+0x0a, 0x80, 0x36, 0xca, 0xe8, 0xbb, 0xd7, 0x1e, 
+0x1a, 0xd5, 0x68, 0xae, 0x24, 0x02, 0x34, 0x35, 
+0x5f, 0x25, 0x06, 0x34, 0x42, 0xc0, 0xa3, 0xdd, 
+0x26, 0x93, 0x4f, 0xfe, 0xa6, 0xa6, 0x02, 0x1b, 
+0x5f, 0xb9, 0x4a, 0xb3, 0xba, 0xed, 0xd6, 0x5b, 
+0x03, 0x30, 0x18, 0x68, 0xe8, 0x27, 0xc0, 0x8d, 
+0xd3, 0xbe, 0x45, 0x9c, 0xc4, 0x0c, 0x2c, 0xea, 
+0x89, 0x70, 0x9f, 0x2e, 0x3b, 0xc1, 0x19, 0x6c, 
+0x30, 0xb9, 0x1e, 0x50, 0xdb, 0x0e, 0xf3, 0x9f, 
+0xeb, 0xd4, 0x6a, 0x93, 0x15, 0x38, 0x01, 0xfd, 
+0xf5, 0x80, 0x2c, 0x04, 0xbc, 0x3b, 0xe7, 0x4b, 
+0xa7, 0x91, 0xda, 0x13, 0xc9, 0x9f, 0x1c, 0xdb, 
+0x27, 0xff, 0x64, 0x6c, 0x2d, 0x5c, 0x1a, 0x28, 
+0x18, 0x5b, 0xf7, 0x41, 0xc1, 0x0e, 0xd6, 0x00, 
+0x05, 0x71, 0x31, 0x30, 0xe8, 0x6d, 0x69, 0x25, 
+0x20, 0x5d, 0x0c, 0x4c, 0x3d, 0x4e, 0x73, 0x76, 
+0x9d, 0x12, 0xe0, 0x5f, 0x1d, 0x02, 0xff, 0xd4, 
+0x4f, 0xff, 0x5c, 0xd3, 0x6e, 0xaf, 0x23, 0xbb, 
+0xab, 0x6b, 0xc8, 0x75, 0xd1, 0x3c, 0xf2, 0x1a, 
+0x15, 0xac, 0x11, 0x00, 0x2f, 0xf9, 0x92, 0xdb, 
+0xf8, 0x20, 0x72, 0x8a, 0x98, 0x45, 0x0e, 0xa9, 
+0x0b, 0x69, 0xea, 0xd9, 0x55, 0x34, 0xf9, 0x4e, 
+0x8c, 0x54, 0x9a, 0xc6, 0xaf, 0x6e, 0xfe, 0x6a, 
+0x01, 0x60, 0xf8, 0xf4, 0x6f, 0xd8, 0xfc, 0x97, 
+0xd5, 0x33, 0xf0, 0xcf, 0xbf, 0x86, 0xc1, 0xbf, 
+0xb2, 0xfd, 0xfe, 0x5f, 0x7d, 0xcf, 0x09, 0x4e, 
+0x7f, 0x2b, 0x94, 0xe6, 0x1f, 0x98, 0xb1, 0xa6, 
+0x4a, 0xe3, 0x7e, 0xaf, 0x00, 0xe0, 0x93, 0xf7, 
+0xfe, 0xd7, 0xb1, 0xe3, 0x57, 0x8f, 0xf3, 0x65, 
+0x4b, 0x5f, 0x79, 0x9c, 0xcf, 0xe3, 0xfd, 0x5d, 
+0xb8, 0xe3, 0x97, 0x2d, 0x7d, 0xe5, 0xe0, 0x9f, 
+0x2c, 0x34, 0xfa, 0xb7, 0x4f, 0x9e, 0xa4, 0x2f, 
+0x10, 0x17, 0xfc, 0xbd, 0xd6, 0x29, 0x30, 0x0b, 
+0xe2, 0x41, 0x1e, 0xfd, 0x27, 0xf3, 0xde, 0xff, 
+0x7a, 0xae, 0x51, 0xb4, 0x2f, 0x7f, 0x5d, 0x38, 
+0xde, 0xda, 0x40, 0xde, 0x07, 0xd3, 0xd4, 0xcd, 
+0xff, 0x3d, 0xff, 0x5d, 0x19, 0x7f, 0x78, 0x52, 
+0x04, 0x40, 0x27, 0x59, 0x00, 0x78, 0xf7, 0xcc, 
+0x87, 0x00, 0x98, 0xa3, 0xad, 0xd2, 0x84, 0xc0, 
+0x02, 0xd8, 0xfb, 0x9e, 0x35, 0xb8, 0xfd, 0x3f, 
+0x8a, 0x14, 0xc1, 0x58, 0x89, 0x0d, 0x50, 0x9f, 
+0xfe, 0x95, 0x56, 0x0e, 0x80, 0x08, 0xd5, 0x7e, 
+0x02, 0x53, 0xf1, 0xc4, 0x1c, 0xff, 0xd2, 0x3b, 
+0x46, 0x1f, 0x17, 0x0b, 0x9f, 0x01, 0xaf, 0x76, 
+0xe9, 0x7a, 0x42, 0x20, 0xce, 0xe0, 0xe3, 0x66, 
+0x75, 0xdd, 0x5b, 0x05, 0x9c, 0x40, 0xaa, 0x32, 
+0x92, 0x77, 0x6d, 0x9d, 0x81, 0x8b, 0x81, 0x3d, 
+0x3a, 0x6b, 0xe1, 0x7e, 0x87, 0xbe, 0x9b, 0xd6, 
+0x26, 0xe1, 0x41, 0xd9, 0xa0, 0x60, 0x74, 0xa9, 
+0xa0, 0xa0, 0x46, 0x08, 0xac, 0x2f, 0x97, 0xb5, 
+0x70, 0x5d, 0x07, 0x05, 0xf9, 0x62, 0x60, 0xd6, 
+0x50, 0x9d, 0xb5, 0xf0, 0x4c, 0x0f, 0x08, 0x81, 
+0xe2, 0x93, 0x35, 0x08, 0xfe, 0x15, 0xd5, 0x30, 
+0xf8, 0x97, 0x5b, 0x67, 0xc0, 0x3f, 0xf5, 0xd3, 
+0x3f, 0x37, 0x7f, 0x4d, 0xe1, 0xf5, 0x7c, 0x07, 
+0x75, 0x7b, 0x0d, 0x4d, 0x7b, 0x0f, 0xaf, 0xf1, 
+0x3b, 0xea, 0xc2, 0xeb, 0x5e, 0xaa, 0xd2, 0x04, 
+0x80, 0xf9, 0xa7, 0x7f, 0x01, 0xfe, 0xd5, 0x1c, 
+0xf8, 0xc7, 0x4f, 0xff, 0x0e, 0xd9, 0x4b, 0xf5, 
+0x9e, 0xfe, 0x4b, 0xae, 0x9d, 0xaf, 0xbe, 0xbd, 
+0xbf, 0xe1, 0x38, 0x1f, 0x96, 0xbe, 0x3c, 0xce, 
+0xe7, 0xe8, 0xdf, 0x93, 0x1c, 0xfc, 0x03, 0xc0, 
+0xef, 0x1d, 0xd8, 0xf8, 0x7e, 0x05, 0x4b, 0xdf, 
+0x6f, 0x00, 0xfe, 0x5d, 0x04, 0x00, 0xb8, 0x8d, 
+0x83, 0x7f, 0x10, 0x21, 0xfd, 0xe9, 0xc7, 0x1f, 
+0x4b, 0xab, 0x04, 0xbe, 0xfb, 0xcf, 0x87, 0x78, 
+0x90, 0x9b, 0x7f, 0x2a, 0xf6, 0xfe, 0xe1, 0xef, 
+0xe4, 0x18, 0x9d, 0xfb, 0xf1, 0xd7, 0x04, 0x7f, 
+0x1d, 0xb8, 0x9f, 0xd0, 0xdb, 0xfb, 0x7f, 0x8f, 
+0xe6, 0xdf, 0xb9, 0x2e, 0x35, 0xff, 0xca, 0x0a, 
+0x80, 0x1e, 0xb2, 0x00, 0xf0, 0xea, 0xb1, 0x93, 
+0x46, 0x36, 0x8a, 0x94, 0x4a, 0x5f, 0x08, 0xe8, 
+0xc4, 0x00, 0x0b, 0x01, 0x1b, 0xec, 0xc5, 0x63, 
+0xfa, 0x9f, 0x52, 0x9a, 0xb0, 0x57, 0xfb, 0x14, 
+0x85, 0x13, 0x70, 0x68, 0xb5, 0x0e, 0xce, 0x7f, 
+0xc5, 0x66, 0x05, 0x00, 0x4f, 0x05, 0xd4, 0x2e, 
+0x83, 0x73, 0x61, 0xd9, 0x5b, 0xda, 0xc7, 0xb2, 
+0xa0, 0x98, 0xdb, 0xbd, 0x10, 0x4d, 0x73, 0x9d, 
+0xd4, 0x44, 0x57, 0xf7, 0x7f, 0x5b, 0xef, 0xfd, 
+0x2b, 0xfa, 0x1c, 0x2b, 0xc7, 0x19, 0x61, 0xc5, 
+0x39, 0x01, 0x37, 0x9c, 0x0e, 0xfa, 0x63, 0xad, 
+0xa1, 0xb3, 0x16, 0x2e, 0xfc, 0xda, 0xb6, 0x65, 
+0xac, 0x45, 0xa0, 0xa0, 0x6d, 0xb9, 0x40, 0xc1, 
+0x24, 0x33, 0xa0, 0x60, 0x7a, 0xad, 0x04, 0x05, 
+0xe7, 0x96, 0x03, 0x14, 0x9c, 0xdf, 0xfd, 0x32, 
+0x45, 0x0c, 0xd3, 0x5a, 0x0b, 0xe3, 0x7c, 0x30, 
+0x62, 0x26, 0x1a, 0xfe, 0x59, 0x01, 0xfe, 0xd5, 
+0x66, 0xf0, 0xcf, 0xf0, 0xe9, 0x5f, 0x4f, 0x00, 
+0xdc, 0x59, 0x23, 0x55, 0x65, 0x9a, 0xff, 0x93, 
+0x0b, 0xfe, 0xf9, 0xd6, 0x3a, 0xf0, 0xef, 0x8d, 
+0x4b, 0x6e, 0x68, 0xfa, 0xba, 0xa7, 0xff, 0xd0, 
+0x8c, 0xb8, 0x2a, 0xdd, 0xfb, 0xf3, 0x5e, 0x5e, 
+0xde, 0xfb, 0x33, 0xf1, 0x2f, 0x8f, 0xf3, 0xb7, 
+0x63, 0x9c, 0x7f, 0x89, 0xc7, 0xf9, 0xb0, 0xf4, 
+0x95, 0xc7, 0xf9, 0x39, 0x18, 0xe3, 0x9f, 0xc2, 
+0x89, 0xdf, 0xe7, 0x9f, 0x7d, 0x46, 0x3f, 0xc2, 
+0xd2, 0x57, 0x0e, 0xfe, 0x39, 0x88, 0x53, 0x40, 
+0x8e, 0x07, 0x7e, 0xf4, 0xe8, 0x11, 0x7d, 0xf4, 
+0xe1, 0x87, 0xd2, 0xbf, 0xab, 0xf7, 0xfe, 0x8b, 
+0x8f, 0x65, 0x29, 0xe7, 0x7e, 0xae, 0xaa, 0x73, 
+0x3f, 0xfe, 0x3a, 0x70, 0x7e, 0x27, 0xc9, 0x60, 
+0xef, 0x9f, 0x61, 0x5f, 0xd7, 0x9a, 0x7f, 0x65, 
+0x05, 0x40, 0x3f, 0xb9, 0xa9, 0x79, 0xf6, 0xd8, 
+0x4e, 0x23, 0x1a, 0xcd, 0x42, 0xcd, 0x86, 0x08, 
+0x98, 0xad, 0x15, 0x03, 0x3a, 0x21, 0x30, 0x4a, 
+0x25, 0x04, 0xc6, 0x35, 0x59, 0x04, 0xd3, 0x9f, 
+0x2d, 0x12, 0x13, 0x60, 0xc8, 0x09, 0x70, 0x53, 
+0x74, 0x6a, 0x9d, 0x80, 0x71, 0xff, 0x71, 0x93, 
+0x4d, 0x3d, 0x01, 0xf9, 0x01, 0xdc, 0x24, 0xe5, 
+0x66, 0xb9, 0xf6, 0xc5, 0x73, 0x65, 0x4e, 0x0d, 
+0x56, 0xf5, 0x3d, 0x89, 0xc6, 0xb9, 0x96, 0xa2, 
+0xf0, 0xa3, 0xfa, 0xed, 0xd1, 0xfd, 0x4e, 0x95, 
+0xe2, 0x27, 0xa0, 0x7f, 0x46, 0x68, 0x2d, 0x4e, 
+0xc0, 0x9d, 0x2f, 0x06, 0x7a, 0xe9, 0x2e, 0x06, 
+0x60, 0x2d, 0xfc, 0xd5, 0xa4, 0x16, 0x51, 0xf5, 
+0x02, 0x14, 0x0c, 0xd6, 0x03, 0x05, 0x8f, 0x96, 
+0x0a, 0x0a, 0xce, 0x32, 0xe4, 0x03, 0x3a, 0x96, 
+0x1f, 0x14, 0x94, 0xac, 0x85, 0x87, 0x6a, 0x40, 
+0xc1, 0xb0, 0xd7, 0x21, 0x04, 0x96, 0xa1, 0xf1, 
+0x5f, 0xaa, 0x29, 0xf0, 0xaf, 0xa0, 0x46, 0xc1, 
+0x3f, 0xcf, 0x3a, 0x00, 0xfe, 0x55, 0xa4, 0xf9, 
+0x9b, 0x17, 0x00, 0x02, 0xfc, 0xab, 0x6d, 0xe0, 
+0x5f, 0x5f, 0x29, 0xee, 0x77, 0x85, 0x9e, 0x00, 
+0xb8, 0x58, 0x85, 0x71, 0xbf, 0x05, 0x18, 0xef, 
+0x73, 0xf3, 0xe7, 0x27, 0xf5, 0x2f, 0x31, 0x09, 
+0xf8, 0x97, 0xa9, 0x71, 0x3e, 0x5b, 0xfa, 0xaa, 
+0x83, 0x7f, 0xd0, 0xe0, 0xb9, 0xd1, 0x73, 0xc3, 
+0x3f, 0x28, 0x07, 0xff, 0xe0, 0x5c, 0x90, 0x3d, 
+0xfe, 0x59, 0x18, 0xb0, 0xe7, 0xbf, 0x7a, 0xef, 
+0xbf, 0x06, 0x7b, 0x7f, 0xcf, 0x52, 0xce, 0xfd, 
+0xa6, 0xbf, 0x67, 0xb8, 0xf7, 0xcf, 0x48, 0xaa, 
+0x8b, 0xcd, 0xbf, 0xb2, 0x02, 0xe0, 0x15, 0xb9, 
+0x99, 0x79, 0x74, 0xdf, 0x4a, 0xc3, 0x1b, 0x45, 
+0x68, 0x45, 0x80, 0xa1, 0x10, 0x88, 0xd4, 0x09, 
+0x81, 0x32, 0x38, 0x01, 0xf5, 0x19, 0xa1, 0x5b, 
+0xdb, 0x24, 0x8c, 0xf2, 0xcf, 0x18, 0x35, 0x74, 
+0x8f, 0x76, 0x29, 0x0a, 0x48, 0x67, 0x2e, 0x4e, 
+0x58, 0x5f, 0x04, 0x9c, 0xc0, 0x13, 0xff, 0x71, 
+0xa3, 0xb4, 0x41, 0xcb, 0xfc, 0x04, 0xd6, 0x5b, 
+0x95, 0x13, 0x70, 0xe7, 0x8b, 0x81, 0x3e, 0xf2, 
+0xc5, 0x40, 0xc9, 0x23, 0xf7, 0xae, 0x39, 0xdf, 
+0x4e, 0x68, 0xb6, 0xbc, 0x56, 0x80, 0x82, 0x1e, 
+0x16, 0x82, 0x82, 0xfe, 0x66, 0x41, 0xc1, 0x62, 
+0x33, 0xa0, 0xe0, 0x29, 0x33, 0xa0, 0xe0, 0x3b, 
+0xe5, 0x02, 0x05, 0xe7, 0xb2, 0xb5, 0xf0, 0x20, 
+0x2d, 0x28, 0x38, 0x04, 0x0d, 0x7f, 0x3d, 0x04, 
+0xc0, 0x75, 0x01, 0xfe, 0x99, 0x1b, 0xfd, 0xbb, 
+0xd6, 0x00, 0xf8, 0xa7, 0x6e, 0xfe, 0xd6, 0x7c, 
+0xfa, 0x17, 0xe0, 0x9f, 0x77, 0x39, 0xfc, 0xfe, 
+0xab, 0x0e, 0xfc, 0xd3, 0xc5, 0xfd, 0xea, 0x04, 
+0x40, 0x64, 0x56, 0xd5, 0xc5, 0xfd, 0x5e, 0xc3, 
+0x68, 0x9f, 0x9b, 0x3f, 0x8f, 0xff, 0x6f, 0xc1, 
+0xb6, 0xf7, 0x1b, 0xb8, 0xfd, 0xc9, 0xe3, 0xfc, 
+0x63, 0xea, 0x71, 0x3e, 0xde, 0x57, 0x88, 0xfb, 
+0xff, 0x42, 0x9c, 0xf2, 0xf1, 0xcf, 0x7f, 0xc1, 
+0xdb, 0x3e, 0xc1, 0xfb, 0xf8, 0x63, 0xb6, 0xc1, 
+0xfe, 0xf7, 0x22, 0x6c, 0x80, 0xf9, 0xd7, 0x72, 
+0xca, 0x1f, 0x27, 0xfc, 0xa5, 0xf3, 0x9d, 0xbf, 
+0x6a, 0xef, 0xef, 0x77, 0xdd, 0xf8, 0xdc, 0x8f, 
+0x85, 0xb0, 0xe3, 0xad, 0x44, 0xf2, 0x3e, 0x20, 
+0xef, 0xfd, 0x59, 0x04, 0x64, 0x5c, 0x46, 0xfd, 
+0xfe, 0x49, 0x14, 0x00, 0x03, 0x64, 0x01, 0xe0, 
+0xd6, 0x2d, 0x87, 0x86, 0x37, 0x9c, 0xa9, 0xa9, 
+0x32, 0x85, 0x80, 0x79, 0x4e, 0xc0, 0x50, 0x08, 
+0xf8, 0x74, 0x48, 0xd5, 0x6b, 0xdc, 0x4b, 0x7a, 
+0x1f, 0x56, 0x20, 0x3a, 0x53, 0xdc, 0x40, 0x70, 
+0xa7, 0x3c, 0x72, 0x6c, 0x05, 0xeb, 0x51, 0xfc, 
+0x98, 0x60, 0x22, 0x71, 0x50, 0x2e, 0x4e, 0x23, 
+0xac, 0x19, 0x3f, 0x01, 0x4d, 0x23, 0x96, 0x2e, 
+0x06, 0xfa, 0x15, 0xcb, 0xd6, 0xc2, 0xf7, 0x9d, 
+0x3a, 0xa6, 0xfe, 0xc8, 0x17, 0x03, 0xd6, 0x00, 
+0x05, 0xed, 0xeb, 0x24, 0x28, 0x78, 0xde, 0x0c, 
+0x28, 0x58, 0x9a, 0x10, 0xd0, 0x5a, 0x0b, 0xbf, 
+0xa1, 0x79, 0x1d, 0x86, 0x8f, 0xc3, 0x44, 0x20, 
+0xbb, 0xa6, 0xc0, 0xbf, 0xbd, 0x02, 0xfc, 0xb3, 
+0xc2, 0xd3, 0xbf, 0xba, 0xf9, 0xdb, 0x0a, 0xf0, 
+0xaf, 0xd6, 0x83, 0x7f, 0x7d, 0xdf, 0x9f, 0x86, 
+0xb8, 0xdf, 0x55, 0x3a, 0x01, 0x90, 0xb7, 0x9c, 
+0xee, 0x7c, 0xf6, 0x51, 0x95, 0x34, 0xff, 0x2f, 
+0xd1, 0xac, 0xe5, 0xbd, 0x7f, 0x31, 0x1a, 0x39, 
+0x3f, 0xbd, 0x5f, 0xc7, 0x53, 0xbc, 0xe1, 0x38, 
+0x9f, 0x9f, 0xf6, 0x8b, 0xf1, 0xd4, 0x2f, 0x07, 
+0xff, 0xf0, 0x34, 0x80, 0xa7, 0x02, 0x3c, 0x1d, 
+0xc8, 0xc4, 0x53, 0xbe, 0x1c, 0xfc, 0xc3, 0x30, 
+0x20, 0x43, 0x81, 0x5b, 0xb1, 0x36, 0x90, 0x9f, 
+0xfc, 0x79, 0xef, 0x1f, 0xf6, 0x6e, 0x8e, 0x51, 
+0xb4, 0x2f, 0x7f, 0x2d, 0xf0, 0xeb, 0xde, 0xfd, 
+0xf8, 0x66, 0x75, 0xf3, 0xff, 0x2f, 0xaa, 0x43, 
+0x5d, 0x6d, 0xfe, 0x95, 0x15, 0x00, 0x43, 0x65, 
+0x01, 0xe0, 0xda, 0x35, 0x8b, 0x86, 0x35, 0x0c, 
+0x43, 0x85, 0xeb, 0x84, 0x40, 0x43, 0x16, 0x02, 
+0x3a, 0x31, 0x50, 0xba, 0x10, 0xd0, 0xe7, 0x04, 
+0x4c, 0x9d, 0x11, 0xae, 0xea, 0x77, 0x42, 0x95, 
+0x1a, 0xf8, 0x1e, 0x4d, 0x86, 0xa7, 0x00, 0x37, 
+0xc9, 0xd5, 0x06, 0x50, 0xe1, 0x8a, 0xbe, 0xfa, 
+0xb1, 0xc4, 0x53, 0xe1, 0x1d, 0xb0, 0xb2, 0x94, 
+0x75, 0x02, 0x5f, 0x1a, 0x58, 0xea, 0x27, 0x50, 
+0x75, 0x9c, 0x80, 0xe6, 0x62, 0x20, 0xb4, 0xbf, 
+0xd6, 0x5a, 0xb8, 0x7f, 0xf1, 0xff, 0x1c, 0xda, 
+0x6d, 0xfc, 0xc5, 0xc8, 0x5a, 0xd8, 0x24, 0x28, 
+0x18, 0xf3, 0xe4, 0x80, 0x82, 0x92, 0x10, 0xb8, 
+0x6a, 0xf6, 0x62, 0x60, 0xd6, 0x90, 0x33, 0x52, 
+0xec, 0xb0, 0x24, 0x04, 0x1c, 0x20, 0x04, 0x0a, 
+0x04, 0xf8, 0x57, 0xeb, 0xc0, 0x3f, 0xa3, 0xe6, 
+0x5f, 0xbf, 0xc0, 0x3f, 0x6b, 0x3e, 0xfd, 0x57, 
+0x0c, 0xfc, 0xf3, 0xac, 0x76, 0xf0, 0x6f, 0xd8, 
+0x49, 0x7f, 0xd5, 0xd3, 0xff, 0x0a, 0x5a, 0x9c, 
+0x97, 0x52, 0x65, 0x7b, 0xff, 0x34, 0x80, 0x7c, 
+0xf2, 0xde, 0x9f, 0xcf, 0xf8, 0xa4, 0x71, 0x3e, 
+0x5b, 0xfa, 0x1a, 0x8e, 0xf3, 0xb1, 0xef, 0xe7, 
+0xbd, 0xff, 0x79, 0x39, 0xf8, 0x07, 0x3c, 0x00, 
+0x73, 0x01, 0xcc, 0x07, 0x30, 0x27, 0xf0, 0x37, 
+0x39, 0xf8, 0x07, 0xe7, 0x80, 0xfb, 0x30, 0x25, 
+0xe0, 0xa7, 0x7e, 0x79, 0xef, 0xbf, 0xf0, 0x58, 
+0x96, 0x51, 0xb4, 0xaf, 0xa6, 0xf9, 0x6f, 0x20, 
+0xe7, 0x0b, 0x49, 0xea, 0xe6, 0xcf, 0x65, 0x5b, 
+0x97, 0x9b, 0x7f, 0x65, 0x05, 0xc0, 0x68, 0x59, 
+0x00, 0xb8, 0x74, 0xc9, 0xa0, 0xa1, 0x0d, 0x43, 
+0x51, 0x61, 0x8a, 0x10, 0x18, 0xa6, 0x12, 0x02, 
+0xa5, 0x4f, 0x05, 0x4c, 0x73, 0x02, 0x86, 0xeb, 
+0x01, 0xff, 0x8e, 0x19, 0xfa, 0x4f, 0xf9, 0x9d, 
+0xf3, 0xa4, 0x06, 0x39, 0xcf, 0x00, 0x02, 0xe4, 
+0x7f, 0x37, 0x4c, 0x23, 0x9c, 0x8c, 0x46, 0xc9, 
+0xe3, 0x7e, 0x53, 0x22, 0x40, 0x23, 0x00, 0xca, 
+0xe7, 0x27, 0x50, 0x96, 0xdd, 0x70, 0x45, 0x38, 
+0x01, 0x7e, 0x12, 0xf7, 0xed, 0xa6, 0xbb, 0x18, 
+0x80, 0xb5, 0xf2, 0x7f, 0xa7, 0xb6, 0x5e, 0xf7, 
+0xb8, 0xf6, 0x80, 0x82, 0x5b, 0xad, 0x0e, 0x0a, 
+0x86, 0x57, 0x05, 0x28, 0xd8, 0xed, 0x0a, 0x45, 
+0x0c, 0x3f, 0xa5, 0x5c, 0x0c, 0x84, 0xfb, 0x96, 
+0x50, 0xc4, 0xf1, 0x9a, 0x00, 0xff, 0x76, 0x0b, 
+0xf0, 0x4f, 0x80, 0x7f, 0xf5, 0x1e, 0xfc, 0xe3, 
+0xa7, 0x7f, 0x37, 0xd5, 0xd3, 0xbf, 0x67, 0xee, 
+0x4a, 0xfa, 0xac, 0x8a, 0xe2, 0x7e, 0x0b, 0x71, 
+0xc6, 0x27, 0xef, 0xfd, 0xbf, 0x41, 0x43, 0x57, 
+0xc6, 0xf9, 0x18, 0xfd, 0xcb, 0xe3, 0xfc, 0xaf, 
+0xb4, 0xe3, 0xfc, 0x5c, 0x08, 0x05, 0x26, 0xff, 
+0xff, 0x8e, 0xe0, 0x9f, 0x7b, 0x08, 0xfe, 0xe1, 
+0x8b, 0x00, 0xbe, 0x0c, 0x38, 0x80, 0x0b, 0x01, 
+0x39, 0xf8, 0xe7, 0x63, 0x6d, 0xf0, 0x4f, 0xaa, 
+0x76, 0xf4, 0xcf, 0x4f, 0xff, 0xab, 0xb1, 0xd7, 
+0x37, 0x15, 0xed, 0x2b, 0xbd, 0xee, 0xaf, 0x25, 
+0x92, 0xdf, 0x9e, 0x0c, 0x75, 0xf3, 0x8f, 0xaf, 
+0xeb, 0xcd, 0xbf, 0xb2, 0x02, 0x60, 0xa2, 0x2c, 
+0x00, 0x9c, 0x3a, 0xa7, 0xd2, 0x90, 0x86, 0x21, 
+0x5a, 0x11, 0x60, 0x28, 0x04, 0xc2, 0x2d, 0x10, 
+0x02, 0xe6, 0x39, 0x81, 0x49, 0x88, 0xdf, 0x55, 
+0xfb, 0x05, 0xac, 0x41, 0x40, 0x90, 0xa9, 0xf5, 
+0x40, 0x6c, 0xff, 0xd3, 0x26, 0x63, 0x89, 0x5d, 
+0xdb, 0x24, 0x99, 0x14, 0x00, 0xd3, 0x00, 0x07, 
+0xca, 0x7e, 0x02, 0xa5, 0x0b, 0x01, 0xfd, 0xf5, 
+0x80, 0x7b, 0xdb, 0x54, 0x89, 0x3d, 0x88, 0x02, 
+0x44, 0xe8, 0x0c, 0x2f, 0x01, 0xcb, 0xd7, 0x03, 
+0x65, 0x73, 0x02, 0xae, 0x6d, 0x32, 0xf5, 0x2e, 
+0x06, 0xfc, 0x7a, 0xed, 0xfd, 0xc6, 0xb6, 0x65, 
+0x4c, 0x35, 0x81, 0x82, 0xa9, 0x66, 0x40, 0xc1, 
+0xdc, 0x52, 0x41, 0x41, 0x8d, 0x10, 0xa8, 0x5d, 
+0xa0, 0xe0, 0xfc, 0x5e, 0x17, 0x69, 0xe6, 0x70, 
+0x2d, 0x28, 0x88, 0xa9, 0x40, 0xf8, 0x9c, 0xa3, 
+0xb0, 0xf1, 0x14, 0xe0, 0x9f, 0x00, 0xff, 0xaa, 
+0x13, 0xfc, 0x0b, 0xab, 0xf7, 0xe0, 0xdf, 0xa8, 
+0xe2, 0x10, 0xbd, 0xa7, 0xff, 0xaa, 0x8a, 0xfb, 
+0x7d, 0x0f, 0x26, 0x3e, 0xf2, 0xde, 0xff, 0x36, 
+0x4e, 0xfd, 0xe4, 0x71, 0x3e, 0x43, 0x7f, 0x0c, 
+0xff, 0xa9, 0xc7, 0xf9, 0x7c, 0xeb, 0x2f, 0x5b, 
+0xfa, 0x2a, 0xc1, 0x3f, 0x80, 0x06, 0xd9, 0x1b, 
+0x80, 0x3d, 0x02, 0xfe, 0xa7, 0x72, 0x0a, 0x4c, 
+0xd5, 0x42, 0x7f, 0xd2, 0xde, 0x3f, 0x2f, 0x9d, 
+0x7c, 0xaf, 0x1b, 0x47, 0xfb, 0xb2, 0xf8, 0x75, 
+0xb8, 0xb5, 0x9e, 0xbc, 0xf7, 0xa7, 0xa9, 0x9b, 
+0xff, 0x3b, 0xa8, 0xdf, 0x3d, 0xe9, 0x02, 0x60, 
+0xaa, 0x92, 0x05, 0xd0, 0xb7, 0x88, 0x26, 0xb5, 
+0x5a, 0x45, 0x43, 0x1a, 0x04, 0x4b, 0x42, 0x40, 
+0x27, 0x06, 0xc2, 0xb4, 0x62, 0x20, 0x5c, 0x7f, 
+0x3d, 0x50, 0x01, 0x4e, 0x20, 0xa2, 0xdb, 0x4e, 
+0xbd, 0xe6, 0x3d, 0xa3, 0x55, 0x9c, 0x34, 0x05, 
+0x88, 0x7b, 0xf1, 0x82, 0xde, 0xdb, 0xed, 0x5a, 
+0xae, 0xd1, 0x6b, 0x96, 0x72, 0x3a, 0x9f, 0x29, 
+0xbf, 0x00, 0x47, 0x44, 0x0f, 0x73, 0x03, 0xb5, 
+0x51, 0x19, 0x0b, 0x4d, 0x56, 0xb9, 0x0c, 0x9a, 
+0x12, 0x02, 0x91, 0xdd, 0xf6, 0xa9, 0xae, 0x12, 
+0x2e, 0xe2, 0xde, 0x3f, 0xa5, 0x92, 0xeb, 0x01, 
+0x63, 0x21, 0xe0, 0xd6, 0x36, 0x9b, 0x02, 0x7b, 
+0xed, 0xd7, 0x59, 0x0b, 0x77, 0xdf, 0xfe, 0xed, 
+0xa4, 0xe6, 0x2b, 0x2b, 0x04, 0x0a, 0x4e, 0xb5, 
+0x10, 0x14, 0x9c, 0x51, 0x61, 0x50, 0x70, 0xa7, 
+0x19, 0x50, 0xb0, 0xd0, 0x0c, 0x28, 0x78, 0xa4, 
+0xea, 0x41, 0x41, 0x58, 0x0b, 0x87, 0x0f, 0xd1, 
+0x80, 0x82, 0x61, 0x03, 0xf0, 0xe7, 0x44, 0x1f, 
+0xa1, 0x99, 0x57, 0x05, 0xf8, 0x27, 0xc0, 0x3f, 
+0x01, 0xfe, 0x55, 0x16, 0xfc, 0xeb, 0x77, 0xd7, 
+0x0e, 0x71, 0xbf, 0xba, 0xa7, 0x7f, 0xaf, 0x9c, 
+0x55, 0xf4, 0x9f, 0xef, 0xbe, 0xa9, 0xd2, 0xbd, 
+0xff, 0x61, 0x3c, 0xf1, 0xff, 0xd7, 0x70, 0x9c, 
+0xcf, 0x96, 0xbe, 0x18, 0xe7, 0xb3, 0xbb, 0x5f, 
+0x11, 0x5c, 0xfe, 0x0a, 0xe0, 0xf6, 0xc7, 0xae, 
+0x7f, 0xec, 0xfe, 0xf7, 0x19, 0x82, 0x7f, 0xd8, 
+0x0d, 0x70, 0x2b, 0x8c, 0x7d, 0xde, 0x85, 0x3b, 
+0x20, 0xbb, 0x04, 0x72, 0xf1, 0xcf, 0xb3, 0x31, 
+0xee, 0xd7, 0xed, 0xfd, 0xd3, 0x29, 0xf4, 0xdd, 
+0x2c, 0xa3, 0x68, 0x5f, 0x7e, 0xfd, 0xf3, 0xeb, 
+0xdc, 0xfd, 0xd8, 0x26, 0x75, 0xf3, 0xff, 0x1a, 
+0xd5, 0xb6, 0x3e, 0x34, 0xff, 0xca, 0x0a, 0x80, 
+0xd6, 0x6c, 0x77, 0x2b, 0x8b, 0x00, 0xe9, 0xb4, 
+0xad, 0x57, 0x3e, 0x8d, 0x6f, 0xb1, 0x54, 0x23, 
+0x04, 0x1a, 0x84, 0x98, 0x99, 0x0a, 0x94, 0x9f, 
+0x13, 0x18, 0xd7, 0x74, 0x11, 0x7c, 0x02, 0x74, 
+0xf9, 0x00, 0xa1, 0x5d, 0xb6, 0x4a, 0x8c, 0x80, 
+0x6f, 0x07, 0x7d, 0xcb, 0xe0, 0xd0, 0x2e, 0xdb, 
+0x4c, 0xc6, 0x12, 0x47, 0x76, 0xdf, 0x6b, 0x24, 
+0x00, 0x9c, 0x5b, 0x6f, 0x54, 0x1a, 0xe8, 0x34, 
+0x04, 0x10, 0xcd, 0xec, 0xba, 0x4b, 0x3a, 0x0f, 
+0xe4, 0x09, 0xc3, 0x2c, 0x8c, 0xe4, 0x5d, 0xda, 
+0x24, 0x1b, 0x71, 0x02, 0x11, 0x88, 0x03, 0x56, 
+0xff, 0x1e, 0x8b, 0x7b, 0x15, 0x57, 0x19, 0x27, 
+0x20, 0x65, 0x0c, 0xf4, 0x39, 0x24, 0x5b, 0x0b, 
+0x3f, 0x70, 0xe9, 0x9c, 0xf9, 0xc3, 0x04, 0x4c, 
+0x43, 0xcc, 0x81, 0x82, 0x36, 0x75, 0x06, 0x14, 
+0x3c, 0x6c, 0x06, 0x14, 0x3c, 0x69, 0x45, 0x50, 
+0x50, 0x63, 0x2d, 0x1c, 0x36, 0x50, 0xfb, 0x3a, 
+0x1d, 0x8e, 0x3f, 0x6b, 0x53, 0x31, 0x85, 0xdf, 
+0x14, 0xe0, 0x9f, 0x00, 0xff, 0xaa, 0x6b, 0xf4, 
+0x1f, 0x52, 0xef, 0xc0, 0x3f, 0x4d, 0xdc, 0xaf, 
+0xee, 0xe9, 0x3f, 0xb1, 0x60, 0x47, 0x95, 0xee, 
+0xfd, 0xb3, 0xe1, 0xe1, 0xcf, 0x3e, 0xff, 0xf2, 
+0x38, 0x9f, 0x0d, 0x7f, 0xde, 0xc7, 0x34, 0x40, 
+0x1e, 0xe7, 0xb3, 0xbf, 0x3f, 0xfb, 0xfc, 0xb3, 
+0xdf, 0xff, 0x77, 0xb0, 0xf4, 0x95, 0x83, 0x7f, 
+0x38, 0x0f, 0x80, 0x9f, 0xf6, 0xf9, 0xa9, 0x9f, 
+0x9f, 0xfe, 0x79, 0x0a, 0xb0, 0x13, 0x70, 0x20, 
+0x3f, 0xf5, 0x4b, 0x66, 0x3f, 0x10, 0x02, 0x0b, 
+0x8e, 0x67, 0xaa, 0xa2, 0x7d, 0xb7, 0xe8, 0x35, 
+0x7f, 0xa7, 0x0b, 0x1b, 0xd5, 0xcd, 0xff, 0x31, 
+0x6a, 0x7c, 0x7d, 0x69, 0xfe, 0x95, 0x12, 0x00, 
+0x5c, 0xd3, 0x3b, 0x6d, 0xda, 0x14, 0xd8, 0x4f, 
+0x79, 0x52, 0x25, 0xf5, 0x59, 0xe0, 0x98, 0x66, 
+0x0b, 0x2c, 0x10, 0x02, 0xe1, 0xe5, 0xe6, 0x04, 
+0xfc, 0x3b, 0xa6, 0xd3, 0x62, 0x04, 0xef, 0xd8, 
+0xb5, 0x5c, 0x2d, 0xad, 0x07, 0x58, 0x04, 0xa8, 
+0xfd, 0x00, 0xd6, 0xbf, 0x7c, 0x11, 0x90, 0xa0, 
+0x9c, 0xc8, 0xa7, 0x13, 0x02, 0xee, 0x6d, 0x8d, 
+0xad, 0x88, 0xdd, 0x61, 0x4f, 0x2c, 0xef, 0xd4, 
+0x17, 0xf5, 0x3a, 0x64, 0x72, 0x4d, 0x10, 0x83, 
+0xb5, 0x82, 0x13, 0x84, 0x82, 0x2c, 0x04, 0x42, 
+0x3a, 0x6f, 0xd7, 0x7b, 0x7f, 0xd2, 0x2b, 0xd7, 
+0xc8, 0xae, 0x45, 0x42, 0x05, 0x63, 0x89, 0x2d, 
+0xe3, 0x04, 0xbc, 0x3a, 0x6d, 0xa7, 0x10, 0xed, 
+0xc5, 0x00, 0xac, 0x85, 0xef, 0x4d, 0xef, 0xb0, 
+0xf9, 0xe7, 0xf1, 0x7a, 0x91, 0xcb, 0xf5, 0x17, 
+0x14, 0x8c, 0xb0, 0x12, 0x28, 0xb8, 0x10, 0xa0, 
+0xe0, 0xec, 0x41, 0x67, 0x25, 0xef, 0x00, 0xe9, 
+0x75, 0x3a, 0x09, 0xd3, 0x87, 0x6d, 0x87, 0x05, 
+0xf8, 0x57, 0xc7, 0xc1, 0xbf, 0x09, 0x02, 0xfc, 
+0xab, 0x76, 0xf0, 0x4f, 0x13, 0xf7, 0x1b, 0xa5, 
+0x34, 0x7f, 0xef, 0xac, 0xe8, 0x2a, 0x89, 0xfb, 
+0x2d, 0x2a, 0x2a, 0x92, 0x9a, 0x7f, 0x72, 0x72, 
+0xb2, 0x94, 0xe6, 0x67, 0x34, 0xce, 0x87, 0xf5, 
+0xef, 0x3f, 0xd5, 0xc1, 0x3f, 0x68, 0xf8, 0xdc, 
+0xf8, 0xf9, 0x63, 0xaf, 0xa8, 0x83, 0x7f, 0x20, 
+0x10, 0x58, 0x28, 0xf0, 0xfe, 0x9f, 0xb3, 0x00, 
+0xd2, 0x54, 0x4f, 0xff, 0xab, 0xf7, 0x65, 0x98, 
+0x3c, 0xf7, 0x63, 0xb1, 0x3b, 0xfd, 0xda, 0x7a, 
+0xec, 0xfd, 0xd3, 0xd5, 0x02, 0x20, 0xb6, 0x3e, 
+0x35, 0xff, 0x4a, 0x0b, 0x00, 0xae, 0xe1, 0x4d, 
+0x22, 0x86, 0x39, 0x74, 0xdc, 0xf8, 0xb7, 0xe0, 
+0xfe, 0x87, 0x8c, 0x84, 0x80, 0x6b, 0xd7, 0x4c, 
+0x1a, 0xd9, 0x24, 0x52, 0x2b, 0x04, 0x82, 0x2d, 
+0x10, 0x02, 0x33, 0x2b, 0xc4, 0x09, 0x38, 0xb4, 
+0x42, 0x7c, 0x30, 0xa8, 0x7e, 0xe5, 0xee, 0x1f, 
+0x57, 0x03, 0x13, 0xf1, 0xa4, 0xac, 0x4e, 0x23, 
+0xf4, 0x6c, 0xb7, 0xd9, 0x64, 0x0c, 0xb1, 0xc4, 
+0x08, 0xb4, 0x4d, 0x32, 0xeb, 0x23, 0xc0, 0x99, 
+0x04, 0xc1, 0x9d, 0xb7, 0x4a, 0x4f, 0xd5, 0x1c, 
+0x4a, 0x64, 0xf8, 0x7e, 0x97, 0xd6, 0xc9, 0x96, 
+0xfb, 0x09, 0x54, 0x90, 0x13, 0x70, 0x6e, 0x95, 
+0x4a, 0xde, 0x5d, 0x74, 0x17, 0x03, 0xb0, 0x16, 
+0xfe, 0xc1, 0xae, 0xed, 0xfa, 0x47, 0xe6, 0x41, 
+0xc1, 0x28, 0x33, 0xa0, 0x60, 0xdc, 0x13, 0x09, 
+0x0a, 0x4a, 0xd6, 0xc2, 0xc3, 0x4e, 0x4b, 0x6e, 
+0x82, 0xd2, 0xeb, 0xd4, 0xf9, 0x28, 0x85, 0x1e, 
+0x38, 0x68, 0x72, 0xf4, 0x1f, 0x22, 0xc0, 0xbf, 
+0x7a, 0x07, 0xfe, 0xd5, 0xc4, 0xd9, 0x9f, 0xba, 
+0xf9, 0x9b, 0x7f, 0xfa, 0xaf, 0x1b, 0xe0, 0x9f, 
+0x6d, 0xfe, 0x3c, 0x34, 0xfe, 0x95, 0x8a, 0x00, 
+0xc8, 0x3c, 0x52, 0x68, 0xf5, 0xe6, 0xcf, 0xde, 
+0xfe, 0xf2, 0xde, 0xff, 0x0e, 0x68, 0x7f, 0x79, 
+0x9c, 0x9f, 0xa7, 0x1e, 0xe7, 0xc3, 0xd2, 0x97, 
+0x7f, 0xce, 0x23, 0xfe, 0xe3, 0x1c, 0xfc, 0x83, 
+0x8f, 0xf9, 0xf9, 0xe7, 0x9f, 0xe9, 0x16, 0x7e, 
+0x2d, 0xaf, 0x02, 0x78, 0x25, 0xc0, 0xa4, 0xbf, 
+0xe4, 0x14, 0x08, 0xf2, 0x9f, 0x57, 0x06, 0x19, 
+0xda, 0xe6, 0xcf, 0x4f, 0xff, 0x49, 0xd8, 0xfb, 
+0x7b, 0xdf, 0x30, 0x8e, 0xf6, 0x95, 0x5e, 0xef, 
+0xb7, 0xe2, 0xb1, 0xf7, 0x4f, 0x55, 0x35, 0xff, 
+0xf4, 0xb7, 0x51, 0xbf, 0x15, 0x02, 0xa0, 0x94, 
+0x1a, 0xd9, 0x74, 0x8e, 0xc3, 0x8c, 0xce, 0x9b, 
+0xbf, 0x0c, 0x79, 0xe1, 0x88, 0x9e, 0x08, 0xc0, 
+0x8d, 0x3b, 0x20, 0xc1, 0x2d, 0x34, 0xbc, 0x71, 
+0x04, 0x0d, 0x56, 0x09, 0x81, 0x32, 0x39, 0x01, 
+0xbd, 0xf5, 0x40, 0xd9, 0x9c, 0x80, 0x7b, 0xbb, 
+0x64, 0xbd, 0xa6, 0xcc, 0x53, 0x81, 0xe9, 0xe0, 
+0x04, 0x64, 0x3f, 0x81, 0xc5, 0xbd, 0x8d, 0x9f, 
+0xf0, 0x03, 0x3a, 0x66, 0x49, 0x4d, 0x33, 0xa8, 
+0x53, 0xae, 0x45, 0x86, 0x42, 0x33, 0xd1, 0x80, 
+0x0d, 0x53, 0x0a, 0xa5, 0x49, 0x42, 0xdb, 0x94, 
+0x4a, 0xf8, 0x09, 0x94, 0x8f, 0x13, 0x70, 0x6e, 
+0x9d, 0x26, 0x5d, 0x0c, 0x84, 0x69, 0x2f, 0x06, 
+0x02, 0xfa, 0x14, 0xfe, 0x77, 0x4a, 0xab, 0xb5, 
+0x15, 0x00, 0x05, 0xd7, 0x9a, 0x01, 0x05, 0x37, 
+0x9a, 0x01, 0x05, 0xd3, 0xea, 0x07, 0x28, 0x08, 
+0x6b, 0xe1, 0x99, 0x23, 0x4e, 0x6a, 0x5e, 0xa7, 
+0x7c, 0x35, 0x10, 0x04, 0xf1, 0x71, 0x6a, 0xbf, 
+0x00, 0xff, 0x04, 0xf8, 0xa7, 0xd7, 0xfc, 0x2d, 
+0xf3, 0xfb, 0xaf, 0x3a, 0xf0, 0xef, 0xcd, 0x5a, 
+0x06, 0xfe, 0xbd, 0x78, 0xcb, 0x91, 0x3c, 0xb2, 
+0xa3, 0x14, 0x01, 0xe0, 0x9b, 0x19, 0x6b, 0xf5, 
+0xb8, 0x5f, 0xc3, 0xbd, 0xff, 0xbf, 0x61, 0xe9, 
+0x6b, 0x38, 0xce, 0xe7, 0x75, 0xc0, 0x7b, 0xb0, 
+0xf4, 0x55, 0x07, 0xff, 0x30, 0xf4, 0xf7, 0xd1, 
+0x07, 0x1f, 0xd0, 0x61, 0x4c, 0x0e, 0xd4, 0xc1, 
+0x3f, 0x0c, 0x09, 0xf2, 0xed, 0x7f, 0x9a, 0xca, 
+0xe9, 0x2f, 0x35, 0x23, 0x9d, 0x82, 0x2f, 0x66, 
+0x1a, 0x45, 0xfb, 0xf2, 0x6b, 0x9d, 0x5f, 0xdf, 
+0xee, 0x25, 0xea, 0xbd, 0x7f, 0xfa, 0x7f, 0x50, 
+0x2d, 0xeb, 0x5b, 0xf3, 0xb7, 0xaa, 0x00, 0xe0, 
+0x1a, 0xf8, 0xbc, 0xef, 0xaf, 0xc7, 0x34, 0x5f, 
+0x10, 0xea, 0xdc, 0x25, 0xfd, 0x7b, 0xf9, 0xa4, 
+0x4d, 0xae, 0x90, 0xfe, 0xc5, 0x84, 0x49, 0x01, 
+0x0d, 0x6d, 0x14, 0xa6, 0x13, 0x02, 0x16, 0x72, 
+0x02, 0xc3, 0x2d, 0xe4, 0x04, 0x42, 0x4c, 0x44, 
+0x0e, 0xc7, 0xbd, 0x74, 0xc1, 0x24, 0x00, 0xc8, 
+0x15, 0x82, 0xa7, 0x7a, 0x6e, 0x9a, 0xb3, 0xba, 
+0xed, 0x32, 0xf9, 0x7e, 0x8e, 0x10, 0x36, 0x4c, 
+0x2b, 0x5c, 0xd2, 0xcb, 0x38, 0xaf, 0xc0, 0xbb, 
+0x7d, 0xba, 0x15, 0xfd, 0x04, 0x36, 0x5a, 0xc4, 
+0x09, 0xb8, 0xb6, 0xc1, 0x0b, 0xb3, 0xa7, 0xee, 
+0x62, 0xc0, 0xa7, 0xe7, 0xae, 0x6f, 0x6d, 0x5a, 
+0x44, 0x57, 0x03, 0x28, 0xb8, 0xc5, 0x0c, 0x28, 
+0x98, 0x63, 0x06, 0x14, 0xcc, 0xaf, 0x31, 0x50, 
+0xd0, 0x9c, 0x10, 0x98, 0xdb, 0xe7, 0x22, 0x85, 
+0x0f, 0xd3, 0x82, 0x82, 0x48, 0x1e, 0x0c, 0x5d, 
+0x88, 0x3f, 0xfb, 0x62, 0x91, 0x00, 0xff, 0x9e, 
+0x08, 0xf0, 0x6f, 0x9e, 0x00, 0xff, 0xca, 0x01, 
+0xfe, 0xf1, 0xd3, 0xff, 0xb4, 0xad, 0x8b, 0xb5, 
+0xcd, 0x5f, 0x23, 0x00, 0x76, 0x5b, 0x39, 0xee, 
+0x97, 0xf7, 0xfe, 0xe9, 0x78, 0xa2, 0xe7, 0xe6, 
+0x9f, 0x05, 0xd0, 0x8f, 0xcf, 0xfb, 0x38, 0xa1, 
+0x6f, 0xa7, 0x89, 0x71, 0xfe, 0x01, 0xb6, 0xf4, 
+0x95, 0x83, 0x7f, 0x70, 0xee, 0xc7, 0x67, 0x7f, 
+0x27, 0x61, 0xe9, 0x9b, 0x8b, 0xa7, 0x7c, 0x3e, 
+0x07, 0x64, 0x97, 0x3f, 0xc9, 0x29, 0x10, 0x67, 
+0x82, 0x79, 0x38, 0x17, 0x54, 0xef, 0xfd, 0xe7, 
+0x1f, 0xcf, 0x34, 0x79, 0xee, 0xc7, 0xaf, 0x6d, 
+0xa7, 0xf3, 0x1b, 0xd4, 0xcd, 0x1f, 0x7b, 0xff, 
+0xf4, 0x51, 0xf5, 0xb1, 0xf9, 0x5b, 0x5d, 0x00, 
+0xa8, 0x84, 0xc0, 0xef, 0xc7, 0xb5, 0x58, 0xb2, 
+0x0a, 0x0e, 0x81, 0x3f, 0x1b, 0xae, 0x05, 0x30, 
+0xba, 0xa6, 0x69, 0xed, 0xe2, 0xa5, 0xc6, 0x3f, 
+0xb8, 0x41, 0x90, 0xd5, 0x39, 0x01, 0xef, 0x0e, 
+0x29, 0x30, 0xf9, 0xb1, 0xcc, 0x22, 0x98, 0x2f, 
+0x0b, 0xb8, 0x61, 0x9a, 0x12, 0x00, 0x73, 0xba, 
+0xef, 0x93, 0x9e, 0xa0, 0x6d, 0x9b, 0x45, 0x49, 
+0x13, 0x02, 0x75, 0x34, 0xb1, 0x61, 0xf1, 0x5a, 
+0xc0, 0xda, 0x7e, 0x02, 0xea, 0xa9, 0x80, 0x39, 
+0x4e, 0xc0, 0xad, 0x1d, 0x2e, 0x06, 0x7a, 0x1f, 
+0x50, 0x59, 0x0b, 0xe7, 0x7d, 0x3f, 0x11, 0xa1, 
+0x4b, 0xf5, 0x11, 0x14, 0x0c, 0xb3, 0x10, 0x14, 
+0x9c, 0x53, 0x11, 0x50, 0x10, 0x42, 0x31, 0x7c, 
+0xb0, 0xf6, 0x75, 0x3a, 0xa8, 0x84, 0x42, 0xd6, 
+0xe2, 0xbf, 0xe1, 0x3d, 0x01, 0xfe, 0x09, 0xf0, 
+0x4f, 0x80, 0x7f, 0x72, 0xf3, 0x7f, 0xf5, 0xba, 
+0x13, 0x6e, 0xfd, 0x57, 0x29, 0x02, 0x20, 0xa0, 
+0x0a, 0xe2, 0x7e, 0xf7, 0xe3, 0x36, 0x5f, 0xde, 
+0xfb, 0xb3, 0xcf, 0xbf, 0x34, 0xce, 0x87, 0x59, 
+0x8f, 0x7a, 0x9c, 0xff, 0x09, 0x8f, 0xf3, 0x91, 
+0x00, 0xb8, 0x1d, 0x96, 0xbe, 0x7c, 0x11, 0xc0, 
+0x46, 0x3f, 0x6c, 0xf8, 0x73, 0x01, 0xc6, 0x3f, 
+0x39, 0x68, 0xee, 0xec, 0xeb, 0xcf, 0x86, 0x40, 
+0x6c, 0x0c, 0x74, 0x43, 0xeb, 0x14, 0x98, 0xae, 
+0xda, 0xfb, 0xc7, 0xee, 0xcb, 0x30, 0x8e, 0xf6, 
+0xe5, 0x73, 0x3f, 0xbc, 0xb6, 0x1d, 0xaf, 0xaa, 
+0xf7, 0xfe, 0xfc, 0x63, 0xfa, 0xca, 0xfa, 0xda, 
+0xfc, 0xab, 0x4c, 0x00, 0xa8, 0x84, 0xc0, 0x33, 
+0x13, 0x5b, 0xad, 0x48, 0xf5, 0xec, 0xb1, 0xed, 
+0xa1, 0xa1, 0x10, 0xe0, 0xd3, 0xc1, 0xc9, 0x6d, 
+0x62, 0xa5, 0x69, 0x80, 0x4e, 0x08, 0x58, 0x87, 
+0x13, 0x98, 0xdc, 0x7c, 0x15, 0x45, 0xab, 0x52, 
+0x07, 0x4b, 0xab, 0x39, 0xb8, 0x0c, 0xe0, 0xf5, 
+0x80, 0x67, 0xfb, 0xcd, 0x26, 0x3c, 0x02, 0x62, 
+0xf5, 0xfc, 0x04, 0xa6, 0xc3, 0x5e, 0x78, 0xfd, 
+0xcb, 0x97, 0x4c, 0xfe, 0x3e, 0xc1, 0x9d, 0xb6, 
+0x5a, 0x7c, 0x46, 0x58, 0x55, 0x9c, 0x80, 0x47, 
+0x87, 0x3c, 0x0a, 0xee, 0x2b, 0x5f, 0x0c, 0x1c, 
+0xfd, 0xc5, 0xb9, 0x53, 0xda, 0x3d, 0x7d, 0x6b, 
+0xe1, 0xda, 0x03, 0x0a, 0x7a, 0x5b, 0x08, 0x0a, 
+0x06, 0x99, 0x05, 0x05, 0x8f, 0x9b, 0x01, 0x05, 
+0xcf, 0x99, 0x01, 0x05, 0xaf, 0x94, 0x0e, 0x0a, 
+0xa2, 0x22, 0x07, 0xbc, 0x2d, 0x9d, 0x0c, 0x4a, 
+0xaf, 0xd3, 0x51, 0x47, 0x29, 0x38, 0x0d, 0xff, 
+0x1d, 0x37, 0x05, 0xf8, 0x57, 0xff, 0xc1, 0xbf, 
+0x39, 0x02, 0xfc, 0x33, 0x03, 0xfe, 0xb1, 0x00, 
+0x70, 0xcc, 0x5e, 0x46, 0x9e, 0xca, 0xd3, 0xff, 
+0x4a, 0x3a, 0x7a, 0xf5, 0x7c, 0x95, 0xed, 0xfd, 
+0xef, 0x62, 0xa4, 0xcf, 0xe3, 0xfc, 0x62, 0x8c, 
+0xf3, 0xd9, 0xd2, 0xd7, 0x70, 0x9c, 0x9f, 0x89, 
+0x66, 0xce, 0x3f, 0x2a, 0xc1, 0x3f, 0xb0, 0xfc, 
+0xe5, 0x8f, 0xe3, 0x8f, 0xe7, 0x5f, 0xa7, 0x04, 
+0xff, 0xc0, 0x29, 0x30, 0x13, 0x13, 0x05, 0xb9, 
+0xf9, 0xf3, 0xde, 0xdf, 0xeb, 0x86, 0x71, 0xb4, 
+0xaf, 0x24, 0x70, 0x6f, 0xc6, 0x93, 0x4f, 0x51, 
+0xaa, 0xdc, 0xf8, 0xb9, 0x4e, 0xa2, 0x7e, 0x23, 
+0x04, 0x40, 0xa5, 0x85, 0x80, 0x4f, 0x53, 0x9b, 
+0x36, 0xd1, 0xfb, 0x7c, 0x7a, 0xed, 0x7a, 0x6c, 
+0x28, 0x04, 0xfc, 0x7a, 0xef, 0x25, 0x88, 0x04, 
+0x49, 0x04, 0x68, 0xaa, 0xa2, 0x9c, 0x80, 0xfe, 
+0x7a, 0x60, 0x0c, 0xb8, 0x00, 0x6f, 0xc4, 0x0d, 
+0x2f, 0xeb, 0x73, 0x44, 0x7a, 0x7a, 0x8f, 0x02, 
+0x18, 0x98, 0xf0, 0xb2, 0x7e, 0x36, 0xc0, 0xc2, 
+0x5e, 0x07, 0xa4, 0x2b, 0x02, 0xdb, 0x66, 0xab, 
+0x8c, 0x9a, 0xba, 0x4d, 0xb3, 0x95, 0x46, 0x7e, 
+0x02, 0x6e, 0x6d, 0x36, 0xc1, 0x8a, 0xd8, 0x38, 
+0x7f, 0x20, 0xbc, 0xcb, 0x4e, 0x23, 0x3f, 0x01, 
+0x5b, 0x95, 0x10, 0xd0, 0x6f, 0xb0, 0x55, 0xcb, 
+0x09, 0x48, 0x17, 0x03, 0xfd, 0x8f, 0xc8, 0x6b, 
+0x97, 0x9f, 0x1c, 0xdb, 0x27, 0x3f, 0x90, 0x2f, 
+0x22, 0xac, 0x0d, 0x0a, 0x4e, 0xb7, 0x10, 0x14, 
+0x74, 0xaf, 0x55, 0xa0, 0xe0, 0x25, 0x0b, 0x40, 
+0x41, 0xb6, 0x16, 0x3e, 0x2d, 0xad, 0x04, 0x24, 
+0x41, 0x35, 0xe5, 0x08, 0x05, 0xef, 0x2a, 0x12, 
+0xe0, 0x9f, 0x00, 0xff, 0x9e, 0x58, 0xf0, 0x8f, 
+0xe3, 0x7e, 0x3d, 0xf3, 0x56, 0x2a, 0x02, 0x20, 
+0x34, 0x23, 0xc1, 0xea, 0x7b, 0xff, 0x8d, 0x1b, 
+0x37, 0x4a, 0x02, 0xe0, 0x10, 0x9e, 0xee, 0xf5, 
+0xc6, 0xf9, 0x6c, 0xe9, 0x8b, 0xf7, 0x7f, 0xab, 
+0x1d, 0xe7, 0x73, 0x98, 0xcf, 0x31, 0x7c, 0x0c, 
+0x4f, 0x02, 0x38, 0xe4, 0xe7, 0x0e, 0x07, 0xff, 
+0x20, 0xf4, 0x87, 0xc3, 0x7f, 0x6e, 0x43, 0x44, 
+0xdc, 0x07, 0x08, 0xc8, 0xa1, 0x40, 0xc7, 0xc1, 
+0x0f, 0x64, 0xa9, 0xef, 0xfd, 0xb1, 0xf7, 0x0f, 
+0xba, 0x98, 0x61, 0x14, 0xed, 0xcb, 0xaf, 0x6f, 
+0x7e, 0x1d, 0x6b, 0xf6, 0xfe, 0x4a, 0xf3, 0xff, 
+0x02, 0xd5, 0xac, 0x3e, 0x37, 0xff, 0x6a, 0x13, 
+0x00, 0x72, 0x0d, 0x6a, 0xe0, 0xd7, 0x71, 0x4a, 
+0xbb, 0xb5, 0x67, 0xfd, 0xfa, 0xec, 0x33, 0xba, 
+0x18, 0xf0, 0xee, 0x89, 0x71, 0x7c, 0x8b, 0xc5, 
+0x10, 0x00, 0x81, 0xfa, 0x42, 0xa0, 0x02, 0x9c, 
+0xc0, 0x88, 0x52, 0x38, 0x01, 0x8e, 0x21, 0x56, 
+0x37, 0x6e, 0x16, 0x07, 0x72, 0xee, 0x80, 0x61, 
+0xf2, 0xa0, 0x17, 0xc4, 0x83, 0x29, 0x3f, 0x81, 
+0xa5, 0xbd, 0x8d, 0x19, 0x80, 0xd9, 0x80, 0xf2, 
+0xe4, 0x66, 0xea, 0xd1, 0x76, 0x33, 0x2e, 0x0e, 
+0x52, 0xd1, 0x40, 0xd7, 0x98, 0x11, 0x02, 0x6b, 
+0xaa, 0x94, 0x13, 0x70, 0x6a, 0xb5, 0x85, 0x7c, 
+0xe0, 0x69, 0xc0, 0x00, 0xa6, 0xb4, 0x76, 0xe9, 
+0x7b, 0xe0, 0x7b, 0xbb, 0x36, 0xf1, 0xa5, 0x82, 
+0x82, 0x6a, 0x6b, 0xe1, 0xc9, 0x16, 0x5a, 0x0b, 
+0x3f, 0x09, 0xa0, 0xe0, 0x82, 0xae, 0x57, 0x34, 
+0xa0, 0xa0, 0xd6, 0x5a, 0x38, 0xd4, 0xa3, 0x98, 
+0x82, 0x8e, 0x14, 0xe8, 0x35, 0xff, 0x00, 0x01, 
+0xfe, 0x55, 0x01, 0xf8, 0xb7, 0x52, 0x80, 0x7f, 
+0xb5, 0x08, 0xfc, 0x63, 0x01, 0xe0, 0x94, 0xa9, 
+0x69, 0xfe, 0xb2, 0x00, 0x78, 0xe7, 0xfd, 0xeb, 
+0x56, 0xdd, 0xfb, 0x67, 0x60, 0x47, 0xcf, 0xcd, 
+0x3f, 0x13, 0xcd, 0x9d, 0x9f, 0xf2, 0xb9, 0xe9, 
+0xe7, 0x9a, 0x18, 0xe7, 0x73, 0x8c, 0x2f, 0xef, 
+0xfe, 0x3f, 0x00, 0x03, 0x20, 0x07, 0xff, 0xb0, 
+0xa5, 0x2f, 0xc7, 0xfe, 0x32, 0x2b, 0xc0, 0x27, 
+0x80, 0xb2, 0x53, 0x60, 0x06, 0xa0, 0x3f, 0xde, 
+0xf9, 0x4b, 0xcd, 0x1f, 0xbf, 0xd7, 0xbc, 0x13, 
+0x19, 0x46, 0xd1, 0xbe, 0x0e, 0x12, 0xf4, 0x17, 
+0x4f, 0xce, 0xe7, 0x36, 0xa8, 0x9b, 0xff, 0x23, 
+0xd4, 0xd0, 0xfa, 0xde, 0xfc, 0xab, 0x5d, 0x00, 
+0xc8, 0x35, 0xa4, 0x51, 0xf0, 0x0b, 0x76, 0xed, 
+0x13, 0x6e, 0x9a, 0xf2, 0x10, 0x70, 0xef, 0x9e, 
+0x47, 0xa3, 0x9b, 0xcd, 0x53, 0x09, 0x01, 0xeb, 
+0x71, 0x02, 0xa3, 0x21, 0x02, 0x16, 0xc2, 0x61, 
+0x4f, 0x2d, 0x00, 0x64, 0xbb, 0x61, 0xc3, 0x2b, 
+0x82, 0xc5, 0xbd, 0x0e, 0xea, 0x9d, 0x11, 0xca, 
+0x62, 0xc0, 0xb7, 0x43, 0xba, 0x91, 0x00, 0x98, 
+0xdf, 0xb3, 0x48, 0x69, 0xa4, 0xf1, 0xda, 0x04, 
+0x42, 0x76, 0x09, 0xf4, 0xc0, 0x75, 0x80, 0xad, 
+0x91, 0xcb, 0x60, 0xd5, 0x70, 0x02, 0x8e, 0x26, 
+0x38, 0x01, 0xbe, 0x18, 0xf0, 0xc3, 0x9a, 0x03, 
+0x6c, 0x80, 0x76, 0xda, 0xb2, 0xef, 0xbb, 0xc9, 
+0xad, 0x56, 0xd7, 0x7b, 0x50, 0x70, 0xa6, 0x95, 
+0x41, 0xc1, 0xf9, 0xbd, 0x2e, 0x51, 0xf8, 0x08, 
+0x2d, 0x28, 0x88, 0xf3, 0xc1, 0x90, 0x99, 0x87, 
+0x28, 0xf0, 0xed, 0x3d, 0x15, 0x6a, 0xfe, 0x3e, 
+0x02, 0xfc, 0xab, 0x02, 0xf0, 0x6f, 0xf1, 0x13, 
+0x0d, 0xfe, 0xbd, 0x5a, 0xc5, 0xe0, 0x1f, 0xc7, 
+0xfd, 0xca, 0xcd, 0x9f, 0x6b, 0x76, 0xd6, 0x46, 
+0xab, 0x3e, 0xfd, 0x1f, 0x00, 0xdc, 0x27, 0xef, 
+0xfd, 0x3f, 0xc3, 0x93, 0xbf, 0xe1, 0x38, 0xff, 
+0xb1, 0x6a, 0x9c, 0xcf, 0xfb, 0xfc, 0xeb, 0xa0, 
+0xff, 0xf9, 0x0a, 0xe0, 0x1f, 0x10, 0x06, 0xa7, 
+0xe5, 0xe0, 0x9f, 0xd3, 0xa7, 0xe9, 0x4b, 0x5c, 
+0x0b, 0xfc, 0x17, 0x26, 0x40, 0x97, 0xb5, 0x4e, 
+0x81, 0xe9, 0x30, 0x11, 0xe2, 0xa7, 0x7f, 0x6e, 
+0xfe, 0x31, 0x05, 0xe9, 0x26, 0xcf, 0xfd, 0xf8, 
+0x35, 0xed, 0x78, 0x35, 0x01, 0x7b, 0xff, 0x34, 
+0xb5, 0x00, 0x58, 0xfc, 0x24, 0x34, 0xff, 0x1a, 
+0x13, 0x00, 0x72, 0x0d, 0x6b, 0x1c, 0x3e, 0x12, 
+0x97, 0x01, 0x9f, 0x06, 0xf7, 0x3f, 0x6c, 0x20, 
+0x04, 0x4a, 0xc8, 0xa5, 0x6b, 0x06, 0x8d, 0x68, 
+0x32, 0xdb, 0x84, 0x10, 0xa8, 0x3c, 0x27, 0xe0, 
+0xd7, 0x31, 0x0d, 0xb1, 0xc2, 0x87, 0x60, 0xb9, 
+0xbb, 0x51, 0xcf, 0x4f, 0x20, 0x46, 0xc5, 0x0d, 
+0xf0, 0xda, 0x80, 0xbd, 0x04, 0xe4, 0x33, 0x42, 
+0x59, 0x08, 0xd8, 0x00, 0xb0, 0x4b, 0x36, 0x00, 
+0x02, 0x17, 0xc3, 0x44, 0x48, 0xce, 0x1d, 0x88, 
+0x57, 0x45, 0x10, 0x73, 0x5c, 0xb1, 0x6c, 0x37, 
+0x6c, 0x5b, 0x0e, 0xbb, 0xe1, 0xca, 0x73, 0x02, 
+0xfa, 0x53, 0x01, 0x97, 0xb6, 0x7c, 0x31, 0x50, 
+0xa8, 0x7c, 0x7e, 0xbd, 0xba, 0xef, 0xf8, 0x7e, 
+0x52, 0x8b, 0xa8, 0x5a, 0x08, 0x0a, 0xee, 0x30, 
+0x03, 0x0a, 0x16, 0xd4, 0x38, 0x28, 0xc8, 0xd6, 
+0xc2, 0x61, 0xc3, 0xb4, 0xaf, 0xd1, 0xd7, 0x4b, 
+0x28, 0x78, 0xd9, 0x01, 0xf2, 0xbf, 0xbc, 0xab, 
+0x5e, 0x83, 0x7f, 0x0e, 0x35, 0x0e, 0xfe, 0x2d, 
+0x17, 0xe0, 0x9f, 0x95, 0xc1, 0xbf, 0x17, 0xcb, 
+0x01, 0xfe, 0x71, 0xb9, 0xa6, 0x47, 0xe9, 0x09, 
+0x00, 0x6b, 0xc6, 0xfd, 0xde, 0xc0, 0xf8, 0x5e, 
+0xde, 0xfb, 0x33, 0x03, 0xc0, 0xe3, 0xfc, 0xa2, 
+0x52, 0xc6, 0xf9, 0x5b, 0x39, 0xf8, 0xe7, 0xdc, 
+0x39, 0xfa, 0x06, 0xf7, 0xff, 0x5f, 0xc1, 0x07, 
+0xe0, 0x1d, 0x90, 0xfe, 0x79, 0x68, 0xf2, 0x27, 
+0x10, 0xfc, 0xf3, 0xd9, 0x27, 0x9f, 0xd0, 0x3d, 
+0xd8, 0xff, 0xde, 0x84, 0x0d, 0x30, 0x3b, 0x05, 
+0x66, 0x63, 0x92, 0x20, 0x8f, 0xfe, 0x37, 0x6e, 
+0x4d, 0x27, 0xcf, 0x1b, 0x9a, 0x73, 0x3f, 0x27, 
+0x83, 0x73, 0x3f, 0xbb, 0x9b, 0x71, 0xd8, 0xfb, 
+0x6f, 0x51, 0x37, 0xff, 0xa3, 0xa8, 0x5f, 0x0b, 
+0x01, 0x50, 0x8d, 0x35, 0xb2, 0x69, 0xa4, 0x13, 
+0x3c, 0x04, 0xbe, 0x32, 0xe5, 0x21, 0x80, 0xb7, 
+0x13, 0x84, 0x02, 0xbd, 0xa5, 0x12, 0x02, 0xd6, 
+0xe2, 0x04, 0x0c, 0xfd, 0x04, 0x9c, 0xdb, 0xac, 
+0xd7, 0x6b, 0xec, 0x0b, 0x7a, 0xee, 0xd7, 0x8b, 
+0x25, 0x96, 0x85, 0xc0, 0xea, 0x17, 0xce, 0x18, 
+0xc4, 0x10, 0x97, 0x28, 0x63, 0x75, 0xc3, 0x88, 
+0xe2, 0x85, 0x3d, 0x41, 0xe8, 0x77, 0xd9, 0x41, 
+0x73, 0x91, 0x54, 0xc8, 0xab, 0x01, 0x4b, 0x38, 
+0x81, 0x29, 0x55, 0xc4, 0x09, 0xb8, 0xb5, 0xc7, 
+0xc5, 0x40, 0x1f, 0xe5, 0x62, 0xe0, 0xa1, 0x5b, 
+0x97, 0xec, 0x1f, 0x27, 0x34, 0x5b, 0xae, 0x0f, 
+0x0a, 0x36, 0xa9, 0x5a, 0x50, 0xd0, 0xa5, 0xc2, 
+0xa0, 0xe0, 0x5e, 0x33, 0xa0, 0xe0, 0x21, 0x33, 
+0xa0, 0xe0, 0x09, 0xeb, 0x83, 0x82, 0xaf, 0x9d, 
+0xa3, 0xb0, 0xb7, 0xb4, 0xaf, 0xd1, 0x21, 0x47, 
+0x29, 0x68, 0x7d, 0x21, 0xf9, 0x5d, 0x17, 0xe0, 
+0x9f, 0x00, 0xff, 0xea, 0x1f, 0xf8, 0x37, 0xec, 
+0x44, 0x00, 0x9a, 0xfe, 0x2a, 0xa5, 0xf9, 0x2f, 
+0xce, 0xdb, 0x62, 0xb5, 0xe6, 0xff, 0x1f, 0x34, 
+0x71, 0x79, 0xef, 0x7f, 0x10, 0x26, 0x3d, 0x7f, 
+0xd5, 0x26, 0xf4, 0xe9, 0x8d, 0xf3, 0xe1, 0xec, 
+0xa7, 0x0e, 0xfe, 0xf9, 0xe7, 0xe7, 0x9f, 0x4b, 
+0x0e, 0x80, 0xec, 0x04, 0xa8, 0x0e, 0xfe, 0xe1, 
+0x7f, 0xf8, 0x47, 0xfe, 0xf7, 0x3c, 0x55, 0xf3, 
+0xe7, 0xbd, 0x7f, 0xe0, 0x25, 0xd3, 0xe7, 0x7e, 
+0xfc, 0xfa, 0xf5, 0x38, 0xaa, 0xb7, 0xf7, 0xff, 
+0x87, 0xff, 0xae, 0xb4, 0x26, 0x4f, 0x4a, 0xf3, 
+0xaf, 0x35, 0x02, 0x80, 0x6b, 0xc0, 0xf3, 0xde, 
+0xbf, 0x19, 0xdd, 0x7c, 0x7e, 0x84, 0x73, 0xd7, 
+0xb4, 0xff, 0x19, 0x7a, 0x08, 0x04, 0xc3, 0x43, 
+0xc0, 0xbe, 0xc3, 0x06, 0x1a, 0xd2, 0x28, 0x44, 
+0x2b, 0x04, 0xac, 0xc5, 0x09, 0x18, 0x9f, 0x11, 
+0x86, 0x76, 0xc9, 0xd3, 0x07, 0xfc, 0xba, 0x6e, 
+0x57, 0x38, 0x01, 0x59, 0x08, 0x24, 0xbc, 0xf4, 
+0xae, 0x81, 0x5d, 0xf0, 0x29, 0xe5, 0x49, 0x7a, 
+0x55, 0xdf, 0x13, 0x66, 0x2f, 0x0f, 0x16, 0x61, 
+0xb5, 0x60, 0xdb, 0xcc, 0x12, 0x60, 0xb0, 0x8a, 
+0x38, 0x01, 0xac, 0x07, 0x3c, 0x3a, 0xe2, 0x62, 
+0xa0, 0xdf, 0x61, 0x59, 0x64, 0xdd, 0x9f, 0xd1, 
+0x71, 0xcb, 0x2f, 0xf2, 0xc5, 0x80, 0xa5, 0xa0, 
+0xe0, 0x94, 0x3a, 0x03, 0x0a, 0x1e, 0x33, 0x03, 
+0x0a, 0x9a, 0xb1, 0x16, 0x2e, 0x63, 0x2d, 0xc0, 
+0x93, 0x82, 0x59, 0x6f, 0x9d, 0xa1, 0xb0, 0x37, 
+0x34, 0xaf, 0xd5, 0xd0, 0x71, 0x47, 0x28, 0x30, 
+0x7b, 0xaf, 0x00, 0xff, 0xaa, 0x14, 0xfc, 0x5b, 
+0x2a, 0xc0, 0xbf, 0x6a, 0x04, 0xff, 0x34, 0x71, 
+0xbf, 0xd1, 0x8a, 0x00, 0xf0, 0xc2, 0x09, 0xe0, 
+0x67, 0x5f, 0x5a, 0x27, 0xee, 0x97, 0xcf, 0xf9, 
+0x78, 0xdf, 0x2f, 0xed, 0xfd, 0xf1, 0x64, 0xff, 
+0x09, 0x5c, 0xfc, 0x4c, 0x8e, 0xf3, 0xd9, 0xd2, 
+0x17, 0xe3, 0xfc, 0xa3, 0x72, 0xf0, 0xcf, 0x83, 
+0x07, 0x74, 0x17, 0x19, 0x00, 0x9c, 0x05, 0xb0, 
+0x0f, 0x6e, 0x7f, 0x37, 0xe5, 0xe0, 0x1f, 0x4c, 
+0x00, 0x78, 0x12, 0xc0, 0x67, 0x80, 0xf2, 0xde, 
+0x9f, 0x73, 0x04, 0xe6, 0x9e, 0x48, 0x37, 0x6a, 
+0xfe, 0x2c, 0x6c, 0xf9, 0x35, 0xec, 0xfc, 0x76, 
+0xa2, 0xba, 0xf9, 0x3f, 0x44, 0xf3, 0x1f, 0xf8, 
+0x24, 0x35, 0xff, 0x5a, 0x25, 0x00, 0x54, 0x42, 
+0xe0, 0x0f, 0xe3, 0x5a, 0x2e, 0x89, 0x71, 0xeb, 
+0x96, 0x7d, 0xdf, 0xd8, 0x43, 0xe0, 0x20, 0x4d, 
+0x6d, 0xb7, 0x8e, 0x06, 0x37, 0x0c, 0x32, 0x10, 
+0x02, 0xd6, 0xe2, 0x04, 0x34, 0x53, 0x81, 0x85, 
+0x3d, 0xf7, 0xeb, 0x35, 0xed, 0xe5, 0x60, 0x05, 
+0x9c, 0xdb, 0x24, 0xd0, 0x84, 0xa6, 0x4b, 0x60, 
+0x09, 0x6c, 0x6c, 0x36, 0xb4, 0x0e, 0xae, 0x83, 
+0x32, 0x27, 0x60, 0x0a, 0x12, 0x34, 0xac, 0xb9, 
+0x88, 0xfc, 0xd5, 0x8c, 0xd9, 0xa3, 0x4a, 0x59, 
+0x0f, 0xac, 0xae, 0xe0, 0x7a, 0xc0, 0x72, 0x4e, 
+0x60, 0x7a, 0x0b, 0x5c, 0x0c, 0x74, 0xd6, 0x5d, 
+0x0c, 0x40, 0x10, 0xfc, 0xe8, 0xd0, 0x6e, 0xc3, 
+0xe3, 0x1a, 0x05, 0x05, 0x5b, 0x59, 0x1f, 0x14, 
+0x0c, 0xb5, 0x10, 0x14, 0x8c, 0xac, 0x28, 0x28, 
+0x88, 0x8b, 0x81, 0x88, 0xe1, 0xa7, 0xa4, 0xd8, 
+0x61, 0xe9, 0xf2, 0xc2, 0xe1, 0x30, 0xf9, 0x17, 
+0xec, 0x16, 0xe0, 0x9f, 0xc5, 0x02, 0x40, 0x80, 
+0x7f, 0xb5, 0x15, 0xfc, 0x1b, 0x7d, 0x38, 0x4c, 
+0xdb, 0xfc, 0x35, 0x02, 0xc0, 0x9a, 0x71, 0xbf, 
+0xfc, 0xc4, 0xcf, 0xcd, 0x3f, 0x29, 0x29, 0x89, 
+0x3e, 0x04, 0xc8, 0xf7, 0x0e, 0x2c, 0x7d, 0xd5, 
+0xe3, 0xfc, 0x9f, 0xe5, 0x71, 0x3e, 0x9a, 0x3c, 
+0x37, 0x7b, 0x6e, 0xfa, 0xdc, 0xfc, 0x59, 0x04, 
+0xb0, 0x18, 0x60, 0x51, 0xc0, 0xe2, 0x80, 0x45, 
+0x02, 0x8b, 0x05, 0x16, 0x0d, 0x59, 0x68, 0xfa, 
+0xea, 0xbd, 0x7f, 0x74, 0x41, 0xba, 0x71, 0xb4, 
+0xaf, 0x96, 0xf8, 0x77, 0xb8, 0x1a, 0x47, 0x7e, 
+0xbb, 0xd5, 0x7b, 0xff, 0xb4, 0xb9, 0x4f, 0x5a, 
+0xf3, 0xaf, 0x95, 0x02, 0x40, 0x25, 0x04, 0x9e, 
+0x9d, 0xd0, 0x6a, 0x45, 0x86, 0x69, 0x0f, 0x81, 
+0x42, 0xc2, 0x59, 0xa1, 0x24, 0x02, 0xe4, 0xb2, 
+0x26, 0x27, 0xc0, 0x27, 0x84, 0x2b, 0xfb, 0x1e, 
+0xb3, 0xc8, 0x4c, 0x48, 0x13, 0x40, 0x74, 0x49, 
+0x59, 0x0f, 0x2c, 0x00, 0x10, 0x58, 0xd6, 0xc7, 
+0x6f, 0x80, 0x51, 0x11, 0x1b, 0x0c, 0xe9, 0xf6, 
+0xed, 0x51, 0x35, 0xc6, 0x09, 0x70, 0x53, 0xf6, 
+0xe9, 0xc6, 0x17, 0x03, 0xb2, 0xb5, 0x70, 0xd1, 
+0xf7, 0x53, 0x5b, 0xc7, 0x95, 0x0d, 0x0a, 0x1a, 
+0x09, 0x81, 0x75, 0x66, 0xac, 0x85, 0xab, 0x0f, 
+0x14, 0x0c, 0xac, 0x29, 0x50, 0xb0, 0xfb, 0x15, 
+0x0a, 0x1f, 0x79, 0x5c, 0xb9, 0x18, 0x08, 0xf6, 
+0x3d, 0x48, 0xbe, 0xc7, 0x77, 0xd6, 0x63, 0xf0, 
+0x6f, 0x9d, 0x00, 0xff, 0xea, 0x31, 0xf8, 0xc7, 
+0x71, 0xbf, 0x1e, 0xca, 0xd3, 0xff, 0x2a, 0xc4, 
+0xfd, 0x46, 0x59, 0x2d, 0xee, 0xf7, 0x16, 0x9a, 
+0xb9, 0xbc, 0xf7, 0xbf, 0x88, 0x51, 0x3f, 0x8f, 
+0xf3, 0xd9, 0xd2, 0xd7, 0xd4, 0x38, 0x9f, 0xc7, 
+0xfc, 0x4a, 0xf0, 0x0f, 0xc6, 0xff, 0xbc, 0x06, 
+0xe0, 0x75, 0x00, 0xaf, 0x05, 0xbe, 0x90, 0x83, 
+0x7f, 0xd8, 0x29, 0x10, 0x6b, 0x83, 0x1c, 0x88, 
+0x02, 0x79, 0xf4, 0xbf, 0x01, 0x7b, 0x7f, 0x8f, 
+0x1b, 0xc6, 0xd1, 0xbe, 0xd2, 0x6b, 0xf8, 0xd6, 
+0x3a, 0xf2, 0x29, 0x54, 0xef, 0xfd, 0xd3, 0x0e, 
+0xa2, 0x7e, 0x25, 0x04, 0x40, 0xed, 0x14, 0x02, 
+0xcd, 0xd0, 0xec, 0x8b, 0x4c, 0x79, 0x08, 0xf8, 
+0xf6, 0xde, 0x43, 0x13, 0x5a, 0x2d, 0x83, 0x00, 
+0x08, 0xd0, 0x96, 0x89, 0xf5, 0x40, 0x05, 0x39, 
+0x81, 0x51, 0x8d, 0xe7, 0x50, 0x58, 0xd7, 0x6d, 
+0x12, 0xc8, 0x57, 0x56, 0x43, 0x67, 0xbb, 0x60, 
+0x79, 0x3d, 0x10, 0xd9, 0x7d, 0x8f, 0xd1, 0xfb, 
+0xd9, 0x8a, 0x98, 0x05, 0x45, 0x54, 0xbf, 0x93, 
+0xf0, 0x22, 0xb8, 0x28, 0xfd, 0x9e, 0xd3, 0x5b, 
+0xc5, 0x6b, 0xa1, 0xbb, 0x95, 0x68, 0x9c, 0xab, 
+0xa5, 0x68, 0xe2, 0xc9, 0x68, 0xfc, 0x96, 0xfa, 
+0x09, 0x94, 0xb6, 0x1e, 0xa8, 0x28, 0x27, 0xe0, 
+0xd4, 0x3a, 0x95, 0xfc, 0x7a, 0xec, 0x55, 0x59, 
+0x0b, 0xef, 0xfe, 0xde, 0xb6, 0x65, 0x8c, 0x15, 
+0x40, 0xc1, 0xf5, 0x66, 0x40, 0xc1, 0x94, 0x52, 
+0x41, 0x41, 0x8d, 0x10, 0xa8, 0x7b, 0xa0, 0xe0, 
+0xbc, 0x3e, 0xef, 0x52, 0xd8, 0x08, 0xed, 0x6b, 
+0x14, 0x53, 0x81, 0xa0, 0x39, 0x45, 0xe4, 0x73, 
+0x61, 0x7b, 0xb9, 0x46, 0xff, 0x1e, 0xf5, 0x12, 
+0xfc, 0x8b, 0x16, 0xe0, 0x5f, 0x1d, 0x02, 0xff, 
+0xc6, 0x17, 0xce, 0x56, 0x3d, 0xfd, 0xaf, 0xa2, 
+0x0d, 0x56, 0x8a, 0xfb, 0x55, 0xef, 0xfd, 0x0b, 
+0xd1, 0xe0, 0x95, 0x71, 0x3e, 0x5b, 0xfa, 0xe2, 
+0x89, 0xff, 0x9e, 0x6a, 0x9c, 0xcf, 0x13, 0x01, 
+0x06, 0xfd, 0x18, 0xf8, 0x63, 0xf0, 0x8f, 0x01, 
+0x40, 0x06, 0x01, 0x19, 0x08, 0x64, 0x30, 0x90, 
+0x01, 0x41, 0x06, 0x05, 0x19, 0x18, 0xdc, 0x06, 
+0x01, 0xa0, 0xde, 0xfb, 0x07, 0x5c, 0x32, 0x8e, 
+0xf6, 0x65, 0x21, 0xcb, 0xaf, 0x5b, 0x8f, 0x23, 
+0xc9, 0x72, 0xe3, 0xe7, 0xfa, 0x0c, 0xd5, 0xf0, 
+0x49, 0x6c, 0xfe, 0x75, 0x42, 0x00, 0x28, 0x66, 
+0x42, 0x0d, 0x7c, 0x3b, 0x4f, 0x69, 0xb7, 0xe6, 
+0xbc, 0x5f, 0x9f, 0x02, 0xa3, 0xd3, 0x41, 0xaf, 
+0x9e, 0x3b, 0x68, 0x4c, 0x8b, 0x85, 0xa5, 0x08, 
+0x81, 0xa0, 0x4a, 0x71, 0x02, 0x33, 0x5a, 0xaf, 
+0x2d, 0x35, 0x4b, 0x40, 0x5d, 0xe3, 0xf1, 0xf4, 
+0xcf, 0x22, 0x20, 0xac, 0xcb, 0x36, 0x63, 0x57, 
+0xc1, 0x16, 0x31, 0x7a, 0x7e, 0x02, 0x13, 0x9b, 
+0x6a, 0x8c, 0x85, 0x5c, 0x5a, 0x6f, 0x90, 0xe2, 
+0x8b, 0xe5, 0x8f, 0xdb, 0x88, 0x44, 0x43, 0xbe, 
+0x28, 0xe0, 0x6c, 0x01, 0xdb, 0xa6, 0x35, 0xc3, 
+0x09, 0xb8, 0x20, 0x63, 0x20, 0xa0, 0x57, 0x91, 
+0xfc, 0xb9, 0x7d, 0xec, 0xd1, 0x6d, 0xeb, 0x8f, 
+0x93, 0x9a, 0xaf, 0xac, 0x01, 0x50, 0x30, 0xb3, 
+0x74, 0x50, 0xd0, 0x84, 0xb5, 0xb0, 0x9f, 0x45, 
+0xd6, 0xc2, 0xd5, 0x07, 0x0a, 0xb2, 0xb5, 0x70, 
+0xd8, 0x50, 0x2d, 0x1f, 0x30, 0xa0, 0x84, 0x02, 
+0xa2, 0xf7, 0x91, 0xd7, 0xb5, 0xbc, 0x2a, 0x01, 
+0xff, 0x5c, 0x6a, 0x18, 0xfc, 0xb3, 0xe6, 0xd3, 
+0xbf, 0x00, 0xff, 0x6a, 0x1e, 0xfc, 0x7b, 0xe1, 
+0xb6, 0x3d, 0x79, 0x66, 0xe9, 0x9e, 0xfe, 0x7d, 
+0xb2, 0x62, 0xe8, 0x87, 0x9f, 0xfe, 0x67, 0xd5, 
+0xbd, 0x3f, 0xdf, 0xfd, 0x73, 0x80, 0x4f, 0x89, 
+0x3c, 0xce, 0xc7, 0xe9, 0x9e, 0x7a, 0x9c, 0xcf, 
+0x2c, 0x00, 0x33, 0x01, 0x7c, 0xea, 0xc7, 0x27, 
+0x7f, 0x7c, 0xfa, 0xc7, 0x27, 0x80, 0x7c, 0x0a, 
+0xc8, 0x27, 0x81, 0x7c, 0x1a, 0x28, 0x3b, 0x05, 
+0x6e, 0x43, 0x4e, 0xc0, 0x66, 0x4c, 0x05, 0xe4, 
+0xbd, 0xff, 0x9c, 0x93, 0xfa, 0xd1, 0xbe, 0xf2, 
+0xb9, 0x1f, 0xbf, 0x6e, 0x9d, 0xce, 0x26, 0xaa, 
+0x9b, 0xff, 0x2f, 0xa8, 0xd7, 0x9f, 0xd4, 0xe6, 
+0x5f, 0xa7, 0x04, 0x80, 0x5c, 0x83, 0x1b, 0x05, 
+0xbd, 0x3c, 0xad, 0x43, 0xfc, 0x9d, 0xc0, 0x7e, 
+0x07, 0x4c, 0x78, 0x08, 0xe4, 0xd0, 0xc8, 0x66, 
+0x73, 0xca, 0x10, 0x02, 0xc1, 0xe5, 0xe6, 0x04, 
+0x46, 0x21, 0x68, 0xc8, 0xad, 0x6d, 0x22, 0x3c, 
+0x04, 0x8a, 0x70, 0xf3, 0x5f, 0x80, 0xec, 0x80, 
+0x9d, 0xc6, 0xce, 0x81, 0xcd, 0x57, 0x48, 0x7e, 
+0x02, 0x01, 0x9d, 0xb2, 0x8c, 0xde, 0xa7, 0x8b, 
+0x26, 0xd6, 0xf9, 0x09, 0xf0, 0x04, 0xc0, 0x5c, 
+0x66, 0x41, 0x74, 0xbf, 0x53, 0xe4, 0xd0, 0x32, 
+0xbe, 0xc6, 0x38, 0x01, 0xbe, 0x18, 0x08, 0xea, 
+0x73, 0x50, 0x0b, 0x0a, 0x96, 0x3c, 0x70, 0xe9, 
+0x9c, 0x71, 0x7f, 0x02, 0xfe, 0x3f, 0xca, 0x0d, 
+0x0a, 0x36, 0x7b, 0x92, 0x41, 0xc1, 0x6b, 0x34, 
+0xfb, 0xcd, 0xb3, 0x52, 0xb6, 0x80, 0xf4, 0x79, 
+0x1c, 0x7e, 0x84, 0xfc, 0x37, 0xed, 0x21, 0xaf, 
+0x5b, 0x35, 0x0d, 0xfe, 0x6d, 0xac, 0x51, 0xf0, 
+0xcf, 0x46, 0x80, 0x7f, 0xb5, 0x1a, 0xfc, 0xe3, 
+0xb8, 0x5f, 0xf5, 0xd3, 0x7f, 0xe6, 0x91, 0x22, 
+0xab, 0x3c, 0xfd, 0xb3, 0xc3, 0x9f, 0xbc, 0xf7, 
+0xbf, 0x89, 0x73, 0x3f, 0xbd, 0x71, 0x3e, 0xcc, 
+0x7b, 0xd4, 0xe3, 0x7c, 0xbe, 0x06, 0x60, 0x93, 
+0x9f, 0x47, 0x08, 0xfe, 0xf9, 0x40, 0x0e, 0xfe, 
+0x81, 0x09, 0x10, 0x9b, 0x01, 0xb1, 0x29, 0xd0, 
+0xe7, 0xf0, 0x0b, 0x60, 0x93, 0x20, 0x86, 0xfe, 
+0x38, 0x3c, 0x88, 0x05, 0x00, 0xef, 0xfd, 0xa3, 
+0x0a, 0xe5, 0x27, 0xff, 0xcd, 0x7a, 0xb7, 0xfe, 
+0xfc, 0xba, 0x75, 0xb8, 0x22, 0xef, 0xfd, 0x95, 
+0x9a, 0xf9, 0x24, 0x37, 0xff, 0x3a, 0x29, 0x00, 
+0xe4, 0x1a, 0xda, 0x24, 0x6c, 0x8c, 0x43, 0xc7, 
+0x0d, 0x7f, 0x37, 0xe5, 0x21, 0xe0, 0xdc, 0x25, 
+0x8d, 0x86, 0x37, 0x89, 0xa0, 0x41, 0x0d, 0xfc, 
+0x15, 0x21, 0x50, 0xda, 0x19, 0x61, 0x45, 0x39, 
+0x81, 0x18, 0x83, 0xac, 0x81, 0x69, 0x18, 0x97, 
+0xf3, 0x29, 0xa1, 0xb7, 0x81, 0xdb, 0x20, 0xd7, 
+0xe4, 0xe6, 0x51, 0x46, 0x7e, 0x02, 0xa6, 0x26, 
+0x05, 0xa6, 0x58, 0x01, 0xdf, 0x0e, 0x99, 0x56, 
+0xe0, 0x04, 0xe2, 0x2a, 0xcc, 0x09, 0x68, 0x2e, 
+0x06, 0x8a, 0xb5, 0xd6, 0xc2, 0x47, 0x7e, 0x9e, 
+0xd1, 0x61, 0xd3, 0xa3, 0xf1, 0x75, 0x04, 0x14, 
+0xf4, 0xb3, 0x0a, 0x28, 0x78, 0xc6, 0x0c, 0x28, 
+0x78, 0xd1, 0x72, 0x50, 0x70, 0xe8, 0x29, 0xc9, 
+0x3b, 0x40, 0xfa, 0x3c, 0x4e, 0x2a, 0x26, 0xdf, 
+0xed, 0x3b, 0x05, 0xf8, 0x67, 0x21, 0xf8, 0x37, 
+0xbe, 0x86, 0xc1, 0xbf, 0xa1, 0x4f, 0x10, 0xf8, 
+0xc7, 0x71, 0xbf, 0x9e, 0xd9, 0xba, 0xa7, 0x7f, 
+0xbf, 0xcc, 0xd5, 0x56, 0x89, 0xfb, 0x55, 0xef, 
+0xfd, 0xcf, 0xc2, 0xe5, 0xcf, 0xdc, 0x38, 0x9f, 
+0x6d, 0x7d, 0xd9, 0x0f, 0x80, 0x6d, 0x7e, 0xd9, 
+0xee, 0x97, 0x6d, 0x7f, 0xd9, 0xfe, 0x97, 0x6d, 
+0x80, 0xd9, 0x0e, 0x98, 0x6d, 0x81, 0x65, 0xa7, 
+0xc0, 0x5c, 0xd5, 0xe8, 0x9f, 0xf7, 0xfe, 0xee, 
+0x37, 0xd5, 0xd1, 0xbe, 0xba, 0x73, 0xbf, 0xa9, 
+0x37, 0xd7, 0x90, 0x4f, 0xc1, 0x16, 0x75, 0xf3, 
+0x2f, 0x78, 0xd2, 0x9b, 0x7f, 0x9d, 0x16, 0x00, 
+0x72, 0x8d, 0x68, 0x3a, 0xcb, 0x6d, 0x7a, 0xe7, 
+0xcd, 0x5f, 0x9b, 0xf2, 0x10, 0x98, 0xde, 0x69, 
+0x13, 0x0d, 0x6d, 0x1c, 0xa6, 0x12, 0x02, 0x01, 
+0x16, 0x9c, 0x11, 0x5a, 0xc6, 0x09, 0xd8, 0x36, 
+0x5f, 0x06, 0xfb, 0xe0, 0xd3, 0x8a, 0xe1, 0x8f, 
+0x4d, 0xb3, 0x65, 0xd2, 0x19, 0x21, 0x4f, 0x0a, 
+0x0c, 0x1b, 0xb9, 0x5d, 0xcb, 0xd5, 0x46, 0x7e, 
+0x02, 0x0b, 0x0c, 0x2e, 0x0d, 0x64, 0xf3, 0x21, 
+0xf6, 0x11, 0x30, 0x4c, 0x1e, 0x9c, 0x2b, 0x25, 
+0x13, 0xae, 0xd2, 0xdb, 0xbd, 0x57, 0x86, 0x13, 
+0xb0, 0x6c, 0x3d, 0xa0, 0x13, 0x02, 0x33, 0x5a, 
+0x6e, 0xc2, 0xc5, 0xc0, 0x0e, 0x0a, 0xed, 0x7f, 
+0x54, 0xbe, 0xc6, 0xf8, 0xd1, 0x1e, 0xff, 0x9f, 
+0xa6, 0x41, 0xc1, 0x95, 0x56, 0x07, 0x05, 0x9d, 
+0x2d, 0x04, 0x05, 0xbd, 0x0c, 0x41, 0xc1, 0x36, 
+0xb5, 0x0b, 0x14, 0x94, 0xac, 0x85, 0x19, 0x14, 
+0x7c, 0x59, 0x0b, 0x0a, 0x3a, 0x1f, 0x24, 0xef, 
+0x83, 0x5b, 0x6b, 0x18, 0xfc, 0x4b, 0x14, 0xe0, 
+0x9f, 0x95, 0xc1, 0xbf, 0x41, 0x35, 0x0d, 0xfe, 
+0xdd, 0xad, 0x18, 0xf8, 0x27, 0xc5, 0xfd, 0x6e, 
+0x5b, 0xac, 0xf7, 0xf4, 0xbf, 0xeb, 0xec, 0xd1, 
+0x4a, 0x37, 0xff, 0xaf, 0xb0, 0xbf, 0x97, 0xf7, 
+0xfe, 0x7b, 0xb0, 0xef, 0x37, 0x1c, 0xe7, 0x3f, 
+0x52, 0x8d, 0xf3, 0xd9, 0x01, 0x90, 0x9d, 0x00, 
+0x39, 0xe0, 0x87, 0xa7, 0x02, 0xea, 0xe0, 0x1f, 
+0xb6, 0x08, 0xe6, 0x40, 0x20, 0x0e, 0x06, 0xe2, 
+0x8f, 0xdb, 0x89, 0xdf, 0x43, 0x26, 0xfe, 0xb7, 
+0x60, 0xef, 0xef, 0x7f, 0xc9, 0xf8, 0xd6, 0x9f, 
+0x5f, 0xbf, 0xfc, 0x3a, 0xf5, 0x28, 0xde, 0xa4, 
+0x6e, 0xfe, 0x7f, 0x43, 0x3d, 0x27, 0x04, 0x40, 
+0x3d, 0x10, 0x00, 0x5c, 0x6f, 0x3e, 0xef, 0xf9, 
+0xdb, 0xd1, 0xcd, 0xe7, 0x45, 0x3a, 0x77, 0x4d, 
+0xff, 0x31, 0xf4, 0x45, 0x43, 0x0f, 0x81, 0xc3, 
+0x64, 0xd7, 0x61, 0x3d, 0x4e, 0x07, 0x83, 0xcd, 
+0x08, 0x81, 0x8a, 0x71, 0x02, 0xa3, 0xb1, 0x1a, 
+0xf0, 0x6c, 0xbf, 0x09, 0x4f, 0xe9, 0x5b, 0x14, 
+0x3f, 0x01, 0xc7, 0x56, 0x6b, 0x8c, 0x1a, 0xfb, 
+0x0c, 0x50, 0xf5, 0xec, 0x25, 0xa0, 0xf6, 0x13, 
+0x60, 0x1b, 0x62, 0xf5, 0xc7, 0xb0, 0x88, 0x70, 
+0x68, 0xb9, 0x4e, 0x6a, 0xa8, 0x1c, 0x4e, 0x64, 
+0x18, 0x51, 0x1c, 0xd6, 0x65, 0xbb, 0xf2, 0x94, 
+0x6d, 0x7c, 0x3d, 0x50, 0x59, 0x4e, 0x20, 0xc1, 
+0x22, 0x4e, 0xc0, 0xa9, 0x15, 0x5f, 0x0c, 0xec, 
+0xa6, 0x30, 0xed, 0xc5, 0x80, 0x7f, 0xef, 0x82, 
+0x1f, 0xa6, 0xb4, 0x5a, 0x6b, 0x00, 0x0a, 0x2e, 
+0x2f, 0x15, 0x14, 0x54, 0x5b, 0x0b, 0x4f, 0xb3, 
+0xd0, 0x5a, 0xb8, 0x5e, 0x82, 0x82, 0x3d, 0x2f, 
+0x21, 0x69, 0x50, 0xfb, 0x3a, 0xc5, 0xd5, 0x40, 
+0x60, 0x70, 0x11, 0x79, 0x9d, 0xce, 0xad, 0x02, 
+0xf0, 0x2f, 0x59, 0x80, 0x7f, 0x02, 0xfc, 0xb3, 
+0x00, 0xfc, 0xd3, 0x08, 0x80, 0x57, 0x38, 0xee, 
+0x37, 0x4f, 0xf7, 0xf4, 0x1f, 0x98, 0xb1, 0x8e, 
+0x1e, 0x55, 0x32, 0xee, 0x97, 0xf7, 0xfe, 0x59, 
+0xd8, 0xf1, 0x73, 0xf3, 0xe7, 0x51, 0x3d, 0x83, 
+0x7e, 0x07, 0x0d, 0xc7, 0xf9, 0xd8, 0xf3, 0xcb, 
+0xe3, 0x7c, 0x29, 0xf8, 0x07, 0xd1, 0xbe, 0x1c, 
+0xf1, 0xcb, 0x51, 0xbf, 0x1c, 0xf9, 0x5b, 0x22, 
+0x07, 0xff, 0xe0, 0xf7, 0xe2, 0x48, 0x60, 0x8e, 
+0x06, 0xce, 0x47, 0xf3, 0x97, 0xc7, 0xfe, 0xbc, 
+0xf7, 0x8f, 0x3c, 0x95, 0x6a, 0x70, 0xee, 0xa7, 
+0x6b, 0xfe, 0x4e, 0x67, 0xd6, 0xab, 0x9b, 0xff, 
+0x7d, 0xd4, 0xcb, 0xa2, 0xf9, 0xd7, 0x23, 0x01, 
+0xa0, 0x12, 0x02, 0x7f, 0x1c, 0xdb, 0x72, 0xd1, 
+0x1a, 0xb7, 0xee, 0xd9, 0xbf, 0x18, 0xf2, 0x01, 
+0xcc, 0x0c, 0x4c, 0x69, 0xbb, 0x46, 0x6a, 0xfe, 
+0x65, 0x0b, 0x81, 0xe0, 0x0a, 0xfb, 0x09, 0xb0, 
+0x28, 0x48, 0x7c, 0xf9, 0xb2, 0x5e, 0xf3, 0xd6, 
+0x59, 0x0e, 0x6b, 0x72, 0x07, 0x58, 0x08, 0x84, 
+0x77, 0xdd, 0x61, 0x70, 0x4a, 0x78, 0x91, 0xec, 
+0x5b, 0xae, 0xd1, 0xe3, 0x04, 0xfc, 0x3b, 0x66, 
+0x4a, 0x17, 0x06, 0xf2, 0xc7, 0xf8, 0x74, 0x48, 
+0x53, 0x8d, 0xdb, 0x57, 0x5a, 0x70, 0x46, 0x58, 
+0x35, 0x9c, 0x80, 0xe6, 0x62, 0x40, 0x17, 0xe8, 
+0xe4, 0xdd, 0x63, 0xe7, 0x8f, 0x36, 0x2d, 0xa2, 
+0x8d, 0x40, 0xc1, 0x89, 0xe5, 0x02, 0x05, 0x13, 
+0xea, 0x1c, 0x28, 0x38, 0xbb, 0x92, 0xa0, 0xe0, 
+0xdc, 0xfe, 0xb0, 0x16, 0x1e, 0xa1, 0x99, 0xaa, 
+0x84, 0xbd, 0x5a, 0x42, 0xfe, 0x8b, 0xf6, 0x91, 
+0xc7, 0xc5, 0xac, 0x1a, 0x04, 0xff, 0x12, 0x04, 
+0xf8, 0xf7, 0x84, 0x82, 0x7f, 0x52, 0xdc, 0x6f, 
+0xce, 0x72, 0xf2, 0xdc, 0x16, 0xa5, 0x08, 0x80, 
+0x23, 0x57, 0x2a, 0x1f, 0xf7, 0x5b, 0x5c, 0x5c, 
+0xac, 0xec, 0xfd, 0xaf, 0xe0, 0xc9, 0xfd, 0x18, 
+0x46, 0xfe, 0xf2, 0x38, 0xff, 0x1b, 0x79, 0x9c, 
+0x0f, 0xd2, 0x9f, 0xc7, 0xf9, 0x9c, 0xfe, 0xc7, 
+0x29, 0x80, 0xf7, 0x7e, 0xfa, 0x89, 0x6e, 0x5c, 
+0xbb, 0x46, 0x7b, 0x71, 0x19, 0xc0, 0xbb, 0xff, 
+0xf7, 0xc1, 0x00, 0x3c, 0x04, 0x0b, 0xf0, 0x31, 
+0x9c, 0x02, 0x8f, 0x22, 0x37, 0x80, 0xa1, 0x41, 
+0xf5, 0xde, 0x7f, 0x55, 0xa1, 0x71, 0xb4, 0xaf, 
+0xdc, 0xfc, 0xed, 0x2f, 0xaf, 0x23, 0x7f, 0xd5, 
+0xde, 0xdf, 0x6f, 0x57, 0x5a, 0xb0, 0x68, 0xfc, 
+0xf5, 0x54, 0x00, 0x28, 0x42, 0xe0, 0x39, 0xcf, 
+0xe7, 0x70, 0x1e, 0x98, 0xed, 0xd9, 0x73, 0xdb, 
+0x23, 0x43, 0x21, 0xe0, 0xdf, 0xa7, 0x90, 0x26, 
+0xb5, 0x8e, 0xa2, 0x41, 0xcf, 0xfb, 0x49, 0x42, 
+0xc0, 0x12, 0x4e, 0x40, 0xbd, 0x1e, 0xb0, 0x84, 
+0x13, 0x98, 0xd5, 0x2d, 0xdf, 0x20, 0x59, 0x70, 
+0xb3, 0x62, 0x37, 0x2c, 0x0b, 0x01, 0x57, 0x13, 
+0xab, 0x02, 0x9e, 0x02, 0xcc, 0x87, 0x67, 0xff, 
+0x54, 0x5c, 0x0d, 0xc8, 0x42, 0xc0, 0xad, 0x6d, 
+0x92, 0xde, 0x8a, 0x60, 0x46, 0xab, 0x04, 0x6d, 
+0x73, 0x5d, 0xa1, 0x9c, 0x11, 0x1a, 0xae, 0x07, 
+0xaa, 0x8b, 0x13, 0xe0, 0x8c, 0x81, 0x80, 0xde, 
+0xf2, 0xc5, 0x40, 0xc9, 0x23, 0xf7, 0xae, 0x39, 
+0x3f, 0x4f, 0x44, 0x56, 0x42, 0xed, 0x07, 0x05, 
+0xf7, 0xe8, 0xf1, 0x01, 0x6a, 0x21, 0x10, 0x2c, 
+0x09, 0x81, 0xea, 0x05, 0x05, 0xd9, 0x5a, 0x98, 
+0x2d, 0x85, 0xa5, 0xd5, 0xd5, 0xa0, 0xa3, 0xe4, 
+0xbb, 0x6e, 0x17, 0xb9, 0x5d, 0xcf, 0x10, 0xe0, 
+0x9f, 0x00, 0xff, 0xaa, 0x0d, 0xfc, 0x7b, 0xe3, 
+0x92, 0x2b, 0x9a, 0x7e, 0x94, 0x22, 0x00, 0xc2, 
+0xac, 0x10, 0xf7, 0x7b, 0x1b, 0x8d, 0x5b, 0xde, 
+0xfb, 0x1f, 0x3f, 0x76, 0x4c, 0x82, 0xfd, 0x32, 
+0xd1, 0xb4, 0x0d, 0xc7, 0xf9, 0x92, 0xa5, 0xaf, 
+0x1c, 0xfc, 0x83, 0x89, 0x03, 0x5f, 0x07, 0x1c, 
+0x2a, 0x28, 0x90, 0xbc, 0x01, 0xde, 0x93, 0x83, 
+0x7f, 0xfe, 0xfe, 0x77, 0x3a, 0x8d, 0xdf, 0x23, 
+0x1b, 0x2e, 0x7f, 0x79, 0xaa, 0xbd, 0x7f, 0xe2, 
+0xb6, 0x34, 0x72, 0xbb, 0x69, 0x7c, 0xeb, 0xcf, 
+0xaf, 0xd5, 0x69, 0x37, 0x57, 0xeb, 0xed, 0xfd, 
+0xd1, 0xfc, 0x77, 0x89, 0xa6, 0xff, 0x04, 0x08, 
+0x00, 0x95, 0x10, 0x68, 0x61, 0xd3, 0x26, 0xea, 
+0xa0, 0x4f, 0x6f, 0x63, 0x0f, 0x01, 0x9f, 0xde, 
+0xbb, 0x69, 0x5c, 0xcb, 0xa5, 0x26, 0x84, 0x40, 
+0x40, 0x39, 0xec, 0x86, 0x4d, 0x73, 0x02, 0xec, 
+0x21, 0xc0, 0x17, 0x03, 0x72, 0xe3, 0x76, 0x69, 
+0xbb, 0xde, 0x20, 0x77, 0x60, 0x2e, 0x8d, 0x6f, 
+0xba, 0xb8, 0x54, 0x8f, 0x01, 0x7e, 0xea, 0x8f, 
+0xec, 0xbe, 0x1b, 0x9c, 0xc1, 0x2a, 0x49, 0x08, 
+0x2c, 0xef, 0x73, 0x54, 0x79, 0x1f, 0x5b, 0x0d, 
+0x2b, 0xcd, 0xd5, 0xac, 0x10, 0x88, 0xaa, 0x36, 
+0x4e, 0x40, 0xba, 0x18, 0xe8, 0x7b, 0x48, 0x66, 
+0x2f, 0x7e, 0x71, 0xee, 0x94, 0xf6, 0x40, 0x63, 
+0x2d, 0x5c, 0x05, 0xa0, 0x60, 0x8b, 0xd2, 0x41, 
+0x41, 0x57, 0xab, 0x80, 0x82, 0xfb, 0xcd, 0x80, 
+0x82, 0x25, 0x66, 0x40, 0xc1, 0xb3, 0x95, 0x02, 
+0x05, 0xb9, 0x66, 0xbd, 0x75, 0x5a, 0x3a, 0x19, 
+0x94, 0x40, 0xc1, 0x51, 0xc5, 0xe4, 0x9d, 0xb6, 
+0x9d, 0x5c, 0x6f, 0x09, 0xf0, 0x4f, 0x80, 0x7f, 
+0xd6, 0x02, 0xff, 0x4a, 0x7f, 0xfa, 0x77, 0xca, 
+0x5c, 0xa5, 0x69, 0xfe, 0x5a, 0x01, 0x50, 0xd9, 
+0xb8, 0x5f, 0xf5, 0xde, 0x7f, 0x27, 0xdc, 0xfc, 
+0xf8, 0x89, 0x9f, 0x13, 0xfa, 0x78, 0x9c, 0xff, 
+0x37, 0x83, 0x71, 0x7e, 0x01, 0xde, 0x7f, 0x0b, 
+0x00, 0xe0, 0xcf, 0x00, 0x01, 0x3f, 0x83, 0x25, 
+0xf0, 0x71, 0x4c, 0x0d, 0xb6, 0xe2, 0x09, 0xff, 
+0x5d, 0xb8, 0x03, 0x7e, 0x8d, 0xdf, 0xe7, 0x6b, 
+0xf8, 0x00, 0xf0, 0xcf, 0xf3, 0xf0, 0xb6, 0x5d, 
+0x98, 0x0a, 0x48, 0xcd, 0x3f, 0x75, 0x0b, 0x6d, 
+0xc9, 0x4c, 0x27, 0xbf, 0xcb, 0xc6, 0xd1, 0xbe, 
+0xfc, 0x7a, 0xe5, 0xd7, 0xa6, 0xc7, 0xe1, 0x64, 
+0x55, 0xf3, 0x4f, 0xfd, 0x0b, 0xea, 0x19, 0xd1, 
+0xf4, 0x9f, 0x20, 0x01, 0xa0, 0x32, 0x13, 0xea, 
+0x3a, 0xb9, 0xdd, 0xea, 0x77, 0xfc, 0x4d, 0x78, 
+0x08, 0x78, 0xf6, 0xdc, 0x8e, 0xf8, 0xe1, 0xf9, 
+0x16, 0x08, 0x81, 0xf2, 0x73, 0x02, 0xee, 0xed, 
+0x36, 0xc0, 0x3a, 0x38, 0x5b, 0xcb, 0x07, 0x18, 
+0xe7, 0x0e, 0xcc, 0x81, 0xf1, 0x8e, 0xba, 0xf1, 
+0x73, 0x42, 0xa1, 0xfa, 0x34, 0x90, 0x7d, 0x01, 
+0xc2, 0xb1, 0xfb, 0xf7, 0x68, 0xb7, 0xc9, 0x60, 
+0xa2, 0x90, 0xa2, 0x6d, 0xac, 0xcb, 0xc0, 0x0d, 
+0xc4, 0xd1, 0x92, 0x5e, 0x87, 0xf1, 0x6b, 0x8b, 
+0x25, 0x13, 0xa2, 0xe9, 0x98, 0x10, 0x54, 0x15, 
+0x27, 0x60, 0x57, 0x06, 0x27, 0xe0, 0xd1, 0x69, 
+0x2b, 0x2e, 0x05, 0x8a, 0x65, 0xf6, 0xe2, 0x9e, 
+0x63, 0xfb, 0xe4, 0xc7, 0x4f, 0x0e, 0x28, 0x78, 
+0xda, 0x0c, 0x28, 0x58, 0x3e, 0x6b, 0xe1, 0x99, 
+0x23, 0x4e, 0x50, 0xd8, 0x6b, 0x1a, 0x21, 0x10, 
+0x3c, 0xe5, 0x20, 0x79, 0xee, 0xce, 0x15, 0xe0, 
+0x5f, 0x19, 0xe0, 0xdf, 0x68, 0x01, 0xfe, 0x55, 
+0x18, 0xfc, 0x1b, 0x74, 0xce, 0x4b, 0xd7, 0xfc, 
+0x51, 0x91, 0x59, 0x49, 0x56, 0xdb, 0xfb, 0xf3, 
+0x88, 0x9e, 0x4f, 0xfb, 0xa4, 0x71, 0x3e, 0x00, 
+0x40, 0xa3, 0x71, 0x3e, 0x6e, 0xf8, 0xaf, 0xc0, 
+0xd2, 0x97, 0x4f, 0x00, 0xff, 0x0d, 0x67, 0xbf, 
+0x73, 0xa7, 0x4e, 0x49, 0x4f, 0xf9, 0xfc, 0xb4, 
+0xff, 0x4f, 0x3c, 0xf5, 0xcb, 0xc1, 0x3f, 0x3c, 
+0x0d, 0xd8, 0x8b, 0x0b, 0x01, 0xf5, 0xde, 0x7f, 
+0xf6, 0xa9, 0x54, 0xa3, 0x68, 0x5f, 0x7e, 0xbd, 
+0xf2, 0x6b, 0x53, 0xbd, 0xf7, 0x47, 0xe3, 0xbf, 
+0x87, 0xea, 0x27, 0x1a, 0xfe, 0x13, 0x2a, 0x00, 
+0xe4, 0x7a, 0xab, 0x61, 0xe0, 0xeb, 0xf0, 0x10, 
+0x78, 0xdf, 0x94, 0x87, 0x00, 0xb2, 0x07, 0xa4, 
+0xf8, 0x61, 0x49, 0x08, 0x68, 0xc5, 0x40, 0x55, 
+0x71, 0x02, 0x72, 0xee, 0xc0, 0x44, 0x4c, 0x01, 
+0xd4, 0x0d, 0x9f, 0xc1, 0xc0, 0x89, 0xb8, 0x26, 
+0x98, 0x0d, 0x00, 0x50, 0xbd, 0xfb, 0x4f, 0x84, 
+0xd5, 0xf0, 0xa6, 0x57, 0xaf, 0xab, 0xb2, 0x07, 
+0xce, 0xa3, 0xa1, 0x6a, 0x9e, 0xb0, 0xe3, 0x4c, 
+0x98, 0x14, 0x45, 0xf5, 0x3b, 0x81, 0x3d, 0x7d, 
+0x62, 0x15, 0x73, 0x02, 0xa6, 0xd7, 0x03, 0xd3, 
+0xf9, 0x62, 0x00, 0xe9, 0x87, 0x7c, 0x85, 0x21, 
+0xb1, 0x17, 0x7d, 0xf7, 0xff, 0x68, 0x87, 0x1c, 
+0x85, 0x71, 0xf5, 0x01, 0x14, 0x6c, 0x57, 0x51, 
+0x50, 0xf0, 0x82, 0xb2, 0x16, 0x98, 0x67, 0x21, 
+0x28, 0xb8, 0xa0, 0xdb, 0x65, 0x0a, 0x1b, 0x5d, 
+0xa2, 0x58, 0x0b, 0x07, 0x7a, 0x16, 0x91, 0xfb, 
+0xd1, 0x2c, 0x01, 0xfe, 0x59, 0x09, 0xfc, 0x1b, 
+0x5e, 0xc3, 0xe0, 0xdf, 0x1b, 0xb5, 0x04, 0xfc, 
+0x93, 0xe2, 0x7e, 0xd9, 0xf2, 0x57, 0x25, 0x00, 
+0x6e, 0x7f, 0xfa, 0x17, 0xab, 0xec, 0xfd, 0x79, 
+0x02, 0x70, 0x1e, 0x4f, 0xee, 0xca, 0x38, 0x9f, 
+0x2d, 0x7d, 0x0d, 0xc6, 0xf9, 0xdc, 0xf0, 0xb9, 
+0xf1, 0x7f, 0x27, 0x07, 0xff, 0x40, 0x10, 0xb0, 
+0x30, 0x60, 0x81, 0xc0, 0x42, 0xe1, 0x7d, 0xad, 
+0x53, 0x20, 0x5f, 0x0d, 0xf0, 0xde, 0x9f, 0x83, 
+0x7e, 0x58, 0x00, 0xac, 0x2c, 0x4a, 0x53, 0x9d, 
+0xfb, 0x25, 0x2a, 0xe7, 0x7e, 0xfc, 0xda, 0xb4, 
+0xbf, 0xbc, 0x56, 0xda, 0xfb, 0xfb, 0x69, 0x9a, 
+0x3f, 0x97, 0xaf, 0x68, 0xf6, 0x42, 0x00, 0xe8, 
+0x3c, 0x04, 0x1a, 0x87, 0x4d, 0xb0, 0xef, 0xb8, 
+0xe1, 0x1f, 0x86, 0x1e, 0x02, 0x7c, 0x41, 0xe0, 
+0xd4, 0x25, 0x15, 0xf1, 0xc3, 0x61, 0x34, 0x50, 
+0x25, 0x04, 0xca, 0xcb, 0x09, 0x0c, 0x2d, 0x87, 
+0x9f, 0x40, 0x50, 0x67, 0x7d, 0xe3, 0x20, 0x27, 
+0x34, 0x4b, 0xe6, 0x04, 0x6c, 0xe1, 0xbe, 0xc7, 
+0x3c, 0x40, 0x69, 0x6b, 0x02, 0x27, 0x44, 0x17, 
+0xdb, 0xe0, 0x5a, 0xc0, 0x9c, 0x3d, 0x71, 0x68, 
+0xe7, 0x6d, 0xa5, 0x72, 0x02, 0x36, 0x55, 0xcc, 
+0x09, 0xcc, 0xc0, 0xc5, 0x80, 0x2f, 0xd6, 0x18, 
+0x61, 0xda, 0xab, 0x0c, 0xdf, 0x5e, 0x7b, 0x7f, 
+0x9c, 0xdc, 0x6a, 0x75, 0x15, 0x82, 0x82, 0x9b, 
+0xf5, 0x41, 0x41, 0x03, 0x21, 0x60, 0x29, 0x28, 
+0xe8, 0x6b, 0x21, 0x28, 0x18, 0x52, 0x4d, 0xa0, 
+0xe0, 0xbc, 0x3e, 0x17, 0x29, 0x74, 0x94, 0x16, 
+0x14, 0xc4, 0xf9, 0xa0, 0xff, 0xcc, 0xbd, 0xe4, 
+0xfa, 0x76, 0x9a, 0x15, 0xfc, 0xfe, 0x05, 0xf8, 
+0x57, 0x97, 0xc0, 0x3f, 0x6b, 0xfa, 0xfd, 0xab, 
+0x9b, 0xff, 0xb0, 0x93, 0xfe, 0x7a, 0xcd, 0x7f, 
+0x71, 0x5e, 0xaa, 0xd5, 0xf6, 0xfe, 0x47, 0x00, 
+0xfc, 0xe9, 0x8d, 0xf3, 0x31, 0xca, 0x97, 0xc7, 
+0xf9, 0xfc, 0xb6, 0x13, 0x78, 0x1f, 0x8f, 0xfc, 
+0x39, 0xf8, 0xe7, 0x16, 0xae, 0x03, 0x78, 0x15, 
+0xc0, 0x2b, 0x81, 0xbb, 0x58, 0x0d, 0x3c, 0xc0, 
+0x14, 0x81, 0x83, 0x7f, 0xd8, 0x29, 0x90, 0x57, 
+0x07, 0x79, 0x38, 0xfb, 0x53, 0xef, 0xfd, 0x5d, 
+0x6f, 0x1a, 0x47, 0xfb, 0x4a, 0xaf, 0xd1, 0x1b, 
+0xab, 0xc9, 0x77, 0xdf, 0x16, 0x5d, 0xf3, 0xcf, 
+0x4f, 0xdd, 0x2a, 0x1a, 0xbd, 0x10, 0x00, 0x46, 
+0xf5, 0xc6, 0x73, 0x1e, 0xbf, 0x1a, 0xde, 0x34, 
+0xc2, 0x6b, 0x7a, 0xe7, 0x4d, 0xdf, 0x1a, 0x7a, 
+0x08, 0xf0, 0xbf, 0x3b, 0x76, 0x4a, 0x42, 0x53, 
+0x0f, 0x2e, 0x45, 0x08, 0x04, 0x54, 0x2a, 0x96, 
+0x58, 0xed, 0x27, 0x30, 0x1a, 0xbc, 0x40, 0x54, 
+0xbf, 0xe3, 0x4a, 0xe3, 0x5e, 0xfb, 0xc2, 0xdb, 
+0x30, 0x0e, 0x5a, 0x25, 0x71, 0x02, 0x2c, 0x04, 
+0xd8, 0x60, 0x68, 0x69, 0xef, 0xc3, 0x46, 0x0d, 
+0x3e, 0x14, 0x46, 0x42, 0xdc, 0x4c, 0x79, 0x4d, 
+0x60, 0xce, 0x4c, 0x88, 0x33, 0x08, 0xa6, 0xb5, 
+0x58, 0x53, 0x63, 0x9c, 0x80, 0x73, 0x9b, 0x54, 
+0xf2, 0xef, 0xa9, 0x5b, 0xbd, 0x78, 0x76, 0xdf, 
+0x7e, 0x6f, 0x52, 0x8b, 0xa8, 0x2a, 0x00, 0x05, 
+0x93, 0xf5, 0x40, 0x41, 0x27, 0x3d, 0x50, 0x30, 
+0xa3, 0x54, 0x50, 0x50, 0x12, 0x02, 0x75, 0x00, 
+0x14, 0x9c, 0xf3, 0xd2, 0x79, 0x38, 0x09, 0x6a, 
+0x41, 0x41, 0x18, 0x0a, 0xf9, 0x2c, 0xcf, 0x27, 
+0xe7, 0x2b, 0x29, 0x02, 0xfc, 0x13, 0xe0, 0x5f, 
+0x85, 0xc1, 0xbf, 0xbe, 0xef, 0x4f, 0x45, 0xdc, 
+0x6f, 0x8c, 0xd2, 0xfc, 0xbd, 0x70, 0x02, 0xf8, 
+0xe9, 0x97, 0xff, 0xa8, 0x70, 0xf3, 0xff, 0x1a, 
+0x54, 0x3f, 0xd3, 0xfe, 0x2c, 0x00, 0xb6, 0xe1, 
+0x89, 0x9d, 0xa1, 0x3f, 0x79, 0x9c, 0xcf, 0x4f, 
+0xfd, 0xfc, 0xf4, 0x2f, 0x8f, 0xf3, 0x79, 0x2a, 
+0xc0, 0xb0, 0x1f, 0x43, 0x7f, 0xea, 0xe0, 0x1f, 
+0x86, 0x02, 0x19, 0x0e, 0x64, 0x48, 0x50, 0x76, 
+0x0a, 0xdc, 0x83, 0xd1, 0xbf, 0x72, 0xef, 0x9f, 
+0x99, 0x46, 0xbe, 0x97, 0x53, 0x8c, 0xa2, 0x7d, 
+0xf9, 0xf5, 0xc9, 0xaf, 0x45, 0x8f, 0x43, 0xc9, 
+0xf2, 0x53, 0x3f, 0x37, 0xff, 0xf7, 0x51, 0x4f, 
+0x89, 0x46, 0x2f, 0x04, 0x80, 0x39, 0x21, 0xf0, 
+0xdb, 0x51, 0xcd, 0xe6, 0xce, 0x73, 0xee, 0x9a, 
+0x66, 0xd2, 0x43, 0x60, 0x5a, 0xfb, 0x78, 0xa9, 
+0xe1, 0x0f, 0x7c, 0xde, 0xd7, 0x4a, 0x9c, 0x80, 
+0xf1, 0x7a, 0x60, 0x5c, 0xd3, 0x05, 0x92, 0x01, 
+0x90, 0xda, 0x01, 0xd0, 0xbd, 0xdd, 0x46, 0x89, 
+0x13, 0x18, 0xa5, 0x15, 0x02, 0xd3, 0x5b, 0xaf, 
+0x03, 0x00, 0x78, 0x5c, 0x15, 0x51, 0x7c, 0x54, 
+0xf2, 0x13, 0xe0, 0xec, 0x00, 0x3d, 0x0b, 0x61, 
+0x38, 0x14, 0x1a, 0x26, 0x19, 0x26, 0xbc, 0xf4, 
+0x2e, 0xd9, 0x49, 0x22, 0x60, 0x85, 0x5e, 0xb3, 
+0xad, 0xd8, 0x7a, 0xc0, 0x72, 0x4e, 0x40, 0x7d, 
+0x46, 0xe8, 0xd2, 0x2e, 0x9d, 0x02, 0xfb, 0xec, 
+0x97, 0x27, 0x2d, 0x0f, 0xdd, 0xba, 0x64, 0xfd, 
+0x32, 0xa1, 0xd9, 0x72, 0xab, 0x81, 0x82, 0x0e, 
+0x15, 0x06, 0x05, 0xf3, 0xcc, 0x80, 0x82, 0x15, 
+0xb5, 0x16, 0xae, 0x42, 0x50, 0x70, 0xc0, 0x19, 
+0x0a, 0x1d, 0xac, 0x11, 0x02, 0x21, 0x43, 0x8e, 
+0x90, 0x57, 0xe2, 0x36, 0x9a, 0x71, 0x63, 0x93, 
+0x00, 0xff, 0x9e, 0x28, 0xf0, 0xcf, 0x3a, 0x4f, 
+0xff, 0xa3, 0x8a, 0x43, 0xf5, 0x9e, 0xfe, 0x63, 
+0xf2, 0xb3, 0x2b, 0xb5, 0xf7, 0xcf, 0xc6, 0xf8, 
+0x9e, 0x9b, 0x3f, 0x3f, 0xa5, 0x9f, 0xc7, 0x3d, 
+0xbf, 0xd1, 0x38, 0x9f, 0x2d, 0x7d, 0xe5, 0xe0, 
+0x1f, 0x9c, 0xf9, 0xf1, 0xb9, 0x1f, 0x9f, 0xfd, 
+0x9d, 0x44, 0xf0, 0x4f, 0xae, 0x1c, 0xfc, 0x83, 
+0xb3, 0x40, 0x3e, 0x0f, 0x64, 0x68, 0x70, 0x1b, 
+0x9c, 0x02, 0x8b, 0x70, 0x06, 0x28, 0x37, 0x7f, 
+0xde, 0xfb, 0x47, 0x9c, 0xde, 0x62, 0xf2, 0xdc, 
+0x8f, 0x5f, 0x8f, 0x4e, 0xa7, 0xd7, 0xab, 0x9b, 
+0xff, 0x4f, 0xa8, 0x5e, 0xa2, 0xc9, 0x0b, 0x01, 
+0x60, 0xa9, 0x10, 0xf8, 0x13, 0x02, 0x85, 0xe2, 
+0xc1, 0x02, 0x98, 0xf4, 0x10, 0xb0, 0x6d, 0x1b, 
+0x8b, 0xc6, 0xef, 0xa7, 0x13, 0x02, 0x56, 0xe3, 
+0x04, 0x34, 0xeb, 0x81, 0x89, 0xcd, 0x16, 0x23, 
+0x74, 0xe8, 0x82, 0x5e, 0xe3, 0x9e, 0x83, 0x11, 
+0xfa, 0x74, 0x18, 0xed, 0xb0, 0x77, 0x80, 0x7c, 
+0x46, 0xe8, 0xda, 0x76, 0x83, 0x14, 0x39, 0x1c, 
+0xdc, 0x39, 0x47, 0xf2, 0x13, 0x98, 0x8a, 0xfb, 
+0xfb, 0x64, 0x95, 0x73, 0xe0, 0xbc, 0x1e, 0x05, 
+0x92, 0xd3, 0xa0, 0x5f, 0xc7, 0x0c, 0xbd, 0xb7, 
+0xaf, 0xc1, 0x64, 0x81, 0x23, 0x88, 0x65, 0x10, 
+0xaf, 0x7a, 0xfc, 0x04, 0x8c, 0xd7, 0x03, 0x6e, 
+0x1d, 0xb2, 0x29, 0x58, 0x7b, 0x31, 0x80, 0x49, 
+0xcb, 0x7d, 0xa7, 0x8e, 0x5b, 0x1e, 0x97, 0x76, 
+0x31, 0x50, 0xbb, 0x41, 0xc1, 0xa2, 0x1a, 0x03, 
+0x05, 0x99, 0x1d, 0x98, 0x39, 0xec, 0x24, 0x85, 
+0xbe, 0xa9, 0x11, 0x02, 0xc1, 0xe3, 0x0e, 0x91, 
+0x47, 0x4e, 0xb6, 0x00, 0xff, 0xea, 0x05, 0xf8, 
+0xe7, 0x5e, 0x2d, 0xe0, 0x5f, 0xbf, 0xbb, 0xd3, 
+0xc8, 0x23, 0x33, 0x56, 0xf7, 0xf4, 0x9f, 0x1b, 
+0x53, 0xa9, 0xb8, 0xdf, 0x23, 0x68, 0xe2, 0xf2, 
+0xde, 0xff, 0x14, 0xce, 0xfc, 0xe4, 0x71, 0x3e, 
+0x93, 0xfe, 0x2c, 0x0e, 0x98, 0xfc, 0x97, 0xc7, 
+0xf9, 0x6c, 0xf0, 0xc3, 0x46, 0x3f, 0x6c, 0xf8, 
+0xc3, 0x42, 0x81, 0x83, 0x7f, 0x4e, 0x21, 0xf8, 
+0x87, 0x0d, 0x81, 0xd8, 0x18, 0x88, 0x0d, 0x82, 
+0xf6, 0xc0, 0x28, 0x88, 0x7f, 0x3d, 0x37, 0x7d, 
+0x79, 0xef, 0xbf, 0x62, 0x7f, 0xaa, 0xc9, 0x73, 
+0x3f, 0x7e, 0x3d, 0xda, 0x5f, 0x5a, 0xab, 0x6e, 
+0xfe, 0x5c, 0xee, 0xa2, 0xaf, 0x09, 0x01, 0x50, 
+0x01, 0x21, 0xe0, 0xde, 0x60, 0x7c, 0xab, 0x65, 
+0x79, 0xb8, 0x0e, 0x30, 0xe1, 0x21, 0x50, 0x40, 
+0x13, 0x5b, 0xaf, 0x80, 0x08, 0xf0, 0x91, 0x84, 
+0x80, 0xb5, 0x39, 0x01, 0xdb, 0xe6, 0xcb, 0xf5, 
+0x26, 0x01, 0xea, 0x6b, 0x80, 0xe5, 0x00, 0x04, 
+0x23, 0x10, 0x42, 0xc4, 0x9e, 0x02, 0x6a, 0x3f, 
+0x01, 0x16, 0x07, 0x3e, 0x1d, 0x52, 0xf5, 0x3e, 
+0xde, 0xb3, 0xdd, 0x66, 0x49, 0x04, 0xcc, 0x68, 
+0x1d, 0x0f, 0x51, 0xf1, 0xae, 0xf2, 0xf6, 0xe0, 
+0xce, 0x79, 0x4a, 0x93, 0x2d, 0xfb, 0x8c, 0xb0, 
+0x74, 0xbb, 0x61, 0x6b, 0x70, 0x02, 0x1e, 0x9d, 
+0xf9, 0x62, 0xe0, 0x88, 0xd6, 0x5a, 0xf8, 0xd0, 
+0x4f, 0x0e, 0x98, 0x78, 0x98, 0xbe, 0x18, 0x10, 
+0xa0, 0x60, 0xe9, 0xd6, 0xc2, 0x57, 0x01, 0x0a, 
+0x72, 0xec, 0xb0, 0x66, 0x72, 0x15, 0xe8, 0xb0, 
+0x9f, 0x5c, 0x0b, 0xd3, 0x05, 0xf8, 0x57, 0xad, 
+0xe0, 0x5f, 0x40, 0x0d, 0x83, 0x7f, 0x33, 0x2a, 
+0x04, 0xfe, 0x49, 0x71, 0xbf, 0xdb, 0x74, 0xf0, 
+0x5f, 0x62, 0xe1, 0xce, 0x0a, 0x37, 0xff, 0x3b, 
+0xb0, 0xf3, 0x95, 0xf7, 0xfe, 0xfb, 0x31, 0xca, 
+0xe7, 0x9b, 0x7e, 0xc3, 0x71, 0xbe, 0x64, 0xe9, 
+0xab, 0x0a, 0xfe, 0x61, 0xab, 0x5f, 0xb6, 0xfc, 
+0x65, 0x4b, 0xdf, 0x62, 0x39, 0xf8, 0x07, 0x96, 
+0xc0, 0x6c, 0x0d, 0xcc, 0x16, 0xc1, 0x0c, 0xfd, 
+0xe5, 0xe1, 0xf7, 0x90, 0xf7, 0xfe, 0xeb, 0xb7, 
+0xe3, 0xeb, 0xf6, 0xa6, 0x71, 0xb4, 0x2f, 0xbf, 
+0x26, 0xa7, 0xdc, 0x88, 0x21, 0x9f, 0x7d, 0x29, 
+0x72, 0xe3, 0xe7, 0xca, 0x12, 0xbd, 0x4c, 0x08, 
+0x80, 0xca, 0x0a, 0x81, 0x56, 0x93, 0xda, 0x44, 
+0x15, 0xc3, 0x2f, 0xc0, 0xd8, 0x43, 0xa0, 0xd7, 
+0x2e, 0x1a, 0xdb, 0x62, 0xb1, 0x4a, 0x08, 0xf8, 
+0x5a, 0x8d, 0x13, 0x18, 0x05, 0x38, 0x70, 0xa6, 
+0x81, 0x4b, 0xa0, 0x61, 0x71, 0x22, 0xe1, 0xe8, 
+0x46, 0xf3, 0x14, 0x4e, 0x80, 0x2b, 0xa0, 0x53, 
+0xa6, 0x0a, 0x00, 0xbc, 0x26, 0x9d, 0x0a, 0x72, 
+0xee, 0xc0, 0xe4, 0x66, 0x2b, 0x69, 0x95, 0x96, 
+0x31, 0x58, 0x8a, 0x53, 0x41, 0x39, 0x96, 0x98, 
+0x57, 0x02, 0xa1, 0x68, 0xc2, 0x81, 0x9d, 0x72, 
+0x00, 0xec, 0xad, 0xaf, 0x11, 0x3f, 0x01, 0xc7, 
+0x96, 0x49, 0xe4, 0xdd, 0x75, 0x27, 0xa7, 0x0d, 
+0x4a, 0x9f, 0xd7, 0x80, 0x3e, 0x85, 0x3f, 0x4d, 
+0x85, 0x6d, 0xb2, 0xbe, 0xb5, 0x70, 0x69, 0xa0, 
+0x60, 0x6c, 0xdd, 0x07, 0x05, 0x3b, 0x58, 0x07, 
+0x14, 0x9c, 0xdf, 0xe3, 0x32, 0x85, 0x8e, 0x39, 
+0xaa, 0x5c, 0x0c, 0xf8, 0xfb, 0xed, 0x23, 0xa7, 
+0xe3, 0x29, 0x02, 0xfc, 0x13, 0xe0, 0x9f, 0xc9, 
+0xd1, 0x7f, 0xff, 0x3b, 0x76, 0x88, 0xfb, 0x8d, 
+0x55, 0x04, 0x80, 0x4f, 0x76, 0x2c, 0xe2, 0x7e, 
+0x7f, 0xac, 0xf4, 0xde, 0x3f, 0x17, 0xcd, 0xfc, 
+0x04, 0x8f, 0xf3, 0xd9, 0xd2, 0x17, 0xe3, 0xfc, 
+0xff, 0xa8, 0xc7, 0xf9, 0x70, 0xff, 0x63, 0x17, 
+0xc0, 0x4f, 0x10, 0xfc, 0xc3, 0x21, 0x3f, 0xb7, 
+0x11, 0xf6, 0xc3, 0xa1, 0x3f, 0x1c, 0xfe, 0xc3, 
+0x3f, 0xbf, 0x8f, 0xb7, 0x71, 0x28, 0x90, 0xe4, 
+0x14, 0x88, 0xd1, 0xff, 0x5e, 0x3c, 0xfd, 0xab, 
+0xf7, 0xfe, 0x3e, 0x57, 0x36, 0x1b, 0x45, 0xfb, 
+0xf2, 0x6b, 0xd2, 0xf6, 0x76, 0x34, 0xf6, 0xfe, 
+0x49, 0xea, 0xe6, 0x7f, 0xcb, 0x2f, 0x7f, 0xcb, 
+0x9f, 0x44, 0x0f, 0x13, 0x02, 0xc0, 0x5a, 0xf6, 
+0xc2, 0x3d, 0xe0, 0x21, 0x70, 0xc9, 0xa4, 0x87, 
+0x40, 0x8f, 0xad, 0x04, 0x7e, 0xa0, 0x9c, 0x42, 
+0xc0, 0x32, 0x4e, 0xc0, 0x11, 0xc4, 0x3c, 0x9f, 
+0xfb, 0x95, 0x26, 0x02, 0xdc, 0xdb, 0x25, 0x29, 
+0x7e, 0x02, 0x32, 0x27, 0x10, 0x04, 0xcf, 0x01, 
+0x7d, 0x50, 0x70, 0xab, 0xc4, 0x09, 0xf0, 0x34, 
+0xc0, 0xa5, 0xcd, 0x06, 0x84, 0x12, 0xad, 0x91, 
+0x7e, 0x3e, 0xad, 0x45, 0xac, 0x11, 0x3c, 0xc8, 
+0xe9, 0x86, 0xbe, 0x1d, 0xd2, 0x6b, 0x84, 0x13, 
+0x98, 0xd1, 0x7a, 0x33, 0x2e, 0x06, 0xf6, 0xe8, 
+0x04, 0x56, 0xcf, 0x5d, 0xf7, 0x6c, 0x01, 0x3f, 
+0x9a, 0x07, 0x05, 0xa3, 0x4b, 0x05, 0x05, 0x35, 
+0x7f, 0xd6, 0xfa, 0x72, 0x59, 0x0b, 0xd7, 0x07, 
+0x50, 0x90, 0xad, 0x85, 0x43, 0x46, 0x69, 0x81, 
+0x56, 0x4c, 0x05, 0x7c, 0xe6, 0xe6, 0xd3, 0xf4, 
+0x77, 0x92, 0x4c, 0x8e, 0xfe, 0xed, 0x05, 0xf8, 
+0x57, 0x05, 0xe0, 0x9f, 0x5f, 0x8d, 0x82, 0x7f, 
+0xe6, 0x9f, 0xfe, 0x75, 0xe0, 0x9f, 0xcd, 0xae, 
+0xf9, 0xda, 0xe6, 0xaf, 0x11, 0x00, 0x19, 0x47, 
+0x0a, 0x2b, 0xd4, 0xfc, 0x1f, 0x3c, 0x78, 0x40, 
+0x39, 0x70, 0xe5, 0xe3, 0xe6, 0xcf, 0xf7, 0xf9, 
+0xa7, 0x00, 0xfb, 0xb1, 0x9f, 0xbf, 0xe1, 0x38, 
+0x9f, 0x7d, 0xff, 0xd9, 0xff, 0x5f, 0x0e, 0xfe, 
+0xe1, 0xa7, 0x7d, 0x8e, 0xfb, 0xe5, 0xd8, 0xdf, 
+0xab, 0xf0, 0x08, 0x90, 0x83, 0x7f, 0x78, 0x3a, 
+0xc0, 0xd0, 0xdf, 0x41, 0x4c, 0x10, 0xa4, 0xe6, 
+0x9f, 0xa6, 0xd9, 0xfb, 0xcf, 0x3c, 0x9d, 0x62, 
+0xf2, 0xd6, 0x9f, 0x5f, 0x7f, 0x4e, 0xa7, 0x12, 
+0xd4, 0xcd, 0xff, 0x7f, 0x68, 0xfe, 0xdd, 0x45, 
+0xdf, 0x12, 0x02, 0xc0, 0xea, 0x35, 0xa8, 0xa1, 
+0xff, 0x9b, 0xd3, 0xda, 0xc7, 0x7d, 0x68, 0xca, 
+0x43, 0xc0, 0xb5, 0x5b, 0x96, 0x14, 0x3f, 0x3c, 
+0x40, 0x25, 0x04, 0x06, 0x5a, 0x81, 0x13, 0x60, 
+0x36, 0x80, 0xd3, 0x05, 0x57, 0xf4, 0x3d, 0x6a, 
+0x24, 0x00, 0x22, 0xbb, 0xef, 0x92, 0xce, 0x08, 
+0xfd, 0x3b, 0xa6, 0x23, 0x82, 0x38, 0x45, 0x9a, 
+0x08, 0xb0, 0x18, 0x08, 0xc4, 0x24, 0x40, 0x7d, 
+0x3a, 0x38, 0x17, 0x9e, 0xfd, 0xba, 0x10, 0xa2, 
+0x45, 0x52, 0x19, 0xae, 0x0c, 0xf4, 0xcd, 0x88, 
+0x8a, 0xd1, 0x4c, 0xa3, 0x2b, 0xc0, 0x09, 0xc4, 
+0x56, 0x9a, 0x13, 0x70, 0x6a, 0x03, 0xdb, 0xce, 
+0x5e, 0x85, 0xf2, 0xe7, 0xf5, 0xb1, 0x47, 0xb7, 
+0xbc, 0x5f, 0x26, 0xe1, 0x1c, 0xb2, 0x2c, 0x50, 
+0xd0, 0xb6, 0x5c, 0xa0, 0x60, 0x92, 0x19, 0x50, 
+0x30, 0xbd, 0x56, 0x82, 0x82, 0x73, 0xcb, 0x09, 
+0x0a, 0x46, 0xbe, 0xf6, 0x36, 0x85, 0x0c, 0xd3, 
+0x08, 0x01, 0xe6, 0x04, 0xbc, 0xa2, 0xb7, 0x91, 
+0xe3, 0xb5, 0xc4, 0x4a, 0x35, 0xff, 0x29, 0x02, 
+0xfc, 0xab, 0x17, 0xe0, 0xdf, 0x0b, 0xb7, 0x1c, 
+0xc8, 0x33, 0x27, 0x56, 0x11, 0x00, 0x7e, 0x59, 
+0x6b, 0xe8, 0xe7, 0x5f, 0xee, 0x57, 0x48, 0x00, 
+0x1c, 0x85, 0x77, 0xbf, 0xbc, 0xf7, 0x3f, 0x8a, 
+0x93, 0x3e, 0x69, 0x9c, 0xcf, 0x96, 0xbe, 0x26, 
+0xc6, 0xf9, 0x9c, 0x00, 0xf8, 0xa3, 0x1c, 0xfc, 
+0x03, 0x81, 0xc0, 0x7b, 0xff, 0xf3, 0xa7, 0x4f, 
+0xd3, 0x97, 0x5f, 0x7c, 0x41, 0xff, 0x95, 0x83, 
+0x7f, 0xc0, 0x07, 0xf0, 0x35, 0x00, 0x37, 0x7d, 
+0x1e, 0xfb, 0xf3, 0xd3, 0xff, 0xf2, 0xfd, 0x5b, 
+0x8c, 0xa2, 0x7d, 0xf9, 0x35, 0xc9, 0xaf, 0x41, 
+0xfb, 0x8b, 0x6b, 0xd4, 0xcd, 0x1f, 0xb5, 0x65, 
+0x86, 0xe8, 0x55, 0x42, 0x00, 0x54, 0x69, 0x0d, 
+0x69, 0x1c, 0x62, 0x63, 0xdf, 0x31, 0xf1, 0x5f, 
+0xa6, 0x3c, 0x04, 0x66, 0x74, 0xd9, 0x82, 0xf8, 
+0xe1, 0x10, 0xad, 0x10, 0xb0, 0x2e, 0x27, 0x30, 
+0xae, 0xc9, 0x7c, 0x9c, 0xd4, 0xc5, 0x4b, 0x0d, 
+0xde, 0x07, 0x0d, 0x7f, 0x3c, 0x2e, 0x07, 0xc6, 
+0x37, 0x5d, 0xa4, 0x34, 0x6e, 0x3e, 0x15, 0x1c, 
+0xd7, 0x64, 0xa1, 0x34, 0x15, 0xe0, 0xf0, 0x21, 
+0x75, 0xa4, 0x30, 0xdb, 0x0a, 0xab, 0xd3, 0x08, 
+0xbd, 0xdb, 0x6f, 0x31, 0xbb, 0x62, 0xe0, 0xab, 
+0x01, 0xb7, 0xb6, 0xc9, 0x95, 0xe2, 0x04, 0xf4, 
+0x9f, 0xcc, 0xcb, 0xc7, 0x09, 0xb8, 0xb4, 0xcf, 
+0xc0, 0xc5, 0xc0, 0x01, 0xad, 0xb5, 0x70, 0xc9, 
+0x43, 0x97, 0xce, 0x19, 0x8f, 0x26, 0x34, 0x5d, 
+0x5e, 0xe7, 0x41, 0xc1, 0x60, 0x3d, 0x50, 0xf0, 
+0x68, 0xa9, 0xa0, 0xe0, 0x2c, 0x43, 0x3e, 0xa0, 
+0x63, 0x45, 0x40, 0xc1, 0x6b, 0x14, 0x31, 0xf8, 
+0x14, 0xb2, 0x05, 0x34, 0x42, 0x20, 0x78, 0xf8, 
+0x61, 0x72, 0xdf, 0x94, 0x4d, 0xf6, 0xb7, 0x04, 
+0xf8, 0x57, 0x3d, 0xe0, 0x9f, 0x4f, 0xad, 0x03, 
+0xff, 0xf8, 0xe9, 0x7f, 0xda, 0xb6, 0x25, 0xaa, 
+0xa7, 0xff, 0xe8, 0x0a, 0xc7, 0xfd, 0xaa, 0xf7, 
+0xfe, 0xfb, 0x40, 0xf6, 0x2b, 0xe3, 0x7c, 0x58, 
+0xfa, 0xca, 0xe3, 0xfc, 0xe3, 0xda, 0x71, 0xfe, 
+0xc5, 0x73, 0xe7, 0xe8, 0x1b, 0x58, 0xfa, 0x32, 
+0xe1, 0xcf, 0xa4, 0x7f, 0x1e, 0x1a, 0x3c, 0x93, 
+0xff, 0x7f, 0xff, 0xe4, 0x13, 0xba, 0x07, 0x0f, 
+0x00, 0xbe, 0x08, 0xe0, 0xcb, 0x00, 0x86, 0xfe, 
+0xb6, 0xaa, 0xf6, 0xfe, 0x09, 0xdb, 0x21, 0xcc, 
+0x6f, 0x1a, 0x47, 0xfb, 0xf2, 0x6b, 0x70, 0xca, 
+0xf5, 0x68, 0xf2, 0xd9, 0xa3, 0xde, 0xfb, 0xe3, 
+0x17, 0x88, 0xfe, 0x24, 0x04, 0x40, 0x75, 0xd4, 
+0xeb, 0xcf, 0xb9, 0xb1, 0x87, 0x80, 0x2f, 0x3c, 
+0x04, 0xfe, 0x2b, 0x3b, 0xde, 0xa9, 0x3d, 0x04, 
+0x1c, 0x3a, 0x6e, 0x24, 0xb8, 0x0e, 0x1a, 0x08, 
+0x01, 0x5f, 0xab, 0xfb, 0x09, 0xf0, 0x84, 0x60, 
+0x49, 0xef, 0x83, 0x4a, 0xe3, 0x5e, 0xfd, 0xc2, 
+0x19, 0x80, 0x84, 0x2b, 0x24, 0x11, 0xe0, 0xd0, 
+0x72, 0xb5, 0x9e, 0xcb, 0xe0, 0xcc, 0xae, 0xdb, 
+0x95, 0x24, 0x42, 0x1b, 0x04, 0xf6, 0x18, 0x1a, 
+0x0c, 0xc5, 0xc3, 0x51, 0x50, 0xfd, 0x36, 0xfe, 
+0x79, 0x08, 0x18, 0x81, 0x9a, 0xcc, 0x1d, 0x70, 
+0xef, 0x98, 0x43, 0xc1, 0xfd, 0x34, 0x42, 0x0b, 
+0x16, 0xc3, 0xf7, 0xa7, 0x77, 0xd8, 0xac, 0x30, 
+0x0c, 0x35, 0x09, 0x0a, 0x7a, 0x58, 0x08, 0x0a, 
+0xfa, 0x9b, 0x05, 0x05, 0x8b, 0xcd, 0x80, 0x82, 
+0xa7, 0xcc, 0x80, 0x82, 0xef, 0x94, 0x0f, 0x14, 
+0x84, 0xb5, 0x70, 0xf8, 0xc8, 0xe3, 0xf0, 0x0e, 
+0xd0, 0xbc, 0x4e, 0x83, 0x26, 0x1d, 0x20, 0x67, 
+0x7c, 0x63, 0x15, 0xe0, 0xdf, 0x93, 0x07, 0xfe, 
+0xbd, 0xfc, 0xde, 0x0c, 0xc4, 0xfd, 0xc6, 0x28, 
+0xcd, 0x3f, 0x30, 0x33, 0xae, 0x42, 0x71, 0xbf, 
+0xea, 0xbd, 0x7f, 0x36, 0x9e, 0xda, 0xf9, 0xa9, 
+0x9f, 0xc7, 0xf9, 0x6c, 0xf9, 0xfb, 0x3d, 0x2c, 
+0x7d, 0xd5, 0xe3, 0x7c, 0xbe, 0xe5, 0xff, 0xe7, 
+0xe7, 0x9f, 0xeb, 0x07, 0xff, 0xe0, 0x29, 0x9f, 
+0x6f, 0xff, 0xf9, 0x1f, 0x75, 0xf0, 0x4f, 0x81, 
+0xea, 0xe4, 0x2f, 0x05, 0x7b, 0x7f, 0xaf, 0x2b, 
+0x9b, 0xb4, 0xd1, 0xbe, 0xeb, 0xf5, 0x9a, 0xbf, 
+0xcd, 0xed, 0x28, 0xf2, 0x38, 0x90, 0x2c, 0x37, 
+0x7e, 0xae, 0xf7, 0x50, 0x7f, 0x10, 0xbd, 0x49, 
+0x08, 0x80, 0xea, 0x16, 0x02, 0xbf, 0x1b, 0xd9, 
+0x6c, 0xce, 0x42, 0x78, 0x08, 0xfc, 0x14, 0x66, 
+0xe4, 0x21, 0x70, 0x88, 0xa6, 0xb6, 0x8f, 0x93, 
+0x4e, 0x07, 0x4d, 0x0a, 0x01, 0x8b, 0xd6, 0x03, 
+0x65, 0xfb, 0x09, 0xb0, 0x9d, 0x70, 0xbc, 0xca, 
+0x0e, 0x78, 0xc3, 0x2b, 0x97, 0xa5, 0xf0, 0x21, 
+0x5e, 0x0f, 0x78, 0xb4, 0x4b, 0xd6, 0x6b, 0xf2, 
+0x7e, 0x1d, 0xd3, 0x94, 0xeb, 0x81, 0x39, 0xd8, 
+0xb9, 0xab, 0xdf, 0x67, 0xdf, 0x72, 0x2d, 0xc0, 
+0xc0, 0xd5, 0xd2, 0xb9, 0xa0, 0xfa, 0xed, 0xcc, 
+0x05, 0xc8, 0xb9, 0x03, 0x1a, 0x21, 0xb0, 0xbc, 
+0x5a, 0x39, 0x01, 0x7e, 0x62, 0xf7, 0x80, 0xa3, 
+0x61, 0x68, 0xff, 0xa3, 0x8f, 0x35, 0xd6, 0xc2, 
+0x07, 0xee, 0xd9, 0x63, 0x2d, 0x62, 0x0d, 0x50, 
+0xd0, 0xbe, 0x4e, 0x82, 0x82, 0xe7, 0xcd, 0x80, 
+0x82, 0xe6, 0xad, 0x85, 0x25, 0x50, 0xf0, 0x65, 
+0xcd, 0xeb, 0xd4, 0xdf, 0xb9, 0x80, 0xa6, 0x1f, 
+0x4c, 0x7e, 0x42, 0xc0, 0xbf, 0x88, 0x1a, 0x06, 
+0xff, 0xbc, 0x6a, 0x1c, 0xfc, 0xe3, 0xa7, 0x7f, 
+0xc7, 0xec, 0x15, 0x7a, 0x4f, 0xff, 0xc5, 0x57, 
+0xce, 0x55, 0x68, 0xef, 0xcf, 0xb0, 0x9f, 0xbc, 
+0xf7, 0x3f, 0x82, 0xd3, 0x3e, 0xbd, 0x71, 0x3e, 
+0x5b, 0xfa, 0x6a, 0xc7, 0xf9, 0x7c, 0xf6, 0xc7, 
+0x6e, 0x7e, 0xfc, 0x6b, 0xd8, 0xdd, 0x6f, 0x3f, 
+0x9e, 0xf0, 0xf7, 0x71, 0xf0, 0x0f, 0x5c, 0xff, 
+0xd8, 0xfd, 0xef, 0x33, 0x4c, 0x00, 0xd8, 0x0d, 
+0x90, 0x43, 0x7e, 0x8a, 0xf1, 0xb1, 0xdc, 0xfc, 
+0x79, 0xfc, 0xcf, 0x15, 0x7e, 0x26, 0xc5, 0xe4, 
+0xb9, 0x1f, 0xbf, 0xe6, 0x9c, 0x4f, 0x24, 0xa8, 
+0x9b, 0xff, 0xf7, 0xa8, 0xce, 0xa2, 0x1f, 0x09, 
+0x01, 0x50, 0x93, 0x42, 0xe0, 0xcf, 0xf0, 0x10, 
+0xd8, 0xe0, 0xd6, 0x3d, 0xfb, 0x81, 0xb1, 0x87, 
+0xc0, 0x7e, 0xb2, 0x69, 0x1b, 0x4d, 0x03, 0x1b, 
+0xf8, 0x48, 0x42, 0xa0, 0x34, 0x4e, 0x40, 0xbd, 
+0x1e, 0x28, 0xaf, 0x9f, 0xc0, 0x64, 0x9c, 0x0f, 
+0x72, 0x5e, 0x80, 0xba, 0x71, 0x47, 0x74, 0xdb, 
+0x41, 0x53, 0x5a, 0xac, 0xa0, 0xb5, 0x2f, 0x9e, 
+0xd3, 0x13, 0x07, 0x13, 0x9a, 0x2e, 0x91, 0x44, 
+0xc0, 0x04, 0x08, 0x07, 0xf5, 0xfb, 0x18, 0x02, 
+0x1c, 0x0f, 0x40, 0x70, 0x62, 0xd3, 0x65, 0x98, 
+0x2a, 0x1c, 0x56, 0x45, 0x10, 0x5f, 0xc5, 0xc4, 
+0x60, 0xa5, 0xde, 0x93, 0xb7, 0x69, 0x21, 0x50, 
+0xb5, 0x9c, 0x80, 0xea, 0x62, 0x40, 0x12, 0x02, 
+0x7e, 0xbd, 0xf7, 0xdd, 0x9b, 0x02, 0x8f, 0x04, 
+0x3d, 0x6b, 0x61, 0x93, 0xa0, 0x60, 0xcc, 0x93, 
+0x03, 0x0a, 0x4a, 0x42, 0xc0, 0xfc, 0x5a, 0x60, 
+0x5e, 0xef, 0x77, 0x29, 0x64, 0x8c, 0x26, 0xb0, 
+0x89, 0xaf, 0x06, 0x7c, 0x82, 0x77, 0x91, 0xc3, 
+0xe9, 0x44, 0x01, 0xfe, 0xd5, 0x73, 0xf0, 0xef, 
+0x75, 0x29, 0xee, 0x57, 0xd7, 0xfc, 0x43, 0x33, 
+0x13, 0x2b, 0x34, 0xfa, 0x2f, 0xc1, 0xfe, 0x5e, 
+0xde, 0xfb, 0x33, 0xac, 0xc7, 0xe3, 0x7c, 0x26, 
+0xff, 0x3f, 0x93, 0xc7, 0xf9, 0x68, 0xee, 0x3c, 
+0xce, 0x67, 0xff, 0xfe, 0xbb, 0xf0, 0xf1, 0xe7, 
+0xe6, 0xff, 0x31, 0x44, 0x80, 0x1c, 0xfc, 0xc3, 
+0x7e, 0xff, 0x2c, 0x12, 0x58, 0x2c, 0x9c, 0x83, 
+0x68, 0x60, 0xa7, 0xc0, 0x12, 0xac, 0x0a, 0x24, 
+0xda, 0x5f, 0xbb, 0xf7, 0x5f, 0x76, 0x60, 0x8b, 
+0x51, 0xf3, 0xe7, 0xd7, 0x22, 0xbf, 0xee, 0xec, 
+0xdf, 0x5d, 0xa3, 0x6e, 0xfe, 0x5c, 0x76, 0xa2, 
+0x07, 0x09, 0x01, 0x50, 0x5b, 0x84, 0x40, 0xa3, 
+0xf1, 0xad, 0x96, 0xee, 0x30, 0xe5, 0x21, 0xe0, 
+0xd7, 0x67, 0x1f, 0x4d, 0x68, 0xb5, 0x0c, 0x02, 
+0xc0, 0x5b, 0x5b, 0x65, 0x71, 0x02, 0x01, 0xe5, 
+0xe2, 0x04, 0x26, 0x34, 0x5d, 0x08, 0x07, 0xc0, 
+0x12, 0xb3, 0xbb, 0x7d, 0x2e, 0x7f, 0x18, 0x04, 
+0xc9, 0xd7, 0x03, 0x36, 0x10, 0x0e, 0x71, 0xaa, 
+0x4b, 0x83, 0xc5, 0xbd, 0x0e, 0x4a, 0x57, 0x02, 
+0xcc, 0x09, 0xf0, 0x05, 0x81, 0xbc, 0x12, 0xe0, 
+0x29, 0x80, 0xe6, 0x46, 0x7f, 0x89, 0x91, 0x10, 
+0xb0, 0x16, 0x27, 0x30, 0xc5, 0x42, 0x4e, 0x60, 
+0x7a, 0xab, 0x4d, 0xe4, 0x8b, 0x14, 0x45, 0xf9, 
+0xf3, 0xea, 0xd5, 0x63, 0xc7, 0x7d, 0x1b, 0x98, 
+0x21, 0xd5, 0x0e, 0x50, 0x70, 0xab, 0xd5, 0x41, 
+0xc1, 0xf0, 0xaa, 0x02, 0x05, 0x5f, 0x3e, 0x4f, 
+0x21, 0x23, 0x35, 0x42, 0x20, 0xf4, 0xd5, 0x12, 
+0xf2, 0x5c, 0xb4, 0x8d, 0xec, 0x2e, 0xc5, 0x3d, 
+0x01, 0xe0, 0x5f, 0x78, 0x0d, 0x83, 0x7f, 0x1e, 
+0xd5, 0x0e, 0xfe, 0xf5, 0x81, 0x00, 0x70, 0xca, 
+0x8c, 0xd2, 0x7b, 0xfa, 0xbf, 0x50, 0x81, 0xb8, 
+0xdf, 0xbb, 0x18, 0xd7, 0xcb, 0x7b, 0xff, 0x5d, 
+0x78, 0x92, 0x37, 0x1c, 0xe7, 0xcb, 0x96, 0xbe, 
+0x4a, 0xf0, 0x0f, 0x92, 0xfc, 0x78, 0xfc, 0x2f, 
+0x59, 0xfa, 0xaa, 0x83, 0x7f, 0xb0, 0x26, 0xe0, 
+0x75, 0x01, 0xaf, 0x0d, 0xd8, 0x03, 0x20, 0xcf, 
+0x60, 0xef, 0xef, 0x74, 0xd3, 0x38, 0xda, 0x97, 
+0x5f, 0x77, 0x93, 0x95, 0xbd, 0xbf, 0xd2, 0xfc, 
+0x37, 0x8a, 0xbe, 0x23, 0x04, 0x40, 0xad, 0xab, 
+0xd7, 0x9e, 0x73, 0x6b, 0x33, 0xa9, 0xcd, 0xaa, 
+0x63, 0xf0, 0x10, 0x30, 0xba, 0x18, 0xf0, 0xee, 
+0x95, 0x4f, 0x63, 0x5a, 0x2c, 0x28, 0x45, 0x08, 
+0x54, 0x8e, 0x13, 0x18, 0x0e, 0x21, 0x10, 0xd2, 
+0x25, 0xa7, 0xd4, 0x00, 0x21, 0xae, 0x45, 0xbd, 
+0xf6, 0x4b, 0xeb, 0x81, 0x51, 0xda, 0x58, 0x62, 
+0x66, 0x06, 0xd4, 0x2b, 0x04, 0x4e, 0x12, 0xb4, 
+0x81, 0x45, 0x2f, 0xb3, 0x02, 0x2e, 0x6d, 0x12, 
+0x91, 0x4c, 0xb8, 0x1b, 0xcd, 0x73, 0x15, 0x8d, 
+0xc3, 0xf5, 0x00, 0x8b, 0x83, 0x09, 0x98, 0x10, 
+0x38, 0xe3, 0xed, 0xfe, 0x1d, 0x33, 0x25, 0x0f, 
+0x81, 0x69, 0xcd, 0x63, 0xad, 0xc8, 0x09, 0xac, 
+0xb1, 0x98, 0x13, 0x70, 0x42, 0xc6, 0x40, 0x80, 
+0x72, 0x31, 0x50, 0xf2, 0xc8, 0xbd, 0x6b, 0xce, 
+0xc3, 0x89, 0xcd, 0x56, 0x56, 0x03, 0x28, 0x98, 
+0x6a, 0x06, 0x14, 0xcc, 0x2d, 0x15, 0x14, 0xd4, 
+0x08, 0x81, 0xda, 0x07, 0x0a, 0xce, 0x1a, 0x70, 
+0x9a, 0x42, 0x86, 0x6a, 0x84, 0x40, 0x08, 0x80, 
+0x41, 0xb7, 0xb5, 0xd9, 0x08, 0x54, 0x59, 0x53, 
+0xa1, 0xd1, 0xff, 0xa4, 0x7a, 0x09, 0xfe, 0x05, 
+0xd6, 0x79, 0xf0, 0x6f, 0xe0, 0x79, 0x8e, 0xfb, 
+0xd5, 0xed, 0xfe, 0x67, 0x67, 0x27, 0x55, 0x68, 
+0xef, 0x9f, 0x9c, 0x9c, 0x2c, 0x09, 0x80, 0x0c, 
+0xb6, 0xe8, 0xd5, 0x8e, 0xf3, 0x6f, 0xaa, 0xc7, 
+0xf9, 0x98, 0x04, 0xf0, 0x44, 0xe0, 0x1d, 0x84, 
+0xfd, 0x7c, 0xc5, 0xc1, 0x3f, 0x00, 0xff, 0xde, 
+0x05, 0x00, 0xb8, 0x15, 0x1f, 0xcf, 0xa1, 0x40, 
+0x9f, 0x22, 0xf8, 0xe7, 0xfe, 0xcf, 0x3f, 0xd3, 
+0x2d, 0x80, 0x82, 0x05, 0x00, 0x06, 0x8b, 0x00, 
+0x0e, 0x16, 0xe0, 0x4a, 0x40, 0xd9, 0xfb, 0x67, 
+0xf1, 0xde, 0x3f, 0xd9, 0xe4, 0xb9, 0x9f, 0xcd, 
+0xed, 0x55, 0xe4, 0xb1, 0x3f, 0x49, 0xdd, 0xfc, 
+0x2f, 0xa3, 0xfe, 0x4f, 0xf4, 0x1b, 0x21, 0x00, 
+0x6a, 0xaf, 0x87, 0x40, 0x03, 0xcf, 0xde, 0x93, 
+0xdb, 0xc5, 0x5e, 0x31, 0xe5, 0x21, 0xe0, 0xd1, 
+0x23, 0x8f, 0x46, 0x36, 0x8b, 0x34, 0x2f, 0x04, 
+0x2a, 0xc8, 0x09, 0x38, 0xb4, 0x8a, 0x31, 0xb2, 
+0x15, 0x56, 0xaf, 0x06, 0xd8, 0x40, 0xc8, 0xbe, 
+0x55, 0x2c, 0xae, 0x08, 0x16, 0x4a, 0x62, 0x60, 
+0x0a, 0x4e, 0xed, 0xe2, 0x5e, 0xbc, 0xa0, 0x17, 
+0x37, 0x3c, 0x05, 0x81, 0x3d, 0x32, 0x34, 0x38, 
+0x46, 0x3a, 0x21, 0x5c, 0x28, 0x35, 0xff, 0x55, 
+0x10, 0x08, 0xea, 0xdf, 0x8f, 0xc5, 0x06, 0x8b, 
+0x86, 0x80, 0x8e, 0x59, 0x55, 0xc0, 0x09, 0xac, 
+0x2d, 0x93, 0x13, 0x70, 0x69, 0x9f, 0x49, 0x41, 
+0x7d, 0x0f, 0x6a, 0x2f, 0x06, 0x8e, 0x3e, 0x70, 
+0xee, 0x94, 0x06, 0x6b, 0xe1, 0x65, 0xe5, 0x06, 
+0x05, 0xa7, 0x5a, 0x08, 0x0a, 0xce, 0xa8, 0x30, 
+0x28, 0xb8, 0xd3, 0x0c, 0x28, 0x58, 0x68, 0x06, 
+0x14, 0x3c, 0x52, 0xe5, 0xa0, 0x20, 0x57, 0xf8, 
+0xb0, 0x13, 0x14, 0x3a, 0x40, 0xeb, 0xcc, 0x38, 
+0xea, 0x10, 0x39, 0xe3, 0x06, 0x7b, 0xf2, 0xed, 
+0xaa, 0x05, 0xff, 0xc6, 0xd5, 0x30, 0xf8, 0x67, 
+0xcd, 0xa7, 0xff, 0xda, 0x0a, 0xfe, 0xf1, 0xd3, 
+0xbf, 0xab, 0x14, 0xf8, 0xa3, 0x13, 0x00, 0xb7, 
+0xca, 0x19, 0xf7, 0xab, 0xde, 0xfb, 0x73, 0xb3, 
+0xde, 0x8f, 0xa6, 0xbd, 0x03, 0x3b, 0x7e, 0xf5, 
+0x38, 0x9f, 0x19, 0x80, 0x6c, 0x3c, 0xc1, 0x9f, 
+0xc6, 0x8a, 0x80, 0x83, 0x7f, 0x7e, 0x44, 0xf0, 
+0x0f, 0x9f, 0xfe, 0xf1, 0x09, 0xe0, 0x21, 0x7c, 
+0xbc, 0x1c, 0xfc, 0xf3, 0xd1, 0x07, 0x1f, 0x48, 
+0xd0, 0x20, 0x9f, 0x0c, 0xf2, 0xe9, 0xa0, 0x7a, 
+0xef, 0x1f, 0x76, 0x66, 0x93, 0x51, 0xb4, 0xaf, 
+0xd4, 0xfc, 0xf1, 0x3a, 0x73, 0x3e, 0x9e, 0xa0, 
+0x6e, 0xfe, 0xdf, 0xa2, 0xda, 0x8b, 0x1e, 0x23, 
+0x04, 0x40, 0x9d, 0xa8, 0x81, 0x0d, 0xfd, 0xde, 
+0x02, 0x10, 0xf8, 0x91, 0x29, 0x0f, 0x01, 0x97, 
+0x6e, 0x19, 0x34, 0xac, 0x49, 0x38, 0xbd, 0xf9, 
+0xbc, 0x97, 0x22, 0x04, 0x2c, 0xe1, 0x04, 0xde, 
+0x2a, 0x83, 0x13, 0xe0, 0x0b, 0x01, 0x8f, 0x76, 
+0x1b, 0xf4, 0x82, 0x81, 0x18, 0xf0, 0x9b, 0x0c, 
+0x2e, 0x80, 0xcf, 0x08, 0xf9, 0xdf, 0xd7, 0xbf, 
+0x7c, 0x51, 0x32, 0x1c, 0x62, 0x11, 0xc0, 0x4c, 
+0x40, 0x74, 0xff, 0x93, 0x7a, 0x57, 0x01, 0x3c, 
+0x1d, 0x90, 0xed, 0x86, 0x59, 0x08, 0xf0, 0x8a, 
+0xa0, 0xac, 0xe4, 0xc1, 0xa9, 0xcd, 0x63, 0xf4, 
+0xd7, 0x03, 0xd5, 0xc2, 0x09, 0x68, 0x2e, 0x06, 
+0x70, 0x29, 0xf0, 0x58, 0x1b, 0xe2, 0x74, 0xdf, 
+0xb1, 0x7d, 0xb2, 0x59, 0x50, 0xd0, 0xa6, 0xce, 
+0x80, 0x82, 0x87, 0xcd, 0x80, 0x82, 0x27, 0xad, 
+0x0b, 0x0a, 0xc2, 0x5a, 0x98, 0x41, 0x41, 0x5e, 
+0x09, 0x48, 0xce, 0x8c, 0x53, 0x8b, 0x68, 0xfa, 
+0xee, 0x24, 0x01, 0xfe, 0x95, 0xcb, 0xef, 0xbf, 
+0x76, 0x81, 0x7f, 0x43, 0x4f, 0x06, 0x90, 0xd7, 
+0x36, 0x9d, 0x00, 0x58, 0x54, 0x81, 0xb8, 0xdf, 
+0x63, 0x30, 0xf8, 0x91, 0xf7, 0xfe, 0x05, 0xd8, 
+0xed, 0x33, 0xdd, 0xff, 0xb6, 0x89, 0x71, 0x3e, 
+0x9b, 0xfb, 0xfc, 0x55, 0x1d, 0xfc, 0x03, 0xaa, 
+0x9f, 0x4d, 0x80, 0xd8, 0x0c, 0xe8, 0x27, 0x04, 
+0xff, 0x7c, 0xce, 0xc1, 0x3f, 0xf0, 0x0e, 0x60, 
+0xa7, 0xc0, 0x93, 0x10, 0x0a, 0xea, 0xbd, 0xff, 
+0xd2, 0x03, 0x29, 0x46, 0xd1, 0xbe, 0x12, 0xf1, 
+0x8f, 0xd7, 0x98, 0xdd, 0x3b, 0xab, 0xd5, 0xcd, 
+0x9f, 0xcb, 0x46, 0xf4, 0x15, 0x21, 0x00, 0xea, 
+0x5c, 0x0d, 0x6e, 0x1c, 0x34, 0x05, 0x1e, 0x02, 
+0x5f, 0x18, 0x79, 0x08, 0xc0, 0x0a, 0x77, 0x46, 
+0xe7, 0xcd, 0x34, 0xb8, 0x51, 0xb0, 0x4a, 0x08, 
+0x94, 0x87, 0x13, 0x08, 0x34, 0xcb, 0x09, 0x8c, 
+0x6c, 0x3c, 0x4b, 0xf2, 0x11, 0xe0, 0xe4, 0x41, 
+0xbe, 0x1c, 0xb0, 0x69, 0xb6, 0x44, 0x59, 0x13, 
+0xb0, 0x6d, 0xb0, 0x27, 0x9a, 0xe5, 0x48, 0x58, 
+0x10, 0x73, 0xa3, 0x5f, 0xd2, 0xfb, 0x90, 0xde, 
+0x24, 0x80, 0xd7, 0x01, 0xf2, 0xe5, 0x00, 0x0b, 
+0x86, 0xb2, 0x18, 0x03, 0x86, 0x11, 0x3d, 0xdb, 
+0xa5, 0xa8, 0x46, 0xf1, 0xcb, 0xac, 0xcf, 0x09, 
+0x18, 0x4c, 0x05, 0x64, 0x21, 0xc0, 0xcd, 0xda, 
+0x13, 0x31, 0xc9, 0x98, 0x04, 0x3c, 0xd6, 0x58, 
+0x0b, 0xef, 0xff, 0x79, 0x5a, 0x9b, 0x84, 0x27, 
+0x02, 0x14, 0x8c, 0xb0, 0x22, 0x28, 0x38, 0xbf, 
+0xc7, 0x25, 0x0a, 0x19, 0x57, 0xac, 0x58, 0x0b, 
+0xfb, 0x7a, 0xec, 0x21, 0xbb, 0x92, 0xf8, 0x2a, 
+0x06, 0xff, 0x16, 0xd6, 0x30, 0xf8, 0x17, 0x5c, 
+0xef, 0xc0, 0x3f, 0x7e, 0xfa, 0x77, 0xcf, 0x88, 
+0x55, 0x04, 0x80, 0x17, 0x4e, 0x00, 0x3f, 0xf9, 
+0xf7, 0x3f, 0x2a, 0xbc, 0xf7, 0xdf, 0x8e, 0xdd, 
+0xbe, 0x34, 0xce, 0x07, 0xb4, 0x27, 0x8f, 0xf3, 
+0x6f, 0xab, 0xc6, 0xf9, 0x77, 0x60, 0xe9, 0xcb, 
+0xc1, 0x3f, 0x9f, 0x20, 0xf8, 0xe7, 0xd8, 0xa1, 
+0x43, 0xb4, 0x1d, 0xf6, 0xbf, 0x97, 0x60, 0x03, 
+0xfc, 0x2d, 0xd6, 0x07, 0x1c, 0xfc, 0x73, 0x01, 
+0xc1, 0x3f, 0xdc, 0xfc, 0x8f, 0xf3, 0xaa, 0x00, 
+0x13, 0x00, 0x79, 0xf4, 0x1f, 0xbf, 0x23, 0x95, 
+0x66, 0xdc, 0x32, 0x8e, 0xf6, 0xe5, 0xd7, 0xd8, 
+0xe4, 0xf7, 0x60, 0x55, 0xbc, 0x67, 0xb3, 0xaa, 
+0xf9, 0xa7, 0xc4, 0x89, 0x5e, 0x22, 0x04, 0x40, 
+0x1d, 0xe6, 0x03, 0x5c, 0x7e, 0x3d, 0xac, 0x69, 
+0x78, 0x80, 0x63, 0xe7, 0x4d, 0xdf, 0x19, 0x7b, 
+0x08, 0x14, 0x13, 0x04, 0x02, 0x0d, 0x6a, 0x18, 
+0x60, 0x46, 0x08, 0x58, 0xc7, 0x6e, 0x38, 0xbc, 
+0xeb, 0x36, 0xbd, 0xc6, 0x3d, 0xbb, 0x7b, 0x3e, 
+0x2c, 0x85, 0x23, 0xa5, 0xf5, 0x40, 0x6c, 0xff, 
+0xd3, 0xaa, 0xa9, 0xc1, 0x59, 0xc9, 0x60, 0x68, 
+0x82, 0xca, 0x74, 0x48, 0x5d, 0x3c, 0x15, 0x60, 
+0xb7, 0xc1, 0x04, 0x55, 0xe8, 0x10, 0x57, 0x60, 
+0xa7, 0x6c, 0x03, 0x60, 0xd0, 0x70, 0x3d, 0x50, 
+0x75, 0x9c, 0x80, 0x03, 0x2e, 0x06, 0x7c, 0xba, 
+0xe5, 0x33, 0x1b, 0x20, 0x09, 0x01, 0xdf, 0x5e, 
+0x7b, 0xee, 0x4f, 0xc6, 0xa4, 0xa3, 0x74, 0x50, 
+0x30, 0xca, 0x0c, 0x28, 0x18, 0xf7, 0xc4, 0x82, 
+0x82, 0x73, 0x60, 0x2d, 0x1c, 0x3c, 0x56, 0x2b, 
+0x56, 0x71, 0x3e, 0xe8, 0x35, 0x73, 0x3b, 0x4d, 
+0x39, 0xb7, 0xa6, 0x96, 0x80, 0x7f, 0x91, 0x02, 
+0xfc, 0x2b, 0x03, 0xfc, 0x1b, 0x55, 0x1c, 0x26, 
+0x35, 0x7f, 0x59, 0x00, 0x44, 0x97, 0x33, 0xee, 
+0xf7, 0x1b, 0x38, 0xf4, 0xc9, 0x7b, 0xff, 0x74, 
+0x9c, 0xea, 0x31, 0xdc, 0xc7, 0xce, 0x7e, 0x1f, 
+0xc2, 0x04, 0xc8, 0x70, 0x9c, 0xcf, 0xc1, 0x3e, 
+0x3f, 0xc0, 0xd2, 0x57, 0x09, 0xfe, 0x41, 0x73, 
+0xe7, 0x1f, 0xf9, 0xdf, 0x7f, 0x50, 0x07, 0xff, 
+0xe0, 0xe3, 0x0b, 0x71, 0xf7, 0xaf, 0xb1, 0xfa, 
+0x4d, 0x93, 0xf6, 0xfe, 0x9e, 0x57, 0x93, 0x8c, 
+0xa2, 0x7d, 0x59, 0x6c, 0x4e, 0xba, 0xbd, 0x92, 
+0x3c, 0xf5, 0xf6, 0xfe, 0x29, 0x17, 0x50, 0xbf, 
+0x13, 0x7d, 0x44, 0x08, 0x80, 0xfa, 0x20, 0x04, 
+0xfe, 0x6f, 0x64, 0xf3, 0xc8, 0xa5, 0x4e, 0x5d, 
+0xd3, 0xee, 0x19, 0x7a, 0x08, 0x04, 0xc1, 0x43, 
+0x60, 0x4a, 0xbb, 0xb5, 0xd2, 0xe9, 0x60, 0x99, 
+0x42, 0xa0, 0x12, 0x7e, 0x02, 0x1c, 0x2a, 0xa4, 
+0x6e, 0xda, 0xab, 0xfa, 0x1d, 0xc3, 0xd8, 0x7f, 
+0x19, 0x4d, 0x6b, 0x19, 0xa5, 0xf7, 0x76, 0x36, 
+0x11, 0xe2, 0x15, 0x81, 0x61, 0xf3, 0x9f, 0x27, 
+0xd9, 0x0c, 0x6b, 0xd6, 0x03, 0x63, 0x9b, 0x2c, 
+0x92, 0x84, 0x80, 0x9a, 0x0d, 0x70, 0x87, 0x0f, 
+0x81, 0xfa, 0x7a, 0xa0, 0x6a, 0xfc, 0x04, 0x4a, 
+0x5f, 0x0f, 0x4c, 0x6f, 0xbd, 0x89, 0xfc, 0x7a, 
+0xee, 0xd3, 0x65, 0x37, 0x74, 0xdf, 0xf6, 0x60, 
+0x52, 0xf3, 0xa8, 0x72, 0x82, 0x82, 0x6b, 0xcd, 
+0x80, 0x82, 0x1b, 0xcd, 0x80, 0x82, 0x69, 0xf5, 
+0x06, 0x14, 0x9c, 0xfd, 0xda, 0x59, 0x0a, 0x1e, 
+0xa1, 0x11, 0x02, 0x6c, 0x28, 0xe4, 0xb6, 0x3c, 
+0x9b, 0x6c, 0xaf, 0x46, 0x57, 0x21, 0xf8, 0x37, 
+0x5f, 0x80, 0x7f, 0x95, 0x04, 0xff, 0xfa, 0x22, 
+0xee, 0xd7, 0x33, 0x73, 0xb5, 0x22, 0x00, 0xbc, 
+0x72, 0x57, 0xd3, 0x97, 0xff, 0xfd, 0xba, 0x5c, 
+0x7b, 0x7f, 0xa6, 0xf3, 0xb9, 0xf9, 0xb3, 0x08, 
+0xd8, 0x0b, 0xe0, 0x4f, 0x19, 0xe7, 0xb3, 0xa5, 
+0x2f, 0xc6, 0xf9, 0xa7, 0xb4, 0xe3, 0x7c, 0x7e, 
+0xb2, 0xe7, 0x27, 0x7c, 0x8e, 0xf8, 0xe5, 0x27, 
+0x7e, 0x7e, 0xf2, 0xe7, 0x09, 0x00, 0x4f, 0x02, 
+0x78, 0x22, 0xc0, 0x93, 0x01, 0x09, 0xf8, 0xc3, 
+0xa4, 0xe0, 0x38, 0x46, 0xff, 0xd2, 0xde, 0x3f, 
+0x5d, 0xb3, 0xf7, 0x0f, 0x3d, 0xbb, 0xc9, 0xe8, 
+0xd6, 0x9f, 0x57, 0x4d, 0xfc, 0xda, 0x72, 0x3e, 
+0xa6, 0xde, 0xfb, 0xa7, 0x7c, 0x8d, 0x6a, 0x23, 
+0x7a, 0x87, 0x10, 0x00, 0xf5, 0x4d, 0x08, 0x3c, 
+0x3d, 0xba, 0xc5, 0xfc, 0x64, 0x53, 0x1e, 0x02, 
+0x01, 0x7d, 0x8b, 0x08, 0x89, 0x84, 0x68, 0xfc, 
+0x5e, 0x92, 0x10, 0xa8, 0x0c, 0x27, 0x30, 0xd8, 
+0x04, 0x27, 0x30, 0xac, 0xd1, 0x4c, 0x0a, 0xeb, 
+0x9a, 0x67, 0xd4, 0xd8, 0xd5, 0x57, 0x01, 0x9a, 
+0x35, 0xc1, 0x7b, 0x68, 0xf0, 0x0b, 0x8c, 0x4c, 
+0x82, 0x38, 0x65, 0xd0, 0x1e, 0x4f, 0xd6, 0x6a, 
+0x4e, 0x20, 0xb8, 0xb3, 0xee, 0x0a, 0x81, 0x03, 
+0x87, 0x1c, 0x5b, 0xc5, 0x49, 0xd7, 0x03, 0xe5, 
+0x3d, 0x23, 0xac, 0x3c, 0x27, 0xa0, 0x6b, 0xda, 
+0x4e, 0x6d, 0xb7, 0x50, 0x40, 0xef, 0xfd, 0xf2, 
+0xba, 0xe5, 0x91, 0x6b, 0x97, 0xac, 0xc7, 0x13, 
+0xe0, 0x86, 0x58, 0xb5, 0xa0, 0xe0, 0x16, 0x33, 
+0xa0, 0x60, 0x8e, 0x19, 0x50, 0x30, 0xbf, 0xc6, 
+0x40, 0xc1, 0xb2, 0x84, 0xc0, 0xcc, 0xc1, 0x27, 
+0x29, 0x64, 0xb0, 0xe6, 0x62, 0x20, 0x78, 0xc8, 
+0x61, 0x72, 0x4e, 0x4c, 0xa5, 0x49, 0x37, 0x57, 
+0xd6, 0x3c, 0xf8, 0x57, 0x86, 0xdf, 0xff, 0x93, 
+0x08, 0xfe, 0x71, 0xdc, 0xaf, 0xd2, 0xfc, 0x51, 
+0xeb, 0xcb, 0x19, 0xf7, 0xab, 0xde, 0xfb, 0xef, 
+0xc2, 0x5d, 0x3f, 0xa7, 0xf9, 0x5d, 0x94, 0xc7, 
+0xf9, 0xb0, 0xf4, 0x95, 0xc7, 0xf9, 0xbc, 0xd3, 
+0xff, 0x3b, 0xc4, 0x00, 0xef, 0xf8, 0x6f, 0xc0, 
+0xd2, 0x97, 0x45, 0x02, 0xef, 0xfe, 0x99, 0x01, 
+0x60, 0x16, 0x80, 0x99, 0x00, 0x39, 0xf8, 0xe7, 
+0x2c, 0xb8, 0x01, 0x79, 0xe7, 0xcf, 0xb5, 0xe4, 
+0xe0, 0x66, 0xe9, 0xdc, 0xcf, 0xce, 0xe0, 0xdc, 
+0x8f, 0x9b, 0xbf, 0xdd, 0x05, 0xf5, 0xde, 0x3f, 
+0xe5, 0x31, 0x6a, 0x9c, 0xe8, 0x17, 0x42, 0x00, 
+0xd4, 0x67, 0x21, 0xd0, 0x78, 0x5c, 0xab, 0x25, 
+0xf9, 0xf0, 0x10, 0x78, 0x6c, 0xec, 0x21, 0xb0, 
+0x97, 0xc6, 0xb7, 0x5c, 0x42, 0x6f, 0x3e, 0xe7, 
+0x69, 0x20, 0x04, 0x2a, 0xc1, 0x09, 0xa8, 0xa6, 
+0x02, 0x8e, 0xad, 0xd7, 0x50, 0xc2, 0xcb, 0xef, 
+0x9a, 0xdd, 0xed, 0xbb, 0xb4, 0x4d, 0xc0, 0x13, 
+0xfe, 0x5e, 0x93, 0xef, 0x5b, 0x88, 0xd3, 0x42, 
+0xbe, 0x1a, 0x90, 0x85, 0x40, 0x48, 0xe7, 0x5c, 
+0x3d, 0x31, 0x31, 0x01, 0x8d, 0x56, 0x23, 0x02, 
+0x4a, 0x13, 0x02, 0x55, 0xcf, 0x09, 0x70, 0xb9, 
+0x76, 0xc8, 0xc0, 0xc5, 0xc0, 0xa1, 0xc7, 0x1a, 
+0x6b, 0xe1, 0x23, 0xbf, 0xcc, 0xe8, 0x98, 0x82, 
+0xc9, 0xc6, 0xd2, 0x7a, 0x07, 0x0a, 0x86, 0x59, 
+0x08, 0x0a, 0xce, 0xa9, 0x00, 0x28, 0xc8, 0xef, 
+0x0b, 0x1d, 0x05, 0x50, 0xf0, 0x4d, 0xcd, 0xc5, 
+0x40, 0xe0, 0xb8, 0x03, 0xe4, 0x98, 0x93, 0x54, 
+0x65, 0xe0, 0x5f, 0x4d, 0xf8, 0xfd, 0xd7, 0x75, 
+0xf0, 0x4f, 0x13, 0xf7, 0xab, 0x7b, 0xfa, 0xf7, 
+0xc9, 0x5e, 0x43, 0xdf, 0xff, 0xf4, 0x3f, 0x8b, 
+0x9b, 0xff, 0xfb, 0xb8, 0xe7, 0x97, 0xf7, 0xfe, 
+0xb9, 0x68, 0xdc, 0x7a, 0xe3, 0x7c, 0xad, 0xa5, 
+0xaf, 0x12, 0xfc, 0x83, 0x35, 0x00, 0xaf, 0x03, 
+0x64, 0x4b, 0x5f, 0x25, 0xf8, 0x07, 0x57, 0x00, 
+0x7c, 0x0d, 0x70, 0x1a, 0x42, 0x82, 0xaf, 0x03, 
+0xce, 0xc2, 0x1a, 0x98, 0x2f, 0x09, 0xd8, 0x3d, 
+0x90, 0x9b, 0x7f, 0x1c, 0xf6, 0xfe, 0xd3, 0x6f, 
+0x19, 0x9f, 0xfb, 0x71, 0xf3, 0xb7, 0xbd, 0x16, 
+0x45, 0xbe, 0xbb, 0xe5, 0x7b, 0x7f, 0xfe, 0x31, 
+0x25, 0x56, 0xf4, 0x08, 0x21, 0x00, 0x9e, 0x88, 
+0x7a, 0xf5, 0x59, 0x97, 0x76, 0x13, 0xdb, 0xac, 
+0x3c, 0x61, 0xda, 0x43, 0x60, 0x27, 0x8d, 0x6e, 
+0x3e, 0xcf, 0x02, 0x21, 0x50, 0x7e, 0x4e, 0x60, 
+0x4c, 0x93, 0xb9, 0xb4, 0xb4, 0xcf, 0xa1, 0x52, 
+0x05, 0xc0, 0x8c, 0x36, 0xeb, 0xc8, 0xa3, 0x7d, 
+0x52, 0xa9, 0xef, 0xdf, 0xf4, 0xea, 0x75, 0x9a, 
+0x03, 0x81, 0xc0, 0xe6, 0x42, 0x1c, 0x52, 0xc4, 
+0xae, 0x83, 0xf2, 0xfb, 0xc2, 0x01, 0xe6, 0xc9, 
+0x69, 0x84, 0xb2, 0x9f, 0x00, 0x57, 0xe9, 0x42, 
+0xc0, 0x92, 0xf5, 0x40, 0xc5, 0x38, 0x01, 0xbb, 
+0x16, 0x09, 0xe4, 0xde, 0x29, 0x97, 0x05, 0x80, 
+0x24, 0x04, 0x82, 0xfa, 0x1d, 0xbc, 0xef, 0xd0, 
+0x6e, 0x63, 0xad, 0x04, 0x05, 0xbd, 0x2d, 0x04, 
+0x05, 0x83, 0xcc, 0x82, 0x82, 0xc7, 0xcd, 0x80, 
+0x82, 0xe7, 0xcc, 0x80, 0x82, 0x57, 0xcc, 0x83, 
+0x82, 0xdd, 0xae, 0x50, 0xf0, 0xb8, 0xc3, 0x14, 
+0xfa, 0x8a, 0x66, 0x7d, 0xe5, 0xe7, 0xb0, 0x8f, 
+0xa6, 0x15, 0xc5, 0x59, 0xec, 0xf7, 0x5f, 0x5f, 
+0xc1, 0xbf, 0xd7, 0x6b, 0x01, 0xf8, 0x67, 0xbb, 
+0x6b, 0x81, 0xde, 0xd3, 0x7f, 0x79, 0xe2, 0x7e, 
+0xd5, 0x7b, 0xff, 0x34, 0x34, 0x6a, 0x0e, 0xf3, 
+0x29, 0x51, 0x8f, 0xf3, 0x61, 0xe9, 0xcb, 0x1e, 
+0x00, 0x3c, 0xce, 0xe7, 0x7b, 0x7e, 0x06, 0x01, 
+0x19, 0x08, 0xe4, 0x3b, 0x7f, 0x06, 0x04, 0xf9, 
+0xee, 0x9f, 0xef, 0xff, 0xbf, 0x86, 0x0f, 0x00, 
+0xfb, 0x01, 0xb0, 0xcd, 0x2f, 0xfb, 0x03, 0xe8, 
+0xf6, 0xfe, 0x9a, 0x7b, 0x7f, 0xf7, 0xab, 0x1b, 
+0x4c, 0x34, 0x7f, 0x7c, 0x9d, 0xdf, 0x82, 0x5d, 
+0x71, 0x51, 0x92, 0xdc, 0xf8, 0xb9, 0xce, 0xa2, 
+0x7e, 0x2b, 0x7a, 0x83, 0x10, 0x00, 0x4f, 0x96, 
+0xab, 0xe0, 0xf3, 0x1e, 0xfd, 0x6c, 0xdb, 0xc5, 
+0xbe, 0xe7, 0xdf, 0xb7, 0xd0, 0x48, 0x08, 0xb8, 
+0x77, 0xcf, 0x25, 0x84, 0x11, 0xd1, 0x1b, 0x92, 
+0x10, 0xf0, 0xb4, 0x12, 0x27, 0xa0, 0x59, 0x0f, 
+0xb8, 0xe2, 0x49, 0x7f, 0x79, 0xdf, 0x23, 0x7a, 
+0xcd, 0x9d, 0xaf, 0x01, 0xc6, 0x00, 0x0e, 0x1c, 
+0xd1, 0x70, 0x96, 0x14, 0x38, 0x24, 0xbf, 0x7d, 
+0x3d, 0x88, 0x7f, 0x36, 0x1e, 0x52, 0xdb, 0x10, 
+0x73, 0x0a, 0x61, 0x44, 0xd7, 0x1d, 0x7a, 0x3c, 
+0x40, 0x12, 0x56, 0x01, 0xb6, 0xf0, 0x1a, 0x18, 
+0x23, 0x79, 0x09, 0x2c, 0xa5, 0x05, 0x3d, 0x8b, 
+0xa4, 0xa0, 0x22, 0x9e, 0x3a, 0x2c, 0x02, 0x44, 
+0xe8, 0xd2, 0x76, 0xa3, 0x85, 0x9c, 0xc0, 0x4a, 
+0xab, 0x71, 0x02, 0x76, 0x2d, 0xd6, 0x93, 0x17, 
+0xd8, 0x06, 0xd9, 0x5a, 0xd8, 0xbf, 0x77, 0xc1, 
+0xfd, 0xa9, 0xad, 0xe3, 0xa4, 0xff, 0x0e, 0x6b, 
+0x83, 0x82, 0xd3, 0x2d, 0x04, 0x05, 0xdd, 0x6b, 
+0x15, 0x28, 0x78, 0xc9, 0xa2, 0xb5, 0xc0, 0xbc, 
+0xde, 0x17, 0x29, 0x68, 0xfc, 0x21, 0x9d, 0x33, 
+0xa3, 0xef, 0x4e, 0xb2, 0x3d, 0x11, 0x2b, 0xc0, 
+0x3f, 0x0b, 0xc1, 0xbf, 0x97, 0xad, 0x0c, 0xfe, 
+0x71, 0xdc, 0xaf, 0x57, 0x8e, 0xee, 0xe9, 0xdf, 
+0x3f, 0x6b, 0x9d, 0xc5, 0x71, 0xbf, 0x86, 0x7b, 
+0xff, 0x1d, 0xf8, 0xb9, 0x7a, 0x9c, 0xff, 0x31, 
+0x8f, 0xf3, 0x61, 0xe9, 0xbb, 0x13, 0x96, 0xbe, 
+0x7c, 0xfa, 0xc7, 0x27, 0x80, 0x7c, 0x0a, 0xc8, 
+0x0e, 0x7f, 0x6c, 0xe9, 0x2b, 0x07, 0xff, 0xb0, 
+0x03, 0x20, 0x3b, 0x01, 0x32, 0x34, 0xc8, 0x53, 
+0x81, 0x93, 0x78, 0x3b, 0x37, 0x7f, 0x06, 0x09, 
+0x79, 0xef, 0x1f, 0xfc, 0x76, 0xb2, 0x51, 0xb4, 
+0x2f, 0x83, 0xa5, 0xbc, 0x46, 0x72, 0x2e, 0x49, 
+0x50, 0x37, 0xff, 0x2f, 0x51, 0x2d, 0x45, 0x3f, 
+0x10, 0x02, 0xe0, 0x89, 0xad, 0x01, 0x0d, 0x7c, 
+0x87, 0x4e, 0x6d, 0xbf, 0xee, 0x63, 0x53, 0x1e, 
+0x02, 0xce, 0x5d, 0xd3, 0x11, 0x3f, 0x1c, 0xaa, 
+0x11, 0x02, 0x46, 0x53, 0x81, 0xca, 0x71, 0x02, 
+0x13, 0x9b, 0x2d, 0x22, 0xe7, 0xb6, 0x71, 0xe4, 
+0xd6, 0x2e, 0x11, 0xd7, 0x01, 0xb3, 0x95, 0xdc, 
+0x81, 0x19, 0xad, 0xd7, 0xe9, 0xd3, 0xfe, 0x9d, 
+0x33, 0xc1, 0x07, 0xcc, 0x07, 0x4b, 0xb0, 0x55, 
+0xda, 0xf9, 0xab, 0x21, 0x40, 0xf5, 0xc7, 0xf1, 
+0x74, 0x80, 0xd7, 0x03, 0x1e, 0xed, 0x36, 0x99, 
+0x9c, 0x20, 0xf0, 0xe5, 0x01, 0x07, 0x12, 0x55, 
+0xd4, 0x6e, 0xb8, 0xa2, 0x9c, 0x80, 0x43, 0xab, 
+0x8d, 0xe4, 0xd3, 0x7d, 0x97, 0x6e, 0xca, 0xd2, 
+0x23, 0xff, 0x81, 0x6d, 0xcb, 0xd8, 0x32, 0xad, 
+0x85, 0x27, 0x5b, 0x68, 0x2d, 0xfc, 0xa4, 0x80, 
+0x82, 0x91, 0x2f, 0x9d, 0xa3, 0xa0, 0x31, 0x5a, 
+0x43, 0x26, 0x4c, 0x05, 0xdc, 0xe7, 0xe4, 0xd0, 
+0xc4, 0x77, 0x57, 0x0a, 0xf0, 0xaf, 0x1a, 0xc1, 
+0x3f, 0x16, 0x00, 0xd3, 0xb6, 0x2e, 0x45, 0xe3, 
+0x8f, 0x55, 0x04, 0x40, 0xfe, 0x19, 0xcb, 0xe3, 
+0x7e, 0x8f, 0xa3, 0x51, 0xcb, 0x7b, 0xff, 0xed, 
+0x68, 0xfe, 0xbb, 0x4d, 0x8d, 0xf3, 0xd9, 0xd2, 
+0x57, 0x1d, 0xfc, 0x03, 0x33, 0x20, 0xf6, 0xf8, 
+0x67, 0xaf, 0x7f, 0xf6, 0xfc, 0x7f, 0xc8, 0xc1, 
+0x3f, 0xc8, 0x00, 0xe0, 0x2c, 0x00, 0xce, 0x04, 
+0xb8, 0x80, 0x29, 0x80, 0xbc, 0xf7, 0xe7, 0xe6, 
+0xbf, 0x18, 0x7b, 0x7f, 0x7b, 0x13, 0xe7, 0x7e, 
+0x0c, 0x92, 0xda, 0x9d, 0x8f, 0x55, 0x37, 0xff, 
+0x47, 0xa8, 0x91, 0xa2, 0x07, 0x08, 0x01, 0x20, 
+0x8a, 0x3d, 0x04, 0x1a, 0x05, 0xda, 0xe3, 0x44, 
+0xf0, 0xcb, 0xe0, 0xfe, 0xc5, 0x06, 0x1e, 0x02, 
+0x47, 0x09, 0xb1, 0xc4, 0x88, 0x1f, 0x0e, 0x80, 
+0x10, 0xf0, 0xa8, 0x32, 0x4e, 0x40, 0x77, 0x3d, 
+0x10, 0xae, 0xe7, 0x15, 0x90, 0x88, 0x51, 0xff, 
+0xd8, 0x26, 0xf3, 0x24, 0x8f, 0x01, 0x3e, 0x15, 
+0x8c, 0x44, 0x33, 0x65, 0x68, 0xd0, 0xb0, 0xc1, 
+0x27, 0x80, 0x05, 0x60, 0x3f, 0x81, 0x90, 0x2e, 
+0xb9, 0xa5, 0xae, 0x11, 0x78, 0x7a, 0x10, 0xd0, 
+0x29, 0xab, 0x46, 0x38, 0x81, 0xe9, 0x6d, 0x70, 
+0x31, 0xd0, 0x4b, 0xb9, 0x18, 0x78, 0xec, 0xd1, 
+0x2d, 0xef, 0xd1, 0xa4, 0xe6, 0xab, 0xea, 0x35, 
+0x28, 0x38, 0xb3, 0x0a, 0x40, 0xc1, 0x08, 0x58, 
+0x0b, 0x07, 0x0f, 0xd7, 0x4c, 0x04, 0x42, 0xc0, 
+0x09, 0x38, 0x47, 0xa7, 0xd1, 0xf8, 0xf7, 0x96, 
+0x08, 0xf0, 0xaf, 0x1a, 0xc0, 0x3f, 0x8e, 0xfb, 
+0xf5, 0xca, 0x5b, 0xad, 0x08, 0x80, 0xc0, 0xcc, 
+0x78, 0x8b, 0xe3, 0x7e, 0xd5, 0x7b, 0xff, 0x6c, 
+0x00, 0x7f, 0x5b, 0xf1, 0xb4, 0x6e, 0x72, 0x9c, 
+0x8f, 0x51, 0x3f, 0xdb, 0xfe, 0xb2, 0xfd, 0x2f, 
+0xa7, 0xfa, 0x15, 0xe0, 0x3a, 0x80, 0x53, 0xfe, 
+0x38, 0xed, 0x8f, 0x27, 0x08, 0x9c, 0xfe, 0xc7, 
+0x29, 0x80, 0x9c, 0x06, 0xf8, 0x2e, 0x7e, 0x8d, 
+0xde, 0xde, 0x7f, 0xe7, 0x16, 0x72, 0xbc, 0x65, 
+0x10, 0xed, 0x0b, 0xe2, 0x9f, 0x9b, 0xbf, 0xed, 
+0xb5, 0x95, 0xd8, 0xfb, 0x6f, 0x56, 0x0b, 0x80, 
+0x15, 0xe2, 0xfb, 0xbe, 0x10, 0x00, 0xa2, 0xf4, 
+0xf8, 0x00, 0xe7, 0x5f, 0x0f, 0x6d, 0x12, 0x16, 
+0x02, 0x0f, 0x81, 0xef, 0x4d, 0x79, 0x08, 0xd8, 
+0x75, 0x48, 0xc0, 0xe9, 0xa0, 0xaf, 0x4a, 0x08, 
+0x78, 0x56, 0x89, 0x9f, 0xc0, 0xb8, 0xa6, 0xf3, 
+0x29, 0xee, 0xa5, 0xf3, 0xaa, 0xfc, 0x80, 0xe3, 
+0x52, 0x2c, 0x31, 0xbb, 0x0f, 0xb2, 0x10, 0xb0, 
+0xc1, 0x29, 0x21, 0x8f, 0xf9, 0x0d, 0x1b, 0xfc, 
+0x14, 0x34, 0x54, 0x57, 0x44, 0xf9, 0x96, 0x65, 
+0x26, 0xb4, 0xac, 0x77, 0xb1, 0x94, 0x40, 0x58, 
+0x13, 0x9c, 0x80, 0x53, 0xbb, 0x54, 0x0a, 0xec, 
+0xb3, 0xff, 0xb1, 0x56, 0x5c, 0x3d, 0x74, 0xe9, 
+0x9c, 0x81, 0x3f, 0x63, 0x79, 0x2d, 0x03, 0x05, 
+0x77, 0x98, 0x01, 0x05, 0x0b, 0x6a, 0x01, 0x28, 
+0x78, 0x8d, 0xc2, 0x86, 0xe3, 0x35, 0xf9, 0x96, 
+0x46, 0xac, 0x06, 0x0d, 0x3f, 0x48, 0x8e, 0x9b, 
+0x92, 0x68, 0xec, 0xed, 0x45, 0x02, 0xfc, 0xab, 
+0x22, 0xf0, 0xaf, 0x8f, 0x14, 0xf7, 0xbb, 0x52, 
+0xdb, 0xfc, 0x35, 0x02, 0xc0, 0xd2, 0xb8, 0x5f, 
+0x79, 0xef, 0xcf, 0xcd, 0x9f, 0x9f, 0xd6, 0x39, 
+0xb8, 0xe7, 0x0c, 0x9e, 0xf6, 0x4d, 0x8d, 0xf3, 
+0x19, 0xf6, 0x53, 0x07, 0xff, 0x70, 0x20, 0x10, 
+0x43, 0x81, 0x0c, 0x07, 0x2a, 0xc1, 0x3f, 0xec, 
+0x14, 0x08, 0xe8, 0xaf, 0x10, 0xef, 0x97, 0xad, 
+0x7e, 0x37, 0x63, 0xef, 0xef, 0x76, 0x35, 0xd1, 
+0x28, 0xda, 0x57, 0x3a, 0x23, 0xbd, 0xb5, 0x9c, 
+0x3c, 0x0b, 0xf5, 0xf6, 0xfe, 0x27, 0xfc, 0xf2, 
+0x37, 0xff, 0x46, 0x7c, 0xcf, 0x17, 0x02, 0x40, 
+0x94, 0x69, 0x21, 0xf0, 0xfb, 0x11, 0xcd, 0x66, 
+0xaf, 0x80, 0x87, 0xc0, 0xcf, 0x46, 0x1e, 0x02, 
+0xfd, 0x0e, 0xd2, 0xe4, 0x76, 0xab, 0xa5, 0x86, 
+0xcf, 0x42, 0x40, 0xcd, 0x09, 0xa8, 0xd7, 0x03, 
+0x95, 0xe1, 0x04, 0x58, 0x04, 0x4c, 0x6a, 0xbe, 
+0x58, 0xcf, 0x19, 0x90, 0x7f, 0x3e, 0xa3, 0xf5, 
+0x5a, 0x38, 0x0d, 0x46, 0x28, 0x42, 0x80, 0xfd, 
+0x04, 0x96, 0xf5, 0x29, 0x56, 0x3e, 0xc6, 0x1d, 
+0xb0, 0xdd, 0x58, 0x9c, 0x0a, 0xaa, 0x4d, 0x83, 
+0x78, 0x55, 0xe0, 0xdb, 0x31, 0x4d, 0x6f, 0xaa, 
+0x20, 0xc7, 0x13, 0x73, 0xf6, 0x80, 0xa9, 0xeb, 
+0x81, 0xea, 0xe0, 0x04, 0x5c, 0x3b, 0x64, 0x52, 
+0x70, 0xbf, 0xc3, 0x5a, 0x6b, 0xe1, 0xe2, 0x5f, 
+0xa6, 0x77, 0xd8, 0x2c, 0x5d, 0x33, 0x28, 0xa0, 
+0x60, 0x93, 0xaa, 0x05, 0x05, 0x5d, 0x2a, 0x0c, 
+0x0a, 0xee, 0x35, 0x03, 0x0a, 0x1e, 0x32, 0x03, 
+0x0a, 0x9e, 0xb0, 0x3a, 0x28, 0xb8, 0xa0, 0xcb, 
+0x55, 0x0a, 0x19, 0x5b, 0x2c, 0x79, 0x07, 0x48, 
+0x9c, 0xc5, 0xa4, 0x42, 0x9a, 0xba, 0x3d, 0x4e, 
+0x80, 0x7f, 0x55, 0x00, 0xfe, 0x71, 0xdc, 0xaf, 
+0xd7, 0xd6, 0x58, 0x45, 0x00, 0x84, 0x59, 0x18, 
+0xf7, 0xcb, 0xbb, 0xfd, 0xad, 0x68, 0xee, 0xfc, 
+0xf4, 0x9f, 0x94, 0x94, 0x44, 0xb9, 0x00, 0xf9, 
+0xa4, 0x71, 0x3e, 0x5b, 0xfa, 0xe2, 0x89, 0xfe, 
+0x7d, 0xd5, 0x38, 0xff, 0x26, 0xce, 0xfc, 0xee, 
+0xe1, 0xdc, 0xef, 0xef, 0x98, 0x00, 0x9c, 0x94, 
+0x83, 0x7f, 0xce, 0x9e, 0xa5, 0xaf, 0x70, 0x16, 
+0xf8, 0x0d, 0x26, 0x05, 0x17, 0x31, 0x31, 0xd8, 
+0xa6, 0x75, 0x0a, 0x3c, 0x0d, 0x01, 0xa0, 0xde, 
+0xfb, 0x07, 0xbd, 0xbd, 0x51, 0x3a, 0xf7, 0x53, 
+0x47, 0xfb, 0x32, 0xf1, 0xcf, 0xd0, 0xa8, 0xf3, 
+0xd1, 0x78, 0x75, 0xf3, 0xff, 0x02, 0xcd, 0xbf, 
+0x99, 0xf8, 0x3e, 0x2f, 0x04, 0x80, 0xa8, 0x32, 
+0x85, 0x80, 0xd3, 0x33, 0xa3, 0x5b, 0xcc, 0x4b, 
+0x81, 0x87, 0xc0, 0x43, 0x53, 0x1e, 0x02, 0x13, 
+0x5b, 0xaf, 0xc4, 0x24, 0xc0, 0x43, 0x27, 0x04, 
+0x4a, 0x5d, 0x0f, 0x54, 0x8c, 0x13, 0x98, 0xd2, 
+0x72, 0x85, 0x04, 0xf3, 0xa9, 0x9b, 0xf9, 0x82, 
+0x9e, 0x85, 0xe4, 0xd5, 0x7e, 0x93, 0xde, 0x44, 
+0xc0, 0x1e, 0xe1, 0x44, 0x41, 0x9d, 0xb3, 0x95, 
+0xf0, 0x21, 0x8f, 0x76, 0xfa, 0xd7, 0x04, 0xbe, 
+0x1d, 0x52, 0xa5, 0xf5, 0x40, 0x20, 0xc6, 0xff, 
+0x7c, 0x4d, 0xa0, 0x73, 0x19, 0x3c, 0x24, 0x5d, 
+0x0e, 0x8c, 0x55, 0x5d, 0x0e, 0x58, 0x2b, 0x96, 
+0xd8, 0x12, 0x4e, 0xc0, 0xae, 0x45, 0x3c, 0xb9, 
+0xe3, 0xa4, 0x31, 0xe4, 0x85, 0x23, 0x52, 0xbc, 
+0x73, 0x60, 0xdf, 0x03, 0xf7, 0xed, 0xdb, 0xae, 
+0x2f, 0x17, 0x28, 0x38, 0xa5, 0xce, 0x80, 0x82, 
+0xc7, 0xcc, 0x80, 0x82, 0x66, 0xac, 0x85, 0x2d, 
+0x58, 0x0b, 0xb0, 0xb5, 0x70, 0xd0, 0xf8, 0x83, 
+0x92, 0x9b, 0x20, 0x7f, 0x1e, 0x7d, 0x9c, 0x77, 
+0x91, 0xcd, 0xa1, 0x68, 0x01, 0xfe, 0x59, 0x09, 
+0xfc, 0xe3, 0x72, 0xce, 0x8c, 0x56, 0x3d, 0xfd, 
+0xc7, 0xd2, 0xf9, 0xbb, 0xef, 0x95, 0x7b, 0xef, 
+0x9f, 0x8b, 0xd1, 0x7f, 0x91, 0x3c, 0xce, 0x07, 
+0xf1, 0xaf, 0x1e, 0xe7, 0x5f, 0xba, 0x70, 0x81, 
+0xfe, 0x8b, 0x49, 0xc1, 0x97, 0x30, 0xfc, 0xe1, 
+0xe0, 0x9f, 0x1c, 0x4c, 0x0a, 0x4e, 0xc1, 0xd4, 
+0xe7, 0xf3, 0xcf, 0x3e, 0x93, 0x8c, 0x81, 0xe4, 
+0xe0, 0x1f, 0x76, 0x0a, 0xbc, 0x04, 0x40, 0x30, 
+0x05, 0x53, 0x04, 0x39, 0xe4, 0x67, 0xd1, 0xa1, 
+0x4d, 0xaa, 0x68, 0x5f, 0xdd, 0xb9, 0x1f, 0x37, 
+0x7f, 0xbb, 0x73, 0x86, 0x7b, 0xff, 0xcd, 0x43, 
+0xc4, 0xf7, 0x76, 0x21, 0x00, 0x44, 0x95, 0x4f, 
+0x08, 0x34, 0x1d, 0xd7, 0x6a, 0xf1, 0x5e, 0x53, 
+0x1e, 0x02, 0xbe, 0xbd, 0xf7, 0xd0, 0xd8, 0x96, 
+0x8b, 0x21, 0x00, 0xdc, 0xb5, 0x42, 0xc0, 0xba, 
+0x9c, 0xc0, 0x14, 0x84, 0x0b, 0xb1, 0x5d, 0xb0, 
+0xa9, 0x51, 0x3e, 0x7b, 0x00, 0xf0, 0x04, 0x80, 
+0xc3, 0x87, 0x46, 0x68, 0xc5, 0x00, 0x17, 0xe7, 
+0x0e, 0xa8, 0xad, 0x88, 0xf9, 0x4a, 0x60, 0x5a, 
+0x8b, 0x18, 0xc9, 0x86, 0xd8, 0xa9, 0x4d, 0xbc, 
+0x74, 0x5d, 0x20, 0xbf, 0x8f, 0xdf, 0x3e, 0x56, 
+0x9b, 0x46, 0x58, 0xb6, 0x10, 0xb0, 0x56, 0x2c, 
+0xb1, 0x3e, 0x27, 0x60, 0xd7, 0x92, 0x2f, 0x06, 
+0x76, 0x28, 0x17, 0x03, 0x7e, 0xbd, 0xf6, 0xfe, 
+0x32, 0xa5, 0xd5, 0xda, 0x9a, 0x03, 0x05, 0x5b, 
+0x59, 0x1f, 0x14, 0x0c, 0xb5, 0x10, 0x14, 0x8c, 
+0xac, 0x04, 0x28, 0x38, 0xb7, 0xdf, 0x3b, 0x14, 
+0x38, 0x5e, 0x0b, 0xb3, 0x22, 0x67, 0xc0, 0x23, 
+0x38, 0x8f, 0x26, 0x9c, 0x59, 0x26, 0xc0, 0xbf, 
+0x32, 0x9a, 0x7f, 0x59, 0x4f, 0xff, 0x1c, 0xf7, 
+0xab, 0x6e, 0xfe, 0x91, 0xd9, 0x9b, 0x2c, 0x6a, 
+0xfe, 0x1f, 0xe0, 0x86, 0x5f, 0xde, 0xfb, 0x67, 
+0xe0, 0x49, 0x5d, 0x3d, 0xce, 0xe7, 0x9b, 0x7f, 
+0xf5, 0x38, 0xff, 0x8b, 0x7f, 0xfe, 0x93, 0xbe, 
+0x97, 0x2d, 0x7d, 0xe5, 0xe0, 0x9f, 0x0f, 0x3f, 
+0xa4, 0x47, 0x8f, 0x1e, 0xd1, 0x07, 0xb0, 0x06, 
+0x3e, 0x88, 0x6b, 0x81, 0x3d, 0x30, 0x01, 0xe2, 
+0xf7, 0xb3, 0x77, 0x80, 0xbc, 0xf7, 0x5f, 0x87, 
+0xbd, 0xbf, 0xc3, 0x2d, 0xe3, 0x73, 0x3f, 0xf6, 
+0x8d, 0xb0, 0xbd, 0x6a, 0xb8, 0xf7, 0xdf, 0xbc, 
+0x48, 0x7c, 0x3f, 0x17, 0x02, 0x40, 0x54, 0x05, 
+0xeb, 0x95, 0x67, 0x9d, 0x3a, 0x4c, 0x6c, 0xb3, 
+0xe2, 0xb4, 0x29, 0x0f, 0x01, 0xaf, 0x9e, 0x3b, 
+0x68, 0x54, 0xf3, 0x39, 0x26, 0x84, 0x40, 0xe5, 
+0x39, 0x81, 0xe1, 0x00, 0x03, 0x23, 0xba, 0x6d, 
+0x37, 0xbb, 0xd7, 0x0f, 0xea, 0x9c, 0xa5, 0xb7, 
+0x1e, 0xe0, 0x9a, 0x05, 0xbf, 0x7e, 0xf9, 0xfd, 
+0x1b, 0x30, 0x49, 0x70, 0x46, 0xf3, 0x1f, 0xd5, 
+0x68, 0xae, 0x94, 0x42, 0x18, 0x8d, 0x15, 0x00, 
+0xbf, 0x7d, 0x3a, 0x4e, 0xf3, 0x0c, 0x63, 0x89, 
+0xad, 0xeb, 0x27, 0x10, 0x6d, 0x31, 0x27, 0xc0, 
+0x17, 0x03, 0xbe, 0x3d, 0x74, 0x9f, 0x5b, 0xaf, 
+0x1e, 0x3b, 0x1e, 0xda, 0x40, 0xa0, 0x98, 0x05, 
+0x05, 0x8d, 0x84, 0xc0, 0x3a, 0x33, 0xd6, 0xc2, 
+0xd5, 0x07, 0x0a, 0x06, 0xd6, 0x20, 0x28, 0xc8, 
+0xd6, 0xc2, 0x41, 0xa3, 0xb5, 0x17, 0x03, 0xaf, 
+0x1e, 0x25, 0x97, 0x45, 0xe9, 0x34, 0xf6, 0xd2, 
+0x22, 0x01, 0xfe, 0x55, 0x00, 0xfc, 0x93, 0xe2, 
+0x7e, 0xd3, 0x63, 0xf5, 0x04, 0x80, 0x25, 0x71, 
+0xbf, 0xdf, 0x82, 0xe0, 0x97, 0xf7, 0xfe, 0xfc, 
+0xb4, 0x9e, 0x83, 0x66, 0xad, 0x8c, 0xf3, 0xe1, 
+0xf6, 0xc7, 0xae, 0x7f, 0x3c, 0xce, 0x3f, 0xc6, 
+0xc1, 0x3f, 0x1f, 0x7f, 0x4c, 0xf7, 0xef, 0xdf, 
+0xa7, 0xdb, 0xb0, 0xf4, 0x2d, 0x84, 0xa5, 0x2f, 
+0x17, 0xff, 0x9c, 0xdf, 0xf6, 0x09, 0xde, 0xc7, 
+0x1f, 0x23, 0x3b, 0x05, 0xca, 0x7b, 0xff, 0x54, 
+0xed, 0xde, 0xdf, 0xf5, 0xda, 0x7a, 0xa3, 0x68, 
+0x5f, 0xc9, 0x35, 0xf2, 0x16, 0xae, 0x15, 0xf4, 
+0xf6, 0xfe, 0x9b, 0x8f, 0xa0, 0x7e, 0x2d, 0xbe, 
+0x8f, 0x0b, 0x01, 0x20, 0xaa, 0xd2, 0xae, 0x82, 
+0x6e, 0x2f, 0xd8, 0xb6, 0x8d, 0xb9, 0x61, 0xca, 
+0x43, 0xc0, 0xad, 0x7b, 0x0e, 0xe2, 0x87, 0x67, 
+0xd2, 0xeb, 0x2a, 0x21, 0x50, 0x1a, 0x27, 0x30, 
+0xa0, 0x9c, 0x9c, 0x80, 0x03, 0x46, 0xfd, 0xb1, 
+0xda, 0xc6, 0x6d, 0x8a, 0xf0, 0xe7, 0x6b, 0x01, 
+0x4e, 0x23, 0x54, 0x0b, 0x81, 0x39, 0x3d, 0xf6, 
+0xe8, 0x99, 0x09, 0xf9, 0x74, 0xd8, 0x02, 0x11, 
+0x30, 0x47, 0x12, 0x02, 0xe3, 0x90, 0x2f, 0xa0, 
+0x49, 0x22, 0x9c, 0xa7, 0x67, 0x37, 0x2c, 0x65, 
+0x0f, 0x68, 0x85, 0x40, 0x69, 0x53, 0x81, 0xaa, 
+0xe4, 0x04, 0xf8, 0x62, 0xc0, 0xbf, 0xb7, 0xfc, 
+0xb9, 0x2d, 0x79, 0xe4, 0xd6, 0x35, 0xe7, 0xf1, 
+0x24, 0x40, 0x8b, 0x95, 0x03, 0x05, 0xd7, 0x9b, 
+0x01, 0x05, 0x53, 0x4a, 0x05, 0x05, 0x35, 0x42, 
+0xa0, 0x6e, 0x82, 0x82, 0xe1, 0x83, 0x8f, 0x53, 
+0xd0, 0x50, 0xcd, 0xc5, 0x40, 0xf0, 0xa0, 0xc3, 
+0xe4, 0xb8, 0x36, 0x99, 0x46, 0xdd, 0x98, 0x27, 
+0xc0, 0xbf, 0x72, 0x80, 0x7f, 0x43, 0x4f, 0xfa, 
+0xeb, 0x35, 0xff, 0xc5, 0x79, 0x69, 0x16, 0xed, 
+0xfd, 0xb7, 0x61, 0x5c, 0x2f, 0xef, 0xfd, 0x33, 
+0x21, 0x00, 0xf4, 0xc6, 0xf9, 0xf0, 0xfb, 0xe7, 
+0xa7, 0x79, 0x1e, 0xe7, 0xf3, 0xd3, 0x3d, 0x3f, 
+0xe5, 0xf3, 0xd3, 0x3e, 0x3f, 0xf5, 0xf3, 0xd3, 
+0x3f, 0x3f, 0xe5, 0xf3, 0x34, 0x80, 0xa7, 0x02, 
+0x3c, 0x1d, 0xe0, 0x29, 0x01, 0x3b, 0x05, 0x9e, 
+0xc1, 0x6a, 0x80, 0x9b, 0x7f, 0x06, 0x84, 0x03, 
+0x8f, 0xfe, 0x03, 0xcf, 0x6d, 0x30, 0x8a, 0xf6, 
+0xe5, 0xe6, 0xcf, 0x26, 0x51, 0x2e, 0x47, 0xe4, 
+0xbd, 0x3f, 0x4f, 0x00, 0x36, 0xff, 0x03, 0xd5, 
+0x58, 0x7c, 0xef, 0x16, 0x02, 0x40, 0x94, 0x35, 
+0x3d, 0x04, 0x1a, 0xfa, 0x8c, 0x98, 0xda, 0x7e, 
+0xed, 0x27, 0x0c, 0x06, 0x1a, 0x7b, 0x08, 0xa4, 
+0x11, 0xe2, 0x89, 0xb5, 0x42, 0xc0, 0xdd, 0x02, 
+0x4e, 0xc0, 0xc7, 0x62, 0x4e, 0x80, 0xe1, 0xbf, 
+0xf9, 0x08, 0xe1, 0x51, 0xdb, 0x0b, 0xb3, 0x00, 
+0x98, 0xd8, 0x6c, 0x31, 0xb2, 0x01, 0x56, 0x4b, 
+0xc0, 0x9f, 0x7f, 0xc7, 0x74, 0x8d, 0x18, 0x80, 
+0x10, 0x08, 0x87, 0x87, 0x80, 0x7e, 0x92, 0x60, 
+0xa6, 0xc4, 0x0a, 0x68, 0x84, 0x80, 0x46, 0x0c, 
+0x98, 0x17, 0x02, 0x0b, 0x6b, 0x84, 0x13, 0x70, 
+0x6a, 0x9f, 0x0a, 0x6b, 0xe1, 0x83, 0x1a, 0x6b, 
+0xe1, 0x17, 0x8e, 0x3c, 0x70, 0xee, 0x94, 0x2a, 
+0x81, 0x8b, 0xd5, 0x0b, 0x0a, 0x66, 0x96, 0x0e, 
+0x0a, 0x9a, 0xb0, 0x16, 0xf6, 0xb3, 0xc8, 0x5a, 
+0xb8, 0xfa, 0x40, 0x41, 0xae, 0x90, 0xd1, 0x47, 
+0x28, 0x64, 0xa0, 0xe6, 0x62, 0x20, 0x70, 0xd4, 
+0x7e, 0x9a, 0x9a, 0x16, 0x4f, 0x23, 0x6e, 0x0b, 
+0xf0, 0xaf, 0xac, 0xd1, 0xbf, 0x26, 0xee, 0x77, 
+0x8d, 0x4e, 0x00, 0x6c, 0x5d, 0x4d, 0x7f, 0xfb, 
+0xe2, 0xf3, 0x32, 0x05, 0xc0, 0x09, 0x34, 0x6b, 
+0x79, 0xef, 0x9f, 0x89, 0x46, 0x6d, 0x34, 0xce, 
+0x47, 0xe3, 0x97, 0x2c, 0x7d, 0xe5, 0xe0, 0x1f, 
+0x08, 0x03, 0x16, 0x08, 0xbc, 0xf7, 0xe7, 0xfd, 
+0xff, 0x97, 0x72, 0xf0, 0x0f, 0xb8, 0x00, 0xe6, 
+0x03, 0x98, 0x13, 0xb8, 0x0a, 0x06, 0x80, 0x27, 
+0x09, 0x32, 0xf4, 0xb7, 0xf0, 0x70, 0xb2, 0xc9, 
+0x5b, 0x7f, 0x6e, 0xfe, 0x76, 0x6f, 0xc7, 0xaa, 
+0x9b, 0xff, 0x03, 0xd4, 0x40, 0xf1, 0xfd, 0x5a, 
+0x08, 0x00, 0x51, 0x55, 0x54, 0x6f, 0x35, 0x0e, 
+0x9c, 0x61, 0xd7, 0x71, 0xfd, 0x7f, 0x42, 0x4c, 
+0x78, 0x08, 0x38, 0x76, 0x4a, 0x42, 0xfc, 0xb0, 
+0x9f, 0x81, 0x10, 0xb0, 0x1e, 0x27, 0x30, 0xa1, 
+0xe9, 0x02, 0x70, 0x02, 0xcb, 0x61, 0x35, 0x3c, 
+0x47, 0xba, 0x1e, 0xf0, 0x01, 0x4d, 0xaf, 0xa4, 
+0x09, 0x42, 0x24, 0x8c, 0x00, 0x0f, 0xc0, 0x42, 
+0xc0, 0x1b, 0x6f, 0x57, 0x03, 0x80, 0x7e, 0x1d, 
+0x53, 0x25, 0x11, 0x60, 0x2c, 0x04, 0x74, 0x62, 
+0xa0, 0x54, 0x21, 0xa0, 0x88, 0x81, 0xea, 0xe0, 
+0x04, 0x70, 0x31, 0xd0, 0x31, 0x8b, 0x2f, 0x05, 
+0x1e, 0x69, 0xae, 0x30, 0x0e, 0xfd, 0xe2, 0x08, 
+0xcb, 0xe4, 0x72, 0x83, 0x82, 0xcd, 0x9e, 0x6c, 
+0x50, 0x70, 0x41, 0xd7, 0x2b, 0x12, 0x28, 0x18, 
+0xfa, 0x9a, 0xe6, 0x62, 0xc0, 0x77, 0x2a, 0x6c, 
+0xa5, 0x77, 0x47, 0x0b, 0xf0, 0xcf, 0x0c, 0xf8, 
+0x37, 0xaa, 0x38, 0x14, 0x8d, 0x7f, 0xb5, 0x22, 
+0x00, 0xa2, 0xf3, 0x73, 0xca, 0xb5, 0xf7, 0x67, 
+0xab, 0xdf, 0x02, 0xd5, 0x38, 0xff, 0x53, 0x79, 
+0x9c, 0x8f, 0x27, 0x78, 0x1e, 0xe7, 0xf3, 0x2a, 
+0x80, 0x57, 0x02, 0xbc, 0x1a, 0xc8, 0x45, 0x53, 
+0x67, 0xf2, 0x9f, 0x83, 0x7f, 0xf8, 0x12, 0x80, 
+0x2f, 0x02, 0xf8, 0x32, 0xe0, 0x00, 0x2e, 0x04, 
+0xf8, 0xe7, 0x39, 0x98, 0x0c, 0xb0, 0x00, 0xe0, 
+0xbd, 0xff, 0xda, 0x9d, 0x29, 0x64, 0x7f, 0x4b, 
+0x3f, 0xda, 0x97, 0x9b, 0x3f, 0x67, 0x44, 0xd8, 
+0x5e, 0x59, 0x41, 0xbe, 0xbb, 0x36, 0xcb, 0xcd, 
+0x9f, 0x6b, 0x8e, 0xf8, 0x1e, 0x2d, 0x04, 0x80, 
+0xa8, 0x2a, 0xe7, 0x03, 0x66, 0xfc, 0x06, 0x1e, 
+0x02, 0xe1, 0x8e, 0x9d, 0x93, 0x7f, 0x30, 0xf2, 
+0x10, 0x80, 0x30, 0x98, 0xd6, 0x21, 0x9e, 0x06, 
+0x34, 0xf0, 0x2e, 0x45, 0x08, 0x58, 0xcf, 0x4f, 
+0x60, 0x44, 0xe3, 0x99, 0x80, 0xfc, 0xde, 0xd5, 
+0x8b, 0x20, 0x1e, 0x0f, 0x91, 0xc0, 0x06, 0x43, 
+0x6c, 0x43, 0xac, 0x9e, 0x04, 0x78, 0x75, 0xd8, 
+0x24, 0x09, 0x84, 0x91, 0x52, 0xb1, 0x18, 0xd0, 
+0x09, 0x81, 0x51, 0x8d, 0x4b, 0x9b, 0x0a, 0x2c, 
+0x34, 0xb9, 0x1e, 0xa8, 0x34, 0x27, 0x50, 0xc6, 
+0x7a, 0x80, 0x9f, 0xe0, 0x3d, 0x3a, 0xe7, 0xb1, 
+0xa8, 0x92, 0x84, 0x40, 0x40, 0x9f, 0xa2, 0x5f, 
+0xa6, 0xb5, 0x49, 0xa8, 0x13, 0xa0, 0xa0, 0x9f, 
+0x55, 0x40, 0xc1, 0x33, 0x66, 0x40, 0xc1, 0x8b, 
+0x16, 0xf3, 0x01, 0x6c, 0x2d, 0x1c, 0x30, 0x11, 
+0xc9, 0x8d, 0x2f, 0x69, 0x2e, 0x06, 0x3c, 0x3d, 
+0xb6, 0xd3, 0xf8, 0x92, 0xa5, 0x02, 0xfc, 0x33, 
+0x78, 0xfa, 0xef, 0x7b, 0x77, 0x2a, 0xe2, 0x7e, 
+0xd7, 0x2a, 0x02, 0xc0, 0x3b, 0x77, 0x0d, 0xfd, 
+0xbb, 0x8c, 0xb8, 0x5f, 0xde, 0xfb, 0xf3, 0x88, 
+0x9e, 0x9b, 0x3f, 0x43, 0x7a, 0xfc, 0xf4, 0x6e, 
+0x6a, 0x9c, 0xcf, 0xf0, 0x9f, 0x3a, 0xf8, 0x87, 
+0xe1, 0x40, 0xbe, 0xf9, 0xe7, 0xdb, 0x7f, 0x75, 
+0xf0, 0x0f, 0x7b, 0x03, 0xb0, 0x47, 0x80, 0xec, 
+0xf3, 0x2f, 0xdd, 0xfb, 0x67, 0xa7, 0x91, 0xf3, 
+0xb5, 0x78, 0xa3, 0x68, 0x5f, 0x29, 0x24, 0xea, 
+0x26, 0xf6, 0xfe, 0x05, 0x49, 0xea, 0xe6, 0x7f, 
+0x00, 0xf5, 0x2b, 0xf1, 0xfd, 0x59, 0x08, 0x00, 
+0x51, 0xd5, 0x27, 0x04, 0xfe, 0x30, 0xa2, 0xd9, 
+0xac, 0x68, 0x78, 0x08, 0xdc, 0x37, 0x5c, 0x0b, 
+0xf0, 0xaa, 0xc0, 0xb6, 0x5d, 0x8c, 0xd4, 0xf0, 
+0x59, 0x08, 0x94, 0x97, 0x13, 0x18, 0x68, 0xa1, 
+0x9f, 0x00, 0x4f, 0x04, 0x92, 0x5e, 0xbd, 0xaa, 
+0xe7, 0x21, 0xc0, 0xfc, 0x00, 0x8b, 0x00, 0xf5, 
+0x3a, 0x80, 0xcf, 0x0a, 0xa7, 0xb6, 0x58, 0xa5, 
+0x85, 0x06, 0xd5, 0x42, 0x20, 0x52, 0x27, 0x04, 
+0xca, 0x5c, 0x0f, 0x54, 0x25, 0x27, 0x60, 0xbc, 
+0x1e, 0xb0, 0x47, 0xd8, 0x90, 0x57, 0xb7, 0x9d, 
+0xcc, 0x06, 0x48, 0xab, 0x01, 0x9f, 0x5e, 0xbb, 
+0x1f, 0x4e, 0x6e, 0xb5, 0xc6, 0x04, 0x28, 0xb8, 
+0xd2, 0xea, 0xa0, 0xa0, 0xb3, 0x85, 0xa0, 0xa0, 
+0x97, 0x21, 0x28, 0xd8, 0xa6, 0xf6, 0x81, 0x82, 
+0x6c, 0x2d, 0x1c, 0x30, 0x4e, 0x1b, 0xe1, 0x8c, 
+0xf3, 0x41, 0xd7, 0x88, 0x2c, 0x1a, 0x7d, 0x7e, 
+0xfe, 0x13, 0x06, 0xfe, 0x95, 0xfe, 0xf4, 0x3f, 
+0xbe, 0x30, 0x92, 0xbc, 0xb6, 0xaf, 0x56, 0x04, 
+0xc0, 0xfa, 0x82, 0x9d, 0xe5, 0xda, 0xfb, 0x67, 
+0xe0, 0x69, 0x5d, 0x1e, 0xe7, 0xff, 0xd7, 0x60, 
+0x9c, 0xcf, 0xe7, 0x7f, 0x7c, 0x06, 0x78, 0x57, 
+0x0e, 0xfe, 0x81, 0xdb, 0x1f, 0xbb, 0xfe, 0xb1, 
+0xfb, 0xdf, 0x67, 0x08, 0xfe, 0x61, 0x37, 0x40, 
+0x76, 0x05, 0x64, 0xa7, 0xbf, 0xb3, 0x88, 0x05, 
+0x56, 0xef, 0xfd, 0x03, 0xa4, 0xbd, 0xbf, 0x7e, 
+0xb4, 0x2f, 0x37, 0x7f, 0xb6, 0x83, 0x76, 0x29, 
+0x8e, 0x57, 0x37, 0xff, 0x4f, 0x51, 0x0d, 0xc4, 
+0xf7, 0x64, 0x21, 0x00, 0x44, 0xd5, 0x8c, 0x10, 
+0x78, 0x76, 0x54, 0x8b, 0xb9, 0x69, 0xa6, 0x3c, 
+0x04, 0x18, 0x1e, 0x9c, 0xd0, 0x7a, 0xb9, 0x56, 
+0x04, 0xb8, 0x55, 0x09, 0x27, 0xe0, 0xd8, 0x7a, 
+0xb5, 0xbe, 0x87, 0x00, 0xec, 0x83, 0xe7, 0x80, 
+0xb0, 0xe7, 0x6b, 0x01, 0xf5, 0x14, 0x60, 0x45, 
+0xdf, 0xa3, 0x12, 0x34, 0xa8, 0x3b, 0x23, 0x34, 
+0x25, 0x04, 0x6a, 0x8e, 0x13, 0xb0, 0x2d, 0x45, 
+0x08, 0x38, 0xb4, 0xda, 0x40, 0xbe, 0x3d, 0xf7, 
+0x28, 0x9f, 0x53, 0xcf, 0xee, 0xdb, 0x1e, 0xdb, 
+0x34, 0x8f, 0x32, 0x10, 0x02, 0x2b, 0xcb, 0xb4, 
+0x16, 0x9e, 0x66, 0xa1, 0xb5, 0x70, 0x7d, 0x05, 
+0x05, 0x67, 0x0e, 0x38, 0x05, 0x2e, 0x40, 0x73, 
+0x3a, 0x18, 0xf2, 0xfa, 0x11, 0x9a, 0xbe, 0x62, 
+0x33, 0x0d, 0xbf, 0x36, 0xfb, 0x89, 0x06, 0xff, 
+0xfa, 0xdd, 0x99, 0x46, 0x9e, 0xd9, 0x6b, 0x15, 
+0x01, 0xe0, 0x83, 0x9f, 0x97, 0x15, 0xf7, 0xab, 
+0xde, 0xfb, 0xa7, 0xa1, 0xf9, 0x4b, 0xe3, 0x7c, 
+0x18, 0xfa, 0xa8, 0xc7, 0xf9, 0x6c, 0xf8, 0xc3, 
+0x3e, 0xfe, 0x6c, 0x00, 0xc4, 0x46, 0x40, 0x6c, 
+0x08, 0xc4, 0x3e, 0xff, 0xec, 0xf7, 0xcf, 0xbe, 
+0xff, 0xff, 0x86, 0xff, 0xbf, 0x1c, 0xfc, 0xc3, 
+0xb9, 0x00, 0xd7, 0xf1, 0xeb, 0x78, 0x92, 0x20, 
+0xef, 0xfd, 0x17, 0x60, 0xef, 0x6f, 0x18, 0xed, 
+0x3b, 0x41, 0x82, 0xfe, 0x96, 0x90, 0xfd, 0xd9, 
+0x18, 0x75, 0xf3, 0xff, 0xc5, 0x37, 0x7f, 0xf3, 
+0x6b, 0xe2, 0xfb, 0xb0, 0x10, 0x00, 0xa2, 0x6a, 
+0xb8, 0x5e, 0x7e, 0x76, 0x46, 0x73, 0x78, 0x08, 
+0x14, 0x9a, 0xf6, 0x10, 0xd8, 0x4d, 0x63, 0x5a, 
+0x2e, 0xd0, 0x8a, 0x00, 0xb7, 0x0a, 0x70, 0x02, 
+0xe6, 0xd7, 0x03, 0xe3, 0x61, 0x29, 0xcc, 0x36, 
+0xc2, 0x65, 0x59, 0x03, 0x8f, 0xc3, 0x8a, 0xc0, 
+0xf0, 0x7a, 0x40, 0xf6, 0x13, 0xa8, 0x3c, 0x27, 
+0xb0, 0xb8, 0x4a, 0x39, 0x01, 0xbe, 0x18, 0x08, 
+0xe8, 0x5d, 0xa4, 0xb5, 0x16, 0x2e, 0x79, 0xe4, 
+0xda, 0x25, 0x0b, 0x30, 0xe4, 0x0a, 0x3d, 0x50, 
+0x70, 0x62, 0xb9, 0x40, 0xc1, 0x84, 0x3a, 0x07, 
+0x0a, 0xce, 0xb6, 0x02, 0x28, 0x18, 0x3a, 0xe2, 
+0x28, 0x05, 0x0d, 0xd1, 0x5c, 0x0c, 0xf0, 0x8f, 
+0xd3, 0x12, 0x13, 0x68, 0xe8, 0xad, 0x70, 0x93, 
+0xcd, 0x7f, 0x70, 0xbd, 0x04, 0xff, 0x74, 0x4f, 
+0xff, 0x36, 0x1c, 0xf7, 0xcb, 0xcd, 0x5f, 0x2b, 
+0x00, 0xd2, 0x8b, 0xcd, 0xc7, 0xfd, 0x7e, 0x08, 
+0xc0, 0x4f, 0xde, 0xfb, 0xa7, 0xa2, 0x79, 0xf3, 
+0xf8, 0x9e, 0xc7, 0xf9, 0xd2, 0xfb, 0x0c, 0xc6, 
+0xf9, 0x6c, 0xfd, 0x2b, 0x59, 0xfa, 0xca, 0xc1, 
+0x3f, 0x68, 0xf8, 0x9c, 0xf8, 0xc7, 0xc9, 0x7f, 
+0x9c, 0x00, 0xb8, 0x53, 0x1b, 0xfc, 0x73, 0x17, 
+0x09, 0x81, 0x59, 0x98, 0x18, 0xc8, 0x7b, 0xff, 
+0x35, 0x80, 0xfa, 0xec, 0x6e, 0x19, 0x9f, 0xfb, 
+0x71, 0xf3, 0xb7, 0xb9, 0xb2, 0x1c, 0x7b, 0xff, 
+0x4d, 0x8a, 0x00, 0x40, 0xf3, 0x0f, 0x17, 0xdf, 
+0x7b, 0x85, 0x00, 0x10, 0x55, 0xab, 0x84, 0xc0, 
+0xf4, 0xce, 0xf0, 0x10, 0x78, 0xdb, 0x94, 0x87, 
+0x00, 0xc4, 0x01, 0xc1, 0x7a, 0x98, 0x5e, 0x33, 
+0x2b, 0x04, 0x2a, 0x16, 0x4b, 0x3c, 0xb4, 0x61, 
+0x30, 0x92, 0x04, 0xf3, 0xcc, 0x0a, 0x00, 0xb6, 
+0x18, 0x96, 0xd3, 0x08, 0x4d, 0x09, 0x01, 0x6b, 
+0x71, 0x02, 0x96, 0xaf, 0x07, 0xca, 0xcf, 0x09, 
+0x38, 0xb7, 0x87, 0x1d, 0x6a, 0xdf, 0x43, 0x8f, 
+0xb4, 0xcc, 0xc5, 0x83, 0x19, 0x1d, 0x53, 0xa4, 
+0x68, 0xe4, 0xda, 0x0d, 0x0a, 0xee, 0xd1, 0xe3, 
+0x03, 0xd4, 0x42, 0x20, 0x58, 0x12, 0x02, 0xd5, 
+0x0b, 0x0a, 0xf2, 0xb4, 0x20, 0x68, 0x1c, 0xc4, 
+0xc7, 0x9b, 0x1a, 0x98, 0xd5, 0x7f, 0x5c, 0x21, 
+0xd9, 0xe4, 0xc4, 0x54, 0x7a, 0xf4, 0x3f, 0xa0, 
+0x0e, 0x81, 0x7f, 0x2f, 0xdc, 0xb2, 0x27, 0x2f, 
+0xec, 0xfb, 0x65, 0x01, 0xe0, 0x97, 0x15, 0x67, 
+0x36, 0xee, 0x57, 0x6f, 0xef, 0x8f, 0x1f, 0x39, 
+0xe1, 0x4f, 0x19, 0xe7, 0x63, 0x02, 0x20, 0x8f, 
+0xf3, 0x39, 0xec, 0x87, 0x43, 0x7f, 0x38, 0xfc, 
+0x87, 0x43, 0x80, 0x38, 0x0c, 0xe8, 0x38, 0xde, 
+0xf7, 0x29, 0x46, 0xfe, 0x3f, 0xff, 0xfc, 0x33, 
+0xdd, 0xba, 0x7e, 0x9d, 0x0a, 0xf2, 0xf3, 0xa5, 
+0x95, 0x00, 0x43, 0x83, 0x05, 0xaa, 0xbd, 0xff, 
+0x26, 0xec, 0xfd, 0x9d, 0xa4, 0xbd, 0xbf, 0xf1, 
+0xb9, 0xdf, 0xf8, 0x9b, 0x4b, 0xc8, 0x6b, 0xdf, 
+0x46, 0x55, 0xf3, 0xdf, 0xb4, 0x4f, 0x7c, 0xbf, 
+0x15, 0x02, 0x40, 0x54, 0x6d, 0xf5, 0x10, 0x78, 
+0xde, 0xed, 0x65, 0xdb, 0xb6, 0xd1, 0xb7, 0x4c, 
+0x7b, 0x08, 0x64, 0xd1, 0xd0, 0x26, 0xa1, 0x10, 
+0x02, 0xae, 0x8a, 0x10, 0xa8, 0x0c, 0x27, 0xa0, 
+0x5e, 0x0f, 0x38, 0xb6, 0x8e, 0xa1, 0xb5, 0x2f, 
+0xbe, 0x6d, 0x52, 0x00, 0x8c, 0x6d, 0x3a, 0x4f, 
+0x9b, 0x44, 0x18, 0x66, 0x20, 0x04, 0x66, 0x9a, 
+0x11, 0x02, 0xb5, 0x8f, 0x13, 0x98, 0xda, 0x7c, 
+0x2d, 0xb9, 0x76, 0xca, 0x86, 0x00, 0x38, 0xf2, 
+0x50, 0xcb, 0x5c, 0x3c, 0x70, 0x68, 0xb7, 0xa1, 
+0x6a, 0x40, 0xc1, 0x16, 0xa5, 0x83, 0x82, 0xae, 
+0x56, 0x01, 0x05, 0xf7, 0x9b, 0x01, 0x05, 0x4b, 
+0xcc, 0x80, 0x82, 0x67, 0x2b, 0x0d, 0x0a, 0xce, 
+0xef, 0x7e, 0x59, 0x02, 0x05, 0x39, 0x76, 0x58, 
+0x8a, 0x70, 0x76, 0xc8, 0xa7, 0x71, 0x45, 0x4b, 
+0xab, 0x0d, 0xfc, 0x7b, 0xad, 0x86, 0xc0, 0xbf, 
+0x3e, 0xef, 0x4f, 0xa1, 0x69, 0xdb, 0x96, 0xea, 
+0x9e, 0xfe, 0x51, 0xf9, 0x67, 0x4a, 0x2c, 0xde, 
+0xfb, 0xe7, 0xa0, 0xa9, 0xcb, 0xe3, 0x7c, 0x8e, 
+0xf3, 0xe5, 0x58, 0x5f, 0x79, 0x9c, 0xcf, 0x71, 
+0xbf, 0x1c, 0xfb, 0xcb, 0x96, 0xbe, 0x2c, 0x12, 
+0xe4, 0xe0, 0x1f, 0x86, 0xfe, 0x3e, 0xc2, 0xe5, 
+0x40, 0x71, 0x51, 0x91, 0xe2, 0x14, 0x78, 0x16, 
+0x57, 0x01, 0xca, 0xde, 0x3f, 0x3d, 0x8d, 0xfc, 
+0xcf, 0x27, 0x9a, 0x3c, 0xf7, 0xe3, 0x04, 0x48, 
+0xd7, 0xc3, 0xf1, 0xea, 0xe6, 0xff, 0x31, 0xea, 
+0x39, 0xf1, 0x7d, 0x56, 0x08, 0x00, 0x51, 0xb5, 
+0xbc, 0xde, 0x6c, 0xe0, 0x35, 0x7a, 0x4a, 0xfb, 
+0xb5, 0x9f, 0x19, 0x7b, 0x08, 0x94, 0x90, 0x53, 
+0x97, 0x2d, 0xf4, 0x56, 0xa3, 0x40, 0x95, 0x10, 
+0xb0, 0x1e, 0x27, 0x60, 0xdf, 0x2a, 0x1a, 0x79, 
+0x02, 0x05, 0x08, 0x03, 0x3a, 0x49, 0xab, 0x5f, 
+0x38, 0x83, 0x00, 0xa1, 0x0d, 0x52, 0xee, 0x80, 
+0x2e, 0x8d, 0x30, 0x4c, 0x89, 0x25, 0xd6, 0x13, 
+0x02, 0x7a, 0x9c, 0xc0, 0xac, 0x5a, 0xcb, 0x09, 
+0x70, 0xf1, 0x53, 0xbc, 0x47, 0x97, 0xad, 0xd2, 
+0x4a, 0x40, 0x7a, 0x92, 0xed, 0x5d, 0xf0, 0x60, 
+0x2a, 0x1c, 0x0f, 0x9f, 0x0c, 0x50, 0xf0, 0xb4, 
+0x19, 0x50, 0xb0, 0xbc, 0xd6, 0xc2, 0x17, 0x20, 
+0x04, 0x74, 0x42, 0xd5, 0xdd, 0x2f, 0x97, 0x46, 
+0x9e, 0x9c, 0x5b, 0x6f, 0xc1, 0xbf, 0x97, 0xaf, 
+0x4f, 0xc7, 0xad, 0xbf, 0xee, 0xe9, 0x3f, 0x30, 
+0x2b, 0xc1, 0x6c, 0xdc, 0xef, 0x49, 0x50, 0xfd, 
+0xf2, 0xde, 0x3f, 0x15, 0xbb, 0x7a, 0xa3, 0x71, 
+0x3e, 0x5b, 0xfa, 0xca, 0xc1, 0x3f, 0x10, 0x0b, 
+0xef, 0x63, 0xac, 0x7f, 0x00, 0x96, 0xbe, 0x7b, 
+0x61, 0x02, 0x74, 0x43, 0x0e, 0xfe, 0xc1, 0xd9, 
+0xdf, 0xc9, 0xa3, 0x47, 0x29, 0x17, 0x63, 0xfe, 
+0x0b, 0x68, 0xfc, 0x37, 0x01, 0x06, 0xaa, 0xa1, 
+0xbf, 0xf9, 0xc5, 0x49, 0x46, 0xd1, 0xbe, 0x7c, 
+0xee, 0x37, 0x0e, 0xcd, 0xdf, 0xfe, 0x4c, 0x8c, 
+0xba, 0xf9, 0xdf, 0x47, 0xbd, 0x24, 0xbe, 0xb7, 
+0x0a, 0x01, 0x20, 0xaa, 0x0e, 0xd5, 0xa0, 0x46, 
+0xfe, 0xce, 0xf0, 0x10, 0xf8, 0x3a, 0xd8, 0x84, 
+0x87, 0x80, 0x7d, 0xc7, 0x0d, 0x34, 0xb0, 0xa1, 
+0x8f, 0x19, 0x21, 0x50, 0x79, 0x4e, 0x40, 0x2f, 
+0x80, 0xc8, 0x20, 0x96, 0x58, 0x7f, 0x2a, 0x30, 
+0xb3, 0xcc, 0xf5, 0x40, 0x6d, 0xe3, 0x04, 0xec, 
+0x5a, 0x26, 0x90, 0x77, 0xf7, 0x7c, 0xfe, 0x7c, 
+0x4a, 0x8c, 0x80, 0x77, 0xcf, 0xfc, 0x47, 0xb6, 
+0x2d, 0x63, 0xeb, 0x3e, 0x28, 0xd8, 0xae, 0xa2, 
+0xa0, 0xe0, 0x05, 0x65, 0x2d, 0x30, 0xaf, 0x1c, 
+0xa0, 0xe0, 0xac, 0xd7, 0xce, 0xe0, 0x62, 0xa0, 
+0x48, 0xf3, 0xba, 0xc4, 0x54, 0x60, 0xc6, 0xdc, 
+0x2d, 0x34, 0xf4, 0xdd, 0x99, 0xd5, 0x04, 0xfe, 
+0xb9, 0x55, 0x0b, 0xf8, 0xc7, 0x4f, 0xff, 0x8e, 
+0x39, 0xab, 0xf4, 0x9e, 0xfe, 0x0f, 0x5f, 0x3e, 
+0x67, 0xd1, 0xde, 0x3f, 0x05, 0xcd, 0xbf, 0x84, 
+0x2d, 0x7d, 0x31, 0xce, 0xbf, 0xaf, 0x1e, 0xe7, 
+0xc3, 0x03, 0xe0, 0x0e, 0x1a, 0xfa, 0x2f, 0x20, 
+0xfe, 0x3f, 0xf9, 0xeb, 0x5f, 0xa9, 0xe4, 0xd0, 
+0x21, 0xda, 0x0e, 0x4b, 0xdf, 0x4b, 0xf0, 0x00, 
+0x60, 0xa3, 0x9f, 0xff, 0xe0, 0x42, 0xe0, 0x02, 
+0x28, 0x7f, 0xb6, 0x09, 0x3e, 0x05, 0x11, 0xf0, 
+0x11, 0x7e, 0xcf, 0x4c, 0x34, 0x7e, 0x8e, 0x0c, 
+0xe6, 0xbd, 0xff, 0x6a, 0xdc, 0xf3, 0x33, 0xf1, 
+0xaf, 0x3b, 0xf7, 0x5b, 0xa1, 0x10, 0xff, 0x36, 
+0x97, 0x35, 0x7b, 0x7f, 0x5f, 0x4d, 0xf3, 0xe7, 
+0x0a, 0x12, 0xdf, 0x4f, 0x85, 0x00, 0x10, 0x55, 
+0x27, 0xf9, 0x00, 0xc7, 0xdf, 0x0e, 0x69, 0x12, 
+0x32, 0x0b, 0x1e, 0x02, 0xff, 0x33, 0xf4, 0x10, 
+0x60, 0x61, 0x30, 0xb5, 0xfd, 0x3a, 0x7a, 0xb3, 
+0x81, 0xa7, 0x24, 0x04, 0xd4, 0xeb, 0x01, 0x6b, 
+0x71, 0x02, 0xa6, 0xfc, 0x04, 0x4a, 0x17, 0x02, 
+0x75, 0x8f, 0x13, 0x70, 0x68, 0x8d, 0x1d, 0x69, 
+0xcf, 0xbd, 0x32, 0x84, 0xf9, 0xd8, 0xbd, 0x5b, 
+0x1e, 0xd9, 0x34, 0x5f, 0x55, 0x45, 0xa0, 0xe0, 
+0x66, 0x7d, 0x50, 0xd0, 0x40, 0x08, 0x58, 0x0a, 
+0x0a, 0xfa, 0x5a, 0x08, 0x0a, 0x86, 0x54, 0x23, 
+0x28, 0x18, 0x3e, 0xe4, 0x38, 0x05, 0x8e, 0xd0, 
+0x5c, 0x0c, 0x04, 0x83, 0x13, 0xb0, 0x8b, 0x49, 
+0xa4, 0xc1, 0xd7, 0x83, 0xeb, 0x05, 0xf8, 0xf7, 
+0xfa, 0x65, 0xc4, 0xfd, 0x6e, 0xd3, 0x3d, 0xfd, 
+0x87, 0x65, 0x6d, 0x28, 0xb5, 0xf9, 0xff, 0x17, 
+0x4f, 0xf8, 0xf2, 0xde, 0x9f, 0x7f, 0x64, 0xb3, 
+0x1f, 0xc3, 0x71, 0x7e, 0x7e, 0x6e, 0xae, 0x5e, 
+0xf0, 0x0f, 0x5b, 0xf9, 0x66, 0xe2, 0x63, 0xf9, 
+0x47, 0xbd, 0xe0, 0x1f, 0x7c, 0x1c, 0x7f, 0x3c, 
+0x43, 0x83, 0x7b, 0x31, 0x1d, 0xd0, 0xed, 0xfd, 
+0x53, 0xc9, 0xe9, 0xbd, 0x38, 0xa3, 0x68, 0x5f, 
+0x6e, 0xfe, 0xe3, 0x6e, 0x2e, 0xc6, 0xde, 0x3f, 
+0x49, 0xdd, 0xfc, 0xf3, 0xc5, 0xf7, 0x51, 0x21, 
+0x00, 0x44, 0xd5, 0x7d, 0x21, 0xf0, 0xc7, 0xe1, 
+0xcd, 0x22, 0x56, 0x3b, 0x75, 0x4d, 0x35, 0xf2, 
+0x10, 0x08, 0xec, 0x77, 0x80, 0x6c, 0xda, 0x46, 
+0xd3, 0xeb, 0xcf, 0xbb, 0x19, 0x09, 0x01, 0x6b, 
+0x71, 0x02, 0x6f, 0x19, 0x09, 0x81, 0x60, 0x0b, 
+0x84, 0x40, 0xd5, 0x73, 0x02, 0x7a, 0x3b, 0xfc, 
+0x4a, 0x70, 0x02, 0x33, 0xda, 0x6e, 0xa6, 0xc0, 
+0x3e, 0xfb, 0x1f, 0x69, 0x27, 0x2c, 0x0f, 0x5d, 
+0x3a, 0xa7, 0xe3, 0xf7, 0x59, 0x6e, 0x65, 0x50, 
+0x30, 0x59, 0x0f, 0x14, 0x74, 0xd2, 0x03, 0x05, 
+0x33, 0x4a, 0x05, 0x05, 0x25, 0x21, 0x50, 0x27, 
+0x40, 0xc1, 0x6b, 0x08, 0x1a, 0x3a, 0x4c, 0x41, 
+0x6f, 0x69, 0x2e, 0x06, 0x02, 0x87, 0x1f, 0x20, 
+0xdb, 0x4d, 0xab, 0x69, 0xe0, 0x9d, 0x80, 0x6a, 
+0x00, 0xff, 0x5c, 0xaa, 0x04, 0xfc, 0xe3, 0xa7, 
+0x7f, 0xa7, 0xcc, 0x18, 0x34, 0x7e, 0x9d, 0x00, 
+0x28, 0x2d, 0xee, 0x97, 0x47, 0xf9, 0xdb, 0x31, 
+0xc2, 0x97, 0xf7, 0xfe, 0x5b, 0x41, 0xea, 0xf3, 
+0x38, 0xff, 0x27, 0x8c, 0xf3, 0x3f, 0x57, 0x8f, 
+0xf3, 0xf1, 0x64, 0xff, 0x1f, 0xb8, 0xfc, 0x7d, 
+0x0b, 0xb7, 0x3f, 0x7e, 0xe2, 0xe7, 0x30, 0x9f, 
+0x63, 0x98, 0x00, 0xf0, 0x24, 0xe0, 0x17, 0xb8, 
+0x02, 0xde, 0x01, 0xe8, 0xc7, 0x13, 0x82, 0x42, 
+0x4c, 0x0a, 0x6e, 0x63, 0x62, 0xf0, 0xb6, 0xbc, 
+0xf7, 0xcf, 0xd4, 0xec, 0xfd, 0xfd, 0xce, 0x27, 
+0x18, 0x45, 0xfb, 0x8e, 0x03, 0xf1, 0x3f, 0xf6, 
+0xce, 0x42, 0x72, 0x3d, 0x14, 0x2f, 0x37, 0x7e, 
+0xae, 0xbf, 0xf8, 0xee, 0xdc, 0xf4, 0x8c, 0xf8, 
+0xfe, 0x29, 0x04, 0x80, 0xa8, 0xfa, 0x23, 0x04, 
+0x9e, 0x87, 0x87, 0x40, 0x96, 0x49, 0x0f, 0x81, 
+0x3e, 0x05, 0x34, 0xbe, 0xd5, 0x52, 0x45, 0x04, 
+0x58, 0x9f, 0x13, 0x28, 0x65, 0x3d, 0x50, 0xab, 
+0x38, 0x81, 0x65, 0x95, 0xe2, 0x04, 0x9c, 0x3b, 
+0xa4, 0x51, 0x70, 0xbf, 0xc3, 0x0f, 0x35, 0x13, 
+0x96, 0xc3, 0x0f, 0xa6, 0xc3, 0x11, 0x51, 0xef, 
+0xf7, 0xad, 0x04, 0x28, 0xe8, 0x50, 0x61, 0x50, 
+0x30, 0xcf, 0x0c, 0x28, 0x58, 0x51, 0x6b, 0xe1, 
+0xaa, 0x03, 0x05, 0xd9, 0x5a, 0x98, 0x41, 0x41, 
+0xf6, 0x0e, 0x90, 0x4e, 0x5a, 0x27, 0xed, 0xa5, 
+0x71, 0xdb, 0x97, 0xd6, 0x49, 0xf0, 0x4f, 0x8a, 
+0xfb, 0x95, 0x9a, 0xbf, 0x46, 0x00, 0x44, 0xe6, 
+0x6c, 0xb2, 0x68, 0xef, 0x9f, 0x86, 0x51, 0xbd, 
+0xe1, 0x38, 0x9f, 0x9b, 0x3f, 0x8b, 0x00, 0x16, 
+0x03, 0xec, 0xf3, 0x7f, 0x03, 0x7e, 0xff, 0xbc, 
+0xf3, 0xe7, 0xdd, 0x3f, 0x33, 0x00, 0x8f, 0x20, 
+0x20, 0xe4, 0xe0, 0x1f, 0x66, 0x04, 0x98, 0x15, 
+0xb8, 0x8d, 0xb7, 0xab, 0xf7, 0xfe, 0x73, 0x8f, 
+0x6c, 0xd4, 0x8b, 0xf6, 0x95, 0xcf, 0xfd, 0xb8, 
+0xf9, 0xdb, 0x9f, 0x8e, 0x51, 0x37, 0xff, 0x7b, 
+0x68, 0xfe, 0xfd, 0xc4, 0xf7, 0x4c, 0x21, 0x00, 
+0x44, 0xd5, 0xc3, 0x7a, 0xe9, 0x59, 0xc7, 0x96, 
+0x63, 0x5b, 0x2d, 0xdc, 0x6f, 0xca, 0x43, 0xc0, 
+0xa7, 0xf7, 0x2e, 0x1a, 0xdd, 0x62, 0x1e, 0xbd, 
+0xfa, 0xac, 0x0b, 0x44, 0x80, 0x8b, 0x56, 0x0c, 
+0xd4, 0x7e, 0x4e, 0x60, 0x64, 0x95, 0x70, 0x02, 
+0xcb, 0xcb, 0xcd, 0x09, 0x4c, 0xc1, 0xc5, 0x80, 
+0x1b, 0x5f, 0x0c, 0xbc, 0xa0, 0xb9, 0x18, 0x08, 
+0xec, 0xbb, 0xff, 0xa1, 0x7d, 0xdb, 0x44, 0x93, 
+0x17, 0x03, 0xb5, 0x1b, 0x14, 0x2c, 0xaa, 0x51, 
+0x50, 0x70, 0x5e, 0xaf, 0x8b, 0xe4, 0x6f, 0x53, 
+0x20, 0xb9, 0x09, 0x4a, 0x27, 0xad, 0xce, 0xdb, 
+0x68, 0xe4, 0xa1, 0xb9, 0x55, 0x0e, 0xfe, 0x59, 
+0xf6, 0xf4, 0x6f, 0x6f, 0xd1, 0xd3, 0xbf, 0x6b, 
+0xc6, 0x1a, 0x3d, 0x01, 0x70, 0xe3, 0x93, 0x0f, 
+0x4d, 0x36, 0xff, 0xbf, 0x00, 0xe6, 0x93, 0xf7, 
+0xfe, 0x7c, 0xf2, 0x77, 0x0a, 0x74, 0xbf, 0x64, 
+0xe9, 0x6b, 0x30, 0xce, 0xe7, 0x35, 0x80, 0x64, 
+0xe9, 0xab, 0x0e, 0xfe, 0x01, 0xfd, 0xcf, 0x57, 
+0x00, 0x7c, 0x0d, 0x70, 0x5a, 0x15, 0xfc, 0xc3, 
+0x71, 0xbf, 0x6c, 0xf4, 0x23, 0xef, 0xfd, 0x63, 
+0xb1, 0xf7, 0x9f, 0x8a, 0xe6, 0xaf, 0x7f, 0xee, 
+0xb7, 0x44, 0x22, 0xfe, 0x6d, 0x2e, 0x2d, 0xd3, 
+0xee, 0xfd, 0xb5, 0xb5, 0x73, 0x93, 0x8f, 0xf8, 
+0x3e, 0x29, 0x04, 0x80, 0xa8, 0xfa, 0x2f, 0x04, 
+0xba, 0x4e, 0x68, 0xb3, 0xfc, 0x82, 0x6f, 0xef, 
+0x3d, 0x26, 0x3c, 0x04, 0xb6, 0xd1, 0xf0, 0xa6, 
+0x11, 0x06, 0x42, 0xc0, 0xf4, 0x7a, 0xa0, 0x76, 
+0x71, 0x02, 0x91, 0xb5, 0x82, 0x13, 0x98, 0xda, 
+0x22, 0x8e, 0x3c, 0xbb, 0x6e, 0xa3, 0xd0, 0x17, 
+0x35, 0x17, 0x03, 0x7e, 0xbd, 0xf6, 0x3e, 0x9a, 
+0xd2, 0x6a, 0xad, 0x89, 0x8b, 0x01, 0x01, 0x0a, 
+0x96, 0x65, 0x2d, 0xec, 0x37, 0xb1, 0x40, 0xf3, 
+0xba, 0x7c, 0x09, 0x69, 0x98, 0xc1, 0x19, 0x34, 
+0xf4, 0x4c, 0x78, 0xad, 0x01, 0xff, 0x4a, 0x7b, 
+0xfa, 0x97, 0xe2, 0x7e, 0xb7, 0xeb, 0x04, 0xc0, 
+0xa2, 0xad, 0x69, 0xa5, 0xee, 0xfd, 0xd9, 0x95, 
+0x4f, 0xda, 0xfb, 0x27, 0x27, 0xd3, 0x01, 0x9c, 
+0xf1, 0x49, 0xe3, 0x7c, 0x00, 0x7e, 0xf2, 0x38, 
+0xbf, 0x40, 0x3b, 0xce, 0x67, 0x10, 0x90, 0x81, 
+0xc0, 0xe3, 0x00, 0x03, 0xb7, 0xe2, 0xa9, 0x9e, 
+0xef, 0xfe, 0xbf, 0xc1, 0xfd, 0xff, 0x57, 0xf0, 
+0x01, 0x60, 0x3f, 0x80, 0x3c, 0x3c, 0xe5, 0x9f, 
+0x80, 0x53, 0x20, 0x37, 0xff, 0x5d, 0xf8, 0x75, 
+0xf2, 0xde, 0x3f, 0x39, 0x27, 0x95, 0xa6, 0x5f, 
+0x5f, 0x67, 0xf2, 0xdc, 0x6f, 0xdc, 0x8d, 0x45, 
+0xe4, 0xb5, 0x77, 0xa3, 0xba, 0xf9, 0xe7, 0x89, 
+0xef, 0x8d, 0x42, 0x00, 0x88, 0x7a, 0x82, 0xea, 
+0xd5, 0xe7, 0x5c, 0x5e, 0xb5, 0x69, 0x17, 0x7d, 
+0x37, 0xc0, 0x84, 0x87, 0x80, 0x6b, 0xb7, 0x4c, 
+0x1a, 0xd2, 0x38, 0xb8, 0x14, 0x21, 0x60, 0x62, 
+0x3d, 0x60, 0x05, 0x4e, 0x60, 0xb0, 0x55, 0x39, 
+0x81, 0x39, 0x56, 0xe3, 0x04, 0xd4, 0xeb, 0x01, 
+0x4b, 0x39, 0x01, 0xbe, 0x18, 0xf0, 0xe9, 0xb1, 
+0x4b, 0x99, 0xb4, 0x78, 0x75, 0xdf, 0xfe, 0xd8, 
+0xb6, 0x45, 0x8c, 0x4a, 0x08, 0x94, 0x06, 0x0a, 
+0xc6, 0xd6, 0x7d, 0x50, 0xb0, 0x83, 0xf5, 0x40, 
+0xc1, 0x99, 0x03, 0x4f, 0x92, 0xff, 0x18, 0xcd, 
+0xeb, 0x93, 0x93, 0x07, 0x1d, 0x16, 0x21, 0x0d, 
+0xf3, 0x72, 0x60, 0x15, 0x83, 0x7f, 0xd3, 0x2b, 
+0x04, 0xfe, 0xb1, 0x00, 0x70, 0xcf, 0x58, 0xab, 
+0x13, 0x00, 0xdb, 0xd6, 0xd2, 0xc7, 0x26, 0xe2, 
+0x7e, 0x0d, 0xf7, 0xfe, 0xdb, 0x71, 0xaf, 0xcf, 
+0xe3, 0x7c, 0x7e, 0xfb, 0x5f, 0x31, 0x15, 0x50, 
+0x8f, 0xf3, 0xf9, 0x04, 0x90, 0x4f, 0x01, 0xdf, 
+0xc6, 0x49, 0xa0, 0x1c, 0xfc, 0xc3, 0xce, 0x7f, 
+0xec, 0x00, 0xc8, 0x4e, 0x80, 0xbb, 0xe0, 0x08, 
+0x28, 0x07, 0xff, 0xc8, 0xf7, 0xfe, 0x99, 0xe0, 
+0x03, 0x78, 0xef, 0xef, 0x73, 0x21, 0xde, 0xa8, 
+0xf9, 0xf3, 0xb9, 0xdf, 0x98, 0x3b, 0x0b, 0x74, 
+0x7b, 0xff, 0x9d, 0x52, 0xdd, 0xf5, 0xdd, 0x99, 
+0xfc, 0x94, 0xf8, 0x9e, 0x28, 0x04, 0x80, 0xa8, 
+0x27, 0xb0, 0xde, 0x68, 0xe0, 0x39, 0x7e, 0x4a, 
+0xfb, 0x35, 0x9f, 0x9b, 0xf2, 0x10, 0x98, 0xd1, 
+0x65, 0x33, 0xe2, 0x87, 0xfd, 0x21, 0x04, 0x9c, 
+0x2d, 0x13, 0x02, 0xb5, 0x96, 0x13, 0x98, 0x5b, 
+0x23, 0x9c, 0x80, 0x43, 0x9b, 0x8d, 0xec, 0x1b, 
+0xa0, 0x01, 0x05, 0x11, 0x38, 0xe4, 0xd6, 0x35, 
+0x9b, 0x26, 0x35, 0x5b, 0x69, 0x06, 0x14, 0x8c, 
+0x2e, 0x15, 0x14, 0xd4, 0x08, 0x81, 0xf5, 0xe5, 
+0xb2, 0x16, 0xae, 0x2f, 0xa0, 0x60, 0xc8, 0x88, 
+0x23, 0x14, 0x38, 0x4c, 0x73, 0x31, 0x10, 0x34, 
+0xe8, 0x10, 0x4d, 0x5e, 0xb7, 0x96, 0xde, 0xbc, 
+0xe1, 0x5d, 0xab, 0xc0, 0xbf, 0x51, 0xc5, 0x61, 
+0x7a, 0x4f, 0xff, 0x51, 0xa5, 0xc4, 0xfd, 0x9e, 
+0x42, 0x33, 0x97, 0xf7, 0xfe, 0x19, 0x78, 0x52, 
+0xd7, 0x1b, 0xe7, 0xb3, 0xa5, 0xaf, 0x76, 0x9c, 
+0xcf, 0xe6, 0x3f, 0x6c, 0x02, 0xc4, 0x66, 0x40, 
+0xec, 0xf1, 0x7f, 0x54, 0x0e, 0xfe, 0x81, 0xf7, 
+0x3f, 0x67, 0x00, 0x70, 0x16, 0x00, 0x67, 0x02, 
+0xdc, 0x84, 0x53, 0xe0, 0x5d, 0x5c, 0x0d, 0x28, 
+0xcd, 0x1f, 0xbf, 0xe7, 0x9c, 0xa3, 0x1b, 0x94, 
+0x68, 0xdf, 0x49, 0xca, 0xad, 0xff, 0x62, 0xa9, 
+0xf9, 0xdb, 0x9f, 0x8a, 0x51, 0x37, 0xff, 0x1f, 
+0xd1, 0xfc, 0x7b, 0x89, 0xef, 0x83, 0x42, 0x00, 
+0x88, 0x7a, 0x92, 0xd7, 0x02, 0xcf, 0x38, 0xfc, 
+0x6a, 0x60, 0x23, 0x5f, 0x77, 0x78, 0x08, 0x7c, 
+0x13, 0xf2, 0x82, 0xbe, 0x87, 0x00, 0xf6, 0xda, 
+0xf0, 0x10, 0x48, 0xc4, 0xe9, 0xa0, 0x97, 0x24, 
+0x04, 0xaa, 0x8f, 0x13, 0x08, 0xb2, 0x3a, 0x27, 
+0x30, 0xca, 0xea, 0x9c, 0xc0, 0x0a, 0x8b, 0x38, 
+0x81, 0x19, 0xed, 0x70, 0x31, 0xd0, 0xf7, 0xc0, 
+0x03, 0xed, 0xe7, 0xf3, 0x91, 0x73, 0xa7, 0x54, 
+0x58, 0x0b, 0x2f, 0x37, 0x0b, 0x0a, 0xda, 0x96, 
+0x0b, 0x14, 0x4c, 0x32, 0x03, 0x0a, 0xa6, 0xd7, 
+0x4a, 0x50, 0x70, 0x6e, 0x39, 0x41, 0x41, 0xae, 
+0x80, 0xf1, 0xfb, 0x29, 0x78, 0xe0, 0x61, 0x0d, 
+0xc0, 0x3a, 0xba, 0x90, 0xc6, 0xa7, 0x2f, 0xa7, 
+0xd7, 0xee, 0xd4, 0x3c, 0xf8, 0xc7, 0x71, 0xbf, 
+0x1e, 0x99, 0xeb, 0x94, 0xe6, 0xef, 0x9d, 0xb7, 
+0x96, 0xbe, 0xf8, 0xf6, 0x2b, 0xb3, 0x7b, 0x7f, 
+0xbe, 0xf7, 0x3f, 0x07, 0xd0, 0xef, 0x6b, 0xf5, 
+0x38, 0x1f, 0xfb, 0x7b, 0x1e, 0xe7, 0xb3, 0xed, 
+0x2f, 0xdb, 0xff, 0x72, 0x73, 0xdf, 0x87, 0x74, 
+0xbf, 0xfd, 0xb0, 0xf4, 0xe5, 0xa6, 0xcf, 0xcd, 
+0x9f, 0x45, 0x00, 0x8b, 0x81, 0x1d, 0xb8, 0x18, 
+0xb8, 0x8c, 0x54, 0xc0, 0xbf, 0x43, 0x38, 0x70, 
+0xd3, 0xe7, 0x9d, 0xbf, 0xb4, 0xf7, 0xdf, 0xcd, 
+0x7b, 0x7f, 0xe3, 0x73, 0x3f, 0x6e, 0xfe, 0x36, 
+0x17, 0x97, 0xa9, 0x9b, 0x3f, 0x2a, 0xd9, 0x4d, 
+0x7c, 0xff, 0x13, 0x02, 0x40, 0x94, 0x28, 0xad, 
+0x10, 0xb0, 0xff, 0xdd, 0x90, 0x26, 0xc1, 0x73, 
+0xe1, 0x21, 0xf0, 0xa3, 0xb1, 0x87, 0xc0, 0x61, 
+0x9a, 0xdc, 0x7e, 0x0d, 0xbd, 0xf1, 0xbc, 0xbb, 
+0x09, 0x21, 0x50, 0xf6, 0x19, 0x61, 0xe5, 0x39, 
+0x81, 0x60, 0xeb, 0x71, 0x02, 0x8d, 0xaa, 0x8a, 
+0x13, 0x30, 0xb7, 0x1e, 0x88, 0x25, 0x97, 0x8e, 
+0xe9, 0xec, 0xc5, 0xf0, 0x40, 0x63, 0x2d, 0x7c, 
+0xe8, 0xa1, 0x63, 0xfb, 0xe4, 0x3a, 0x0f, 0x0a, 
+0x06, 0xeb, 0x81, 0x82, 0x47, 0x4b, 0x05, 0x05, 
+0x67, 0x19, 0xf2, 0x01, 0x1d, 0x2b, 0x06, 0x0a, 
+0xb2, 0xb5, 0xb0, 0x9f, 0xcd, 0x3e, 0x0a, 0x79, 
+0x4d, 0x73, 0x31, 0xe0, 0x3d, 0x35, 0x9f, 0x46, 
+0xee, 0x99, 0x57, 0xa3, 0xe0, 0xdf, 0xb8, 0xa2, 
+0x48, 0xbd, 0xa7, 0xff, 0xf5, 0x85, 0xf9, 0x66, 
+0xf7, 0xfe, 0xc9, 0xd8, 0xfb, 0x17, 0xc3, 0xd5, 
+0x4f, 0x3d, 0xce, 0xdf, 0xad, 0x1a, 0xe7, 0x4b, 
+0x62, 0x01, 0x3f, 0xf2, 0xbf, 0xcb, 0x96, 0xbe, 
+0x4a, 0xf0, 0x0f, 0xd6, 0x00, 0xbc, 0x0e, 0x78, 
+0x1b, 0x17, 0x04, 0xff, 0xc0, 0xbf, 0xef, 0xc0, 
+0x14, 0x40, 0xda, 0xfb, 0xa7, 0x6b, 0xf6, 0xfe, 
+0x8e, 0xd7, 0xd7, 0x18, 0x45, 0xfb, 0x8e, 0x01, 
+0xf1, 0x3f, 0xee, 0xc6, 0x42, 0xcd, 0xde, 0x5f, 
+0xd3, 0xf8, 0xb9, 0x32, 0xc5, 0xf7, 0x3c, 0x21, 
+0x00, 0x44, 0x89, 0x32, 0x25, 0x04, 0xfe, 0x34, 
+0xac, 0xe9, 0xcc, 0x75, 0x4e, 0x5d, 0xd3, 0x7e, 
+0x31, 0xe5, 0x21, 0x30, 0xa9, 0xcd, 0x2a, 0xa9, 
+0xf9, 0x97, 0x2e, 0x04, 0x2c, 0x59, 0x0f, 0x54, 
+0x8e, 0x13, 0x50, 0xaf, 0x07, 0x6a, 0x13, 0x27, 
+0x30, 0xb1, 0x0c, 0x21, 0x30, 0xb9, 0xf9, 0x6a, 
+0x72, 0xef, 0x9c, 0x23, 0x79, 0x07, 0xf0, 0xe7, 
+0x33, 0xa0, 0x4f, 0xe1, 0xa3, 0x69, 0x6d, 0x12, 
+0x6a, 0x1c, 0x14, 0xf4, 0xb0, 0x10, 0x14, 0xf4, 
+0x37, 0x0b, 0x0a, 0x16, 0x9b, 0x01, 0x05, 0x4f, 
+0x99, 0x01, 0x05, 0xdf, 0x29, 0x37, 0x28, 0x38, 
+0xa7, 0xef, 0x05, 0xf2, 0xb5, 0xd9, 0x2b, 0x41, 
+0x82, 0x12, 0xb7, 0xe2, 0x99, 0x43, 0x43, 0x4a, 
+0xc2, 0xaa, 0x1d, 0xfc, 0xd3, 0xc4, 0xfd, 0xc6, 
+0x29, 0xcd, 0xdf, 0x27, 0x37, 0x8e, 0xbe, 0xfb, 
+0xf1, 0x07, 0xa3, 0xbd, 0x3f, 0x37, 0x6a, 0x79, 
+0xef, 0xbf, 0x13, 0x24, 0xff, 0xc7, 0x78, 0x92, 
+0x7f, 0x68, 0x62, 0x9c, 0x7f, 0x0f, 0x4f, 0xfe, 
+0x1c, 0xfd, 0xcb, 0x93, 0x00, 0x06, 0xfc, 0xde, 
+0xc1, 0x6e, 0x9f, 0x27, 0x04, 0x0c, 0xfe, 0x5d, 
+0xe4, 0xe0, 0x1f, 0x80, 0x80, 0x0c, 0x04, 0x7e, 
+0x0a, 0xe8, 0xef, 0x04, 0xc4, 0x80, 0x7a, 0xef, 
+0xef, 0xfd, 0x4e, 0x9c, 0x51, 0xb4, 0x2f, 0x9f, 
+0xfb, 0x8d, 0xbe, 0x3d, 0x8f, 0x5c, 0x0f, 0xc4, 
+0xab, 0x9b, 0xff, 0x4d, 0xd4, 0x9f, 0xc4, 0xf7, 
+0x3a, 0x21, 0x00, 0x44, 0x89, 0x2a, 0xb5, 0x5e, 
+0x7c, 0xc6, 0xbe, 0xc1, 0xc8, 0xe6, 0x73, 0x72, 
+0xdd, 0xba, 0xe7, 0x3c, 0x32, 0x14, 0x02, 0x7e, 
+0x7d, 0xf6, 0x11, 0xa2, 0x89, 0x21, 0x00, 0x9c, 
+0xb4, 0x42, 0xc0, 0x12, 0x4e, 0xc0, 0xc3, 0xba, 
+0x9c, 0x40, 0x83, 0xaa, 0xe0, 0x04, 0xe6, 0x55, 
+0x0b, 0x27, 0x30, 0xb5, 0xc5, 0x3a, 0xf2, 0xec, 
+0xb6, 0x9d, 0x59, 0x0b, 0x09, 0x16, 0xf4, 0xe9, 
+0xb9, 0xfb, 0xf1, 0x94, 0x96, 0xab, 0x2b, 0x0d, 
+0x0a, 0xda, 0xd7, 0x49, 0x50, 0xf0, 0xbc, 0x19, 
+0x50, 0xd0, 0xbc, 0x10, 0x88, 0x78, 0xed, 0x34, 
+0xf9, 0x4e, 0xd8, 0xa7, 0xbd, 0x18, 0x28, 0x21, 
+0xc7, 0x88, 0xcd, 0x34, 0xe0, 0xbc, 0x5f, 0xb5, 
+0x81, 0x7f, 0xb6, 0xbb, 0xf0, 0x64, 0xbd, 0x5d, 
+0x07, 0xff, 0xa5, 0x1d, 0x29, 0x32, 0xbb, 0xf7, 
+0xcf, 0xc4, 0x98, 0x9f, 0x2d, 0x7d, 0xe5, 0x71, 
+0x7e, 0x09, 0xc6, 0xf9, 0xdb, 0xb5, 0xe3, 0x7c, 
+0x39, 0xf8, 0x87, 0x19, 0x00, 0x3e, 0xed, 0x3b, 
+0x85, 0x13, 0xbf, 0x7f, 0x7c, 0xf6, 0x99, 0x12, 
+0xfc, 0xc3, 0x27, 0x80, 0x7c, 0x0a, 0xf8, 0x01, 
+0x4e, 0x02, 0xdf, 0xc7, 0x84, 0x80, 0x9b, 0x3f, 
+0xc7, 0xfc, 0xf2, 0x0a, 0x20, 0x12, 0x7b, 0x7f, 
+0xc3, 0x68, 0x5f, 0xa9, 0xf9, 0xdf, 0x99, 0x4f, 
+0xf6, 0x27, 0x62, 0xd4, 0xcd, 0xff, 0x07, 0x54, 
+0x37, 0xf1, 0xfd, 0x4d, 0x08, 0x00, 0x51, 0xa2, 
+0x2c, 0x15, 0x02, 0xad, 0xc7, 0xb6, 0x5c, 0x78, 
+0xc8, 0xcb, 0x84, 0x87, 0x80, 0x77, 0xaf, 0x7c, 
+0x1a, 0xd5, 0x7c, 0x0e, 0xbd, 0xa2, 0x12, 0x02, 
+0x96, 0x73, 0x02, 0x9e, 0xb5, 0x9a, 0x13, 0x50, 
+0x4f, 0x05, 0xaa, 0x8a, 0x13, 0xb0, 0x6b, 0x95, 
+0xc0, 0xcd, 0x5f, 0x11, 0x58, 0x9e, 0xdd, 0xb6, 
+0xc2, 0x5a, 0x38, 0x4a, 0x67, 0x2d, 0x6c, 0x12, 
+0x14, 0x8c, 0x79, 0x72, 0x40, 0x41, 0x49, 0x08, 
+0x94, 0xcd, 0x07, 0x84, 0x0e, 0x29, 0x91, 0xb8, 
+0x00, 0x89, 0xb3, 0x78, 0x1d, 0x96, 0xd7, 0xcb, 
+0xe3, 0xe9, 0xb5, 0x6b, 0x9e, 0x55, 0x0a, 0xfe, 
+0xbd, 0x70, 0xdb, 0x9e, 0xbc, 0x73, 0xd6, 0x29, 
+0x02, 0xc0, 0x2f, 0x3b, 0xde, 0x28, 0xee, 0xf7, 
+0x23, 0x34, 0x79, 0xb9, 0xf9, 0xa7, 0x20, 0xcd, 
+0xef, 0x22, 0xcc, 0x7e, 0xd8, 0xd2, 0xd7, 0x70, 
+0x9c, 0x2f, 0x59, 0xfa, 0xaa, 0x83, 0x7f, 0x70, 
+0x0d, 0xc0, 0x26, 0x3f, 0x8f, 0x1e, 0x3d, 0xa2, 
+0x0f, 0xd4, 0xc1, 0x3f, 0x30, 0x03, 0xfa, 0x17, 
+0x3e, 0x96, 0x6f, 0xfd, 0xe5, 0xdd, 0x7f, 0xcc, 
+0xee, 0x4d, 0x46, 0xd1, 0xbe, 0x7c, 0xee, 0xc7, 
+0xcd, 0x7f, 0xd2, 0xbb, 0x4b, 0xd5, 0xcd, 0x9f, 
+0x6b, 0xba, 0xf8, 0x9e, 0x26, 0x04, 0x80, 0x28, 
+0x51, 0x15, 0x11, 0x02, 0xdd, 0x27, 0xb4, 0x5e, 
+0xf6, 0xae, 0x29, 0x0f, 0x01, 0x8f, 0x1e, 0x79, 
+0x34, 0xac, 0x69, 0xb8, 0x19, 0x21, 0x50, 0x3e, 
+0xbb, 0xe1, 0x27, 0x8d, 0x13, 0xe0, 0x8b, 0x81, 
+0x80, 0xde, 0x85, 0x0f, 0xb4, 0xd6, 0xc2, 0x8f, 
+0x5c, 0xbb, 0x64, 0xd2, 0xc4, 0x52, 0x2f, 0x06, 
+0xaa, 0x13, 0x14, 0xdc, 0x6a, 0x75, 0x50, 0x30, 
+0xbc, 0x0a, 0x41, 0xc1, 0xa0, 0x31, 0x07, 0x29, 
+0x70, 0x88, 0xe6, 0x62, 0x80, 0x7f, 0x9c, 0x98, 
+0xb8, 0x8a, 0x5e, 0xbe, 0xe5, 0x62, 0x75, 0xf0, 
+0x4f, 0x13, 0xf7, 0xbb, 0x8c, 0xbc, 0xa5, 0xe6, 
+0xaf, 0x11, 0x00, 0x3b, 0x0d, 0xe2, 0x7e, 0x0d, 
+0xf7, 0xfe, 0x1c, 0xf2, 0xf3, 0x15, 0x2c, 0x7d, 
+0xe5, 0x71, 0xfe, 0x36, 0xd5, 0x38, 0xff, 0x3e, 
+0x2c, 0x7d, 0xf9, 0xee, 0x9f, 0xed, 0x7c, 0x0b, 
+0x39, 0xf8, 0x07, 0x7e, 0x00, 0x6c, 0xf3, 0xcb, 
+0xf7, 0xfd, 0x6c, 0xfb, 0xcb, 0xf6, 0xbf, 0x2c, 
+0x1e, 0xd8, 0x12, 0x78, 0x2b, 0x78, 0x01, 0xf9, 
+0xde, 0x3f, 0x09, 0x7b, 0x7f, 0x87, 0xeb, 0xab, 
+0x8d, 0x6e, 0xfd, 0x19, 0xfa, 0x1b, 0x77, 0x1d, 
+0xd3, 0x89, 0xdd, 0x1b, 0xd5, 0xcd, 0x3f, 0x45, 
+0x7c, 0x1f, 0x13, 0x02, 0x40, 0x94, 0xa8, 0x4a, 
+0xd5, 0x2b, 0xcf, 0x39, 0xbd, 0x61, 0xd3, 0x36, 
+0xea, 0x03, 0x53, 0x1e, 0x02, 0x2e, 0xdd, 0x32, 
+0x68, 0x70, 0xe3, 0x40, 0xad, 0x10, 0x70, 0xaa, 
+0x35, 0x9c, 0xc0, 0xd0, 0x5a, 0xca, 0x09, 0xe8, 
+0xed, 0xfa, 0x51, 0x33, 0xda, 0xa5, 0x00, 0x10, 
+0x3c, 0x28, 0xb1, 0x17, 0x21, 0xfd, 0x8b, 0x1f, 
+0xcd, 0xe8, 0xb8, 0x05, 0x17, 0x03, 0xcb, 0xaa, 
+0x18, 0x14, 0x4c, 0x35, 0x03, 0x0a, 0xe6, 0x96, 
+0x0a, 0x0a, 0x6a, 0x84, 0x40, 0xed, 0x03, 0x05, 
+0x17, 0x74, 0xb9, 0x42, 0x7e, 0x93, 0xf6, 0x21, 
+0x64, 0x48, 0x73, 0x31, 0xe0, 0x3b, 0x6e, 0x2f, 
+0x8d, 0xca, 0x59, 0x60, 0x55, 0xf0, 0xef, 0x25, 
+0xc4, 0xfd, 0x7a, 0xe7, 0xad, 0x53, 0x04, 0x40, 
+0x60, 0xd6, 0x7a, 0x7a, 0xf8, 0xe8, 0x61, 0xa9, 
+0x7b, 0xff, 0x5d, 0xa0, 0xf9, 0x3f, 0xe7, 0x71, 
+0x3e, 0x2c, 0x7d, 0x0d, 0xc7, 0xf9, 0xfc, 0x94, 
+0xcf, 0xe9, 0x7d, 0x72, 0xf0, 0x0f, 0x3b, 0x01, 
+0x72, 0xc0, 0x0f, 0x4f, 0x05, 0x78, 0x3a, 0x20, 
+0x07, 0xff, 0xb0, 0x53, 0xe0, 0x11, 0xb0, 0x01, 
+0xf2, 0xe8, 0x3f, 0x15, 0x7b, 0x7f, 0xcf, 0x77, 
+0xd6, 0x19, 0x44, 0xfb, 0x6a, 0x88, 0xff, 0xd1, 
+0xb7, 0xe7, 0x92, 0xeb, 0xfe, 0x38, 0x75, 0xf3, 
+0xbf, 0x86, 0xfa, 0x83, 0xf8, 0xfe, 0x25, 0x04, 
+0x80, 0x28, 0x51, 0x56, 0xf2, 0x10, 0xf0, 0x98, 
+0x84, 0xcb, 0x80, 0x7f, 0x06, 0xf5, 0xd7, 0xf7, 
+0x10, 0xc0, 0xcd, 0x3b, 0x4d, 0xef, 0xbc, 0x49, 
+0x8a, 0x1f, 0xd6, 0x17, 0x02, 0x35, 0xcd, 0x09, 
+0x84, 0xd6, 0x01, 0x4e, 0x20, 0x4a, 0x1a, 0xf1, 
+0xbb, 0x74, 0xcc, 0x80, 0x00, 0x38, 0xf2, 0x40, 
+0x63, 0x2d, 0x7c, 0xe0, 0x91, 0x43, 0xbb, 0x8d, 
+0xe5, 0x06, 0x05, 0xa7, 0x5a, 0x08, 0x0a, 0xce, 
+0xa8, 0x30, 0x28, 0xb8, 0xd3, 0x0c, 0x28, 0x58, 
+0x68, 0x06, 0x14, 0x3c, 0x52, 0x2d, 0xa0, 0xe0, 
+0x5c, 0x58, 0x0b, 0xfb, 0xda, 0xee, 0x41, 0xec, 
+0xb0, 0xe6, 0xa2, 0xc5, 0xc3, 0x71, 0x1b, 0x0d, 
+0x29, 0x0a, 0xaf, 0x34, 0xf8, 0x27, 0xc7, 0xfd, 
+0x72, 0xf3, 0x97, 0x05, 0xc0, 0xe1, 0xcb, 0x6f, 
+0xeb, 0x3d, 0xfd, 0x9f, 0xc6, 0x1e, 0x5f, 0xd9, 
+0xfb, 0xe3, 0x49, 0x9f, 0x2d, 0x7d, 0xa5, 0x71, 
+0x3e, 0x5b, 0xfa, 0xaa, 0xc6, 0xf9, 0xec, 0xf1, 
+0xcf, 0xc2, 0x80, 0xf7, 0xfd, 0x39, 0x72, 0xf0, 
+0x0f, 0xb2, 0x00, 0x38, 0x13, 0xe0, 0x12, 0xb8, 
+0x00, 0xe6, 0x03, 0x38, 0xfa, 0xf7, 0x6f, 0x70, 
+0x0a, 0xbc, 0x05, 0x60, 0x50, 0xbd, 0xf7, 0x9f, 
+0x5d, 0x92, 0x68, 0xf2, 0xdc, 0x6f, 0xd4, 0x9d, 
+0x79, 0xe4, 0x70, 0x3c, 0x46, 0xdd, 0xfc, 0xbf, 
+0x43, 0x75, 0x12, 0xdf, 0xb3, 0x84, 0x00, 0x10, 
+0x25, 0xca, 0xca, 0x6b, 0x01, 0x3b, 0xf6, 0x10, 
+0xf0, 0x9a, 0xd6, 0x31, 0xe1, 0x5b, 0x53, 0x1e, 
+0x02, 0x78, 0x3b, 0x41, 0x28, 0x48, 0x42, 0xa0, 
+0xbe, 0x73, 0x02, 0x63, 0xac, 0xcc, 0x09, 0x48, 
+0x17, 0x03, 0x5d, 0x72, 0xb1, 0x12, 0x28, 0x91, 
+0x2e, 0x06, 0xfc, 0x7a, 0xef, 0x7b, 0x3c, 0xad, 
+0x75, 0x5c, 0xa9, 0xa0, 0xa0, 0x4d, 0x9d, 0x01, 
+0x05, 0x0f, 0x9b, 0x01, 0x05, 0x4f, 0x5a, 0x1d, 
+0x14, 0x9c, 0x0d, 0x6b, 0x61, 0x1f, 0x9b, 0xdd, 
+0xca, 0xeb, 0xd2, 0xc9, 0x2f, 0x8d, 0xde, 0x84, 
+0x6d, 0x6f, 0x45, 0xc1, 0xbf, 0x57, 0x2f, 0xbb, 
+0x90, 0xf7, 0xb6, 0xb5, 0x8a, 0x00, 0x08, 0xcd, 
+0x4a, 0xa2, 0xc7, 0x66, 0xf6, 0xfe, 0x57, 0x71, 
+0xe6, 0xa7, 0x8c, 0xf3, 0x31, 0xf2, 0x97, 0xc7, 
+0xf9, 0xdf, 0x20, 0xdd, 0x8f, 0x47, 0xfa, 0x17, 
+0x40, 0xfa, 0xe7, 0xa2, 0xa1, 0x73, 0xf0, 0xcf, 
+0xdf, 0x11, 0xfc, 0x73, 0x0f, 0x69, 0x80, 0x37, 
+0x91, 0x0a, 0xb8, 0x17, 0x13, 0x84, 0x03, 0xb8, 
+0x10, 0x60, 0xa7, 0xc0, 0x2f, 0xf1, 0x71, 0xf2, 
+0xde, 0x9f, 0x2b, 0x7a, 0x4f, 0xb2, 0x89, 0xe6, 
+0xbf, 0x50, 0x6a, 0xfe, 0x36, 0xef, 0x2c, 0x55, 
+0x37, 0x7f, 0xae, 0x69, 0xe2, 0x7b, 0x95, 0x10, 
+0x00, 0xa2, 0x44, 0x55, 0xa5, 0x10, 0xf8, 0xdd, 
+0xe0, 0x26, 0x41, 0x0b, 0xe0, 0x21, 0xf0, 0x93, 
+0xb1, 0x87, 0xc0, 0x21, 0xb2, 0x6d, 0x17, 0x8b, 
+0xf8, 0x61, 0xd7, 0x32, 0x84, 0x40, 0x7d, 0xe1, 
+0x04, 0x16, 0x58, 0x95, 0x13, 0xe0, 0x8b, 0x01, 
+0xaf, 0xee, 0x3b, 0x18, 0x14, 0x94, 0x20, 0x4c, 
+0xef, 0x1e, 0x3b, 0x69, 0x72, 0xcb, 0xd8, 0x7a, 
+0x0f, 0x0a, 0x46, 0x58, 0x19, 0x14, 0x0c, 0x1f, 
+0x70, 0x82, 0x7c, 0xc7, 0xef, 0xd5, 0x4c, 0xa9, 
+0x30, 0x15, 0xb0, 0x9b, 0x9b, 0x48, 0xaf, 0x5c, 
+0x74, 0x2f, 0x17, 0xf8, 0xc7, 0xe5, 0x9c, 0x19, 
+0xab, 0x34, 0x7f, 0xae, 0x73, 0x77, 0xae, 0x29, 
+0xcd, 0xff, 0x3b, 0x8c, 0xee, 0xb9, 0xe9, 0xcb, 
+0x7b, 0xff, 0x13, 0x78, 0xb2, 0x57, 0x8f, 0xf3, 
+0x19, 0xfa, 0x93, 0xc7, 0xf9, 0x0c, 0x03, 0xf2, 
+0x8d, 0x3f, 0xdf, 0xfa, 0xf3, 0xcd, 0xbf, 0x12, 
+0xfc, 0x03, 0x67, 0xbf, 0x43, 0xc8, 0x07, 0x60, 
+0x6f, 0x00, 0xf6, 0x08, 0xe0, 0xeb, 0x80, 0x5c, 
+0x80, 0x81, 0xcc, 0x13, 0x48, 0x7b, 0xff, 0xdc, 
+0x54, 0xb2, 0xbf, 0x11, 0x6b, 0x14, 0xed, 0x3b, 
+0x1a, 0xcd, 0x7f, 0xec, 0x7b, 0xf3, 0xc9, 0x5b, 
+0x6f, 0xef, 0x9f, 0xb4, 0x41, 0x7c, 0x7f, 0x12, 
+0x02, 0x40, 0x94, 0xa8, 0xea, 0x12, 0x02, 0x4f, 
+0x0d, 0x6b, 0x16, 0x9e, 0xe0, 0xd4, 0x35, 0xf5, 
+0x81, 0x21, 0x1f, 0x10, 0xd0, 0x6f, 0x3f, 0x4d, 
+0x6c, 0xb3, 0x82, 0x5e, 0x7d, 0xce, 0x19, 0x22, 
+0x60, 0x86, 0x95, 0x38, 0x01, 0xef, 0x3a, 0xc0, 
+0x09, 0x2c, 0xb4, 0x0a, 0x27, 0x60, 0xd7, 0x6a, 
+0x3d, 0xf9, 0xf6, 0xda, 0xab, 0xfd, 0xbc, 0x96, 
+0x3c, 0x76, 0xef, 0x9a, 0x4b, 0x93, 0x70, 0x31, 
+0x50, 0xba, 0xb5, 0x70, 0x69, 0xa0, 0x60, 0xdc, 
+0x13, 0x0d, 0x0a, 0x06, 0x8f, 0x3c, 0x4c, 0xfe, 
+0x23, 0x35, 0xfc, 0x0a, 0x73, 0x02, 0x36, 0x31, 
+0xb1, 0xf4, 0xe2, 0x8d, 0x19, 0x16, 0x8d, 0xfe, 
+0x07, 0x20, 0xee, 0x57, 0xdd, 0xfc, 0x23, 0x73, 
+0x52, 0xf4, 0xf6, 0xfe, 0x3b, 0xb1, 0xeb, 0x97, 
+0xf7, 0xfe, 0xbb, 0x01, 0xf4, 0x7d, 0x69, 0x38, 
+0xce, 0x67, 0x4b, 0x5f, 0x8c, 0xf3, 0x1f, 0x70, 
+0xf0, 0x0f, 0xce, 0x01, 0x8b, 0xe0, 0xf2, 0x57, 
+0x80, 0x5f, 0x73, 0x0b, 0x00, 0xe0, 0xcf, 0x08, 
+0xfe, 0xf9, 0x8c, 0x83, 0x7f, 0x8a, 0x8b, 0x69, 
+0x2b, 0xce, 0x05, 0xdf, 0x85, 0x3b, 0xe0, 0xd7, 
+0xf0, 0x00, 0x38, 0x00, 0xd3, 0x20, 0xf5, 0xde, 
+0xdf, 0xe3, 0xdd, 0xb5, 0x46, 0xd1, 0xbe, 0x4c, 
+0xfc, 0x8f, 0xc2, 0xde, 0xdf, 0xad, 0x28, 0x5e, 
+0xdd, 0xfc, 0x2f, 0xa1, 0xfe, 0x4f, 0x7c, 0x5f, 
+0x12, 0x02, 0x40, 0x94, 0xa8, 0x6a, 0xad, 0x17, 
+0x9e, 0xb1, 0x6b, 0x34, 0xb2, 0x45, 0xe4, 0x36, 
+0xd3, 0x1e, 0x02, 0x7b, 0x69, 0x4c, 0xcb, 0x85, 
+0xf4, 0xb2, 0x24, 0x02, 0x66, 0xd4, 0x52, 0x4e, 
+0xc0, 0x78, 0x3d, 0x50, 0x5b, 0x38, 0x01, 0x47, 
+0x5c, 0x0c, 0x04, 0xf6, 0xd9, 0xff, 0x8b, 0x7c, 
+0x31, 0xe0, 0xd2, 0x39, 0x43, 0xfa, 0x58, 0xcb, 
+0x41, 0xc1, 0xb5, 0x66, 0x40, 0xc1, 0x8d, 0x66, 
+0x40, 0xc1, 0xb4, 0x7a, 0x03, 0x0a, 0x72, 0xf9, 
+0x4f, 0x28, 0xa0, 0xc0, 0xc1, 0x1a, 0x7e, 0xc5, 
+0x7f, 0x78, 0x11, 0x8d, 0xd9, 0xbc, 0x98, 0xfa, 
+0xdf, 0xb1, 0x2f, 0xf5, 0xe9, 0xbf, 0x37, 0xca, 
+0x2d, 0x63, 0xad, 0x9e, 0x00, 0x50, 0xc7, 0xfd, 
+0x1a, 0xee, 0xfd, 0xd9, 0xd2, 0x57, 0x1e, 0xe7, 
+0xef, 0x53, 0x8d, 0xf3, 0x59, 0x28, 0x7c, 0x0c, 
+0x5b, 0xe0, 0xa3, 0x68, 0xec, 0xec, 0xf3, 0x7f, 
+0x05, 0x7e, 0xff, 0x72, 0xf0, 0xcf, 0x39, 0x78, 
+0x06, 0x64, 0x63, 0x82, 0xc0, 0xb9, 0x00, 0x9c, 
+0x0f, 0x70, 0x05, 0xc0, 0x20, 0x37, 0xff, 0x6c, 
+0x7c, 0x1c, 0x3f, 0xfd, 0xcf, 0x2a, 0x59, 0x6f, 
+0x14, 0xed, 0xcb, 0xcd, 0x7f, 0xe4, 0x9d, 0x39, 
+0xe4, 0x70, 0x2c, 0x5a, 0xdd, 0xfc, 0xbf, 0x45, 
+0xb5, 0x17, 0xdf, 0x8b, 0x84, 0x00, 0x10, 0x25, 
+0xaa, 0x06, 0x85, 0xc0, 0xb4, 0xb6, 0x63, 0x5a, 
+0x2d, 0x38, 0xe2, 0xd5, 0x6b, 0x07, 0x19, 0x7b, 
+0x08, 0xec, 0xa4, 0x11, 0xcd, 0x67, 0x43, 0x08, 
+0x4c, 0x57, 0x84, 0x40, 0xed, 0xe5, 0x04, 0xc2, 
+0xad, 0xce, 0x09, 0x8c, 0xad, 0x24, 0x27, 0xe0, 
+0xd4, 0x7e, 0x0b, 0x05, 0xf7, 0x3b, 0x7c, 0x5f, 
+0x6b, 0xd5, 0xfc, 0x68, 0x7a, 0x87, 0xcd, 0xca, 
+0xaf, 0xad, 0x1a, 0x50, 0x70, 0x8b, 0x19, 0x50, 
+0x30, 0xc7, 0x0c, 0x28, 0x98, 0x5f, 0x63, 0xa0, 
+0xa0, 0x25, 0xd6, 0xc2, 0x3e, 0x93, 0x77, 0x53, 
+0xf0, 0x1b, 0x1a, 0x7e, 0xc5, 0x7b, 0x52, 0x3e, 
+0x0d, 0xdd, 0x11, 0x61, 0xf2, 0xe9, 0x7f, 0xc8, 
+0xc9, 0x00, 0x34, 0xfd, 0x75, 0x4a, 0xf3, 0x5f, 
+0xb4, 0x35, 0xbd, 0xd4, 0xbd, 0xff, 0x0d, 0xb8, 
+0xfa, 0x99, 0x1a, 0xe7, 0xff, 0x4f, 0x1d, 0xfc, 
+0x83, 0x8f, 0xe3, 0x86, 0xcf, 0x8d, 0xff, 0x3b, 
+0x8c, 0xf9, 0xaf, 0xc8, 0xc1, 0x3f, 0x10, 0x06, 
+0x2c, 0x10, 0xbe, 0x80, 0x29, 0x10, 0xff, 0x5e, 
+0xe9, 0x98, 0x06, 0x70, 0xf3, 0x8f, 0xc2, 0xde, 
+0xdf, 0xf0, 0xdc, 0x4f, 0x7a, 0xf2, 0xbf, 0x33, 
+0x97, 0x6c, 0x2e, 0xa8, 0xf7, 0xfe, 0x49, 0x5c, 
+0x36, 0xe2, 0xfb, 0x8f, 0x10, 0x00, 0xa2, 0x44, 
+0xd5, 0x8e, 0xd5, 0xc0, 0xb3, 0xf6, 0xbd, 0xc7, 
+0xb7, 0x5e, 0x76, 0xd9, 0x94, 0x87, 0x80, 0x7b, 
+0x8f, 0x5c, 0x1a, 0xd2, 0x34, 0x54, 0x25, 0x04, 
+0x66, 0x58, 0x8d, 0x13, 0x18, 0x50, 0x65, 0x9c, 
+0xc0, 0xcc, 0x5a, 0xc1, 0x09, 0x70, 0x53, 0x77, 
+0xed, 0x94, 0xc9, 0x93, 0x00, 0x69, 0x35, 0x10, 
+0xd0, 0x77, 0xff, 0x23, 0xfb, 0xb6, 0x89, 0xf5, 
+0x0e, 0x14, 0x0c, 0xb3, 0x10, 0x14, 0x9c, 0x53, 
+0x41, 0x50, 0x90, 0xad, 0x85, 0xbd, 0xa7, 0xe4, 
+0x53, 0xe8, 0xcb, 0x25, 0x1a, 0x6b, 0x61, 0xe7, 
+0x1c, 0x7a, 0xf3, 0xb0, 0xbf, 0xde, 0xd3, 0xbf, 
+0x47, 0x46, 0x9c, 0x4e, 0x00, 0x6c, 0x5b, 0xa7, 
+0xc4, 0xfd, 0x1a, 0xee, 0xfd, 0x4f, 0xc1, 0xe0, 
+0x87, 0xc3, 0x7c, 0x78, 0x9c, 0x7f, 0xc2, 0x60, 
+0x9c, 0xcf, 0xc5, 0x3f, 0xe7, 0xb7, 0xf1, 0xa8, 
+0x9f, 0x3f, 0x86, 0x47, 0xff, 0xb7, 0x20, 0x18, 
+0x78, 0x15, 0xc0, 0x2b, 0x01, 0x5e, 0x0d, 0xb0, 
+0xfb, 0x5f, 0x36, 0x46, 0xfe, 0xf2, 0xde, 0x7f, 
+0x63, 0xee, 0x16, 0x9a, 0x76, 0x23, 0xc6, 0x28, 
+0xda, 0x97, 0x9b, 0xbf, 0x6e, 0xef, 0x9f, 0x24, 
+0xd7, 0x3a, 0xf1, 0x3d, 0x47, 0x08, 0x00, 0x51, 
+0xa2, 0x6a, 0xa3, 0x87, 0xc0, 0x20, 0x78, 0x08, 
+0xfc, 0x25, 0xa0, 0x6f, 0x91, 0x91, 0x10, 0x70, 
+0xee, 0x9a, 0x46, 0x83, 0x1a, 0xfb, 0x9b, 0x10, 
+0x02, 0xd6, 0xe2, 0x04, 0x7c, 0xaa, 0x86, 0x13, 
+0x68, 0x58, 0xf3, 0x9c, 0x80, 0x6d, 0xf3, 0x58, 
+0xf2, 0xe8, 0x9a, 0x07, 0x48, 0xb0, 0x44, 0x5a, 
+0xb9, 0xf8, 0xf6, 0xda, 0xf3, 0x78, 0x6a, 0xab, 
+0xb5, 0xb5, 0x0e, 0x14, 0xf4, 0xb6, 0x10, 0x14, 
+0x0c, 0x32, 0x0b, 0x0a, 0x1e, 0x37, 0x03, 0x0a, 
+0x9e, 0x33, 0x03, 0x0a, 0x5e, 0x29, 0x73, 0x2d, 
+0xc0, 0xd6, 0xc2, 0xde, 0x36, 0xbb, 0xb4, 0xd6, 
+0xc2, 0xc7, 0xc8, 0x31, 0x78, 0x13, 0xbd, 0x72, 
+0xd6, 0x8d, 0x46, 0x22, 0xee, 0x57, 0xd3, 0xfc, 
+0x35, 0x02, 0x20, 0x3a, 0x3f, 0x57, 0x6a, 0xfe, 
+0x7c, 0xda, 0xa7, 0xde, 0xfb, 0xef, 0x81, 0x89, 
+0x0f, 0x3f, 0xcd, 0xff, 0x1b, 0x4f, 0xef, 0x86, 
+0xe3, 0x7c, 0x7e, 0xfa, 0x97, 0x83, 0x7f, 0x78, 
+0x2a, 0xc0, 0xd3, 0x01, 0x9e, 0x12, 0x30, 0xfc, 
+0xa7, 0x0e, 0xfe, 0x61, 0x38, 0xb0, 0x00, 0x1e, 
+0x01, 0xea, 0xbd, 0xbf, 0xfb, 0xbb, 0x6b, 0xb4, 
+0xd1, 0xbe, 0xea, 0x73, 0xbf, 0xb9, 0x34, 0xf2, 
+0xf6, 0x1c, 0xed, 0xde, 0x5f, 0x69, 0xfe, 0x17, 
+0x50, 0xbf, 0x13, 0xdf, 0x6b, 0x84, 0x00, 0x10, 
+0x25, 0xaa, 0xd6, 0xd6, 0xeb, 0x0d, 0xdc, 0x26, 
+0xc3, 0x43, 0xe0, 0x5f, 0x41, 0xb8, 0x10, 0x30, 
+0xf4, 0x10, 0x70, 0xe8, 0x9c, 0x44, 0x6f, 0x36, 
+0xf4, 0x92, 0x84, 0x80, 0x9a, 0x13, 0x78, 0xc5, 
+0xea, 0x9c, 0x80, 0xaf, 0xd5, 0x39, 0x81, 0xe1, 
+0xd6, 0xe2, 0x04, 0x2c, 0x5a, 0x0f, 0x18, 0x0b, 
+0x81, 0x29, 0x2d, 0xf1, 0x74, 0xda, 0x23, 0xff, 
+0xa1, 0xfc, 0xf9, 0xf4, 0xea, 0xbe, 0x9d, 0x6c, 
+0x5b, 0x44, 0x5b, 0x1d, 0x14, 0x9c, 0x6e, 0x21, 
+0x28, 0xe8, 0x5e, 0xab, 0x40, 0xc1, 0x4b, 0x16, 
+0xf3, 0x01, 0xa1, 0x43, 0x8e, 0x48, 0x06, 0x42, 
+0xd2, 0x39, 0x2b, 0x92, 0x07, 0xdd, 0xa3, 0x92, 
+0xa4, 0xa7, 0x7e, 0x16, 0x00, 0x3e, 0x30, 0x00, 
+0x92, 0xe3, 0x7e, 0xcf, 0xe0, 0x6e, 0x5f, 0x1e, 
+0xfd, 0x67, 0xe1, 0xbc, 0x8f, 0xe9, 0xfe, 0xef, 
+0xb4, 0x96, 0xbe, 0xea, 0x71, 0x3e, 0xef, 0xfd, 
+0x79, 0xff, 0xcf, 0x1c, 0x00, 0x9f, 0xf7, 0x31, 
+0x17, 0xc0, 0x7c, 0x00, 0x9f, 0xfd, 0xf1, 0xf9, 
+0x1f, 0x9f, 0x01, 0xf2, 0x39, 0x20, 0x3b, 0x05, 
+0x5e, 0x00, 0x30, 0xa8, 0xde, 0xfb, 0x47, 0x1c, 
+0x4b, 0x30, 0x79, 0xee, 0x37, 0xe2, 0x4e, 0x24, 
+0x39, 0x1e, 0x8b, 0x51, 0x37, 0xff, 0xaf, 0x50, 
+0xad, 0xc5, 0xf7, 0x17, 0x21, 0x00, 0x44, 0x89, 
+0xaa, 0x03, 0x7c, 0xc0, 0xd4, 0x5f, 0x0f, 0x68, 
+0xe4, 0xe3, 0x07, 0xaf, 0x80, 0xff, 0x9a, 0xf2, 
+0x10, 0x98, 0xda, 0x21, 0x9e, 0x20, 0x14, 0xb4, 
+0x42, 0xa0, 0x1a, 0x38, 0x01, 0x8b, 0xd6, 0x03, 
+0x35, 0xc7, 0x09, 0x8c, 0x2b, 0x07, 0x27, 0x60, 
+0xd7, 0x3a, 0x81, 0xfc, 0x7b, 0x17, 0xdc, 0xd7, 
+0x8a, 0xaa, 0xc7, 0x6e, 0x5d, 0x72, 0x68, 0x52, 
+0xb3, 0x55, 0x66, 0xad, 0x85, 0x27, 0x5b, 0x68, 
+0x2d, 0xfc, 0x44, 0x81, 0x82, 0x63, 0x8b, 0xc8, 
+0xdd, 0x61, 0xab, 0x34, 0x0d, 0x08, 0x19, 0x75, 
+0x80, 0xfc, 0xa3, 0x52, 0x95, 0xb8, 0xdf, 0xbf, 
+0x82, 0xe6, 0x57, 0xef, 0xfd, 0xef, 0xc0, 0xa8, 
+0x47, 0x1a, 0xe7, 0x83, 0xe8, 0x2f, 0xc0, 0x05, 
+0x80, 0x3c, 0xce, 0xff, 0x05, 0xc4, 0x3f, 0x93, 
+0xff, 0x6c, 0xe8, 0xc3, 0x97, 0x00, 0x7c, 0x11, 
+0xc0, 0x97, 0x01, 0x6c, 0xf8, 0x73, 0x1e, 0x02, 
+0x82, 0x0d, 0x80, 0xd8, 0x08, 0x88, 0x0d, 0x81, 
+0x3e, 0x05, 0x38, 0xc8, 0x63, 0xff, 0x0c, 0x40, 
+0x84, 0xdc, 0xfc, 0x57, 0xed, 0x4d, 0x36, 0x6a, 
+0xfe, 0x7c, 0xee, 0x37, 0x12, 0xcd, 0xdf, 0xe6, 
+0xc2, 0x12, 0x75, 0xf3, 0x7f, 0x8c, 0x1a, 0x2b, 
+0xbe, 0xaf, 0x08, 0x01, 0x20, 0x4a, 0x54, 0x5d, 
+0x13, 0x02, 0xff, 0xf7, 0x56, 0x93, 0xc0, 0xc5, 
+0x8e, 0x9d, 0x93, 0xee, 0xf1, 0x04, 0x40, 0x2d, 
+0x04, 0x78, 0x42, 0x60, 0xd3, 0x2e, 0x46, 0x3a, 
+0x1d, 0xd4, 0x17, 0x02, 0x96, 0xac, 0x07, 0xca, 
+0xcf, 0x09, 0x0c, 0xac, 0x67, 0x9c, 0x80, 0x63, 
+0xdb, 0x24, 0x76, 0x12, 0xfc, 0x59, 0x63, 0x2d, 
+0x7c, 0xe4, 0x91, 0x53, 0xa7, 0x34, 0x58, 0x0b, 
+0x2f, 0xaf, 0xb7, 0xa0, 0xe0, 0xcc, 0x2a, 0x00, 
+0x05, 0x23, 0xfa, 0x9e, 0x56, 0x5e, 0x8f, 0xd1, 
+0xde, 0x85, 0x92, 0x6f, 0xbf, 0xe1, 0xde, 0xff, 
+0x0c, 0xc6, 0xfd, 0xf2, 0x38, 0x9f, 0x2d, 0x7d, 
+0xd5, 0xe3, 0x7c, 0x9e, 0x0a, 0xf0, 0xed, 0x3f, 
+0x5b, 0xfa, 0x2a, 0xc1, 0x3f, 0xf8, 0xf5, 0x6c, 
+0xf9, 0xcb, 0xd6, 0xbf, 0xfc, 0xf1, 0x1c, 0xfc, 
+0xc3, 0x36, 0xc1, 0x7c, 0x3d, 0xc0, 0xbf, 0x6f, 
+0x1a, 0x18, 0x01, 0xde, 0xfb, 0x4f, 0xbd, 0x11, 
+0xa5, 0x1f, 0xed, 0x2b, 0x35, 0xff, 0x39, 0x34, 
+0xe6, 0xda, 0x3c, 0xf2, 0xde, 0xb5, 0x41, 0x2d, 
+0x00, 0x62, 0xc4, 0xf7, 0x12, 0x21, 0x00, 0x44, 
+0x89, 0xaa, 0xcb, 0x42, 0xe0, 0xe9, 0xa1, 0xcd, 
+0xc2, 0x36, 0x38, 0x75, 0x4d, 0x33, 0xf6, 0x10, 
+0x00, 0x33, 0x30, 0xbe, 0xf5, 0x52, 0x7a, 0xe5, 
+0xb9, 0x19, 0x65, 0x08, 0x01, 0xe7, 0x5a, 0xcc, 
+0x09, 0x58, 0xb2, 0x1e, 0xa8, 0x0a, 0x4e, 0x60, 
+0x15, 0x39, 0x75, 0x48, 0xc5, 0xa5, 0x40, 0xb1, 
+0x34, 0x11, 0x08, 0xea, 0x77, 0xe8, 0x91, 0x63, 
+0xfb, 0xe4, 0x5a, 0x06, 0x0a, 0xee, 0x30, 0x03, 
+0x0a, 0x16, 0xd4, 0x18, 0x28, 0x38, 0xaf, 0xfb, 
+0x45, 0xe5, 0x35, 0x38, 0xf3, 0xf5, 0xa3, 0x20, 
+0xf5, 0x6f, 0x18, 0xef, 0xfd, 0xf1, 0xa4, 0xaf, 
+0x37, 0xce, 0x67, 0x4b, 0x5f, 0x8c, 0xf3, 0xd9, 
+0xe5, 0x8f, 0xdd, 0xfe, 0xd8, 0xf5, 0x8f, 0xdd, 
+0xff, 0x38, 0xd4, 0x87, 0xdd, 0x00, 0xd9, 0x15, 
+0x90, 0xc3, 0x7e, 0x38, 0xf4, 0x87, 0xc3, 0x7f, 
+0x38, 0x04, 0x88, 0x45, 0xc5, 0x6e, 0xfc, 0x3e, 
+0xea, 0xbd, 0xbf, 0xdb, 0xc5, 0xd5, 0x46, 0xb7, 
+0xfe, 0xdc, 0xfc, 0x47, 0xdc, 0x9a, 0x4d, 0xee, 
+0x85, 0x7a, 0x7b, 0xff, 0x33, 0xbe, 0x3b, 0x37, 
+0xfe, 0x56, 0x7c, 0x0f, 0x11, 0x02, 0x40, 0x94, 
+0xa8, 0x3a, 0x5f, 0xfd, 0x9f, 0x99, 0xda, 0x64, 
+0x44, 0x8b, 0xd9, 0x3b, 0xdd, 0x7a, 0x18, 0x7b, 
+0x08, 0xf8, 0xf6, 0xd9, 0x43, 0xa3, 0x5b, 0xcc, 
+0xa7, 0x97, 0x9e, 0x75, 0x84, 0x08, 0x70, 0x34, 
+0xcb, 0x09, 0xa8, 0xa7, 0x02, 0xb5, 0x95, 0x13, 
+0x18, 0x51, 0x8d, 0x9c, 0x80, 0x4d, 0xb3, 0x28, 
+0x72, 0xed, 0x9c, 0xf5, 0x58, 0xbe, 0x18, 0xf0, 
+0xef, 0x53, 0xf8, 0xd8, 0xae, 0x4d, 0x82, 0x0e, 
+0x14, 0x6c, 0x52, 0xb5, 0xa0, 0xa0, 0x4b, 0x85, 
+0x41, 0xc1, 0xbd, 0x66, 0x40, 0xc1, 0x43, 0x66, 
+0x40, 0xc1, 0x13, 0x95, 0x06, 0x05, 0x23, 0xfa, 
+0x9d, 0x52, 0x5e, 0x7b, 0xeb, 0x42, 0x8b, 0xa4, 
+0xe6, 0x6f, 0xb8, 0xf7, 0xff, 0x0a, 0x64, 0x3f, 
+0x8f, 0xf3, 0x2f, 0xc8, 0xe3, 0x7c, 0x88, 0x00, 
+0x1e, 0xe7, 0xb3, 0xcf, 0x3f, 0xfb, 0xfd, 0xb3, 
+0xef, 0x3f, 0xc7, 0xf9, 0xca, 0xc1, 0x3f, 0xfc, 
+0xb4, 0xcf, 0x71, 0xbf, 0x1c, 0xfb, 0xcb, 0xac, 
+0x00, 0x4f, 0x03, 0xce, 0xc0, 0x43, 0x80, 0x9b, 
+0x7f, 0x0e, 0xde, 0xc6, 0xa3, 0xff, 0xf0, 0xe3, 
+0xf1, 0x46, 0xd1, 0xbe, 0x52, 0xf3, 0xbf, 0x33, 
+0x9b, 0x1c, 0x4b, 0xf4, 0xf6, 0xfe, 0x5f, 0xa2, 
+0xf9, 0xb7, 0x10, 0xdf, 0x37, 0x84, 0x00, 0x10, 
+0x25, 0xaa, 0xbe, 0x09, 0x81, 0xf6, 0xf0, 0x10, 
+0x38, 0x66, 0xca, 0x43, 0x80, 0xdf, 0x36, 0xbc, 
+0x59, 0x84, 0x81, 0x10, 0x10, 0x9c, 0x80, 0x25, 
+0xeb, 0x81, 0xc9, 0x2d, 0x62, 0xc9, 0xb3, 0xdb, 
+0xb6, 0x87, 0xf2, 0xc5, 0x80, 0x4f, 0xcf, 0x5d, 
+0x80, 0x07, 0x57, 0x5b, 0x0c, 0x0a, 0x4e, 0xa9, 
+0x33, 0xa0, 0xe0, 0x31, 0x33, 0xa0, 0xa0, 0x19, 
+0x6b, 0x61, 0xed, 0x5a, 0x60, 0x6e, 0xf7, 0x77, 
+0x95, 0xd7, 0xdb, 0xac, 0x01, 0x47, 0xb0, 0xe3, 
+0xff, 0xd0, 0x68, 0xef, 0xff, 0xe1, 0xfb, 0xef, 
+0x1b, 0x8d, 0xf3, 0xf5, 0x82, 0x7f, 0x40, 0xf3, 
+0x73, 0xf2, 0x1f, 0x27, 0x00, 0xf2, 0x88, 0xff, 
+0x1f, 0x72, 0xf0, 0x0f, 0x7c, 0xfd, 0xcf, 0xa3, 
+0xe9, 0x7f, 0x89, 0x6b, 0x81, 0x0f, 0xf1, 0xf1, 
+0xbc, 0xf7, 0xcf, 0x84, 0x98, 0xe0, 0xe6, 0xbf, 
+0x72, 0x6f, 0x92, 0x51, 0xb4, 0x2f, 0x13, 0xff, 
+0xdc, 0xfc, 0x6d, 0xce, 0xeb, 0xed, 0xfd, 0x1f, 
+0xa1, 0xf9, 0x8f, 0x10, 0xdf, 0x2b, 0x84, 0x00, 
+0x10, 0x25, 0xaa, 0xfe, 0xae, 0x06, 0x9e, 0x9d, 
+0xd6, 0x77, 0x7c, 0x9b, 0xa5, 0x57, 0xf9, 0xe9, 
+0xdf, 0x50, 0x08, 0xb8, 0x75, 0xcf, 0x26, 0x64, 
+0x10, 0xd0, 0x4b, 0xcf, 0x98, 0x12, 0x02, 0x55, 
+0xcf, 0x09, 0xa8, 0xd7, 0x03, 0xb5, 0x95, 0x13, 
+0x50, 0xaf, 0x07, 0xd4, 0x42, 0x60, 0x6a, 0xcb, 
+0x75, 0xdc, 0xfc, 0xef, 0xcb, 0x9f, 0x4b, 0x8f, 
+0x6e, 0xdb, 0xc8, 0xa6, 0x79, 0x74, 0xcd, 0x80, 
+0x82, 0xad, 0xac, 0x0f, 0x0a, 0x86, 0x5a, 0x08, 
+0x0a, 0x46, 0x96, 0x02, 0x0a, 0xce, 0xec, 0x7f, 
+0x52, 0x79, 0x9d, 0x6d, 0x98, 0xbf, 0x5f, 0xd9, 
+0xfb, 0x73, 0xf3, 0xe7, 0xbd, 0xff, 0x59, 0x3c, 
+0xf1, 0x9b, 0x1c, 0xe7, 0x03, 0x04, 0xfc, 0x14, 
+0xa3, 0xfe, 0xe3, 0x08, 0xfe, 0xd9, 0x8a, 0x9d, 
+0xfe, 0xc5, 0x73, 0xe7, 0xe8, 0x9b, 0xaf, 0xbe, 
+0x92, 0x08, 0xff, 0x77, 0xb0, 0x1a, 0xc8, 0x43, 
+0x93, 0x3f, 0x81, 0x58, 0xdf, 0xbf, 0x03, 0xf8, 
+0xfb, 0x16, 0x27, 0x83, 0x6c, 0xf4, 0x23, 0xed, 
+0xfd, 0xf1, 0xf6, 0x0d, 0x79, 0x5b, 0x68, 0xca, 
+0x8d, 0x55, 0x7a, 0xd1, 0xbe, 0x72, 0xf3, 0xe7, 
+0xbd, 0xbf, 0xcf, 0x2e, 0xf5, 0xbd, 0xff, 0xc6, 
+0xe5, 0xe2, 0xfb, 0x83, 0x10, 0x00, 0xa2, 0x44, 
+0x3d, 0x11, 0x85, 0x06, 0x3f, 0x64, 0x52, 0xdb, 
+0x55, 0x7f, 0x35, 0xe5, 0x21, 0xe0, 0xd4, 0x75, 
+0x0b, 0x21, 0x95, 0x10, 0x42, 0xc0, 0xc1, 0x02, 
+0x21, 0x50, 0x95, 0x9c, 0x40, 0x40, 0x1d, 0xe0, 
+0x04, 0xf4, 0xd7, 0x03, 0x76, 0x6d, 0xd6, 0x53, 
+0x40, 0x9f, 0xc2, 0x7b, 0x5a, 0x6b, 0xe1, 0xc7, 
+0xae, 0x5d, 0xb2, 0x68, 0x62, 0xb3, 0x95, 0xa5, 
+0x83, 0x82, 0x46, 0x42, 0x60, 0x9d, 0x19, 0x6b, 
+0xe1, 0xea, 0x03, 0x05, 0x03, 0xad, 0x08, 0x0a, 
+0x46, 0xf6, 0x38, 0xa7, 0xbc, 0xb6, 0x22, 0x87, 
+0x14, 0xd3, 0x5f, 0x3f, 0xfa, 0x98, 0xf2, 0xd1, 
+0xe0, 0xe5, 0xbd, 0xff, 0x5e, 0xec, 0xeb, 0x1f, 
+0xe1, 0xb4, 0xcf, 0x70, 0x9c, 0xcf, 0x27, 0x80, 
+0xea, 0xe0, 0x9f, 0x33, 0x30, 0x05, 0xfa, 0xe7, 
+0xe7, 0x9f, 0xd3, 0xff, 0x7e, 0xf8, 0x41, 0x2f, 
+0xf8, 0xe7, 0x2f, 0x98, 0x1c, 0x30, 0x34, 0xb8, 
+0x13, 0x27, 0x81, 0xd2, 0xde, 0x3f, 0x1b, 0x7b, 
+0xff, 0x8c, 0x34, 0x72, 0xbd, 0x18, 0x6b, 0x14, 
+0xed, 0xcb, 0xe7, 0x7e, 0x23, 0x6e, 0xcf, 0x22, 
+0xf7, 0x02, 0x79, 0xef, 0xcf, 0x22, 0x60, 0xe3, 
+0x71, 0xd4, 0xaf, 0xc5, 0xf7, 0x05, 0x21, 0x00, 
+0x44, 0x89, 0x7a, 0xa2, 0xea, 0xb5, 0xe7, 0x5d, 
+0xed, 0x26, 0xb7, 0x5f, 0xfd, 0x6f, 0x23, 0x0f, 
+0x01, 0xa4, 0x10, 0x3a, 0x74, 0xda, 0x28, 0xc5, 
+0x0f, 0xb3, 0x10, 0x28, 0x2f, 0x27, 0xf0, 0x5a, 
+0xad, 0xe6, 0x04, 0x8c, 0xd7, 0x03, 0xd6, 0xe6, 
+0x04, 0x1c, 0xdb, 0x6d, 0x62, 0x40, 0xf0, 0x9e, 
+0xc6, 0x5a, 0xb8, 0xf8, 0xb1, 0x53, 0xc7, 0x2d, 
+0xb8, 0x18, 0x58, 0x56, 0x09, 0x50, 0x70, 0xbd, 
+0x19, 0x50, 0x30, 0xa5, 0x54, 0x50, 0x50, 0x23, 
+0x04, 0x6a, 0x10, 0x14, 0xec, 0x74, 0x9e, 0xc2, 
+0xfb, 0x1f, 0x57, 0x5e, 0x57, 0xa9, 0x51, 0x87, 
+0xe8, 0x2c, 0x9e, 0xdc, 0x15, 0x9f, 0x7f, 0x8c, 
+0xea, 0x39, 0xa1, 0x4f, 0xb2, 0xf4, 0x35, 0x18, 
+0xe7, 0xf3, 0xdb, 0x2f, 0xe3, 0xcc, 0x6f, 0x87, 
+0x1c, 0xfc, 0x03, 0x8b, 0xe0, 0x07, 0x0f, 0x1e, 
+0xd0, 0x5d, 0x9c, 0x08, 0xee, 0x87, 0x68, 0xd8, 
+0xc7, 0xc1, 0x3f, 0x70, 0xfd, 0x63, 0xa7, 0xc0, 
+0x63, 0xf8, 0xb5, 0xdc, 0xfc, 0x73, 0xb1, 0x3a, 
+0xe0, 0xa7, 0xff, 0xb0, 0xe3, 0x71, 0x46, 0xb7, 
+0xfe, 0x7c, 0xee, 0x37, 0xfc, 0x6e, 0x04, 0x4d, 
+0x3f, 0x1a, 0xa3, 0x6e, 0xfe, 0xff, 0x42, 0x35, 
+0x15, 0xdf, 0x0b, 0x84, 0x00, 0x10, 0x25, 0xea, 
+0xc9, 0xe4, 0x03, 0x9e, 0x9e, 0xfc, 0x1b, 0x98, 
+0x05, 0x05, 0xc1, 0x43, 0xe0, 0x3b, 0xf6, 0x0c, 
+0xd0, 0xf7, 0x10, 0x28, 0x86, 0x87, 0xc0, 0x3a, 
+0xa9, 0xb1, 0x1b, 0x0b, 0x01, 0x4b, 0x38, 0x01, 
+0xd7, 0x3a, 0xc0, 0x09, 0x44, 0x56, 0x09, 0x27, 
+0x30, 0x09, 0x4f, 0xfe, 0xce, 0x1d, 0x53, 0xf9, 
+0x64, 0x50, 0x5a, 0x0d, 0xe0, 0x84, 0xf0, 0xb1, 
+0x43, 0xbb, 0x8d, 0xd5, 0x0c, 0x0a, 0x66, 0x96, 
+0x0e, 0x0a, 0x9a, 0xb0, 0x16, 0xf6, 0xb3, 0xc8, 
+0x5a, 0xd8, 0x72, 0x50, 0x30, 0xa2, 0x87, 0x0e, 
+0xfc, 0x9b, 0x3b, 0xf2, 0x10, 0x5d, 0xbd, 0x72, 
+0x55, 0x79, 0xf2, 0xe7, 0x5d, 0xfd, 0x5f, 0x61, 
+0xec, 0xc3, 0xe0, 0xdf, 0x3b, 0xb0, 0xf4, 0x95, 
+0xc7, 0xf9, 0x52, 0xf0, 0x0f, 0x9a, 0xfa, 0x4d, 
+0x34, 0x77, 0x0e, 0xfe, 0xd9, 0x0f, 0xc3, 0x1f, 
+0x6e, 0xfa, 0xdc, 0xfc, 0x3f, 0x86, 0x08, 0x38, 
+0x0a, 0x31, 0xc0, 0xc6, 0x40, 0x97, 0xe1, 0xf7, 
+0xcf, 0x22, 0xe1, 0x16, 0xd6, 0x06, 0x32, 0xf1, 
+0xcf, 0xcd, 0x7f, 0xc5, 0xbe, 0x8d, 0xd2, 0xb9, 
+0xdf, 0x38, 0x83, 0x73, 0xbf, 0xe1, 0x77, 0x66, 
+0x91, 0xed, 0xb9, 0x25, 0xea, 0xe6, 0xff, 0x10, 
+0x35, 0x44, 0x7c, 0x0f, 0x10, 0x02, 0x40, 0x94, 
+0x28, 0x21, 0x04, 0x9e, 0x9e, 0xfc, 0xfb, 0xb7, 
+0x1a, 0x07, 0x2c, 0x83, 0x87, 0xc0, 0xcf, 0xc6, 
+0x1e, 0x02, 0x07, 0x69, 0x52, 0xdb, 0x28, 0xa9, 
+0xe1, 0x4b, 0x42, 0xa0, 0xc2, 0x9c, 0x80, 0x9b, 
+0xd5, 0x38, 0x81, 0xb7, 0xaa, 0x8c, 0x13, 0x98, 
+0x63, 0x35, 0x4e, 0x80, 0x8b, 0x2f, 0x06, 0xdc, 
+0xba, 0x64, 0x3f, 0x0a, 0x7d, 0xa1, 0x44, 0x72, 
+0x15, 0xf4, 0xeb, 0xbd, 0x8f, 0xa6, 0xb5, 0x8e, 
+0x2b, 0x1f, 0x28, 0xd8, 0xac, 0x0e, 0x82, 0x82, 
+0x1d, 0x71, 0xf3, 0xff, 0x82, 0xee, 0x35, 0x94, 
+0x9d, 0x70, 0x98, 0xb6, 0xe0, 0x09, 0x5f, 0xde, 
+0xfb, 0xbf, 0x8d, 0x49, 0x00, 0x8f, 0xf3, 0xd9, 
+0xd2, 0x57, 0x3d, 0xce, 0xe7, 0x7f, 0xf8, 0x47, 
+0xfe, 0x77, 0x25, 0xf8, 0x07, 0x1f, 0xc7, 0xe3, 
+0x7f, 0x5e, 0x03, 0xf0, 0x3a, 0xe0, 0x6d, 0x6d, 
+0xf0, 0xcf, 0x17, 0x28, 0x6e, 0xfa, 0xfc, 0xfb, 
+0x6a, 0xf6, 0xfe, 0x29, 0x34, 0xe5, 0xe6, 0x4a, 
+0xa3, 0x73, 0x3f, 0x6e, 0xfe, 0x63, 0xae, 0xcd, 
+0x25, 0x9f, 0xfc, 0x8d, 0x72, 0xf3, 0xe7, 0x5a, 
+0x28, 0xbe, 0xee, 0x85, 0x00, 0x10, 0x25, 0x4a, 
+0x94, 0xaa, 0xfa, 0x3d, 0x3d, 0xf9, 0x99, 0xa1, 
+0x4d, 0x43, 0x93, 0x91, 0x27, 0xf0, 0xd0, 0xd8, 
+0x43, 0xa0, 0x90, 0xc6, 0xb5, 0x5e, 0x42, 0x2f, 
+0x4b, 0x22, 0xc0, 0xa1, 0x16, 0x71, 0x02, 0x81, 
+0xb5, 0x9e, 0x13, 0x98, 0x8c, 0x8c, 0x01, 0xd8, 
+0x09, 0xf3, 0x34, 0xe0, 0xb1, 0x94, 0x96, 0xd7, 
+0x63, 0x27, 0x4d, 0x2e, 0xf5, 0x62, 0xa0, 0xf6, 
+0x80, 0x82, 0x7e, 0x15, 0x04, 0x05, 0xc3, 0x7b, 
+0xea, 0x46, 0xff, 0x0b, 0x26, 0x1c, 0xa0, 0x6d, 
+0x20, 0xf8, 0x95, 0xbd, 0x3f, 0x9e, 0xea, 0x95, 
+0x71, 0x3e, 0x7e, 0xce, 0xe3, 0x7c, 0x7e, 0xe2, 
+0xe7, 0x27, 0x7f, 0x9e, 0x00, 0xf0, 0x24, 0x80, 
+0x27, 0x02, 0x3c, 0x19, 0xe0, 0x09, 0x01, 0x83, 
+0x7f, 0xef, 0x02, 0x00, 0x64, 0x10, 0x90, 0x81, 
+0xc0, 0x4f, 0x39, 0xf8, 0x07, 0x1f, 0xbb, 0x0d, 
+0x02, 0x41, 0xb9, 0xf7, 0xc7, 0xde, 0xdf, 0xf9, 
+0x52, 0xb4, 0x51, 0xb4, 0x2f, 0x37, 0x7f, 0xdd, 
+0xde, 0x5f, 0x69, 0xfe, 0x47, 0x7c, 0x76, 0x6e, 
+0xfc, 0x95, 0xf8, 0x7a, 0x17, 0x02, 0x40, 0x94, 
+0x28, 0x51, 0xa6, 0x85, 0x40, 0x33, 0x44, 0x0c, 
+0xef, 0x86, 0x87, 0xc0, 0x63, 0x23, 0x0f, 0x81, 
+0xde, 0xbb, 0x69, 0x54, 0x8b, 0xb9, 0xf4, 0xe2, 
+0x33, 0xf6, 0x8a, 0x10, 0xa8, 0x5d, 0x9c, 0x40, 
+0x90, 0xd5, 0x39, 0x81, 0x51, 0x56, 0xe2, 0x04, 
+0xa6, 0x22, 0x63, 0xc0, 0xb7, 0xd7, 0xde, 0x7b, 
+0x9a, 0xcf, 0x65, 0xc9, 0x63, 0xf7, 0xae, 0x79, 
+0x34, 0xa9, 0x79, 0x94, 0x01, 0x28, 0xb8, 0xd2, 
+0xea, 0xa0, 0xa0, 0xb3, 0x85, 0xa0, 0xa0, 0x97, 
+0x21, 0x28, 0xd8, 0xa6, 0x02, 0xa0, 0x60, 0xc7, 
+0x63, 0x7a, 0x4f, 0xff, 0xa9, 0x71, 0xbb, 0x95, 
+0xe6, 0xcf, 0x7b, 0x7f, 0x0e, 0xf3, 0xf9, 0x9b, 
+0x3c, 0xce, 0x47, 0xf3, 0x96, 0xc7, 0xf9, 0xbc, 
+0xfb, 0x67, 0x06, 0x80, 0x59, 0x00, 0x66, 0x02, 
+0x98, 0x0d, 0xe0, 0x34, 0x3f, 0x3e, 0xfd, 0xe3, 
+0x13, 0x40, 0x3e, 0x05, 0xfc, 0x10, 0x27, 0x81, 
+0x0c, 0xfd, 0x1d, 0x86, 0x19, 0x10, 0x37, 0xff, 
+0x3c, 0x4c, 0x0f, 0xf8, 0xe9, 0x3f, 0xe4, 0xc4, 
+0x3a, 0xa3, 0x68, 0x5f, 0x26, 0xfe, 0x87, 0xdd, 
+0x9d, 0x49, 0xd3, 0x8f, 0x44, 0xab, 0x9b, 0xff, 
+0xe7, 0x68, 0xfe, 0x8d, 0xc5, 0xd7, 0xb8, 0x10, 
+0x00, 0xa2, 0x44, 0x89, 0x2a, 0x5b, 0x08, 0x74, 
+0x1c, 0xdd, 0x72, 0xde, 0x49, 0x53, 0x1e, 0x02, 
+0x9e, 0x3d, 0xb7, 0xd3, 0xb0, 0x66, 0x61, 0x66, 
+0x84, 0x40, 0xf9, 0x38, 0x81, 0xd7, 0xab, 0x8c, 
+0x13, 0x08, 0xb6, 0x1e, 0x27, 0xd0, 0xc8, 0x3a, 
+0x9c, 0x80, 0x3d, 0x2e, 0x06, 0x02, 0xfb, 0xee, 
+0xff, 0x49, 0xbe, 0x18, 0x70, 0xe9, 0x9c, 0x21, 
+0x35, 0x7f, 0x9d, 0x10, 0x58, 0x59, 0xa6, 0xb5, 
+0xf0, 0x34, 0x0b, 0xad, 0x85, 0xab, 0x1b, 0x14, 
+0x0c, 0xeb, 0xa5, 0x5b, 0x21, 0x2d, 0x9a, 0x52, 
+0xa8, 0xb7, 0xf7, 0xff, 0x1b, 0xce, 0xfa, 0xf4, 
+0xc6, 0xf9, 0x6c, 0xe9, 0x8b, 0x51, 0xbe, 0x1c, 
+0xfc, 0xc3, 0x57, 0x00, 0x7c, 0x0d, 0xc0, 0x7c, 
+0xc0, 0x23, 0x39, 0xf8, 0x07, 0xe6, 0x3f, 0x6c, 
+0x02, 0xc4, 0x66, 0x40, 0x3f, 0xc1, 0x29, 0xf0, 
+0x2a, 0xd6, 0x02, 0xea, 0x90, 0x9f, 0xe5, 0xd8, 
+0xfb, 0x1b, 0x46, 0xfb, 0x6a, 0x9a, 0x7f, 0x04, 
+0xd9, 0xbe, 0xbd, 0x44, 0xdd, 0xfc, 0x1f, 0xa0, 
+0xf9, 0x0f, 0x10, 0x5f, 0xd7, 0x42, 0x00, 0x88, 
+0x12, 0x25, 0xaa, 0x7c, 0x66, 0x42, 0x2f, 0x8c, 
+0x6f, 0xbd, 0xe4, 0xba, 0x6f, 0x9f, 0xbd, 0x46, 
+0x42, 0xc0, 0xb5, 0x7b, 0x16, 0x81, 0x1f, 0xd0, 
+0x0a, 0x01, 0x7b, 0x2b, 0x71, 0x02, 0xee, 0x56, 
+0xe5, 0x04, 0x06, 0xd7, 0x52, 0x4e, 0x60, 0x7a, 
+0xfb, 0x4d, 0x14, 0xdc, 0xef, 0xb0, 0xe6, 0x62, 
+0xa0, 0xdf, 0xe1, 0xc7, 0x33, 0x3a, 0x6c, 0x36, 
+0xb8, 0x2a, 0x28, 0x0f, 0x28, 0x98, 0x50, 0xf3, 
+0xa0, 0x60, 0xc7, 0xc3, 0xca, 0xeb, 0x22, 0x1c, 
+0xc1, 0x3f, 0x09, 0x51, 0x69, 0xca, 0xde, 0xff, 
+0x1c, 0x46, 0xfa, 0x3c, 0xce, 0xbf, 0xa8, 0x1e, 
+0xe7, 0x43, 0x10, 0xf0, 0xbd, 0x3f, 0xdf, 0xfd, 
+0xf3, 0xfd, 0x7f, 0x11, 0x7c, 0x00, 0xd8, 0x0f, 
+0x80, 0x83, 0x7f, 0x3e, 0x81, 0x59, 0x10, 0xdb, 
+0xfe, 0xb2, 0xfd, 0xef, 0x25, 0xd8, 0x00, 0x7f, 
+0x0b, 0x3b, 0x60, 0x0e, 0xf9, 0x49, 0x85, 0x4b, 
+0xa0, 0xbc, 0xf7, 0x4f, 0xc4, 0xde, 0xdf, 0xf6, 
+0xe6, 0x72, 0x83, 0x5b, 0xff, 0x48, 0xa9, 0xf9, 
+0x8f, 0xb9, 0x3a, 0x07, 0x7b, 0xff, 0x0d, 0x8a, 
+0x00, 0x40, 0xf3, 0x8f, 0x14, 0x5f, 0xcb, 0xa2, 
+0xc4, 0x27, 0x41, 0x94, 0xa8, 0x8a, 0x7a, 0x08, 
+0x3c, 0x37, 0x7d, 0xc4, 0xc4, 0xb6, 0x2b, 0xff, 
+0x66, 0xca, 0x43, 0x60, 0x46, 0x97, 0x14, 0x1a, 
+0x80, 0xf8, 0x61, 0x16, 0x02, 0xea, 0xa9, 0x80, 
+0x75, 0x38, 0x01, 0x0f, 0xeb, 0x72, 0x02, 0x0d, 
+0xac, 0xc9, 0x09, 0x58, 0xb0, 0x1e, 0x30, 0x23, 
+0x04, 0xf8, 0xc9, 0xdf, 0xb9, 0x53, 0x3a, 0x40, 
+0xc1, 0xa3, 0xd2, 0xc5, 0x40, 0x40, 0x9f, 0x22, 
+0xb2, 0x6f, 0x9b, 0x58, 0xcb, 0x41, 0xc1, 0x3d, 
+0x7a, 0x7c, 0x80, 0x2c, 0x04, 0x42, 0x7b, 0xe9, 
+0x2e, 0x49, 0x16, 0x3b, 0xec, 0xd1, 0xf3, 0xf9, 
+0x37, 0x1c, 0xe7, 0xb3, 0xc3, 0xdf, 0x63, 0x38, 
+0xfd, 0xc9, 0xc1, 0x3f, 0xec, 0x00, 0xc8, 0x4e, 
+0x80, 0xec, 0x08, 0xa8, 0x0e, 0xfe, 0xe1, 0x1f, 
+0xe5, 0x78, 0xe0, 0x5c, 0x4c, 0x08, 0xd4, 0xf7, 
+0xfe, 0x4e, 0x97, 0xa2, 0x8c, 0xa2, 0x7d, 0xf9, 
+0xdc, 0x6f, 0xf8, 0xad, 0x08, 0xf2, 0xd8, 0x17, 
+0x2f, 0x37, 0x7e, 0xd4, 0x86, 0x03, 0x28, 0xb1, 
+0xf7, 0x17, 0x25, 0x04, 0x80, 0x28, 0x51, 0x95, 
+0xf6, 0x10, 0x68, 0xe0, 0xea, 0x08, 0x0f, 0x81, 
+0x2f, 0x83, 0x4d, 0x78, 0x08, 0xd8, 0x77, 0x4a, 
+0x94, 0xe2, 0x87, 0x0d, 0x85, 0x80, 0x75, 0x39, 
+0x01, 0xcf, 0x5a, 0xcd, 0x09, 0x8c, 0xae, 0x00, 
+0x27, 0xc0, 0x31, 0xc3, 0xee, 0x5d, 0x73, 0x7f, 
+0x01, 0x1b, 0x20, 0x01, 0x98, 0xbe, 0xbd, 0xf6, 
+0xd0, 0xd4, 0x56, 0xeb, 0xac, 0x0f, 0x0a, 0xb6, 
+0x28, 0x1d, 0x14, 0x74, 0xad, 0x04, 0x28, 0x18, 
+0xd8, 0x71, 0xbf, 0xee, 0xe9, 0xff, 0x95, 0x12, 
+0x8a, 0x8b, 0xde, 0x24, 0x35, 0x7f, 0x8e, 0xe4, 
+0x65, 0xfb, 0xde, 0x0f, 0x0c, 0xc7, 0xf9, 0x78, 
+0x1b, 0x7b, 0xfd, 0x9f, 0x92, 0x83, 0x7f, 0xe0, 
+0x08, 0xc8, 0x59, 0x00, 0x1c, 0xf1, 0xcb, 0x4f, 
+0xfc, 0xdb, 0xe5, 0xe0, 0x1f, 0x4c, 0x02, 0x78, 
+0x22, 0xb0, 0x1f, 0x22, 0x41, 0xbd, 0xf7, 0x0f, 
+0x3e, 0xb1, 0x56, 0x3a, 0xf7, 0x53, 0x47, 0xfb, 
+0x32, 0xf4, 0x37, 0xf4, 0x6e, 0x38, 0xcd, 0x28, 
+0x8e, 0x51, 0x37, 0xff, 0x4f, 0x51, 0x0d, 0xc4, 
+0xd7, 0xad, 0x28, 0x21, 0x00, 0x44, 0x89, 0xb2, 
+0x1a, 0x1f, 0x60, 0x0b, 0x0f, 0x01, 0xcf, 0x30, 
+0x78, 0x08, 0x7c, 0x6f, 0xca, 0x43, 0x60, 0x72, 
+0xfb, 0x35, 0x88, 0x1f, 0x76, 0x82, 0x08, 0xb0, 
+0xb3, 0x60, 0x3d, 0x50, 0x7e, 0x4e, 0xe0, 0x8d, 
+0x7a, 0xca, 0x09, 0x70, 0xc6, 0x00, 0xae, 0x04, 
+0x7e, 0x52, 0xf2, 0x1a, 0xba, 0x6f, 0x27, 0xdb, 
+0x16, 0x31, 0xb5, 0x1e, 0x14, 0x0c, 0xe9, 0x5d, 
+0xac, 0xfc, 0xfd, 0x2f, 0x71, 0xde, 0xa9, 0xec, 
+0xfd, 0x79, 0x6c, 0xcf, 0xe9, 0x7d, 0xf2, 0x38, 
+0xff, 0xa2, 0x76, 0x9c, 0xcf, 0x29, 0x7f, 0x9c, 
+0xf6, 0xc7, 0xcd, 0x9f, 0xd3, 0xff, 0x38, 0x05, 
+0x90, 0x77, 0xfc, 0x37, 0xae, 0x5d, 0x53, 0x82, 
+0x7f, 0x98, 0x01, 0x78, 0x08, 0x16, 0xe0, 0x02, 
+0xd6, 0x06, 0xea, 0x90, 0x9f, 0x65, 0x05, 0x1b, 
+0x4c, 0x9e, 0xfb, 0x71, 0xf3, 0x9f, 0x7c, 0x76, 
+0x89, 0xba, 0xf9, 0xff, 0x82, 0x7a, 0x55, 0x7c, 
+0xbd, 0x8a, 0x12, 0x02, 0x40, 0x94, 0xa8, 0x2a, 
+0xa8, 0xbe, 0x4f, 0xdb, 0xfe, 0x61, 0x50, 0x63, 
+0xbf, 0x55, 0xf0, 0x10, 0xb8, 0x6f, 0xe4, 0x21, 
+0xd0, 0xef, 0x20, 0x61, 0x65, 0x20, 0x35, 0x7c, 
+0x63, 0x21, 0xe0, 0x60, 0x3d, 0x4e, 0xe0, 0x39, 
+0xeb, 0x72, 0x02, 0xea, 0xf5, 0x40, 0x4d, 0x71, 
+0x02, 0xfc, 0xf4, 0xef, 0xdf, 0xbb, 0xe0, 0x7f, 
+0x9a, 0xc9, 0x4a, 0xc9, 0x63, 0xb7, 0x2e, 0x39, 
+0x92, 0xc1, 0x50, 0x6d, 0x04, 0x05, 0xfd, 0x3b, 
+0x16, 0xe8, 0xe2, 0x7e, 0x5f, 0x3b, 0x4a, 0x09, 
+0x6b, 0x93, 0x95, 0xbd, 0xbf, 0x6c, 0xe9, 0xab, 
+0x1e, 0xe7, 0xff, 0xf0, 0xfd, 0xf7, 0x8a, 0xa5, 
+0xaf, 0x1c, 0xfc, 0xc3, 0x74, 0xff, 0x87, 0x77, 
+0xef, 0xd2, 0xa1, 0x82, 0x02, 0xda, 0x2d, 0x07, 
+0xff, 0x60, 0x6d, 0xf0, 0x17, 0xbc, 0x8f, 0x77, 
+0xfe, 0xbc, 0xfb, 0xe7, 0xe6, 0xbf, 0x7e, 0x6b, 
+0x0a, 0xd9, 0xdc, 0x5c, 0x6a, 0xd4, 0xfc, 0x99, 
+0xf8, 0x1f, 0x73, 0x45, 0xb3, 0xf7, 0xd7, 0x36, 
+0x7f, 0xae, 0x30, 0xf1, 0x35, 0x2a, 0x4a, 0x08, 
+0x00, 0x51, 0xa2, 0xaa, 0x5e, 0x08, 0x3c, 0x37, 
+0xa4, 0x69, 0x48, 0xaa, 0x93, 0x09, 0x0f, 0x01, 
+0x7f, 0x78, 0x08, 0x8c, 0x6d, 0xb5, 0x48, 0xbb, 
+0x16, 0xb0, 0x2b, 0x65, 0x3d, 0x50, 0x9b, 0x39, 
+0x81, 0xd0, 0x1a, 0xe3, 0x04, 0xec, 0xdb, 0x6e, 
+0xa0, 0xa0, 0xbe, 0x07, 0x24, 0x21, 0x00, 0x67, 
+0xc1, 0xc7, 0xce, 0x9d, 0xd2, 0x60, 0x2d, 0xbc, 
+0xbc, 0x0a, 0x40, 0xc1, 0xcd, 0xfa, 0xa0, 0xa0, 
+0x81, 0x10, 0x30, 0x07, 0x0a, 0x86, 0xf4, 0xd1, 
+0x3d, 0xfd, 0x2f, 0xf3, 0xda, 0x26, 0x3d, 0xfd, 
+0xef, 0xc6, 0xde, 0xff, 0x1b, 0x3c, 0xe9, 0x5f, 
+0x82, 0xa5, 0x2f, 0x8f, 0xf3, 0x4b, 0x30, 0x01, 
+0xf8, 0x9b, 0x76, 0x9c, 0x7f, 0xe7, 0xe6, 0x4d, 
+0x2a, 0xc2, 0xfb, 0x0b, 0x00, 0xfe, 0xdd, 0x02, 
+0x00, 0xf8, 0x33, 0x07, 0xff, 0xe0, 0xbe, 0xff, 
+0x78, 0x71, 0x31, 0x6d, 0x45, 0xa8, 0x0f, 0xdf, 
+0xfd, 0x7f, 0x0d, 0x60, 0x90, 0x57, 0x02, 0xd9, 
+0x38, 0x15, 0x94, 0xa9, 0xff, 0x2d, 0xd8, 0xfb, 
+0xcf, 0xb8, 0xb4, 0xca, 0x28, 0xda, 0x97, 0x9b, 
+0xff, 0xf0, 0x5b, 0x33, 0xa5, 0xbd, 0xbf, 0xb6, 
+0xf1, 0x73, 0xed, 0x15, 0x5f, 0x97, 0xa2, 0x84, 
+0x00, 0x10, 0x25, 0xaa, 0x5a, 0x85, 0x80, 0x4d, 
+0xf3, 0x11, 0xcd, 0x23, 0xf6, 0xb9, 0xf7, 0xc8, 
+0x35, 0xf2, 0x10, 0xf0, 0xe9, 0xbd, 0x8b, 0x46, 
+0xb6, 0x88, 0xa4, 0x17, 0x9e, 0x99, 0x66, 0x46, 
+0x08, 0x3c, 0x49, 0x9c, 0xc0, 0x7c, 0x0b, 0x39, 
+0x81, 0x65, 0x84, 0x0b, 0x81, 0xc7, 0x21, 0xfd, 
+0x8b, 0x7f, 0xd2, 0x4e, 0x56, 0x1e, 0x3b, 0xb6, 
+0x4f, 0xb6, 0x32, 0x28, 0x98, 0xac, 0x07, 0x0a, 
+0x3a, 0xe9, 0x81, 0x82, 0x19, 0xa5, 0x82, 0x82, 
+0xbe, 0x9d, 0x74, 0xe9, 0x92, 0x11, 0x03, 0x8a, 
+0x69, 0xc3, 0xfa, 0x4d, 0x52, 0x32, 0x1f, 0x37, 
+0xff, 0x9b, 0x3c, 0xce, 0x87, 0xa5, 0xaf, 0x7a, 
+0x9c, 0xff, 0x31, 0x4e, 0xfc, 0x8e, 0x1e, 0x38, 
+0x40, 0x3b, 0xd1, 0xd0, 0xe5, 0xe0, 0x1f, 0x76, 
+0xf6, 0x3b, 0x07, 0x87, 0xbf, 0x6c, 0xa4, 0xf9, 
+0x9d, 0x39, 0x76, 0x4c, 0x09, 0xfe, 0xd9, 0x07, 
+0xa3, 0x20, 0x6e, 0xfe, 0x5b, 0x61, 0xfa, 0xc3, 
+0x4f, 0xff, 0x41, 0x27, 0xd7, 0x18, 0x45, 0xfb, 
+0x72, 0xf3, 0x1f, 0x72, 0x37, 0x8c, 0xa6, 0x1f, 
+0x8e, 0x51, 0x37, 0xff, 0x8f, 0x51, 0xcf, 0x89, 
+0xaf, 0x47, 0x51, 0x42, 0x00, 0x88, 0x12, 0x55, 
+0x33, 0x42, 0xa0, 0x33, 0x3c, 0x04, 0xce, 0x98, 
+0xf6, 0x10, 0xd8, 0x46, 0x70, 0x1c, 0x54, 0x09, 
+0x81, 0xaa, 0xe7, 0x04, 0xd4, 0xeb, 0x81, 0xda, 
+0xcb, 0x09, 0x98, 0x5f, 0x0f, 0x70, 0xa3, 0x77, 
+0xed, 0x9c, 0xf9, 0x00, 0xb0, 0xe5, 0x2f, 0xd2, 
+0x64, 0xa5, 0x4f, 0x21, 0x52, 0x08, 0x13, 0xac, 
+0x02, 0x0a, 0x3a, 0x54, 0x10, 0x14, 0x0c, 0xe9, 
+0xab, 0x7b, 0xfa, 0x5f, 0x15, 0xa8, 0x71, 0xe7, 
+0xfb, 0x14, 0xfb, 0x7c, 0x65, 0x9c, 0xcf, 0x96, 
+0xbe, 0xda, 0x71, 0xbe, 0x14, 0xfc, 0x83, 0x06, 
+0xcf, 0x8d, 0x9e, 0x1b, 0xfe, 0xbf, 0xe5, 0xe0, 
+0x1f, 0x98, 0x01, 0xb1, 0xc7, 0x3f, 0x0b, 0x03, 
+0x16, 0x08, 0x0f, 0xe1, 0x14, 0x78, 0x1a, 0x6b, 
+0x03, 0x75, 0xc8, 0xcf, 0xd2, 0x82, 0x44, 0xa3, 
+0x68, 0x5f, 0x3e, 0xf7, 0x1b, 0x8a, 0xe6, 0x6f, 
+0x7b, 0x66, 0x89, 0xba, 0xf9, 0xff, 0x8c, 0x7a, 
+0x51, 0x7c, 0x0d, 0x8a, 0x12, 0x02, 0x40, 0x94, 
+0xa8, 0x9a, 0x86, 0x05, 0x9f, 0x99, 0xfc, 0x12, 
+0x2c, 0x84, 0x6f, 0x9a, 0xf2, 0x10, 0x70, 0xe9, 
+0x9e, 0x49, 0xe0, 0x07, 0xcc, 0x08, 0x81, 0xaa, 
+0xe4, 0x04, 0xbc, 0xad, 0xc6, 0x09, 0x0c, 0xad, 
+0x66, 0x4e, 0x60, 0x52, 0xf3, 0x55, 0xe4, 0xd1, 
+0x6d, 0x2b, 0xa6, 0x01, 0x25, 0x8f, 0xa4, 0xc9, 
+0x4a, 0xcf, 0x5d, 0x34, 0xa5, 0xe5, 0x1a, 0x23, 
+0x21, 0x50, 0xd5, 0xa0, 0xa0, 0x4f, 0xe7, 0x5d, 
+0xca, 0xdf, 0xe5, 0xec, 0xc1, 0x87, 0x28, 0x69, 
+0xe3, 0x26, 0x3a, 0x0e, 0x93, 0x9f, 0xcf, 0xd4, 
+0xe3, 0x7c, 0x70, 0x00, 0x3c, 0xce, 0xff, 0x1a, 
+0xb6, 0xbe, 0xfc, 0xf3, 0x3c, 0xbc, 0xed, 0x04, 
+0xde, 0xf7, 0x99, 0xd6, 0xd2, 0x97, 0x53, 0xfd, 
+0x0a, 0x60, 0x07, 0xcc, 0x29, 0x7f, 0x77, 0xb1, 
+0x1a, 0x60, 0x9b, 0x60, 0x0e, 0xf9, 0x49, 0x81, 
+0x48, 0xe0, 0xc6, 0xaf, 0xd9, 0xfb, 0x6f, 0xa6, 
+0x49, 0x37, 0x97, 0xe8, 0x45, 0xfb, 0x0e, 0xd7, 
+0x36, 0xff, 0x31, 0x97, 0xe7, 0x90, 0x77, 0x7e, 
+0xa2, 0x5a, 0x00, 0x04, 0x8a, 0xaf, 0x3b, 0x51, 
+0x42, 0x00, 0x88, 0x12, 0x55, 0x8b, 0xea, 0xa5, 
+0xe7, 0x1c, 0x46, 0x03, 0x08, 0xfc, 0x34, 0xa0, 
+0x9f, 0xb1, 0x87, 0xc0, 0xf4, 0x2e, 0x9b, 0xe9, 
+0xcd, 0x86, 0x1e, 0x92, 0x10, 0x78, 0x41, 0x25, 
+0x04, 0x2c, 0x59, 0x0f, 0xd4, 0x3e, 0x4e, 0x20, 
+0xac, 0xda, 0x38, 0x01, 0xbe, 0x18, 0x40, 0xf3, 
+0xff, 0x41, 0xfe, 0x3c, 0x7a, 0x74, 0xdb, 0x46, 
+0x36, 0xcd, 0xa3, 0x0d, 0x2e, 0x06, 0xaa, 0x06, 
+0x14, 0x74, 0x6d, 0x9d, 0xc9, 0x4c, 0x82, 0xf2, 
+0x77, 0xb8, 0x7a, 0xd6, 0x56, 0x8d, 0xdb, 0x1f, 
+0xf6, 0xfc, 0xf2, 0x38, 0x9f, 0x9f, 0xf6, 0xff, 
+0x89, 0xa7, 0x7e, 0x39, 0xf8, 0x87, 0xa7, 0x01, 
+0x3c, 0x15, 0xe0, 0xe9, 0x00, 0xa8, 0x3f, 0x25, 
+0xf8, 0x87, 0x61, 0x40, 0x86, 0x02, 0x19, 0x0e, 
+0xfc, 0x1c, 0xd3, 0x83, 0x4c, 0x9c, 0x0e, 0xca, 
+0xf7, 0xfe, 0xbc, 0xf7, 0x77, 0xbc, 0xbc, 0x42, 
+0xff, 0xdc, 0x4f, 0x6a, 0xfe, 0x10, 0x5c, 0x37, 
+0xc3, 0xc9, 0x63, 0xaf, 0xde, 0xde, 0x7f, 0xa7, 
+0xf8, 0x5a, 0x13, 0x25, 0x04, 0x80, 0x28, 0x51, 
+0xb5, 0x72, 0x2d, 0x30, 0xe9, 0x57, 0xaf, 0x36, 
+0x70, 0x71, 0xb6, 0x6d, 0x1f, 0xfb, 0x55, 0x90, 
+0x09, 0x0f, 0x01, 0xbb, 0x8e, 0x09, 0xf4, 0xda, 
+0xf3, 0xce, 0x5a, 0x21, 0x60, 0x09, 0x27, 0x30, 
+0xbd, 0x0e, 0x70, 0x02, 0xe1, 0x56, 0xe1, 0x04, 
+0xf8, 0x8c, 0x70, 0x6a, 0xdb, 0xe5, 0x34, 0x7f, 
+0xc8, 0x16, 0xb2, 0x6b, 0xb7, 0x52, 0x8f, 0x13, 
+0x98, 0x8a, 0x84, 0x41, 0x18, 0x08, 0x7d, 0x2f, 
+0x5b, 0x0b, 0xbb, 0x76, 0xce, 0xa2, 0x89, 0xca, 
+0xc5, 0x40, 0x69, 0xa0, 0x60, 0x6c, 0xa5, 0x40, 
+0x41, 0x9f, 0x2e, 0xba, 0xa7, 0xff, 0x39, 0x23, 
+0x0e, 0x4a, 0x0d, 0xfb, 0x08, 0x9e, 0xec, 0x8d, 
+0xc6, 0xf9, 0x6c, 0xe9, 0x2b, 0x07, 0xff, 0x80, 
+0x07, 0x60, 0x2e, 0xe0, 0x1e, 0xce, 0xfd, 0xf8, 
+0xec, 0xef, 0xa4, 0x1c, 0xfc, 0x83, 0x73, 0xc0, 
+0xaf, 0x70, 0x16, 0xc8, 0xdc, 0xc0, 0x2e, 0x4c, 
+0x03, 0xd4, 0x7b, 0xff, 0xc0, 0x93, 0xab, 0x8d, 
+0xa2, 0x7d, 0xb9, 0xf9, 0x0f, 0xbe, 0x1b, 0x42, 
+0x33, 0x0e, 0xe9, 0xed, 0xfd, 0x3f, 0xf4, 0xd9, 
+0x91, 0xf8, 0xb4, 0xf8, 0x3a, 0x13, 0x25, 0x04, 
+0x80, 0x28, 0x51, 0xb5, 0xb8, 0xfa, 0x3c, 0x3d, 
+0xe9, 0xb7, 0x6f, 0x34, 0xf2, 0x8c, 0x98, 0xd6, 
+0x31, 0xfe, 0x07, 0x43, 0x0f, 0x81, 0xe0, 0xfe, 
+0x87, 0x09, 0x02, 0x81, 0xe0, 0x3a, 0x68, 0x20, 
+0x04, 0xec, 0xca, 0x61, 0x37, 0x5c, 0x79, 0x4e, 
+0x60, 0x40, 0x2d, 0xe2, 0x04, 0xc6, 0x35, 0x5b, 
+0x48, 0x8b, 0x47, 0xa6, 0xd0, 0xa1, 0x79, 0x47, 
+0xe9, 0xc4, 0xb2, 0x53, 0xb4, 0x3f, 0xf2, 0x28, 
+0xc4, 0xc0, 0x0a, 0xa3, 0xa9, 0x80, 0x43, 0x3b, 
+0x5c, 0x0c, 0xf4, 0x3b, 0xf4, 0x3f, 0xcd, 0xe7, 
+0xb1, 0xf8, 0xb1, 0x53, 0xc7, 0x2d, 0x68, 0xfe, 
+0xcb, 0x4b, 0x01, 0x05, 0xa3, 0x4b, 0x05, 0x05, 
+0x35, 0x42, 0x60, 0x7d, 0xa9, 0x42, 0xc0, 0xa9, 
+0x55, 0x2a, 0x85, 0xbd, 0xa4, 0xfb, 0x7b, 0x5b, 
+0xbf, 0x74, 0x9b, 0xf4, 0xf4, 0x7f, 0x09, 0xcd, 
+0x9f, 0xc7, 0xf9, 0x4c, 0xf8, 0x33, 0xe9, 0xff, 
+0x00, 0xc4, 0x3f, 0x4f, 0x04, 0x4a, 0x10, 0xfc, 
+0xb3, 0x1d, 0x34, 0x3f, 0x5f, 0x04, 0xb0, 0xd1, 
+0xcf, 0x97, 0xa0, 0xfb, 0xe5, 0xe0, 0x9f, 0x53, 
+0x08, 0xfe, 0x61, 0x43, 0x20, 0x36, 0x06, 0x3a, 
+0x06, 0x3f, 0x00, 0xb5, 0xd9, 0xcf, 0x92, 0xc2, 
+0xf5, 0x26, 0xcf, 0xfd, 0x86, 0xdc, 0x0d, 0xa5, 
+0xc9, 0xa7, 0xf5, 0xf6, 0xfe, 0xf7, 0xd0, 0xfc, 
+0xfb, 0x8a, 0xaf, 0x2d, 0x51, 0x42, 0x00, 0x88, 
+0x12, 0x55, 0x77, 0x84, 0xc0, 0x1f, 0x07, 0x36, 
+0xf6, 0x8d, 0x31, 0xe5, 0x21, 0x10, 0xd8, 0xef, 
+0x00, 0x4d, 0xc0, 0x13, 0xef, 0x4b, 0xcf, 0xda, 
+0x97, 0x21, 0x04, 0xaa, 0x83, 0x13, 0xf0, 0xa9, 
+0x31, 0x4e, 0x20, 0xe0, 0xa5, 0x35, 0xb4, 0x35, 
+0x60, 0x0f, 0x1d, 0x9c, 0x77, 0x98, 0x0e, 0xcf, 
+0x3f, 0x42, 0xc5, 0x0b, 0x8f, 0xd2, 0xd1, 0xc5, 
+0xc7, 0x28, 0xc3, 0x6b, 0x0f, 0x9a, 0xfe, 0x22, 
+0xa3, 0xf5, 0xc0, 0xf8, 0xa6, 0x4b, 0x09, 0x8d, 
+0xff, 0x21, 0x84, 0x95, 0x94, 0x31, 0x10, 0xd8, 
+0xf7, 0x00, 0x84, 0xc1, 0x46, 0xb3, 0xa0, 0xa0, 
+0x6d, 0xb9, 0x40, 0xc1, 0x24, 0xf2, 0xe9, 0x96, 
+0xaf, 0xfc, 0x3d, 0xcd, 0x1f, 0x7f, 0x40, 0x6a, 
+0xda, 0xfb, 0x40, 0xfa, 0x1b, 0x8e, 0xf3, 0x65, 
+0x4b, 0x5f, 0x25, 0xf8, 0x07, 0x9e, 0x00, 0x6c, 
+0xf5, 0xcb, 0x96, 0xbf, 0xf9, 0x72, 0xf0, 0xcf, 
+0x87, 0x1f, 0xd2, 0x23, 0x58, 0x02, 0x5f, 0xc5, 
+0xaf, 0x49, 0xc1, 0xc7, 0xf1, 0x05, 0x41, 0x2a, 
+0x9a, 0x7f, 0x02, 0xf6, 0xfe, 0x13, 0x6f, 0x2e, 
+0x36, 0x3a, 0xf7, 0xe3, 0xe6, 0x3f, 0xe6, 0x52, 
+0xa4, 0xf6, 0xde, 0x1f, 0xb5, 0x23, 0x91, 0xcb, 
+0x5b, 0x7c, 0x3d, 0x89, 0x12, 0x02, 0x40, 0x94, 
+0xa8, 0xba, 0x29, 0x04, 0x9e, 0x1f, 0xd2, 0x34, 
+0x38, 0xc3, 0xb9, 0x5b, 0xda, 0x23, 0x63, 0x0f, 
+0x81, 0x02, 0x1a, 0xd3, 0x72, 0x01, 0xf5, 0x97, 
+0x44, 0xc0, 0xd4, 0x0a, 0x71, 0x02, 0xaf, 0x58, 
+0x9d, 0x13, 0xf0, 0xb5, 0x0a, 0x27, 0x30, 0xcc, 
+0x0c, 0x27, 0x30, 0xbd, 0xcb, 0x52, 0x4a, 0x74, 
+0xcc, 0xa4, 0x5d, 0xe1, 0xb0, 0xcf, 0x8d, 0x28, 
+0xa0, 0x7d, 0xb3, 0x8a, 0xa8, 0x30, 0xf2, 0x00, 
+0xed, 0x9f, 0x73, 0x50, 0x23, 0x06, 0x16, 0x1c, 
+0xa1, 0x15, 0x63, 0xd3, 0x4a, 0x3d, 0x23, 0x9c, 
+0xd0, 0x6c, 0x39, 0xb9, 0x76, 0xc9, 0xba, 0x07, 
+0x13, 0xa1, 0x07, 0xfc, 0x79, 0xf4, 0xeb, 0xbd, 
+0x8f, 0xa6, 0xb5, 0x8e, 0xaf, 0x34, 0x28, 0x38, 
+0xbd, 0xd5, 0x26, 0x69, 0x5d, 0x23, 0xff, 0xfd, 
+0x24, 0xc5, 0x6c, 0x93, 0x04, 0x40, 0x31, 0x46, 
+0xfe, 0xb9, 0x68, 0xdc, 0x17, 0x54, 0xe3, 0x7c, 
+0x76, 0xfd, 0x63, 0xf7, 0xbf, 0x63, 0x08, 0xfe, 
+0x61, 0x37, 0xc0, 0xfb, 0xf7, 0xef, 0xd3, 0x6d, 
+0x00, 0x7e, 0x85, 0x08, 0xfd, 0xe1, 0xe2, 0x9f, 
+0xf3, 0xdb, 0x78, 0x55, 0x90, 0x8e, 0x5f, 0xcb, 
+0x53, 0x04, 0xf9, 0xde, 0xdf, 0xe1, 0xf2, 0x72, 
+0x93, 0xe7, 0x7e, 0xc3, 0x6e, 0x86, 0x91, 0xc7, 
+0x9e, 0x78, 0x75, 0xf3, 0xcf, 0x15, 0x5f, 0x43, 
+0xa2, 0x84, 0x00, 0x10, 0x25, 0xaa, 0xee, 0x0b, 
+0x81, 0x96, 0xc3, 0x9b, 0x47, 0x14, 0xb9, 0xf7, 
+0xc8, 0x31, 0xe9, 0x21, 0x30, 0xa2, 0xf9, 0x2c, 
+0x08, 0x81, 0xa9, 0x2a, 0x21, 0x50, 0xff, 0x38, 
+0x81, 0x09, 0xad, 0xe6, 0xd2, 0x92, 0xd1, 0xeb, 
+0x29, 0xc7, 0x7f, 0x2b, 0xe5, 0x05, 0x6e, 0xa7, 
+0x6d, 0x41, 0x3b, 0x69, 0x47, 0x48, 0x3e, 0xe5, 
+0x87, 0xed, 0xa6, 0xdd, 0x5a, 0x31, 0x50, 0x00, 
+0x31, 0x50, 0x04, 0x31, 0x70, 0x60, 0xee, 0x21, 
+0xf2, 0x7b, 0x71, 0xad, 0x59, 0xbb, 0x61, 0xbe, 
+0x18, 0x80, 0x9d, 0x30, 0x83, 0x82, 0xd2, 0xe7, 
+0x14, 0x36, 0xc3, 0x34, 0xb9, 0xe5, 0xea, 0x0a, 
+0x83, 0x82, 0xea, 0xa7, 0xff, 0xc5, 0x53, 0x35, 
+0xfe, 0xfc, 0xdb, 0xb0, 0xaf, 0x37, 0x1c, 0xe7, 
+0xb3, 0xdf, 0xff, 0x1e, 0x58, 0xfa, 0xca, 0xc1, 
+0x3f, 0xfc, 0x94, 0xcf, 0x4f, 0xfb, 0xfc, 0xd4, 
+0xcf, 0x4f, 0xff, 0x72, 0xf0, 0x0f, 0x4f, 0x05, 
+0xb6, 0x6f, 0xdd, 0xaa, 0xb7, 0xf7, 0xf7, 0x3f, 
+0x15, 0x6b, 0x74, 0xee, 0xc7, 0xcd, 0x7f, 0xf0, 
+0xdd, 0x60, 0x72, 0x3a, 0x18, 0xa3, 0x6e, 0xfe, 
+0x77, 0x50, 0x7f, 0x16, 0x5f, 0x3b, 0xa2, 0x84, 
+0x00, 0x10, 0x25, 0xaa, 0xde, 0x08, 0x81, 0x89, 
+0xdd, 0x46, 0xb5, 0x9c, 0x7b, 0xce, 0xab, 0xd7, 
+0x4e, 0xa3, 0x8b, 0x01, 0x8f, 0x9e, 0x79, 0x34, 
+0xb8, 0x49, 0x70, 0x29, 0x42, 0xc0, 0xce, 0x4a, 
+0xb1, 0xc4, 0xe5, 0xe7, 0x04, 0x06, 0x56, 0x92, 
+0x13, 0x18, 0xd9, 0x64, 0x26, 0x05, 0xbf, 0xbe, 
+0x8a, 0x92, 0x5c, 0x60, 0x7b, 0xeb, 0x99, 0x41, 
+0xe9, 0x5e, 0x59, 0x94, 0xe9, 0x93, 0x4d, 0xd9, 
+0x7e, 0xb9, 0x94, 0x0b, 0x31, 0xb0, 0x15, 0x62, 
+0x60, 0x7b, 0x30, 0x8b, 0x81, 0x5d, 0x10, 0x03, 
+0x7b, 0x68, 0xf7, 0xcc, 0x7d, 0x10, 0x03, 0x85, 
+0xb4, 0x33, 0x74, 0x2f, 0x4d, 0x6b, 0xbf, 0xb4, 
+0xcc, 0x33, 0xc2, 0xc9, 0x2d, 0x63, 0x11, 0x30, 
+0xb4, 0xf7, 0xbf, 0x9a, 0xcf, 0x63, 0x09, 0x07, 
+0x0f, 0x41, 0x1c, 0x44, 0x95, 0x0b, 0x14, 0x74, 
+0x6c, 0xbd, 0x91, 0x6d, 0x89, 0x95, 0xb8, 0xdf, 
+0xd4, 0xf5, 0xdb, 0x35, 0x02, 0x00, 0x4f, 0xed, 
+0xc5, 0xaa, 0x71, 0x3e, 0x37, 0x7c, 0x6e, 0xfc, 
+0x9c, 0xfc, 0x77, 0x5d, 0x1d, 0xfc, 0x03, 0x81, 
+0xc0, 0x42, 0x81, 0xf7, 0xff, 0xcc, 0x01, 0xfc, 
+0x17, 0x3c, 0xc0, 0xa1, 0x03, 0x07, 0xf4, 0x9a, 
+0xff, 0xe2, 0xa2, 0xf5, 0x46, 0xd1, 0xbe, 0x43, 
+0xb5, 0xcd, 0x7f, 0xf2, 0xa9, 0x25, 0xea, 0xe6, 
+0xff, 0x23, 0xaa, 0xa7, 0xf8, 0x7a, 0x11, 0x25, 
+0x04, 0x80, 0x28, 0x51, 0xf5, 0xd3, 0x43, 0xe0, 
+0xb5, 0xb1, 0xad, 0x17, 0xdf, 0xf6, 0x33, 0xe1, 
+0x21, 0xe0, 0xdc, 0x2d, 0x9d, 0x06, 0x34, 0xf2, 
+0x81, 0x10, 0x98, 0x62, 0x81, 0x10, 0xb0, 0x56, 
+0x2c, 0x71, 0xd5, 0x70, 0x02, 0xce, 0x3d, 0x17, 
+0x50, 0xb4, 0x6d, 0x3c, 0x25, 0xce, 0x48, 0xa2, 
+0x8d, 0xce, 0x9b, 0x28, 0xd9, 0x65, 0x33, 0x6d, 
+0x76, 0xdb, 0x42, 0x5b, 0x3c, 0x70, 0x07, 0x0f, 
+0x31, 0x90, 0xe1, 0xcd, 0x62, 0x20, 0x07, 0x62, 
+0x20, 0x8f, 0x72, 0x03, 0xb6, 0x41, 0x0c, 0xec, 
+0x90, 0xc4, 0xc0, 0xce, 0xd0, 0x5d, 0xb4, 0x0b, 
+0x62, 0x60, 0xb3, 0x6b, 0x1e, 0x40, 0xc1, 0x05, 
+0x66, 0xfc, 0x04, 0x74, 0x9c, 0xc0, 0xb4, 0x36, 
+0xf1, 0xe0, 0x02, 0xf6, 0x7f, 0xa7, 0x09, 0x6d, 
+0x3a, 0xf2, 0xd8, 0xa5, 0x73, 0x86, 0x34, 0x05, 
+0x28, 0x1d, 0x14, 0xd4, 0x59, 0x0b, 0xfb, 0xf4, 
+0xd0, 0x91, 0xff, 0xcb, 0x9c, 0x0a, 0xa5, 0xc6, 
+0x9d, 0x89, 0x9d, 0x7d, 0x21, 0x2c, 0x7d, 0xe5, 
+0x71, 0xfe, 0xa7, 0x1c, 0xfc, 0x83, 0x91, 0xff, 
+0x36, 0x9c, 0xf2, 0x5d, 0x84, 0xa5, 0x2f, 0xaf, 
+0x02, 0x78, 0x25, 0xc0, 0xa4, 0x3f, 0x13, 0xff, 
+0x4c, 0xfe, 0xf3, 0x05, 0x00, 0x5f, 0x02, 0xbc, 
+0x03, 0x5f, 0x00, 0x1e, 0xfb, 0x67, 0x62, 0x4d, 
+0xc0, 0xcd, 0x3f, 0x7e, 0xdb, 0x26, 0x1a, 0x7f, 
+0x6b, 0x91, 0x74, 0xeb, 0xaf, 0x3e, 0xf7, 0x63, 
+0xe2, 0x5f, 0xda, 0xfb, 0xeb, 0x9a, 0x3f, 0x97, 
+0xab, 0xf8, 0x1a, 0x11, 0x25, 0x04, 0x80, 0x28, 
+0x51, 0xf5, 0xbc, 0x5e, 0x7c, 0xce, 0x7e, 0x1c, 
+0x3c, 0x04, 0xfe, 0x1e, 0xd8, 0x6f, 0xbf, 0xfe, 
+0xe9, 0x20, 0x9e, 0x64, 0x1d, 0x3b, 0x27, 0x23, 
+0x7e, 0xd8, 0x9d, 0xfa, 0x3f, 0x3d, 0xc5, 0x60, 
+0x2a, 0x60, 0x57, 0x49, 0xbb, 0xe1, 0xaa, 0xe7, 
+0x04, 0x26, 0xb5, 0x8b, 0xa0, 0xb9, 0xc3, 0x57, 
+0x52, 0xec, 0x94, 0xb5, 0xb4, 0x66, 0x5a, 0x1c, 
+0xad, 0xb3, 0x8b, 0xa7, 0x78, 0x87, 0xf5, 0xb4, 
+0x7e, 0xfa, 0x06, 0xda, 0x00, 0x31, 0x90, 0xc4, 
+0x62, 0xc0, 0x35, 0x05, 0x62, 0x20, 0x15, 0x62, 
+0x20, 0x5d, 0x11, 0x03, 0x59, 0xbe, 0x39, 0x94, 
+0x03, 0x31, 0x90, 0x07, 0x31, 0xb0, 0x2d, 0x88, 
+0xc5, 0x40, 0x3e, 0x2d, 0x1b, 0x9b, 0x6c, 0xb9, 
+0x9f, 0x00, 0xca, 0xb1, 0x7d, 0xd2, 0x43, 0x5c, 
+0x5c, 0x68, 0x2e, 0x06, 0xfa, 0x1d, 0x62, 0xab, 
+0x61, 0x49, 0x04, 0x94, 0x06, 0x0a, 0xda, 0xb7, 
+0xde, 0xa0, 0x17, 0xf7, 0x9b, 0x95, 0xa2, 0x3d, 
+0xd7, 0x03, 0xdd, 0x7f, 0x15, 0x96, 0xbe, 0xf2, 
+0x38, 0x9f, 0x61, 0x3f, 0x86, 0xfe, 0xce, 0xc0, 
+0x10, 0xe8, 0x5f, 0xb0, 0xf4, 0x55, 0x07, 0xff, 
+0x30, 0x24, 0xc8, 0xb7, 0xff, 0xec, 0x01, 0xc0, 
+0x57, 0x02, 0x69, 0x08, 0xf8, 0x61, 0x01, 0xc0, 
+0xf7, 0xfe, 0x29, 0x99, 0xa9, 0x64, 0x7f, 0x65, 
+0x99, 0x51, 0xb4, 0x2f, 0x37, 0xff, 0xa1, 0x37, 
+0x42, 0xc9, 0x63, 0x77, 0x9c, 0xba, 0xf9, 0x67, 
+0x88, 0xaf, 0x0b, 0x51, 0x42, 0x00, 0x88, 0x12, 
+0xf5, 0xa4, 0xac, 0x05, 0x9e, 0x9a, 0xf0, 0xab, 
+0x57, 0x9e, 0x77, 0x72, 0xc3, 0x89, 0xe0, 0xd7, 
+0xc1, 0x06, 0x1e, 0x02, 0x7c, 0x4a, 0x88, 0x93, 
+0x42, 0x7a, 0xe5, 0xb9, 0x19, 0x26, 0x84, 0x40, 
+0x2d, 0xe1, 0x04, 0x54, 0xeb, 0x81, 0x91, 0xcd, 
+0x82, 0xc8, 0xef, 0x95, 0x79, 0xb4, 0x74, 0xdc, 
+0x0a, 0x5a, 0x3e, 0x61, 0x25, 0xad, 0x9c, 0x14, 
+0x45, 0x51, 0x36, 0x31, 0x14, 0x33, 0x79, 0xb5, 
+0x4e, 0x0c, 0xd8, 0x27, 0x40, 0x0c, 0x24, 0x42, 
+0x0c, 0x6c, 0xa4, 0x0d, 0x4e, 0x1a, 0x31, 0xb0, 
+0x09, 0x62, 0x20, 0x05, 0x62, 0x20, 0x95, 0xc5, 
+0x80, 0x57, 0x26, 0x65, 0x60, 0x45, 0x90, 0xe5, 
+0x9b, 0xab, 0xe1, 0x05, 0x20, 0x06, 0xfc, 0x5f, 
+0x8a, 0xb5, 0xc8, 0x4f, 0x40, 0x37, 0x11, 0x58, 
+0x42, 0xce, 0x9d, 0x52, 0x7f, 0x06, 0xd4, 0xf7, 
+0x33, 0x7f, 0x1e, 0xe1, 0x25, 0x80, 0xf0, 0xa1, 
+0x44, 0x93, 0xa0, 0xa0, 0x6f, 0x4f, 0x9d, 0xe7, 
+0x7f, 0x94, 0x77, 0x81, 0xd4, 0xfc, 0xb7, 0xa0, 
+0x79, 0x4b, 0xe3, 0x7c, 0xb6, 0xf4, 0xc5, 0x38, 
+0x5f, 0x0a, 0xfe, 0x81, 0x20, 0xe0, 0xb3, 0xbf, 
+0xbf, 0x7d, 0xf4, 0x91, 0xe4, 0xea, 0xc7, 0xee, 
+0x7e, 0xec, 0xf2, 0xc7, 0xe7, 0x81, 0xec, 0xfa, 
+0xc7, 0xee, 0x7f, 0xec, 0x02, 0x98, 0x07, 0x0e, 
+0x40, 0x5a, 0x1f, 0x60, 0x4d, 0xc0, 0x4f, 0xff, 
+0x7e, 0xa7, 0x63, 0x8c, 0xa2, 0x7d, 0x99, 0xf8, 
+0x7f, 0xeb, 0x4e, 0x10, 0x39, 0xed, 0x8f, 0x51, 
+0x37, 0xff, 0x1b, 0xa8, 0x3f, 0x8a, 0xaf, 0x09, 
+0x51, 0x42, 0x00, 0x88, 0x12, 0xf5, 0x84, 0x55, 
+0xef, 0xa7, 0x26, 0xfc, 0xee, 0x8d, 0x86, 0x1e, 
+0x91, 0x68, 0xf8, 0x3f, 0x9a, 0xf2, 0x10, 0xb0, 
+0x69, 0x17, 0x23, 0x9d, 0x0e, 0x6a, 0x84, 0xc0, 
+0x94, 0x5a, 0xc5, 0x09, 0x0c, 0x6e, 0xe8, 0x4f, 
+0xd3, 0x7b, 0x84, 0xd1, 0xec, 0x21, 0xf3, 0x68, 
+0xde, 0x88, 0x05, 0xb4, 0x60, 0xd4, 0x22, 0x5a, 
+0x34, 0x7a, 0x09, 0x2d, 0x1e, 0xbb, 0x8c, 0x96, 
+0x8e, 0x67, 0x31, 0xb0, 0x0a, 0x62, 0x20, 0x1a, 
+0x62, 0x20, 0x16, 0x62, 0x60, 0x0d, 0xad, 0x9e, 
+0xba, 0x96, 0xd6, 0x42, 0x0c, 0xc4, 0x41, 0x0c, 
+0x24, 0x38, 0x26, 0x52, 0xa2, 0x24, 0x06, 0x92, 
+0xc1, 0x09, 0x6c, 0x86, 0x18, 0xd8, 0x42, 0x29, 
+0xee, 0x10, 0x03, 0x9e, 0xe9, 0xe0, 0x05, 0x32, 
+0x25, 0x5e, 0x20, 0xdd, 0x2b, 0x9b, 0xec, 0x3a, 
+0x2c, 0x2e, 0x77, 0xee, 0xc0, 0x84, 0xa6, 0xcb, 
+0xc0, 0x04, 0xe4, 0x00, 0x14, 0x2c, 0x91, 0x92, 
+0x1c, 0x7d, 0x7b, 0xed, 0x91, 0xe2, 0x88, 0x65, 
+0x50, 0xd0, 0xbe, 0x4d, 0xa2, 0x2e, 0xee, 0xf7, 
+0xf5, 0xa3, 0xd8, 0xf9, 0xef, 0x92, 0x9a, 0xf7, 
+0x41, 0x3c, 0xd1, 0xff, 0xfd, 0x93, 0x4f, 0xe8, 
+0x1e, 0x9a, 0x3a, 0x1b, 0xfc, 0xb0, 0xd1, 0x0f, 
+0x1b, 0xfe, 0xdc, 0x85, 0xf1, 0x0f, 0xfb, 0xf9, 
+0x7f, 0x0c, 0x11, 0xc0, 0x86, 0x40, 0x6c, 0x0c, 
+0xc4, 0x06, 0x41, 0xec, 0xfb, 0xcf, 0xfe, 0xff, 
+0x85, 0x38, 0x19, 0x54, 0x37, 0xff, 0x85, 0x45, 
+0x09, 0x26, 0x6f, 0xfd, 0xdf, 0xba, 0x1b, 0x44, 
+0x53, 0x4e, 0x2c, 0x51, 0x37, 0xff, 0x1f, 0x50, 
+0x5d, 0xc5, 0xd7, 0x81, 0x28, 0x21, 0x00, 0x44, 
+0x89, 0x7a, 0xb2, 0x85, 0xc0, 0x9f, 0xe1, 0x21, 
+0xb0, 0xd6, 0xb1, 0x4b, 0xd2, 0x2f, 0xc6, 0x1e, 
+0x02, 0xfb, 0x69, 0x7c, 0x9b, 0xa5, 0x52, 0xf3, 
+0x97, 0x84, 0x80, 0x32, 0x15, 0xa8, 0x39, 0x4e, 
+0x60, 0x5c, 0x1b, 0x7f, 0xf2, 0x7f, 0x2d, 0x8c, 
+0xc2, 0x06, 0x46, 0x50, 0xf8, 0x5b, 0xb3, 0x68, 
+0xd6, 0xe0, 0x48, 0x3a, 0xb5, 0xe3, 0xb4, 0x54, 
+0xf3, 0x46, 0x2c, 0x84, 0x18, 0x58, 0x4c, 0x8b, 
+0xc6, 0x2c, 0xa5, 0x25, 0x10, 0x03, 0xcb, 0x20, 
+0x06, 0x56, 0x4c, 0x5c, 0x45, 0xab, 0x58, 0x0c, 
+0xd8, 0x42, 0x0c, 0x4c, 0x61, 0x31, 0xb0, 0x8e, 
+0xd6, 0x62, 0x45, 0x10, 0x67, 0xbf, 0x5e, 0x23, 
+0x06, 0x66, 0x6c, 0xa4, 0x8d, 0x10, 0x03, 0x32, 
+0x2f, 0x90, 0xe2, 0x9e, 0x26, 0xc1, 0x83, 0x09, 
+0x0e, 0x29, 0xe0, 0x01, 0xe6, 0x54, 0x20, 0x77, 
+0x60, 0xa1, 0x74, 0x31, 0x80, 0x2b, 0x81, 0x6f, 
+0xe5, 0xcf, 0x23, 0xae, 0x07, 0xc8, 0xb6, 0x45, 
+0x8c, 0x74, 0x42, 0x28, 0xbf, 0x6d, 0x4d, 0xb0, 
+0xe6, 0xe9, 0x9f, 0xed, 0x7a, 0xa5, 0x71, 0x3e, 
+0xfe, 0xe1, 0x1f, 0x95, 0xe0, 0x1f, 0x58, 0xfe, 
+0xb2, 0xf5, 0x2f, 0x27, 0xfa, 0xf1, 0x1a, 0x40, 
+0x09, 0xfe, 0x41, 0xe2, 0x1f, 0x27, 0xff, 0x9d, 
+0xc1, 0x8a, 0x40, 0x1a, 0xfb, 0x63, 0x52, 0xc0, 
+0xcd, 0x3f, 0x0e, 0x7b, 0xff, 0x71, 0xb7, 0x0c, 
+0xcf, 0xfd, 0xb8, 0xf9, 0x07, 0xd3, 0x98, 0x77, 
+0x23, 0xd5, 0xcd, 0x1f, 0xb5, 0xde, 0x51, 0xbc, 
+0xf6, 0x45, 0x09, 0x01, 0x20, 0x4a, 0x94, 0x28, 
+0x59, 0x08, 0x34, 0x1c, 0xdc, 0x34, 0x38, 0xdb, 
+0x94, 0x87, 0x80, 0x5f, 0x9f, 0x7d, 0x84, 0x44, 
+0x42, 0x9d, 0x08, 0xb0, 0x3a, 0x27, 0x60, 0xc9, 
+0x7a, 0x40, 0x23, 0x04, 0x5c, 0x7a, 0xfb, 0x93, 
+0xdf, 0xab, 0x81, 0x14, 0xf0, 0x7a, 0x30, 0x05, 
+0xbd, 0x11, 0x4a, 0x21, 0x03, 0xc2, 0x29, 0xce, 
+0x3b, 0x81, 0x1e, 0x3f, 0x7a, 0x4c, 0x29, 0x11, 
+0xa9, 0x34, 0x67, 0xd8, 0x3c, 0xda, 0x97, 0x50, 
+0x40, 0xd1, 0x0e, 0xb1, 0xb4, 0x50, 0x16, 0x03, 
+0xe3, 0x96, 0x43, 0x0c, 0xac, 0x84, 0x18, 0x88, 
+0xa2, 0x55, 0x58, 0x11, 0x44, 0x43, 0x0c, 0xc4, 
+0x42, 0x0c, 0xac, 0x91, 0xc5, 0x80, 0x03, 0x8b, 
+0x81, 0x0d, 0x2a, 0x78, 0x30, 0x45, 0x12, 0x03, 
+0x8b, 0x46, 0xc7, 0x1b, 0x99, 0x0b, 0x95, 0x27, 
+0x77, 0x80, 0xcf, 0x04, 0xfd, 0x7b, 0x17, 0x7c, 
+0xa3, 0xb1, 0x16, 0xd6, 0x89, 0xab, 0x59, 0x03, 
+0x8f, 0xd0, 0xce, 0xed, 0x9a, 0x88, 0xde, 0xb7, 
+0x31, 0xfa, 0x97, 0xc6, 0xf9, 0x98, 0x00, 0x9c, 
+0x60, 0x4b, 0x5f, 0xc0, 0x80, 0x0c, 0xf5, 0x71, 
+0xe8, 0x0f, 0x87, 0xff, 0xbc, 0x0b, 0x00, 0x70, 
+0x2b, 0x44, 0x02, 0x87, 0x02, 0x7d, 0x8a, 0x91, 
+0xff, 0xfd, 0x9f, 0x7f, 0x96, 0x52, 0x01, 0x53, 
+0x71, 0x05, 0xc0, 0x41, 0x3f, 0xf2, 0xde, 0xdf, 
+0xee, 0xca, 0x52, 0xa3, 0x73, 0x3f, 0x6e, 0xfe, 
+0xc3, 0xb0, 0xf7, 0xf7, 0xdc, 0x1d, 0xaf, 0x6e, 
+0xfe, 0x9b, 0xc5, 0xeb, 0x5d, 0x94, 0x10, 0x00, 
+0xa2, 0x44, 0x89, 0x32, 0x25, 0x04, 0x5a, 0x0f, 
+0x6f, 0x3e, 0xf3, 0xa0, 0x7b, 0x8f, 0x5c, 0x23, 
+0x0f, 0x01, 0xef, 0x5e, 0xf9, 0x34, 0xac, 0x59, 
+0x38, 0xf5, 0x7b, 0x7a, 0x32, 0x44, 0xc0, 0xe4, 
+0x2a, 0xe4, 0x04, 0x5c, 0x4b, 0x15, 0x02, 0xa3, 
+0x5a, 0x7a, 0x92, 0xe7, 0x0b, 0x3e, 0xe4, 0xfd, 
+0x92, 0x1f, 0xf9, 0xbe, 0x12, 0x40, 0xfe, 0xaf, 
+0x06, 0x51, 0xe0, 0xeb, 0x21, 0x74, 0x66, 0xef, 
+0xdb, 0xf4, 0xaf, 0xbf, 0x7d, 0x41, 0x17, 0x0f, 
+0x5f, 0x92, 0x9e, 0xa6, 0x2f, 0x14, 0xbd, 0x43, 
+0x91, 0x10, 0x03, 0x73, 0x87, 0x2f, 0xa0, 0xf9, 
+0x23, 0x17, 0xd1, 0xc2, 0xd1, 0x8b, 0x69, 0x31, 
+0xc4, 0xc0, 0x52, 0x88, 0x01, 0xe6, 0x05, 0x14, 
+0x31, 0xa0, 0xe6, 0x05, 0x4c, 0xc0, 0x83, 0x7e, 
+0x2f, 0xaf, 0x2c, 0xdb, 0x6e, 0xb8, 0x0c, 0x4e, 
+0x00, 0x51, 0xc3, 0x8f, 0x43, 0xfa, 0x17, 0xff, 
+0xa4, 0xc4, 0xfd, 0x7a, 0xef, 0xa6, 0xcd, 0x1c, 
+0xd1, 0x8b, 0xfd, 0x3d, 0x8f, 0xf3, 0x79, 0xf7, 
+0x7f, 0x0e, 0x42, 0x40, 0x0e, 0xfe, 0xe1, 0xb8, 
+0x5f, 0x8e, 0xfd, 0xbd, 0x8e, 0x46, 0xcf, 0x27, 
+0x80, 0x72, 0xf0, 0xcf, 0x63, 0x40, 0x7f, 0x1f, 
+0x7d, 0xf0, 0x01, 0x65, 0x83, 0xf6, 0x67, 0xf1, 
+0xb0, 0x1d, 0xfe, 0x00, 0xfc, 0xf4, 0xef, 0x7b, 
+0x3a, 0xda, 0x28, 0xda, 0x97, 0xcf, 0xfd, 0xde, 
+0xba, 0x13, 0x48, 0xce, 0xfb, 0x63, 0xd5, 0xcd, 
+0xff, 0x2a, 0xea, 0x0f, 0xe2, 0x75, 0x2e, 0x4a, 
+0x08, 0x00, 0x51, 0xa2, 0x44, 0x99, 0x13, 0x02, 
+0x3d, 0xe0, 0x21, 0xf0, 0x8e, 0xb7, 0x09, 0x0f, 
+0x01, 0x88, 0x03, 0x7a, 0xab, 0x49, 0x80, 0x81, 
+0x10, 0xa8, 0x4a, 0x4e, 0xc0, 0x4d, 0x8f, 0x13, 
+0x98, 0xd0, 0xce, 0x83, 0xdc, 0xfa, 0x7a, 0x92, 
+0x47, 0x7f, 0x6f, 0xf2, 0x7a, 0xd1, 0x57, 0x12, 
+0x03, 0x11, 0x23, 0x67, 0x63, 0x34, 0xfe, 0x9d, 
+0x04, 0xcc, 0x7d, 0x74, 0xed, 0x23, 0x9a, 0x3b, 
+0x7a, 0x01, 0x85, 0x0f, 0x9a, 0x45, 0x11, 0x83, 
+0x67, 0x83, 0x15, 0x98, 0x23, 0x4d, 0x06, 0x98, 
+0x17, 0xd0, 0x88, 0x01, 0x2d, 0x2f, 0x30, 0x4e, 
+0xe6, 0x05, 0x4a, 0x87, 0x07, 0xe3, 0x31, 0x19, 
+0xb0, 0xeb, 0x38, 0xbf, 0xdc, 0xb9, 0x03, 0x86, 
+0xeb, 0x81, 0x19, 0x1d, 0x52, 0x94, 0xcf, 0x5f, 
+0x4c, 0x88, 0x86, 0xfc, 0xbf, 0x82, 0x31, 0x3f, 
+0x8f, 0xf3, 0xaf, 0x80, 0xfe, 0xdf, 0xc9, 0x96, 
+0xbe, 0xd8, 0xf3, 0xff, 0x55, 0x0e, 0xfe, 0xb9, 
+0x7d, 0x9b, 0x0e, 0x60, 0xc7, 0xbf, 0x17, 0x4d, 
+0xfe, 0x06, 0xb8, 0x80, 0x9f, 0xb4, 0xc1, 0x3f, 
+0x7b, 0x70, 0x2a, 0xa8, 0x6e, 0xfe, 0x0b, 0xf6, 
+0xc7, 0x1b, 0x45, 0xfb, 0x32, 0xf1, 0x3f, 0xe8, 
+0x6e, 0x20, 0x4d, 0x39, 0xae, 0xde, 0xfb, 0xaf, 
+0xff, 0x0e, 0xd5, 0x49, 0xbc, 0xb6, 0x45, 0x09, 
+0x01, 0x20, 0x4a, 0x94, 0x28, 0x8b, 0xaa, 0xef, 
+0xd3, 0xb6, 0x6f, 0x8e, 0x6d, 0xbd, 0xe8, 0x7d, 
+0x5e, 0x03, 0x18, 0x0a, 0x01, 0xa7, 0x6e, 0x69, 
+0xf4, 0x66, 0x23, 0x4f, 0x49, 0x08, 0xf4, 0x93, 
+0x85, 0x80, 0x99, 0xf5, 0x80, 0x35, 0x39, 0x01, 
+0xbb, 0xce, 0x1e, 0x58, 0x07, 0xb8, 0x93, 0x4b, 
+0x1f, 0x77, 0xf2, 0x1b, 0x10, 0x48, 0x25, 0x05, 
+0xc7, 0xe8, 0x63, 0xdc, 0xce, 0xff, 0xe3, 0xf3, 
+0x7f, 0xd0, 0xdc, 0xf1, 0xf3, 0x29, 0xe0, 0xb5, 
+0x60, 0x0a, 0x7b, 0x2b, 0x82, 0x32, 0x97, 0x64, 
+0x53, 0xfe, 0xda, 0xdd, 0xb4, 0x70, 0xe2, 0x12, 
+0x88, 0x81, 0x48, 0x9a, 0x3d, 0x74, 0x2e, 0xc4, 
+0xc0, 0x7c, 0x2d, 0x2f, 0xa0, 0x81, 0x07, 0x97, 
+0x18, 0xc2, 0x83, 0xb6, 0x2a, 0x78, 0xd0, 0x2e, 
+0x0e, 0xe2, 0x60, 0x1d, 0x8d, 0x6d, 0x36, 0xbb, 
+0x9c, 0xb1, 0xc4, 0xfa, 0x42, 0xc0, 0xb9, 0x53, 
+0x9a, 0x2e, 0xf2, 0x37, 0x42, 0x63, 0xfb, 0xfb, 
+0x2f, 0xec, 0xf3, 0x6f, 0x5d, 0xbf, 0x4e, 0x05, 
+0x68, 0xea, 0x45, 0xb0, 0xf4, 0xe5, 0x93, 0xbe, 
+0x5f, 0x10, 0xfc, 0xf3, 0x09, 0x82, 0x7f, 0x8e, 
+0x1d, 0x3a, 0x44, 0xdb, 0xf1, 0xa4, 0x7f, 0x09, 
+0x36, 0xc0, 0x1c, 0xfc, 0xf3, 0x1f, 0x18, 0xfe, 
+0x1c, 0xc3, 0x1a, 0x80, 0x7f, 0x1d, 0xdb, 0xfc, 
+0x4a, 0x7b, 0xff, 0xed, 0xbc, 0xf7, 0x9f, 0x6f, 
+0x74, 0xeb, 0xcf, 0xcd, 0x7f, 0xcc, 0x3b, 0xf2, 
+0xde, 0x7f, 0xbd, 0x5c, 0x53, 0xc5, 0xeb, 0x59, 
+0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0x2a, 0x77, 
+0xbd, 0xf0, 0xac, 0xdd, 0xc4, 0x09, 0x6d, 0x57, 
+0xfc, 0xc3, 0x94, 0x87, 0x80, 0x43, 0xe7, 0x8d, 
+0xf4, 0x5a, 0x03, 0x97, 0x32, 0x84, 0xc0, 0x34, 
+0xab, 0x72, 0x02, 0x03, 0x1b, 0x40, 0x00, 0x74, 
+0xf3, 0x26, 0xcf, 0x3e, 0x3e, 0xb4, 0x2b, 0x77, 
+0x37, 0x9d, 0xc6, 0x08, 0x3d, 0x2f, 0x71, 0x2b, 
+0x95, 0x14, 0x1e, 0xa3, 0x3d, 0x69, 0x7b, 0xa5, 
+0xc9, 0xc0, 0x96, 0x45, 0x69, 0xf4, 0x0d, 0x9a, 
+0xe7, 0xd5, 0x53, 0xd7, 0xe8, 0x8b, 0x4f, 0xff, 
+0x4d, 0xeb, 0x7c, 0x12, 0x24, 0x78, 0x70, 0xa6, 
+0x16, 0x1e, 0x8c, 0x64, 0x31, 0x30, 0x7c, 0xbe, 
+0x01, 0x3c, 0xb8, 0x5c, 0x0f, 0x1e, 0x8c, 0xd6, 
+0xc2, 0x83, 0x73, 0x86, 0xae, 0xc2, 0x14, 0x40, 
+0x3f, 0x77, 0xc0, 0x92, 0x58, 0x62, 0x99, 0x13, 
+0x70, 0xed, 0x92, 0xa9, 0x7c, 0xce, 0xd6, 0xce, 
+0xcf, 0x93, 0x1a, 0x39, 0x3f, 0xe5, 0x17, 0x17, 
+0x15, 0x51, 0x7e, 0x6e, 0xae, 0x64, 0xe9, 0xab, 
+0x0e, 0xfe, 0xc9, 0xc4, 0xfb, 0xf9, 0x47, 0xfe, 
+0x77, 0xf6, 0x06, 0xe0, 0x3c, 0x80, 0x2d, 0x58, 
+0x11, 0x68, 0xf6, 0xfe, 0xd9, 0xd2, 0xde, 0x7f, 
+0xda, 0x95, 0xc5, 0x46, 0xd1, 0xbe, 0x4c, 0xfc, 
+0x0f, 0xbd, 0x1e, 0x42, 0x9e, 0xbb, 0xe2, 0xd5, 
+0xcd, 0x3f, 0x51, 0xbc, 0x86, 0x45, 0x09, 0x01, 
+0x20, 0x4a, 0x94, 0xa8, 0x4a, 0xac, 0x05, 0xc6, 
+0xc3, 0x43, 0x60, 0x86, 0x27, 0x3c, 0x04, 0xbe, 
+0xe5, 0x53, 0x41, 0x43, 0x0f, 0x81, 0xa9, 0x1d, 
+0xd6, 0x21, 0x7e, 0xd8, 0x11, 0x22, 0xc0, 0xd6, 
+0x02, 0x4e, 0xc0, 0xae, 0xd2, 0x9c, 0xc0, 0xf0, 
+0x26, 0x9e, 0xe4, 0xd5, 0xcd, 0x9f, 0x62, 0xc3, 
+0xf0, 0xb4, 0x8e, 0x72, 0xef, 0xe5, 0x45, 0x33, 
+0xc7, 0xcd, 0xa6, 0x33, 0xa7, 0xcf, 0xd0, 0x02, 
+0xfb, 0x45, 0xb4, 0x6b, 0xcb, 0x6e, 0x58, 0xe8, 
+0xde, 0xa0, 0x4d, 0xf3, 0x36, 0x53, 0x42, 0x70, 
+0x22, 0x76, 0xed, 0xff, 0xa1, 0xb0, 0x21, 0x11, 
+0x54, 0x98, 0x5c, 0x44, 0x97, 0x8f, 0x5e, 0xa1, 
+0xf4, 0xf9, 0x99, 0x10, 0x03, 0xb3, 0x69, 0xc5, 
+0xb4, 0x55, 0xf4, 0x97, 0xab, 0x1f, 0xd1, 0x82, 
+0xd1, 0x8b, 0x28, 0x75, 0x16, 0xae, 0x00, 0x66, 
+0xa6, 0x99, 0x84, 0x07, 0xbd, 0x5f, 0x58, 0x54, 
+0xe1, 0x58, 0x62, 0xf7, 0x6e, 0xb9, 0xca, 0xe7, 
+0x2a, 0x61, 0x59, 0x8e, 0xf4, 0x04, 0x7f, 0x12, 
+0xb1, 0xbd, 0xb9, 0x30, 0xf1, 0xb9, 0x70, 0xe6, 
+0x8c, 0xf4, 0x84, 0xff, 0x2d, 0xdc, 0xfe, 0x2e, 
+0xc9, 0xc1, 0x3f, 0x98, 0x00, 0xf0, 0x24, 0x80, 
+0x27, 0x02, 0x77, 0xe0, 0x0e, 0xc8, 0x4e, 0x81, 
+0xea, 0xd1, 0xbf, 0xf7, 0x99, 0x28, 0x93, 0xe7, 
+0x7e, 0x83, 0xee, 0x04, 0x90, 0x73, 0x51, 0xac, 
+0xba, 0xf9, 0x5f, 0x44, 0xfd, 0x9f, 0x78, 0xfd, 
+0x8a, 0x12, 0x02, 0x40, 0x94, 0x28, 0x51, 0x95, 
+0xae, 0x5e, 0x4f, 0x8d, 0xff, 0xbf, 0xd7, 0x1b, 
+0xba, 0xcd, 0x87, 0x87, 0xc0, 0x4f, 0xc6, 0x1e, 
+0x02, 0x87, 0xe0, 0xcc, 0xb7, 0x8a, 0x30, 0x31, 
+0x30, 0x21, 0x04, 0xac, 0xcf, 0x09, 0x4c, 0x6a, 
+0xe1, 0x43, 0x7e, 0x5d, 0x82, 0xc8, 0xb7, 0x6b, 
+0x00, 0x79, 0x77, 0xf3, 0x23, 0xcf, 0xee, 0xbe, 
+0xb4, 0x7e, 0x61, 0x22, 0xc6, 0xe7, 0x3b, 0x68, 
+0xb1, 0xd3, 0x52, 0x3a, 0x75, 0xfc, 0x14, 0x6d, 
+0x59, 0x99, 0x4a, 0x67, 0x4b, 0xce, 0xd2, 0x47, 
+0xb8, 0xa7, 0xdf, 0x38, 0x3b, 0x19, 0x06, 0x3a, 
+0x7f, 0xa7, 0xf7, 0xaf, 0xbe, 0x4f, 0x5f, 0x7f, 
+0xf1, 0x35, 0xed, 0x4d, 0xdc, 0x47, 0x17, 0x8b, 
+0x2f, 0x4b, 0xe0, 0x60, 0x6a, 0x24, 0xe2, 0x73, 
+0x7d, 0x13, 0xe9, 0x3f, 0x9f, 0x7f, 0x25, 0x4d, 
+0x05, 0x14, 0x5e, 0x40, 0x05, 0x0f, 0x4e, 0xeb, 
+0x34, 0xbb, 0x94, 0x00, 0x22, 0xf3, 0xb1, 0xc4, 
+0x5e, 0x3d, 0xb6, 0x2b, 0x9f, 0xa3, 0xc4, 0xe8, 
+0x4c, 0xca, 0x42, 0x93, 0xe7, 0xe6, 0xcf, 0x22, 
+0xe0, 0x73, 0xec, 0xf6, 0x79, 0xc7, 0xcf, 0xc1, 
+0x3f, 0xbc, 0xf3, 0xe7, 0xdd, 0x3f, 0x4f, 0x07, 
+0x1e, 0x81, 0x05, 0x60, 0x26, 0x60, 0xa7, 0x36, 
+0xe4, 0x67, 0x07, 0xfc, 0x01, 0xb8, 0xf9, 0xcf, 
+0x3f, 0x10, 0x67, 0x14, 0xed, 0xcb, 0xcd, 0x7f, 
+0xe0, 0xdd, 0x00, 0x9a, 0x7a, 0x6c, 0xa9, 0xba, 
+0xf9, 0x7f, 0x8b, 0x6a, 0x27, 0x5e, 0xb3, 0xa2, 
+0x84, 0x00, 0x10, 0x25, 0x4a, 0x94, 0x95, 0x85, 
+0xc0, 0xb8, 0xa7, 0x06, 0x34, 0xf6, 0x89, 0x77, 
+0xec, 0x6c, 0xec, 0x21, 0x10, 0x80, 0x55, 0xc1, 
+0xb8, 0xd6, 0x8b, 0xa5, 0xa7, 0x7f, 0x59, 0x08, 
+0x58, 0xc2, 0x09, 0xbc, 0x58, 0x01, 0x4e, 0xc0, 
+0xa9, 0x75, 0x20, 0x05, 0x76, 0x0a, 0xa5, 0x80, 
+0xce, 0xc1, 0x92, 0x18, 0xf0, 0xeb, 0x19, 0x44, 
+0x4b, 0x5d, 0x97, 0x91, 0x4f, 0x5f, 0x7f, 0x4a, 
+0x5f, 0x9f, 0x41, 0x29, 0x31, 0x5b, 0x28, 0x72, 
+0xf2, 0x3c, 0x5a, 0x1d, 0xba, 0x96, 0x66, 0x8d, 
+0x9f, 0x43, 0x1b, 0xe7, 0x26, 0xc1, 0x73, 0xff, 
+0x36, 0xc5, 0x05, 0x25, 0xd0, 0xf2, 0x19, 0x2b, 
+0x69, 0xdf, 0xa6, 0x02, 0x09, 0x1e, 0xfc, 0xe6, 
+0x8b, 0x6f, 0x68, 0xd3, 0xcc, 0x14, 0x5a, 0xed, 
+0xba, 0x56, 0xc3, 0x0b, 0x98, 0x80, 0x07, 0xe7, 
+0x8d, 0x44, 0x60, 0x50, 0x8b, 0x30, 0x25, 0x80, 
+0x68, 0xa8, 0x29, 0x21, 0x60, 0x82, 0x13, 0xf0, 
+0xe9, 0xa9, 0xf3, 0xff, 0x4f, 0x5c, 0x93, 0x4a, 
+0xe9, 0x68, 0xfe, 0x3c, 0xfe, 0x67, 0xaa, 0x9f, 
+0xe9, 0x7e, 0xa6, 0xfc, 0x0f, 0xc9, 0xc1, 0x3f, 
+0xa0, 0xff, 0xf9, 0x0a, 0x80, 0xaf, 0x01, 0x0e, 
+0x15, 0x69, 0x92, 0x02, 0x73, 0x72, 0x34, 0x53, 
+0x83, 0x75, 0xdb, 0x93, 0x69, 0xec, 0xad, 0x79, 
+0x7a, 0xd1, 0xbe, 0x7c, 0xee, 0xc7, 0xcd, 0x7f, 
+0xec, 0x3b, 0xb3, 0xd5, 0xcd, 0x9f, 0x6b, 0x92, 
+0x78, 0x9d, 0x8a, 0x12, 0x02, 0x40, 0x94, 0x28, 
+0x51, 0x55, 0x29, 0x04, 0x1a, 0x0f, 0x6e, 0x1a, 
+0x98, 0x67, 0xda, 0x43, 0x60, 0x2f, 0x8d, 0x6c, 
+0x39, 0x47, 0x2b, 0x02, 0x6c, 0xab, 0x84, 0x13, 
+0x78, 0x03, 0x22, 0xc0, 0xaf, 0x6d, 0x38, 0x85, 
+0x74, 0x40, 0x12, 0x60, 0xc7, 0x30, 0x49, 0x0c, 
+0xf8, 0x4b, 0x62, 0x20, 0x10, 0xb1, 0xbb, 0xfe, 
+0x14, 0x15, 0x18, 0x83, 0xa8, 0xdc, 0xed, 0x54, 
+0x80, 0x73, 0xba, 0x59, 0x13, 0x22, 0x69, 0xa5, 
+0x4f, 0x14, 0xc5, 0x04, 0xad, 0xa6, 0x77, 0xcf, 
+0xbf, 0x4b, 0x4b, 0x66, 0x2c, 0xa7, 0xc5, 0x0e, 
+0xcb, 0xe8, 0x9f, 0xf0, 0xdf, 0xdf, 0x19, 0x9f, 
+0x4f, 0x27, 0xf2, 0x4f, 0xd2, 0x67, 0x1f, 0xfc, 
+0x9d, 0x82, 0xdf, 0x0c, 0xa3, 0xd0, 0x81, 0x33, 
+0x25, 0xb3, 0x21, 0x05, 0x1e, 0xd4, 0xf2, 0x02, 
+0xa1, 0x03, 0xe6, 0xa3, 0xf1, 0x9b, 0x8b, 0x25, 
+0x36, 0xe6, 0x04, 0xd4, 0x26, 0x40, 0x49, 0xeb, 
+0x53, 0x28, 0x07, 0x13, 0x00, 0x06, 0x00, 0xf9, 
+0xae, 0x9f, 0xef, 0xfb, 0xf9, 0xce, 0x9f, 0xef, 
+0xfd, 0xf9, 0xee, 0x9f, 0xef, 0xff, 0xbf, 0x82, 
+0x0f, 0xc0, 0xdb, 0x30, 0xfe, 0x49, 0x81, 0xd9, 
+0xcf, 0x16, 0xdc, 0xfc, 0xf3, 0xbd, 0xff, 0x66, 
+0xec, 0xfd, 0xa7, 0x5c, 0x5d, 0x64, 0x14, 0xed, 
+0x3b, 0x08, 0xcd, 0x7f, 0xe8, 0x7b, 0x21, 0xe4, 
+0xa5, 0xbf, 0xf7, 0x5f, 0x2b, 0x5e, 0x9b, 0xa2, 
+0x84, 0x00, 0x10, 0x25, 0x4a, 0x54, 0x75, 0x09, 
+0x81, 0xb6, 0xc3, 0x9a, 0x87, 0x1f, 0xe6, 0x33, 
+0x41, 0x43, 0x21, 0xe0, 0xd5, 0x6b, 0x07, 0x0d, 
+0x6d, 0x16, 0x4a, 0x7d, 0x9f, 0xb6, 0xd1, 0x13, 
+0x03, 0x96, 0x71, 0x02, 0xf6, 0x65, 0x72, 0x02, 
+0x43, 0x01, 0x05, 0x86, 0xb7, 0x89, 0xa4, 0xf0, 
+0x76, 0xb3, 0x29, 0xac, 0xc3, 0x2c, 0x0a, 0xe9, 
+0x38, 0x93, 0x82, 0x3a, 0x41, 0x0c, 0x74, 0x0e, 
+0x21, 0xff, 0x2e, 0x10, 0x03, 0xdd, 0x82, 0x28, 
+0xa0, 0x6f, 0x10, 0x79, 0xf7, 0xf4, 0xa3, 0xb4, 
+0xf5, 0xe9, 0x94, 0x95, 0x94, 0x4d, 0x7b, 0x77, 
+0xec, 0xa3, 0xfc, 0xcc, 0x5d, 0x34, 0xc7, 0x76, 
+0x1e, 0x5d, 0x47, 0x33, 0x5e, 0xe6, 0xb4, 0x82, 
+0x76, 0x6e, 0xc8, 0xa7, 0x8f, 0x3f, 0xfc, 0x58, 
+0x32, 0x1a, 0xfa, 0xe0, 0xda, 0x87, 0x74, 0xff, 
+0xde, 0x7d, 0x3a, 0x0b, 0x8f, 0x81, 0xd9, 0xc3, 
+0x21, 0x00, 0x46, 0xce, 0xa3, 0x59, 0x43, 0x34, 
+0xf0, 0xa0, 0x5b, 0xdf, 0x59, 0x66, 0x63, 0x89, 
+0x0d, 0x39, 0x01, 0x24, 0x07, 0x6a, 0x3e, 0x17, 
+0x88, 0xff, 0x95, 0xec, 0x7f, 0x11, 0xfb, 0xcb, 
+0x27, 0x80, 0xec, 0xec, 0xc7, 0x0e, 0x7f, 0x59, 
+0x80, 0xfb, 0xd8, 0xf1, 0x8f, 0x9d, 0xff, 0xd8, 
+0x01, 0x90, 0x9d, 0x00, 0x39, 0xe4, 0x47, 0x3d, 
+0xfa, 0xf7, 0x3a, 0xb3, 0xca, 0x20, 0xda, 0x57, 
+0x43, 0xfc, 0x0f, 0xbc, 0xe3, 0x4f, 0x2e, 0x85, 
+0x7a, 0x7b, 0xff, 0xf3, 0x3e, 0x3b, 0x12, 0x7e, 
+0x27, 0x5e, 0x93, 0xa2, 0x84, 0x00, 0x10, 0x25, 
+0x4a, 0x54, 0x75, 0x0b, 0x81, 0x5e, 0xf0, 0x10, 
+0xb8, 0x64, 0xca, 0x43, 0xc0, 0xad, 0x47, 0x36, 
+0x0d, 0x6a, 0xec, 0x27, 0x09, 0x81, 0xbe, 0x26, 
+0x85, 0x40, 0xc5, 0x39, 0x81, 0x49, 0x8d, 0xfc, 
+0x28, 0xb2, 0xcd, 0x7c, 0x9a, 0xd5, 0x76, 0x1e, 
+0x45, 0xb4, 0x9b, 0x43, 0xe1, 0xed, 0x67, 0x53, 
+0x68, 0x87, 0x08, 0x45, 0x0c, 0x04, 0x48, 0x62, 
+0x20, 0x88, 0xfc, 0xb1, 0x22, 0x58, 0xe2, 0xb2, 
+0x8c, 0x12, 0x16, 0xad, 0xa7, 0xc5, 0x33, 0x96, 
+0x52, 0xc4, 0xd8, 0xd9, 0x74, 0x0c, 0x06, 0x3c, 
+0x91, 0xb6, 0x73, 0x29, 0x2d, 0x3a, 0x1d, 0x4f, 
+0xe1, 0x17, 0x69, 0xb5, 0xff, 0x5a, 0xfa, 0xec, 
+0xb3, 0xcf, 0x68, 0xef, 0xe6, 0x02, 0x3a, 0xb9, 
+0xe7, 0x14, 0xfd, 0xf0, 0xdd, 0x0f, 0x74, 0xf5, 
+0xf8, 0x35, 0xc9, 0x79, 0x30, 0x6c, 0x50, 0x84, 
+0x04, 0x0f, 0x4e, 0xee, 0x10, 0x66, 0x32, 0x96, 
+0xd8, 0x94, 0x10, 0x80, 0x11, 0x90, 0xf4, 0xff, 
+0x1f, 0x81, 0x0c, 0x00, 0x6e, 0xea, 0xef, 0xe1, 
+0xb6, 0x9f, 0x4d, 0x80, 0xd8, 0xdb, 0x9f, 0x3d, 
+0xfe, 0x8f, 0x22, 0xf8, 0xe7, 0x63, 0x39, 0xf8, 
+0x07, 0x19, 0x00, 0x5b, 0xb5, 0x21, 0x3f, 0x3b, 
+0x11, 0xfe, 0xc3, 0xcd, 0x7f, 0xde, 0x81, 0x75, 
+0x26, 0xcf, 0xfd, 0x06, 0xdc, 0xf5, 0xa7, 0xa9, 
+0x25, 0x7a, 0x7b, 0xff, 0xaf, 0xd0, 0xfc, 0x5b, 
+0x8b, 0xd7, 0xa1, 0x28, 0x21, 0x00, 0x44, 0x89, 
+0x12, 0x55, 0x63, 0xd5, 0xe7, 0xe9, 0x49, 0x83, 
+0xe0, 0x21, 0xf0, 0xa1, 0x49, 0x0f, 0x81, 0xae, 
+0x5b, 0xe8, 0x8d, 0x86, 0xee, 0x46, 0x42, 0xa0, 
+0xb2, 0x9c, 0x80, 0x5b, 0x93, 0x70, 0x9a, 0xd7, 
+0x6a, 0x31, 0xcd, 0x69, 0xbd, 0x50, 0x2b, 0x06, 
+0xe6, 0xd2, 0xcc, 0x76, 0x91, 0x8a, 0x18, 0x08, 
+0xee, 0x18, 0xae, 0xe5, 0x05, 0x42, 0x24, 0x5e, 
+0xc0, 0x07, 0xf0, 0xa0, 0x4f, 0x77, 0x7f, 0x49, 
+0x0c, 0x04, 0x0d, 0x0c, 0xa5, 0xb8, 0xd9, 0xf1, 
+0x74, 0x60, 0xdf, 0x01, 0x9a, 0x3b, 0x65, 0x3e, 
+0x5d, 0xc1, 0x2e, 0x3e, 0x68, 0x30, 0xac, 0x74, 
+0x5f, 0xf4, 0xa1, 0xeb, 0x17, 0xaf, 0xd3, 0xf5, 
+0x0b, 0xd7, 0x15, 0xe7, 0x41, 0x5e, 0x11, 0x04, 
+0xbf, 0x31, 0x93, 0x46, 0x35, 0x0f, 0x52, 0x62, 
+0x89, 0x15, 0x21, 0xd0, 0x40, 0x5f, 0x08, 0x0c, 
+0x85, 0x00, 0x90, 0xff, 0xbf, 0x67, 0x0f, 0xd6, 
+0xdc, 0xf2, 0xff, 0x03, 0xe7, 0x7d, 0x9c, 0xea, 
+0xb7, 0x0f, 0x0d, 0x9e, 0x53, 0xfe, 0xb8, 0xe9, 
+0x73, 0xf3, 0xe7, 0xf4, 0xbf, 0xc2, 0x3d, 0x1a, 
+0x9b, 0xe0, 0x5c, 0x9c, 0x07, 0x72, 0xf3, 0x5f, 
+0x8b, 0xbd, 0xff, 0xe8, 0x5b, 0xfa, 0xe7, 0x7e, 
+0xd2, 0x93, 0x3f, 0x9a, 0xff, 0xd8, 0xf3, 0x7a, 
+0x7b, 0xff, 0xc7, 0x68, 0xfe, 0x63, 0xc5, 0x6b, 
+0x4f, 0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0xaa, 
+0x25, 0x1e, 0x02, 0xd3, 0x26, 0x4f, 0x68, 0xbb, 
+0xfc, 0x9f, 0xa6, 0x3c, 0x04, 0xec, 0x3b, 0x6f, 
+0xa0, 0x57, 0x9f, 0x77, 0xd2, 0x0a, 0x01, 0x9b, 
+0x4a, 0x73, 0x02, 0xaf, 0x42, 0x04, 0x84, 0x35, 
+0x5d, 0x40, 0x0b, 0x5b, 0x2c, 0xa3, 0xf9, 0x2d, 
+0x01, 0xed, 0xb5, 0x5a, 0x24, 0x89, 0x81, 0xd9, 
+0x2a, 0x31, 0x10, 0xd6, 0x7e, 0x16, 0xc4, 0xc0, 
+0x4c, 0x95, 0x18, 0x08, 0x56, 0xc4, 0x40, 0xc0, 
+0x8b, 0xc1, 0xb4, 0x3a, 0x7c, 0x0d, 0x79, 0xf4, 
+0xf2, 0xa6, 0x82, 0xdd, 0x05, 0x92, 0x20, 0x60, 
+0xb3, 0xa1, 0xa3, 0x45, 0x25, 0x74, 0xe2, 0xc0, 
+0x49, 0xc9, 0x5f, 0xc0, 0xe7, 0x25, 0xe4, 0x11, 
+0xbc, 0x12, 0x88, 0x50, 0xa2, 0x20, 0xfc, 0x3b, 
+0x1a, 0x7e, 0xa3, 0x00, 0xc4, 0x13, 0x07, 0xaa, 
+0x84, 0x40, 0x90, 0x9e, 0x10, 0x18, 0xd1, 0x78, 
+0x96, 0xf2, 0xff, 0x3c, 0x77, 0xe4, 0x21, 0xa9, 
+0xb9, 0xdf, 0x41, 0xc3, 0x3f, 0x8c, 0x14, 0xc0, 
+0x5d, 0x79, 0x79, 0x74, 0xed, 0xd2, 0x25, 0x25, 
+0xf8, 0xe7, 0x38, 0xf2, 0x00, 0x38, 0xe4, 0x27, 
+0x15, 0xe3, 0x7f, 0x0e, 0xfa, 0xd9, 0x9c, 0x95, 
+0x4a, 0x93, 0xaf, 0x2e, 0xd4, 0x8f, 0xf6, 0x95, 
+0x88, 0x7f, 0x7f, 0xec, 0xfd, 0x83, 0xc9, 0x2b, 
+0x5f, 0xbd, 0xf7, 0x4f, 0x88, 0x16, 0xaf, 0x37, 
+0x51, 0x42, 0x00, 0x88, 0x12, 0x25, 0xaa, 0x56, 
+0x55, 0xcf, 0xa7, 0xc6, 0xfe, 0xfa, 0xe5, 0xe7, 
+0xa7, 0xfb, 0xc2, 0x43, 0xe0, 0xbf, 0xa6, 0x3c, 
+0x04, 0x26, 0x77, 0x58, 0x43, 0x2f, 0x3d, 0x67, 
+0x6f, 0x20, 0x04, 0x2a, 0xc0, 0x09, 0x60, 0x3d, 
+0xf0, 0x16, 0xce, 0x03, 0x17, 0x36, 0x59, 0x41, 
+0x4b, 0x9a, 0xad, 0xa4, 0x45, 0xcd, 0x97, 0x43, 
+0x0c, 0x2c, 0x95, 0xc4, 0xc0, 0x5c, 0x49, 0x0c, 
+0x2c, 0x80, 0x18, 0xc0, 0x8a, 0x40, 0x25, 0x06, 
+0xf4, 0xe0, 0xc1, 0x2e, 0x3a, 0x78, 0x30, 0x6c, 
+0xc8, 0x2c, 0xca, 0xde, 0x92, 0x0d, 0xfb, 0xdd, 
+0x3d, 0x74, 0x04, 0x8d, 0x79, 0x57, 0xf6, 0x6e, 
+0x49, 0x0c, 0xb8, 0xf5, 0xd3, 0xd9, 0x10, 0xfb, 
+0xbc, 0xec, 0x4f, 0x13, 0xda, 0xb2, 0x00, 0x90, 
+0xcb, 0x58, 0x08, 0x8c, 0x6a, 0x32, 0x47, 0xf9, 
+0x7f, 0x9d, 0x3f, 0x7e, 0xbf, 0xd4, 0xdc, 0xa5, 
+0xe0, 0x1f, 0x3c, 0xdd, 0xbf, 0x73, 0xf6, 0x2c, 
+0x7d, 0xf5, 0xe5, 0x97, 0xf4, 0x0d, 0x07, 0xff, 
+0x20, 0x04, 0x88, 0xcd, 0x7e, 0xd4, 0x7b, 0x7f, 
+0x8f, 0xb3, 0x2b, 0x8c, 0x6e, 0xfd, 0x99, 0xf8, 
+0x1f, 0x78, 0xdb, 0x8f, 0x5c, 0x0a, 0xe4, 0xbd, 
+0x7f, 0x02, 0xd7, 0x69, 0xd4, 0x6f, 0xc4, 0x6b, 
+0x4d, 0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0xaa, 
+0xad, 0x42, 0xe0, 0xf7, 0xaf, 0x37, 0x74, 0x5d, 
+0x04, 0x0f, 0x81, 0x7b, 0xa1, 0x2f, 0x1c, 0xd5, 
+0x13, 0x02, 0x41, 0xf0, 0x10, 0x98, 0xd8, 0x76, 
+0x05, 0xf5, 0x7f, 0x76, 0xaa, 0x22, 0x04, 0x2a, 
+0xca, 0x09, 0x4c, 0x78, 0xce, 0x8f, 0x56, 0x36, 
+0x8e, 0xa5, 0xe5, 0x4d, 0xa2, 0x69, 0x69, 0xd3, 
+0x55, 0x8a, 0x18, 0x58, 0x20, 0x89, 0x81, 0xc5, 
+0x10, 0x03, 0x58, 0x11, 0x28, 0x62, 0x40, 0xc3, 
+0x0b, 0x18, 0xc3, 0x83, 0x00, 0x07, 0xfb, 0x04, 
+0x23, 0x67, 0x20, 0x92, 0x96, 0xba, 0x2c, 0xa7, 
+0xa4, 0x55, 0xc9, 0xe4, 0xd6, 0xd3, 0x8b, 0x5c, 
+0x7b, 0x79, 0x90, 0x73, 0x6f, 0x37, 0x72, 0xed, 
+0xeb, 0x41, 0x53, 0x3b, 0x7b, 0xd3, 0x5b, 0x0d, 
+0xfd, 0x68, 0xd0, 0xf3, 0xa8, 0x06, 0xfe, 0x52, 
+0xc9, 0x42, 0xe0, 0x2d, 0xad, 0x10, 0x18, 0xd3, 
+0x6c, 0x81, 0xf2, 0xff, 0xb8, 0x70, 0x72, 0xa1, 
+0x14, 0x01, 0x9c, 0x03, 0xb2, 0xff, 0x54, 0x49, 
+0x09, 0x7d, 0x0e, 0xce, 0xe0, 0xc7, 0x1f, 0x7f, 
+0x94, 0x4e, 0xff, 0xb2, 0xf1, 0x76, 0x6e, 0xfe, 
+0xf9, 0xb0, 0x06, 0xe6, 0xe6, 0x3f, 0xf7, 0xe0, 
+0x3a, 0xa3, 0x68, 0x5f, 0x6e, 0xfe, 0x6f, 0xde, 
+0xf5, 0xa5, 0x69, 0x47, 0x97, 0xaa, 0x9b, 0xff, 
+0xbf, 0x51, 0x2d, 0xc4, 0xeb, 0x4b, 0x94, 0x10, 
+0x00, 0xa2, 0x44, 0x89, 0xaa, 0x0b, 0x42, 0xe0, 
+0xe9, 0x01, 0x8d, 0xbd, 0x13, 0x1d, 0xbb, 0x24, 
+0x3d, 0x30, 0xe4, 0x03, 0x02, 0xfa, 0x16, 0xd1, 
+0x18, 0x8c, 0xed, 0xfb, 0x3e, 0x63, 0x0b, 0x01, 
+0x30, 0xa9, 0xc2, 0x9c, 0x80, 0xfb, 0x73, 0xb3, 
+0x29, 0xba, 0xe1, 0x5a, 0x5a, 0xd5, 0x68, 0x35, 
+0xad, 0x68, 0x1c, 0xa3, 0x88, 0x81, 0xc5, 0xcd, 
+0x56, 0xd0, 0x22, 0xac, 0x08, 0x16, 0xb4, 0x5c, 
+0x2a, 0xf1, 0x02, 0x73, 0x15, 0x5e, 0x40, 0x1f, 
+0x1e, 0xe4, 0x15, 0x81, 0x0c, 0x0f, 0xea, 0xcc, 
+0x86, 0xfc, 0x25, 0xb3, 0x21, 0xc7, 0x4e, 0xde, 
+0x34, 0xac, 0x89, 0x37, 0x0d, 0x78, 0xde, 0x87, 
+0x06, 0x4a, 0xe5, 0x8b, 0x32, 0x25, 0x04, 0x02, 
+0x68, 0x1c, 0x44, 0x87, 0xfc, 0xff, 0xb6, 0xc4, 
+0x61, 0x2f, 0xa5, 0xa1, 0xf9, 0x1f, 0xc1, 0x15, 
+0xc0, 0x5f, 0x3f, 0xfc, 0x90, 0x1e, 0x3d, 0x7a, 
+0x44, 0x1f, 0xdc, 0xb9, 0x43, 0xbb, 0x61, 0x00, 
+0xc4, 0xcd, 0x7f, 0x2b, 0x4c, 0x7f, 0xb8, 0xf9, 
+0xaf, 0xd9, 0x91, 0x44, 0xa3, 0x6e, 0x47, 0xea, 
+0x45, 0xfb, 0xf2, 0xb9, 0xdf, 0x80, 0xbb, 0x7e, 
+0x34, 0xf6, 0xdc, 0x6c, 0x75, 0xf3, 0x7f, 0x84, 
+0x1a, 0x21, 0x5e, 0x53, 0xa2, 0x84, 0x00, 0x10, 
+0x25, 0x4a, 0x54, 0x5d, 0x13, 0x02, 0x4d, 0xe0, 
+0x21, 0xb0, 0x1d, 0x1e, 0x02, 0x46, 0xf1, 0xc3, 
+0xbe, 0x7d, 0xf6, 0xd0, 0x88, 0x16, 0xb3, 0xa8, 
+0x8f, 0x24, 0x02, 0x26, 0x95, 0x9b, 0x13, 0xe0, 
+0x49, 0xc0, 0xec, 0xe7, 0x56, 0xd0, 0xea, 0xe7, 
+0xe3, 0x29, 0xa6, 0xc1, 0x3a, 0x8a, 0x92, 0xc5, 
+0x40, 0x93, 0x18, 0x5a, 0xd6, 0x34, 0x8a, 0x96, 
+0x36, 0x83, 0x18, 0x68, 0xbe, 0x42, 0xe2, 0x05, 
+0x16, 0x48, 0xbc, 0x80, 0x31, 0x3c, 0x18, 0x66, 
+0x00, 0x0f, 0x7a, 0x75, 0x08, 0xa2, 0xb1, 0x4d, 
+0x7d, 0xe8, 0xcd, 0xe7, 0x3d, 0x51, 0x5e, 0x10, 
+0x00, 0xde, 0xda, 0x52, 0x0b, 0x01, 0x5f, 0x3d, 
+0x21, 0x30, 0xa9, 0xd5, 0x4a, 0xe5, 0xff, 0x69, 
+0x99, 0xcb, 0x6e, 0xca, 0xc1, 0x6e, 0xff, 0x36, 
+0xec, 0x7d, 0x7f, 0xb9, 0x7f, 0x9f, 0x3e, 0x41, 
+0x80, 0x51, 0x31, 0xc4, 0x00, 0xdf, 0xfb, 0x73, 
+0xe3, 0x97, 0xf7, 0xfe, 0x36, 0x57, 0x17, 0xe8, 
+0x45, 0xfb, 0x6a, 0x88, 0x7f, 0x3f, 0x1a, 0x72, 
+0x2d, 0x48, 0xbb, 0xf7, 0x4f, 0x90, 0x6b, 0x99, 
+0x78, 0x1d, 0x89, 0x12, 0x02, 0x40, 0x94, 0x28, 
+0x51, 0x75, 0x58, 0x08, 0x8c, 0x69, 0x3f, 0xb4, 
+0x79, 0xf8, 0x51, 0x53, 0x1e, 0x02, 0x9e, 0xbd, 
+0xb6, 0xd3, 0x90, 0xa6, 0xc1, 0x10, 0x02, 0x13, 
+0xb5, 0x62, 0xc0, 0x72, 0x4e, 0x60, 0xc0, 0x33, 
+0x4e, 0xb4, 0xea, 0x59, 0xc4, 0xfb, 0x3e, 0x97, 
+0x48, 0x6b, 0x9e, 0x5f, 0x4f, 0xb1, 0x0d, 0x20, 
+0x06, 0x1a, 0x42, 0x0c, 0x34, 0x5a, 0x83, 0x15, 
+0x81, 0x4e, 0x0c, 0xf0, 0x8a, 0x60, 0xb1, 0xc4, 
+0x0b, 0xa8, 0xe1, 0xc1, 0x05, 0x0a, 0x3c, 0x18, 
+0xda, 0x76, 0x36, 0x4d, 0x69, 0x16, 0x20, 0x25, 
+0x11, 0xca, 0xb1, 0xc4, 0x6f, 0x3c, 0xe7, 0xa9, 
+0x08, 0x01, 0x9d, 0x18, 0xf0, 0xd1, 0x8a, 0x01, 
+0x9d, 0x10, 0xb0, 0x6d, 0x13, 0xa3, 0xfc, 0xbf, 
+0xac, 0xf0, 0xca, 0x97, 0x3c, 0x00, 0x38, 0xe0, 
+0xe7, 0x0b, 0x98, 0x0f, 0x71, 0xe0, 0x4f, 0x0a, 
+0x9e, 0xfc, 0xd5, 0x7b, 0x7f, 0xf7, 0xb7, 0x97, 
+0x9b, 0x38, 0xf7, 0xf3, 0xa3, 0x01, 0xd8, 0xfb, 
+0xbb, 0x4a, 0x7b, 0x7f, 0xa5, 0xf9, 0x1f, 0xf7, 
+0xde, 0x91, 0xf0, 0x6b, 0xf1, 0xfa, 0x11, 0x25, 
+0x04, 0x80, 0x28, 0x51, 0xa2, 0xea, 0x83, 0x10, 
+0xe8, 0x0b, 0xe7, 0xc0, 0x2b, 0xde, 0xbd, 0xf3, 
+0x8d, 0x84, 0x80, 0x6b, 0xf7, 0x2c, 0x1a, 0xd0, 
+0xc8, 0x47, 0x25, 0x04, 0x26, 0x59, 0xc4, 0x09, 
+0x8c, 0x7d, 0xc6, 0x87, 0x12, 0x9e, 0x4e, 0xa6, 
+0x84, 0x67, 0x92, 0x29, 0xee, 0xd9, 0x8d, 0xb4, 
+0x56, 0x12, 0x03, 0x09, 0x92, 0x18, 0x88, 0x56, 
+0xc4, 0x80, 0x86, 0x17, 0x90, 0xc5, 0x80, 0x0c, 
+0x0f, 0xce, 0x83, 0x18, 0x70, 0x69, 0x1a, 0x8e, 
+0x66, 0xee, 0x6e, 0x32, 0x96, 0x58, 0x11, 0x02, 
+0xcf, 0x19, 0x0a, 0x01, 0xdd, 0x54, 0x60, 0x6a, 
+0xbb, 0x75, 0xca, 0xff, 0x43, 0x54, 0xe0, 0x76, 
+0x7a, 0x0f, 0x9e, 0xff, 0x1c, 0xf1, 0x7b, 0xe9, 
+0xc2, 0x05, 0xca, 0xd0, 0x9a, 0xfd, 0xec, 0x42, 
+0x1c, 0x30, 0x37, 0xff, 0x39, 0x07, 0xd7, 0x98, 
+0xbc, 0xf5, 0x7f, 0xf3, 0xae, 0x0f, 0xd9, 0x1d, 
+0x59, 0xaa, 0x6e, 0xfe, 0xff, 0x42, 0xf3, 0x6f, 
+0x2a, 0x5e, 0x33, 0xa2, 0x84, 0x00, 0x10, 0x25, 
+0x4a, 0x54, 0xfd, 0xf2, 0x10, 0x78, 0x66, 0xe2, 
+0x10, 0x78, 0x08, 0xfc, 0xd5, 0xaf, 0xaf, 0xb1, 
+0x87, 0xc0, 0x8c, 0xae, 0x29, 0x88, 0x1f, 0x76, 
+0x35, 0x21, 0x04, 0x4a, 0x5f, 0x0f, 0xb8, 0x3d, 
+0x35, 0x9b, 0x92, 0xfe, 0x9c, 0x4a, 0x1b, 0x9e, 
+0x4a, 0xa1, 0xf5, 0x4f, 0x6f, 0x82, 0x18, 0x48, 
+0x82, 0x18, 0xd8, 0x20, 0x89, 0x81, 0xd5, 0x92, 
+0x18, 0x88, 0xd3, 0xf2, 0x02, 0x3a, 0x31, 0x10, 
+0xd4, 0x78, 0x3e, 0x0d, 0xc7, 0x13, 0xbe, 0x3a, 
+0x77, 0x40, 0x4e, 0x22, 0x34, 0x2d, 0x04, 0x3c, 
+0x4c, 0x0a, 0x01, 0xbb, 0x0e, 0xeb, 0x95, 0xff, 
+0xf6, 0x98, 0xf0, 0xad, 0xf4, 0x39, 0x3c, 0xfe, 
+0x6f, 0xc2, 0x08, 0x68, 0xbb, 0xd6, 0xec, 0x67, 
+0x1b, 0xfc, 0xff, 0xb9, 0xf9, 0xaf, 0xde, 0xb1, 
+0x91, 0x46, 0xde, 0x9e, 0xad, 0x17, 0xed, 0x3b, 
+0x50, 0xdb, 0xfc, 0xc7, 0xbd, 0x3d, 0x5b, 0xdd, 
+0xfc, 0x1f, 0xa2, 0xf9, 0x0f, 0x16, 0xaf, 0x13, 
+0x51, 0x42, 0x00, 0x88, 0x12, 0x25, 0xaa, 0xde, 
+0x56, 0xff, 0xe7, 0xa6, 0x4e, 0x9b, 0xd0, 0x76, 
+0xc5, 0x17, 0x81, 0xfd, 0x0e, 0x18, 0x79, 0x08, 
+0xd8, 0x75, 0x5a, 0x2f, 0xc5, 0x0f, 0xf7, 0x79, 
+0xca, 0x32, 0x21, 0x30, 0xf7, 0x4f, 0xd1, 0xb4, 
+0xf9, 0x8f, 0x19, 0x94, 0xfc, 0xa7, 0x34, 0xda, 
+0xf8, 0xe7, 0x2d, 0x10, 0x03, 0x9b, 0x25, 0x31, 
+0x10, 0x0f, 0x31, 0xb0, 0x4e, 0x12, 0x03, 0xeb, 
+0x25, 0x5e, 0x60, 0x41, 0x83, 0x28, 0x5c, 0x11, 
+0xf8, 0x5b, 0x18, 0x4b, 0x6c, 0x4e, 0x08, 0x68, 
+0xc4, 0x80, 0x63, 0xa7, 0x64, 0xe5, 0xbf, 0x7b, 
+0xcd, 0x9c, 0x5c, 0x69, 0xff, 0x5f, 0x04, 0xb3, 
+0x1f, 0xde, 0xfb, 0xa7, 0x23, 0xe6, 0x97, 0x7d, 
+0xfe, 0x37, 0x65, 0x6d, 0xa1, 0x49, 0xd7, 0xe6, 
+0x19, 0x9c, 0xfb, 0xf9, 0x4b, 0xc4, 0xff, 0x90, 
+0xab, 0xb0, 0x30, 0xde, 0xa9, 0xdb, 0xfb, 0x7b, 
+0xef, 0x88, 0x5f, 0x20, 0x5e, 0x1b, 0xa2, 0x84, 
+0x00, 0x10, 0x25, 0x4a, 0x54, 0xbd, 0xaf, 0x1e, 
+0x7f, 0x1e, 0xfd, 0x9b, 0x97, 0x1b, 0x38, 0x06, 
+0xd8, 0xb6, 0x8f, 0xf9, 0xce, 0xd8, 0x43, 0xa0, 
+0x98, 0x26, 0xb7, 0x5f, 0x8d, 0xf8, 0xe1, 0x69, 
+0x5a, 0x21, 0xa0, 0xcf, 0x09, 0xa8, 0xd7, 0x03, 
+0xaf, 0x3e, 0x6d, 0x4f, 0xeb, 0x7e, 0x0f, 0x93, 
+0x9d, 0xdf, 0x67, 0x53, 0xca, 0x1f, 0x32, 0x69, 
+0xd3, 0x1f, 0xd3, 0x29, 0x49, 0x2b, 0x06, 0x12, 
+0x21, 0x06, 0x62, 0x9f, 0x4e, 0xa4, 0x19, 0xcf, 
+0xcc, 0xa4, 0x97, 0xe1, 0x25, 0x50, 0xde, 0x58, 
+0x62, 0xdd, 0x54, 0xc0, 0x5d, 0x2b, 0x06, 0x74, 
+0x9c, 0x80, 0x53, 0x97, 0x54, 0xe5, 0xbf, 0x37, 
+0x7e, 0x49, 0x2e, 0x1d, 0x3b, 0x7c, 0x98, 0xb6, 
+0xa0, 0xf9, 0xab, 0xf7, 0xfe, 0x6e, 0x6f, 0x2f, 
+0x33, 0xba, 0xf5, 0xe7, 0xe6, 0x3f, 0xe0, 0xb6, 
+0x0f, 0xb9, 0xee, 0x8b, 0xd5, 0x36, 0x7e, 0xa9, 
+0xf9, 0x17, 0xa3, 0x7e, 0x25, 0x5e, 0x17, 0xa2, 
+0x84, 0x00, 0x10, 0x25, 0x4a, 0xd4, 0x93, 0x24, 
+0x04, 0xfe, 0x80, 0xd1, 0xff, 0xd2, 0x69, 0x9d, 
+0x4c, 0x79, 0x08, 0x1c, 0x84, 0x21, 0xcf, 0x72, 
+0xea, 0x87, 0xd3, 0x41, 0x7d, 0x21, 0xa0, 0xcf, 
+0x09, 0x8c, 0xf8, 0xb3, 0x07, 0xa5, 0xfe, 0x36, 
+0x97, 0x32, 0x7e, 0x97, 0x47, 0x69, 0xff, 0x97, 
+0x43, 0x5b, 0x20, 0x06, 0x92, 0xff, 0x90, 0x41, 
+0x81, 0x7f, 0x5e, 0x44, 0x6f, 0x3c, 0x33, 0xc3, 
+0x84, 0xb1, 0x90, 0x43, 0x05, 0x85, 0x80, 0x6e, 
+0x2a, 0xe0, 0xda, 0x2d, 0x4b, 0xf9, 0xef, 0x4c, 
+0x8e, 0xcd, 0xa3, 0x54, 0x6d, 0xf3, 0xdf, 0x0d, 
+0x0b, 0x60, 0x6e, 0xfe, 0xb3, 0x0f, 0xad, 0xd1, 
+0x8b, 0xf6, 0xd5, 0x9c, 0xfb, 0xf9, 0xd2, 0x1b, 
+0x77, 0xb1, 0x3e, 0x28, 0x5e, 0xaa, 0x6e, 0xfe, 
+0x9f, 0xa3, 0x1a, 0x89, 0xd7, 0x82, 0x28, 0x21, 
+0x00, 0x44, 0x89, 0x12, 0xf5, 0xa4, 0x0a, 0x81, 
+0x67, 0xdf, 0x6c, 0xe4, 0x95, 0x04, 0x0f, 0x81, 
+0x87, 0x86, 0x7c, 0x80, 0x7f, 0xdf, 0x42, 0x1a, 
+0xdd, 0x6a, 0xbe, 0xd4, 0xfc, 0x4d, 0x0b, 0x01, 
+0x1b, 0x9a, 0xf1, 0xc7, 0x99, 0x94, 0xfd, 0xeb, 
+0x1d, 0x94, 0xfd, 0x9b, 0xed, 0xb4, 0xe8, 0xf7, 
+0x6b, 0x69, 0xc8, 0x53, 0xae, 0x16, 0xe5, 0x0e, 
+0x94, 0x15, 0x4b, 0x5c, 0x1a, 0x27, 0xe0, 0xd1, 
+0x63, 0x9b, 0xf2, 0xdf, 0xb7, 0x61, 0x4d, 0xba, 
+0xd4, 0xfc, 0xb7, 0xe3, 0xee, 0x9f, 0x9b, 0x7f, 
+0xec, 0xce, 0x8d, 0x30, 0xfb, 0x99, 0xa5, 0x3a, 
+0xf7, 0xd3, 0xdc, 0xfa, 0x73, 0xf3, 0x1f, 0x77, 
+0x76, 0xb6, 0xba, 0xf9, 0x3f, 0x40, 0xbd, 0x29, 
+0xfe, 0xfe, 0x45, 0x09, 0x01, 0x20, 0x4a, 0x94, 
+0x28, 0x21, 0x04, 0xfe, 0x3c, 0xba, 0xd9, 0x5b, 
+0x4d, 0xfd, 0xf3, 0x4d, 0x7a, 0x08, 0xf4, 0xde, 
+0x4d, 0xc3, 0x9b, 0xcf, 0xa4, 0xde, 0x4f, 0x4d, 
+0x80, 0x10, 0x98, 0x60, 0xc4, 0x09, 0x8c, 0xfa, 
+0x93, 0x27, 0x8d, 0xf9, 0x93, 0xb7, 0x85, 0x76, 
+0xc3, 0xe6, 0x84, 0x40, 0xd9, 0x9c, 0x80, 0x4f, 
+0xef, 0x5d, 0xca, 0x7f, 0xd7, 0xc6, 0x84, 0x2d, 
+0x94, 0x01, 0xc7, 0xbf, 0xcc, 0x2c, 0xcd, 0xde, 
+0x7f, 0xc2, 0x7b, 0x73, 0xf5, 0xa2, 0x7d, 0xe5, 
+0xe6, 0x2f, 0xef, 0xfd, 0xd1, 0xf4, 0xe5, 0x9a, 
+0x2d, 0xfe, 0xce, 0x45, 0x09, 0x01, 0x20, 0x4a, 
+0x94, 0x28, 0x51, 0xfa, 0x42, 0xa0, 0xd3, 0xd0, 
+0xe6, 0x61, 0xc7, 0xdd, 0x7b, 0xe6, 0x19, 0x7b, 
+0x08, 0xf4, 0xdc, 0x46, 0x6f, 0x35, 0x0d, 0x90, 
+0x84, 0x40, 0x6f, 0x45, 0x08, 0x94, 0xce, 0x09, 
+0x94, 0x37, 0x77, 0xc0, 0x92, 0xf5, 0x00, 0x4f, 
+0x25, 0xe4, 0xff, 0x9e, 0xcd, 0x9b, 0x36, 0x2b, 
+0x7b, 0x7f, 0x97, 0x73, 0x4b, 0x4c, 0x9e, 0xfb, 
+0x0d, 0xb8, 0x85, 0xbd, 0xff, 0xde, 0xd5, 0xea, 
+0xe6, 0xbf, 0x5f, 0xec, 0xfd, 0x45, 0x09, 0x01, 
+0x20, 0x4a, 0x94, 0x28, 0x51, 0xa5, 0x0b, 0x81, 
+0xfe, 0x23, 0x5b, 0x46, 0xbe, 0x67, 0xca, 0x43, 
+0xc0, 0xa5, 0x7b, 0x26, 0xbd, 0xd9, 0xc8, 0xb3, 
+0x14, 0x21, 0x60, 0xde, 0x6e, 0xb8, 0x6c, 0x21, 
+0x60, 0x9e, 0x13, 0x08, 0x46, 0xc6, 0x01, 0xff, 
+0x37, 0xcc, 0x7c, 0xed, 0x28, 0xed, 0x01, 0xfd, 
+0xcf, 0xcd, 0x7f, 0xd6, 0xe1, 0xd5, 0x26, 0xcf, 
+0xfd, 0x5e, 0xbf, 0xeb, 0x49, 0x76, 0x87, 0x97, 
+0xa9, 0x9b, 0xff, 0x27, 0xa8, 0x06, 0xe2, 0xef, 
+0x57, 0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0x12, 
+0x55, 0x46, 0xf5, 0x7e, 0x7a, 0xfc, 0x30, 0x64, 
+0x09, 0x7c, 0x6c, 0xca, 0x43, 0x60, 0x7a, 0x97, 
+0x4d, 0xf4, 0x6a, 0x03, 0xe7, 0x32, 0x84, 0x80, 
+0x4d, 0xb9, 0x73, 0x07, 0x4a, 0xe7, 0x04, 0x9c, 
+0x94, 0x3f, 0x7b, 0xf6, 0xa0, 0x62, 0xa9, 0xf9, 
+0xc7, 0xec, 0xdc, 0x80, 0x84, 0xbf, 0x08, 0xa3, 
+0x73, 0xbf, 0xd7, 0xef, 0x7a, 0xd1, 0xb8, 0x33, 
+0x91, 0xea, 0xe6, 0xff, 0x0b, 0xea, 0x55, 0xf1, 
+0x77, 0x2a, 0x4a, 0x08, 0x00, 0x51, 0xa2, 0x44, 
+0x89, 0x2a, 0x47, 0xf5, 0x7b, 0x76, 0xb2, 0x03, 
+0x2e, 0x03, 0xbe, 0x34, 0xf2, 0x10, 0xc0, 0x05, 
+0x01, 0x2e, 0x09, 0x10, 0x3f, 0xec, 0x00, 0x11, 
+0x30, 0xbe, 0x54, 0x4e, 0xa0, 0x7c, 0xb1, 0xc4, 
+0xa6, 0x85, 0xc0, 0xeb, 0xcf, 0xbb, 0x29, 0x7f, 
+0xee, 0xdc, 0x11, 0x87, 0x68, 0x53, 0x36, 0xef, 
+0xfd, 0xe7, 0x18, 0x9d, 0xfb, 0x71, 0xf3, 0x1f, 
+0x7a, 0x25, 0x90, 0xbc, 0x76, 0xc6, 0xa9, 0x05, 
+0x40, 0x98, 0xf8, 0x7b, 0x14, 0x25, 0x04, 0x80, 
+0x28, 0x51, 0xa2, 0x44, 0x55, 0xa0, 0xba, 0xff, 
+0x79, 0xd4, 0x6f, 0x5e, 0x7a, 0xde, 0x21, 0x04, 
+0x1e, 0x02, 0xdf, 0x9b, 0xf2, 0x10, 0xc0, 0xdb, 
+0x11, 0x3f, 0x3c, 0x45, 0x11, 0x02, 0xe5, 0xe3, 
+0x04, 0xca, 0x5e, 0x0f, 0x0c, 0x68, 0xe8, 0xad, 
+0xfc, 0x79, 0xf3, 0xc7, 0x1d, 0x24, 0xe7, 0xf3, 
+0x8b, 0xf5, 0xa2, 0x7d, 0x35, 0xe7, 0x7e, 0x70, 
+0x0e, 0xbc, 0xe5, 0x8d, 0xbd, 0x7f, 0xac, 0xba, 
+0xf9, 0xef, 0x11, 0x7f, 0x7f, 0xa2, 0x84, 0x00, 
+0x10, 0x25, 0x4a, 0x94, 0xa8, 0x4a, 0x0b, 0x81, 
+0x91, 0x7f, 0x7c, 0xb5, 0xa1, 0xf3, 0x8a, 0x69, 
+0x1d, 0xe3, 0x7f, 0x36, 0xe5, 0x21, 0x30, 0xbe, 
+0xcd, 0x52, 0x34, 0x7c, 0x1b, 0x33, 0x42, 0xc0, 
+0xf2, 0x58, 0x62, 0xb5, 0x10, 0x78, 0xab, 0x71, 
+0x80, 0xf2, 0xe7, 0x84, 0x4f, 0xdf, 0x23, 0xdd, 
+0xfa, 0x1b, 0x9e, 0xfb, 0xbd, 0x76, 0xd7, 0x83, 
+0xec, 0x0f, 0xe9, 0xed, 0xfd, 0xff, 0xea, 0xbd, 
+0x23, 0xee, 0x59, 0xf1, 0xf7, 0x26, 0x4a, 0x08, 
+0x00, 0x51, 0xa2, 0x44, 0x89, 0xb2, 0x9e, 0x10, 
+0x78, 0xee, 0xcd, 0xc6, 0x9e, 0x9b, 0x4d, 0x7b, 
+0x08, 0x14, 0xd0, 0xa8, 0x56, 0x73, 0xa9, 0xf7, 
+0xd3, 0x13, 0x2c, 0x10, 0x02, 0x96, 0xc5, 0x12, 
+0x0f, 0x6d, 0x1a, 0xaa, 0xfc, 0xfe, 0x6e, 0xc1, 
+0xd9, 0x7a, 0xd1, 0xbe, 0x72, 0xf3, 0x1f, 0x7f, 
+0x5a, 0x6f, 0xef, 0xff, 0x33, 0x9a, 0xff, 0x0b, 
+0xe2, 0xef, 0x4a, 0x94, 0x10, 0x00, 0xa2, 0x44, 
+0x89, 0x12, 0x55, 0x35, 0x42, 0xa0, 0xc5, 0xa0, 
+0xa6, 0xfe, 0x7b, 0x9c, 0xbb, 0xa5, 0x1b, 0x79, 
+0x08, 0xf0, 0xdd, 0x3e, 0xce, 0x0a, 0xa9, 0xd7, 
+0x53, 0xe3, 0xb4, 0x42, 0xa0, 0xe2, 0x9c, 0xc0, 
+0x88, 0xe6, 0xb3, 0x95, 0xdf, 0xd7, 0x69, 0x6e, 
+0xaa, 0xaa, 0xf9, 0x6b, 0x88, 0xff, 0xa1, 0x97, 
+0xd5, 0x7b, 0x7f, 0xfe, 0x31, 0x2e, 0x40, 0xfc, 
+0xfd, 0x88, 0x12, 0x02, 0x40, 0x94, 0x28, 0x51, 
+0xa2, 0xaa, 0x5e, 0x08, 0x74, 0x41, 0xb3, 0x3f, 
+0x65, 0xca, 0x43, 0xc0, 0xa3, 0xe7, 0x56, 0x1a, 
+0xd4, 0xc4, 0x4f, 0x12, 0x02, 0xbd, 0x54, 0x42, 
+0xa0, 0x3c, 0x9c, 0x00, 0xbb, 0x12, 0xca, 0xbf, 
+0x9f, 0xc3, 0xf2, 0x24, 0xbd, 0x73, 0xbf, 0x37, 
+0x6f, 0x7a, 0x93, 0xdb, 0x9e, 0xd5, 0xea, 0xe6, 
+0xbf, 0x43, 0xfc, 0x9d, 0x88, 0x12, 0x02, 0x40, 
+0x94, 0x28, 0x51, 0xa2, 0xaa, 0x57, 0x08, 0xbc, 
+0x34, 0xa2, 0xe5, 0xec, 0x1b, 0xa6, 0x3c, 0x04, 
+0x30, 0x25, 0xa0, 0x37, 0x1a, 0xb9, 0x6b, 0x85, 
+0xc0, 0xb8, 0x72, 0x71, 0x02, 0xcc, 0x16, 0xc8, 
+0xbf, 0xcf, 0xd4, 0xb5, 0xf1, 0xda, 0xe6, 0xef, 
+0x45, 0xaf, 0xde, 0x75, 0x27, 0x87, 0x83, 0xcb, 
+0xd5, 0xcd, 0xff, 0x03, 0xef, 0xed, 0x71, 0x4f, 
+0x8b, 0xbf, 0x0b, 0x51, 0x42, 0x00, 0x88, 0x12, 
+0x25, 0x4a, 0x54, 0x8d, 0x78, 0x08, 0x4c, 0x18, 
+0x35, 0xa6, 0xf5, 0x82, 0x4f, 0x98, 0x07, 0x30, 
+0x14, 0x02, 0x8e, 0x5d, 0x92, 0xe9, 0x95, 0x06, 
+0x33, 0xca, 0x21, 0x04, 0x6c, 0xc8, 0xa6, 0x5d, 
+0x94, 0xf2, 0xeb, 0x6d, 0x92, 0x63, 0x95, 0xe6, 
+0x3f, 0xe1, 0x54, 0xa4, 0xae, 0xf9, 0x6f, 0x8f, 
+0xbb, 0x87, 0xea, 0x23, 0x3e, 0xff, 0xa2, 0x84, 
+0x00, 0x10, 0x25, 0x4a, 0x94, 0xa8, 0x1a, 0xac, 
+0x6e, 0x7f, 0x1e, 0xf1, 0x2b, 0x78, 0x08, 0x38, 
+0xc1, 0x43, 0xe0, 0x3f, 0xa6, 0x3c, 0x04, 0xa6, 
+0x76, 0x8c, 0xa3, 0x17, 0x9e, 0x9b, 0xa6, 0x08, 
+0x81, 0x5e, 0x66, 0x38, 0x81, 0x29, 0x1d, 0xd6, 
+0x29, 0xbf, 0x76, 0x7c, 0xd6, 0x32, 0x40, 0x7f, 
+0xee, 0x34, 0xf4, 0x12, 0xef, 0xfd, 0xd7, 0xc9, 
+0xcd, 0x9f, 0xcb, 0x4b, 0x7c, 0xde, 0x45, 0x09, 
+0x01, 0x20, 0x4a, 0x94, 0x28, 0x51, 0xb5, 0x47, 
+0x08, 0xfc, 0xf6, 0xc5, 0xe7, 0xed, 0xc2, 0xe1, 
+0x15, 0xf0, 0x43, 0x30, 0x3c, 0x03, 0xd4, 0x42, 
+0x80, 0x3d, 0x05, 0x26, 0xb5, 0x5b, 0x45, 0x7d, 
+0x11, 0x3f, 0xdc, 0xeb, 0xa9, 0xb1, 0xa5, 0x72, 
+0x02, 0xf6, 0x9d, 0x37, 0x28, 0xbf, 0x66, 0xd4, 
+0xae, 0xf9, 0xf4, 0xc6, 0x4d, 0x4f, 0x72, 0xdb, 
+0x1d, 0xab, 0x6e, 0xfe, 0x39, 0xe2, 0x73, 0x2d, 
+0x4a, 0x08, 0x00, 0x51, 0xa2, 0x44, 0x89, 0xaa, 
+0x9d, 0x42, 0xe0, 0x4f, 0xaf, 0x36, 0x74, 0x8a, 
+0x86, 0x7b, 0xe0, 0x7d, 0x43, 0x0f, 0x01, 0x9e, 
+0x10, 0x8c, 0x6b, 0xb3, 0x18, 0xa7, 0x83, 0x13, 
+0x55, 0x42, 0x40, 0xb7, 0x1e, 0x98, 0xd1, 0x35, 
+0x45, 0xf9, 0xd8, 0xa1, 0x07, 0x22, 0xc8, 0xf1, 
+0xc0, 0x72, 0x75, 0xf3, 0xbf, 0x83, 0xfa, 0xb3, 
+0xf8, 0x1c, 0x8b, 0x12, 0x02, 0x40, 0x94, 0x28, 
+0x51, 0xa2, 0x6a, 0xb7, 0x10, 0x68, 0xf0, 0x46, 
+0x63, 0x8f, 0x54, 0x53, 0x1e, 0x02, 0x9c, 0x3b, 
+0x80, 0x20, 0x22, 0xad, 0x00, 0xd0, 0x09, 0x01, 
+0xd7, 0xee, 0x59, 0xca, 0xc7, 0x4c, 0xce, 0x5f, 
+0x2a, 0x37, 0x7e, 0xae, 0x1f, 0xbd, 0xb7, 0xaf, 
+0xeb, 0x21, 0x3e, 0xaf, 0xa2, 0x84, 0x00, 0x10, 
+0x25, 0x4a, 0x94, 0xa8, 0x3a, 0x23, 0x04, 0x86, 
+0xb7, 0x1a, 0xd8, 0xd4, 0xaf, 0xc0, 0xa5, 0xbb, 
+0xb1, 0x87, 0x00, 0x5f, 0x11, 0x0c, 0x69, 0x1e, 
+0x42, 0x3d, 0x9f, 0x1a, 0x83, 0x1a, 0x4b, 0x5e, 
+0xbd, 0x76, 0x3c, 0x52, 0xfc, 0x05, 0xd2, 0x13, 
+0x55, 0x02, 0x60, 0x9d, 0x8b, 0xf8, 0x5c, 0x8a, 
+0x12, 0x02, 0x40, 0x94, 0x28, 0x51, 0xa2, 0xea, 
+0xa6, 0x10, 0xe8, 0x36, 0xa4, 0x79, 0xe8, 0x59, 
+0x0f, 0x13, 0x1e, 0x02, 0xee, 0x3d, 0x73, 0x69, 
+0x60, 0x63, 0x1f, 0x9e, 0x0c, 0x3c, 0x50, 0xc4, 
+0x41, 0x5e, 0xbc, 0xdc, 0xfc, 0xd3, 0xc5, 0xe7, 
+0x4f, 0x94, 0x10, 0x00, 0xa2, 0x44, 0x89, 0x12, 
+0x55, 0xd7, 0x3d, 0x04, 0x9e, 0x1a, 0xf9, 0x1a, 
+0x3c, 0x04, 0x6e, 0xb3, 0x83, 0xa0, 0xa1, 0x10, 
+0x50, 0xea, 0xd5, 0x12, 0xb9, 0xf9, 0xdf, 0x40, 
+0xfd, 0x51, 0x7c, 0xde, 0x44, 0x09, 0x01, 0x20, 
+0x4a, 0x94, 0x28, 0x51, 0xf5, 0xa4, 0x7a, 0x3d, 
+0x3d, 0x76, 0x1c, 0x3c, 0x04, 0x3e, 0x33, 0xe5, 
+0x21, 0x10, 0x3a, 0xa8, 0x98, 0x9b, 0xff, 0x0f, 
+0xa8, 0xae, 0xe2, 0x73, 0x25, 0x4a, 0x08, 0x00, 
+0x51, 0xa2, 0x44, 0x89, 0xaa, 0x67, 0xd5, 0xf5, 
+0x4f, 0xc3, 0xe0, 0x21, 0x60, 0xeb, 0x36, 0xa1, 
+0xed, 0xb2, 0xaf, 0x02, 0xfb, 0x1d, 0xd4, 0x45, 
+0x0f, 0x8f, 0x3e, 0xc0, 0x02, 0xc0, 0x51, 0x7c, 
+0x8e, 0x44, 0x09, 0x01, 0x20, 0x4a, 0x94, 0x28, 
+0x51, 0xf5, 0x5b, 0x08, 0xfc, 0x0e, 0x1e, 0x02, 
+0xb3, 0x9c, 0x7a, 0xa7, 0x9c, 0x0d, 0x19, 0xb3, 
+0xff, 0xa3, 0x80, 0xc8, 0xec, 0x25, 0xe2, 0xf3, 
+0x22, 0x4a, 0x08, 0x00, 0x51, 0xa2, 0x44, 0x89, 
+0x12, 0x25, 0x4a, 0x94, 0x10, 0x00, 0xa2, 0x44, 
+0x89, 0x12, 0x25, 0x4a, 0x94, 0x28, 0x21, 0x00, 
+0x44, 0x89, 0x12, 0x25, 0x4a, 0x94, 0x28, 0x51, 
+0x42, 0x00, 0x88, 0x12, 0x25, 0x4a, 0x94, 0x28, 
+0x51, 0xa2, 0x84, 0x00, 0x10, 0x25, 0x4a, 0x94, 
+0x28, 0x51, 0xa2, 0x44, 0x09, 0x01, 0x20, 0x4a, 
+0x94, 0x28, 0x51, 0xa2, 0x44, 0x89, 0x12, 0x02, 
+0x40, 0x94, 0x28, 0x51, 0xa2, 0x44, 0x89, 0x12, 
+0x25, 0x04, 0x80, 0x28, 0x51, 0xa2, 0x44, 0x89, 
+0x12, 0x25, 0xca, 0xda, 0xf5, 0xff, 0x9a, 0xae, 
+0x02, 0x82, 0x3e, 0x15, 0xc6, 0x03, 0x00, 0x00, 
+0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 
+0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/bigimgs/appicon.png b/source/bitmaps/bigimgs/appicon.png
new file mode 100644 (file)
index 0000000..d9c534d
Binary files /dev/null and b/source/bitmaps/bigimgs/appicon.png differ
diff --git a/source/bitmaps/bigimgs/appicon48.cpp b/source/bitmaps/bigimgs/appicon48.cpp
new file mode 100644 (file)
index 0000000..c3e6e76
--- /dev/null
@@ -0,0 +1,500 @@
+#include <iostream>
+
+#ifndef BIGIMGS_APPICON48_CPP
+#define BIGIMGS_APPICON48_CPP
+
+static unsigned char bigimgs_appicon48_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x30, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x57, 0x02, 0xf9, 
+0x87, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x01, 0x4c, 0x00, 0x00, 0x01, 
+0x4c, 0x01, 0x69, 0x86, 0xbd, 0x39, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x0e, 0xd0, 0x49, 
+0x44, 0x41, 0x54, 0x68, 0x81, 0xc5, 0x99, 0x79, 
+0x74, 0x94, 0xe5, 0xbd, 0xc7, 0xbf, 0xcf, 0xbb, 
+0xce, 0x9a, 0x7d, 0x25, 0x7b, 0x08, 0x49, 0x20, 
+0x92, 0x80, 0x0a, 0x68, 0x41, 0x34, 0x2a, 0xb5, 
+0x82, 0xb8, 0xa0, 0xb8, 0x51, 0xf5, 0x68, 0xed, 
+0x55, 0xeb, 0x55, 0x51, 0xeb, 0x42, 0x5d, 0x30, 
+0xea, 0xd1, 0x5a, 0x15, 0xdc, 0xea, 0xb5, 0x56, 
+0x3c, 0x5a, 0x6d, 0x45, 0xa9, 0xb7, 0xd5, 0xaa, 
+0xb7, 0xa2, 0x57, 0xac, 0x46, 0x01, 0x15, 0x30, 
+0x60, 0x08, 0xc1, 0xec, 0x21, 0x24, 0x99, 0xc9, 
+0x64, 0x26, 0x33, 0x99, 0x77, 0xde, 0xf5, 0x79, 
+0xee, 0x1f, 0xb3, 0x90, 0x60, 0x02, 0x24, 0x05, 
+0xef, 0x6f, 0xce, 0x73, 0xce, 0x9c, 0xf7, 0x24, 
+0xef, 0xfb, 0xfd, 0xfc, 0x7e, 0xbf, 0xef, 0xb3, 
+0xbc, 0x43, 0x18, 0x63, 0x98, 0x4c, 0xdc, 0x58, 
+0xf7, 0xa9, 0x2b, 0x0b, 0x5e, 0x7d, 0xf5, 0xea, 
+0xe5, 0xfa, 0xa4, 0x6e, 0x70, 0x94, 0x82, 0x9b, 
+0xec, 0x3f, 0x26, 0xa5, 0xb1, 0x17, 0x85, 0xca, 
+0xbc, 0x9d, 0x77, 0x3f, 0xfb, 0xf1, 0xda, 0xda, 
+0xba, 0x4f, 0x85, 0xa3, 0x29, 0x6a, 0x22, 0x41, 
+0x26, 0x53, 0x81, 0x5b, 0x57, 0xfd, 0xb3, 0x38, 
+0x67, 0x4e, 0xea, 0xa6, 0xfc, 0x13, 0x32, 0x8a, 
+0xb5, 0x88, 0xc9, 0xba, 0x77, 0xf4, 0x37, 0x47, 
+0xbc, 0xca, 0x7b, 0x76, 0xff, 0xd6, 0xbb, 0x56, 
+0xaf, 0x5e, 0x4d, 0x8f, 0x81, 0xce, 0x71, 0x63, 
+0x52, 0x15, 0x70, 0x14, 0xd8, 0xd7, 0x14, 0x9c, 
+0x98, 0x59, 0x4c, 0x01, 0xf0, 0x36, 0x9e, 0x14, 
+0x9e, 0x94, 0x53, 0x59, 0x54, 0x5b, 0x78, 0x3b, 
+0x2d, 0x3b, 0xed, 0xbb, 0x3b, 0x9e, 0xf9, 0xe7, 
+0x23, 0x04, 0x20, 0x47, 0x59, 0xe7, 0xb8, 0x31, 
+0xe1, 0x0a, 0xdc, 0x76, 0xff, 0x87, 0x55, 0xb9, 
+0x27, 0xa6, 0x7d, 0x98, 0x5b, 0x93, 0x96, 0xc7, 
+0x18, 0x45, 0xb2, 0xd9, 0x0f, 0x2f, 0x9f, 0x09, 
+0xca, 0x18, 0x2c, 0xc6, 0xa0, 0x85, 0x0c, 0xea, 
+0xfd, 0xce, 0xbb, 0x47, 0x1b, 0x88, 0x6c, 0x78, 
+0x7c, 0xe5, 0x39, 0x0f, 0x1c, 0x1b, 0xd9, 0x07, 
+0x62, 0xc2, 0x00, 0xf7, 0xbd, 0xf0, 0xd9, 0xfb, 
+0x95, 0x8b, 0xf3, 0x17, 0x53, 0xc6, 0x90, 0x6f, 
+0xb6, 0xe2, 0x38, 0xdb, 0x3e, 0x78, 0x34, 0x3b, 
+0xf6, 0x58, 0xf9, 0xf0, 0x90, 0x74, 0x58, 0x60, 
+0xa0, 0x8c, 0x41, 0x0b, 0xe8, 0xd4, 0xd7, 0xe4, 
+0x6d, 0xd2, 0xfd, 0xfa, 0x5f, 0xd6, 0xdc, 0xb2, 
+0xf4, 0x91, 0x63, 0xa4, 0x7f, 0x62, 0x00, 0x77, 
+0xd5, 0x7d, 0x7a, 0x52, 0xf6, 0x5c, 0xf7, 0xdf, 
+0xb3, 0x66, 0xa4, 0x64, 0x13, 0xaa, 0x62, 0x3e, 
+0xb7, 0x0d, 0x4e, 0xc1, 0x04, 0x03, 0x40, 0x29, 
+0x45, 0xa7, 0xea, 0x46, 0x13, 0x2d, 0xc4, 0x10, 
+0x71, 0xc1, 0x62, 0x51, 0x10, 0xd5, 0xa7, 0x59, 
+0xc1, 0x96, 0x81, 0x26, 0xc3, 0xaf, 0xbd, 0xba, 
+0x76, 0xe5, 0x05, 0x4f, 0xfc, 0xbf, 0x02, 0xdc, 
+0xfb, 0x52, 0xfd, 0xc7, 0xd3, 0x17, 0x4d, 0x39, 
+0xc3, 0x02, 0x45, 0xa9, 0xb5, 0x17, 0x15, 0x72, 
+0x1f, 0x00, 0x60, 0xdd, 0x2b, 0x9f, 0x40, 0x10, 
+0x38, 0xcc, 0xaa, 0x2e, 0x46, 0xf9, 0x8c, 0x22, 
+0x6c, 0x55, 0xf3, 0xd1, 0x85, 0x9c, 0x04, 0x84, 
+0xc5, 0x28, 0xd4, 0x01, 0xcd, 0x52, 0x5a, 0x07, 
+0x77, 0xd3, 0x21, 0xf3, 0x8f, 0x6b, 0x57, 0x9e, 
+0xff, 0xec, 0xd1, 0x02, 0x38, 0x62, 0x13, 0xaf, 
+0x7a, 0xf8, 0xb3, 0x9f, 0x66, 0x15, 0x27, 0xcd, 
+0xa2, 0x60, 0x90, 0x69, 0x18, 0xc5, 0x42, 0x3f, 
+0x00, 0xa0, 0xab, 0x7b, 0x00, 0x7d, 0xfd, 0x01, 
+0x44, 0x54, 0x1d, 0xbd, 0x7d, 0x01, 0x48, 0x1c, 
+0x03, 0x65, 0x04, 0x94, 0x31, 0x30, 0xc6, 0x40, 
+0xc1, 0xc0, 0x00, 0x88, 0xe9, 0x22, 0xef, 0x9a, 
+0x93, 0x35, 0x53, 0xae, 0x4e, 0x5a, 0xbb, 0xf2, 
+0xe5, 0xb7, 0x1b, 0x6e, 0x7c, 0xfa, 0x8d, 0xeb, 
+0x7e, 0x54, 0x00, 0x29, 0x57, 0xb8, 0x37, 0x6d, 
+0x9a, 0x33, 0x9d, 0x31, 0x86, 0x52, 0x74, 0x40, 
+0xe6, 0xa3, 0x95, 0x7b, 0xfa, 0xb9, 0xf7, 0x11, 
+0x0c, 0x2a, 0xe0, 0x08, 0x87, 0x45, 0x8b, 0x6a, 
+0xb0, 0x4f, 0xb5, 0xa3, 0x9b, 0x64, 0x47, 0xdb, 
+0x0a, 0x51, 0x08, 0xc6, 0x18, 0x28, 0x03, 0x28, 
+0x2c, 0x70, 0x59, 0x02, 0x2f, 0xcd, 0x4b, 0xa9, 
+0x96, 0xaa, 0x9c, 0xbf, 0xbf, 0x69, 0xdd, 0x1b, 
+0xdf, 0xfe, 0x6a, 0xed, 0xeb, 0x57, 0x1f, 0x73, 
+0x80, 0xbb, 0x1f, 0xfb, 0xec, 0xe2, 0x8c, 0xb2, 
+0xa4, 0x1a, 0x06, 0xc0, 0x45, 0x07, 0x51, 0x20, 
+0x0e, 0x02, 0x00, 0xbe, 0xd8, 0xd2, 0x8c, 0xd3, 
+0x6b, 0x8f, 0x83, 0x20, 0xf0, 0x58, 0x72, 0xf6, 
+0xf1, 0xa0, 0x94, 0xa1, 0xd1, 0xca, 0x8d, 0x09, 
+0x66, 0x60, 0x2c, 0x0a, 0x11, 0xad, 0x02, 0x05, 
+0x85, 0x15, 0x1b, 0x14, 0xc8, 0xe5, 0x79, 0x72, 
+0x92, 0xa3, 0x86, 0x54, 0x89, 0x2f, 0xde, 0xb0, 
+0xee, 0xd5, 0xed, 0xbf, 0x5a, 0xbb, 0xee, 0xf2, 
+0x63, 0x06, 0x60, 0xcf, 0x12, 0x6f, 0x4b, 0x2d, 
+0xb6, 0x27, 0x51, 0xc6, 0x30, 0x95, 0x74, 0x81, 
+0x27, 0xd1, 0xb6, 0x08, 0x05, 0x15, 0x6c, 0xfd, 
+0xaa, 0x05, 0x0e, 0x87, 0x8c, 0x9c, 0xdc, 0x54, 
+0xb4, 0x6b, 0x6e, 0x78, 0x49, 0x7a, 0x4c, 0x70, 
+0xec, 0xc3, 0x10, 0x6b, 0xa5, 0x98, 0x78, 0x42, 
+0xc1, 0x62, 0x10, 0x14, 0x16, 0xac, 0x3c, 0x08, 
+0xe6, 0xc9, 0xfc, 0x6c, 0x63, 0x3a, 0x79, 0xf5, 
+0x97, 0x2f, 0xfd, 0x71, 0xdb, 0xf5, 0xcf, 0xbe, 
+0xb4, 0x6c, 0x22, 0x00, 0x87, 0x35, 0xf1, 0xdd, 
+0x4f, 0x7c, 0x71, 0x5d, 0xe1, 0x4f, 0x92, 0xd7, 
+0xb8, 0xf2, 0x6c, 0x8e, 0x34, 0xb3, 0x0f, 0x73, 
+0xe5, 0x66, 0x10, 0x42, 0xf0, 0xd1, 0x27, 0x3b, 
+0xf1, 0xee, 0x3f, 0xbe, 0x46, 0x7e, 0x5e, 0x3a, 
+0x6e, 0xbb, 0xf5, 0x5c, 0x98, 0x0c, 0xf8, 0x50, 
+0xa9, 0x84, 0x9f, 0xb8, 0x12, 0xc6, 0xa5, 0x31, 
+0x0f, 0x58, 0xcc, 0x82, 0x09, 0x03, 0x16, 0x0c, 
+0x58, 0xc4, 0x84, 0x09, 0x1d, 0x16, 0x4c, 0x58, 
+0x30, 0xa2, 0xd7, 0x89, 0x91, 0xf8, 0xce, 0x77, 
+0x32, 0x43, 0xe8, 0xb1, 0x76, 0xb2, 0x30, 0x7d, 
+0xe0, 0xe5, 0x5b, 0x6e, 0x79, 0xef, 0x70, 0x00, 
+0x87, 0xad, 0x80, 0x3d, 0x5b, 0xf8, 0x0f, 0x77, 
+0x9e, 0xdd, 0x01, 0xc6, 0x50, 0xca, 0x75, 0x81, 
+0x10, 0x02, 0x55, 0x33, 0xd0, 0xde, 0xe1, 0xc1, 
+0x15, 0x3f, 0x3f, 0x15, 0xd3, 0x2b, 0xf3, 0xc1, 
+0x71, 0x04, 0xdf, 0x6b, 0xa9, 0x08, 0x10, 0xd7, 
+0x28, 0xe3, 0xb2, 0xd8, 0x9a, 0x10, 0xcf, 0x36, 
+0x25, 0x34, 0xd1, 0x42, 0x07, 0x2a, 0x62, 0x8d, 
+0x68, 0x2d, 0x0b, 0x6a, 0x91, 0x26, 0x0e, 0xcd, 
+0x8f, 0x9c, 0x10, 0x29, 0x33, 0xdf, 0xbe, 0xf2, 
+0xa5, 0xb5, 0x5f, 0x5f, 0xf5, 0xec, 0x13, 0x67, 
+0x4e, 0x1a, 0xe0, 0x9e, 0xa7, 0x37, 0xdf, 0x91, 
+0x5d, 0xe1, 0xae, 0x62, 0x8c, 0x21, 0xd7, 0xea, 
+0x46, 0xa6, 0xa4, 0x02, 0x00, 0xfe, 0xf6, 0xce, 
+0x56, 0x6c, 0xda, 0xf4, 0x1d, 0x36, 0x7e, 0xd4, 
+0x80, 0x25, 0x4b, 0x4e, 0x40, 0xd8, 0x24, 0x68, 
+0xa2, 0xf9, 0xe3, 0x1a, 0x97, 0xc2, 0xfc, 0x81, 
+0xd0, 0xb1, 0xc4, 0xc7, 0xaf, 0x59, 0xb0, 0x10, 
+0x2e, 0x0d, 0x4b, 0xbe, 0xf9, 0x83, 0x27, 0x2a, 
+0x85, 0xea, 0x07, 0x2b, 0x5e, 0x7a, 0x6c, 0xeb, 
+0xe5, 0xcf, 0x3f, 0xb6, 0x60, 0xc2, 0x00, 0x72, 
+0xba, 0x70, 0xa5, 0x33, 0x5b, 0x96, 0x09, 0x33, 
+0x50, 0xc2, 0xf7, 0x00, 0x00, 0x82, 0xa1, 0x08, 
+0xfa, 0x3d, 0x43, 0x98, 0x33, 0xa7, 0x0c, 0x0b, 
+0x17, 0xcc, 0x00, 0x00, 0xec, 0x55, 0xd3, 0x10, 
+0x81, 0x9c, 0x30, 0x2e, 0x1b, 0x65, 0xdc, 0x31, 
+0xb2, 0x3e, 0x81, 0x11, 0x28, 0x1f, 0x12, 0x7b, 
+0x17, 0xf4, 0xce, 0x55, 0xf2, 0x42, 0xff, 0x7b, 
+0xe9, 0x8b, 0x0f, 0x6d, 0xb9, 0xf8, 0x85, 0xba, 
+0xb9, 0x47, 0x04, 0x70, 0xcf, 0x73, 0x5b, 0x1e, 
+0xce, 0x99, 0xe1, 0xae, 0x64, 0x8c, 0xa1, 0x80, 
+0x76, 0x22, 0x59, 0x34, 0xb0, 0xf1, 0xe3, 0x06, 
+0x3c, 0xf2, 0xd8, 0xdb, 0xe8, 0xee, 0x1e, 0x40, 
+0x46, 0xba, 0x1b, 0xf3, 0xe7, 0x57, 0xc2, 0xaf, 
+0x71, 0x68, 0x46, 0xc1, 0x28, 0xe3, 0xd2, 0x51, 
+0xc6, 0x35, 0x47, 0x18, 0xf7, 0xf0, 0xd9, 0x1f, 
+0xef, 0x9a, 0xaf, 0xc2, 0x27, 0x75, 0x2e, 0xec, 
+0x98, 0x17, 0xce, 0x1e, 0xfe, 0xec, 0x92, 0xe7, 
+0x1f, 0x78, 0xed, 0x90, 0x00, 0x04, 0x20, 0xb6, 
+0x34, 0x61, 0xb9, 0x2d, 0x5d, 0x10, 0x04, 0x16, 
+0x41, 0xa9, 0x18, 0x5d, 0x71, 0x2b, 0xca, 0xa7, 
+0x60, 0x5f, 0xcf, 0x20, 0x76, 0x37, 0xed, 0xc3, 
+0x29, 0x0b, 0xa6, 0x03, 0x60, 0x68, 0x36, 0x32, 
+0xa1, 0x83, 0x8f, 0x4e, 0x99, 0xf1, 0xe9, 0x73, 
+0x44, 0xee, 0x8f, 0x28, 0xd3, 0xd4, 0x02, 0x8b, 
+0x18, 0x87, 0x00, 0xa2, 0xd1, 0x44, 0x80, 0x82, 
+0xf2, 0x16, 0x4f, 0x4c, 0xfe, 0xfd, 0xb8, 0xd6, 
+0x31, 0x0f, 0x22, 0xf7, 0x3c, 0xbf, 0xf5, 0xa9, 
+0xdc, 0x53, 0x52, 0xa6, 0x31, 0x06, 0x94, 0xb0, 
+0x0e, 0xd8, 0x79, 0x8a, 0xbf, 0xbc, 0x59, 0x8f, 
+0xb6, 0xb6, 0x3e, 0xa4, 0xa5, 0xb9, 0x30, 0x25, 
+0x27, 0x15, 0x85, 0x85, 0x99, 0xe8, 0x8f, 0x08, 
+0x68, 0x41, 0xde, 0xb8, 0xc6, 0xb5, 0x62, 0xd9, 
+0xa7, 0x88, 0xf6, 0x75, 0x5c, 0x18, 0xa3, 0x16, 
+0xec, 0x3d, 0x3a, 0x84, 0xd6, 0x30, 0x48, 0x73, 
+0x08, 0x74, 0xf7, 0x10, 0xc2, 0x50, 0x31, 0xf0, 
+0x4c, 0xee, 0xd8, 0x55, 0x18, 0x31, 0x92, 0xf6, 
+0xbb, 0x9a, 0xd6, 0xdf, 0x7c, 0xdf, 0xfa, 0x71, 
+0x01, 0xea, 0xea, 0x36, 0x48, 0xb6, 0xca, 0x92, 
+0xa5, 0x92, 0x9b, 0x27, 0x76, 0x16, 0x44, 0xa1, 
+0xe0, 0x05, 0x00, 0x4c, 0x2d, 0xcd, 0xc6, 0xe7, 
+0xf5, 0x4d, 0xf8, 0xbe, 0xa5, 0x17, 0x1b, 0xd6, 
+0xdf, 0x0e, 0xc6, 0x28, 0x9a, 0xcc, 0x1c, 0x50, 
+0x42, 0x40, 0x41, 0xc7, 0x30, 0xee, 0x81, 0x0c, 
+0x12, 0xcb, 0x42, 0x8a, 0x87, 0xc2, 0xb9, 0xcf, 
+0x84, 0xd4, 0xa1, 0x82, 0xb4, 0x87, 0xa1, 0x86, 
+0x14, 0x28, 0x91, 0x30, 0x20, 0x02, 0xc3, 0x20, 
+0x30, 0xbc, 0x0a, 0xf8, 0xef, 0x55, 0x18, 0xe5, 
+0x18, 0x37, 0xfb, 0xd9, 0xbb, 0xb2, 0x75, 0x66, 
+0x88, 0x37, 0x8d, 0xd4, 0xfb, 0x03, 0x00, 0x23, 
+0xab, 0xf0, 0x85, 0x82, 0xea, 0xa4, 0x12, 0x06, 
+0x86, 0x12, 0xd6, 0x0e, 0x89, 0x07, 0x3a, 0xbb, 
+0x06, 0x90, 0x99, 0x99, 0x04, 0x41, 0xe4, 0xb1, 
+0xe8, 0x8c, 0x6a, 0x24, 0x25, 0x39, 0xd0, 0x15, 
+0x91, 0xd1, 0x4d, 0xb2, 0x0f, 0x69, 0x5c, 0x06, 
+0x8a, 0x79, 0x9f, 0x8b, 0x70, 0x74, 0x53, 0x28, 
+0x61, 0x0d, 0x4a, 0x44, 0x87, 0xa2, 0x6a, 0x50, 
+0x22, 0x1a, 0x74, 0x43, 0x83, 0x66, 0xe8, 0x38, 
+0xef, 0x86, 0xa5, 0x18, 0x36, 0x87, 0xf1, 0xe9, 
+0x9f, 0xff, 0x85, 0xae, 0x1d, 0x06, 0x94, 0x72, 
+0x6e, 0x8c, 0xcc, 0x53, 0x30, 0x4a, 0xe1, 0xf4, 
+0xb8, 0xbe, 0x7d, 0xf3, 0xa6, 0xfb, 0xfe, 0x35, 
+0x2e, 0xc0, 0x1d, 0x4f, 0xec, 0x74, 0xa6, 0x15, 
+0x49, 0x8b, 0x04, 0x3b, 0x07, 0xd1, 0x0a, 0x21, 
+0x5f, 0xf2, 0x43, 0x37, 0x19, 0x7e, 0x79, 0xfd, 
+0x7f, 0xa1, 0xa4, 0x34, 0x0b, 0xa1, 0x90, 0x8a, 
+0x87, 0xeb, 0x2e, 0x83, 0x45, 0x29, 0x76, 0x5b, 
+0x79, 0x87, 0x30, 0xee, 0x81, 0x0c, 0x4a, 0x7e, 
+0x06, 0x5d, 0xd5, 0xa1, 0x1b, 0x31, 0xd1, 0xba, 
+0x06, 0x4d, 0xd7, 0x91, 0x32, 0x25, 0x05, 0x6e, 
+0xe6, 0x46, 0x60, 0x28, 0x00, 0x6f, 0x60, 0x00, 
+0xc3, 0x3d, 0x0a, 0x5c, 0xaa, 0x08, 0xef, 0x25, 
+0x63, 0x65, 0xdf, 0x42, 0xce, 0xce, 0x29, 0x0a, 
+0x81, 0x74, 0xc5, 0xc1, 0x09, 0x1f, 0x65, 0x62, 
+0xbb, 0xdb, 0x78, 0x39, 0xbb, 0xc6, 0x99, 0x4f, 
+0xc1, 0x10, 0xe1, 0x1c, 0xf8, 0x4e, 0xcb, 0x83, 
+0x01, 0x11, 0xcf, 0x3d, 0x73, 0x2d, 0x1a, 0x1a, 
+0x3a, 0xf1, 0xec, 0xda, 0x6b, 0xe0, 0x72, 0xc9, 
+0x68, 0x8b, 0xb8, 0xe1, 0x41, 0xea, 0x11, 0x19, 
+0x77, 0x7f, 0x96, 0x1a, 0x15, 0xaf, 0xeb, 0xd0, 
+0x74, 0x1d, 0xba, 0xae, 0x43, 0x37, 0x74, 0x14, 
+0x56, 0x15, 0xa0, 0xfc, 0xe4, 0x72, 0x0c, 0xfa, 
+0x07, 0xb1, 0xfd, 0xad, 0x1d, 0xc0, 0x00, 0x90, 
+0xd4, 0x28, 0x82, 0x0b, 0x1f, 0x3c, 0xed, 0x52, 
+0x10, 0x03, 0xc8, 0x0b, 0x64, 0xed, 0x59, 0x7f, 
+0xe3, 0xaa, 0xbd, 0xe3, 0x02, 0xdc, 0x51, 0xb3, 
+0xd1, 0x29, 0x76, 0xb3, 0x85, 0x84, 0x90, 0x44, 
+0x2f, 0xb7, 0x71, 0x25, 0xf8, 0xc4, 0x98, 0x05, 
+0x2b, 0xaf, 0x0a, 0xaf, 0xfd, 0x69, 0x25, 0x78, 
+0x91, 0x87, 0x66, 0x32, 0x34, 0xd2, 0xfc, 0x11, 
+0x2d, 0x33, 0xd6, 0x8a, 0x7b, 0x00, 0xc0, 0x93, 
+0x63, 0x40, 0x8b, 0x8b, 0x8f, 0x55, 0x41, 0xd7, 
+0x35, 0x84, 0x86, 0x86, 0xd1, 0xf2, 0x5d, 0x0b, 
+0x3a, 0x1b, 0xbb, 0x60, 0xf6, 0x5b, 0x90, 0x4c, 
+0x09, 0xb2, 0x21, 0x21, 0x65, 0x9b, 0x30, 0x22, 
+0x01, 0xd1, 0xec, 0x9f, 0xb0, 0xa3, 0x26, 0xf2, 
+0xd0, 0xf2, 0xab, 0x67, 0xb6, 0xb7, 0xb7, 0xaf, 
+0xaf, 0xaf, 0xaf, 0x2f, 0x1d, 0x13, 0xc0, 0x30, 
+0x49, 0x5d, 0x68, 0xbd, 0x96, 0xd3, 0x7e, 0x4d, 
+0xd0, 0x13, 0xf8, 0x58, 0x35, 0xe2, 0x3b, 0x4a, 
+0x15, 0x12, 0x76, 0xb2, 0x69, 0xd8, 0x93, 0xb9, 
+0x10, 0x5e, 0x3e, 0x13, 0xbb, 0xd4, 0x2c, 0x04, 
+0x63, 0x5b, 0x86, 0x43, 0x19, 0x37, 0x3e, 0x06, 
+0xa6, 0x58, 0xd0, 0xac, 0x78, 0xfb, 0xe8, 0x89, 
+0x91, 0x51, 0x9c, 0x8e, 0xac, 0x8a, 0x4c, 0xec, 
+0xff, 0xba, 0x0f, 0x92, 0x25, 0x45, 0x87, 0x29, 
+0x21, 0x73, 0xb3, 0x63, 0x54, 0xf6, 0x05, 0x45, 
+0x40, 0xb5, 0x7d, 0x9a, 0xe4, 0x76, 0x39, 0xc4, 
+0x92, 0x92, 0x92, 0x4b, 0x8a, 0x8a, 0x8a, 0xb6, 
+0xbd, 0xfb, 0xee, 0xbb, 0x4b, 0x46, 0x01, 0x5c, 
+0x59, 0xb3, 0xd1, 0x19, 0xd1, 0x02, 0x17, 0x86, 
+0x4c, 0x0f, 0x82, 0x3d, 0x83, 0x59, 0xfd, 0x8f, 
+0x85, 0xc5, 0x9e, 0xff, 0x54, 0xf6, 0x2b, 0xdb, 
+0x75, 0x1a, 0xdf, 0x0e, 0x07, 0x89, 0x1b, 0x9b, 
+0x69, 0x25, 0x9a, 0x50, 0x14, 0x6b, 0x9b, 0xb1, 
+0x8d, 0x3b, 0x72, 0xba, 0xb4, 0x60, 0xc1, 0x90, 
+0x2c, 0xf8, 0x33, 0xad, 0x44, 0xfb, 0x50, 0x58, 
+0xb8, 0xfc, 0xbe, 0x4b, 0xd1, 0xdf, 0xd7, 0x8f, 
+0x6f, 0xff, 0xd1, 0x00, 0x2e, 0xc4, 0x41, 0x34, 
+0xa5, 0xe8, 0xb0, 0x24, 0xe4, 0x7e, 0x99, 0x3c, 
+0x2a, 0x01, 0x73, 0x1a, 0x67, 0xab, 0xd7, 0x9c, 
+0x77, 0x16, 0x2f, 0xcb, 0x32, 0x34, 0x4d, 0x43, 
+0x63, 0x43, 0x43, 0x8a, 0x61, 0x18, 0x15, 0xa3, 
+0x00, 0x64, 0x33, 0xf0, 0x6b, 0x5f, 0xb8, 0xb3, 
+0x38, 0x64, 0x78, 0x10, 0x32, 0x3d, 0x08, 0x9a, 
+0x1e, 0x04, 0x9b, 0x03, 0x53, 0xbc, 0xf7, 0x6a, 
+0xd4, 0x7b, 0xbf, 0xda, 0xab, 0xb5, 0x9a, 0xb1, 
+0x3e, 0xc7, 0x61, 0x8d, 0x3b, 0xd6, 0x8a, 0x3b, 
+0x58, 0x44, 0xa1, 0x1b, 0x1a, 0x72, 0xcb, 0x73, 
+0xc0, 0x49, 0x1c, 0x4c, 0xce, 0x80, 0xc5, 0x59, 
+0x18, 0x6e, 0x09, 0x43, 0x32, 0xa5, 0x51, 0x15, 
+0x48, 0xe9, 0x71, 0x22, 0xa9, 0xdd, 0x06, 0x0a, 
+0x0b, 0xb6, 0x41, 0x3b, 0x4e, 0xca, 0xa8, 0x12, 
+0x25, 0x49, 0x02, 0x00, 0x34, 0x36, 0x36, 0xa2, 
+0x74, 0xea, 0x54, 0x78, 0xd2, 0xec, 0xbf, 0xbe, 
+0x7e, 0xe3, 0x2b, 0x8b, 0x12, 0xb3, 0x10, 0x67, 
+0x70, 0x85, 0x29, 0xf6, 0xfc, 0xa6, 0xb0, 0xe1, 
+0x23, 0x41, 0xd3, 0x53, 0x69, 0xe3, 0x14, 0xe8, 
+0x9c, 0x02, 0x1b, 0x53, 0x04, 0x79, 0xab, 0x2b, 
+0xd7, 0xd8, 0xee, 0x88, 0x88, 0xa7, 0x73, 0xc3, 
+0xf6, 0xcb, 0xb9, 0x4c, 0xa4, 0x93, 0x09, 0xaf, 
+0xb8, 0x43, 0xa5, 0x40, 0x92, 0xc8, 0xa1, 0xb8, 
+0xa6, 0x18, 0x25, 0x73, 0x8a, 0xb1, 0xf9, 0x83, 
+0x2d, 0x68, 0xfd, 0xb4, 0x1d, 0xa2, 0x2e, 0x26, 
+0x84, 0x27, 0x40, 0x4c, 0x09, 0xe9, 0xdf, 0x3b, 
+0xe1, 0x2d, 0xf5, 0x61, 0x5e, 0xcb, 0xec, 0xc8, 
+0x65, 0x57, 0xd6, 0xda, 0x01, 0xa0, 0xb9, 0xb9, 
+0x19, 0x02, 0x00, 0x45, 0x53, 0xd1, 0x61, 0x0f, 
+0x32, 0x75, 0xd8, 0xd8, 0x9f, 0x00, 0xd0, 0xa9, 
+0xc6, 0xe9, 0x5a, 0x68, 0xba, 0xcc, 0x39, 0x98, 
+0xc3, 0x96, 0xbc, 0x23, 0xac, 0xfb, 0x32, 0x74, 
+0x53, 0x29, 0xd0, 0xa9, 0x02, 0x1b, 0xaf, 0x40, 
+0xa7, 0x2e, 0xbb, 0xed, 0x43, 0x97, 0xdd, 0xaa, 
+0x77, 0x06, 0xf8, 0xa5, 0x94, 0x09, 0x17, 0x20, 
+0x95, 0xd9, 0xc7, 0x37, 0xee, 0xc1, 0x7e, 0x50, 
+0xa6, 0x10, 0x98, 0x0e, 0x86, 0xd6, 0x9d, 0xad, 
+0x28, 0x9a, 0x53, 0x80, 0xf6, 0xaf, 0x3b, 0x81, 
+0x21, 0x02, 0xd1, 0x92, 0x21, 0x9a, 0x12, 0x58, 
+0x92, 0x00, 0x6f, 0x95, 0x8a, 0xc1, 0x9a, 0x00, 
+0xfa, 0x8e, 0x0f, 0xa0, 0x7f, 0xda, 0x20, 0x52, 
+0xf6, 0xa7, 0xe0, 0x94, 0xfc, 0xd9, 0x32, 0x01, 
+0x41, 0x7f, 0x7f, 0x3f, 0x3a, 0x5b, 0x5b, 0x41, 
+0x18, 0x43, 0x53, 0x9a, 0x65, 0x0e, 0x84, 0x87, 
+0x56, 0xbd, 0xb2, 0xf4, 0xba, 0xc6, 0x04, 0x80, 
+0xc1, 0x22, 0x02, 0x25, 0x2a, 0xdc, 0xb6, 0x64, 
+0xe2, 0x53, 0xfc, 0xb3, 0x65, 0x3e, 0x49, 0x27, 
+0x22, 0xf7, 0x95, 0xa2, 0xfb, 0xca, 0x74, 0x33, 
+0x92, 0x96, 0xa8, 0xc8, 0xb0, 0x2b, 0x45, 0x7e, 
+0xd3, 0x0d, 0xf1, 0x23, 0xb9, 0x9f, 0xbb, 0x88, 
+0x3a, 0x71, 0x16, 0x75, 0x51, 0xfe, 0x08, 0x36, 
+0x66, 0xc4, 0x42, 0x6f, 0xa6, 0x82, 0x9e, 0xcf, 
+0xba, 0xd0, 0xb6, 0xb7, 0x0d, 0x96, 0xcc, 0x41, 
+0x5b, 0x28, 0x22, 0x30, 0x83, 0x20, 0x38, 0x73, 
+0x18, 0xa1, 0xc2, 0x81, 0x03, 0x07, 0x1e, 0x18, 
+0xa0, 0xc4, 0xc2, 0xdc, 0x7d, 0xc7, 0x47, 0xce, 
+0xbb, 0xe2, 0x24, 0xbb, 0x61, 0x18, 0x08, 0xf8, 
+0xfd, 0x98, 0xbf, 0x70, 0x21, 0xbe, 0xec, 0xda, 
+0x8d, 0x6f, 0x3d, 0xdb, 0x5f, 0x78, 0xf9, 0xcc, 
+0xeb, 0xff, 0x34, 0x6a, 0x21, 0xb3, 0xa8, 0xca, 
+0xbb, 0x25, 0x27, 0x92, 0xe5, 0x24, 0x04, 0x35, 
+0x3f, 0x64, 0x81, 0x48, 0x21, 0x6d, 0x78, 0xae, 
+0x43, 0x48, 0x1d, 0xa2, 0x1c, 0xfd, 0x6a, 0x58, 
+0x1b, 0xac, 0xd6, 0xa9, 0x62, 0x8b, 0x56, 0x24, 
+0x02, 0x79, 0xc0, 0x95, 0x6d, 0x7b, 0xd1, 0x05, 
+0xee, 0x03, 0x61, 0x9f, 0xb5, 0xc2, 0xc8, 0xa2, 
+0x3f, 0xb1, 0xa4, 0xc3, 0x6d, 0xd8, 0x86, 0x96, 
+0xba, 0xc0, 0x2a, 0x28, 0x7c, 0x15, 0x12, 0xb4, 
+0x2c, 0x8a, 0xe8, 0x09, 0x4c, 0x87, 0x45, 0xcc, 
+0xc4, 0x74, 0x19, 0x1f, 0xb9, 0xed, 0x39, 0x74, 
+0x51, 0xc5, 0x5c, 0x19, 0x00, 0xea, 0x3f, 0xff, 
+0x1c, 0xbd, 0x1d, 0x1d, 0xd8, 0x93, 0x9b, 0x89, 
+0xbf, 0xb9, 0xf7, 0x6d, 0x52, 0xbc, 0x19, 0xb7, 
+0xff, 0x60, 0x25, 0x66, 0xc4, 0x6c, 0xec, 0xd5, 
+0xfd, 0xe1, 0x9e, 0x70, 0x87, 0x33, 0xdf, 0x55, 
+0x82, 0x3c, 0x57, 0x1e, 0x06, 0x78, 0x0f, 0x28, 
+0x23, 0xc9, 0x03, 0x8a, 0x6f, 0xae, 0x4b, 0x4a, 
+0xd9, 0x6f, 0xc0, 0xec, 0x0b, 0x69, 0xde, 0x59, 
+0x3a, 0x55, 0x38, 0x1b, 0x1f, 0xab, 0x48, 0x97, 
+0x2b, 0x5f, 0xfe, 0x9d, 0x9b, 0x92, 0xe9, 0x42, 
+0x97, 0x79, 0xd5, 0x50, 0x1e, 0xad, 0xb4, 0xf8, 
+0xf1, 0xda, 0xc9, 0xcc, 0xe6, 0x60, 0x65, 0x3b, 
+0xa3, 0x19, 0x8e, 0x6f, 0x35, 0xc6, 0x39, 0xa1, 
+0x9d, 0xe0, 0x9b, 0xa5, 0xd5, 0xfe, 0xec, 0x38, 
+0x7b, 0x7b, 0x5b, 0x1b, 0xca, 0xca, 0xca, 0x50, 
+0x50, 0x54, 0x88, 0x3f, 0xf8, 0xea, 0xbb, 0xf9, 
+0x3e, 0xdc, 0xf0, 0xd6, 0xf2, 0xd1, 0xaf, 0xf3, 
+0x13, 0x67, 0xe2, 0x0b, 0x0a, 0x1f, 0x9f, 0x2a, 
+0xf2, 0xfc, 0x13, 0x61, 0x2d, 0xb0, 0x38, 0x45, 
+0x48, 0x96, 0x08, 0x38, 0x14, 0x27, 0x4d, 0x83, 
+0x5f, 0xf5, 0xc3, 0xab, 0x0c, 0x80, 0x80, 0x87, 
+0x4d, 0x74, 0xb5, 0xe8, 0x88, 0x68, 0xa6, 0xa1, 
+0x55, 0xd9, 0x38, 0x37, 0x64, 0xce, 0x05, 0x1b, 
+0xef, 0x82, 0xcc, 0xb9, 0x21, 0x0b, 0x2e, 0x55, 
+0x9f, 0x17, 0xf6, 0x0e, 0xaf, 0xe8, 0x2f, 0x30, 
+0x0a, 0x22, 0x48, 0x9c, 0x77, 0x63, 0xc3, 0x24, 
+0x23, 0xbe, 0x27, 0xce, 0xc1, 0x66, 0xe2, 0x6f, 
+0xe2, 0xd7, 0x0a, 0xf7, 0x14, 0x9a, 0xf7, 0x4c, 
+0xfb, 0x05, 0x5f, 0x98, 0x99, 0x44, 0x9a, 0x76, 
+0xee, 0x84, 0x28, 0x8a, 0xd8, 0x62, 0xf7, 0x18, 
+0xdb, 0x03, 0xfb, 0xae, 0x7a, 0x6d, 0xd1, 0xca, 
+0x37, 0x0e, 0x5e, 0x89, 0x7f, 0x70, 0xa8, 0xbf, 
+0xb8, 0x74, 0xed, 0x5c, 0x93, 0x1a, 0x8f, 0x44, 
+0x54, 0x7f, 0x2d, 0xcf, 0x38, 0x2e, 0x45, 0xce, 
+0x40, 0x49, 0x72, 0x39, 0xf6, 0x0c, 0x36, 0x82, 
+0x51, 0x02, 0x9e, 0x93, 0x60, 0x93, 0x9c, 0xbb, 
+0x54, 0x23, 0xec, 0x06, 0x45, 0xf1, 0x48, 0x08, 
+0x1b, 0xe7, 0x82, 0x24, 0x3b, 0x86, 0x86, 0x17, 
+0x79, 0x95, 0xa1, 0x4b, 0xf6, 0xe7, 0xea, 0x29, 
+0x51, 0x10, 0x8b, 0x8c, 0x84, 0x31, 0x13, 0xad, 
+0x33, 0x12, 0x32, 0x0e, 0xb0, 0x6c, 0xdb, 0xb9, 
+0xea, 0xdd, 0x17, 0x2f, 0xb7, 0x7d, 0xb5, 0x79, 
+0x33, 0x38, 0x42, 0xd0, 0x25, 0x2a, 0x78, 0x37, 
+0xbc, 0xfb, 0xa9, 0xd7, 0x4f, 0x5f, 0x79, 0xeb, 
+0xc1, 0xe2, 0xc7, 0x04, 0x88, 0xc7, 0x45, 0x53, 
+0xd7, 0x2c, 0xb6, 0x4c, 0x75, 0x75, 0x58, 0xf5, 
+0xcf, 0x75, 0xf2, 0x2e, 0xa4, 0xca, 0xe9, 0xa0, 
+0x8c, 0x80, 0x27, 0x22, 0xfc, 0x11, 0x3f, 0x44, 
+0xde, 0x66, 0x8a, 0xa2, 0xbd, 0x41, 0x37, 0xc3, 
+0x85, 0x1c, 0x15, 0x32, 0x6d, 0x7c, 0xac, 0x22, 
+0x9c, 0x0b, 0x32, 0xef, 0x02, 0xef, 0x92, 0x3d, 
+0xfe, 0x0b, 0x3a, 0xb9, 0xc1, 0xf3, 0xba, 0x32, 
+0x4c, 0x59, 0x3b, 0x48, 0xa8, 0x39, 0x66, 0x85, 
+0xca, 0x77, 0x55, 0xe8, 0x0f, 0x9e, 0x78, 0xad, 
+0xa4, 0x85, 0x7c, 0x48, 0x4f, 0x4d, 0xc5, 0xbe, 
+0xa1, 0x01, 0x3c, 0x35, 0xb8, 0xe9, 0xe3, 0x72, 
+0x2b, 0x78, 0xf6, 0xea, 0xd3, 0x56, 0x9b, 0x13, 
+0x02, 0x88, 0xc7, 0xb2, 0xd2, 0x35, 0x57, 0x5a, 
+0x66, 0xe4, 0x2e, 0x55, 0xf3, 0xcf, 0x70, 0x8b, 
+0x29, 0x48, 0x93, 0x33, 0x91, 0x2c, 0xa5, 0xa1, 
+0x25, 0xf0, 0x3d, 0x08, 0x38, 0x88, 0x9c, 0x3d, 
+0x2c, 0x08, 0x72, 0xa3, 0x61, 0x2a, 0x55, 0x02, 
+0x6c, 0xce, 0x03, 0x15, 0x89, 0x56, 0x85, 0x65, 
+0xb0, 0x6e, 0xcf, 0x8a, 0xe6, 0xe4, 0x81, 0xd3, 
+0x3b, 0x93, 0x2c, 0xce, 0x18, 0x33, 0xfb, 0x16, 
+0x0c, 0x50, 0x66, 0xe1, 0xe2, 0x86, 0x0b, 0xb5, 
+0xf3, 0xaa, 0xa7, 0xcb, 0xbb, 0xb6, 0x6d, 0x83, 
+0xec, 0x76, 0x61, 0x63, 0x4e, 0x4f, 0x57, 0xc4, 
+0x67, 0xd6, 0xae, 0x5b, 0xb2, 0xb2, 0x6d, 0x3c, 
+0x7d, 0x47, 0xfc, 0x72, 0xf7, 0xc2, 0xd2, 0xdf, 
+0xdd, 0xae, 0xeb, 0x91, 0x9b, 0x42, 0xaa, 0xa7, 
+0x28, 0x5d, 0xce, 0x42, 0x8a, 0x94, 0x01, 0x9e, 
+0x13, 0xb1, 0x7f, 0xb8, 0x07, 0x02, 0x91, 0x20, 
+0x8b, 0x2e, 0x0f, 0xcf, 0x0b, 0xdd, 0x86, 0xae, 
+0xcd, 0x92, 0x88, 0x83, 0x4f, 0x78, 0x23, 0x06, 
+0xa4, 0x15, 0x29, 0x6d, 0xdd, 0x57, 0xed, 0xc8, 
+0xf3, 0xcf, 0xe9, 0x91, 0x47, 0x55, 0x23, 0xd6, 
+0x3a, 0xd5, 0xdb, 0x6b, 0xd4, 0xdf, 0xcc, 0xbb, 
+0xd4, 0xe6, 0x94, 0x05, 0xd8, 0x1d, 0x0e, 0xac, 
+0xeb, 0xf8, 0x48, 0xdf, 0xe6, 0xed, 0x58, 0xf1, 
+0xc6, 0x4f, 0xef, 0xfc, 0xeb, 0xa1, 0x74, 0x4d, 
+0xe8, 0xed, 0x34, 0x21, 0x1b, 0xf8, 0x65, 0xc5, 
+0xed, 0x0f, 0xa9, 0x46, 0xe8, 0x9a, 0x50, 0xc4, 
+0x9b, 0x9d, 0x69, 0x9b, 0x82, 0x21, 0x2d, 0x00, 
+0x81, 0x48, 0xe0, 0x89, 0x04, 0x81, 0x93, 0x60, 
+0x97, 0x92, 0x3b, 0x00, 0x12, 0xb2, 0x0c, 0x63, 
+0xe6, 0x81, 0x4a, 0xc4, 0xaa, 0xc2, 0xbb, 0x8d, 
+0xe0, 0xcc, 0xfe, 0xae, 0xb6, 0xab, 0xb7, 0x14, 
+0x0f, 0x95, 0xf5, 0xf3, 0xf1, 0xbe, 0x27, 0x3a, 
+0xc3, 0xe5, 0x4d, 0x97, 0xe8, 0x35, 0x69, 0x0e, 
+0x49, 0x57, 0x14, 0x0c, 0x64, 0x00, 0xef, 0x69, 
+0xbb, 0x1f, 0x5f, 0x5f, 0x7b, 0xf7, 0x9d, 0x87, 
+0xd5, 0x34, 0x99, 0xdf, 0xc8, 0xce, 0xcd, 0xab, 
+0x73, 0x70, 0x92, 0xfc, 0x64, 0x44, 0x0f, 0x5c, 
+0x16, 0x8e, 0xf8, 0x92, 0x79, 0x22, 0x42, 0x20, 
+0xd2, 0x01, 0x10, 0x22, 0xc1, 0x21, 0xa7, 0xee, 
+0x66, 0xa0, 0x32, 0x4c, 0x4c, 0x95, 0x63, 0xbe, 
+0xb0, 0xc5, 0xda, 0x4a, 0x96, 0x9c, 0xc3, 0x7d, 
+0x0b, 0x9a, 0xbd, 0x7b, 0x7f, 0xfe, 0x65, 0x49, 
+0x38, 0xc7, 0x87, 0x39, 0xdf, 0xcc, 0x53, 0x7e, 
+0x51, 0xb1, 0xd0, 0x91, 0xec, 0xb0, 0xa1, 0x4f, 
+0x1d, 0xc2, 0xef, 0x87, 0x37, 0x7d, 0x88, 0xfe, 
+0x69, 0x4b, 0xde, 0x5a, 0xbe, 0xdc, 0x3a, 0x26, 
+0x00, 0xf1, 0x38, 0xab, 0xac, 0x2e, 0xcb, 0x61, 
+0x0a, 0x4f, 0x85, 0xb4, 0xc0, 0xf9, 0x11, 0x75, 
+0xd0, 0x1e, 0x17, 0x2f, 0x70, 0x51, 0x10, 0x91, 
+0xb3, 0x51, 0xa7, 0x9c, 0xd2, 0x60, 0x99, 0x66, 
+0x2e, 0xc7, 0x84, 0x9c, 0x91, 0x10, 0x36, 0xde, 
+0x05, 0x5e, 0x96, 0x07, 0x3a, 0xce, 0xf9, 0x26, 
+0x32, 0xbf, 0x3a, 0x3f, 0xf7, 0xd4, 0xaa, 0x02, 
+0xc1, 0x24, 0x0c, 0xcf, 0xab, 0x9b, 0xda, 0x75, 
+0xaf, 0x70, 0xda, 0xab, 0xe7, 0xdc, 0xdc, 0x75, 
+0x24, 0x1a, 0xfe, 0x2d, 0x80, 0x78, 0x2c, 0x9b, 
+0x5a, 0x57, 0x6e, 0x9a, 0xdc, 0x93, 0xc3, 0xea, 
+0xc0, 0x59, 0xaa, 0x1e, 0x14, 0x47, 0x56, 0x82, 
+0x27, 0x12, 0x24, 0xc1, 0xa1, 0x3a, 0xa4, 0xe4, 
+0x5d, 0x96, 0x69, 0x56, 0x8a, 0x90, 0xdd, 0x32, 
+0xe7, 0x4e, 0x54, 0xa4, 0xf0, 0x0c, 0xd9, 0x3b, 
+0x73, 0x59, 0x24, 0x13, 0x8c, 0xe2, 0x8b, 0xf4, 
+0x5e, 0xb5, 0x31, 0xd4, 0x73, 0xe9, 0x86, 0x33, 
+0xef, 0x7f, 0xe7, 0x48, 0x9f, 0x7d, 0x54, 0x00, 
+0x12, 0x20, 0xc5, 0x8f, 0x9e, 0xac, 0x5b, 0x91, 
+0x47, 0x82, 0xea, 0xc0, 0x42, 0xc3, 0x54, 0xb8, 
+0x83, 0x41, 0x6c, 0x82, 0xdb, 0x2f, 0x8b, 0xae, 
+0x56, 0x58, 0xb4, 0x5a, 0x84, 0x5d, 0x72, 0xd8, 
+0x92, 0xac, 0x0b, 0x7f, 0x5b, 0x41, 0x16, 0x9c, 
+0x5d, 0xc1, 0xfd, 0x4f, 0xe7, 0x66, 0xbc, 0xd5, 
+0x57, 0xff, 0xe8, 0x86, 0x33, 0xea, 0x7e, 0x33, 
+0x91, 0x67, 0x4e, 0xfa, 0x87, 0xee, 0xb1, 0xe2, 
+0xbf, 0x3b, 0x56, 0x6d, 0x7e, 0xaf, 0xfb, 0xc1, 
+0xda, 0x64, 0x47, 0xde, 0xf9, 0xa9, 0xae, 0x29, 
+0xdb, 0x28, 0xa1, 0x50, 0xad, 0x20, 0x54, 0x2b, 
+0x08, 0x8d, 0x05, 0x91, 0x5b, 0x60, 0xa6, 0xd6, 
+0xd6, 0x26, 0x9f, 0x28, 0xbb, 0x2c, 0x9f, 0xc1, 
+0xab, 0x3b, 0xcb, 0x97, 0xb8, 0x87, 0x02, 0x91, 
+0x46, 0xee, 0xa3, 0xad, 0x9f, 0xe0, 0x0d, 0xdf, 
+0xe7, 0xef, 0x1f, 0x57, 0xcf, 0xdd, 0x3b, 0xd1, 
+0x67, 0x1e, 0xd5, 0x0a, 0x1c, 0x1c, 0xe7, 0x14, 
+0x3f, 0x74, 0x8d, 0x69, 0x86, 0xef, 0x0c, 0x28, 
+0xbd, 0x15, 0xa0, 0x0c, 0xb3, 0x67, 0x66, 0x60, 
+0x6a, 0x65, 0x3e, 0xfc, 0x3d, 0x1a, 0xb6, 0x7d, 
+0xe3, 0xc7, 0xf5, 0x4f, 0x5e, 0x64, 0x56, 0xcc, 
+0x73, 0x0b, 0x8f, 0x0e, 0xfe, 0xb5, 0x95, 0x74, 
+0x73, 0xa7, 0xbe, 0xba, 0xfc, 0x9e, 0x9e, 0x89, 
+0x3e, 0xe3, 0x98, 0x02, 0xc4, 0xe3, 0xdc, 0xa2, 
+0x07, 0xef, 0x8a, 0x18, 0xc1, 0x1b, 0x8d, 0xc8, 
+0x60, 0xc1, 0x29, 0x52, 0x29, 0x7a, 0x53, 0xbd, 
+0x68, 0xf1, 0xa9, 0xb8, 0xb6, 0x6e, 0xb9, 0xd5, 
+0x34, 0x67, 0xaf, 0xd1, 0xe8, 0xeb, 0xbd, 0xf0, 
+0xef, 0x3f, 0x7b, 0xe8, 0x83, 0xc9, 0xdc, 0xfb, 
+0x47, 0x01, 0x00, 0x00, 0x42, 0xea, 0x84, 0x25, 
+0x05, 0xec, 0x51, 0x6a, 0x84, 0xaf, 0xee, 0x57, 
+0x3a, 0xd2, 0x39, 0x08, 0x58, 0xfc, 0xc0, 0xe2, 
+0xf0, 0xb7, 0xd5, 0xbb, 0xd7, 0xbc, 0x73, 0xc6, 
+0xa3, 0xf7, 0x4f, 0xfa, 0xbe, 0x3f, 0x16, 0x40, 
+0x3c, 0x6a, 0xb3, 0xea, 0x5c, 0x4e, 0x3b, 0x5d, 
+0xa3, 0xe8, 0x81, 0x4b, 0xb3, 0x6f, 0x2e, 0xda, 
+0xb2, 0x7e, 0xd5, 0x6d, 0x67, 0x31, 0x60, 0xd2, 
+0x22, 0x7e, 0x74, 0x80, 0x78, 0x2c, 0x29, 0xa9, 
+0xcb, 0x49, 0x9d, 0x5f, 0xa6, 0xbc, 0xfe, 0xfa, 
+0x8a, 0xe0, 0xbf, 0x73, 0x9f, 0xff, 0x03, 0x44, 
+0x8d, 0xcd, 0x10, 0xa4, 0x4b, 0xe2, 0x38, 0x00, 
+0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 
+0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/bigimgs/appicon48.png b/source/bitmaps/bigimgs/appicon48.png
new file mode 100644 (file)
index 0000000..1b3e2c9
Binary files /dev/null and b/source/bitmaps/bigimgs/appicon48.png differ
diff --git a/source/bitmaps/bigimgs/appicon64.cpp b/source/bitmaps/bigimgs/appicon64.cpp
new file mode 100644 (file)
index 0000000..d59c641
--- /dev/null
@@ -0,0 +1,749 @@
+#include <iostream>
+
+#ifndef BIGIMGS_APPICON64_CPP
+#define BIGIMGS_APPICON64_CPP
+
+static unsigned char bigimgs_appicon64_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x01, 0xbb, 0x00, 0x00, 0x01, 
+0xbb, 0x01, 0x3a, 0xec, 0xe3, 0xe2, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x16, 0x9b, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x5b, 0x79, 
+0x7c, 0x54, 0xd5, 0xd9, 0x7e, 0xce, 0x5d, 0x67, 
+0x26, 0x99, 0xc9, 0x32, 0x93, 0x75, 0x42, 0x16, 
+0x42, 0x4c, 0x02, 0x09, 0x10, 0x40, 0x45, 0x05, 
+0x15, 0xb1, 0xb2, 0x88, 0x8a, 0xe2, 0x82, 0x5a, 
+0xeb, 0x52, 0xeb, 0x2e, 0x55, 0xcb, 0x27, 0xd6, 
+0x5a, 0x29, 0xb6, 0xfa, 0x59, 0xb5, 0x16, 0x17, 
+0xfc, 0x44, 0x5b, 0xab, 0xb5, 0x6a, 0xd5, 0xcf, 
+0xaa, 0xd5, 0xba, 0xd4, 0x05, 0x45, 0x50, 0x04, 
+0x59, 0x04, 0x42, 0x16, 0x08, 0x81, 0x24, 0x90, 
+0xc9, 0x32, 0xc9, 0xec, 0x73, 0xd7, 0x73, 0xbe, 
+0x3f, 0x26, 0x33, 0x99, 0x2c, 0x60, 0x80, 0xd8, 
+0xf6, 0xf7, 0xfb, 0x5e, 0x7e, 0xc3, 0x9d, 0x3b, 
+0x37, 0x73, 0xef, 0x79, 0x9e, 0xf7, 0x79, 0x9f, 
+0x73, 0xee, 0x3b, 0x33, 0x84, 0x31, 0x86, 0xff, 
+0xcf, 0x21, 0x8c, 0xe6, 0xc9, 0x96, 0xae, 0xfc, 
+0xe8, 0x49, 0x41, 0x22, 0xd3, 0x68, 0x97, 0x79, 
+0xd3, 0x43, 0xcb, 0xe7, 0x6c, 0x19, 0xcd, 0x73, 
+0x7f, 0x5f, 0x41, 0x46, 0x4b, 0x01, 0x37, 0x3f, 
+0xf5, 0x59, 0x6a, 0x86, 0x15, 0xdb, 0x2a, 0x67, 
+0x15, 0x96, 0xee, 0xdb, 0xe0, 0xf1, 0x06, 0xbc, 
+0xa1, 0x06, 0xbd, 0x47, 0xbd, 0xee, 0xd1, 0x5f, 
+0x9e, 0x53, 0x3b, 0x2a, 0x17, 0xf8, 0x9e, 0x62, 
+0xd4, 0x08, 0xf8, 0xaf, 0xc7, 0x3e, 0x79, 0xa5, 
+0xf2, 0x8c, 0x82, 0x45, 0xb2, 0x43, 0x14, 0x29, 
+0x18, 0x0c, 0x9d, 0xa2, 0x65, 0x93, 0xa7, 0x3b, 
+0xd2, 0x1d, 0xae, 0x67, 0x7e, 0xe3, 0x9a, 0x87, 
+0xee, 0x59, 0xb0, 0x7b, 0x54, 0x2e, 0x34, 0xca, 
+0x31, 0x2a, 0x04, 0x2c, 0x5d, 0xf1, 0xae, 0xcb, 
+0x56, 0xec, 0xd8, 0x58, 0x31, 0xab, 0xa0, 0x84, 
+0x32, 0x06, 0xca, 0x18, 0x28, 0x62, 0x5b, 0x53, 
+0x37, 0xd1, 0xb6, 0xb1, 0xa3, 0x3b, 0xd2, 0x1b, 
+0xa9, 0x8d, 0x74, 0xe8, 0x57, 0xac, 0xfa, 0xcd, 
+0x79, 0xad, 0xa3, 0x30, 0xee, 0x51, 0x8b, 0x51, 
+0x21, 0xe0, 0xce, 0xc7, 0xd7, 0xbc, 0x35, 0xfe, 
+0x07, 0xee, 0x73, 0x44, 0x1b, 0xcf, 0xc5, 0x80, 
+0x63, 0x00, 0x09, 0x8c, 0x31, 0x18, 0x9a, 0x81, 
+0x03, 0x1b, 0x3d, 0x5e, 0xc5, 0xaf, 0x6c, 0x57, 
+0x7a, 0xa3, 0x97, 0xad, 0x5a, 0x7e, 0x91, 0x67, 
+0x14, 0xc6, 0x7f, 0xcc, 0x71, 0xcc, 0x04, 0x2c, 
+0x5b, 0xf1, 0x7e, 0x81, 0x6d, 0xac, 0x63, 0xfd, 
+0xb8, 0xd3, 0xf2, 0x0a, 0x63, 0x60, 0x29, 0xc6, 
+0x19, 0xb5, 0x30, 0xc1, 0xa3, 0x89, 0x14, 0x43, 
+0x23, 0x22, 0x58, 0x92, 0x2a, 0xf4, 0x88, 0x81, 
+0x8e, 0x2d, 0x1e, 0xaf, 0x12, 0x50, 0xb7, 0xe8, 
+0x1e, 0xdf, 0xa5, 0x4f, 0x3e, 0xf0, 0x23, 0xef, 
+0xe8, 0x40, 0x39, 0xba, 0x38, 0x66, 0x02, 0xee, 
+0x7c, 0xe2, 0xd3, 0x0f, 0x27, 0xcc, 0x1d, 0x73, 
+0x16, 0x2f, 0x71, 0xa0, 0x60, 0xc8, 0xd3, 0xf6, 
+0x62, 0xb2, 0xad, 0x15, 0x00, 0x81, 0x5f, 0xe3, 
+0xb1, 0x47, 0xcf, 0xc6, 0x7e, 0xbe, 0x08, 0xe6, 
+0x20, 0x55, 0x18, 0x11, 0x1d, 0x5d, 0x5b, 0x3c, 
+0xdd, 0x5a, 0x50, 0xdb, 0x64, 0xfa, 0xc2, 0x8b, 
+0x1f, 0x5f, 0x7e, 0x79, 0x60, 0x74, 0x20, 0x1d, 
+0x59, 0x1c, 0x13, 0x01, 0x3f, 0xfd, 0xcd, 0x47, 
+0x65, 0xae, 0x92, 0xd4, 0x35, 0x63, 0x67, 0xe4, 
+0xb8, 0x29, 0x18, 0x18, 0x35, 0x31, 0x9d, 0x7e, 
+0x85, 0x0c, 0x8b, 0x09, 0x00, 0x60, 0x7d, 0xff, 
+0x77, 0x44, 0x25, 0x34, 0xd2, 0x3c, 0x1c, 0x24, 
+0xb9, 0x43, 0x4a, 0x43, 0x0f, 0x19, 0xe8, 0xd9, 
+0xe6, 0xe9, 0xd6, 0xc3, 0xea, 0x06, 0x51, 0x8f, 
+0x2c, 0x7e, 0x78, 0xe9, 0x15, 0xe1, 0x51, 0x41, 
+0x36, 0xc2, 0xe0, 0x8e, 0xe5, 0xcd, 0x96, 0x4c, 
+0xf1, 0xd9, 0xe2, 0xe9, 0x59, 0x6e, 0x86, 0x18, 
+0x98, 0x42, 0xa3, 0x31, 0x01, 0x1e, 0x00, 0x56, 
+0x3e, 0xfe, 0x2e, 0x3c, 0x1d, 0x3e, 0xd8, 0x11, 
+0xc2, 0xc9, 0xd6, 0x7d, 0x38, 0x01, 0xdb, 0xe1, 
+0x60, 0x01, 0x30, 0x16, 0x23, 0x87, 0x02, 0xe0, 
+0x52, 0x78, 0x64, 0x9e, 0x92, 0xef, 0xca, 0x3c, 
+0xd1, 0xbd, 0x80, 0xa6, 0x39, 0xf6, 0xdd, 0xb6, 
+0xf2, 0x8d, 0x37, 0x96, 0x2c, 0x79, 0x42, 0x3e, 
+0x46, 0x5c, 0x23, 0x8e, 0xa3, 0x56, 0xc0, 0x92, 
+0x7b, 0xdf, 0xaf, 0xc9, 0x9e, 0x90, 0xf1, 0x7e, 
+0xc9, 0xf4, 0xac, 0x1c, 0x0a, 0x06, 0xde, 0x54, 
+0x70, 0x12, 0xd9, 0x84, 0x54, 0x29, 0x76, 0x3e, 
+0xca, 0x18, 0x66, 0xce, 0xba, 0x07, 0xd9, 0xd9, 
+0xe9, 0xe8, 0xee, 0x0e, 0xe0, 0xf3, 0x4f, 0xee, 
+0x03, 0x03, 0xb0, 0x27, 0x6c, 0xc3, 0xd7, 0x18, 
+0x9f, 0x50, 0x42, 0xcc, 0x1f, 0x90, 0x50, 0x85, 
+0xde, 0xa3, 0x22, 0x58, 0xdf, 0xd1, 0x45, 0x43, 
+0xda, 0x9a, 0x1d, 0x81, 0xdc, 0xcb, 0xd7, 0x2c, 
+0x3f, 0xdd, 0x18, 0x45, 0xbc, 0x43, 0xe2, 0xa8, 
+0x57, 0x82, 0x29, 0xf9, 0xb6, 0x55, 0xc5, 0x27, 
+0x66, 0xe5, 0x30, 0x00, 0x8c, 0x01, 0x45, 0xe6, 
+0x1e, 0xa4, 0xda, 0xe2, 0xa2, 0x07, 0xde, 0x7d, 
+0x6f, 0x33, 0x2e, 0xbe, 0xe8, 0x14, 0x9c, 0x36, 
+0x73, 0x3c, 0xfe, 0xf9, 0xd1, 0xb7, 0x88, 0xfd, 
+0x1d, 0x43, 0x3b, 0x4d, 0x07, 0xe3, 0x80, 0xf8, 
+0xfb, 0x18, 0x80, 0xb8, 0x82, 0x18, 0x18, 0xb8, 
+0x0c, 0x11, 0xf6, 0x93, 0xf2, 0xb2, 0x34, 0x6f, 
+0xe4, 0xe2, 0xea, 0xc6, 0x8e, 0x59, 0xb7, 0xfe, 
+0xfe, 0x95, 0x0f, 0x5d, 0x81, 0xc6, 0x2b, 0x97, 
+0x2f, 0x5f, 0x4e, 0x47, 0x03, 0xf0, 0xe0, 0x38, 
+0xaa, 0x12, 0x58, 0x7a, 0xff, 0xa7, 0xa7, 0xa6, 
+0xb9, 0xac, 0x65, 0x20, 0xb1, 0xcc, 0x59, 0x69, 
+0x00, 0x85, 0x62, 0x4f, 0xe2, 0xf8, 0xce, 0xda, 
+0x16, 0xbc, 0xfe, 0xc6, 0x57, 0x68, 0x6c, 0x3c, 
+0x88, 0xcf, 0x3e, 0xaf, 0xc5, 0xd2, 0x3b, 0xce, 
+0x05, 0x00, 0xb4, 0x45, 0x65, 0xb4, 0x70, 0xf9, 
+0x09, 0xb0, 0x2c, 0xee, 0x05, 0xf1, 0x7f, 0x0c, 
+0x60, 0xa0, 0xa0, 0xa0, 0xe0, 0x9c, 0x02, 0x2c, 
+0x27, 0xbb, 0xb2, 0xc4, 0x1a, 0xc7, 0x0f, 0xbb, 
+0x72, 0x4a, 0x3d, 0x37, 0xaf, 0x7c, 0xf1, 0x8f, 
+0x04, 0x20, 0xa3, 0x03, 0xbb, 0x3f, 0x8e, 0x8a, 
+0x00, 0x31, 0x4b, 0x7c, 0xb4, 0x60, 0x9a, 0xcb, 
+0x15, 0xcf, 0x62, 0x31, 0xdd, 0x0b, 0x8b, 0x18, 
+0x3b, 0x46, 0x19, 0x03, 0xa5, 0x14, 0x4d, 0x4d, 
+0x1e, 0xec, 0xd8, 0xd9, 0x02, 0x9e, 0xe7, 0x62, 
+0xf5, 0x4e, 0x19, 0xea, 0xcd, 0x38, 0xf8, 0xe4, 
+0xec, 0x0f, 0x54, 0x02, 0x05, 0x05, 0x83, 0xd9, 
+0xb7, 0xa5, 0x40, 0x16, 0x07, 0x61, 0x66, 0x7a, 
+0x16, 0x57, 0x65, 0xbb, 0xe6, 0xc6, 0xd5, 0x2f, 
+0x78, 0x6e, 0xfa, 0xfd, 0xf3, 0xff, 0x33, 0x3a, 
+0xd0, 0x63, 0x71, 0xc4, 0x1e, 0x70, 0xe7, 0x7f, 
+0xaf, 0x5b, 0xe0, 0x9a, 0x60, 0xfb, 0x73, 0xfe, 
+0xa4, 0xb4, 0x0c, 0xca, 0x18, 0xec, 0x46, 0x17, 
+0x4e, 0x94, 0x6a, 0x21, 0xf2, 0x31, 0x2e, 0xff, 
+0xf2, 0xca, 0x5a, 0xd4, 0xee, 0x6a, 0x85, 0xdd, 
+0x6e, 0xc5, 0xb4, 0x29, 0xa5, 0x38, 0x73, 0xf6, 
+0x44, 0x30, 0x00, 0x4d, 0x61, 0x1b, 0xbe, 0xea, 
+0xab, 0x7d, 0x96, 0x34, 0x13, 0x24, 0x7b, 0x41, 
+0x0c, 0xb6, 0x01, 0x13, 0x06, 0x28, 0x31, 0x63, 
+0xdb, 0xf8, 0x3e, 0x62, 0xfb, 0xac, 0x4d, 0x03, 
+0x6b, 0x56, 0x3a, 0x49, 0x04, 0x2f, 0x3f, 0x7d, 
+0xc7, 0xb5, 0xb7, 0x1f, 0x2b, 0x01, 0x47, 0xac, 
+0x00, 0x21, 0x0b, 0xf7, 0xbb, 0x27, 0xa5, 0x65, 
+0xc4, 0xb3, 0x57, 0x82, 0x7d, 0x09, 0xf0, 0xba, 
+0x41, 0x91, 0x96, 0x66, 0x03, 0x47, 0x08, 0x0e, 
+0xb6, 0xf7, 0xa2, 0xdd, 0xe3, 0x03, 0x03, 0xa0, 
+0x1a, 0x0c, 0x75, 0xac, 0x60, 0x80, 0xf4, 0x07, 
+0x2b, 0x80, 0x82, 0x0d, 0xc8, 0x3c, 0x85, 0x39, 
+0xcc, 0x3e, 0x85, 0x39, 0x06, 0x30, 0x4e, 0x15, 
+0xb2, 0xf5, 0x4a, 0x72, 0xdb, 0x4f, 0x9e, 0x7e, 
+0xda, 0x73, 0xdd, 0xca, 0xd5, 0x0f, 0x1e, 0x0b, 
+0x01, 0x47, 0xa4, 0x80, 0xa5, 0x0f, 0xad, 0xbb, 
+0x22, 0xbf, 0x2a, 0xe5, 0xc9, 0xec, 0x09, 0x0e, 
+0x07, 0x65, 0x0c, 0x4e, 0xa3, 0x15, 0xc7, 0x5b, 
+0xf6, 0x82, 0x90, 0x58, 0x69, 0x3e, 0xf4, 0xe8, 
+0xdb, 0xa0, 0x94, 0x82, 0x52, 0x86, 0xc9, 0x93, 
+0x4a, 0x30, 0xe7, 0xac, 0xc9, 0x00, 0x80, 0x5d, 
+0x21, 0x3b, 0xb6, 0x90, 0xf2, 0x44, 0xc6, 0xd9, 
+0xa0, 0xec, 0xc7, 0xb6, 0x49, 0x19, 0x27, 0xe6, 
+0x90, 0xcc, 0xc7, 0x5e, 0x1f, 0xb4, 0x0f, 0x13, 
+0xfc, 0x5e, 0x40, 0x6c, 0x33, 0x3d, 0x4c, 0xc1, 
+0xea, 0x3f, 0xde, 0x76, 0xcb, 0xaf, 0x8e, 0x94, 
+0x80, 0x23, 0x52, 0x80, 0xec, 0x22, 0x77, 0x65, 
+0x4f, 0x70, 0x38, 0x68, 0xdf, 0x2c, 0x5e, 0x4c, 
+0xda, 0x12, 0xe0, 0x19, 0x80, 0xca, 0x0a, 0x37, 
+0x54, 0xd5, 0x40, 0x7d, 0xfd, 0x01, 0x88, 0x02, 
+0x0f, 0x00, 0x08, 0xeb, 0x40, 0x3d, 0x0a, 0x47, 
+0x64, 0x7c, 0x0c, 0x14, 0x94, 0xd0, 0x81, 0xfb, 
+0x7d, 0x99, 0xef, 0xdf, 0x4f, 0xde, 0x9a, 0x50, 
+0xc7, 0x6a, 0x08, 0x9c, 0xaa, 0xe6, 0x2a, 0x25, 
+0xc6, 0xf2, 0xab, 0x9f, 0x5e, 0x79, 0xf0, 0xea, 
+0xc7, 0x9e, 0x58, 0x76, 0x24, 0x98, 0x46, 0xac, 
+0x80, 0x65, 0x8f, 0xac, 0x5b, 0x92, 0x37, 0xd1, 
+0xf1, 0x80, 0xb3, 0x3c, 0x25, 0x85, 0x32, 0x06, 
+0xb7, 0xd1, 0x84, 0x49, 0xd6, 0x36, 0x00, 0x04, 
+0x0c, 0xc0, 0x43, 0xbf, 0x7b, 0x0b, 0x6f, 0xfc, 
+0x6d, 0x03, 0x6e, 0xbc, 0x61, 0x0e, 0xc6, 0x57, 
+0x8c, 0xc1, 0xb4, 0x69, 0xa5, 0x00, 0x18, 0xb6, 
+0x86, 0x32, 0x51, 0x8b, 0xd2, 0xa4, 0x4c, 0xb3, 
+0x21, 0x3e, 0x90, 0x9c, 0x51, 0x4a, 0x86, 0xc9, 
+0xfc, 0x80, 0xd7, 0xfb, 0xf6, 0x93, 0x15, 0x92, 
+0x74, 0xcc, 0x5a, 0x6f, 0x61, 0x56, 0x0f, 0x69, 
+0x37, 0x0d, 0xee, 0xb7, 0x7f, 0xbe, 0xf5, 0x8e, 
+0xc7, 0xbf, 0x0b, 0xd7, 0x88, 0x15, 0x20, 0x66, 
+0x0a, 0x37, 0xbb, 0xca, 0x53, 0x52, 0x18, 0x63, 
+0x20, 0xcc, 0x40, 0x11, 0xd7, 0x8e, 0xfe, 0x59, 
+0x89, 0xe1, 0x8b, 0x75, 0x75, 0x98, 0x34, 0xa9, 
+0x18, 0x6b, 0xd6, 0xec, 0x44, 0x75, 0xd5, 0x18, 
+0x00, 0x40, 0x8f, 0xca, 0xa1, 0x01, 0x45, 0x09, 
+0x93, 0x4b, 0x9e, 0xef, 0x13, 0x8b, 0xa0, 0xe4, 
+0x8c, 0x92, 0x43, 0x65, 0xde, 0x3c, 0xb4, 0x12, 
+0x88, 0xd9, 0x77, 0xb6, 0xd8, 0x6b, 0xc1, 0x8a, 
+0x00, 0x69, 0x3f, 0xbd, 0x27, 0x3f, 0x9a, 0x1f, 
+0x5d, 0x79, 0xc5, 0x53, 0x0f, 0x1e, 0xb8, 0x7c, 
+0xd5, 0xc3, 0xd7, 0x1d, 0x33, 0x01, 0xcb, 0x1e, 
+0x5d, 0xb7, 0x3c, 0x77, 0x6c, 0x6a, 0x61, 0xdc, 
+0xb4, 0x8a, 0xf4, 0xdd, 0x48, 0x97, 0x69, 0x1f, 
+0x74, 0xe0, 0x99, 0x3f, 0x7c, 0x84, 0x5f, 0xde, 
+0x7d, 0x21, 0xac, 0x56, 0x09, 0xf3, 0xe7, 0x4e, 
+0x81, 0x6c, 0x91, 0x00, 0x30, 0x34, 0x6a, 0x2e, 
+0xe8, 0xe0, 0x87, 0x1a, 0x1f, 0x4b, 0x36, 0xbe, 
+0xc3, 0xc9, 0xdd, 0x3c, 0x4c, 0x59, 0x0c, 0x34, 
+0xc8, 0xc1, 0xa5, 0xd1, 0x3b, 0xa1, 0x97, 0x1c, 
+0x38, 0xc3, 0x93, 0xaf, 0x64, 0x85, 0x9e, 0xfe, 
+0xe1, 0x53, 0xbf, 0x69, 0xbd, 0xf4, 0xd9, 0xfb, 
+0xaf, 0x18, 0x0e, 0xdb, 0x77, 0x96, 0x00, 0x01, 
+0xc8, 0x2f, 0x9e, 0xff, 0x7a, 0x4f, 0xc5, 0x2c, 
+0xd7, 0x58, 0xca, 0x18, 0x04, 0x1a, 0xc1, 0x49, 
+0xdc, 0x66, 0xa4, 0x8a, 0x0c, 0x1f, 0x7c, 0xb8, 
+0x15, 0x15, 0x95, 0x6e, 0x5c, 0x79, 0xcd, 0x2a, 
+0x4c, 0xa9, 0x29, 0xc1, 0xdd, 0xcb, 0x2e, 0x40, 
+0xa6, 0xd3, 0x0e, 0x00, 0xf0, 0x44, 0x79, 0x7c, 
+0x42, 0x27, 0x27, 0xee, 0x02, 0x8f, 0xda, 0xf8, 
+0x0e, 0x27, 0xff, 0xbe, 0xa9, 0xf2, 0x70, 0xc7, 
+0xe2, 0xfb, 0xd9, 0xdb, 0x5c, 0xcc, 0xda, 0x23, 
+0xb7, 0xe9, 0x02, 0xfd, 0xd9, 0xeb, 0xd7, 0xad, 
+0x78, 0x7d, 0xc4, 0x0a, 0x58, 0xb6, 0xf2, 0xcb, 
+0x47, 0xf2, 0x8f, 0x4b, 0x1d, 0x43, 0xfb, 0xb2, 
+0x58, 0x6c, 0x36, 0x21, 0x55, 0x8c, 0x91, 0x96, 
+0x91, 0x69, 0xc7, 0xc2, 0x0b, 0x1f, 0xc6, 0x84, 
+0xf1, 0x05, 0x28, 0x2b, 0xcb, 0xc3, 0xda, 0x75, 
+0x75, 0x31, 0x55, 0x30, 0x8a, 0x7a, 0x3d, 0x17, 
+0x94, 0xe1, 0xd8, 0x8d, 0x8f, 0x0c, 0xcd, 0xee, 
+0xa1, 0x33, 0x9f, 0x5c, 0x4a, 0x03, 0xd5, 0x74, 
+0x70, 0x72, 0x3b, 0x69, 0x9a, 0xd9, 0x3c, 0x46, 
+0x8e, 0x92, 0x95, 0xc9, 0xf8, 0x0e, 0x4b, 0xc0, 
+0x8a, 0x15, 0xe0, 0xa4, 0x4c, 0x61, 0x91, 0xdd, 
+0x6d, 0x11, 0x19, 0x03, 0x6c, 0xa6, 0x0f, 0x85, 
+0x52, 0x6f, 0x0c, 0x24, 0x00, 0x49, 0xe2, 0x51, 
+0x71, 0x5c, 0x3e, 0x66, 0xce, 0xa8, 0xc4, 0xf3, 
+0x2f, 0xac, 0xc1, 0x82, 0xb3, 0xa7, 0x01, 0x60, 
+0x68, 0x8d, 0x5a, 0xd0, 0xc6, 0xe5, 0x8d, 0x60, 
+0xc5, 0xf7, 0x1d, 0x6e, 0x4f, 0x86, 0x03, 0x4d, 
+0x41, 0x7c, 0x7a, 0x82, 0xb4, 0x21, 0x6b, 0x85, 
+0x21, 0x84, 0xf5, 0x9f, 0xc3, 0xbd, 0xc9, 0x6d, 
+0xe8, 0x60, 0xd7, 0x24, 0x63, 0x3c, 0xec, 0xcd, 
+0x90, 0x96, 0xb9, 0x61, 0x75, 0x61, 0x65, 0x7a, 
+0x41, 0xdc, 0xb8, 0x8a, 0xd9, 0x3e, 0xc8, 0x02, 
+0xd0, 0xd2, 0xd2, 0x8d, 0xa7, 0x9e, 0xf9, 0x00, 
+0x17, 0x2d, 0x3a, 0x09, 0xbd, 0xbe, 0x30, 0x5e, 
+0x7c, 0x69, 0x2d, 0x2e, 0xbd, 0x64, 0x06, 0x04, 
+0x81, 0x83, 0x6e, 0x52, 0xec, 0x32, 0x0b, 0xc0, 
+0xc8, 0x48, 0x8c, 0xcf, 0x1c, 0x91, 0xf1, 0x89, 
+0x1d, 0x3a, 0x52, 0xf6, 0x2a, 0xe0, 0x77, 0x87, 
+0x80, 0xba, 0x10, 0xf4, 0xce, 0x30, 0xfc, 0xf3, 
+0x6d, 0x08, 0x5f, 0xe8, 0x18, 0x96, 0xa0, 0xe1, 
+0xce, 0xc1, 0xa9, 0x1c, 0xac, 0x01, 0xb9, 0xe9, 
+0xa5, 0xdb, 0xee, 0xfd, 0x70, 0x44, 0x04, 0x2c, 
+0x79, 0xe2, 0x7d, 0x39, 0x33, 0xdd, 0x35, 0xd7, 
+0x96, 0x2d, 0xf2, 0x94, 0x31, 0xa4, 0x1b, 0x5d, 
+0x28, 0x90, 0x03, 0x00, 0x08, 0xc6, 0x14, 0xba, 
+0xe0, 0xcc, 0xb4, 0x63, 0xc1, 0xc2, 0x07, 0x71, 
+0xce, 0x82, 0x69, 0xb8, 0xfa, 0xca, 0x59, 0x38, 
+0xe1, 0xf8, 0x32, 0x00, 0x0c, 0xfb, 0x14, 0x3b, 
+0xba, 0x48, 0xc6, 0x51, 0x1b, 0x1f, 0xa3, 0x26, 
+0x52, 0xba, 0x4d, 0x58, 0x5b, 0x75, 0xc8, 0xfb, 
+0x14, 0x88, 0x7b, 0x22, 0xd0, 0xfd, 0x0a, 0x14, 
+0x55, 0x81, 0xaa, 0x29, 0x50, 0x54, 0x15, 0xba, 
+0xae, 0x83, 0x6c, 0xf0, 0x81, 0x5e, 0x98, 0x7a, 
+0x88, 0x52, 0x1a, 0xaa, 0xa6, 0xe2, 0x8d, 0x45, 
+0xaa, 0x2e, 0x90, 0x8b, 0x06, 0xe3, 0x3c, 0x24, 
+0x01, 0xa9, 0x24, 0xe3, 0x05, 0xf7, 0x44, 0x87, 
+0x3b, 0x9e, 0xbd, 0xb1, 0x64, 0x3f, 0x04, 0xae, 
+0x7f, 0xda, 0xfb, 0x7a, 0xd3, 0x1e, 0x7c, 0xf4, 
+0xc1, 0xbd, 0x78, 0x7a, 0xf5, 0x3f, 0xd1, 0xeb, 
+0x8b, 0x35, 0x71, 0x14, 0x03, 0xd8, 0x45, 0x0b, 
+0xc0, 0x08, 0xfa, 0xea, 0x7f, 0xe0, 0xad, 0x2e, 
+0x4b, 0x80, 0xef, 0x73, 0x71, 0x42, 0xc1, 0x51, 
+0x8a, 0x34, 0x2f, 0xe0, 0xf0, 0x10, 0xd8, 0x0e, 
+0x02, 0x96, 0x56, 0x13, 0x7a, 0x48, 0x85, 0xa2, 
+0xa9, 0x31, 0xd0, 0xaa, 0x06, 0xdd, 0xd0, 0x61, 
+0x18, 0x3a, 0xc6, 0x4d, 0x1d, 0x07, 0x39, 0x4d, 
+0xc6, 0xba, 0xb7, 0xd6, 0x41, 0xda, 0x07, 0x70, 
+0x5e, 0x1d, 0x86, 0x93, 0x1d, 0x12, 0x74, 0x7c, 
+0x2b, 0x05, 0x25, 0xc8, 0x61, 0xb9, 0xf6, 0x2f, 
+0xb7, 0xdd, 0xb3, 0x63, 0x30, 0xce, 0x61, 0x3d, 
+0x60, 0xd9, 0x43, 0xeb, 0xed, 0x72, 0x86, 0x70, 
+0x9a, 0x9c, 0xce, 0x13, 0x06, 0x86, 0x6c, 0xbd, 
+0x15, 0xb9, 0x72, 0x04, 0x00, 0x10, 0x55, 0x34, 
+0x30, 0xc6, 0xb0, 0xe4, 0xe6, 0x79, 0xb8, 0xf5, 
+0xa7, 0x7f, 0x44, 0x67, 0xa7, 0x1f, 0xa7, 0xce, 
+0x18, 0x0f, 0x80, 0x61, 0x8f, 0xea, 0x40, 0x80, 
+0xa4, 0x0e, 0x63, 0x7c, 0x18, 0xd6, 0xf8, 0x08, 
+0xa3, 0x38, 0xfd, 0x03, 0x0b, 0x8e, 0xff, 0x98, 
+0x47, 0xd1, 0x66, 0x0a, 0xfb, 0x3e, 0x03, 0x34, 
+0xaa, 0x43, 0x37, 0x0c, 0xe8, 0x7a, 0x0c, 0x74, 
+0xfc, 0xb9, 0x3d, 0xcb, 0x8e, 0x53, 0x2f, 0x99, 
+0x09, 0x9b, 0xd3, 0x8a, 0x79, 0xb7, 0xcf, 0x81, 
+0x44, 0x44, 0x58, 0xb6, 0xea, 0x87, 0x31, 0xbe, 
+0xfe, 0xb2, 0x70, 0x6f, 0x29, 0x88, 0x68, 0x92, 
+0x79, 0xf6, 0x70, 0x58, 0x87, 0x55, 0x80, 0xe8, 
+0x10, 0x5f, 0x76, 0x4f, 0x72, 0xe4, 0xc6, 0xe5, 
+0x5b, 0xc4, 0x1d, 0x04, 0x21, 0x04, 0x91, 0xa8, 
+0x86, 0xa9, 0xd3, 0xef, 0xc4, 0x94, 0xc9, 0x25, 
+0xe8, 0xe8, 0xf2, 0xc3, 0xe5, 0xb4, 0xe3, 0xb1, 
+0x95, 0xd7, 0xc0, 0x6a, 0x15, 0x11, 0xd0, 0x80, 
+0x3a, 0xb3, 0x28, 0xd6, 0xec, 0x18, 0x62, 0x7c, 
+0xfd, 0xb9, 0x4f, 0x26, 0xc1, 0x24, 0x26, 0x0c, 
+0xd3, 0x00, 0xd1, 0x63, 0x40, 0x63, 0x80, 0x07, 
+0x3e, 0x64, 0xbb, 0x8c, 0x82, 0x09, 0xf9, 0x68, 
+0x6d, 0x3a, 0x80, 0xde, 0xde, 0x5e, 0x74, 0x79, 
+0xba, 0x11, 0xdd, 0x1b, 0x05, 0xaf, 0x09, 0x48, 
+0xdd, 0xcc, 0xd0, 0x7b, 0xe6, 0xe1, 0x97, 0xca, 
+0x96, 0x6e, 0x1b, 0xc4, 0x88, 0xf8, 0xf5, 0x4b, 
+0xb7, 0xff, 0x62, 0xd8, 0x36, 0xfc, 0x10, 0x05, 
+0x2c, 0x5d, 0xf1, 0x99, 0x4b, 0x4e, 0x13, 0x4e, 
+0x94, 0x52, 0xb9, 0x84, 0x7c, 0x7b, 0x69, 0x0a, 
+0x74, 0xca, 0x60, 0xb5, 0x8a, 0x58, 0x7a, 0xfb, 
+0xb9, 0xc8, 0xce, 0x4e, 0x03, 0x18, 0xf0, 0xcc, 
+0xd3, 0x37, 0x20, 0x3b, 0x2b, 0x0d, 0x00, 0xd0, 
+0xa8, 0x3a, 0xa1, 0x70, 0xf2, 0x10, 0xe3, 0x8b, 
+0x3f, 0x3f, 0x94, 0xf1, 0x79, 0xb2, 0xb5, 0x81, 
+0xa0, 0x75, 0x23, 0x21, 0x79, 0x5d, 0x37, 0x90, 
+0xe9, 0xce, 0x40, 0xaa, 0xcb, 0x8e, 0x0b, 0x7e, 
+0xb6, 0x10, 0x75, 0x9b, 0xea, 0xd0, 0xb1, 0xa7, 
+0x03, 0xcd, 0xef, 0xed, 0x83, 0x68, 0x0a, 0x48, 
+0xfb, 0x86, 0x07, 0x63, 0xfd, 0xab, 0xc1, 0x21, 
+0xab, 0x46, 0x42, 0xe1, 0xde, 0xe9, 0x0e, 0xea, 
+0xf0, 0x0e, 0x9b, 0xfd, 0x61, 0x09, 0x90, 0x73, 
+0x53, 0xfe, 0xea, 0xae, 0xb1, 0x67, 0xf5, 0xdf, 
+0xa6, 0x02, 0xf5, 0xfc, 0x78, 0xac, 0x57, 0xca, 
+0x71, 0x20, 0x6a, 0xc1, 0x55, 0x57, 0x9e, 0x8e, 
+0xca, 0xca, 0x02, 0xa4, 0xa7, 0xa7, 0xc0, 0xe1, 
+0xb0, 0x01, 0x60, 0xe8, 0x56, 0x38, 0x34, 0x90, 
+0xc2, 0x41, 0x72, 0xef, 0x7f, 0xff, 0xe1, 0x8c, 
+0xaf, 0x23, 0x57, 0x8b, 0x65, 0x5f, 0x4f, 0x26, 
+0xa1, 0xff, 0x39, 0xe1, 0x09, 0xe6, 0x5f, 0x37, 
+0x17, 0x3b, 0x36, 0xec, 0x40, 0x77, 0xbb, 0x17, 
+0x21, 0x4f, 0x18, 0x9c, 0xc6, 0x43, 0xa0, 0x22, 
+0x2c, 0x3e, 0x01, 0x29, 0x0d, 0xdc, 0x21, 0x3d, 
+0x20, 0xbd, 0x25, 0x03, 0x35, 0x52, 0x69, 0xe0, 
+0xa6, 0x9a, 0x73, 0x4f, 0x1c, 0x11, 0x01, 0x4b, 
+0xcb, 0x3f, 0x73, 0x71, 0x5f, 0xd2, 0xc9, 0x46, 
+0xbb, 0x31, 0x20, 0x7b, 0x0c, 0x0c, 0x3d, 0x9c, 
+0x13, 0x1b, 0x48, 0x0d, 0x36, 0x84, 0xc7, 0xe0, 
+0xbc, 0xcb, 0xe6, 0xe0, 0x9e, 0x9f, 0x2f, 0x02, 
+0xfa, 0x40, 0x36, 0xe8, 0x59, 0x30, 0xc1, 0x0f, 
+0x58, 0xf8, 0x0c, 0x54, 0xc2, 0x70, 0xcb, 0xda, 
+0xd8, 0x7e, 0x77, 0x9e, 0x09, 0xcd, 0x8c, 0x03, 
+0x4e, 0xca, 0x7e, 0xdf, 0xf3, 0xbc, 0xd2, 0x5c, 
+0xdc, 0xbb, 0xe8, 0x57, 0xd8, 0x57, 0xbf, 0x1f, 
+0x4a, 0x50, 0x81, 0xd2, 0xaa, 0x42, 0x30, 0x05, 
+0x08, 0xa6, 0x08, 0x81, 0x8a, 0x70, 0x7e, 0x2d, 
+0x0d, 0x2f, 0x7f, 0x62, 0xa2, 0x6a, 0x77, 0x85, 
+0xfa, 0xb3, 0x2b, 0x2f, 0x71, 0x97, 0x97, 0x97, 
+0xbf, 0x5f, 0x57, 0x57, 0xf7, 0xec, 0x7b, 0xef, 
+0xbd, 0x97, 0x7b, 0x58, 0x02, 0x4c, 0x51, 0x7f, 
+0x44, 0x5b, 0x6f, 0x3a, 0x5b, 0x97, 0x44, 0xc3, 
+0x9e, 0x55, 0xc1, 0xa8, 0xe6, 0x35, 0xc1, 0x90, 
+0xe4, 0xe8, 0x0c, 0x68, 0xe3, 0x0a, 0xf0, 0x99, 
+0x59, 0x03, 0x7d, 0xec, 0x34, 0x04, 0x34, 0xa0, 
+0x2d, 0xc2, 0x63, 0x2f, 0x29, 0x18, 0xa1, 0xf1, 
+0x0d, 0xcd, 0x92, 0x2e, 0x51, 0xf8, 0x5c, 0xc6, 
+0x90, 0xcc, 0xeb, 0xba, 0x0e, 0x5e, 0xe6, 0x51, 
+0x7e, 0x52, 0x39, 0xce, 0xbc, 0x76, 0x36, 0xf2, 
+0x27, 0xe4, 0xa1, 0x7d, 0x83, 0x07, 0x22, 0x15, 
+0x21, 0x9a, 0x62, 0x1f, 0x09, 0x02, 0xb2, 0x36, 
+0xd8, 0x86, 0x35, 0xbe, 0x9c, 0x86, 0x3c, 0x9c, 
+0x54, 0x3c, 0x41, 0x0a, 0x06, 0x82, 0xc8, 0xcb, 
+0xcb, 0xb3, 0x54, 0x56, 0x56, 0x5e, 0x5b, 0x5e, 
+0x5e, 0xbe, 0xf5, 0xd5, 0x57, 0x5f, 0x3d, 0x2f, 
+0x19, 0x73, 0xc2, 0x04, 0xaf, 0x2f, 0x7f, 0xd7, 
+0x25, 0x30, 0x3a, 0xd7, 0x30, 0x75, 0x18, 0x11, 
+0x6b, 0x8a, 0xfe, 0xa6, 0x15, 0xe1, 0x35, 0xcc, 
+0x9f, 0xb2, 0x90, 0xd8, 0x1c, 0xe7, 0x5b, 0x44, 
+0x22, 0x27, 0x9b, 0x19, 0x41, 0x03, 0x29, 0x46, 
+0xa3, 0xe6, 0x86, 0x01, 0x1e, 0xf1, 0x8e, 0xef, 
+0x48, 0x8c, 0x6f, 0x38, 0xa7, 0xf6, 0x8e, 0xa1, 
+0x70, 0xee, 0x19, 0x98, 0x7d, 0xc6, 0x31, 0x9c, 
+0x30, 0xef, 0x78, 0xbc, 0xf3, 0xec, 0xbb, 0xe8, 
+0xee, 0xf4, 0x02, 0x26, 0x62, 0x59, 0x37, 0x05, 
+0x08, 0x54, 0x80, 0x48, 0x45, 0x08, 0xa6, 0x08, 
+0xd7, 0x76, 0x19, 0x42, 0x90, 0xc0, 0xb0, 0x27, 
+0x9d, 0x93, 0x50, 0x54, 0xb6, 0x8f, 0xd3, 0xe7, 
+0x5d, 0x3a, 0x45, 0x74, 0x38, 0x1c, 0x7d, 0x4a, 
+0x65, 0x68, 0x6b, 0x69, 0xc9, 0x95, 0x65, 0x79, 
+0x2a, 0x80, 0xb7, 0x87, 0x28, 0x80, 0x08, 0xfa, 
+0xaf, 0x03, 0x91, 0xce, 0x9c, 0x88, 0xd9, 0x8b, 
+0xf8, 0x23, 0xda, 0x1b, 0x4a, 0xf3, 0xbf, 0x60, 
+0x88, 0xed, 0x37, 0x46, 0x7a, 0x02, 0xef, 0xab, 
+0x94, 0x1a, 0x03, 0xdd, 0xdd, 0x20, 0x42, 0x12, 
+0xf8, 0x91, 0x1b, 0xdf, 0x60, 0xa7, 0xee, 0x2d, 
+0xc2, 0x90, 0xfa, 0x3f, 0xf9, 0xbc, 0xe9, 0x70, 
+0xe4, 0xd8, 0xe1, 0xc8, 0x77, 0x80, 0x03, 0x41, 
+0xef, 0xb7, 0xbd, 0x10, 0x68, 0x9f, 0xf4, 0xfb, 
+0x88, 0x10, 0xa9, 0x00, 0xd1, 0x10, 0x90, 0xfb, 
+0xb5, 0x7d, 0xc0, 0xf4, 0x5a, 0xfc, 0x6d, 0x31, 
+0x9b, 0x3b, 0xe1, 0x44, 0x21, 0x0e, 0x1e, 0x00, 
+0x76, 0xec, 0xd8, 0x01, 0x4f, 0x6b, 0x2b, 0x74, 
+0x9b, 0xb5, 0x7a, 0x48, 0x09, 0x5c, 0x3f, 0x6d, 
+0xb3, 0xa8, 0xe9, 0xa1, 0x19, 0x71, 0xe0, 0x61, 
+0xc3, 0x87, 0x88, 0xe9, 0x4b, 0x10, 0xa1, 0x1c, 
+0x88, 0x64, 0xfa, 0x1f, 0x37, 0xb9, 0xae, 0x3b, 
+0x22, 0xde, 0xc8, 0x57, 0xda, 0xd0, 0x3a, 0x3f, 
+0x42, 0xe3, 0x1b, 0xec, 0xd4, 0xa1, 0x3c, 0x40, 
+0x11, 0x63, 0xd3, 0x60, 0x41, 0x65, 0x01, 0xa6, 
+0xcd, 0x9f, 0x8a, 0x86, 0xad, 0x8d, 0xc8, 0x2a, 
+0x73, 0xc1, 0xe6, 0xb4, 0x20, 0xd2, 0x19, 0x85, 
+0x60, 0xc6, 0xa4, 0x2f, 0x52, 0x61, 0x00, 0x11, 
+0xa2, 0x29, 0xa2, 0x60, 0x7d, 0xc6, 0x80, 0x6b, 
+0x1d, 0xe7, 0x2f, 0x31, 0xce, 0x9c, 0x51, 0x93, 
+0x68, 0xa1, 0x37, 0x36, 0x34, 0xc0, 0x22, 0x8a, 
+0x70, 0xba, 0x5c, 0xf0, 0x59, 0xd8, 0x82, 0x5b, 
+0x3e, 0x7a, 0xf9, 0xb5, 0xeb, 0x9f, 0x79, 0x46, 
+0x4c, 0x10, 0x90, 0x6e, 0x51, 0x2c, 0x12, 0xb1, 
+0x95, 0x67, 0xda, 0x0a, 0xb7, 0x19, 0x44, 0xef, 
+0x4c, 0x56, 0x41, 0x8c, 0x88, 0x18, 0x19, 0x4a, 
+0xa3, 0xea, 0x0c, 0xde, 0x4f, 0x8d, 0xde, 0xe5, 
+0x6a, 0x8f, 0x56, 0x9f, 0xec, 0x0f, 0x47, 0x66, 
+0x7c, 0x43, 0x94, 0x40, 0x4c, 0xf8, 0x8b, 0x63, 
+0xa3, 0x31, 0x99, 0x89, 0xd9, 0x97, 0xcd, 0x82, 
+0x35, 0xdd, 0x8a, 0xcf, 0x5f, 0x5f, 0x8b, 0x8d, 
+0x2f, 0x7d, 0x13, 0x33, 0xbe, 0x41, 0xa0, 0x85, 
+0x04, 0x11, 0x02, 0xdc, 0xdf, 0x38, 0x11, 0xbf, 
+0x11, 0x2a, 0xdf, 0x58, 0x41, 0xcf, 0x3f, 0x61, 
+0xa6, 0x18, 0x07, 0xef, 0xeb, 0xed, 0x45, 0xc0, 
+0xef, 0x47, 0x7b, 0x5b, 0x1b, 0xdc, 0x45, 0x45, 
+0x68, 0x93, 0x43, 0x82, 0xc6, 0x14, 0xdf, 0xea, 
+0xeb, 0xae, 0xd3, 0x13, 0x04, 0xe8, 0x34, 0x24, 
+0x6a, 0x46, 0x54, 0x54, 0xd5, 0xf0, 0xe4, 0x34, 
+0x21, 0x27, 0xd5, 0x6e, 0xcb, 0xd9, 0xac, 0xb2, 
+0x70, 0x38, 0x6c, 0xfa, 0x10, 0x31, 0x06, 0x91, 
+0xa1, 0xfb, 0x05, 0x75, 0x93, 0x9e, 0x19, 0xfa, 
+0x39, 0x55, 0x42, 0x2b, 0x35, 0xbf, 0xd1, 0x6e, 
+0x1e, 0xb1, 0xf1, 0x0d, 0x77, 0xab, 0x1b, 0x1c, 
+0xc7, 0xc3, 0x55, 0x94, 0x85, 0xf1, 0x27, 0x57, 
+0xa2, 0x6e, 0x73, 0x3d, 0x72, 0x2b, 0x72, 0xe0, 
+0xd9, 0xdd, 0x09, 0xad, 0xcb, 0xe8, 0x33, 0x3d, 
+0x31, 0x01, 0x58, 0x30, 0x05, 0x88, 0xa6, 0x08, 
+0x2d, 0x8b, 0x61, 0xdf, 0x7c, 0x2f, 0xbe, 0xf8, 
+0x79, 0x3d, 0x18, 0x28, 0x60, 0x10, 0x94, 0xaa, 
+0x45, 0xf4, 0x84, 0x49, 0xe5, 0x89, 0xba, 0xff, 
+0x62, 0xed, 0x5a, 0xd4, 0x4c, 0x99, 0x82, 0x83, 
+0x6d, 0x6d, 0xd8, 0xa6, 0x76, 0xe2, 0x40, 0xd8, 
+0xff, 0x05, 0xd9, 0x67, 0xdc, 0x3c, 0xc0, 0x04, 
+0x99, 0x06, 0x59, 0xa7, 0x51, 0xe8, 0x54, 0x01, 
+0x4c, 0xd3, 0x06, 0x83, 0x9b, 0x9a, 0x61, 0x29, 
+0xe8, 0xd6, 0xa1, 0x34, 0x06, 0xa3, 0x1d, 0xd5, 
+0x06, 0x53, 0x05, 0x91, 0xa9, 0x30, 0xa8, 0x0a, 
+0x91, 0x53, 0x60, 0x30, 0x05, 0xa2, 0x6a, 0xb3, 
+0x48, 0x1f, 0x5b, 0x2d, 0xe6, 0x06, 0x2e, 0xc0, 
+0xcd, 0x35, 0x04, 0x71, 0x21, 0x67, 0x63, 0xf6, 
+0x91, 0xdc, 0xea, 0xf6, 0x81, 0x1e, 0xe4, 0x09, 
+0xe1, 0xe3, 0x78, 0x34, 0xfd, 0xa9, 0x09, 0xb5, 
+0xdf, 0xd4, 0x82, 0x93, 0x38, 0x9c, 0xf6, 0xe3, 
+0x99, 0xe8, 0xde, 0xe9, 0x85, 0x6c, 0xc8, 0x09, 
+0xc0, 0x46, 0x3e, 0x07, 0x5f, 0xb5, 0x06, 0x5f, 
+0x75, 0x10, 0x5d, 0x93, 0x43, 0x08, 0xe6, 0x45, 
+0x12, 0x4d, 0x0f, 0x4a, 0x28, 0xaa, 0x37, 0x56, 
+0x1b, 0x57, 0xcc, 0x3e, 0x23, 0x61, 0xec, 0x5b, 
+0xb6, 0x6c, 0x41, 0x66, 0x5a, 0x1a, 0x1a, 0xeb, 
+0xeb, 0x91, 0x5a, 0x3a, 0x06, 0x6f, 0xab, 0x4d, 
+0x4d, 0xbc, 0x4a, 0xaf, 0x8e, 0x67, 0x3f, 0x41, 
+0x80, 0xa1, 0x6b, 0x16, 0x8d, 0x2a, 0xb0, 0xcb, 
+0x56, 0x8c, 0x4b, 0x2f, 0xc3, 0xb7, 0x1d, 0xdb, 
+0x61, 0xa8, 0x9a, 0x8b, 0x27, 0x82, 0x2b, 0xd3, 
+0x56, 0xd8, 0xa2, 0x98, 0xc1, 0x40, 0x44, 0xed, 
+0xad, 0x32, 0x88, 0x02, 0x91, 0xa9, 0x30, 0x98, 
+0x1a, 0xdb, 0x12, 0x05, 0x52, 0xd0, 0xea, 0x10, 
+0xdf, 0xb0, 0x81, 0x7e, 0x4a, 0xbc, 0x64, 0xa1, 
+0x61, 0xe7, 0xe6, 0x41, 0x62, 0x62, 0xbf, 0xf1, 
+0xb1, 0x43, 0x18, 0xdf, 0x60, 0x72, 0x8c, 0x34, 
+0x82, 0x68, 0x0e, 0x60, 0xee, 0x35, 0xa0, 0x84, 
+0x15, 0xac, 0x7b, 0x6e, 0x3d, 0x50, 0x68, 0x41, 
+0xa8, 0x52, 0x46, 0xd7, 0x78, 0x0e, 0xc1, 0xea, 
+0x28, 0xd4, 0x0c, 0x63, 0x40, 0x07, 0x28, 0xd9, 
+0xf8, 0x78, 0x85, 0x47, 0x29, 0x2b, 0xc4, 0x71, 
+0x25, 0xb1, 0x7e, 0x64, 0x73, 0x73, 0x33, 0xda, 
+0xf7, 0xef, 0xc7, 0xf4, 0x19, 0x33, 0xb0, 0x61, 
+0xf3, 0x46, 0xfc, 0x23, 0xab, 0x23, 0xc4, 0x7a, 
+0x8c, 0xe5, 0xab, 0xe7, 0xdd, 0xd0, 0x34, 0x64, 
+0x1a, 0xd4, 0x4d, 0x6a, 0xd5, 0xcd, 0x08, 0xd2, 
+0x6d, 0x39, 0x08, 0x6a, 0x01, 0x38, 0x2c, 0xa9, 
+0x88, 0xe8, 0x51, 0x58, 0x78, 0x01, 0x61, 0xc5, 
+0x57, 0xc8, 0x71, 0x22, 0xd2, 0x6d, 0x05, 0xf5, 
+0x51, 0xbd, 0x47, 0x8c, 0xe8, 0xbd, 0xa5, 0x06, 
+0x53, 0x20, 0x52, 0x05, 0x06, 0xa7, 0x42, 0x67, 
+0x2a, 0x24, 0xa6, 0x42, 0xf2, 0x5a, 0x9d, 0xe2, 
+0x9f, 0xac, 0x30, 0x3f, 0x66, 0x9d, 0x74, 0x11, 
+0x73, 0xe1, 0x54, 0xca, 0xd1, 0xbe, 0x2c, 0x0f, 
+0x01, 0x7d, 0x88, 0x0e, 0x90, 0x7f, 0x71, 0x3a, 
+0xb0, 0x0d, 0xd0, 0x8f, 0xcb, 0x84, 0xbf, 0x42, 
+0x82, 0x61, 0x8b, 0xb7, 0xb5, 0xcc, 0xbe, 0x96, 
+0xd9, 0xa1, 0x9b, 0xa3, 0x93, 0xbe, 0xa9, 0xd1, 
+0xaf, 0x3d, 0x67, 0x8e, 0x08, 0x00, 0x7e, 0xbf, 
+0x1f, 0x91, 0x48, 0x04, 0x86, 0xae, 0x23, 0x18, 
+0x0e, 0x61, 0x63, 0x66, 0x00, 0x5a, 0xaf, 0xfe, 
+0xfc, 0x73, 0x67, 0xdd, 0xf0, 0x12, 0x06, 0x45, 
+0x4c, 0x01, 0x54, 0xe1, 0x18, 0xc7, 0xb0, 0xbd, 
+0x7b, 0x13, 0x44, 0x4e, 0x46, 0x69, 0x5a, 0x05, 
+0xdc, 0x76, 0x37, 0x64, 0xde, 0x82, 0x8d, 0xed, 
+0x5f, 0xc3, 0x42, 0x6c, 0x88, 0x2a, 0x6a, 0x85, 
+0xc0, 0x5b, 0xa8, 0xc5, 0x9a, 0xf6, 0x6d, 0x48, 
+0xf5, 0xe6, 0xe8, 0xa6, 0x9a, 0x1b, 0x53, 0x82, 
+0x02, 0xa3, 0x8f, 0x0c, 0x91, 0xa9, 0x90, 0x5a, 
+0xac, 0xd9, 0xe2, 0xca, 0x14, 0x6a, 0xfe, 0x53, 
+0xed, 0x60, 0x97, 0x84, 0x72, 0xe8, 0xa4, 0x43, 
+0x79, 0xc0, 0xd0, 0x06, 0xa8, 0x51, 0x21, 0xc1, 
+0xac, 0xc8, 0x44, 0xbc, 0xbf, 0xc7, 0x06, 0xfd, 
+0xed, 0x50, 0x35, 0xc5, 0x8c, 0x4f, 0x0c, 0xca, 
+0x28, 0x93, 0x8b, 0x48, 0x5e, 0xb6, 0x13, 0x8c, 
+0x31, 0x6c, 0xff, 0xf6, 0x5b, 0x58, 0x25, 0x09, 
+0x25, 0x65, 0x65, 0xf8, 0xc8, 0xb3, 0x13, 0x2d, 
+0x51, 0xff, 0x9a, 0x88, 0xcf, 0x75, 0xdb, 0x60, 
+0xf0, 0x09, 0x13, 0xfc, 0xc3, 0xae, 0x4b, 0x76, 
+0x8a, 0xa2, 0xe5, 0xa6, 0xb4, 0xd4, 0xfc, 0xfd, 
+0x26, 0x31, 0x51, 0xd7, 0xb3, 0x0d, 0x7b, 0x7c, 
+0xbb, 0x00, 0x30, 0x54, 0x38, 0x2b, 0x30, 0xde, 
+0x55, 0x09, 0x91, 0x27, 0x50, 0x8c, 0x10, 0x17, 
+0x55, 0xfc, 0x93, 0xac, 0xbc, 0x3d, 0x3d, 0xd5, 
+0xea, 0xdc, 0xac, 0x21, 0xe2, 0x4f, 0x9e, 0x25, 
+0x92, 0x1e, 0x1c, 0xab, 0x65, 0x39, 0xd6, 0xfb, 
+0x9c, 0xaa, 0xf4, 0x5b, 0x47, 0x17, 0x9a, 0xb9, 
+0x01, 0x03, 0x3e, 0x1c, 0x09, 0x83, 0xcb, 0x24, 
+0xee, 0x17, 0x2c, 0xb1, 0x37, 0xb4, 0x03, 0x54, 
+0xb3, 0xb5, 0x46, 0xbb, 0x71, 0xe1, 0x7c, 0x01, 
+0x00, 0xbe, 0x5c, 0xbf, 0x1e, 0x35, 0x35, 0x35, 
+0xd8, 0x5d, 0x5f, 0x0f, 0x2f, 0xaf, 0x63, 0x3d, 
+0x6d, 0x6d, 0x94, 0x23, 0xfc, 0x55, 0xaf, 0x5d, 
+0x74, 0x91, 0x39, 0x1c, 0x01, 0x03, 0xba, 0xc2, 
+0x84, 0x10, 0x72, 0xf1, 0xd8, 0xc7, 0x96, 0x1b, 
+0x54, 0xbf, 0x21, 0x18, 0xf6, 0xe4, 0x08, 0x44, 
+0x84, 0x43, 0x4c, 0xc7, 0x78, 0xe7, 0x64, 0x04, 
+0x35, 0x3f, 0x42, 0x5a, 0x18, 0x01, 0x2d, 0x00, 
+0xcd, 0x30, 0xc0, 0x13, 0x01, 0xa2, 0x68, 0xeb, 
+0x05, 0x87, 0xe6, 0x88, 0xd2, 0x53, 0xc5, 0x13, 
+0x49, 0x92, 0x38, 0x1b, 0x24, 0x62, 0x85, 0xc8, 
+0x59, 0x21, 0x71, 0x7d, 0x5b, 0x62, 0x03, 0x2f, 
+0x8b, 0xc1, 0xe8, 0x19, 0x3e, 0x23, 0x7c, 0x71, 
+0x57, 0x86, 0xe1, 0x54, 0x31, 0xb0, 0xeb, 0xdb, 
+0xff, 0xe1, 0xc6, 0xe0, 0xce, 0x6e, 0xfc, 0x58, 
+0xbc, 0x2b, 0x3c, 0xdc, 0x07, 0x22, 0x56, 0x6f, 
+0x0a, 0x2e, 0x6e, 0x59, 0x40, 0x97, 0x2c, 0x3e, 
+0x97, 0x6b, 0x6e, 0x6e, 0x46, 0xfd, 0xae, 0x5d, 
+0xa8, 0xaa, 0xaa, 0x42, 0xed, 0xee, 0x06, 0xbc, 
+0x9a, 0xb6, 0x27, 0x40, 0xba, 0xf1, 0xe3, 0xe7, 
+0xe6, 0xdd, 0xf4, 0xbf, 0xc3, 0x81, 0x1f, 0x42, 
+0x40, 0x3c, 0xa6, 0x91, 0xeb, 0xc5, 0xd2, 0x92, 
+0x09, 0xbf, 0xd7, 0x4d, 0xe5, 0xf2, 0x40, 0xa4, 
+0x3d, 0xdd, 0x2e, 0xa6, 0x21, 0xd7, 0x56, 0x08, 
+0xbf, 0xd6, 0x8b, 0x89, 0xce, 0xa9, 0xd8, 0xe5, 
+0xdd, 0x89, 0x90, 0x1e, 0x06, 0x07, 0x1e, 0x3c, 
+0x11, 0x61, 0x91, 0xec, 0x07, 0x0c, 0x62, 0x78, 
+0xa3, 0x51, 0xdf, 0x44, 0x89, 0xb3, 0xf4, 0x11, 
+0x60, 0x83, 0x48, 0x92, 0x88, 0xe0, 0xac, 0x20, 
+0x76, 0xe2, 0x0d, 0x2e, 0xe8, 0x90, 0x83, 0xe7, 
+0x76, 0xa6, 0x9a, 0x36, 0xfd, 0x10, 0x2d, 0xf1, 
+0xc3, 0xb7, 0xb7, 0x07, 0x1f, 0x9b, 0xb9, 0x76, 
+0x86, 0xf6, 0xf0, 0x55, 0xd7, 0x4b, 0x4a, 0x34, 
+0x82, 0x8d, 0x1b, 0x36, 0x60, 0xdc, 0xb8, 0x71, 
+0x68, 0x6a, 0x6a, 0xc2, 0xc7, 0x19, 0x07, 0x59, 
+0x7b, 0x4f, 0x70, 0xe5, 0xf3, 0x67, 0xdd, 0x72, 
+0xc7, 0xa1, 0xc0, 0x27, 0x4a, 0x60, 0x70, 0x7c, 
+0xc3, 0x56, 0xeb, 0xaf, 0xee, 0x5d, 0x72, 0x4b, 
+0x50, 0x60, 0xc5, 0x4e, 0x47, 0xf1, 0x2b, 0x4c, 
+0x90, 0x22, 0xf5, 0xbe, 0x6d, 0xe8, 0x88, 0xb4, 
+0x62, 0x87, 0x77, 0x33, 0x32, 0xac, 0x19, 0xa8, 
+0x76, 0x55, 0x43, 0xe4, 0x39, 0xe8, 0x34, 0x8a, 
+0x90, 0xea, 0x75, 0xeb, 0x6a, 0x64, 0xa2, 0xdd, 
+0xe6, 0x6c, 0xe4, 0x24, 0xae, 0x71, 0x68, 0x49, 
+0xc4, 0xca, 0x44, 0xf7, 0x2b, 0x4e, 0xfb, 0x2b, 
+0xb9, 0xa9, 0x39, 0x4b, 0x2a, 0x3b, 0x6c, 0x1f, 
+0x64, 0xaa, 0xcc, 0x64, 0x49, 0x92, 0x1e, 0xea, 
+0x15, 0x74, 0x50, 0x97, 0x67, 0xe0, 0x1a, 0x82, 
+0x22, 0xbd, 0xc5, 0x89, 0x89, 0x59, 0x65, 0x82, 
+0x28, 0xf0, 0x68, 0x6a, 0x6a, 0x82, 0xa7, 0xb5, 
+0x15, 0xe9, 0x99, 0x99, 0xa8, 0x95, 0x7a, 0x70, 
+0x20, 0xe0, 0xfb, 0xb8, 0xe4, 0x2b, 0xef, 0xd2, 
+0xc3, 0x81, 0x3f, 0xa4, 0x02, 0x06, 0xc7, 0xa2, 
+0x82, 0x15, 0x05, 0x82, 0x9c, 0xbe, 0x3a, 0xaa, 
+0x05, 0x7e, 0x10, 0x8c, 0x74, 0x88, 0x84, 0xf0, 
+0xa8, 0xca, 0x9c, 0x0a, 0x83, 0x1a, 0x70, 0x5a, 
+0x73, 0x50, 0xdf, 0x53, 0x0b, 0x4a, 0x19, 0x00, 
+0x02, 0x9e, 0x93, 0x99, 0x2c, 0xa7, 0xec, 0x54, 
+0xf5, 0x50, 0x06, 0x35, 0xcc, 0x82, 0xfe, 0x52, 
+0xb0, 0x26, 0x94, 0x21, 0x71, 0x56, 0x88, 0xc4, 
+0x0a, 0xb5, 0x24, 0x78, 0xa0, 0xeb, 0xd2, 0xbd, 
+0xb9, 0xc1, 0xe9, 0x9d, 0xfc, 0xb0, 0xf2, 0x4f, 
+0x28, 0x63, 0x50, 0xc9, 0xf4, 0xa9, 0x62, 0xd6, 
+0xda, 0x33, 0xb4, 0xdf, 0xfd, 0xe4, 0x3a, 0x69, 
+0xd3, 0xc6, 0x8d, 0xb0, 0x59, 0x2c, 0x08, 0x05, 
+0x02, 0xf0, 0x90, 0x28, 0x5e, 0x67, 0xdb, 0x1b, 
+0x52, 0x3b, 0xf9, 0x59, 0xab, 0x2f, 0xb8, 0xad, 
+0x7d, 0x54, 0x08, 0x88, 0xc7, 0xc2, 0xd2, 0x5f, 
+0x57, 0x8b, 0xb0, 0xaf, 0x8a, 0xa8, 0x3d, 0xa7, 
+0x84, 0xa2, 0xdd, 0x5c, 0x8a, 0xe0, 0xc0, 0x94, 
+0xac, 0x93, 0x11, 0x31, 0xc2, 0x90, 0x38, 0x19, 
+0x75, 0x3d, 0xb5, 0x31, 0x12, 0x20, 0x42, 0xe4, 
+0x2d, 0x9a, 0x24, 0xd9, 0x76, 0x2a, 0x7a, 0xb0, 
+0x18, 0x14, 0x99, 0x12, 0xb1, 0x25, 0x4a, 0x21, 
+0x4e, 0x80, 0xc4, 0xd9, 0x20, 0xf2, 0x16, 0x23, 
+0x54, 0xdd, 0xdd, 0xd1, 0x7e, 0x79, 0x9d, 0x3b, 
+0x5c, 0xe1, 0xed, 0x07, 0x9b, 0xf4, 0x51, 0xf8, 
+0x90, 0xd2, 0x20, 0x06, 0x72, 0x1b, 0xdd, 0xec, 
+0x2a, 0x79, 0x21, 0xa6, 0x96, 0xe6, 0x11, 0x6a, 
+0x9a, 0xa8, 0xdf, 0xbe, 0x1d, 0x79, 0xe5, 0xa5, 
+0x58, 0xa9, 0xac, 0xf1, 0x09, 0x5e, 0xfe, 0xca, 
+0xe7, 0xe7, 0xfe, 0xf4, 0xef, 0x23, 0xc1, 0x74, 
+0x54, 0xdf, 0x12, 0x3b, 0xbf, 0xe4, 0xc1, 0xd3, 
+0x79, 0x4e, 0xfa, 0x5d, 0x28, 0xd2, 0x35, 0x45, 
+0xd1, 0x02, 0x10, 0x88, 0x88, 0x09, 0xce, 0xa9, 
+0x50, 0x0c, 0x05, 0x69, 0x72, 0x26, 0x76, 0x79, 
+0xb7, 0x83, 0x87, 0x00, 0x8e, 0x88, 0x90, 0xc4, 
+0x14, 0xbf, 0xc8, 0xcb, 0x7b, 0x14, 0xcd, 0x3f, 
+0x81, 0x83, 0x68, 0x49, 0x06, 0x9f, 0xac, 0x0e, 
+0x41, 0x94, 0x22, 0xde, 0x53, 0x5a, 0x02, 0x07, 
+0x17, 0xef, 0xca, 0x8d, 0xb8, 0x7d, 0x43, 0x3e, 
+0x25, 0x1e, 0x6c, 0x96, 0x3f, 0x58, 0x3b, 0x47, 
+0xfb, 0xe5, 0xe2, 0x8b, 0xa4, 0xcf, 0x3f, 0xfd, 
+0x14, 0xa7, 0xcc, 0x9c, 0x89, 0x2f, 0xd7, 0xaf, 
+0xc3, 0x27, 0x6e, 0x0f, 0xed, 0xea, 0x0a, 0x3d, 
+0xfc, 0xe2, 0x9c, 0x3b, 0xee, 0x1a, 0x29, 0x96, 
+0x63, 0xfa, 0xa2, 0xe4, 0x05, 0x25, 0xbf, 0x5d, 
+0x4c, 0xc0, 0xaf, 0x08, 0x44, 0x3c, 0xc7, 0xa9, 
+0x7a, 0x10, 0xa9, 0x62, 0x3a, 0xa6, 0x66, 0xcf, 
+0xc0, 0x37, 0x1d, 0xeb, 0xc1, 0x18, 0x01, 0x4f, 
+0x44, 0xf0, 0x44, 0xe8, 0x33, 0xca, 0xd4, 0x76, 
+0x8e, 0x17, 0x3a, 0x14, 0x25, 0x34, 0x51, 0x20, 
+0x32, 0xd7, 0xaf, 0x04, 0xdb, 0x40, 0xa3, 0xb4, 
+0x90, 0xde, 0xf6, 0x79, 0x0d, 0xb4, 0x6d, 0xd1, 
+0x4e, 0xa7, 0x96, 0x16, 0x1a, 0xd6, 0xf8, 0x8a, 
+0x77, 0x8c, 0xa3, 0x37, 0xb8, 0x17, 0x41, 0x56, 
+0x7d, 0x9c, 0x2b, 0x23, 0x03, 0x01, 0xbf, 0x1f, 
+0x9b, 0x24, 0x0f, 0xbe, 0x0e, 0xb7, 0xbc, 0xff, 
+0xf2, 0xec, 0xa5, 0x67, 0xb3, 0xf8, 0x77, 0x34, 
+0x47, 0x10, 0xc7, 0xf4, 0x45, 0xc9, 0xbf, 0x35, 
+0x2f, 0xfb, 0xeb, 0x1b, 0xcd, 0x4b, 0xcb, 0xd3, 
+0x6c, 0x39, 0xb7, 0x39, 0xd3, 0x4a, 0x5b, 0xa3, 
+0x2c, 0x8a, 0x75, 0xed, 0xef, 0x23, 0x6a, 0x06, 
+0xa1, 0xb1, 0x08, 0x34, 0x1a, 0x7b, 0xa8, 0x34, 
+0x8c, 0x90, 0xda, 0x93, 0x17, 0x8e, 0xf6, 0x4c, 
+0x96, 0x65, 0x5b, 0x33, 0x27, 0x71, 0x75, 0xfd, 
+0xe6, 0x38, 0xd0, 0x2c, 0xb5, 0x88, 0x92, 0x91, 
+0xf7, 0x66, 0x85, 0x73, 0xca, 0x2d, 0x0b, 0x3d, 
+0xf9, 0x6f, 0x8c, 0x0f, 0x40, 0xe5, 0x06, 0x18, 
+0x1f, 0x85, 0x89, 0x0a, 0x7f, 0x99, 0x91, 0x9b, 
+0xc2, 0x71, 0x07, 0xf7, 0xef, 0xc7, 0xd8, 0xb2, 
+0x32, 0xec, 0x56, 0x3a, 0xb0, 0xce, 0x68, 0xda, 
+0x25, 0xf7, 0xc8, 0x57, 0x1e, 0x09, 0x78, 0x60, 
+0x14, 0x7f, 0x2f, 0x40, 0x08, 0x21, 0x17, 0x14, 
+0x3f, 0x7c, 0x3f, 0x65, 0xfa, 0xb5, 0xde, 0xd0, 
+0xfe, 0x2c, 0x4a, 0x4d, 0xf0, 0x88, 0x65, 0x9f, 
+0xeb, 0x53, 0x01, 0x4f, 0x62, 0x65, 0x21, 0x10, 
+0x11, 0x36, 0x4b, 0xe6, 0x4e, 0xc3, 0xd4, 0x1c, 
+0xd4, 0xd0, 0x0b, 0x25, 0xce, 0x36, 0xc8, 0x28, 
+0xad, 0x10, 0xfb, 0xd6, 0x14, 0x91, 0x3c, 0x7f, 
+0x5b, 0xd3, 0xe2, 0x0d, 0xae, 0xf6, 0x59, 0x75, 
+0x16, 0x83, 0xd3, 0x51, 0xb1, 0xb9, 0xca, 0xf8, 
+0x51, 0xde, 0x6c, 0x7e, 0x8c, 0x33, 0x85, 0x74, 
+0x1e, 0x3c, 0x08, 0xc9, 0x95, 0x86, 0xc7, 0xf1, 
+0x69, 0x8f, 0xd8, 0x21, 0x5c, 0xf6, 0xd2, 0xd9, 
+0xcb, 0x3e, 0xfc, 0xee, 0x91, 0x7e, 0x4f, 0x04, 
+0xc4, 0x63, 0x3e, 0x59, 0x22, 0xdb, 0x4a, 0x8a, 
+0x1e, 0xd7, 0xcc, 0xc8, 0xe2, 0x9e, 0xd0, 0x7e, 
+0x07, 0xa3, 0x48, 0x94, 0x41, 0x9c, 0x80, 0xf8, 
+0xbe, 0x40, 0x64, 0x23, 0xc5, 0x9a, 0xb9, 0x5d, 
+0x37, 0x94, 0x31, 0xcc, 0xa0, 0x59, 0x09, 0xe0, 
+0x09, 0x9f, 0x48, 0xac, 0x23, 0xa8, 0xaf, 0xac, 
+0xbd, 0xb5, 0xe1, 0x87, 0x9f, 0x17, 0x9c, 0x14, 
+0x9e, 0x44, 0xcf, 0xae, 0x1e, 0x27, 0x86, 0x7d, 
+0x3e, 0xb8, 0xf2, 0x73, 0xb1, 0x5a, 0xfd, 0xdc, 
+0xec, 0xf1, 0x46, 0x1e, 0x78, 0x65, 0xce, 0x5d, 
+0xf7, 0x1e, 0xcd, 0x78, 0x47, 0x9d, 0x80, 0x78, 
+0x2c, 0x28, 0xba, 0x29, 0xc3, 0x22, 0x96, 0xae, 
+0x56, 0x54, 0xff, 0x82, 0x9e, 0x50, 0xab, 0x95, 
+0x80, 0xf4, 0x81, 0xef, 0x27, 0x80, 0xeb, 0x53, 
+0x88, 0x2c, 0x58, 0x43, 0xb2, 0xe4, 0xa8, 0x37, 
+0x74, 0xb5, 0x82, 0x30, 0x2e, 0x35, 0x99, 0x80, 
+0x38, 0x21, 0x12, 0xb1, 0xc2, 0x36, 0x8e, 0xf6, 
+0x56, 0x5d, 0xd3, 0x93, 0x71, 0xce, 0xc2, 0x39, 
+0x78, 0xf3, 0xb5, 0xd7, 0x70, 0xb0, 0x42, 0xc4, 
+0x06, 0x7f, 0xd3, 0x3b, 0x7f, 0x9d, 0x7d, 0xf7, 
+0xb9, 0x47, 0x3b, 0xce, 0xef, 0x8d, 0x80, 0x78, 
+0x9c, 0x3d, 0xf6, 0x9e, 0x22, 0x2b, 0xd2, 0x9f, 
+0x09, 0x6b, 0x3d, 0xb3, 0x7a, 0x43, 0x6d, 0x22, 
+0x47, 0xf8, 0x81, 0x65, 0x91, 0x54, 0x26, 0x16, 
+0xd1, 0xd1, 0x29, 0x4b, 0xd6, 0x03, 0xba, 0xaa, 
+0x55, 0xf3, 0x10, 0x85, 0xe4, 0x59, 0x42, 0xe2, 
+0xad, 0xa8, 0xba, 0x5a, 0xd4, 0xaa, 0x4e, 0x93, 
+0x25, 0x87, 0xc3, 0x81, 0xda, 0x60, 0x2b, 0x5e, 
+0xc7, 0xd6, 0x1d, 0x72, 0x40, 0x3a, 0xed, 0xa5, 
+0xb3, 0xef, 0xea, 0x3d, 0xda, 0xf1, 0x7d, 0xef, 
+0x04, 0xc4, 0x63, 0xbe, 0xfb, 0xde, 0x1a, 0x8b, 
+0x94, 0xba, 0x2a, 0xa4, 0x76, 0x4e, 0xf7, 0x47, 
+0x3c, 0x24, 0x99, 0x80, 0xe4, 0xb2, 0xe0, 0x89, 
+0x00, 0x9b, 0x9c, 0xd1, 0x2c, 0xf1, 0xb6, 0xb0, 
+0xa6, 0x85, 0xab, 0x04, 0x58, 0x20, 0x71, 0x36, 
+0x8c, 0x9b, 0xe9, 0x0a, 0x54, 0x9f, 0xcf, 0x1c, 
+0xa7, 0xcd, 0x9e, 0x89, 0x2f, 0x36, 0xae, 0xc7, 
+0xf3, 0xae, 0x2d, 0xdd, 0xb6, 0x4e, 0xe9, 0xe2, 
+0x97, 0xce, 0xbe, 0x7b, 0xcd, 0xb1, 0x8c, 0xeb, 
+0x98, 0x66, 0x81, 0x23, 0x89, 0xf7, 0x0e, 0xdc, 
+0xb7, 0xf5, 0x6f, 0xcd, 0x77, 0x9e, 0x2c, 0x8a, 
+0x8e, 0x39, 0x79, 0x19, 0x55, 0xdb, 0xad, 0x72, 
+0x5a, 0x6c, 0x96, 0x60, 0x11, 0x68, 0x34, 0xdc, 
+0x37, 0x63, 0x84, 0x61, 0x49, 0x35, 0x71, 0xd2, 
+0x74, 0x47, 0x49, 0xf5, 0x24, 0xa9, 0x8a, 0x13, 
+0x85, 0x5a, 0x88, 0x6c, 0xaf, 0xc2, 0x02, 0x28, 
+0x9f, 0x99, 0x65, 0xe3, 0x39, 0x03, 0x1d, 0x5d, 
+0x1d, 0x78, 0x27, 0x6b, 0x97, 0x29, 0x79, 0xf9, 
+0xc7, 0x8e, 0x15, 0x3c, 0xf0, 0x2f, 0x54, 0xc0, 
+0xe0, 0x38, 0x77, 0xec, 0xfd, 0x57, 0x70, 0x14, 
+0xcb, 0x7b, 0x22, 0x6d, 0xa5, 0x51, 0xd5, 0x07, 
+0x9e, 0x88, 0x10, 0x79, 0x01, 0x0b, 0x2f, 0x9e, 
+0x84, 0x68, 0x77, 0x18, 0x02, 0x15, 0xb1, 0xa7, 
+0x29, 0x8a, 0x03, 0x07, 0x55, 0xb3, 0xa2, 0x66, 
+0xe2, 0x81, 0x0b, 0xef, 0xce, 0x2f, 0x4c, 0xb1, 
+0xa7, 0xe0, 0x3d, 0x7d, 0x2b, 0xb6, 0x85, 0xda, 
+0xde, 0x7c, 0x6d, 0xf6, 0xf2, 0x0b, 0x46, 0x63, 
+0x1c, 0xff, 0x32, 0x05, 0x0c, 0x8e, 0xbf, 0xef, 
+0xfd, 0xc5, 0x8b, 0x6f, 0xed, 0xfb, 0xc5, 0xb8, 
+0x8c, 0xd4, 0x31, 0x77, 0xe6, 0x65, 0x4c, 0x38, 
+0xc0, 0xf3, 0x02, 0xa2, 0x46, 0x04, 0x9f, 0xbd, 
+0x51, 0x87, 0xee, 0xfd, 0x5e, 0xa8, 0x69, 0x0a, 
+0xc6, 0x4e, 0xb4, 0x82, 0x97, 0xa2, 0x7c, 0x9a, 
+0x1b, 0x8e, 0x7d, 0x4d, 0xbb, 0xd1, 0x8c, 0x6e, 
+0x6c, 0x54, 0xf7, 0x6e, 0x93, 0x34, 0x5c, 0x35, 
+0x5a, 0xe3, 0xf8, 0xb7, 0x11, 0x10, 0x8f, 0xb7, 
+0xf7, 0xde, 0xfd, 0xf0, 0x3b, 0xfb, 0xcd, 0xc2, 
+0x9c, 0xb4, 0xb2, 0x47, 0x72, 0xd3, 0xca, 0xbd, 
+0x9d, 0x7a, 0x18, 0x5a, 0x83, 0x15, 0xf8, 0x87, 
+0x88, 0x9d, 0x9f, 0xb4, 0x20, 0x10, 0x0d, 0x22, 
+0x35, 0x53, 0xe6, 0xd2, 0x8b, 0xf3, 0xf0, 0x9c, 
+0xfe, 0x49, 0xa7, 0x14, 0x90, 0x6e, 0xfd, 0xcb, 
+0xbc, 0xe5, 0xa3, 0xf6, 0xfb, 0xa2, 0x7f, 0x5b, 
+0x09, 0x0c, 0x17, 0x27, 0x8f, 0xb9, 0xc3, 0x9a, 
+0x2d, 0x64, 0xad, 0x32, 0x8c, 0xc8, 0x85, 0xe1, 
+0x40, 0x9b, 0x3d, 0x80, 0x30, 0x78, 0x22, 0x60, 
+0xe1, 0x35, 0xe7, 0xf9, 0x1b, 0x2e, 0x6b, 0x48, 
+0x8d, 0x78, 0x8d, 0xbb, 0x5f, 0x9f, 0x73, 0xdf, 
+0x43, 0xa3, 0x79, 0xcd, 0xff, 0x28, 0x02, 0xe2, 
+0x71, 0xa6, 0xe3, 0x16, 0x67, 0xaa, 0xd3, 0xfd, 
+0x87, 0xa8, 0xee, 0x9f, 0xdb, 0x15, 0xdc, 0x6d, 
+0x19, 0x3b, 0xfb, 0xf8, 0xed, 0xe6, 0x4d, 0x81, 
+0xfa, 0x37, 0xcf, 0x7c, 0xe0, 0x92, 0xd1, 0xbe, 
+0xd6, 0xa8, 0xfe, 0x78, 0x7a, 0xb4, 0xe2, 0xe3, 
+0xc0, 0x93, 0x5e, 0x00, 0xe7, 0xcf, 0x2e, 0xbc, 
+0xb3, 0xb4, 0x28, 0x73, 0xda, 0x33, 0x56, 0x92, 
+0x6e, 0x23, 0xed, 0xc2, 0x35, 0xdf, 0xf9, 0xc6, 
+0xa3, 0x88, 0xff, 0x48, 0x05, 0xfc, 0x2b, 0xe3, 
+0xff, 0x00, 0x37, 0xa7, 0xb9, 0x85, 0x81, 0xbd, 
+0xe2, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 
+0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/bigimgs/appicon64.png b/source/bitmaps/bigimgs/appicon64.png
new file mode 100644 (file)
index 0000000..a304dd3
Binary files /dev/null and b/source/bitmaps/bigimgs/appicon64.png differ
diff --git a/source/bitmaps/bigimgs/contactpersonicon.cpp b/source/bitmaps/bigimgs/contactpersonicon.cpp
new file mode 100644 (file)
index 0000000..318cbe1
--- /dev/null
@@ -0,0 +1,7828 @@
+#include <iostream>
+
+#ifndef BIGIMGS_CONTACTPERSONICON_CPP
+#define BIGIMGS_CONTACTPERSONICON_CPP
+
+static unsigned char bigimgs_contactpersonicon_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xf4, 0x78, 0xd4, 
+0xfa, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x20, 0x00, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xec, 0xbd, 0x69, 
+0x70, 0x5c, 0xd7, 0x79, 0xa7, 0xff, 0x3b, 0xe7, 
+0x2e, 0xdd, 0x8d, 0xc6, 0x42, 0x00, 0x14, 0x41, 
+0x82, 0x0b, 0x00, 0x2e, 0x12, 0x09, 0x70, 0x05, 
+0x25, 0x6b, 0xb5, 0xf6, 0x95, 0xda, 0xa8, 0x85, 
+0xda, 0x28, 0x6a, 0xdf, 0x52, 0xf3, 0x9f, 0x0f, 
+0xb3, 0xa4, 0x66, 0xe6, 0x43, 0xca, 0xe3, 0xca, 
+0xe4, 0x4b, 0x6a, 0xe6, 0x43, 0xa6, 0x92, 0x9a, 
+0xaa, 0x78, 0x26, 0xf1, 0x38, 0xb6, 0x63, 0x97, 
+0x14, 0xcb, 0x89, 0x53, 0xb1, 0x27, 0x5e, 0x12, 
+0x57, 0x25, 0xce, 0x4c, 0xe2, 0x25, 0x92, 0x05, 
+0x5a, 0x96, 0x2d, 0x12, 0x60, 0x48, 0x8a, 0x92, 
+0xb8, 0x83, 0x40, 0x2f, 0xf7, 0x9e, 0x73, 0xfe, 
+0x1f, 0x70, 0xcf, 0xe5, 0xe9, 0xdb, 0xb7, 0x81, 
+0x0b, 0xa0, 0x1b, 0xbd, 0xe0, 0x7d, 0xaa, 0xba, 
+0xba, 0xd1, 0xa0, 0xc0, 0x7b, 0x2f, 0x85, 0xfe, 
+0x3d, 0xf7, 0x3d, 0xef, 0x39, 0x87, 0x29, 0xa5, 
+0x40, 0x10, 0xc4, 0xc2, 0x60, 0x8c, 0xb1, 0x5a, 
+0xff, 0x1d, 0x8a, 0x7e, 0x49, 0x09, 0x82, 0xa8, 
+0x01, 0x8c, 0x3e, 0x5b, 0x08, 0x62, 0x6e, 0x92, 
+0x04, 0x7d, 0x35, 0x7f, 0x97, 0x92, 0x78, 0x05, 
+0x89, 0x01, 0x41, 0x10, 0x8b, 0x81, 0x04, 0x80, 
+0x20, 0x62, 0x98, 0x2b, 0xf0, 0xeb, 0xf1, 0x7b, 
+0x33, 0x97, 0x14, 0x90, 0x10, 0x10, 0x04, 0x31, 
+0x1f, 0x48, 0x00, 0x08, 0x22, 0x60, 0x31, 0xa1, 
+0xff, 0xf9, 0xcf, 0x7f, 0xbe, 0xea, 0x43, 0x01, 
+0x9f, 0xfb, 0xdc, 0xe7, 0x2a, 0xfe, 0x85, 0x24, 
+0x03, 0x04, 0x41, 0x2c, 0x16, 0x12, 0x00, 0x62, 
+0x59, 0xb3, 0x90, 0xd0, 0x5f, 0x48, 0xd8, 0x8f, 
+0x8d, 0x8d, 0x95, 0xfd, 0x37, 0x23, 0x23, 0x23, 
+0xf3, 0xfe, 0xe5, 0x8b, 0x93, 0x02, 0x92, 0x01, 
+0x82, 0x20, 0x16, 0x02, 0x09, 0x00, 0xb1, 0x2c, 
+0x99, 0x2d, 0xf8, 0xe7, 0x1b, 0xfa, 0xd1, 0x70, 
+0x3f, 0x70, 0xe0, 0xc0, 0x82, 0x8f, 0xeb, 0xcd, 
+0x37, 0xdf, 0x2c, 0xf9, 0x7a, 0x36, 0x49, 0x98, 
+0xaf, 0x0c, 0x90, 0x08, 0x10, 0x04, 0x61, 0x42, 
+0x02, 0x40, 0x2c, 0x2b, 0xe6, 0x13, 0xfc, 0x95, 
+0x42, 0xdf, 0x0c, 0xfc, 0x68, 0xd8, 0x1f, 0x3e, 
+0x7c, 0x78, 0xd1, 0x43, 0x01, 0xc3, 0xc3, 0xc3, 
+0x25, 0x07, 0x62, 0x4a, 0x41, 0x25, 0x21, 0x88, 
+0xca, 0x00, 0x89, 0x00, 0x41, 0x10, 0x73, 0x41, 
+0x02, 0x40, 0x2c, 0x0b, 0x92, 0x06, 0xff, 0x7c, 
+0x42, 0x3f, 0x2e, 0xec, 0x4f, 0x9e, 0x3c, 0xb9, 
+0x68, 0x01, 0xe8, 0xef, 0xef, 0x2f, 0xfb, 0xa5, 
+0xd4, 0x52, 0x30, 0x5f, 0x19, 0x20, 0x11, 0x20, 
+0x08, 0xa2, 0x12, 0x24, 0x00, 0x44, 0x4b, 0x93, 
+0x74, 0x8c, 0x3f, 0x2e, 0xf8, 0x93, 0x84, 0xbe, 
+0x19, 0xf8, 0x7b, 0xf7, 0xee, 0xc5, 0x47, 0x1f, 
+0x7d, 0xb4, 0x68, 0x01, 0x58, 0xb3, 0x66, 0x8d, 
+0xfa, 0xc9, 0x4f, 0x7e, 0x12, 0x7e, 0x1d, 0x15, 
+0x82, 0xa4, 0x32, 0x40, 0x22, 0x40, 0x10, 0xc4, 
+0x6c, 0x90, 0x00, 0x10, 0x2d, 0x4b, 0x92, 0xbb, 
+0xfe, 0x24, 0xc1, 0x6f, 0x86, 0xfe, 0x6c, 0x81, 
+0x7f, 0xe6, 0xcc, 0x99, 0xb2, 0x9f, 0x35, 0x39, 
+0x39, 0x59, 0xf2, 0xde, 0xe0, 0xe0, 0x20, 0xc6, 
+0xc7, 0xc7, 0x4b, 0xfe, 0x4c, 0x47, 0x47, 0x47, 
+0xd9, 0x2f, 0x61, 0x6f, 0x6f, 0x6f, 0xc9, 0x7b, 
+0x27, 0x4f, 0x9e, 0x0c, 0xbf, 0x36, 0x85, 0x60, 
+0x78, 0x78, 0x58, 0x25, 0x15, 0x01, 0x92, 0x00, 
+0x82, 0x20, 0x4c, 0x48, 0x00, 0x88, 0x96, 0xa3, 
+0x1a, 0xc1, 0x3f, 0x32, 0x32, 0x12, 0x1b, 0xfa, 
+0xfd, 0xfd, 0xfd, 0xb1, 0x81, 0x3f, 0x39, 0x39, 
+0xc9, 0x06, 0x07, 0x07, 0xc3, 0x9f, 0x75, 0xe1, 
+0xc2, 0x85, 0x79, 0x57, 0x02, 0xba, 0xba, 0xba, 
+0xc2, 0x5f, 0xc6, 0xf1, 0xf1, 0xf1, 0x12, 0x31, 
+0x30, 0x85, 0xa0, 0x92, 0x0c, 0x8c, 0x8d, 0x8d, 
+0x85, 0xaf, 0x49, 0x04, 0x08, 0x82, 0x98, 0x0b, 
+0x12, 0x00, 0xa2, 0xa5, 0x58, 0x48, 0xf8, 0xcf, 
+0x15, 0xfc, 0xe7, 0xce, 0x9d, 0x63, 0x23, 0x23, 
+0x23, 0x00, 0x2e, 0x87, 0xbe, 0x19, 0xf8, 0x3a, 
+0xec, 0xa7, 0xa6, 0xa6, 0x4a, 0x7e, 0x6e, 0x67, 
+0x67, 0x67, 0x62, 0x09, 0xb8, 0x78, 0xf1, 0x62, 
+0xc9, 0x2f, 0x62, 0x36, 0x9b, 0x55, 0xc0, 0x65, 
+0x29, 0x30, 0x85, 0x40, 0xcb, 0xc0, 0xd8, 0xd8, 
+0x18, 0xba, 0xbb, 0xbb, 0x15, 0x90, 0x5c, 0x04, 
+0x48, 0x02, 0x08, 0x82, 0xd0, 0x90, 0x00, 0x10, 
+0x2d, 0x43, 0xa5, 0xf0, 0x5f, 0x6c, 0xf0, 0x47, 
+0x43, 0x3f, 0x1a, 0xf8, 0xb9, 0x5c, 0x8e, 0xf5, 
+0xf5, 0xf5, 0x01, 0x00, 0xa6, 0xa7, 0xa7, 0xc3, 
+0x9f, 0x93, 0xcf, 0xe7, 0x13, 0x0b, 0x40, 0x3a, 
+0x9d, 0x0e, 0x7f, 0x11, 0xdb, 0xda, 0xda, 0x14, 
+0x00, 0x7c, 0xfc, 0xf1, 0xc7, 0xc8, 0x64, 0x32, 
+0x0a, 0x28, 0x15, 0x82, 0x38, 0x19, 0xd0, 0x55, 
+0x81, 0x6a, 0x89, 0x00, 0x49, 0x00, 0x41, 0xb4, 
+0x3e, 0x24, 0x00, 0x44, 0x4b, 0xb0, 0xd0, 0xf0, 
+0x37, 0xc7, 0xf8, 0x93, 0x04, 0xbf, 0x0e, 0x7d, 
+0x7d, 0x77, 0xaf, 0x03, 0x5f, 0x87, 0x7d, 0x36, 
+0x9b, 0x65, 0x00, 0x50, 0x28, 0x14, 0xca, 0x8e, 
+0xa7, 0x58, 0x2c, 0x86, 0xef, 0xb9, 0xae, 0x5b, 
+0xf6, 0x8b, 0x97, 0x4a, 0xa5, 0x14, 0x00, 0x4c, 
+0x4d, 0x4d, 0x29, 0xe0, 0xb2, 0x14, 0x68, 0x21, 
+0xd0, 0x55, 0x82, 0x6c, 0x36, 0xab, 0x92, 0x8a, 
+0x80, 0xd9, 0x23, 0x40, 0x12, 0x40, 0x10, 0x84, 
+0x09, 0x09, 0x00, 0xd1, 0xf4, 0xcc, 0x16, 0xfe, 
+0x49, 0xee, 0xfa, 0x67, 0x0b, 0xfe, 0xee, 0xee, 
+0xee, 0xf0, 0x6e, 0x5f, 0xdf, 0xe9, 0x4f, 0x4f, 
+0x4f, 0x33, 0x33, 0xf0, 0x75, 0xd8, 0xeb, 0x80, 
+0xcf, 0x64, 0x32, 0xe1, 0xdf, 0x61, 0x86, 0x7e, 
+0x25, 0x4c, 0x19, 0xc8, 0xe5, 0x72, 0xca, 0x7c, 
+0x2f, 0x95, 0x4a, 0x29, 0x53, 0x08, 0xda, 0xda, 
+0xda, 0x94, 0xae, 0x0c, 0xe8, 0xaa, 0xc0, 0xb9, 
+0x73, 0xe7, 0x94, 0x29, 0x02, 0x71, 0x43, 0x03, 
+0x73, 0x55, 0x03, 0x68, 0x48, 0x80, 0x20, 0x96, 
+0x1f, 0x24, 0x00, 0x44, 0xd3, 0x52, 0xcd, 0xbb, 
+0xfe, 0xfe, 0xfe, 0x7e, 0x36, 0x5b, 0xf0, 0x77, 
+0x74, 0x74, 0x84, 0x77, 0xfa, 0x3a, 0xf4, 0xcd, 
+0xc0, 0xd7, 0xaf, 0x3d, 0xcf, 0x63, 0x00, 0x90, 
+0x4e, 0xa7, 0x4b, 0xbe, 0x9e, 0x0d, 0xc7, 0x71, 
+0x54, 0xf0, 0xb3, 0x95, 0xf9, 0xb5, 0xeb, 0xba, 
+0xca, 0x14, 0x82, 0x38, 0x19, 0xb8, 0x78, 0xf1, 
+0xe2, 0x9c, 0x22, 0x10, 0x37, 0x2c, 0x40, 0xd5, 
+0x00, 0x82, 0x20, 0x48, 0x00, 0x88, 0xa6, 0x64, 
+0x3e, 0xe1, 0x9f, 0xf4, 0xae, 0xbf, 0x52, 0xf0, 
+0xe7, 0xf3, 0x79, 0x56, 0x28, 0x14, 0x98, 0x2e, 
+0xef, 0x17, 0x8b, 0x45, 0xa6, 0x43, 0xdf, 0xf3, 
+0x3c, 0x66, 0x86, 0xbd, 0xef, 0xfb, 0x0c, 0x00, 
+0x52, 0xa9, 0x14, 0x03, 0x00, 0xfd, 0xf5, 0x6c, 
+0xd8, 0xb6, 0xad, 0x00, 0xa0, 0x50, 0x28, 0x28, 
+0xfd, 0xb5, 0x29, 0x05, 0x8e, 0xe3, 0x28, 0x2d, 
+0x03, 0xba, 0x32, 0x30, 0x35, 0x35, 0xa5, 0x52, 
+0xa9, 0x94, 0x4a, 0x22, 0x02, 0xd1, 0x61, 0x81, 
+0x4a, 0xd5, 0x00, 0x92, 0x00, 0x82, 0x58, 0x5e, 
+0x90, 0x00, 0x10, 0x4d, 0x47, 0x35, 0xc2, 0x3f, 
+0x1a, 0xfc, 0x00, 0xd0, 0xdd, 0xdd, 0xcd, 0x2a, 
+0x05, 0x7f, 0xb1, 0x58, 0x64, 0x3a, 0xf8, 0x75, 
+0xe8, 0xeb, 0xc0, 0xf7, 0x7d, 0x9f, 0x65, 0xb3, 
+0x59, 0xe8, 0xd7, 0xbe, 0xef, 0xb3, 0xb6, 0xb6, 
+0xb6, 0x92, 0xf0, 0x17, 0x42, 0x94, 0x1d, 0xb3, 
+0x65, 0x59, 0xe1, 0x2f, 0x9f, 0x6d, 0xdb, 0x6a, 
+0x7a, 0x7a, 0x1a, 0xb6, 0x6d, 0x2b, 0xfd, 0x98, 
+0x9a, 0x9a, 0x0a, 0xbf, 0x76, 0x1c, 0x47, 0xc5, 
+0xc9, 0x80, 0x29, 0x02, 0x93, 0x93, 0x93, 0x4a, 
+0x0f, 0x0d, 0x9c, 0x3b, 0x77, 0x4e, 0x01, 0x33, 
+0x6b, 0x0c, 0xc4, 0x55, 0x03, 0x2a, 0xf5, 0x06, 
+0x90, 0x04, 0x10, 0xc4, 0xf2, 0x81, 0x04, 0x80, 
+0x68, 0x2a, 0x16, 0x12, 0xfe, 0x71, 0x77, 0xfd, 
+0xab, 0x57, 0xaf, 0x2e, 0x29, 0xf7, 0xcf, 0x16, 
+0xfc, 0xd1, 0xbb, 0xfd, 0x5c, 0x2e, 0xc7, 0x7d, 
+0xdf, 0x67, 0xa9, 0x54, 0x2a, 0x0c, 0x7c, 0xd7, 
+0x75, 0x99, 0x10, 0x82, 0xe9, 0xa0, 0x77, 0x5d, 
+0xb7, 0xa4, 0x02, 0x20, 0xa5, 0x2c, 0x3b, 0x6e, 
+0xce, 0x79, 0x78, 0xc7, 0x0f, 0x00, 0xc5, 0x62, 
+0x51, 0x01, 0x33, 0x62, 0x60, 0x59, 0x96, 0x2a, 
+0x16, 0x8b, 0xa1, 0x0c, 0x14, 0x0a, 0x85, 0xf0, 
+0xb5, 0x10, 0x42, 0xce, 0x47, 0x04, 0x74, 0x35, 
+0xe0, 0xd4, 0xa9, 0x53, 0xaa, 0x52, 0x6f, 0xc0, 
+0x7c, 0xfa, 0x02, 0x48, 0x02, 0x08, 0xa2, 0x35, 
+0x20, 0x01, 0x20, 0x9a, 0x86, 0x85, 0x34, 0xfb, 
+0x45, 0xc3, 0x5f, 0x8f, 0xf5, 0x47, 0xef, 0xfa, 
+0x3b, 0x3b, 0x3b, 0x99, 0x6e, 0xee, 0xb3, 0x6d, 
+0x9b, 0x9b, 0xc1, 0x3f, 0x3d, 0x3d, 0xcd, 0xd3, 
+0xe9, 0x34, 0xd3, 0xa1, 0x9f, 0xcf, 0xe7, 0x79, 
+0x34, 0xf4, 0x39, 0xe7, 0x1c, 0x98, 0x09, 0x7a, 
+0x21, 0x04, 0x73, 0x1c, 0x87, 0x01, 0x97, 0xef, 
+0xfc, 0xe3, 0x04, 0x00, 0xb8, 0x2c, 0x01, 0x96, 
+0x65, 0x29, 0xcf, 0xf3, 0x94, 0x65, 0x59, 0x4a, 
+0xbf, 0x27, 0xa5, 0x94, 0x71, 0x32, 0x20, 0x84, 
+0x90, 0xb6, 0x6d, 0xab, 0x7c, 0x3e, 0xaf, 0xda, 
+0xda, 0xda, 0x64, 0x54, 0x04, 0xba, 0xba, 0xba, 
+0x64, 0xa5, 0x61, 0x81, 0xd9, 0x86, 0x04, 0x48, 
+0x02, 0x08, 0x62, 0x79, 0x41, 0x02, 0x40, 0x34, 
+0x05, 0x8b, 0x0d, 0xff, 0xb8, 0xb1, 0xfe, 0xe8, 
+0x5d, 0xbf, 0x6e, 0xee, 0xbb, 0x74, 0xe9, 0x12, 
+0xd7, 0xa5, 0x7e, 0xcb, 0xb2, 0xb8, 0xef, 0xfb, 
+0xe1, 0x33, 0xe7, 0x9c, 0x9b, 0xa1, 0xaf, 0x03, 
+0x5f, 0xbf, 0x96, 0x52, 0xb2, 0x54, 0x2a, 0x05, 
+0x21, 0x04, 0xd3, 0x5f, 0xeb, 0xe3, 0x32, 0x5f, 
+0xeb, 0x90, 0xd7, 0xaf, 0xf5, 0xd7, 0xbe, 0xef, 
+0x2b, 0xfd, 0xb5, 0xeb, 0xba, 0xd2, 0xf3, 0x3c, 
+0xc5, 0x39, 0x57, 0xa6, 0x0c, 0x48, 0x29, 0x65, 
+0x9c, 0x08, 0x68, 0x09, 0xe8, 0xe8, 0xe8, 0x90, 
+0x53, 0x53, 0x53, 0x15, 0xab, 0x01, 0x71, 0x43, 
+0x02, 0x0b, 0xe9, 0x0b, 0x20, 0x09, 0x20, 0x88, 
+0xe6, 0x86, 0x04, 0x80, 0x68, 0x78, 0x6a, 0x1d, 
+0xfe, 0x17, 0x2e, 0x5c, 0xe0, 0xba, 0xdc, 0x6f, 
+0x59, 0x16, 0x9f, 0x2d, 0xf8, 0x2d, 0xcb, 0xe2, 
+0xc5, 0x62, 0x91, 0x9b, 0xa1, 0xef, 0x38, 0x0e, 
+0xf3, 0x3c, 0x8f, 0x4b, 0x29, 0x99, 0x6d, 0xdb, 
+0x61, 0xf0, 0xeb, 0xc0, 0xb7, 0x6d, 0xbb, 0x44, 
+0x02, 0xcc, 0xf0, 0xf7, 0x7d, 0x5f, 0x01, 0x97, 
+0x25, 0x80, 0x73, 0xae, 0x4c, 0x09, 0x90, 0x52, 
+0x4a, 0x53, 0x00, 0x5c, 0xd7, 0x95, 0xc5, 0x62, 
+0x51, 0xb9, 0xae, 0x2b, 0xa3, 0x22, 0xa0, 0x87, 
+0x06, 0x84, 0x10, 0xd2, 0x1c, 0x16, 0xe8, 0xe9, 
+0xe9, 0x91, 0xba, 0x1a, 0x10, 0x37, 0x24, 0xb0, 
+0x98, 0xbe, 0x00, 0x92, 0x00, 0x82, 0x68, 0x5e, 
+0x48, 0x00, 0x88, 0x86, 0x26, 0x69, 0xf8, 0x57, 
+0x9a, 0xe2, 0x57, 0x69, 0xbc, 0xdf, 0xb6, 0x6d, 
+0xae, 0xef, 0xfa, 0x27, 0x27, 0x27, 0x79, 0xb1, 
+0x58, 0x64, 0xb6, 0x6d, 0x73, 0xcf, 0xf3, 0x98, 
+0x6d, 0xdb, 0x61, 0xf8, 0x73, 0xce, 0x79, 0xb1, 
+0x58, 0xe4, 0xae, 0xeb, 0xb2, 0x62, 0xb1, 0xc8, 
+0x39, 0xe7, 0x5c, 0x87, 0x3d, 0xe7, 0x9c, 0xfb, 
+0xbe, 0xcf, 0x75, 0xe8, 0x9b, 0xaf, 0x95, 0x52, 
+0x4c, 0x0b, 0x81, 0x3e, 0xc6, 0xe8, 0x30, 0x40, 
+0xf4, 0xae, 0x9f, 0x31, 0x56, 0x22, 0x00, 0xb6, 
+0x6d, 0x4b, 0xdf, 0xf7, 0x95, 0x6d, 0xdb, 0x52, 
+0x8b, 0x80, 0xe3, 0x38, 0xd2, 0x94, 0x82, 0xa8, 
+0x08, 0xf8, 0xbe, 0x2f, 0x1d, 0xc7, 0x51, 0xbe, 
+0xef, 0xcb, 0xa4, 0xd5, 0x00, 0x73, 0x48, 0x80, 
+0x24, 0x80, 0x20, 0x96, 0x0f, 0x24, 0x00, 0x44, 
+0xc3, 0xb2, 0xd0, 0xf0, 0x8f, 0x1b, 0xef, 0x8f, 
+0x2b, 0xf9, 0xeb, 0xb1, 0x7e, 0xf3, 0xae, 0x3f, 
+0x9f, 0xcf, 0x73, 0xf3, 0xee, 0xbf, 0x58, 0x2c, 
+0x72, 0x2d, 0x02, 0x9e, 0xe7, 0x71, 0x1d, 0xfa, 
+0xfa, 0xee, 0x5f, 0xbf, 0x56, 0x4a, 0x95, 0x0c, 
+0x03, 0x28, 0xa5, 0x98, 0x65, 0x59, 0xa1, 0x08, 
+0x54, 0x3a, 0xc7, 0xb8, 0xe0, 0xd7, 0xaf, 0x2d, 
+0xcb, 0x92, 0x51, 0x09, 0xd0, 0xcf, 0x5a, 0x04, 
+0x74, 0x45, 0x40, 0x08, 0x21, 0x53, 0xa9, 0x94, 
+0x14, 0x42, 0xc8, 0x74, 0x3a, 0x2d, 0xf5, 0xb0, 
+0x80, 0x59, 0x0d, 0xe8, 0xea, 0xea, 0x92, 0x49, 
+0x24, 0x20, 0xb8, 0xa6, 0x65, 0x7d, 0x01, 0x24, 
+0x01, 0x04, 0xd1, 0x5a, 0x90, 0x00, 0x10, 0x0d, 
+0x49, 0x5c, 0xf8, 0xcf, 0xa7, 0xd3, 0x7f, 0xb6, 
+0xf0, 0xd7, 0x25, 0x7f, 0x3d, 0xd6, 0x3f, 0x3d, 
+0x3d, 0xcd, 0x83, 0x8a, 0x00, 0xb7, 0x2c, 0x8b, 
+0x9b, 0xc1, 0xaf, 0x43, 0xdf, 0x0c, 0x7e, 0xfd, 
+0x2c, 0x84, 0x28, 0xf9, 0x5a, 0x29, 0xc5, 0x84, 
+0x10, 0x3c, 0x1a, 0xfe, 0x4a, 0xa9, 0x8a, 0x02, 
+0xa0, 0xc3, 0x9f, 0x31, 0xa6, 0x84, 0x10, 0x8a, 
+0x31, 0xa6, 0x2c, 0xcb, 0x92, 0x42, 0x08, 0xc5, 
+0x39, 0x0f, 0x05, 0xc0, 0xb2, 0xac, 0x50, 0x00, 
+0x00, 0x88, 0xa8, 0x08, 0x04, 0x41, 0x1f, 0x0a, 
+0x40, 0xb4, 0x1a, 0xd0, 0xde, 0xde, 0x2e, 0x67, 
+0x1b, 0x12, 0x98, 0xad, 0x2f, 0x80, 0x24, 0x80, 
+0x20, 0x5a, 0x13, 0x12, 0x00, 0xa2, 0xe1, 0x98, 
+0xef, 0x9d, 0x7f, 0x92, 0xf0, 0xef, 0xec, 0xec, 
+0x64, 0x67, 0xcf, 0x9e, 0xe5, 0x85, 0x42, 0x81, 
+0x39, 0x8e, 0xc3, 0x33, 0x99, 0x0c, 0x9b, 0x9a, 
+0x9a, 0xe2, 0xe6, 0x5d, 0x7f, 0xa1, 0x50, 0x28, 
+0xbb, 0xdb, 0x07, 0x60, 0xe9, 0x80, 0x2f, 0x16, 
+0x8b, 0x96, 0x19, 0xfc, 0x42, 0x08, 0x0e, 0xc0, 
+0x92, 0x52, 0x72, 0xcb, 0xb2, 0x98, 0x10, 0x82, 
+0xeb, 0xd7, 0x66, 0xf8, 0x5b, 0x96, 0xc5, 0x82, 
+0xe3, 0x0f, 0x8f, 0x9d, 0x31, 0xa6, 0x00, 0x40, 
+0x87, 0xbe, 0x29, 0x01, 0x9c, 0x73, 0x69, 0x4a, 
+0x80, 0x52, 0x4a, 0x72, 0xce, 0x25, 0x00, 0x51, 
+0x49, 0x04, 0xa4, 0x94, 0x32, 0x95, 0x4a, 0x09, 
+0x2d, 0x03, 0x66, 0x35, 0xc0, 0xec, 0x0d, 0x30, 
+0x87, 0x04, 0x7c, 0xdf, 0x97, 0x24, 0x01, 0x04, 
+0xb1, 0x7c, 0x21, 0x01, 0x20, 0x1a, 0x8a, 0x5a, 
+0xdc, 0xf9, 0x47, 0xc7, 0xfb, 0x2d, 0xcb, 0xe2, 
+0x7a, 0x6a, 0x9f, 0x0e, 0x7f, 0xa5, 0x94, 0xa5, 
+0xef, 0xfa, 0x95, 0x52, 0x61, 0xe8, 0x23, 0x10, 
+0x00, 0x00, 0x96, 0x0e, 0xfc, 0xe0, 0xae, 0xbf, 
+0x44, 0x06, 0xa4, 0x94, 0xe1, 0xeb, 0x20, 0xfc, 
+0xf5, 0xb0, 0x40, 0x59, 0xf8, 0x1b, 0xe7, 0xaa, 
+0xa7, 0xfb, 0x69, 0x09, 0x90, 0x8c, 0x31, 0xdd, 
+0xf0, 0x27, 0x67, 0x7e, 0xec, 0xcc, 0x6b, 0xfd, 
+0xac, 0x94, 0x12, 0x4a, 0x29, 0x69, 0xdb, 0xb6, 
+0x08, 0x86, 0x00, 0x84, 0x94, 0xb2, 0x44, 0x06, 
+0x00, 0x08, 0x5d, 0x0d, 0xd0, 0x12, 0xe0, 0xfb, 
+0xbe, 0x34, 0x87, 0x04, 0x7c, 0xdf, 0x97, 0xba, 
+0x2f, 0x60, 0xe5, 0xca, 0x95, 0x92, 0x24, 0x80, 
+0x20, 0x96, 0x1f, 0x24, 0x00, 0x44, 0xc3, 0xb0, 
+0x98, 0x3b, 0xff, 0x4a, 0x9d, 0xfe, 0x3a, 0xfc, 
+0xcd, 0xf1, 0x7e, 0x5d, 0xf2, 0x37, 0xef, 0xfe, 
+0x95, 0x52, 0x96, 0xe7, 0x79, 0x61, 0xc0, 0x17, 
+0x8b, 0x45, 0x4b, 0xbf, 0xf6, 0x3c, 0xcf, 0x42, 
+0x70, 0xa7, 0x0f, 0xc0, 0x62, 0x8c, 0x59, 0x42, 
+0x08, 0xae, 0x9f, 0xb5, 0x00, 0x48, 0x29, 0x39, 
+0x63, 0x8c, 0x2b, 0xa5, 0xc2, 0xf0, 0x57, 0x4a, 
+0x85, 0x8f, 0x98, 0xf3, 0x55, 0xfa, 0xa1, 0x25, 
+0x80, 0x31, 0x26, 0x95, 0x52, 0x32, 0x18, 0x0a, 
+0x10, 0x66, 0xf0, 0x47, 0x9f, 0x11, 0x54, 0x04, 
+0x00, 0x08, 0x04, 0x02, 0x00, 0x40, 0x44, 0xab, 
+0x01, 0xd9, 0x6c, 0x56, 0x54, 0x1a, 0x12, 0x88, 
+0xf6, 0x05, 0xf8, 0xbe, 0x2f, 0x81, 0xf2, 0x19, 
+0x02, 0x24, 0x01, 0x04, 0xd1, 0x7a, 0x90, 0x00, 
+0x10, 0x0d, 0x41, 0xb5, 0xc3, 0xff, 0xf4, 0xe9, 
+0xd3, 0xdc, 0x6c, 0xf6, 0x8b, 0x8e, 0xf7, 0x2b, 
+0xa5, 0x2c, 0x5d, 0xf2, 0x07, 0x10, 0x86, 0x3f, 
+0x0c, 0x01, 0x60, 0x8c, 0x59, 0x98, 0xa9, 0x00, 
+0x58, 0x08, 0x82, 0x5f, 0xdf, 0xf9, 0xfb, 0xbe, 
+0x6f, 0x31, 0xc6, 0x42, 0x29, 0x50, 0x4a, 0x71, 
+0xc6, 0x18, 0x0f, 0xbe, 0x66, 0x33, 0x8d, 0xfa, 
+0x5c, 0x07, 0x7f, 0x45, 0x01, 0x00, 0x10, 0x95, 
+0x00, 0xa9, 0xcb, 0xfe, 0x5a, 0x06, 0x2c, 0xcb, 
+0x12, 0x4a, 0x29, 0xa1, 0x87, 0x01, 0x6c, 0xdb, 
+0x16, 0x5a, 0x00, 0x74, 0x25, 0x00, 0x80, 0x70, 
+0x1c, 0x47, 0xc0, 0x90, 0x01, 0xc6, 0x98, 0x10, 
+0x42, 0xc8, 0x4c, 0x26, 0x13, 0xca, 0x80, 0xd9, 
+0x1f, 0x50, 0x49, 0x02, 0x74, 0x35, 0x80, 0x24, 
+0x80, 0x20, 0x5a, 0x1b, 0x12, 0x00, 0xa2, 0xee, 
+0xd4, 0x2a, 0xfc, 0xcd, 0x66, 0xbf, 0xe8, 0x1d, 
+0x3f, 0xe7, 0x9c, 0xe7, 0x72, 0x39, 0xcb, 0x28, 
+0xff, 0x5b, 0x08, 0x04, 0x00, 0x46, 0xe8, 0xeb, 
+0xd7, 0x8c, 0xb1, 0x50, 0x00, 0x82, 0x3b, 0x7f, 
+0xf3, 0x99, 0x4b, 0x29, 0xad, 0xc8, 0xdd, 0x7f, 
+0x38, 0x14, 0xa0, 0x4f, 0x33, 0x38, 0x27, 0xa6, 
+0x4b, 0xff, 0xfa, 0x34, 0x75, 0xf9, 0x5f, 0x8f, 
+0xf9, 0xeb, 0xe0, 0xe7, 0x9c, 0x8b, 0xa8, 0x00, 
+0x04, 0x15, 0x00, 0x01, 0x40, 0x28, 0xa5, 0x84, 
+0xe3, 0x38, 0x3e, 0x2e, 0x87, 0x7e, 0x28, 0x00, 
+0x30, 0x2a, 0x02, 0x30, 0x86, 0x04, 0x18, 0x63, 
+0x42, 0x4b, 0x40, 0x36, 0x9b, 0x95, 0xb9, 0x5c, 
+0x4e, 0x79, 0x9e, 0x27, 0xe7, 0x9a, 0x21, 0x40, 
+0x12, 0x40, 0x10, 0xad, 0x07, 0x09, 0x00, 0x51, 
+0x57, 0xaa, 0x15, 0xfe, 0xbd, 0xbd, 0xbd, 0xec, 
+0xe4, 0xc9, 0x93, 0x3c, 0xae, 0xd3, 0xdf, 0x0c, 
+0x7f, 0xa5, 0x94, 0x65, 0x59, 0x56, 0x18, 0xfe, 
+0x08, 0x42, 0x5e, 0x0b, 0x80, 0xbe, 0xeb, 0x2f, 
+0x16, 0x8b, 0xb6, 0x7e, 0x0d, 0xc0, 0x36, 0x83, 
+0x1f, 0x80, 0x8d, 0xe0, 0xae, 0x5f, 0x8b, 0x40, 
+0x50, 0xfe, 0xb7, 0x94, 0x52, 0x5c, 0x4a, 0xc9, 
+0x53, 0xa9, 0x54, 0xaa, 0xbf, 0xbf, 0x7f, 0x6f, 
+0x7b, 0x7b, 0xfb, 0x88, 0x65, 0x59, 0x9d, 0x8c, 
+0xb1, 0x34, 0xe7, 0x3c, 0xc3, 0x18, 0x4b, 0x31, 
+0xc6, 0xd2, 0x8c, 0x31, 0xee, 0x79, 0xde, 0xf1, 
+0xe9, 0xe9, 0xe9, 0xc3, 0xe7, 0xcf, 0x9f, 0x3f, 
+0x7c, 0xe6, 0xcc, 0x99, 0x23, 0xbe, 0xef, 0x8b, 
+0xa8, 0x00, 0x04, 0x43, 0x00, 0x82, 0x73, 0x1e, 
+0x86, 0x7e, 0x20, 0x00, 0xbe, 0xae, 0x04, 0x30, 
+0xc6, 0x7c, 0xa5, 0x54, 0x28, 0x00, 0x8c, 0x31, 
+0x1f, 0x33, 0xa1, 0x1f, 0x56, 0x07, 0xf4, 0x90, 
+0x00, 0x00, 0x11, 0xd7, 0x17, 0xa0, 0x9b, 0x03, 
+0x2b, 0xcd, 0x10, 0x20, 0x09, 0x20, 0x88, 0xd6, 
+0x83, 0x04, 0x80, 0xa8, 0x1b, 0xf5, 0x0a, 0xff, 
+0xa0, 0xfc, 0x5f, 0x72, 0xc7, 0xaf, 0xc7, 0xf9, 
+0x95, 0x52, 0x76, 0xf0, 0xb5, 0x1d, 0x04, 0xba, 
+0x1d, 0xdc, 0xf9, 0x97, 0x3c, 0x63, 0xa6, 0x27, 
+0xc0, 0x0a, 0xee, 0xfc, 0x2d, 0x29, 0xa5, 0xc5, 
+0x39, 0xb7, 0x56, 0xaf, 0x5e, 0xbd, 0xad, 0xa7, 
+0xa7, 0xe7, 0xba, 0xb6, 0xb6, 0xb6, 0x3d, 0x8c, 
+0xb1, 0x54, 0xd2, 0x6b, 0x21, 0xa5, 0xcc, 0x15, 
+0x0a, 0x85, 0x5f, 0x5e, 0xba, 0x74, 0xe9, 0xbd, 
+0x13, 0x27, 0x4e, 0xfc, 0x63, 0xa1, 0x50, 0x98, 
+0x0e, 0x2a, 0x00, 0x82, 0x73, 0x1e, 0x2b, 0x00, 
+0xfa, 0x19, 0x33, 0x77, 0xf9, 0xbe, 0x6d, 0xdb, 
+0x61, 0xf8, 0x2b, 0xa5, 0x44, 0x2a, 0x95, 0x0a, 
+0xab, 0x03, 0x98, 0x19, 0x22, 0x08, 0x05, 0xc0, 
+0xec, 0x0b, 0x58, 0x88, 0x04, 0xe8, 0x05, 0x83, 
+0x48, 0x02, 0x08, 0xa2, 0x79, 0x21, 0x01, 0x20, 
+0xea, 0xc2, 0x62, 0xba, 0xfd, 0xe7, 0x0a, 0x7f, 
+0x73, 0x9a, 0x9f, 0x0e, 0xfd, 0x7c, 0x3e, 0x1f, 
+0x36, 0xf8, 0x99, 0xe1, 0x2f, 0xa5, 0xb4, 0x11, 
+0x94, 0xf9, 0x75, 0xf8, 0x2b, 0xa5, 0x6c, 0xdf, 
+0xf7, 0x6d, 0x1d, 0xfe, 0x4a, 0x29, 0x5b, 0x08, 
+0x51, 0x22, 0x00, 0xfa, 0x6b, 0x29, 0xa5, 0xe5, 
+0xba, 0x6e, 0x7a, 0x68, 0x68, 0xe8, 0x9e, 0xce, 
+0xce, 0xce, 0x9b, 0x2c, 0xcb, 0x5a, 0xb1, 0xd8, 
+0x6b, 0x23, 0xa5, 0x9c, 0xfc, 0xf4, 0xd3, 0x4f, 
+0xff, 0x7c, 0x62, 0x62, 0xe2, 0xef, 0xa5, 0x94, 
+0xbe, 0x29, 0x02, 0x30, 0x82, 0xdf, 0xb2, 0xac, 
+0x30, 0xfc, 0x1d, 0xc7, 0xf1, 0xcd, 0x6a, 0x00, 
+0x63, 0xcc, 0x77, 0x1c, 0x27, 0x14, 0x02, 0x04, 
+0x15, 0x01, 0xc6, 0x98, 0x00, 0x49, 0x00, 0x41, 
+0x10, 0x20, 0x01, 0x20, 0xea, 0xc0, 0x62, 0xc3, 
+0x5f, 0x2f, 0xed, 0x5b, 0x29, 0xfc, 0xf5, 0xca, 
+0x7e, 0xd1, 0xf0, 0x07, 0x60, 0xe5, 0xf3, 0xf9, 
+0xb0, 0xcc, 0x0f, 0xe3, 0x8e, 0xbf, 0x58, 0x2c, 
+0x96, 0x04, 0xbe, 0xef, 0xfb, 0x36, 0x66, 0x4a, 
+0xfd, 0xb6, 0x16, 0x00, 0x00, 0xb6, 0x94, 0xd2, 
+0x32, 0x9f, 0xd7, 0xac, 0x59, 0xb3, 0x6d, 0xed, 
+0xda, 0xb5, 0xcf, 0xd8, 0xb6, 0xbd, 0xb2, 0xda, 
+0xd7, 0xa9, 0x58, 0x2c, 0x1e, 0x3b, 0x71, 0xe2, 
+0xc4, 0x5b, 0x1f, 0x7f, 0xfc, 0xf1, 0xaf, 0x00, 
+0x08, 0xce, 0xb9, 0x1f, 0x54, 0x00, 0x7c, 0x94, 
+0x56, 0x00, 0x7c, 0xcc, 0x54, 0x00, 0xfc, 0x20, 
+0xf0, 0x7d, 0xcc, 0xdc, 0xf1, 0xfb, 0x88, 0x0c, 
+0x09, 0xc0, 0xa8, 0x08, 0x60, 0x66, 0x68, 0x40, 
+0x32, 0xc6, 0x44, 0xdc, 0x34, 0xc1, 0xd9, 0x24, 
+0x00, 0x28, 0x5d, 0x3a, 0x98, 0x24, 0x80, 0x20, 
+0x9a, 0x0f, 0x12, 0x00, 0x62, 0x49, 0xa9, 0x56, 
+0xf8, 0xdb, 0xb6, 0xcd, 0xcd, 0xd5, 0xfd, 0x2c, 
+0xcb, 0xe2, 0xe6, 0x1c, 0x7f, 0x5d, 0xfa, 0x9f, 
+0x9a, 0x9a, 0x0a, 0xc7, 0xfa, 0xcd, 0x66, 0x3f, 
+0x29, 0xa5, 0xbe, 0x83, 0xb7, 0x3d, 0xcf, 0xb3, 
+0x03, 0x11, 0x08, 0x9f, 0x4d, 0x01, 0xd0, 0xe1, 
+0x6f, 0xbe, 0x4e, 0xa5, 0x52, 0xed, 0x9b, 0x37, 
+0x6f, 0x7e, 0xac, 0xa3, 0xa3, 0xe3, 0xba, 0x5a, 
+0x5e, 0x2f, 0x00, 0xb8, 0x74, 0xe9, 0xd2, 0x4f, 
+0x8e, 0x1e, 0x3d, 0xfa, 0xcd, 0xa9, 0xa9, 0xa9, 
+0xd3, 0x08, 0x44, 0x00, 0x41, 0xe8, 0x6b, 0x19, 
+0x40, 0x20, 0x00, 0x00, 0x7c, 0xce, 0xb9, 0xa7, 
+0x1b, 0x04, 0x19, 0x63, 0x5a, 0x0a, 0x04, 0x63, 
+0xcc, 0x8f, 0x4a, 0x80, 0xeb, 0xba, 0xe1, 0x6c, 
+0x81, 0x8e, 0x8e, 0x0e, 0xa1, 0xd7, 0x0e, 0x30, 
+0xd7, 0x0a, 0x88, 0x5b, 0x30, 0x68, 0x2e, 0x09, 
+0x00, 0x2a, 0x6f, 0x27, 0x4c, 0x12, 0x40, 0x10, 
+0x8d, 0x01, 0x09, 0x00, 0xb1, 0x64, 0xd4, 0x23, 
+0xfc, 0x01, 0x84, 0xe3, 0xfe, 0x52, 0x4a, 0x5b, 
+0x0b, 0x80, 0x52, 0xca, 0xd6, 0x0f, 0xcf, 0xf3, 
+0x4a, 0xc2, 0x1f, 0x81, 0x00, 0x28, 0xa5, 0x1c, 
+0x5c, 0x0e, 0x7d, 0x27, 0x28, 0xfb, 0xdb, 0xeb, 
+0xd7, 0xaf, 0xdf, 0xbb, 0x66, 0xcd, 0x9a, 0xc7, 
+0x2d, 0xcb, 0xea, 0x98, 0xed, 0x7c, 0x33, 0x99, 
+0x0c, 0x76, 0xee, 0xdc, 0x89, 0xed, 0xdb, 0xb7, 
+0x23, 0x9b, 0xcd, 0x22, 0x95, 0x4a, 0x21, 0x95, 
+0x4a, 0xc1, 0x75, 0x5d, 0x5c, 0xbc, 0x78, 0x11, 
+0xbf, 0xfe, 0xf5, 0xaf, 0xf1, 0xab, 0x5f, 0xfd, 
+0x0a, 0x47, 0x8e, 0x1c, 0x41, 0x2e, 0x97, 0x9b, 
+0xf5, 0xda, 0x29, 0xa5, 0xbc, 0x4f, 0x3f, 0xfd, 
+0xf4, 0x5b, 0x1f, 0x7e, 0xf8, 0xe1, 0x0f, 0x94, 
+0x52, 0x61, 0xf0, 0x6b, 0x19, 0x60, 0x8c, 0x79, 
+0x5a, 0x00, 0x82, 0xaf, 0xc3, 0x8a, 0x80, 0xf9, 
+0xd0, 0x53, 0x05, 0x83, 0xff, 0xae, 0xa2, 0x04, 
+0xe4, 0x72, 0x39, 0xd5, 0xde, 0xde, 0x2e, 0x49, 
+0x02, 0x08, 0xa2, 0x75, 0x21, 0x01, 0x20, 0x96, 
+0x84, 0x5a, 0x85, 0xbf, 0x59, 0xf6, 0x8f, 0x0b, 
+0x7f, 0xf3, 0x51, 0x2c, 0x16, 0x4b, 0xc6, 0xf9, 
+0xf5, 0xc3, 0xf7, 0x7d, 0x5b, 0x4a, 0xe9, 0xe0, 
+0x72, 0xf8, 0x3b, 0xc1, 0x9f, 0x73, 0xcc, 0xf0, 
+0xe7, 0x9c, 0xbb, 0x23, 0x23, 0x23, 0x4f, 0x75, 
+0x76, 0x76, 0x56, 0xbc, 0xeb, 0xb7, 0x6d, 0x1b, 
+0x5b, 0xb7, 0x6e, 0xc5, 0xe8, 0xe8, 0x28, 0xb6, 
+0x6d, 0xdb, 0x06, 0xcb, 0xb2, 0xe6, 0xbc, 0x36, 
+0x52, 0x4a, 0x9c, 0x38, 0x71, 0x02, 0x7f, 0xff, 
+0xf7, 0x7f, 0x8f, 0x9f, 0xfd, 0xec, 0x67, 0x98, 
+0xed, 0x77, 0xf2, 0xe2, 0xc5, 0x8b, 0x3f, 0x1a, 
+0x1b, 0x1b, 0x7b, 0x13, 0x40, 0x91, 0x31, 0xe6, 
+0x69, 0x19, 0x60, 0x8c, 0x79, 0x08, 0x2a, 0x02, 
+0xfa, 0xb5, 0x6d, 0xdb, 0x3e, 0xe7, 0xdc, 0xd3, 
+0xe1, 0xaf, 0x7b, 0x03, 0xa2, 0xcd, 0x81, 0x4a, 
+0x29, 0x91, 0xc9, 0x64, 0x84, 0x96, 0x80, 0xe8, 
+0x5a, 0x01, 0x24, 0x01, 0x04, 0xd1, 0x9a, 0x90, 
+0x00, 0x10, 0x35, 0x67, 0xa9, 0xef, 0xfc, 0xa5, 
+0x94, 0x56, 0x2e, 0x97, 0x8b, 0x0d, 0xff, 0xb8, 
+0x87, 0xe7, 0x79, 0x0e, 0x66, 0x2a, 0x00, 0x0e, 
+0x02, 0x01, 0xd0, 0x5f, 0x0b, 0x21, 0x1c, 0xc6, 
+0x98, 0x6d, 0x59, 0x56, 0x76, 0xfb, 0xf6, 0xed, 
+0x2f, 0xb6, 0xb5, 0xb5, 0x6d, 0xad, 0x74, 0x9e, 
+0x5b, 0xb6, 0x6c, 0xc1, 0x63, 0x8f, 0x3d, 0x86, 
+0x9e, 0x9e, 0x9e, 0x05, 0x5f, 0xab, 0x63, 0xc7, 
+0x8e, 0xe1, 0xcf, 0xff, 0xfc, 0xcf, 0xf1, 0x2f, 
+0xff, 0xf2, 0x2f, 0x15, 0xff, 0x4c, 0x2e, 0x97, 
+0x7b, 0xff, 0xe7, 0x3f, 0xff, 0xf9, 0x17, 0x7d, 
+0xdf, 0x9f, 0x02, 0xe0, 0x05, 0xd5, 0x00, 0x1d, 
+0xfa, 0x1e, 0x82, 0x8a, 0x00, 0x66, 0x9a, 0x03, 
+0x3d, 0xdd, 0x17, 0xa0, 0x45, 0xc0, 0x75, 0x5d, 
+0x1f, 0x91, 0x2a, 0x40, 0x2a, 0x95, 0x12, 0x8c, 
+0x31, 0x92, 0x00, 0x82, 0x58, 0x46, 0x90, 0x00, 
+0x10, 0x35, 0x27, 0x2a, 0x00, 0x8b, 0x0d, 0x7f, 
+0xc7, 0x71, 0xc2, 0x4d, 0x7d, 0x92, 0x84, 0x7f, 
+0x30, 0xce, 0x5f, 0x26, 0x00, 0xfa, 0xae, 0xdf, 
+0xf3, 0x3c, 0x27, 0x12, 0xfe, 0xba, 0xf4, 0xef, 
+0x28, 0xa5, 0x9c, 0x4c, 0x26, 0xd3, 0xbd, 0x7d, 
+0xfb, 0xf6, 0x57, 0x5d, 0xd7, 0x5d, 0x17, 0x77, 
+0x7e, 0x99, 0x4c, 0x06, 0x0f, 0x3e, 0xf8, 0x20, 
+0xae, 0xbe, 0xfa, 0xea, 0xaa, 0x5c, 0x2f, 0xa5, 
+0x14, 0x7e, 0xfa, 0xd3, 0x9f, 0xe2, 0xdb, 0xdf, 
+0xfe, 0x36, 0x2e, 0x5e, 0xbc, 0x18, 0xfb, 0x67, 
+0x8a, 0xc5, 0xe2, 0xc9, 0xb1, 0xb1, 0xb1, 0x2f, 
+0x4c, 0x4f, 0x4f, 0x9f, 0x85, 0x21, 0x01, 0x8c, 
+0x31, 0xcf, 0xb2, 0xac, 0x50, 0x02, 0x82, 0x61, 
+0x80, 0x50, 0x02, 0x38, 0xe7, 0x9e, 0x16, 0x00, 
+0xdd, 0x1b, 0xa0, 0x45, 0xa0, 0x96, 0x12, 0x40, 
+0x8d, 0x81, 0x04, 0xd1, 0x78, 0x90, 0x00, 0x10, 
+0x35, 0xa5, 0x16, 0xe1, 0x1f, 0xdd, 0xd4, 0x47, 
+0x2f, 0xed, 0xab, 0x57, 0xf7, 0xc3, 0x2c, 0xe1, 
+0x2f, 0x84, 0xd0, 0x77, 0xf7, 0x25, 0xc1, 0xaf, 
+0xef, 0xf6, 0x83, 0xaf, 0xc3, 0xd7, 0x5d, 0x5d, 
+0x5d, 0x6b, 0xb6, 0x6d, 0xdb, 0xf6, 0xaa, 0x6d, 
+0xdb, 0xb1, 0xb7, 0xf5, 0x3b, 0x76, 0xec, 0xc0, 
+0x23, 0x8f, 0x3c, 0x82, 0xf6, 0xf6, 0xf6, 0xaa, 
+0x5f, 0xbb, 0x62, 0xb1, 0x88, 0xef, 0x7c, 0xe7, 
+0x3b, 0xf8, 0xbb, 0xbf, 0xfb, 0xbb, 0xd8, 0xef, 
+0x0b, 0x21, 0x2e, 0xfc, 0xf2, 0x97, 0xbf, 0xfc, 
+0x5f, 0x67, 0xcf, 0x9e, 0xfd, 0x17, 0xcc, 0x48, 
+0x80, 0x07, 0xc0, 0x0b, 0xaa, 0x00, 0x3a, 0xf4, 
+0x3d, 0xc7, 0x71, 0x3c, 0x04, 0xe1, 0x8f, 0xa0, 
+0x12, 0xe0, 0x38, 0x8e, 0xcf, 0x39, 0xf7, 0x2b, 
+0x49, 0x40, 0x74, 0xd5, 0x40, 0x92, 0x00, 0x82, 
+0x68, 0x3d, 0x48, 0x00, 0x88, 0x9a, 0x51, 0xa9, 
+0xf4, 0x3f, 0x9f, 0x79, 0xfe, 0x8b, 0x0d, 0xff, 
+0x42, 0xa1, 0x50, 0x72, 0xd7, 0x8f, 0x99, 0x29, 
+0x7c, 0x25, 0x77, 0xfe, 0x3a, 0xf4, 0xf5, 0xdd, 
+0x7f, 0x20, 0x09, 0xce, 0x15, 0x57, 0x5c, 0xb1, 
+0x79, 0xcb, 0x96, 0x2d, 0x2f, 0x72, 0xce, 0xdb, 
+0x62, 0xce, 0x0d, 0x0f, 0x3f, 0xfc, 0x30, 0x6e, 
+0xb8, 0xe1, 0x86, 0x5a, 0x5c, 0xba, 0x12, 0xfe, 
+0xdf, 0xff, 0xfb, 0x7f, 0x78, 0xfb, 0xed, 0xb7, 
+0x31, 0xb3, 0x90, 0x5f, 0x29, 0x52, 0xca, 0xc2, 
+0xd1, 0xa3, 0x47, 0xbf, 0x7c, 0xf2, 0xe4, 0xc9, 
+0x31, 0xc6, 0x98, 0x17, 0x8c, 0xf9, 0x7b, 0x96, 
+0x65, 0x79, 0xc1, 0x9d, 0xbf, 0xa7, 0xfb, 0x02, 
+0x74, 0x25, 0x80, 0x31, 0xe6, 0xe9, 0x19, 0x02, 
+0xb5, 0x94, 0x00, 0x5a, 0x31, 0x90, 0x20, 0x1a, 
+0x1b, 0x12, 0x00, 0xa2, 0x26, 0xd4, 0x33, 0xfc, 
+0xf5, 0xe2, 0x3e, 0x41, 0xd7, 0x7f, 0x59, 0xf8, 
+0xeb, 0xd0, 0x37, 0x3a, 0xfd, 0x1d, 0xdf, 0xf7, 
+0x5d, 0xa5, 0x94, 0xa3, 0xbf, 0xbf, 0x66, 0xcd, 
+0x9a, 0xad, 0x9b, 0x36, 0x6d, 0x7a, 0x91, 0x31, 
+0xe6, 0x44, 0xcf, 0xc3, 0x71, 0x1c, 0x3c, 0xf3, 
+0xcc, 0x33, 0x18, 0x19, 0x19, 0xa9, 0xd1, 0xd5, 
+0x2b, 0xe7, 0xfd, 0xf7, 0xdf, 0xc7, 0x97, 0xbf, 
+0xfc, 0x65, 0x14, 0x8b, 0xc5, 0xb8, 0x6f, 0xcb, 
+0x89, 0x89, 0x89, 0x3f, 0x3d, 0x76, 0xec, 0xd8, 
+0x4f, 0x61, 0x54, 0x02, 0x4c, 0x09, 0xb0, 0x6d, 
+0xdb, 0xd3, 0x7d, 0x01, 0xba, 0x12, 0xe0, 0xba, 
+0xae, 0xa7, 0x25, 0x20, 0x58, 0x68, 0x28, 0x14, 
+0x01, 0x92, 0x00, 0x82, 0x68, 0x7d, 0x48, 0x00, 
+0x88, 0xaa, 0xd3, 0x88, 0xe1, 0x1f, 0x84, 0xbe, 
+0xad, 0x94, 0x72, 0x82, 0xa6, 0xbf, 0x50, 0x04, 
+0x74, 0xb9, 0x5f, 0x08, 0xe1, 0x62, 0xe6, 0xce, 
+0x7f, 0xe3, 0x95, 0x57, 0x5e, 0xf9, 0x2a, 0xe7, 
+0xdc, 0x8d, 0x9e, 0x47, 0x36, 0x9b, 0xc5, 0x8b, 
+0x2f, 0xbe, 0x88, 0x0d, 0x1b, 0x36, 0xd4, 0xe8, 
+0xea, 0x55, 0xe6, 0xe4, 0xc9, 0x93, 0xf8, 0xa3, 
+0x3f, 0xfa, 0xa3, 0xd8, 0xbe, 0x00, 0xa5, 0x94, 
+0x3c, 0x76, 0xec, 0xd8, 0xd7, 0x26, 0x26, 0x26, 
+0x7e, 0x1a, 0xad, 0x04, 0x20, 0x18, 0x16, 0x30, 
+0xaa, 0x00, 0x9e, 0x96, 0x00, 0x73, 0xad, 0x00, 
+0x2d, 0x03, 0x00, 0x44, 0x26, 0x93, 0xf1, 0x11, 
+0x6c, 0x2d, 0x8c, 0x99, 0x7e, 0x01, 0x92, 0x00, 
+0x82, 0x68, 0x31, 0x48, 0x00, 0x88, 0xaa, 0xb2, 
+0x98, 0x31, 0xff, 0xb8, 0xe5, 0x7d, 0x17, 0x1a, 
+0xfe, 0x4a, 0x29, 0x53, 0x00, 0x2a, 0x86, 0xbf, 
+0xef, 0xfb, 0x2e, 0x2e, 0x8f, 0xf9, 0xbb, 0xdd, 
+0xdd, 0xdd, 0xeb, 0x46, 0x46, 0x46, 0x5e, 0xe7, 
+0x9c, 0x67, 0xa2, 0xe7, 0xd6, 0xdb, 0xdb, 0x8b, 
+0x57, 0x5e, 0x79, 0x05, 0xbd, 0xbd, 0xbd, 0xb5, 
+0xba, 0x7c, 0x73, 0x72, 0xfe, 0xfc, 0x79, 0xfc, 
+0xd1, 0x1f, 0xfd, 0x11, 0x4e, 0x9d, 0x3a, 0x55, 
+0xf6, 0x3d, 0xa5, 0x94, 0x9c, 0x98, 0x98, 0xf8, 
+0xba, 0x59, 0x09, 0x08, 0xaa, 0x00, 0x45, 0xc4, 
+0x48, 0x40, 0xd0, 0x0b, 0xe0, 0xb1, 0xc8, 0x5a, 
+0x01, 0x5a, 0x02, 0x5c, 0xd7, 0x15, 0x96, 0x65, 
+0xf9, 0x24, 0x01, 0x04, 0xd1, 0x9a, 0x90, 0x00, 
+0x10, 0x55, 0xa3, 0x16, 0xe1, 0x1f, 0xd7, 0xed, 
+0x3f, 0xdf, 0xf0, 0xd7, 0x63, 0xfe, 0x41, 0xe0, 
+0x3b, 0x52, 0x4a, 0xd7, 0xb8, 0xf3, 0x77, 0x75, 
+0xd9, 0xbf, 0xa3, 0xa3, 0xa3, 0x6f, 0xe7, 0xce, 
+0x9d, 0x6f, 0xc4, 0x2d, 0xf0, 0xb3, 0x7e, 0xfd, 
+0x7a, 0xbc, 0xf4, 0xd2, 0x4b, 0xc8, 0x66, 0xb3, 
+0x35, 0xbb, 0x7e, 0x49, 0xc9, 0xe7, 0xf3, 0xf8, 
+0xd2, 0x97, 0xbe, 0x84, 0x5f, 0xff, 0xfa, 0xd7, 
+0x65, 0xdf, 0xd3, 0x12, 0x30, 0x31, 0x31, 0xf1, 
+0x33, 0x1d, 0xfe, 0xba, 0x0a, 0x10, 0x0c, 0x05, 
+0x14, 0xb5, 0x00, 0x20, 0x18, 0x0e, 0x20, 0x09, 
+0x20, 0x88, 0xe5, 0x09, 0x9f, 0xfb, 0x8f, 0x10, 
+0xc4, 0xdc, 0x54, 0x3b, 0xfc, 0x3b, 0x3a, 0x3a, 
+0xd8, 0x62, 0xc2, 0x5f, 0x87, 0xba, 0xf1, 0xec, 
+0x7a, 0x9e, 0xe7, 0x1a, 0xe1, 0xef, 0x2a, 0xa5, 
+0x5c, 0xcc, 0x54, 0x03, 0xdc, 0x4c, 0x26, 0xd3, 
+0xbb, 0x7d, 0xfb, 0xf6, 0x97, 0xe3, 0xc2, 0x7f, 
+0xf5, 0xea, 0xd5, 0x78, 0xe5, 0x95, 0x57, 0x1a, 
+0x22, 0xfc, 0x01, 0x20, 0x9d, 0x4e, 0xe3, 0xa5, 
+0x97, 0x5e, 0xc2, 0x95, 0x57, 0x5e, 0x59, 0xf6, 
+0x3d, 0xc6, 0x18, 0x1f, 0x18, 0x18, 0x78, 0x72, 
+0x60, 0x60, 0x60, 0x8f, 0x3e, 0xc7, 0xa0, 0xbf, 
+0xc1, 0xd5, 0x15, 0x0f, 0x29, 0x65, 0x78, 0x1d, 
+0xa4, 0x94, 0x8e, 0xe7, 0x79, 0xfa, 0x3a, 0x99, 
+0x53, 0x24, 0xf5, 0x1e, 0x09, 0x56, 0xb0, 0x18, 
+0x92, 0x5e, 0x41, 0xd1, 0xb2, 0x2c, 0x8b, 0x5b, 
+0x96, 0xc5, 0x6d, 0xdb, 0xe6, 0x7a, 0xc7, 0xc5, 
+0x7c, 0x3e, 0x1f, 0x0e, 0xdb, 0x74, 0x77, 0x77, 
+0xb3, 0xc9, 0xc9, 0x49, 0x76, 0xe6, 0xcc, 0x19, 
+0xd6, 0xdf, 0xdf, 0x1f, 0xfe, 0x5b, 0x8f, 0x8c, 
+0x8c, 0xb0, 0x03, 0x07, 0x0e, 0x84, 0xff, 0x1f, 
+0x00, 0x97, 0xff, 0xff, 0x88, 0xcb, 0xfa, 0xb8, 
+0xa1, 0x24, 0x82, 0x20, 0xaa, 0x07, 0x09, 0x00, 
+0xb1, 0x68, 0x6a, 0x11, 0xfe, 0x71, 0x2b, 0xfc, 
+0xcd, 0x27, 0xfc, 0x51, 0xde, 0xf0, 0x67, 0x8e, 
+0xf9, 0x87, 0x12, 0x20, 0x84, 0x70, 0x1d, 0xc7, 
+0xe9, 0xda, 0xb5, 0x6b, 0xd7, 0x4b, 0x8e, 0xe3, 
+0x94, 0x4d, 0xf5, 0xeb, 0xe9, 0xe9, 0xc1, 0xab, 
+0xaf, 0xbe, 0x8a, 0x4c, 0xa6, 0x6c, 0x44, 0xa0, 
+0xae, 0xd8, 0xb6, 0x8d, 0x17, 0x5e, 0x78, 0x61, 
+0x56, 0x09, 0xd8, 0xb0, 0x61, 0x43, 0x28, 0x01, 
+0x46, 0xb5, 0x43, 0xbf, 0x0e, 0x1f, 0x3a, 0xfc, 
+0x67, 0x93, 0x00, 0xa5, 0x54, 0x78, 0xcd, 0x2f, 
+0x5d, 0xba, 0xb4, 0x60, 0x09, 0x38, 0x7c, 0xf8, 
+0xf0, 0xbc, 0x24, 0x80, 0x20, 0x88, 0xda, 0x41, 
+0x02, 0x40, 0x2c, 0x8a, 0x66, 0x0d, 0xff, 0xe0, 
+0x8e, 0xd8, 0xb5, 0x2c, 0xab, 0x7d, 0xcf, 0x9e, 
+0x3d, 0xcf, 0xbb, 0xae, 0xdb, 0x17, 0x3d, 0xb7, 
+0xce, 0xce, 0x4e, 0xbc, 0xf6, 0xda, 0x6b, 0xe8, 
+0xe8, 0x98, 0x75, 0xc9, 0xff, 0xba, 0x31, 0x97, 
+0x04, 0x0c, 0x0e, 0x0e, 0x3e, 0xb1, 0x61, 0xc3, 
+0x86, 0x3d, 0xc1, 0xdd, 0xbe, 0xab, 0x9b, 0x1c, 
+0xe3, 0x24, 0x20, 0x98, 0x12, 0x59, 0x51, 0x02, 
+0x10, 0xdc, 0xfd, 0x63, 0x89, 0x25, 0x80, 0xaa, 
+0x00, 0x04, 0x51, 0x3b, 0x48, 0x00, 0x88, 0xaa, 
+0xd1, 0xe0, 0xe1, 0xef, 0xea, 0xbb, 0x61, 0xfd, 
+0xda, 0xb6, 0xed, 0xec, 0xe8, 0xe8, 0xe8, 0x8b, 
+0xe9, 0x74, 0x7a, 0x7d, 0xf4, 0x5c, 0xda, 0xda, 
+0xda, 0xf0, 0xea, 0xab, 0xaf, 0x2e, 0x6a, 0x59, 
+0xdf, 0xa5, 0x20, 0x89, 0x04, 0x0c, 0x0c, 0x0c, 
+0xc4, 0x4a, 0x80, 0x9e, 0xfa, 0x98, 0x44, 0x02, 
+0xf2, 0xf9, 0xbc, 0xde, 0x43, 0x81, 0x24, 0x80, 
+0x20, 0x5a, 0x04, 0x6a, 0x02, 0x24, 0x16, 0x8c, 
+0xf9, 0xc1, 0x5c, 0xaf, 0xf0, 0xd7, 0xcd, 0x7e, 
+0x09, 0xc2, 0x5f, 0xdf, 0xf5, 0x3b, 0x41, 0xf8, 
+0xb7, 0x8f, 0x8e, 0x8e, 0x3e, 0x9f, 0xc9, 0x64, 
+0x06, 0xa2, 0xe7, 0xe5, 0xba, 0x2e, 0x5e, 0x7b, 
+0xed, 0xb5, 0xba, 0x4c, 0xf5, 0x5b, 0x28, 0xbe, 
+0xef, 0xe3, 0x8b, 0x5f, 0xfc, 0x22, 0x3e, 0xf8, 
+0xe0, 0x83, 0xb2, 0xef, 0x05, 0x8d, 0x81, 0x6f, 
+0x4e, 0x4c, 0x4c, 0xfc, 0x2c, 0x98, 0x1e, 0x58, 
+0xd4, 0xcf, 0xd1, 0xc6, 0x40, 0xbd, 0x7c, 0x30, 
+0xe7, 0x5c, 0x4f, 0x25, 0x2c, 0xd9, 0x52, 0x38, 
+0x9d, 0x4e, 0xeb, 0x65, 0x84, 0xc3, 0xcd, 0x84, 
+0x96, 0x6a, 0xc5, 0x40, 0x6a, 0x0a, 0x24, 0x88, 
+0xea, 0x42, 0x15, 0x00, 0x62, 0x41, 0x34, 0x53, 
+0xf8, 0x9b, 0xcf, 0x73, 0x85, 0xbf, 0x6d, 0xdb, 
+0x78, 0xfe, 0xf9, 0xe7, 0x9b, 0x2a, 0xfc, 0x81, 
+0x44, 0x3d, 0x01, 0x07, 0xcc, 0xc6, 0xc0, 0xe0, 
+0x5a, 0x95, 0x34, 0x06, 0x1a, 0xd7, 0xce, 0x96, 
+0x52, 0x3a, 0xfa, 0xa1, 0x2e, 0x2f, 0xa4, 0x64, 
+0xc5, 0x55, 0x02, 0x16, 0xd3, 0x18, 0x48, 0x95, 
+0x00, 0x82, 0xa8, 0x1f, 0x24, 0x00, 0xc4, 0xbc, 
+0x89, 0x0b, 0x7f, 0x93, 0x46, 0x0a, 0x7f, 0x21, 
+0x84, 0x63, 0x34, 0xc2, 0xb9, 0x96, 0x65, 0x65, 
+0xf7, 0xec, 0xd9, 0xf3, 0xdc, 0x6c, 0xe1, 0xbf, 
+0x65, 0xcb, 0x96, 0x1a, 0x5d, 0xb9, 0xda, 0x92, 
+0x44, 0x02, 0x06, 0x07, 0x07, 0x77, 0x9b, 0xd7, 
+0x43, 0x4b, 0x00, 0x82, 0x61, 0x81, 0xa8, 0x04, 
+0x44, 0x87, 0x04, 0x50, 0x41, 0x02, 0x2e, 0x5d, 
+0xba, 0x64, 0xe5, 0xf3, 0x79, 0x92, 0x00, 0x82, 
+0x68, 0x22, 0x48, 0x00, 0x88, 0x79, 0x51, 0x29, 
+0xfc, 0xf5, 0x07, 0xb6, 0xfe, 0x10, 0x3f, 0x70, 
+0xe0, 0x00, 0x80, 0x85, 0x85, 0xbf, 0x65, 0x59, 
+0xbc, 0xca, 0x77, 0xfe, 0xae, 0x10, 0xc2, 0xb1, 
+0x2c, 0x2b, 0x3b, 0x3a, 0x3a, 0xfa, 0x7c, 0x5b, 
+0x5b, 0xdb, 0x60, 0xf4, 0xbc, 0x6c, 0xdb, 0xc6, 
+0x73, 0xcf, 0x3d, 0x87, 0xab, 0xae, 0xba, 0xaa, 
+0x86, 0x57, 0xaf, 0xf6, 0xcc, 0x47, 0x02, 0x30, 
+0xb3, 0x00, 0x52, 0x38, 0x55, 0x10, 0x81, 0x04, 
+0x68, 0x11, 0x98, 0xaf, 0x04, 0x50, 0x25, 0x80, 
+0x20, 0x9a, 0x0b, 0x12, 0x00, 0x22, 0x31, 0xf3, 
+0x09, 0xff, 0xc3, 0x87, 0x0f, 0xb3, 0xb9, 0xc2, 
+0xdf, 0xb2, 0xac, 0xd8, 0xf0, 0x8f, 0x6e, 0xe9, 
+0xbb, 0xd0, 0xf0, 0x37, 0xa7, 0xc0, 0xcd, 0x16, 
+0xfe, 0x96, 0x65, 0xe1, 0xd0, 0xa1, 0x43, 0xd8, 
+0xba, 0x75, 0x6b, 0x6d, 0x2f, 0xe0, 0x12, 0xb1, 
+0xc0, 0x4a, 0x40, 0xb8, 0x2a, 0x62, 0x30, 0x35, 
+0xd0, 0xd5, 0x8d, 0x81, 0xf3, 0xad, 0x04, 0x90, 
+0x04, 0x10, 0x44, 0x73, 0x40, 0x4d, 0x80, 0x44, 
+0x22, 0x6a, 0x11, 0xfe, 0xd1, 0xe5, 0x7d, 0x6b, 
+0x1c, 0xfe, 0xcf, 0xb5, 0xb5, 0xb5, 0x0d, 0x45, 
+0xcf, 0xcb, 0xb2, 0x2c, 0x3c, 0xf7, 0xdc, 0x73, 
+0xd8, 0xb6, 0x6d, 0x5b, 0x8d, 0xaf, 0xe0, 0xd2, 
+0x93, 0xa4, 0x31, 0x70, 0x7c, 0x7c, 0xfc, 0x9f, 
+0x75, 0x43, 0xa0, 0x65, 0x59, 0x61, 0x53, 0x20, 
+0x82, 0x95, 0x03, 0x83, 0x9d, 0x03, 0xc3, 0xfd, 
+0x03, 0x82, 0x55, 0x02, 0xc3, 0xe6, 0x40, 0x04, 
+0x9b, 0x07, 0xb9, 0xae, 0x5b, 0xd2, 0x18, 0x98, 
+0x4e, 0xa7, 0xa5, 0xde, 0x4c, 0x88, 0x1a, 0x03, 
+0x09, 0xa2, 0x31, 0xa1, 0x0a, 0x00, 0x31, 0x27, 
+0x73, 0x85, 0xbf, 0xa6, 0x19, 0xc3, 0xff, 0xd0, 
+0xa1, 0x43, 0x2d, 0x19, 0xfe, 0x40, 0xf2, 0x4a, 
+0x80, 0x6e, 0x08, 0x8c, 0xab, 0x04, 0x18, 0xd3, 
+0x03, 0x2b, 0x56, 0x02, 0x82, 0x7f, 0x9f, 0x92, 
+0x4a, 0x40, 0x3e, 0x9f, 0xe7, 0xba, 0x1a, 0x40, 
+0x95, 0x00, 0x82, 0x68, 0x4c, 0xa8, 0x02, 0x40, 
+0xcc, 0x4a, 0x92, 0xf0, 0x1f, 0x1b, 0x1b, 0x63, 
+0x66, 0xf8, 0x03, 0x40, 0x7f, 0x7f, 0x3f, 0x6b, 
+0x90, 0xf0, 0x3f, 0xd4, 0xd6, 0xd6, 0xb6, 0x31, 
+0x7a, 0x5e, 0x3a, 0xfc, 0x87, 0x87, 0x87, 0x6b, 
+0x78, 0xf5, 0x1a, 0x83, 0x7a, 0x56, 0x02, 0x84, 
+0x10, 0xb2, 0xbd, 0xbd, 0x9d, 0x2a, 0x01, 0x04, 
+0xd1, 0x80, 0x90, 0x00, 0x10, 0x15, 0xa9, 0x76, 
+0xf8, 0x57, 0x6a, 0xf8, 0xab, 0x45, 0xf8, 0x73, 
+0xce, 0xdb, 0xf6, 0xee, 0xdd, 0xfb, 0x5c, 0xa5, 
+0xf0, 0x7f, 0xf6, 0xd9, 0x67, 0x31, 0x32, 0x32, 
+0x52, 0xc3, 0xab, 0xd7, 0x58, 0x90, 0x04, 0x10, 
+0x04, 0x11, 0x85, 0x86, 0x00, 0x88, 0x58, 0x9a, 
+0x3d, 0xfc, 0x67, 0xbb, 0xf3, 0x3f, 0x78, 0xf0, 
+0xe0, 0xb2, 0x0a, 0x7f, 0x60, 0x5e, 0xc3, 0x01, 
+0x15, 0x1b, 0x03, 0x17, 0x3a, 0x1c, 0x60, 0x59, 
+0x16, 0xd7, 0x33, 0x04, 0x68, 0xef, 0x00, 0x82, 
+0x68, 0x1c, 0x48, 0x00, 0x88, 0x32, 0xea, 0x15, 
+0xfe, 0x30, 0x24, 0xc0, 0xd8, 0xce, 0xd7, 0x46, 
+0xf2, 0x79, 0xfe, 0x61, 0xf8, 0x67, 0xb3, 0xd9, 
+0x4d, 0xd1, 0xf3, 0xe2, 0x9c, 0xe3, 0xe0, 0xc1, 
+0x83, 0xd8, 0xbe, 0x7d, 0x7b, 0xed, 0x2e, 0x5e, 
+0x03, 0x93, 0x50, 0x02, 0x76, 0xd5, 0x42, 0x02, 
+0xf2, 0xf9, 0x7c, 0xcd, 0x25, 0x80, 0xfa, 0x01, 
+0x08, 0x62, 0x7e, 0x90, 0x00, 0x10, 0x25, 0xd4, 
+0x33, 0xfc, 0xa5, 0x94, 0x76, 0x34, 0xfc, 0x8d, 
+0xa0, 0x99, 0x6d, 0x79, 0x5f, 0x33, 0xfc, 0x9f, 
+0xa5, 0xf0, 0xaf, 0x0c, 0x49, 0x00, 0x41, 0x10, 
+0x1a, 0x12, 0x00, 0x22, 0xa4, 0x45, 0xc2, 0x7f, 
+0x73, 0xf4, 0xbc, 0x38, 0xe7, 0x78, 0xe6, 0x99, 
+0x67, 0xb0, 0x63, 0xc7, 0x8e, 0x5a, 0x5e, 0xbe, 
+0xa6, 0x61, 0x39, 0x48, 0x00, 0x89, 0x00, 0x41, 
+0xcc, 0x0d, 0x09, 0x00, 0x01, 0xa0, 0x69, 0xc3, 
+0xdf, 0x31, 0xc2, 0xff, 0x60, 0xa5, 0xf0, 0x7f, 
+0xfa, 0xe9, 0xa7, 0xb1, 0x73, 0xe7, 0xce, 0x5a, 
+0x5e, 0xbe, 0xa6, 0xa3, 0x9e, 0x3d, 0x01, 0x4b, 
+0x21, 0x01, 0xc1, 0x79, 0x90, 0x04, 0x10, 0xc4, 
+0x2c, 0xd0, 0x2c, 0x00, 0x62, 0xc9, 0xc2, 0x7f, 
+0x6a, 0x6a, 0x2a, 0x76, 0xbc, 0x7f, 0x11, 0xe1, 
+0xef, 0x32, 0xc6, 0x32, 0x7b, 0xf7, 0xee, 0x7d, 
+0x36, 0x9b, 0xcd, 0x96, 0x2d, 0xe0, 0xaf, 0xc3, 
+0x7f, 0xd7, 0xae, 0x5d, 0x35, 0xbc, 0x7a, 0xcd, 
+0x4d, 0x82, 0xd9, 0x01, 0x6f, 0x05, 0xb3, 0x03, 
+0x8a, 0x8b, 0x99, 0x1d, 0x10, 0xb7, 0x8b, 0x20, 
+0x2d, 0x16, 0x44, 0x10, 0xf5, 0x85, 0x04, 0x60, 
+0x99, 0x52, 0xe9, 0xee, 0x48, 0x29, 0x35, 0xaf, 
+0x5d, 0xfd, 0x26, 0x27, 0x27, 0x99, 0xeb, 0xba, 
+0x75, 0x0b, 0xff, 0xd1, 0xd1, 0xd1, 0x83, 0xed, 
+0xed, 0xed, 0x65, 0xb7, 0xb1, 0x9c, 0x73, 0x3c, 
+0xf5, 0xd4, 0x53, 0xd8, 0xbd, 0x7b, 0x77, 0x2d, 
+0x2e, 0x5f, 0x4b, 0x51, 0x2d, 0x09, 0xd0, 0x22, 
+0x30, 0x1f, 0x09, 0x58, 0xcc, 0x14, 0xc1, 0xb1, 
+0xb1, 0x31, 0x05, 0xa0, 0x44, 0x02, 0x80, 0x19, 
+0x11, 0xa8, 0x74, 0xf3, 0x4f, 0x32, 0x40, 0x10, 
+0x97, 0xa1, 0x21, 0x80, 0x65, 0xc8, 0x72, 0x08, 
+0xff, 0x27, 0x9f, 0x7c, 0x92, 0xc2, 0x3f, 0x21, 
+0x09, 0x86, 0x03, 0x1e, 0x1f, 0x1c, 0x1c, 0xdc, 
+0x13, 0x19, 0x0e, 0x70, 0xa3, 0xc3, 0x01, 0x7a, 
+0x48, 0x60, 0x3e, 0x7b, 0x07, 0x58, 0x96, 0xb5, 
+0xe0, 0x15, 0x03, 0xf5, 0xff, 0x97, 0xe6, 0x70, 
+0x00, 0x30, 0x53, 0xb9, 0xaa, 0x94, 0xf3, 0x34, 
+0x2c, 0x40, 0x10, 0x97, 0x21, 0x01, 0x58, 0x66, 
+0xb4, 0x50, 0xf8, 0x3f, 0x13, 0x17, 0xfe, 0x8c, 
+0x31, 0x3c, 0xf9, 0xe4, 0x93, 0xd8, 0xb3, 0x67, 
+0x4f, 0x2d, 0x2e, 0x5f, 0xcb, 0x92, 0x40, 0x02, 
+0x1e, 0x8b, 0x48, 0x80, 0x43, 0x12, 0x40, 0x10, 
+0xcd, 0x0d, 0x09, 0xc0, 0x32, 0xa2, 0xc5, 0xc2, 
+0xbf, 0x6c, 0xdf, 0x5e, 0x0a, 0xff, 0xc5, 0x41, 
+0x12, 0x40, 0x10, 0xcb, 0x0b, 0xea, 0x01, 0x58, 
+0x26, 0x2c, 0x26, 0xfc, 0x81, 0xcb, 0x0d, 0x7f, 
+0xb5, 0x0a, 0x7f, 0xcc, 0x2c, 0xf6, 0xe3, 0x1a, 
+0xe1, 0x1f, 0x2e, 0xf0, 0x13, 0x09, 0xff, 0xa7, 
+0xdb, 0xdb, 0xdb, 0xcb, 0xf6, 0xed, 0x65, 0x8c, 
+0xe1, 0x89, 0x27, 0x9e, 0xc0, 0xde, 0xbd, 0x7b, 
+0xab, 0x7e, 0xed, 0x96, 0x1b, 0xb3, 0xf5, 0x04, 
+0x00, 0x50, 0x13, 0x13, 0x13, 0x6f, 0x1d, 0x3d, 
+0x7a, 0xf4, 0x67, 0x46, 0x4f, 0x80, 0xc7, 0x18, 
+0x2b, 0x56, 0xa3, 0x31, 0x90, 0x7a, 0x02, 0x08, 
+0x62, 0xe9, 0xa0, 0x0a, 0xc0, 0x32, 0xa0, 0x91, 
+0xc3, 0x5f, 0x5d, 0x5e, 0xe9, 0x6f, 0xce, 0xf0, 
+0xdf, 0xb3, 0x67, 0x0f, 0x85, 0xff, 0x12, 0x30, 
+0x5b, 0x25, 0x00, 0x00, 0x1b, 0x18, 0x18, 0x78, 
+0x7c, 0x68, 0x68, 0x28, 0xb6, 0x12, 0xa0, 0xff, 
+0xcd, 0x92, 0x4c, 0x11, 0xa4, 0x4a, 0x00, 0x41, 
+0xd4, 0x17, 0x12, 0x80, 0x16, 0xa7, 0xd1, 0xc3, 
+0x3f, 0xa6, 0xec, 0x5f, 0x16, 0xfe, 0x00, 0xd2, 
+0x7b, 0xf6, 0xec, 0x79, 0xaa, 0xa3, 0xa3, 0x23, 
+0x36, 0xfc, 0x0f, 0x1c, 0x38, 0x40, 0xe1, 0x5f, 
+0x65, 0x16, 0x2a, 0x01, 0xe6, 0x90, 0x0d, 0x49, 
+0x00, 0x41, 0x34, 0x36, 0x24, 0x00, 0x2d, 0x4c, 
+0xb3, 0x84, 0xbf, 0xe7, 0x79, 0xee, 0x6c, 0xe1, 
+0x3f, 0x3a, 0x3a, 0xfa, 0x74, 0x47, 0x47, 0xc7, 
+0xb6, 0x98, 0xf3, 0xc3, 0xe3, 0x8f, 0x3f, 0x8e, 
+0xab, 0xaf, 0xbe, 0xba, 0xea, 0xd7, 0x8e, 0x48, 
+0x2c, 0x01, 0xa3, 0x71, 0x12, 0x80, 0x79, 0x2c, 
+0x16, 0x44, 0x12, 0x40, 0x10, 0xf5, 0x81, 0x04, 
+0xa0, 0x45, 0x69, 0xa1, 0xf0, 0x7f, 0xaa, 0x52, 
+0xf8, 0x3f, 0xf6, 0xd8, 0x63, 0xb8, 0xe6, 0x9a, 
+0x6b, 0xaa, 0x7e, 0xed, 0x88, 0xcb, 0x24, 0x90, 
+0x80, 0xc7, 0xe2, 0x24, 0x60, 0xbe, 0x2b, 0x06, 
+0x92, 0x04, 0x10, 0xc4, 0xd2, 0x43, 0x4d, 0x80, 
+0x2d, 0x48, 0xa3, 0x84, 0x7f, 0xa1, 0x50, 0x30, 
+0x83, 0x3f, 0xb6, 0xec, 0x1f, 0x04, 0xc7, 0x6c, 
+0xe1, 0x3f, 0x1c, 0x73, 0x7e, 0x78, 0xf4, 0xd1, 
+0x47, 0x71, 0xed, 0xb5, 0xd7, 0x56, 0xfd, 0xda, 
+0x11, 0xf1, 0x24, 0x68, 0x0c, 0xfc, 0xb3, 0xa3, 
+0x47, 0x8f, 0xfe, 0x94, 0x1a, 0x03, 0x09, 0xa2, 
+0x79, 0xa0, 0x0a, 0x40, 0x8b, 0x51, 0xcd, 0xf0, 
+0xef, 0xee, 0xee, 0x66, 0xd1, 0xf0, 0xcf, 0x64, 
+0x32, 0x6c, 0x29, 0xc2, 0x3f, 0x18, 0xf3, 0xa7, 
+0xf0, 0x6f, 0x10, 0xa8, 0x12, 0x40, 0x10, 0xad, 
+0x07, 0x09, 0x40, 0x0b, 0x51, 0xed, 0xf0, 0x3f, 
+0x7d, 0xfa, 0x34, 0x8f, 0x86, 0xff, 0xf9, 0xf3, 
+0xe7, 0xad, 0x1a, 0x84, 0xbf, 0xa3, 0x4a, 0xef, 
+0xfc, 0x9f, 0xec, 0xec, 0xec, 0x8c, 0x0d, 0xff, 
+0x47, 0x1e, 0x79, 0x84, 0xc2, 0xbf, 0x4e, 0x24, 
+0x94, 0x80, 0xbd, 0x24, 0x01, 0x04, 0xd1, 0x1c, 
+0x90, 0x00, 0xb4, 0x08, 0xf3, 0x0d, 0xff, 0x03, 
+0x07, 0x0e, 0x00, 0x68, 0x98, 0xf0, 0x77, 0x8d, 
+0x3b, 0xff, 0x27, 0x3a, 0x3a, 0x3a, 0x46, 0x62, 
+0xce, 0x0f, 0xfb, 0xf7, 0xef, 0xc7, 0x75, 0xd7, 
+0x5d, 0x57, 0xed, 0x4b, 0x47, 0xcc, 0x83, 0x04, 
+0x12, 0xf0, 0x68, 0x25, 0x09, 0xa0, 0xd9, 0x01, 
+0x04, 0xd1, 0x58, 0x90, 0x00, 0xb4, 0x00, 0x0b, 
+0x09, 0xff, 0xb8, 0x5d, 0xfd, 0x1a, 0x20, 0xfc, 
+0x0f, 0x74, 0x76, 0x76, 0x6e, 0x8f, 0x3b, 0x97, 
+0xfd, 0xfb, 0xf7, 0xe3, 0xfa, 0xeb, 0xaf, 0xaf, 
+0xf2, 0x95, 0x23, 0x16, 0x42, 0x12, 0x09, 0xd8, 
+0xb8, 0x71, 0x63, 0x99, 0x04, 0xd0, 0xec, 0x00, 
+0x82, 0x68, 0x2c, 0xa8, 0x09, 0xb0, 0xc9, 0x59, 
+0x8a, 0xf0, 0x9f, 0x9a, 0x9a, 0x0a, 0xf7, 0x6f, 
+0x9f, 0x2d, 0xfc, 0x19, 0x63, 0x56, 0xf0, 0x61, 
+0x3f, 0xaf, 0xf0, 0x57, 0x4a, 0xa5, 0x46, 0x47, 
+0x47, 0x9f, 0xe8, 0xec, 0xec, 0xdc, 0x11, 0x77, 
+0x2e, 0xfb, 0xf7, 0xef, 0xc7, 0x0d, 0x37, 0xdc, 
+0x50, 0xed, 0x4b, 0x47, 0x2c, 0x92, 0xb9, 0x1a, 
+0x03, 0x8f, 0x1d, 0x3b, 0xf6, 0x8d, 0x23, 0x47, 
+0x8e, 0xfc, 0x64, 0xb1, 0x8d, 0x81, 0x9c, 0x73, 
+0xdf, 0x75, 0x5d, 0x6a, 0x0c, 0x24, 0x88, 0x2a, 
+0x43, 0x15, 0x80, 0x26, 0xa6, 0x45, 0xc2, 0xdf, 
+0x0d, 0xee, 0xfc, 0x29, 0xfc, 0x9b, 0x8c, 0xb9, 
+0x2a, 0x01, 0x1b, 0x36, 0x6c, 0x88, 0xad, 0x04, 
+0xcc, 0xb7, 0x27, 0x20, 0x98, 0x4a, 0x4a, 0x95, 
+0x00, 0x82, 0xa8, 0x32, 0x54, 0x01, 0x68, 0x52, 
+0x5a, 0x29, 0xfc, 0xbb, 0xba, 0xba, 0x76, 0xc5, 
+0x9d, 0xcb, 0xc3, 0x0f, 0x3f, 0x8c, 0x1b, 0x6f, 
+0xbc, 0xb1, 0xda, 0x97, 0x0e, 0xf9, 0x7c, 0x1e, 
+0x27, 0x4e, 0x9c, 0xc0, 0xc5, 0x8b, 0x17, 0x91, 
+0xcb, 0xe5, 0xe0, 0xfb, 0x3e, 0x32, 0x99, 0x0c, 
+0xda, 0xda, 0xda, 0xd0, 0xd7, 0xd7, 0x87, 0x95, 
+0x2b, 0x57, 0x56, 0xfd, 0xef, 0x6c, 0x65, 0xa8, 
+0x12, 0x40, 0x10, 0xcd, 0x09, 0x09, 0x40, 0x13, 
+0xb2, 0x1c, 0xc2, 0xff, 0xa1, 0x87, 0x1e, 0xc2, 
+0x4d, 0x37, 0xdd, 0x54, 0xd5, 0xeb, 0x76, 0xe4, 
+0xc8, 0x11, 0x8c, 0x8d, 0x8d, 0xe1, 0xd3, 0x4f, 
+0x3f, 0xc5, 0x6c, 0xff, 0xdf, 0xb7, 0xb5, 0xb5, 
+0x61, 0x68, 0x68, 0x08, 0xbb, 0x76, 0xed, 0x42, 
+0x26, 0x93, 0xa9, 0xea, 0x31, 0xb4, 0x2a, 0x24, 
+0x01, 0x04, 0xd1, 0x7c, 0x90, 0x00, 0x34, 0x19, 
+0xf5, 0x08, 0x7f, 0xcb, 0xb2, 0x38, 0x00, 0x4b, 
+0x08, 0x11, 0x96, 0x64, 0xe7, 0x19, 0xfe, 0x25, 
+0xc1, 0x1f, 0x84, 0xff, 0xe3, 0x5d, 0x5d, 0x5d, 
+0xbb, 0xe3, 0xce, 0xe5, 0xc1, 0x07, 0x1f, 0xc4, 
+0x67, 0x3f, 0xfb, 0xd9, 0xaa, 0x5d, 0xb3, 0x8f, 
+0x3f, 0xfe, 0x18, 0xff, 0xf0, 0x0f, 0xff, 0x80, 
+0x33, 0x67, 0xce, 0xcc, 0xeb, 0xbf, 0xb3, 0x6d, 
+0x1b, 0x3b, 0x76, 0xec, 0xc0, 0xee, 0xdd, 0xbb, 
+0xc1, 0x39, 0x8d, 0x96, 0xcd, 0x05, 0x49, 0x00, 
+0x41, 0x34, 0x17, 0x24, 0x00, 0x4d, 0x44, 0xa3, 
+0x84, 0xbf, 0xe7, 0x79, 0x96, 0x52, 0xca, 0xd6, 
+0xe1, 0x8f, 0x99, 0xdd, 0xfc, 0x9c, 0xa4, 0xe1, 
+0xbf, 0x7b, 0xf7, 0xee, 0xc7, 0x56, 0xac, 0x58, 
+0xb1, 0x27, 0xee, 0x5c, 0xaa, 0x1d, 0xfe, 0xef, 
+0xbf, 0xff, 0x3e, 0xfe, 0xe1, 0x1f, 0xfe, 0x01, 
+0x52, 0xca, 0x05, 0xff, 0x8c, 0xd5, 0xab, 0x57, 
+0xe3, 0x8e, 0x3b, 0xee, 0x40, 0x3a, 0x9d, 0xae, 
+0xda, 0x71, 0xb5, 0x2a, 0x4b, 0xb5, 0x62, 0x20, 
+0x49, 0x00, 0x41, 0x2c, 0x1e, 0x12, 0x80, 0x26, 
+0xa1, 0x96, 0xe1, 0x9f, 0xcd, 0x66, 0x59, 0x10, 
+0xf8, 0x35, 0x09, 0x7f, 0x53, 0x00, 0x76, 0xef, 
+0xde, 0xfd, 0xe8, 0x8a, 0x15, 0x2b, 0x46, 0xe3, 
+0xce, 0xe5, 0x81, 0x07, 0x1e, 0xc0, 0xcd, 0x37, 
+0xdf, 0x5c, 0xb5, 0x6b, 0xf6, 0x8f, 0xff, 0xf8, 
+0x8f, 0xf8, 0xf9, 0xcf, 0x7f, 0x5e, 0x95, 0x9f, 
+0xd5, 0xde, 0xde, 0x8e, 0xfb, 0xee, 0xbb, 0x0f, 
+0x9d, 0x9d, 0x9d, 0x55, 0xf9, 0x79, 0xad, 0xcc, 
+0x02, 0x24, 0xa0, 0xc8, 0x18, 0xf3, 0x48, 0x02, 
+0x08, 0x62, 0x69, 0x21, 0x01, 0x68, 0x02, 0x9a, 
+0x3d, 0xfc, 0xa5, 0x94, 0x8e, 0x94, 0x32, 0xb5, 
+0x94, 0xe1, 0xff, 0x7f, 0xff, 0xef, 0xff, 0xc5, 
+0xd8, 0xd8, 0x58, 0xd5, 0x7e, 0x1e, 0x00, 0x64, 
+0xb3, 0x59, 0xec, 0xdb, 0xb7, 0x8f, 0x24, 0x20, 
+0x01, 0x54, 0x09, 0x20, 0x88, 0xc6, 0x87, 0x04, 
+0xa0, 0xc1, 0x69, 0xe6, 0xf0, 0x0f, 0x16, 0xf8, 
+0xd1, 0xe1, 0xff, 0xc8, 0x8a, 0x15, 0x2b, 0xf6, 
+0xc6, 0x9d, 0xcb, 0xfd, 0xf7, 0xdf, 0x8f, 0x5b, 
+0x6e, 0xb9, 0xa5, 0x6a, 0xd7, 0xac, 0x16, 0xe1, 
+0xaf, 0x21, 0x09, 0x48, 0x4e, 0xb5, 0x24, 0x40, 
+0x8b, 0x00, 0x49, 0x00, 0x41, 0x54, 0x17, 0xea, 
+0x6c, 0x6a, 0x60, 0x1a, 0x2d, 0xfc, 0x8d, 0xb9, 
+0xd9, 0x61, 0xf8, 0x7b, 0x9e, 0x37, 0x67, 0xf8, 
+0xef, 0xda, 0xb5, 0x6b, 0x7f, 0xa5, 0xf0, 0xdf, 
+0xb7, 0x6f, 0x5f, 0xd3, 0x84, 0x3f, 0x00, 0x4c, 
+0x4d, 0x4d, 0xe1, 0xaf, 0xfe, 0xea, 0xaf, 0x70, 
+0xf1, 0xe2, 0xc5, 0x9a, 0xfd, 0x1d, 0xad, 0x42, 
+0xb5, 0x36, 0x10, 0xd2, 0xff, 0x9f, 0xd1, 0x3a, 
+0x01, 0x04, 0x51, 0x5d, 0x48, 0x00, 0x1a, 0x94, 
+0x46, 0x0c, 0xff, 0x60, 0x29, 0xd7, 0x92, 0xf0, 
+0x87, 0xf1, 0x41, 0x5d, 0x29, 0xfc, 0xbb, 0xbb, 
+0xbb, 0xaf, 0x8e, 0x3b, 0x97, 0x7d, 0xfb, 0xf6, 
+0xe1, 0xd6, 0x5b, 0x6f, 0xad, 0xda, 0x35, 0xab, 
+0x75, 0xf8, 0x6b, 0x48, 0x02, 0x92, 0x43, 0x12, 
+0x40, 0x10, 0x8d, 0x0b, 0x09, 0x40, 0x03, 0xd2, 
+0x6c, 0xe1, 0x2f, 0xa5, 0x74, 0xa3, 0xe1, 0x2f, 
+0x84, 0x70, 0x77, 0xed, 0xda, 0xf5, 0x70, 0xa5, 
+0xf0, 0xbf, 0xef, 0xbe, 0xfb, 0x9a, 0x32, 0xfc, 
+0x35, 0x24, 0x01, 0xc9, 0x49, 0x28, 0x01, 0x7b, 
+0x48, 0x02, 0x08, 0x62, 0x69, 0x21, 0x01, 0x68, 
+0x30, 0x1a, 0x21, 0xfc, 0x01, 0x58, 0x55, 0x0a, 
+0xff, 0x6b, 0xe2, 0xce, 0xe5, 0xbe, 0xfb, 0xee, 
+0xc3, 0x6d, 0xb7, 0xdd, 0x56, 0xb5, 0x6b, 0xb6, 
+0xd4, 0xe1, 0xaf, 0x21, 0x09, 0x48, 0x4e, 0x02, 
+0x09, 0x78, 0x9c, 0x24, 0x80, 0x20, 0x96, 0x16, 
+0x6a, 0x02, 0x6c, 0x20, 0x1a, 0x21, 0xfc, 0x83, 
+0x0f, 0x4f, 0x7b, 0xb1, 0xe1, 0xdf, 0xd3, 0xd3, 
+0xf3, 0x99, 0xb8, 0x73, 0xb9, 0xe7, 0x9e, 0x7b, 
+0x70, 0xc7, 0x1d, 0x77, 0x54, 0xed, 0x9a, 0xd5, 
+0x2b, 0xfc, 0x4d, 0xa8, 0x31, 0x30, 0x39, 0x09, 
+0x1a, 0x03, 0xdf, 0x3a, 0x7a, 0xf4, 0xe8, 0xcf, 
+0x9a, 0xbd, 0x31, 0x90, 0x9a, 0x02, 0x89, 0x66, 
+0x80, 0x2a, 0x00, 0x0d, 0x42, 0x0b, 0x85, 0xff, 
+0x43, 0xcb, 0x29, 0xfc, 0x01, 0xaa, 0x04, 0xcc, 
+0x87, 0x24, 0x95, 0x80, 0xc1, 0xc1, 0xc1, 0x9a, 
+0x55, 0x02, 0xf2, 0xf9, 0x3c, 0x5f, 0x8a, 0x4a, 
+0x00, 0x55, 0x01, 0x88, 0x66, 0x80, 0x04, 0xa0, 
+0x01, 0x68, 0xa1, 0xf0, 0x7f, 0xb0, 0xa7, 0xa7, 
+0xe7, 0xda, 0xb8, 0x73, 0xb9, 0xfb, 0xee, 0xbb, 
+0x5b, 0x32, 0xfc, 0x35, 0x24, 0x01, 0xc9, 0x99, 
+0x4b, 0x02, 0x06, 0x07, 0x07, 0x6b, 0x26, 0x01, 
+0x4a, 0x29, 0x8b, 0x24, 0x80, 0x20, 0x66, 0x20, 
+0x01, 0xa8, 0x33, 0xf5, 0x0c, 0x7f, 0xfd, 0xc1, 
+0x58, 0x8d, 0xf0, 0xdf, 0xb9, 0x73, 0xe7, 0x03, 
+0x3d, 0x3d, 0x3d, 0xd7, 0xc5, 0x9d, 0xcb, 0xdd, 
+0x77, 0xdf, 0x8d, 0x3b, 0xef, 0xbc, 0xb3, 0x6a, 
+0xd7, 0xac, 0xd1, 0xc2, 0x5f, 0x43, 0x12, 0x90, 
+0x9c, 0x24, 0x8d, 0x81, 0x24, 0x01, 0x04, 0x51, 
+0x5b, 0x48, 0x00, 0xea, 0x48, 0xbd, 0xc3, 0xdf, 
+0xf8, 0x70, 0x5c, 0x74, 0xf8, 0xf7, 0xf6, 0xf6, 
+0x5e, 0x1f, 0x77, 0x2e, 0x77, 0xdd, 0x75, 0xd7, 
+0xb2, 0x08, 0x7f, 0x0d, 0x49, 0x40, 0x72, 0x66, 
+0x93, 0x00, 0xc6, 0x18, 0x0f, 0x24, 0x60, 0x37, 
+0x49, 0x00, 0x41, 0xd4, 0x06, 0x12, 0x80, 0x06, 
+0xa3, 0x09, 0xc3, 0xff, 0xfe, 0x4a, 0xe1, 0x7f, 
+0xe7, 0x9d, 0x77, 0xe2, 0xae, 0xbb, 0xee, 0xaa, 
+0xda, 0xb5, 0x69, 0xf4, 0xf0, 0xd7, 0x90, 0x04, 
+0x24, 0x27, 0x81, 0x04, 0x3c, 0x4e, 0x12, 0x40, 
+0x10, 0xb5, 0x81, 0x04, 0xa0, 0x4e, 0xc4, 0x7d, 
+0x20, 0x34, 0x5b, 0xf8, 0xef, 0xd8, 0xb1, 0x63, 
+0x5f, 0x6f, 0x6f, 0xef, 0x0d, 0x71, 0xe7, 0x77, 
+0xe7, 0x9d, 0x77, 0xe2, 0xee, 0xbb, 0xef, 0xae, 
+0xda, 0xf5, 0x6a, 0x96, 0xf0, 0xd7, 0x90, 0x04, 
+0x24, 0x87, 0x24, 0x80, 0x20, 0xea, 0x03, 0x09, 
+0x40, 0x1d, 0x68, 0xd6, 0xf0, 0x97, 0x52, 0x3a, 
+0xb8, 0x1c, 0xfe, 0xf7, 0xad, 0x5c, 0xb9, 0xf2, 
+0xc6, 0xb8, 0xf3, 0xbb, 0xe3, 0x8e, 0x3b, 0x96, 
+0x75, 0xf8, 0x6b, 0x48, 0x02, 0x92, 0x93, 0x50, 
+0x02, 0x76, 0x91, 0x04, 0x10, 0x44, 0xf5, 0x20, 
+0x01, 0x58, 0x62, 0x9a, 0x39, 0xfc, 0x75, 0x05, 
+0x20, 0x08, 0xff, 0x9b, 0xe2, 0xce, 0xef, 0xf6, 
+0xdb, 0x6f, 0xc7, 0x3d, 0xf7, 0xdc, 0x53, 0xb5, 
+0xeb, 0xd5, 0xac, 0xe1, 0xaf, 0x21, 0x09, 0x48, 
+0x4e, 0x02, 0x09, 0x38, 0x40, 0x12, 0x40, 0x10, 
+0xd5, 0x83, 0x04, 0x60, 0x09, 0x69, 0xf5, 0xf0, 
+0xbf, 0xed, 0xb6, 0xdb, 0x70, 0xef, 0xbd, 0xf7, 
+0x56, 0xed, 0x7a, 0x35, 0x7b, 0xf8, 0x6b, 0x48, 
+0x02, 0x92, 0x43, 0x12, 0x40, 0x10, 0x4b, 0x07, 
+0x09, 0xc0, 0x12, 0xd1, 0x22, 0xe1, 0x7f, 0xef, 
+0x6c, 0xe1, 0x7f, 0xdf, 0x7d, 0xf7, 0x55, 0xed, 
+0x7a, 0xb5, 0x4a, 0xf8, 0x6b, 0x48, 0x02, 0x92, 
+0x43, 0x12, 0x40, 0x10, 0x4b, 0x03, 0x09, 0xc0, 
+0x12, 0x90, 0x24, 0xfc, 0x35, 0x0d, 0x1e, 0xfe, 
+0x9f, 0x8d, 0x3b, 0xbf, 0x5b, 0x6f, 0xbd, 0x95, 
+0xc2, 0x3f, 0x01, 0x24, 0x01, 0xc9, 0x69, 0x35, 
+0x09, 0x00, 0x66, 0x7e, 0xe7, 0x63, 0xce, 0x85, 
+0x24, 0x80, 0xa8, 0x1b, 0x24, 0x00, 0x35, 0x26, 
+0x69, 0xf8, 0x8f, 0x8d, 0x8d, 0xb1, 0x46, 0x0d, 
+0xff, 0xed, 0xdb, 0xb7, 0xcf, 0x1a, 0xfe, 0xfb, 
+0xf6, 0xed, 0xab, 0xda, 0xf5, 0x6a, 0xd5, 0xf0, 
+0xd7, 0x90, 0x04, 0x24, 0x67, 0x81, 0x12, 0xe0, 
+0x34, 0xa2, 0x04, 0xe8, 0xdf, 0x77, 0x92, 0x00, 
+0xa2, 0x91, 0x20, 0x01, 0xa8, 0x21, 0x8d, 0x16, 
+0xfe, 0xc1, 0x07, 0xde, 0xbc, 0xc3, 0xff, 0x8a, 
+0x2b, 0xae, 0x88, 0x0d, 0xff, 0x5b, 0x6e, 0xb9, 
+0x85, 0xc2, 0x7f, 0x01, 0x90, 0x04, 0x24, 0x67, 
+0x01, 0x12, 0xe0, 0x92, 0x04, 0x10, 0x44, 0x32, 
+0x68, 0x37, 0xc0, 0x1a, 0xb1, 0x94, 0xe1, 0x9f, 
+0xcf, 0xe7, 0x39, 0x8c, 0x0f, 0xad, 0x4a, 0xe1, 
+0x2f, 0xa5, 0x74, 0xe2, 0xc2, 0x5f, 0x7f, 0x60, 
+0xc6, 0x84, 0xff, 0x3d, 0x57, 0x5c, 0x71, 0xc5, 
+0xcd, 0x71, 0xe7, 0x77, 0xcb, 0x2d, 0xb7, 0xe0, 
+0xfe, 0xfb, 0xef, 0xaf, 0xda, 0xf5, 0x5a, 0x2e, 
+0xe1, 0x6f, 0x42, 0xbb, 0x08, 0x26, 0x67, 0xb6, 
+0x5d, 0x04, 0x95, 0x52, 0x72, 0x62, 0x62, 0xe2, 
+0xcd, 0xf1, 0xf1, 0xf1, 0x77, 0x6a, 0xb1, 0x8b, 
+0x20, 0x63, 0x4c, 0xa4, 0xd3, 0x69, 0x59, 0xad, 
+0x5d, 0x04, 0x3f, 0xf7, 0xb9, 0xcf, 0x29, 0x00, 
+0xa0, 0x5d, 0x04, 0x89, 0x7a, 0x43, 0x15, 0x80, 
+0x1a, 0xd0, 0xea, 0xe1, 0x7f, 0xf3, 0xcd, 0x37, 
+0x53, 0xf8, 0x57, 0x01, 0xaa, 0x04, 0x24, 0xa7, 
+0x95, 0x7a, 0x02, 0xa8, 0x12, 0x40, 0x34, 0x0a, 
+0x24, 0x00, 0x55, 0x66, 0x39, 0x84, 0xff, 0x03, 
+0x0f, 0x3c, 0x50, 0xb5, 0xeb, 0xb5, 0x5c, 0xc3, 
+0x5f, 0x43, 0x12, 0x90, 0x1c, 0x92, 0x00, 0x82, 
+0xa8, 0x2e, 0x24, 0x00, 0x55, 0xa4, 0x52, 0xf8, 
+0x47, 0x69, 0xf0, 0xf0, 0xbf, 0x9b, 0xc2, 0x7f, 
+0x69, 0x21, 0x09, 0x48, 0x0e, 0x49, 0x00, 0x41, 
+0x54, 0x0f, 0x12, 0x80, 0x2a, 0x31, 0x5b, 0xf8, 
+0x47, 0xe7, 0xfa, 0x37, 0x6a, 0xf8, 0x8f, 0x8c, 
+0x8c, 0xdc, 0x7d, 0xc5, 0x15, 0x57, 0xdc, 0x12, 
+0x77, 0x7e, 0x9f, 0xfd, 0xec, 0x67, 0x29, 0xfc, 
+0x6b, 0x08, 0x49, 0x40, 0x72, 0x9a, 0x59, 0x02, 
+0x0e, 0x1c, 0x38, 0x40, 0x12, 0x40, 0x34, 0x0c, 
+0x24, 0x00, 0x35, 0xa2, 0xda, 0xe1, 0x6f, 0x59, 
+0x16, 0x5f, 0x48, 0xf8, 0x03, 0xb0, 0x93, 0x86, 
+0xff, 0xaa, 0x55, 0xab, 0x2a, 0x86, 0xff, 0x83, 
+0x0f, 0x3e, 0x58, 0xb5, 0x6b, 0x43, 0xe1, 0x1f, 
+0x0f, 0x49, 0x40, 0x72, 0x9a, 0x55, 0x02, 0x0e, 
+0x1f, 0x3e, 0x3c, 0x2f, 0x09, 0x20, 0x88, 0x5a, 
+0x42, 0x02, 0x50, 0x05, 0xa2, 0xa6, 0x5e, 0x8b, 
+0xf0, 0xd7, 0x1f, 0x3a, 0xa8, 0x4d, 0xf8, 0xdf, 
+0x55, 0x29, 0xfc, 0x6f, 0xba, 0xe9, 0x26, 0x0a, 
+0xff, 0x25, 0x84, 0x24, 0x20, 0x39, 0xcd, 0xba, 
+0x4e, 0xc0, 0x7c, 0x24, 0x80, 0xaa, 0x00, 0x44, 
+0x2d, 0x21, 0x01, 0x58, 0x24, 0x8d, 0x1e, 0xfe, 
+0x4a, 0x29, 0x37, 0x41, 0xf8, 0xdf, 0x1a, 0x77, 
+0x6e, 0x37, 0xdd, 0x74, 0x13, 0x1e, 0x7a, 0xe8, 
+0xa1, 0xaa, 0x5d, 0x2b, 0x0a, 0xff, 0x64, 0x90, 
+0x04, 0x24, 0xa7, 0x59, 0xd7, 0x09, 0x20, 0x09, 
+0x20, 0x1a, 0x01, 0x12, 0x80, 0x45, 0xd0, 0x6c, 
+0xe1, 0x0f, 0xc0, 0x89, 0x84, 0xff, 0x9d, 0x95, 
+0xc2, 0xff, 0xc6, 0x1b, 0x6f, 0xa4, 0xf0, 0xaf, 
+0x23, 0x24, 0x01, 0xc9, 0x59, 0xa0, 0x04, 0x34, 
+0xd5, 0x70, 0x00, 0x49, 0x00, 0x51, 0x0b, 0x48, 
+0x00, 0x16, 0x48, 0xa3, 0x86, 0xbf, 0xfe, 0x10, 
+0x8b, 0x0b, 0x7f, 0xfd, 0xc1, 0x67, 0x84, 0xff, 
+0x6d, 0x71, 0xe7, 0x76, 0xc3, 0x0d, 0x37, 0xe0, 
+0xe1, 0x87, 0x1f, 0xae, 0xda, 0xb5, 0xa2, 0xf0, 
+0x5f, 0x18, 0x24, 0x01, 0xc9, 0x59, 0x0e, 0x3d, 
+0x01, 0x24, 0x01, 0x44, 0xb5, 0x21, 0x01, 0x58, 
+0x00, 0xad, 0x1e, 0xfe, 0xfb, 0xf7, 0xef, 0xaf, 
+0xda, 0xb5, 0xa2, 0xf0, 0x5f, 0x1c, 0x24, 0x01, 
+0xc9, 0xa9, 0xb7, 0x04, 0x5c, 0xba, 0x74, 0xc9, 
+0x22, 0x09, 0x20, 0x9a, 0x09, 0x12, 0x80, 0x79, 
+0xd2, 0xe8, 0xe1, 0x8f, 0x48, 0xc3, 0x1f, 0xca, 
+0xc3, 0xff, 0x0e, 0x0a, 0xff, 0xe6, 0x82, 0x24, 
+0x20, 0x39, 0xf5, 0x94, 0x00, 0xcb, 0xb2, 0x38, 
+0x49, 0x00, 0xd1, 0x4c, 0x90, 0x00, 0xcc, 0x83, 
+0x46, 0x0d, 0x7f, 0x54, 0xe8, 0xf6, 0x47, 0x7c, 
+0xf8, 0xdf, 0x1e, 0x77, 0x6e, 0xd7, 0x5f, 0x7f, 
+0x3d, 0x85, 0x7f, 0x03, 0x43, 0x12, 0x90, 0x9c, 
+0x7a, 0x4b, 0x80, 0x0a, 0xd6, 0xeb, 0x20, 0x09, 
+0x20, 0x1a, 0x1d, 0x12, 0x80, 0x84, 0x34, 0x7b, 
+0xf8, 0x0f, 0x0f, 0x0f, 0x53, 0xf8, 0x37, 0x39, 
+0x24, 0x01, 0xc9, 0xa9, 0xa7, 0x04, 0xe4, 0xf3, 
+0x79, 0x92, 0x00, 0xa2, 0x29, 0x20, 0x01, 0x48, 
+0x40, 0xa3, 0x87, 0xff, 0x5c, 0x63, 0xfe, 0xc3, 
+0xc3, 0xc3, 0xb7, 0xf7, 0xf5, 0xf5, 0xc5, 0x86, 
+0xff, 0x75, 0xd7, 0x5d, 0x87, 0xfd, 0xfb, 0xf7, 
+0xc7, 0xee, 0x4c, 0xb6, 0x10, 0x28, 0xfc, 0x6b, 
+0x0b, 0x49, 0x40, 0x72, 0x48, 0x02, 0x08, 0x62, 
+0x76, 0x48, 0x00, 0xe6, 0xa0, 0x45, 0xc2, 0xff, 
+0x8e, 0xb8, 0x73, 0xbb, 0xee, 0xba, 0xeb, 0xf0, 
+0xc8, 0x23, 0x8f, 0x50, 0xf8, 0x37, 0x19, 0x24, 
+0x01, 0xc9, 0x21, 0x09, 0x20, 0x88, 0xca, 0x90, 
+0x00, 0xcc, 0x42, 0x2b, 0x87, 0xff, 0xb5, 0xd7, 
+0x5e, 0x4b, 0xe1, 0xdf, 0xc4, 0x90, 0x04, 0x24, 
+0x27, 0xa1, 0x04, 0xec, 0x6e, 0x66, 0x09, 0x20, 
+0x88, 0x85, 0x40, 0x02, 0x50, 0x81, 0x46, 0x0d, 
+0x7f, 0xfd, 0x21, 0xcb, 0x3c, 0x22, 0x0f, 0x00, 
+0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x94, 
+0x20, 0xfc, 0x6f, 0x9b, 0x2d, 0xfc, 0x1f, 0x7d, 
+0xf4, 0x51, 0x0a, 0xff, 0x26, 0x87, 0x24, 0x20, 
+0x39, 0x09, 0x24, 0xe0, 0xf1, 0x6a, 0x49, 0x00, 
+0x82, 0xdf, 0x65, 0x2c, 0xa1, 0x04, 0x50, 0x15, 
+0x80, 0x58, 0x08, 0x8c, 0x4c, 0xb2, 0x9c, 0x46, 
+0x0f, 0x7f, 0xcc, 0xdd, 0xf0, 0x77, 0x5b, 0x5f, 
+0x5f, 0xdf, 0x9d, 0x71, 0xe7, 0x46, 0xe1, 0xdf, 
+0x7a, 0x64, 0xb3, 0x59, 0xec, 0xdb, 0xb7, 0x0f, 
+0x9d, 0x9d, 0x9d, 0xf5, 0x3e, 0x94, 0x86, 0xc7, 
+0xf7, 0x7d, 0x7c, 0xf1, 0x8b, 0x5f, 0xc4, 0x07, 
+0x1f, 0x7c, 0x50, 0xf6, 0x3d, 0xa5, 0x94, 0x9c, 
+0x98, 0x98, 0x78, 0x6b, 0x7c, 0x7c, 0xfc, 0x9f, 
+0x39, 0xe7, 0x45, 0xc6, 0x58, 0xd1, 0xb2, 0x2c, 
+0x8f, 0x31, 0x56, 0xb4, 0x6d, 0xbb, 0x08, 0xc0, 
+0x63, 0x8c, 0x85, 0x0f, 0xc7, 0x71, 0x3c, 0xce, 
+0xb9, 0xc7, 0x18, 0xf3, 0xf5, 0x33, 0x63, 0xcc, 
+0x07, 0x20, 0xd2, 0xe9, 0xb4, 0x0f, 0x40, 0x30, 
+0xc6, 0x04, 0x00, 0x11, 0xbc, 0x27, 0x19, 0x63, 
+0x42, 0x08, 0x21, 0x7d, 0xdf, 0x97, 0xed, 0xed, 
+0xed, 0xd2, 0xf7, 0x7d, 0x99, 0x4e, 0xa7, 0x95, 
+0xef, 0xfb, 0x32, 0x9b, 0xcd, 0xaa, 0x73, 0xe7, 
+0xce, 0xa9, 0x8e, 0x8e, 0x0e, 0xd5, 0xdb, 0xdb, 
+0xab, 0x4e, 0x9e, 0x3c, 0xa9, 0x00, 0xa0, 0xbf, 
+0xbf, 0x5f, 0x0d, 0x0f, 0x0f, 0xab, 0x37, 0xdf, 
+0x7c, 0x13, 0x23, 0x23, 0x23, 0xe1, 0x07, 0xf6, 
+0xe7, 0x3e, 0xf7, 0x39, 0x05, 0xa0, 0xe4, 0x77, 
+0x59, 0xd1, 0x07, 0x3a, 0x31, 0x0f, 0xa8, 0x02, 
+0x10, 0xc1, 0x0c, 0x7f, 0xa5, 0x54, 0xc3, 0x84, 
+0x3f, 0x92, 0x77, 0xfb, 0x57, 0x0c, 0xff, 0xcf, 
+0x7c, 0xe6, 0x33, 0x14, 0xfe, 0x2d, 0x08, 0x55, 
+0x02, 0x92, 0x93, 0xb0, 0x12, 0xb0, 0x67, 0xb1, 
+0x95, 0x80, 0x7c, 0x3e, 0x1f, 0x5b, 0x09, 0xd0, 
+0xbb, 0x7a, 0x52, 0x25, 0x80, 0x68, 0x04, 0xa8, 
+0x02, 0x60, 0x10, 0x0d, 0x7f, 0x4d, 0x23, 0x84, 
+0x7f, 0xb1, 0x58, 0x2c, 0xf9, 0x00, 0x5a, 0x48, 
+0xf8, 0x3f, 0xf6, 0xd8, 0x63, 0x14, 0xfe, 0x2d, 
+0x0c, 0x55, 0x02, 0x92, 0x93, 0xa0, 0x12, 0xf0, 
+0x67, 0xe3, 0xe3, 0xe3, 0x3f, 0x6b, 0xd6, 0x4a, 
+0x40, 0x70, 0x1e, 0xf4, 0xe1, 0x4e, 0xcc, 0x0a, 
+0x55, 0x00, 0x02, 0x1a, 0x39, 0xfc, 0x17, 0x7b, 
+0xe7, 0x7f, 0xcd, 0x35, 0xd7, 0x50, 0xf8, 0x2f, 
+0x03, 0xa8, 0x12, 0x90, 0x9c, 0x04, 0x95, 0x80, 
+0xc7, 0x6a, 0x59, 0x09, 0xa0, 0xd9, 0x01, 0x44, 
+0x23, 0x40, 0x02, 0x80, 0xc6, 0x0f, 0xff, 0x84, 
+0xdd, 0xfe, 0x15, 0xc3, 0xff, 0xf1, 0xc7, 0x1f, 
+0xa7, 0xf0, 0x5f, 0x26, 0x90, 0x04, 0x24, 0x67, 
+0x2e, 0x09, 0x18, 0x1c, 0x1c, 0x7c, 0x7c, 0x68, 
+0x68, 0x28, 0x91, 0x04, 0x28, 0xa5, 0x48, 0x02, 
+0x88, 0xa6, 0x63, 0xd9, 0x0e, 0x01, 0x54, 0xfa, 
+0xc5, 0x50, 0x4a, 0x95, 0x05, 0x3f, 0x00, 0x2c, 
+0x34, 0xfc, 0xf5, 0x2f, 0x79, 0xb5, 0xc2, 0x5f, 
+0x29, 0xe5, 0x9a, 0x5b, 0xfa, 0xce, 0x36, 0xd5, 
+0x8f, 0xc2, 0x7f, 0xf9, 0x42, 0xc3, 0x01, 0xc9, 
+0x99, 0x6d, 0x38, 0x00, 0x80, 0x9a, 0x98, 0x98, 
+0x78, 0xeb, 0xe8, 0xd1, 0xa3, 0x73, 0x0e, 0x07, 
+0x38, 0x8e, 0xe3, 0x31, 0xc6, 0xe6, 0x35, 0x1c, 
+0x20, 0x84, 0x90, 0xed, 0xed, 0xed, 0x0b, 0x1a, 
+0x0e, 0x18, 0x1b, 0x1b, 0x53, 0x00, 0x12, 0x0d, 
+0x07, 0x00, 0x34, 0x24, 0x40, 0x94, 0xb3, 0x2c, 
+0x05, 0xa0, 0x19, 0xc2, 0x3f, 0x6e, 0xcc, 0x7f, 
+0x3e, 0xe1, 0x4f, 0x63, 0xfe, 0x04, 0x49, 0x40, 
+0x72, 0x5a, 0x4d, 0x02, 0x2a, 0xfd, 0xde, 0x93, 
+0x04, 0x10, 0x26, 0xcb, 0x6e, 0x08, 0xa0, 0x59, 
+0xc3, 0x1f, 0x80, 0x43, 0xe1, 0x4f, 0xcc, 0x07, 
+0x1a, 0x0e, 0x48, 0xce, 0x6c, 0xc3, 0x01, 0x00, 
+0xd8, 0xc0, 0xc0, 0xc0, 0xe3, 0x43, 0x43, 0x43, 
+0xa3, 0x73, 0x0d, 0x07, 0x04, 0x55, 0xbb, 0x79, 
+0x0d, 0x07, 0x2c, 0x66, 0x17, 0xc1, 0x91, 0x91, 
+0x11, 0x06, 0xa0, 0x6c, 0x38, 0xa0, 0x52, 0xce, 
+0xd3, 0x90, 0x00, 0x61, 0xb2, 0xac, 0x04, 0xa0, 
+0x99, 0xc3, 0x3f, 0xe9, 0x0a, 0x7f, 0x14, 0xfe, 
+0x84, 0x09, 0x49, 0x40, 0x72, 0x12, 0x48, 0xc0, 
+0x63, 0xad, 0x20, 0x01, 0x04, 0xa1, 0x59, 0x36, 
+0x02, 0x40, 0xe1, 0x3f, 0x7f, 0x28, 0xfc, 0x5b, 
+0x03, 0x92, 0x80, 0xe4, 0x2c, 0x07, 0x09, 0xa0, 
+0x2a, 0x00, 0xa1, 0x59, 0x16, 0x02, 0xb0, 0xd4, 
+0xe1, 0x3f, 0x35, 0x35, 0x15, 0xfe, 0x52, 0x57, 
+0x39, 0xfc, 0xef, 0x98, 0x6d, 0x79, 0x5f, 0x0a, 
+0x7f, 0xa2, 0x12, 0x24, 0x01, 0xc9, 0x21, 0x09, 
+0x20, 0x96, 0x0b, 0x2d, 0x5f, 0x26, 0xaa, 0x47, 
+0xf8, 0x5b, 0x96, 0xc5, 0x51, 0xfd, 0x86, 0xbf, 
+0x3b, 0x2a, 0x6d, 0xe9, 0x4b, 0xcb, 0xfb, 0x12, 
+0x49, 0xa1, 0xc6, 0xc0, 0xe4, 0x24, 0x68, 0x0c, 
+0xfc, 0xc6, 0xd1, 0xa3, 0x47, 0x7f, 0xd2, 0xcc, 
+0x8d, 0x81, 0xd4, 0x14, 0xb8, 0xbc, 0x69, 0xe9, 
+0x0a, 0x00, 0x85, 0xff, 0xfc, 0xa1, 0xf0, 0x6f, 
+0x6d, 0xa8, 0x12, 0x90, 0x9c, 0x04, 0x95, 0x80, 
+0x47, 0x87, 0x86, 0x86, 0xf6, 0xc6, 0x55, 0x02, 
+0xcc, 0xe9, 0xbb, 0x4b, 0x59, 0x09, 0x00, 0x00, 
+0xea, 0x09, 0x20, 0x92, 0xd2, 0xb2, 0xff, 0x53, 
+0xb4, 0x4a, 0xf8, 0x8f, 0x8c, 0x8c, 0xdc, 0xb1, 
+0x6a, 0xd5, 0xaa, 0xd8, 0xf0, 0xbf, 0xee, 0xba, 
+0xeb, 0x68, 0x4b, 0x5f, 0x62, 0x41, 0x50, 0x25, 
+0x20, 0x39, 0x73, 0x55, 0x02, 0x8e, 0x1d, 0x3b, 
+0xf6, 0x8d, 0x23, 0x47, 0x8e, 0x34, 0x4c, 0x25, 
+0xa0, 0xbf, 0xbf, 0x5f, 0x01, 0x40, 0xd2, 0x4a, 
+0x00, 0x55, 0x01, 0x96, 0x2f, 0x2d, 0x29, 0x00, 
+0x8d, 0x1e, 0xfe, 0xfa, 0xae, 0x00, 0x14, 0xfe, 
+0x44, 0x1d, 0x21, 0x09, 0x48, 0xce, 0x52, 0x49, 
+0x00, 0xe7, 0xdc, 0x77, 0x5d, 0x97, 0x24, 0x80, 
+0x58, 0x12, 0x5a, 0x6e, 0x08, 0xa0, 0x96, 0xe1, 
+0xef, 0x38, 0x0e, 0x5f, 0xaa, 0xf0, 0x1f, 0x1e, 
+0x1e, 0xbe, 0x93, 0xc2, 0x9f, 0xa8, 0x25, 0x34, 
+0x1c, 0x90, 0x9c, 0xb9, 0x86, 0x03, 0x36, 0x6c, 
+0xd8, 0xf0, 0xe8, 0xc6, 0x8d, 0x1b, 0x63, 0x87, 
+0x03, 0x30, 0x8f, 0xc6, 0x40, 0xe3, 0xf3, 0x63, 
+0x51, 0xc3, 0x01, 0xfa, 0xf3, 0x2c, 0xe9, 0x70, 
+0x00, 0x35, 0x05, 0x2e, 0x4f, 0x5a, 0xaa, 0x02, 
+0x30, 0xdf, 0xf0, 0xd7, 0xbf, 0x1c, 0x71, 0xe1, 
+0xef, 0xba, 0x2e, 0xcf, 0xe5, 0x72, 0xcc, 0x0c, 
+0xff, 0x4c, 0x26, 0xc3, 0x2a, 0x85, 0xbf, 0x10, 
+0xc2, 0x06, 0x60, 0x45, 0xc3, 0x5f, 0x08, 0xe1, 
+0x00, 0xb0, 0xe7, 0x1b, 0xfe, 0x7d, 0x7d, 0x7d, 
+0xb7, 0xc5, 0x9d, 0x0b, 0x85, 0x3f, 0x51, 0x6d, 
+0xa8, 0x12, 0x90, 0x9c, 0x56, 0xab, 0x04, 0x00, 
+0xa5, 0xcb, 0x06, 0x53, 0x25, 0x60, 0x79, 0xd1, 
+0x32, 0x15, 0x80, 0x46, 0x08, 0x7f, 0xcc, 0x54, 
+0x01, 0x16, 0x15, 0xfe, 0x23, 0x23, 0x23, 0x15, 
+0xc3, 0xff, 0xfa, 0xeb, 0xaf, 0xa7, 0xf0, 0x27, 
+0xaa, 0x0e, 0x55, 0x02, 0x92, 0xd3, 0xcc, 0x95, 
+0x80, 0x24, 0x1b, 0x08, 0x51, 0x25, 0x60, 0x79, 
+0xd1, 0x12, 0x02, 0xd0, 0x28, 0xe1, 0x5f, 0x28, 
+0x14, 0x16, 0x1d, 0xfe, 0xab, 0x56, 0xad, 0xaa, 
+0x18, 0xfe, 0xfb, 0xf7, 0xef, 0xa7, 0xf0, 0x27, 
+0x6a, 0x02, 0x49, 0x40, 0x72, 0x9a, 0x55, 0x02, 
+0x92, 0xee, 0x22, 0x48, 0x12, 0xb0, 0x7c, 0x68, 
+0xfa, 0x21, 0x80, 0xa5, 0x08, 0xff, 0xf3, 0xe7, 
+0xcf, 0x5b, 0xb6, 0x6d, 0x73, 0x0a, 0x7f, 0xa2, 
+0xd5, 0xa1, 0xe1, 0x80, 0xe4, 0x24, 0x58, 0x27, 
+0xe0, 0xcf, 0x8e, 0x1e, 0x3d, 0xfa, 0xd3, 0x46, 
+0x99, 0x1d, 0x00, 0xcc, 0xac, 0x13, 0x30, 0x3c, 
+0x3c, 0xac, 0xde, 0x7c, 0xf3, 0xcd, 0xd8, 0xe1, 
+0x00, 0x80, 0x86, 0x04, 0x96, 0x13, 0x4d, 0x2d, 
+0x00, 0x8b, 0x09, 0xff, 0x73, 0xe7, 0xce, 0xb1, 
+0x91, 0x91, 0x11, 0xcc, 0x37, 0xfc, 0x11, 0x58, 
+0xb8, 0x0e, 0x7f, 0x29, 0xa5, 0xed, 0x79, 0x9e, 
+0x95, 0x24, 0xfc, 0xa5, 0x94, 0xe1, 0xdd, 0x40, 
+0x24, 0xfc, 0xef, 0x5a, 0xb5, 0x6a, 0xd5, 0xad, 
+0x71, 0xe7, 0x72, 0xc3, 0x0d, 0x37, 0x60, 0xff, 
+0xfe, 0xfd, 0x55, 0xbb, 0x66, 0x14, 0xfe, 0xc4, 
+0x5c, 0x90, 0x04, 0x24, 0xa7, 0x9e, 0x12, 0x90, 
+0x4e, 0xa7, 0x25, 0x63, 0x4c, 0x08, 0x21, 0x64, 
+0x36, 0x9b, 0x95, 0x5a, 0x06, 0xd2, 0xe9, 0xb4, 
+0x9a, 0x9c, 0x9c, 0x54, 0x2b, 0x57, 0xae, 0x94, 
+0xf3, 0x91, 0x00, 0x80, 0x44, 0x60, 0xb9, 0xd1, 
+0xb4, 0x02, 0x50, 0xeb, 0xf0, 0xb7, 0x2c, 0x8b, 
+0x4f, 0x4f, 0x4f, 0x73, 0x0a, 0x7f, 0x62, 0x39, 
+0x42, 0x12, 0x90, 0x9c, 0x46, 0x93, 0x80, 0xa9, 
+0xa9, 0x29, 0xd5, 0xd5, 0xd5, 0x25, 0xb5, 0x04, 
+0x74, 0x75, 0x75, 0xa9, 0x33, 0x67, 0xce, 0x94, 
+0x49, 0x00, 0x00, 0xcc, 0x55, 0x0d, 0xd0, 0xd0, 
+0xb4, 0xc1, 0xd6, 0xa4, 0x29, 0x05, 0xa0, 0x5e, 
+0xe1, 0x6f, 0x3e, 0x28, 0xfc, 0x89, 0x56, 0x87, 
+0x24, 0x20, 0x39, 0xd5, 0x92, 0x00, 0x2d, 0x02, 
+0xb5, 0x94, 0x00, 0x00, 0x30, 0x67, 0x08, 0x24, 
+0xa9, 0x06, 0xc4, 0x31, 0xd7, 0x90, 0x24, 0x49, 
+0x42, 0xe3, 0xd3, 0x74, 0x02, 0x40, 0xe1, 0x3f, 
+0x7f, 0x28, 0xfc, 0x89, 0x85, 0x42, 0x12, 0x90, 
+0x9c, 0x5a, 0x49, 0x80, 0x16, 0x01, 0xcc, 0x04, 
+0xbf, 0x9f, 0x54, 0x02, 0x52, 0xa9, 0x94, 0x12, 
+0x42, 0xc8, 0xb6, 0xb6, 0x36, 0x75, 0xf1, 0xe2, 
+0x45, 0xd5, 0xdf, 0xdf, 0x2f, 0xcf, 0x9c, 0x39, 
+0xa3, 0x00, 0x20, 0x3a, 0x4d, 0x70, 0x78, 0x78, 
+0x58, 0x01, 0x40, 0x9c, 0x08, 0x00, 0x73, 0xcb, 
+0x40, 0x25, 0xe6, 0xd3, 0xb7, 0x44, 0xc2, 0xb0, 
+0xf4, 0x34, 0x95, 0x00, 0x2c, 0x87, 0xf0, 0xbf, 
+0xf1, 0xc6, 0x1b, 0xf1, 0xf0, 0xc3, 0x0f, 0x57, 
+0xed, 0x9a, 0x51, 0xf8, 0x13, 0x8b, 0x85, 0x24, 
+0x20, 0x39, 0xb5, 0x1a, 0x0e, 0x48, 0x2a, 0x01, 
+0x42, 0x08, 0xc9, 0x18, 0x13, 0xd9, 0x6c, 0x56, 
+0xe6, 0x72, 0x39, 0xd5, 0xd1, 0xd1, 0x21, 0x4d, 
+0x09, 0x88, 0x36, 0x07, 0xae, 0x59, 0xb3, 0x46, 
+0xfd, 0xe4, 0x27, 0x3f, 0x41, 0x52, 0x11, 0x30, 
+0x59, 0xa8, 0x14, 0x98, 0x24, 0x11, 0x04, 0x12, 
+0x83, 0xda, 0xd1, 0x34, 0x02, 0x40, 0xe1, 0x3f, 
+0x7f, 0x9a, 0x21, 0xfc, 0x5d, 0xd7, 0x85, 0xeb, 
+0xba, 0x00, 0x66, 0xfe, 0x2d, 0x95, 0x52, 0x28, 
+0x14, 0x0a, 0x10, 0x42, 0xd4, 0xf9, 0xc8, 0x08, 
+0x13, 0x92, 0x80, 0xe4, 0x24, 0x90, 0x80, 0xb7, 
+0x8e, 0x1e, 0x3d, 0xfa, 0xb3, 0x85, 0x48, 0x80, 
+0xf9, 0x88, 0x4a, 0x40, 0x70, 0xf7, 0x1f, 0xce, 
+0x0c, 0x68, 0x6b, 0x6b, 0x93, 0x42, 0x08, 0xd9, 
+0xd1, 0xd1, 0x21, 0xa7, 0xa6, 0xa6, 0x54, 0x4f, 
+0x4f, 0x8f, 0xd4, 0x12, 0x10, 0x37, 0x24, 0x00, 
+0xa0, 0x4c, 0x04, 0x80, 0x19, 0x19, 0x00, 0x30, 
+0xa7, 0x10, 0x54, 0x62, 0x3e, 0xa2, 0x40, 0x42, 
+0xb0, 0xb4, 0x34, 0x85, 0x00, 0xb4, 0x50, 0xf8, 
+0xdf, 0xbd, 0x6a, 0xd5, 0xaa, 0x5b, 0xe2, 0xce, 
+0xe5, 0xa6, 0x9b, 0x6e, 0xc2, 0x43, 0x0f, 0x3d, 
+0x54, 0xb5, 0x6b, 0xd6, 0xa8, 0xe1, 0x9f, 0x4e, 
+0xa7, 0xb1, 0x72, 0xe5, 0x4a, 0xac, 0x58, 0xb1, 
+0x02, 0xa9, 0x54, 0xaa, 0xe2, 0x2f, 0x7c, 0xa1, 
+0x50, 0x40, 0x2e, 0x97, 0xc3, 0xe4, 0xe4, 0x24, 
+0xce, 0x9e, 0x3d, 0x0b, 0xcf, 0xf3, 0x96, 0xf8, 
+0x48, 0x89, 0x28, 0x24, 0x01, 0xc9, 0x59, 0xa8, 
+0x04, 0xe8, 0xe7, 0x24, 0x12, 0x90, 0x4a, 0xa5, 
+0xc2, 0x55, 0x03, 0xb5, 0x04, 0xb8, 0xae, 0x2b, 
+0x39, 0xe7, 0x42, 0x08, 0x21, 0x33, 0x99, 0x8c, 
+0x14, 0x42, 0x94, 0x48, 0x80, 0x39, 0x4d, 0xb0, 
+0xab, 0xab, 0x4b, 0x8d, 0x8f, 0x8f, 0x43, 0x57, 
+0x03, 0x00, 0x20, 0x5a, 0x11, 0x00, 0x4a, 0x65, 
+0x40, 0xa3, 0xa5, 0x00, 0x58, 0xb8, 0x18, 0x68, 
+0x66, 0x13, 0x04, 0xea, 0x33, 0xa8, 0x2d, 0x0d, 
+0x2f, 0x00, 0x8d, 0x12, 0xfe, 0x85, 0x42, 0xc1, 
+0x66, 0x8c, 0x59, 0x41, 0xb0, 0xdb, 0x98, 0x67, 
+0xf8, 0x6f, 0xdf, 0xbe, 0xfd, 0x9e, 0x2b, 0xae, 
+0xb8, 0xe2, 0xe6, 0xb8, 0x73, 0x69, 0xf5, 0xf0, 
+0xb7, 0x2c, 0x0b, 0x3d, 0x3d, 0x3d, 0xe8, 0xed, 
+0xed, 0x45, 0x7b, 0x7b, 0xfb, 0x82, 0x7e, 0xc6, 
+0xc5, 0x8b, 0x17, 0x71, 0xfa, 0xf4, 0x69, 0x9c, 
+0x3d, 0x7b, 0xb6, 0xca, 0x47, 0x47, 0xcc, 0x07, 
+0x92, 0x80, 0xe4, 0x2c, 0xa5, 0x04, 0x00, 0x10, 
+0x96, 0x65, 0xf9, 0x41, 0xf0, 0x0b, 0x29, 0xa5, 
+0x64, 0x8c, 0x09, 0x2d, 0x01, 0x1d, 0x1d, 0x1d, 
+0x72, 0x7a, 0x7a, 0x5a, 0xad, 0x58, 0xb1, 0x42, 
+0x5e, 0xba, 0x74, 0x49, 0x99, 0x43, 0x02, 0xba, 
+0x1a, 0x00, 0xcc, 0xf4, 0x06, 0x00, 0x97, 0x45, 
+0x00, 0x40, 0x89, 0x0c, 0x98, 0xc4, 0x89, 0x81, 
+0x89, 0x29, 0x09, 0xc0, 0xfc, 0x44, 0x21, 0xc9, 
+0x4c, 0x84, 0x28, 0x24, 0x03, 0xf3, 0xa7, 0xa1, 
+0x05, 0xa0, 0x91, 0xc2, 0x5f, 0x19, 0x4b, 0xfc, 
+0x22, 0x41, 0xf8, 0x0b, 0x21, 0x5c, 0x00, 0x8e, 
+0x10, 0xc2, 0xdd, 0xb1, 0x63, 0xc7, 0x7d, 0x2b, 
+0x57, 0xae, 0xbc, 0x29, 0xee, 0x5c, 0x5a, 0x39, 
+0xfc, 0x6d, 0xdb, 0xc6, 0xba, 0x75, 0xeb, 0xd0, 
+0xd3, 0xd3, 0x03, 0xce, 0xab, 0xb3, 0xe8, 0x64, 
+0x2e, 0x97, 0xc3, 0xf1, 0xe3, 0xc7, 0x71, 0xe1, 
+0xc2, 0x85, 0xaa, 0xfc, 0x3c, 0x62, 0xfe, 0x90, 
+0x04, 0x24, 0x67, 0x2e, 0x09, 0x18, 0x1f, 0x1f, 
+0x7f, 0x6b, 0x7c, 0x7c, 0x3c, 0xb1, 0x04, 0x44, 
+0x67, 0x06, 0x44, 0x25, 0x00, 0x80, 0xc8, 0x64, 
+0x32, 0x02, 0x80, 0x90, 0x52, 0x4a, 0x21, 0x84, 
+0xd4, 0xbd, 0x01, 0x66, 0x73, 0xa0, 0xae, 0x06, 
+0x44, 0x45, 0x40, 0x57, 0x04, 0x80, 0x52, 0x19, 
+0x00, 0x00, 0x2d, 0x04, 0x40, 0x65, 0x29, 0x88, 
+0x52, 0x49, 0x12, 0xe6, 0x53, 0x41, 0x88, 0xca, 
+0x00, 0x89, 0x40, 0xf5, 0x68, 0x58, 0x01, 0x68, 
+0xd4, 0xf0, 0x0f, 0x56, 0xf3, 0xb3, 0xe7, 0x11, 
+0xfe, 0xfb, 0x56, 0xae, 0x5c, 0x79, 0x63, 0xdc, 
+0xb9, 0x7c, 0xf6, 0xb3, 0x9f, 0xc5, 0x83, 0x0f, 
+0x3e, 0x58, 0xb5, 0x6b, 0xd6, 0x48, 0xe1, 0x9f, 
+0xcd, 0x66, 0xb1, 0x69, 0xd3, 0xa6, 0x70, 0x7c, 
+0xbf, 0xda, 0x5c, 0xbc, 0x78, 0x11, 0x13, 0x13, 
+0x13, 0x28, 0x14, 0x0a, 0x35, 0xf9, 0xf9, 0xc4, 
+0xec, 0x90, 0x04, 0x24, 0x67, 0x36, 0x09, 0x50, 
+0x4a, 0xc9, 0x89, 0x89, 0x89, 0x3f, 0x5b, 0x8c, 
+0x04, 0xb8, 0xae, 0x1b, 0x0e, 0x05, 0xc0, 0x90, 
+0x00, 0xdd, 0x10, 0xa8, 0x05, 0x40, 0x08, 0x21, 
+0x1d, 0xc7, 0x51, 0x42, 0x08, 0xe9, 0xba, 0x6e, 
+0x49, 0x35, 0xa0, 0xbd, 0xbd, 0x5d, 0x9d, 0x3c, 
+0x79, 0x12, 0x5a, 0x04, 0x00, 0x40, 0x57, 0x05, 
+0x80, 0xcb, 0x32, 0x60, 0xa2, 0xc5, 0x00, 0x28, 
+0x95, 0x03, 0x93, 0xd9, 0x44, 0x21, 0x2a, 0x07, 
+0x49, 0x7a, 0x0d, 0xe6, 0x23, 0x03, 0x24, 0x02, 
+0x73, 0xd3, 0x90, 0x02, 0xd0, 0x28, 0xe1, 0x1f, 
+0xac, 0xc5, 0x3d, 0x6b, 0xf8, 0x07, 0xeb, 0x7d, 
+0x3b, 0x71, 0xe1, 0xbf, 0x73, 0xe7, 0xce, 0xfb, 
+0x7b, 0x7b, 0x7b, 0x6f, 0x88, 0x3b, 0x97, 0x9b, 
+0x6f, 0xbe, 0x19, 0x0f, 0x3c, 0xf0, 0x40, 0xd5, 
+0xae, 0x59, 0x23, 0x85, 0x7f, 0x5f, 0x5f, 0x1f, 
+0xd6, 0xad, 0x5b, 0x57, 0xb5, 0xa5, 0x8b, 0x2b, 
+0x21, 0x84, 0xc0, 0xd1, 0xa3, 0x47, 0x71, 0xfe, 
+0xfc, 0xf9, 0x9a, 0xfe, 0x3d, 0x44, 0x3c, 0x24, 
+0x01, 0xc9, 0xa9, 0xa6, 0x04, 0x00, 0xd0, 0x33, 
+0x02, 0x7c, 0xcb, 0xb2, 0x3c, 0xd7, 0x75, 0x7d, 
+0xa5, 0x54, 0x89, 0x00, 0xa4, 0x52, 0x29, 0x81, 
+0xa0, 0x41, 0xd0, 0xac, 0x02, 0xe8, 0x21, 0x01, 
+0xd7, 0x75, 0x95, 0x9e, 0x25, 0x90, 0xc9, 0x64, 
+0x94, 0x16, 0x01, 0x00, 0xd0, 0x15, 0x01, 0x7d, 
+0x7c, 0x5a, 0x08, 0xcc, 0xea, 0x80, 0x49, 0x9c, 
+0x1c, 0x98, 0x98, 0xc3, 0x09, 0x26, 0x71, 0x72, 
+0x60, 0xce, 0x42, 0xd0, 0x54, 0x12, 0x82, 0x4a, 
+0xab, 0x16, 0x9a, 0x90, 0x04, 0xcc, 0x4e, 0xc3, 
+0x09, 0x40, 0x33, 0x84, 0xbf, 0x9a, 0x59, 0xcf, 
+0x7f, 0xae, 0xf0, 0x7f, 0xb0, 0xb7, 0xb7, 0xf7, 
+0xba, 0xb8, 0x73, 0xb9, 0xe5, 0x96, 0x5b, 0x70, 
+0xff, 0xfd, 0xf7, 0x57, 0xed, 0x9a, 0x35, 0x4a, 
+0xf8, 0x5b, 0x96, 0x85, 0xa1, 0xa1, 0x21, 0xac, 
+0x58, 0xb1, 0x62, 0x49, 0xff, 0xde, 0x8f, 0x3f, 
+0xfe, 0x18, 0xc7, 0x8f, 0x1f, 0x47, 0xa3, 0xfd, 
+0xbf, 0xbc, 0x1c, 0x20, 0x09, 0x48, 0xce, 0x22, 
+0x25, 0xc0, 0x63, 0x8c, 0x15, 0x75, 0x15, 0x00, 
+0x86, 0x04, 0xe8, 0x2a, 0x80, 0x5e, 0x2c, 0x48, 
+0x8b, 0x80, 0x96, 0x00, 0x29, 0xa5, 0x74, 0x5d, 
+0x57, 0x4a, 0x29, 0x43, 0x11, 0x68, 0x6b, 0x6b, 
+0x93, 0xf9, 0x7c, 0x5e, 0xb9, 0xae, 0xab, 0xf4, 
+0xb0, 0x40, 0x26, 0x93, 0x51, 0xa7, 0x4f, 0x9f, 
+0x86, 0x1e, 0x1a, 0x00, 0x66, 0x64, 0x00, 0x00, 
+0x4c, 0x21, 0x00, 0x2e, 0x4b, 0x81, 0x66, 0x7c, 
+0x7c, 0x1c, 0x00, 0x62, 0x05, 0x01, 0xa8, 0x5c, 
+0x41, 0x98, 0x6d, 0x58, 0x21, 0x2a, 0x03, 0x24, 
+0x02, 0xd5, 0xa7, 0xa1, 0x04, 0x60, 0xb1, 0xe1, 
+0xbf, 0x7a, 0xf5, 0x6a, 0x06, 0x00, 0x7a, 0x57, 
+0xac, 0x5c, 0x2e, 0xc7, 0x1c, 0xc7, 0xe1, 0x85, 
+0x42, 0x81, 0xd5, 0xf0, 0xce, 0x3f, 0x7c, 0x46, 
+0x10, 0xfe, 0xbb, 0x76, 0xed, 0x7a, 0xa8, 0xa7, 
+0xa7, 0xe7, 0xda, 0xb8, 0x73, 0xb9, 0xf5, 0xd6, 
+0x5b, 0xb1, 0x6f, 0xdf, 0xbe, 0xaa, 0x5d, 0xb3, 
+0x46, 0x0a, 0xff, 0x6d, 0xdb, 0xb6, 0x21, 0x9d, 
+0x4e, 0xd7, 0xe5, 0xef, 0x3f, 0x7f, 0xfe, 0x3c, 
+0x3e, 0xfc, 0xf0, 0x43, 0x92, 0x80, 0x3a, 0x40, 
+0x12, 0x90, 0x9c, 0x79, 0x4a, 0x80, 0x67, 0x59, 
+0x56, 0x31, 0x22, 0x01, 0x9e, 0x6d, 0xdb, 0xe6, 
+0xa2, 0x41, 0x3e, 0x63, 0xcc, 0x33, 0x05, 0x40, 
+0x3f, 0xbb, 0xae, 0x1b, 0x56, 0x01, 0x5c, 0xd7, 
+0x0d, 0x87, 0x01, 0xcc, 0x6a, 0x40, 0x3e, 0x9f, 
+0x57, 0x8e, 0xe3, 0x28, 0x5d, 0x11, 0x70, 0x5d, 
+0x57, 0x45, 0x65, 0x00, 0x00, 0xb4, 0x10, 0x00, 
+0x97, 0xa5, 0xc0, 0x24, 0x2a, 0x08, 0x40, 0xbc, 
+0x24, 0x44, 0x05, 0xc1, 0x14, 0x83, 0xd9, 0x84, 
+0x40, 0xaf, 0x56, 0xa8, 0x99, 0x6d, 0xb1, 0x22, 
+0x92, 0x80, 0xe4, 0x34, 0x8c, 0x00, 0xc4, 0x85, 
+0xbf, 0x3e, 0xb6, 0x6a, 0x87, 0xbf, 0x52, 0xca, 
+0xe2, 0x9c, 0xf3, 0x5c, 0x2e, 0xb7, 0xd8, 0x3b, 
+0x7f, 0xf3, 0xd9, 0x95, 0x52, 0x3a, 0xbb, 0x76, 
+0xed, 0x7a, 0xb8, 0xa7, 0xa7, 0xe7, 0x33, 0x71, 
+0xe7, 0x78, 0xfb, 0xed, 0xb7, 0xe3, 0xde, 0x7b, 
+0xef, 0xad, 0xda, 0x35, 0x6b, 0x94, 0xf0, 0x07, 
+0x80, 0x4d, 0x9b, 0x36, 0xa1, 0xbb, 0xbb, 0xbb, 
+0xae, 0xc7, 0x40, 0x12, 0x50, 0x3f, 0x48, 0x02, 
+0x92, 0xb3, 0x10, 0x09, 0x00, 0xe0, 0xd9, 0xb6, 
+0x5d, 0xac, 0x24, 0x01, 0x8e, 0xe3, 0xf8, 0x08, 
+0xaa, 0x01, 0x9c, 0x73, 0x5f, 0x29, 0x15, 0x0a, 
+0x00, 0x66, 0x16, 0x09, 0x12, 0x42, 0x08, 0x19, 
+0xad, 0x06, 0x14, 0x0a, 0x05, 0x95, 0xc9, 0x64, 
+0xa4, 0xe3, 0x38, 0x4a, 0x57, 0x04, 0x52, 0xa9, 
+0x94, 0x3a, 0x7f, 0xfe, 0x3c, 0xf4, 0x6b, 0x00, 
+0xd0, 0x42, 0x00, 0x20, 0x94, 0x02, 0x8d, 0x29, 
+0x07, 0x9a, 0xa8, 0x24, 0x54, 0xaa, 0x20, 0x44, 
+0xa5, 0x60, 0xae, 0x59, 0x08, 0x73, 0x89, 0xc0, 
+0x5c, 0xd5, 0x00, 0x92, 0x80, 0x52, 0x1a, 0x42, 
+0x00, 0xaa, 0x11, 0xfe, 0x93, 0x93, 0x93, 0xac, 
+0xbb, 0xbb, 0x9b, 0x55, 0x3b, 0xfc, 0xa5, 0x94, 
+0x0e, 0x00, 0x7b, 0xae, 0xf0, 0x57, 0x4a, 0xb9, 
+0xbb, 0x76, 0xed, 0xda, 0xdf, 0xdd, 0xdd, 0x7d, 
+0x75, 0xdc, 0x39, 0xde, 0x79, 0xe7, 0x9d, 0xb8, 
+0xfb, 0xee, 0xbb, 0xab, 0x76, 0xcd, 0x1a, 0x29, 
+0xfc, 0x57, 0xad, 0x5a, 0x85, 0x0d, 0x1b, 0x36, 
+0xd4, 0xfb, 0x30, 0x00, 0x90, 0x04, 0xd4, 0x13, 
+0x92, 0x80, 0xe4, 0xcc, 0x25, 0x01, 0xe3, 0xe3, 
+0xe3, 0x6f, 0x4d, 0x4c, 0x4c, 0xfc, 0x73, 0x54, 
+0x02, 0x2c, 0xcb, 0xf2, 0xf4, 0x7b, 0xb6, 0x6d, 
+0xeb, 0x21, 0x00, 0x2f, 0x18, 0x06, 0xf0, 0x00, 
+0x84, 0x55, 0x00, 0xc7, 0x71, 0x42, 0x01, 0x88, 
+0x0e, 0x07, 0x04, 0x65, 0x7f, 0x59, 0x2c, 0x16, 
+0x95, 0x16, 0x01, 0xdb, 0xb6, 0x95, 0x16, 0x01, 
+0x5d, 0x15, 0x00, 0x00, 0x53, 0x08, 0xf4, 0x31, 
+0x6a, 0x31, 0xd0, 0x4c, 0x4d, 0x4d, 0x95, 0x7c, 
+0x3d, 0x9b, 0x24, 0x98, 0x72, 0xa0, 0xc5, 0x20, 
+0x3a, 0x03, 0x01, 0xb8, 0x2c, 0x03, 0x7a, 0x91, 
+0x22, 0xa0, 0x7c, 0x13, 0x23, 0x4d, 0x25, 0x11, 
+0x20, 0x09, 0x98, 0x9d, 0xba, 0x0b, 0x40, 0xb3, 
+0x84, 0xbf, 0xe7, 0x79, 0xae, 0xae, 0x02, 0xc4, 
+0x85, 0xff, 0xee, 0xdd, 0xbb, 0x1f, 0x59, 0xb1, 
+0x62, 0xc5, 0xde, 0xb8, 0x73, 0xbc, 0xeb, 0xae, 
+0xbb, 0x70, 0xd7, 0x5d, 0x77, 0x55, 0xed, 0x9a, 
+0x35, 0x52, 0xf8, 0x67, 0xb3, 0x59, 0x6c, 0xdd, 
+0xba, 0xb5, 0xe6, 0x0d, 0x7f, 0xf3, 0xe1, 0xcc, 
+0x99, 0x33, 0x38, 0x7a, 0xf4, 0x68, 0xbd, 0x0f, 
+0x63, 0x59, 0x42, 0x12, 0x90, 0x9c, 0x79, 0x48, 
+0x40, 0x28, 0x00, 0xe6, 0x70, 0x80, 0x59, 0x05, 
+0x00, 0x10, 0x0a, 0x80, 0x31, 0x04, 0xe0, 0x2b, 
+0xa5, 0xf4, 0x02, 0x41, 0xa1, 0x00, 0x38, 0x8e, 
+0x23, 0x4d, 0x11, 0xb0, 0x2c, 0x4b, 0x49, 0x29, 
+0xa5, 0x6d, 0xdb, 0xca, 0xb6, 0x6d, 0x65, 0xca, 
+0x00, 0x00, 0x68, 0x21, 0xd0, 0xc7, 0x66, 0x8a, 
+0x40, 0x2e, 0x97, 0x2b, 0x09, 0x90, 0x4a, 0x92, 
+0x60, 0x0a, 0x42, 0x74, 0x58, 0x21, 0xda, 0x67, 
+0x50, 0x69, 0x3a, 0xe2, 0x5c, 0x22, 0x30, 0x9f, 
+0x6a, 0x00, 0x49, 0xc0, 0x0c, 0x0d, 0x27, 0x00, 
+0xd5, 0x08, 0xff, 0x6c, 0x36, 0xcb, 0x26, 0x27, 
+0x27, 0xe7, 0x0c, 0x7f, 0x29, 0x65, 0xb8, 0xad, 
+0x6f, 0xa5, 0xf0, 0x97, 0x52, 0xba, 0xbe, 0xef, 
+0x3b, 0x73, 0x84, 0xff, 0xa3, 0x2b, 0x56, 0xac, 
+0x18, 0x8d, 0x3b, 0xbf, 0xbb, 0xef, 0xbe, 0x1b, 
+0x77, 0xde, 0x79, 0x67, 0xd5, 0xae, 0x57, 0x23, 
+0x85, 0xbf, 0x65, 0x59, 0x18, 0x1e, 0x1e, 0x46, 
+0x2a, 0x95, 0xaa, 0xf7, 0xa1, 0x94, 0x71, 0xec, 
+0xd8, 0x31, 0x7c, 0xf2, 0xc9, 0x27, 0xf5, 0x3e, 
+0x8c, 0x65, 0x09, 0x49, 0x40, 0x72, 0x92, 0x48, 
+0xc0, 0xf8, 0xf8, 0xf8, 0x3b, 0x96, 0x65, 0x15, 
+0xcd, 0x2a, 0x80, 0x9e, 0x19, 0x60, 0x56, 0x01, 
+0xf4, 0x0c, 0x01, 0x3d, 0x3d, 0xd0, 0xb6, 0xed, 
+0xb0, 0x1f, 0x40, 0x57, 0x03, 0x82, 0xa0, 0x97, 
+0x08, 0x56, 0x0d, 0xf4, 0x3c, 0x4f, 0xb9, 0xae, 
+0x2b, 0x8b, 0xc5, 0xa2, 0x72, 0x5d, 0x57, 0xda, 
+0xb6, 0xad, 0x8a, 0xc5, 0xa2, 0xd2, 0x32, 0x00, 
+0x00, 0x5a, 0x08, 0xf4, 0x71, 0x99, 0x62, 0x10, 
+0x7d, 0x4f, 0x13, 0x27, 0x09, 0x66, 0x45, 0x01, 
+0xb8, 0x2c, 0x05, 0xa6, 0x10, 0x7c, 0xfc, 0xf1, 
+0xc7, 0xc8, 0x64, 0x32, 0x6a, 0x36, 0x19, 0x18, 
+0x1b, 0x1b, 0x43, 0x77, 0x77, 0xb7, 0x02, 0xe6, 
+0x27, 0x02, 0x54, 0x0d, 0x28, 0xa7, 0xae, 0x02, 
+0xd0, 0xc8, 0xe1, 0x6f, 0x8e, 0xf9, 0xcf, 0x11, 
+0xfe, 0x8f, 0xad, 0x58, 0xb1, 0x62, 0x4f, 0xdc, 
+0xf9, 0xdd, 0x7b, 0xef, 0xbd, 0xb8, 0xfd, 0xf6, 
+0xdb, 0xab, 0x76, 0xbd, 0x1a, 0x29, 0xfc, 0x01, 
+0x60, 0xc3, 0x86, 0x0d, 0x58, 0xb5, 0x6a, 0x55, 
+0xbd, 0x0f, 0x23, 0x16, 0xa5, 0x14, 0xde, 0x7f, 
+0xff, 0x7d, 0x4c, 0x4d, 0x4d, 0xd5, 0xfb, 0x50, 
+0x96, 0x25, 0x24, 0x01, 0xc9, 0x99, 0x8f, 0x04, 
+0x04, 0xf3, 0xff, 0xc3, 0x2a, 0x00, 0x66, 0x7a, 
+0x03, 0xbc, 0x60, 0x98, 0xa0, 0x64, 0x66, 0x80, 
+0x6d, 0xdb, 0x02, 0xc1, 0x90, 0x80, 0xe3, 0x38, 
+0x42, 0x57, 0x03, 0x6c, 0xdb, 0x96, 0x52, 0x4a, 
+0x99, 0x4a, 0xa5, 0x84, 0xe7, 0x79, 0x4a, 0x57, 
+0x04, 0x38, 0xe7, 0x4a, 0x0b, 0x80, 0x65, 0x59, 
+0xca, 0xb2, 0xac, 0xf0, 0x6b, 0x00, 0xd0, 0x12, 
+0x60, 0xdb, 0xb6, 0xd2, 0xbf, 0x57, 0xa6, 0x18, 
+0xe8, 0xd7, 0xa6, 0x0c, 0x68, 0x49, 0xd0, 0xef, 
+0x69, 0x09, 0x30, 0xa5, 0xc0, 0x14, 0x02, 0x53, 
+0x06, 0xcc, 0xca, 0x40, 0x9c, 0x08, 0x44, 0xf7, 
+0x2f, 0x00, 0x80, 0xb1, 0xb1, 0x31, 0x05, 0x24, 
+0x97, 0x00, 0x12, 0x80, 0x3a, 0x9d, 0x7f, 0xa3, 
+0x85, 0xbf, 0x71, 0xc7, 0x9f, 0x38, 0xfc, 0xf7, 
+0xec, 0xd9, 0x73, 0xa0, 0xab, 0xab, 0x6b, 0x57, 
+0xdc, 0xf9, 0xed, 0xdb, 0xb7, 0x0f, 0xb7, 0xde, 
+0x7a, 0x6b, 0xd5, 0xae, 0x57, 0xa3, 0x85, 0x3f, 
+0xe7, 0x1c, 0xbb, 0x76, 0xed, 0x82, 0x65, 0x59, 
+0xf5, 0x3e, 0x94, 0x8a, 0x14, 0x8b, 0x45, 0x1c, 
+0x3e, 0x7c, 0x18, 0xbe, 0xef, 0xd7, 0xfb, 0x50, 
+0x96, 0x25, 0xd9, 0x6c, 0x16, 0x0f, 0x3c, 0xf0, 
+0xc0, 0x82, 0x97, 0x7f, 0x5e, 0x4e, 0x24, 0x90, 
+0x80, 0x3f, 0x1b, 0x1f, 0x1f, 0x0f, 0x87, 0x03, 
+0x82, 0xc0, 0xf7, 0x70, 0xb9, 0x22, 0xa0, 0x87, 
+0x05, 0x7c, 0xcc, 0x84, 0x7e, 0xd8, 0x18, 0x88, 
+0x99, 0xd0, 0x0f, 0x05, 0xc0, 0x71, 0x9c, 0xb0, 
+0x12, 0x60, 0x3e, 0x73, 0xce, 0x95, 0x65, 0x59, 
+0xca, 0xf3, 0x3c, 0x65, 0x59, 0x96, 0x8a, 0x0a, 
+0x01, 0x00, 0xe8, 0x67, 0x2d, 0x05, 0x40, 0xa9, 
+0x18, 0x98, 0xef, 0x4d, 0x4d, 0x4d, 0x95, 0x7d, 
+0xcf, 0x71, 0x1c, 0x35, 0x39, 0x39, 0x09, 0xc7, 
+0x71, 0x94, 0x29, 0x05, 0x7a, 0x06, 0x02, 0x30, 
+0x53, 0x21, 0x30, 0x57, 0x2a, 0x34, 0xab, 0x02, 
+0x71, 0xfb, 0x17, 0xc4, 0x6d, 0x64, 0x14, 0x57, 
+0x0d, 0xa0, 0x21, 0x81, 0x72, 0xea, 0x22, 0x00, 
+0x4d, 0x16, 0xfe, 0xe1, 0x0a, 0x7f, 0x86, 0x00, 
+0xa4, 0x82, 0xf0, 0xdf, 0x19, 0x77, 0x7e, 0xf7, 
+0xdf, 0x7f, 0x3f, 0x6e, 0xb9, 0xe5, 0x96, 0xaa, 
+0x5d, 0xaf, 0x46, 0x0b, 0x7f, 0x00, 0xe8, 0xed, 
+0xed, 0xc5, 0xd0, 0xd0, 0x50, 0xbd, 0x0f, 0x63, 
+0x4e, 0xce, 0x9d, 0x3b, 0x87, 0x0f, 0x3f, 0xfc, 
+0xb0, 0xde, 0x87, 0xb1, 0x6c, 0xe9, 0xee, 0xee, 
+0xc6, 0x43, 0x0f, 0x3d, 0x04, 0xdb, 0xb6, 0xeb, 
+0x7d, 0x28, 0x0d, 0x4f, 0x12, 0x09, 0x38, 0x76, 
+0xec, 0xd8, 0x3b, 0x00, 0x8a, 0x66, 0xf8, 0x23, 
+0xa8, 0x02, 0x04, 0xcf, 0xbe, 0xee, 0x09, 0x30, 
+0x64, 0x20, 0x14, 0x80, 0xa0, 0x2a, 0xa0, 0x7b, 
+0x01, 0x84, 0x71, 0xe7, 0x1f, 0x4a, 0x80, 0xef, 
+0xfb, 0x8a, 0x73, 0xae, 0xa2, 0x42, 0x00, 0x00, 
+0x9c, 0xf3, 0x30, 0xd0, 0x73, 0xb9, 0x5c, 0x28, 
+0x04, 0xc0, 0x65, 0x39, 0x88, 0x4a, 0x82, 0x29, 
+0x01, 0xa6, 0x18, 0xe8, 0x3e, 0x03, 0x53, 0x08, 
+0xa2, 0xd3, 0x11, 0xcd, 0xaa, 0xc0, 0xe4, 0xe4, 
+0xa4, 0xaa, 0x24, 0x02, 0x71, 0xc3, 0x02, 0xf3, 
+0xa9, 0x06, 0x90, 0x00, 0x2c, 0xd5, 0x5f, 0xd8, 
+0xa4, 0xe1, 0xaf, 0x9f, 0x01, 0xa4, 0xf7, 0xec, 
+0xd9, 0x73, 0xa0, 0xb3, 0xb3, 0x73, 0x47, 0xdc, 
+0xf9, 0x3d, 0xf0, 0xc0, 0x03, 0xb8, 0xf9, 0xe6, 
+0xd8, 0x3d, 0x7f, 0x16, 0x44, 0x23, 0x86, 0x3f, 
+0x00, 0x5c, 0x79, 0xe5, 0x95, 0x4d, 0x53, 0xde, 
+0xfd, 0xd5, 0xaf, 0x7e, 0x45, 0x7b, 0x07, 0xd4, 
+0x91, 0xa1, 0xa1, 0xa1, 0xaa, 0x0e, 0x85, 0xb5, 
+0x32, 0x09, 0x24, 0xe0, 0x1b, 0xc7, 0x8e, 0x1d, 
+0xfb, 0x67, 0x00, 0x5e, 0x50, 0x0d, 0x28, 0xa9, 
+0x02, 0xe8, 0x9e, 0x00, 0xcc, 0xac, 0x12, 0xa8, 
+0x1b, 0x02, 0x7d, 0x53, 0x00, 0x94, 0x52, 0xc2, 
+0xb2, 0x2c, 0x89, 0x99, 0x0d, 0x84, 0xc2, 0xe0, 
+0x37, 0x65, 0xc0, 0x94, 0x80, 0xe0, 0xb8, 0xc2, 
+0xd7, 0x5a, 0x0c, 0x80, 0x99, 0x5d, 0x3b, 0xf5, 
+0xfb, 0xb3, 0x49, 0x82, 0x29, 0x07, 0x66, 0x8f, 
+0x81, 0x6e, 0x3a, 0xd4, 0x7f, 0x3e, 0x9f, 0xcf, 
+0xab, 0xb6, 0xb6, 0x36, 0x99, 0x54, 0x04, 0xce, 
+0x9d, 0x3b, 0xa7, 0x66, 0x1b, 0x16, 0x20, 0x09, 
+0x98, 0x9d, 0x25, 0x15, 0x80, 0x46, 0x09, 0x7f, 
+0xa5, 0x94, 0x5d, 0x2c, 0x16, 0xe7, 0x7d, 0xe7, 
+0x8f, 0x99, 0xf0, 0x7f, 0xa2, 0xb3, 0xb3, 0x73, 
+0x7b, 0xdc, 0xf9, 0x3d, 0xf4, 0xd0, 0x43, 0xb8, 
+0xe9, 0xa6, 0xd8, 0x3d, 0x7f, 0x16, 0x44, 0xa3, 
+0x86, 0x7f, 0x2a, 0x95, 0xc2, 0x8e, 0x1d, 0xb1, 
+0xfe, 0xd3, 0x90, 0x14, 0x0a, 0x05, 0x8c, 0x8d, 
+0x8d, 0x41, 0x4a, 0x59, 0xef, 0x43, 0x59, 0xb6, 
+0xdc, 0x73, 0xcf, 0x3d, 0x58, 0xb7, 0x6e, 0x5d, 
+0xbd, 0x0f, 0xa3, 0x29, 0x48, 0x22, 0x01, 0x13, 
+0x13, 0x13, 0xef, 0xe8, 0x1d, 0x02, 0x83, 0xbe, 
+0x00, 0x53, 0x06, 0xca, 0x04, 0xc0, 0xb2, 0x2c, 
+0x81, 0x40, 0x04, 0x82, 0xb2, 0xbf, 0x90, 0x52, 
+0x4a, 0x2d, 0x00, 0xa6, 0x08, 0x58, 0x96, 0x55, 
+0x22, 0x00, 0x95, 0x24, 0x40, 0x3f, 0x17, 0x8b, 
+0xc5, 0x92, 0xaf, 0x4d, 0x21, 0xd0, 0x82, 0xa0, 
+0x87, 0x14, 0x00, 0x40, 0x57, 0x14, 0xf4, 0xc3, 
+0x14, 0x02, 0x21, 0x84, 0x8c, 0x4e, 0x47, 0xd4, 
+0x22, 0x60, 0x6e, 0x69, 0x6c, 0x6e, 0x62, 0x04, 
+0x00, 0x5a, 0x04, 0xcc, 0x6a, 0x40, 0xd2, 0x21, 
+0x81, 0xe5, 0x2c, 0x01, 0x4b, 0x26, 0x00, 0xf5, 
+0x0a, 0x7f, 0x1d, 0xfc, 0xa8, 0x4e, 0xf8, 0x3f, 
+0xd5, 0xd9, 0xd9, 0x39, 0x1c, 0x77, 0x7e, 0x0f, 
+0x3f, 0xfc, 0x30, 0x6e, 0xbc, 0x31, 0x76, 0xcf, 
+0x9f, 0x05, 0xd1, 0xa8, 0xe1, 0x0f, 0x00, 0xfd, 
+0xfd, 0xfd, 0xe8, 0xef, 0xef, 0xaf, 0xf7, 0x61, 
+0xcc, 0x8b, 0x8f, 0x3e, 0xfa, 0x08, 0x27, 0x4e, 
+0x9c, 0xa8, 0xf7, 0x61, 0x2c, 0x5b, 0x7a, 0x7b, 
+0x7b, 0xb1, 0x7f, 0xff, 0xfe, 0x7a, 0x1f, 0x46, 
+0xd3, 0x30, 0x97, 0x04, 0x1c, 0x3d, 0x7a, 0xf4, 
+0x1b, 0xc7, 0x8e, 0x1d, 0x7b, 0x37, 0x68, 0xfa, 
+0xf3, 0x2c, 0xcb, 0xd2, 0x02, 0xe0, 0x1b, 0xcf, 
+0x61, 0x3f, 0x80, 0x16, 0x00, 0xcb, 0xb2, 0xc2, 
+0x0a, 0x80, 0x7e, 0x0e, 0x82, 0x3f, 0xac, 0x02, 
+0x30, 0xc6, 0x4a, 0xaa, 0x00, 0x8c, 0xb1, 0x30, 
+0xdc, 0x7d, 0xdf, 0x2f, 0x0b, 0xfa, 0xd9, 0x24, 
+0xc0, 0x1c, 0x52, 0xd0, 0x5f, 0x9b, 0xc3, 0x0a, 
+0x7a, 0x06, 0x82, 0x29, 0x03, 0xe9, 0x74, 0x5a, 
+0xea, 0xca, 0x80, 0xb9, 0x5a, 0x61, 0x2e, 0x97, 
+0x53, 0xed, 0xed, 0xed, 0x25, 0xbb, 0x19, 0x26, 
+0xad, 0x06, 0x90, 0x04, 0xc4, 0x53, 0x9d, 0x3d, 
+0x5a, 0xe7, 0xa0, 0x9a, 0xe1, 0xdf, 0xd9, 0xd9, 
+0x39, 0x6b, 0xf8, 0x2b, 0xa5, 0xac, 0x68, 0xf8, 
+0xeb, 0x79, 0xfe, 0x0b, 0x08, 0x7f, 0xbd, 0xbe, 
+0x7f, 0x7a, 0x74, 0x74, 0x34, 0x36, 0xfc, 0x19, 
+0x63, 0x78, 0xe4, 0x91, 0x47, 0x96, 0x4d, 0xf8, 
+0x03, 0x40, 0x57, 0x57, 0x57, 0xbd, 0x0f, 0x61, 
+0xde, 0xac, 0x5e, 0xbd, 0xba, 0x6e, 0xcb, 0x14, 
+0x13, 0x33, 0x6b, 0x33, 0x7c, 0xf4, 0xd1, 0x47, 
+0xf5, 0x3e, 0x8c, 0xa6, 0xc1, 0xb6, 0x6d, 0xbc, 
+0xf0, 0xc2, 0x0b, 0xb8, 0xf2, 0xca, 0x2b, 0xcb, 
+0xbe, 0xc7, 0x18, 0xe3, 0x43, 0x43, 0x43, 0x8f, 
+0x6e, 0xd8, 0xb0, 0x61, 0x97, 0x94, 0xd2, 0x05, 
+0xe0, 0x0a, 0x21, 0x5c, 0xdf, 0xf7, 0x5d, 0xa5, 
+0x94, 0xeb, 0xfb, 0xbe, 0x2b, 0xa5, 0x74, 0x3d, 
+0xcf, 0x73, 0xa5, 0x94, 0x25, 0x0f, 0x21, 0x44, 
+0xf8, 0xac, 0xff, 0x1b, 0xc6, 0x98, 0x7e, 0xdf, 
+0x61, 0x8c, 0xb9, 0x52, 0x4a, 0xc7, 0xf3, 0x3c, 
+0x97, 0x31, 0xe6, 0xfa, 0xbe, 0xef, 0xfa, 0xbe, 
+0xef, 0x0a, 0x21, 0x1c, 0x21, 0x44, 0xf8, 0x7d, 
+0x21, 0x84, 0xe3, 0x79, 0x9e, 0xab, 0x9f, 0x39, 
+0xe7, 0x0e, 0xe7, 0xdc, 0x11, 0x42, 0x38, 0xbe, 
+0xef, 0x97, 0x3c, 0x38, 0xe7, 0x7a, 0x11, 0x35, 
+0x5b, 0x4a, 0x69, 0x0b, 0x21, 0xc2, 0x67, 0xdf, 
+0xf7, 0x6d, 0x21, 0x84, 0x2d, 0x84, 0x08, 0x6f, 
+0xd4, 0x3c, 0xcf, 0xb3, 0x2f, 0x5d, 0xba, 0x64, 
+0x29, 0xa5, 0x2c, 0x29, 0xa5, 0xa5, 0x94, 0xb2, 
+0x2c, 0xcb, 0xe2, 0xb6, 0x6d, 0x73, 0x21, 0x84, 
+0x35, 0x39, 0x39, 0xc9, 0x6d, 0xdb, 0xe6, 0x7a, 
+0x7f, 0x97, 0xce, 0xce, 0x4e, 0x36, 0x35, 0x35, 
+0xc5, 0xba, 0xbb, 0xbb, 0x59, 0x6f, 0x6f, 0x2f, 
+0x9b, 0x9c, 0x9c, 0x64, 0x67, 0xce, 0x9c, 0x61, 
+0xfd, 0xfd, 0xfd, 0x61, 0x96, 0x1c, 0x3e, 0x7c, 
+0x98, 0xe9, 0x6c, 0xd1, 0x59, 0x03, 0x5c, 0xce, 
+0x20, 0x33, 0xf3, 0x2b, 0x2d, 0x49, 0xdf, 0x8a, 
+0xd4, 0x5c, 0x00, 0x16, 0x1a, 0xfe, 0xfd, 0xfd, 
+0xfd, 0xb1, 0xe1, 0x7f, 0xf6, 0xec, 0xd9, 0xb2, 
+0xf0, 0x07, 0x60, 0xe9, 0xf0, 0x2f, 0x16, 0x8b, 
+0x1c, 0x91, 0xf0, 0x0f, 0xbe, 0x6f, 0x17, 0x0a, 
+0x05, 0x67, 0x9e, 0xe1, 0xef, 0x30, 0xc6, 0x32, 
+0xa3, 0xa3, 0xa3, 0xcf, 0x74, 0x74, 0x74, 0x54, 
+0x0c, 0xff, 0xeb, 0xaf, 0xbf, 0xbe, 0x6a, 0xd7, 
+0xab, 0xd1, 0xc3, 0x1f, 0x40, 0x53, 0x06, 0x29, 
+0x63, 0xac, 0xe9, 0xaa, 0x16, 0xad, 0xc6, 0xb1, 
+0x63, 0xc7, 0xea, 0x7d, 0x08, 0x4d, 0x45, 0x02, 
+0x09, 0x78, 0x64, 0xc3, 0x86, 0x0d, 0xbb, 0x74, 
+0x63, 0xb2, 0x52, 0x2a, 0x15, 0x84, 0x7f, 0x2a, 
+0xf8, 0x5a, 0x2f, 0x51, 0x9e, 0x0a, 0x42, 0x3f, 
+0x25, 0xa5, 0x4c, 0x05, 0xcf, 0x6e, 0x10, 0xe6, 
+0x25, 0x32, 0xa0, 0x5f, 0x9b, 0x72, 0xa0, 0xdf, 
+0xd7, 0x22, 0x00, 0x40, 0x4b, 0x86, 0x63, 0xca, 
+0x81, 0x16, 0x01, 0xcb, 0xb2, 0x4a, 0xde, 0x37, 
+0x25, 0x40, 0x3f, 0xec, 0x99, 0xae, 0x43, 0xdb, 
+0xf3, 0x3c, 0xc7, 0x71, 0x9c, 0x12, 0x19, 0x50, 
+0x4a, 0x59, 0xfa, 0x39, 0x4e, 0x04, 0x66, 0x46, 
+0x2c, 0x2c, 0xae, 0x6f, 0x04, 0xcf, 0x9e, 0x3d, 
+0xcb, 0x6d, 0xdb, 0xe6, 0xa7, 0x4f, 0x9f, 0xe6, 
+0x27, 0x4f, 0x9e, 0xe4, 0xdd, 0xdd, 0xdd, 0xb1, 
+0x12, 0x00, 0x5c, 0xce, 0x18, 0x92, 0x80, 0x19, 
+0x6a, 0x2a, 0x00, 0x8b, 0x09, 0x7f, 0xbd, 0xa3, 
+0x5f, 0x92, 0xf0, 0xb7, 0x2c, 0x8b, 0x57, 0x0a, 
+0x7f, 0x3d, 0xbf, 0xbf, 0x50, 0x28, 0x84, 0x6b, 
+0xfa, 0x47, 0xc3, 0x3f, 0x58, 0xde, 0x77, 0xb6, 
+0xf0, 0xdf, 0x1a, 0x73, 0x6e, 0x78, 0xf4, 0xd1, 
+0x47, 0x71, 0xdd, 0x75, 0xb1, 0x1b, 0xfe, 0x2d, 
+0x88, 0x66, 0x08, 0x7f, 0xcb, 0xb2, 0x1a, 0x7a, 
+0xea, 0xdf, 0x6c, 0xf4, 0xf4, 0xf4, 0x34, 0xa5, 
+0xbc, 0xb4, 0x0a, 0xc7, 0x8f, 0x1f, 0xaf, 0xf7, 
+0x21, 0x34, 0x1d, 0x09, 0x24, 0x60, 0xbf, 0x96, 
+0x00, 0x2d, 0x02, 0x08, 0x02, 0x5a, 0x29, 0x95, 
+0x0a, 0x64, 0xc0, 0x35, 0x9e, 0xcd, 0x6a, 0x40, 
+0x2a, 0x78, 0xb8, 0x00, 0xa2, 0xaf, 0xc3, 0xd0, 
+0xe7, 0x9c, 0x97, 0x88, 0x81, 0x10, 0xc2, 0x65, 
+0x8c, 0x45, 0x2b, 0x04, 0xe1, 0x9f, 0xd7, 0x22, 
+0x10, 0x15, 0x04, 0xcb, 0xb2, 0x1c, 0x53, 0x0a, 
+0x74, 0x55, 0xc0, 0xf3, 0xbc, 0x92, 0x67, 0x5d, 
+0x0d, 0xd0, 0x95, 0x01, 0x2d, 0x02, 0x96, 0x65, 
+0xf1, 0xc9, 0xc9, 0x49, 0xcb, 0xb2, 0x2c, 0x7e, 
+0xfe, 0xfc, 0x79, 0xcb, 0xb2, 0x2c, 0x7e, 0xe6, 
+0xcc, 0x19, 0x4b, 0x57, 0x03, 0x3a, 0x3a, 0x3a, 
+0x98, 0x59, 0x0d, 0x30, 0x25, 0xe0, 0xdc, 0xb9, 
+0x73, 0x8c, 0x24, 0xa0, 0x9c, 0x9a, 0x09, 0xc0, 
+0x52, 0x87, 0x7f, 0x2e, 0x97, 0x0b, 0x4b, 0xfd, 
+0x30, 0xc2, 0x5f, 0x4a, 0x59, 0x12, 0xfe, 0x2a, 
+0x66, 0x63, 0x1f, 0x00, 0x8e, 0x2e, 0x9f, 0xe9, 
+0xb2, 0x7f, 0x10, 0xfe, 0x07, 0xdb, 0xdb, 0xdb, 
+0xaf, 0x8a, 0x39, 0x37, 0x3c, 0xfe, 0xf8, 0xe3, 
+0xb8, 0xf6, 0xda, 0xd8, 0x0d, 0xff, 0x16, 0x44, 
+0x33, 0x84, 0x3f, 0x00, 0xb8, 0xae, 0x5b, 0xef, 
+0x43, 0x58, 0x14, 0xab, 0x57, 0xaf, 0xae, 0xf7, 
+0x21, 0x2c, 0x5b, 0x2e, 0x5e, 0xbc, 0x58, 0xef, 
+0x43, 0x68, 0x4a, 0xe6, 0x92, 0x80, 0x8d, 0x1b, 
+0x37, 0x3e, 0x3c, 0x38, 0x38, 0xb8, 0x13, 0x40, 
+0x2a, 0x58, 0xb9, 0x34, 0xa5, 0xc3, 0xdf, 0xf7, 
+0xfd, 0x12, 0x09, 0xd0, 0x0f, 0x5d, 0x0d, 0x08, 
+0x64, 0x20, 0x15, 0x91, 0x02, 0x53, 0x0e, 0x52, 
+0xbe, 0xef, 0xa7, 0x00, 0xa4, 0x7c, 0xdf, 0x4f, 
+0xf9, 0xbe, 0x1f, 0xca, 0x81, 0xe7, 0x79, 0x29, 
+0xc6, 0x98, 0xcb, 0x39, 0x77, 0xcd, 0xf7, 0x23, 
+0x43, 0x0b, 0x8e, 0x29, 0x06, 0xfa, 0x3d, 0xcf, 
+0xf3, 0x5c, 0x2d, 0x04, 0xa6, 0x0c, 0xe8, 0xca, 
+0x80, 0xe3, 0x38, 0xb6, 0x52, 0xca, 0x42, 0x50, 
+0xdd, 0x15, 0x42, 0xd8, 0x9e, 0xe7, 0xd9, 0xba, 
+0xd2, 0xab, 0x77, 0x74, 0xd5, 0xcf, 0x7a, 0xd9, 
+0x77, 0x5d, 0x0d, 0x88, 0x4a, 0xc0, 0xc8, 0xc8, 
+0x08, 0x48, 0x02, 0xca, 0xa9, 0x89, 0x00, 0xd4, 
+0x22, 0xfc, 0x6d, 0xdb, 0xe6, 0xb3, 0x85, 0x3f, 
+0x63, 0xac, 0xa4, 0xe3, 0x5f, 0x87, 0x7f, 0xf0, 
+0x3f, 0xcd, 0x9c, 0xe1, 0x0f, 0x40, 0x0f, 0x01, 
+0xb8, 0x9c, 0xf3, 0xcc, 0xde, 0xbd, 0x7b, 0x9f, 
+0x6d, 0x6f, 0x6f, 0x2f, 0xfb, 0x8d, 0x63, 0x8c, 
+0xe1, 0xc0, 0x81, 0x03, 0xb8, 0xe6, 0x9a, 0x6b, 
+0xaa, 0x76, 0xbd, 0x9a, 0x25, 0xfc, 0x5b, 0x81, 
+0xde, 0xde, 0xde, 0xa6, 0x97, 0x98, 0x66, 0x45, 
+0x4a, 0x89, 0x7c, 0x3e, 0x5f, 0xef, 0xc3, 0x68, 
+0x4a, 0x12, 0x54, 0x02, 0x1e, 0x5a, 0xbf, 0x7e, 
+0xfd, 0x0e, 0x3d, 0x14, 0xa0, 0x83, 0x5c, 0x7f, 
+0xed, 0x79, 0x5e, 0xca, 0x14, 0x00, 0x53, 0x02, 
+0xcc, 0x67, 0xfd, 0x1a, 0x41, 0x45, 0xc0, 0xac, 
+0x18, 0x30, 0xc6, 0x52, 0xa6, 0x18, 0x98, 0x82, 
+0x60, 0x54, 0x04, 0x42, 0x51, 0xf0, 0x3c, 0x4f, 
+0xff, 0x9c, 0x50, 0x0c, 0xcc, 0x3e, 0x83, 0x20, 
+0xfc, 0x5d, 0xb3, 0x3a, 0xa0, 0x65, 0x40, 0x57, 
+0x03, 0xf4, 0xf0, 0x00, 0x02, 0x11, 0xc0, 0xcc, 
+0xe7, 0xbb, 0xa5, 0x94, 0xb2, 0x74, 0x35, 0x60, 
+0x6a, 0x6a, 0x8a, 0x07, 0xd5, 0x01, 0x6e, 0xdb, 
+0x36, 0xcf, 0xe7, 0xf3, 0x4c, 0x0f, 0x09, 0xb8, 
+0xae, 0xcb, 0x7b, 0x7b, 0x7b, 0xd9, 0x99, 0x33, 
+0x67, 0xd8, 0xea, 0xd5, 0xab, 0x59, 0x7f, 0x7f, 
+0x3f, 0x49, 0x80, 0x41, 0xd5, 0x05, 0x20, 0x69, 
+0xf8, 0x1f, 0x38, 0x70, 0x60, 0x5e, 0xe1, 0x5f, 
+0x2c, 0x16, 0x99, 0x65, 0x59, 0xdc, 0xb2, 0xac, 
+0x45, 0x87, 0x7f, 0x30, 0x0c, 0x50, 0x31, 0xfc, 
+0x47, 0x47, 0x47, 0x9f, 0xcd, 0x66, 0xb3, 0x5b, 
+0x62, 0xce, 0x0d, 0x4f, 0x3e, 0xf9, 0x24, 0xae, 
+0xbe, 0x3a, 0x76, 0xc3, 0xbf, 0x05, 0xd1, 0x6c, 
+0xe1, 0xdf, 0xec, 0x0d, 0xb2, 0x8c, 0x31, 0xaa, 
+0x02, 0xd4, 0x11, 0x5a, 0x95, 0x71, 0xe1, 0x24, 
+0xa8, 0x04, 0x3c, 0xb8, 0x7e, 0xfd, 0xfa, 0x1d, 
+0xba, 0x31, 0x30, 0xe8, 0x09, 0x48, 0xe9, 0x8a, 
+0x80, 0xfe, 0xda, 0xac, 0x0e, 0x08, 0x21, 0xd2, 
+0x46, 0xf8, 0xa7, 0x23, 0xd5, 0x81, 0x94, 0xef, 
+0xfb, 0x69, 0xfd, 0x10, 0x42, 0xa4, 0x2a, 0x49, 
+0x80, 0x7e, 0xe8, 0xbe, 0x02, 0xf3, 0x01, 0x20, 
+0xa5, 0x1b, 0x0d, 0xa3, 0xc3, 0x05, 0x7a, 0xa8, 
+0x40, 0x0f, 0x0d, 0x04, 0xc3, 0xb0, 0xb6, 0x94, 
+0xd2, 0x36, 0x45, 0xc0, 0x1c, 0x1a, 0x80, 0xd1, 
+0xf3, 0xa5, 0x1f, 0xd3, 0xd3, 0xd3, 0xdc, 0xb2, 
+0x2c, 0x7e, 0xe9, 0xd2, 0x25, 0x6e, 0x0e, 0x09, 
+0xe4, 0x72, 0x39, 0x76, 0xf2, 0xe4, 0x49, 0x7d, 
+0x03, 0x19, 0x0e, 0x09, 0x90, 0x04, 0xcc, 0x50, 
+0x55, 0x01, 0x98, 0x4f, 0xf8, 0x1f, 0x3e, 0x7c, 
+0x78, 0x41, 0xe1, 0xaf, 0xad, 0x6f, 0x3e, 0xe1, 
+0x6f, 0x8e, 0xf9, 0x7b, 0x9e, 0xe7, 0x7a, 0x9e, 
+0x37, 0x5b, 0xf8, 0x1f, 0xca, 0x66, 0xb3, 0x9b, 
+0xcb, 0x2e, 0x14, 0xe7, 0x78, 0xea, 0xa9, 0xa7, 
+0x30, 0x3a, 0x1a, 0xbb, 0xe7, 0xcf, 0x82, 0x68, 
+0xb6, 0xf0, 0x07, 0xd0, 0x12, 0x73, 0xe9, 0x57, 
+0xae, 0x5c, 0x49, 0x2b, 0xd3, 0xd5, 0x09, 0xea, 
+0xc1, 0x58, 0x1c, 0x73, 0x49, 0xc0, 0xa6, 0x4d, 
+0x9b, 0xee, 0x5f, 0xbf, 0x7e, 0xfd, 0x76, 0x1d, 
+0xc8, 0x00, 0x74, 0xf0, 0xa7, 0xcd, 0xf0, 0x97, 
+0x52, 0xa6, 0x75, 0xb3, 0x60, 0xf0, 0x3a, 0xad, 
+0xbf, 0xa7, 0x45, 0x00, 0x33, 0x43, 0x0a, 0x25, 
+0x15, 0x03, 0x43, 0x02, 0x4c, 0x71, 0x88, 0xad, 
+0x1e, 0x44, 0xab, 0x04, 0x66, 0xcf, 0x81, 0x16, 
+0x82, 0xa8, 0x0c, 0x98, 0x55, 0x01, 0x21, 0x84, 
+0xa3, 0x45, 0x40, 0x0f, 0xed, 0x0a, 0x21, 0xec, 
+0xa9, 0xa9, 0xa9, 0x70, 0x78, 0x40, 0x57, 0x03, 
+0xf4, 0x6b, 0x3d, 0x24, 0x90, 0xcd, 0x66, 0x99, 
+0x29, 0x01, 0x71, 0x7d, 0x01, 0x24, 0x01, 0x55, 
+0x14, 0x80, 0x6a, 0x86, 0xbf, 0x6d, 0xdb, 0xbc, 
+0xda, 0xe1, 0xaf, 0xa7, 0xc5, 0x28, 0xa5, 0x1c, 
+0x04, 0xa1, 0x8f, 0xd2, 0xf0, 0xcf, 0xee, 0xdd, 
+0xbb, 0xf7, 0xb9, 0x6c, 0x36, 0xbb, 0xa9, 0xec, 
+0x22, 0x05, 0xe1, 0xbf, 0x67, 0x4f, 0xec, 0x9e, 
+0x3f, 0x0b, 0xa2, 0x19, 0xc3, 0x1f, 0x98, 0x59, 
+0x5f, 0xbf, 0xd9, 0x25, 0x80, 0x73, 0x8e, 0xde, 
+0xde, 0xde, 0x7a, 0x1f, 0xc6, 0xb2, 0xc3, 0x75, 
+0x5d, 0x12, 0xaf, 0x2a, 0x30, 0x97, 0x04, 0x6c, 
+0xde, 0xbc, 0x79, 0xdf, 0xfa, 0xf5, 0xeb, 0x47, 
+0xcc, 0x80, 0xc6, 0x8c, 0x08, 0xa4, 0xa5, 0x94, 
+0xe1, 0xdd, 0x7c, 0xf0, 0x75, 0xb4, 0x1a, 0x90, 
+0x96, 0x52, 0xa6, 0x85, 0x10, 0x69, 0xcf, 0xf3, 
+0x4a, 0xbe, 0xd6, 0xcf, 0x3a, 0xfc, 0xb5, 0x48, 
+0xe8, 0xf7, 0x84, 0x10, 0xfa, 0x67, 0xa7, 0x01, 
+0xa4, 0xa3, 0x62, 0x10, 0x84, 0x7e, 0x54, 0x08, 
+0xca, 0x64, 0x40, 0x8b, 0x80, 0xae, 0x0c, 0x28, 
+0xa5, 0x6c, 0xdb, 0xb6, 0xcb, 0x44, 0x00, 0x80, 
+0x95, 0xcb, 0xe5, 0xc2, 0xd9, 0x01, 0xf9, 0x7c, 
+0x9e, 0x9b, 0x43, 0x02, 0xba, 0x2f, 0x20, 0x3a, 
+0x55, 0x90, 0x24, 0xe0, 0x32, 0x55, 0x11, 0x80, 
+0x6a, 0x87, 0xbf, 0x1e, 0xc3, 0x49, 0x12, 0xfe, 
+0xba, 0x3c, 0xa4, 0xc3, 0x5f, 0xcd, 0xbd, 0xab, 
+0x5f, 0x38, 0x57, 0x36, 0x12, 0xfe, 0x87, 0xda, 
+0xda, 0xda, 0x36, 0x96, 0x5d, 0x20, 0xce, 0xf1, 
+0xf4, 0xd3, 0x4f, 0x63, 0xf7, 0xee, 0xdd, 0xd5, 
+0xb8, 0x54, 0x00, 0x9a, 0x37, 0xfc, 0x35, 0xb9, 
+0x5c, 0xae, 0xde, 0x87, 0xb0, 0x68, 0x56, 0xae, 
+0x5c, 0x59, 0xef, 0x43, 0x58, 0x76, 0x34, 0xea, 
+0xce, 0x91, 0xcd, 0xc8, 0x5c, 0x12, 0xb0, 0x65, 
+0xcb, 0x96, 0x7b, 0x37, 0x6c, 0xd8, 0x30, 0x1c, 
+0x1d, 0xdf, 0x0f, 0x82, 0x3f, 0x15, 0x88, 0x40, 
+0x58, 0xe2, 0x37, 0x2a, 0x00, 0xe1, 0xfb, 0x3a, 
+0xfc, 0xa3, 0x95, 0x02, 0x2d, 0x06, 0x5a, 0x04, 
+0x8c, 0xaa, 0x42, 0xf4, 0x11, 0x8a, 0x42, 0x4c, 
+0x9f, 0x81, 0x6b, 0x08, 0x81, 0xb9, 0x46, 0x81, 
+0x0e, 0xfe, 0x50, 0x04, 0xcc, 0x6a, 0x80, 0xf9, 
+0x30, 0x7b, 0x03, 0xa2, 0x0f, 0x3d, 0x4b, 0x60, 
+0x72, 0x72, 0x32, 0x9c, 0x2a, 0x48, 0x12, 0x50, 
+0x4e, 0x55, 0x56, 0x02, 0x34, 0x2f, 0x48, 0xb5, 
+0xc2, 0xff, 0xd2, 0xa5, 0x4b, 0x3c, 0x93, 0xc9, 
+0x30, 0x29, 0xa5, 0xa5, 0xcd, 0x4e, 0xff, 0xe3, 
+0x16, 0x0a, 0x85, 0x92, 0x85, 0x7e, 0xcc, 0x3b, 
+0x7f, 0x39, 0xc7, 0x3c, 0x7f, 0x18, 0xa5, 0x7f, 
+0x21, 0x84, 0x6b, 0x59, 0x56, 0xfb, 0xde, 0xbd, 
+0x7b, 0x9f, 0xcb, 0x64, 0x32, 0x03, 0xd1, 0xf3, 
+0xe2, 0x9c, 0xe3, 0xe0, 0xc1, 0x83, 0x55, 0x5d, 
+0xf6, 0xb6, 0xd9, 0xc3, 0x1f, 0x00, 0x06, 0x06, 
+0x06, 0x70, 0xc5, 0x15, 0x57, 0xd4, 0xfb, 0x30, 
+0x16, 0xcd, 0xe1, 0xc3, 0x87, 0x31, 0x3d, 0x3d, 
+0x5d, 0xef, 0xc3, 0x58, 0x36, 0x5c, 0x7f, 0xfd, 
+0xf5, 0x18, 0x1e, 0x8e, 0x5d, 0x48, 0x93, 0x58, 
+0x20, 0x73, 0xad, 0x18, 0xf8, 0xc1, 0x07, 0x1f, 
+0x7c, 0x7f, 0x62, 0x62, 0xe2, 0x03, 0x00, 0x82, 
+0x31, 0x26, 0x38, 0xe7, 0x02, 0x80, 0x64, 0x8c, 
+0x09, 0xc6, 0x98, 0x34, 0x1f, 0x52, 0xce, 0xac, 
+0x02, 0xc8, 0x18, 0x93, 0x00, 0x54, 0xf4, 0xb5, 
+0x10, 0x02, 0xc1, 0xaa, 0x80, 0x2a, 0xee, 0xd9, 
+0x7c, 0x2d, 0xa5, 0x54, 0xc1, 0xcf, 0x0d, 0x7f, 
+0x06, 0xe7, 0x5c, 0x32, 0xc6, 0xa4, 0x52, 0x4a, 
+0x72, 0xce, 0x45, 0xf0, 0x7e, 0xf8, 0x1c, 0x1c, 
+0x9b, 0xd0, 0xab, 0x15, 0x9a, 0x3b, 0x18, 0x9a, 
+0xaf, 0x11, 0xec, 0x68, 0xa8, 0x5f, 0xa7, 0x52, 
+0xa9, 0x70, 0x83, 0x23, 0x00, 0x22, 0x9d, 0x4e, 
+0x4b, 0x21, 0x84, 0xf4, 0x7d, 0x5f, 0xb6, 0xb5, 
+0xb5, 0x49, 0x21, 0x84, 0x34, 0x97, 0x11, 0xf6, 
+0x7d, 0x5f, 0x9a, 0x2b, 0x07, 0xea, 0x55, 0x03, 
+0xa3, 0x4b, 0x07, 0x2f, 0x87, 0x15, 0x03, 0x17, 
+0x2d, 0x00, 0xb5, 0x0a, 0x7f, 0x3d, 0x96, 0x93, 
+0x34, 0xfc, 0xd5, 0xcc, 0x2a, 0x7f, 0x65, 0xe1, 
+0x6f, 0x08, 0x40, 0x59, 0xf8, 0xdb, 0xb6, 0xdd, 
+0x31, 0x3a, 0x3a, 0xfa, 0x7c, 0x26, 0x93, 0x59, 
+0x1f, 0x3d, 0x2f, 0xcb, 0xb2, 0x70, 0xf0, 0xe0, 
+0x41, 0x6c, 0xdf, 0x1e, 0xbb, 0xec, 0xff, 0x82, 
+0x68, 0x85, 0xf0, 0x07, 0x66, 0x76, 0x78, 0xdb, 
+0xb4, 0xa9, 0x6c, 0xa4, 0xa4, 0xe9, 0xf8, 0xe4, 
+0x93, 0x4f, 0x68, 0x71, 0x9a, 0x25, 0x82, 0x73, 
+0x8e, 0x27, 0x9e, 0x78, 0x02, 0xd9, 0x6c, 0xb6, 
+0xde, 0x87, 0xd2, 0x72, 0xcc, 0x25, 0x01, 0xbf, 
+0xfc, 0xe5, 0x2f, 0xff, 0x66, 0x7c, 0x7c, 0xfc, 
+0xd7, 0x41, 0x20, 0x0b, 0xc6, 0x98, 0x96, 0x00, 
+0xfd, 0xb5, 0x32, 0xbe, 0xd6, 0xaf, 0x75, 0x88, 
+0x87, 0x5f, 0xeb, 0x1f, 0x39, 0x9b, 0x04, 0x48, 
+0x29, 0x4d, 0x21, 0x28, 0x09, 0x7e, 0x1d, 0xfe, 
+0x8c, 0xb1, 0x50, 0x00, 0x94, 0x52, 0x82, 0x73, 
+0xae, 0x97, 0x25, 0xd6, 0x12, 0xe0, 0xc3, 0x10, 
+0x01, 0xc6, 0x58, 0xb8, 0x99, 0x11, 0x63, 0xcc, 
+0x77, 0x1c, 0xa7, 0x44, 0x06, 0x00, 0x08, 0xd7, 
+0x75, 0xf5, 0x79, 0x09, 0x21, 0x84, 0xcc, 0x66, 
+0xb3, 0x22, 0x2a, 0x01, 0xae, 0xeb, 0x2a, 0xdf, 
+0xf7, 0x25, 0x49, 0xc0, 0x65, 0x16, 0x25, 0x00, 
+0xcd, 0x18, 0xfe, 0x6a, 0x66, 0x3e, 0xac, 0xe3, 
+0x38, 0x4e, 0xe7, 0xe8, 0xe8, 0xe8, 0x0b, 0xe9, 
+0x74, 0x7a, 0x6d, 0xf4, 0xbc, 0x2c, 0xcb, 0xc2, 
+0xb3, 0xcf, 0x3e, 0x8b, 0x91, 0x91, 0x91, 0x05, 
+0x5f, 0x9b, 0x28, 0xad, 0x12, 0xfe, 0xc0, 0xcc, 
+0x87, 0xf9, 0xae, 0x5d, 0xbb, 0x9a, 0x76, 0x41, 
+0x20, 0x8d, 0xef, 0xfb, 0x78, 0xe7, 0x9d, 0x77, 
+0x9a, 0x7e, 0x66, 0x43, 0x33, 0x30, 0x3c, 0x3c, 
+0x5c, 0xd5, 0x15, 0x33, 0x89, 0x52, 0xe6, 0x90, 
+0x00, 0x75, 0xfe, 0xfc, 0xf9, 0x63, 0x41, 0xf8, 
+0x96, 0x84, 0x76, 0xf0, 0x80, 0x19, 0xf0, 0x91, 
+0xaf, 0xcd, 0xf7, 0xc2, 0xc0, 0x0b, 0x3e, 0xfa, 
+0xcb, 0xfe, 0x4c, 0xf4, 0x67, 0x45, 0xfe, 0x5c, 
+0x99, 0x30, 0xe4, 0xf3, 0xf9, 0x63, 0x27, 0x4f, 
+0x9e, 0xfc, 0xdb, 0xe9, 0xe9, 0xe9, 0xf3, 0x9c, 
+0xf3, 0xb0, 0x0a, 0x00, 0xc0, 0x0f, 0x24, 0xc1, 
+0x57, 0x4a, 0x09, 0xc7, 0x71, 0x7c, 0x53, 0x06, 
+0xd8, 0xcc, 0x26, 0x47, 0x22, 0x10, 0x08, 0xdf, 
+0x75, 0xdd, 0x92, 0x2a, 0x40, 0x26, 0x93, 0x11, 
+0x52, 0x4a, 0x29, 0x84, 0x90, 0x00, 0xc4, 0x42, 
+0x24, 0x20, 0x6e, 0x27, 0xc1, 0x56, 0x93, 0x80, 
+0x05, 0x0b, 0x40, 0x93, 0x84, 0x7f, 0xd8, 0xf4, 
+0x67, 0x86, 0xbf, 0xeb, 0xba, 0x5d, 0xa3, 0xa3, 
+0xa3, 0x2f, 0xa6, 0x52, 0xa9, 0x35, 0xd1, 0xf3, 
+0xb2, 0x6d, 0x1b, 0xcf, 0x3e, 0xfb, 0x6c, 0x55, 
+0x4b, 0x95, 0xad, 0x14, 0xfe, 0x9a, 0xa1, 0xa1, 
+0xa1, 0x96, 0x68, 0xa4, 0xfb, 0xf0, 0xc3, 0x0f, 
+0x71, 0xee, 0xdc, 0xb9, 0x7a, 0x1f, 0x46, 0x4b, 
+0xe3, 0x38, 0x0e, 0x0e, 0x1c, 0x38, 0x80, 0x4c, 
+0x26, 0x53, 0xef, 0x43, 0x69, 0x69, 0x66, 0x93, 
+0x80, 0x46, 0x46, 0x29, 0xe5, 0x9d, 0x3c, 0x79, 
+0xf2, 0x0f, 0x4e, 0x9e, 0x3c, 0xf9, 0x4e, 0x50, 
+0x09, 0xf0, 0x61, 0x08, 0x40, 0xf0, 0xb5, 0x00, 
+0xe0, 0x6b, 0x01, 0xd0, 0xaf, 0x31, 0x33, 0x84, 
+0x10, 0x0a, 0x00, 0x4a, 0xab, 0x02, 0x92, 0x31, 
+0x26, 0x82, 0x21, 0x00, 0x21, 0x84, 0x90, 0x7a, 
+0x43, 0x21, 0x92, 0x80, 0x19, 0x16, 0xd4, 0x04, 
+0x98, 0x24, 0xfc, 0x01, 0x2c, 0x2a, 0xfc, 0xcd, 
+0x86, 0x8e, 0xb9, 0xc2, 0x3f, 0xda, 0xf0, 0x67, 
+0x86, 0xbf, 0xd9, 0xf0, 0x27, 0xa5, 0x74, 0x52, 
+0xa9, 0xd4, 0x8a, 0xd1, 0xd1, 0xd1, 0x97, 0x2b, 
+0x85, 0xff, 0xf3, 0xcf, 0x3f, 0x4f, 0xe1, 0x9f, 
+0x80, 0xd3, 0xa7, 0x4f, 0xd7, 0xfb, 0x10, 0xaa, 
+0x42, 0x77, 0x77, 0x77, 0xbd, 0x0f, 0xa1, 0xe5, 
+0xb9, 0xe5, 0x96, 0x5b, 0x28, 0xfc, 0x97, 0x80, 
+0xd9, 0x1a, 0x03, 0x1b, 0x19, 0xc6, 0x98, 0xd3, 
+0xdf, 0xdf, 0xff, 0xff, 0xad, 0x59, 0xb3, 0x66, 
+0x54, 0x19, 0x2b, 0x16, 0x06, 0xaf, 0xf5, 0xa6, 
+0x46, 0x8e, 0x0a, 0x76, 0x66, 0xd5, 0x8d, 0x82, 
+0xc1, 0x7b, 0x76, 0xf0, 0x3a, 0x5c, 0x05, 0x56, 
+0x3f, 0x8a, 0xc5, 0x22, 0xd7, 0x33, 0x04, 0x26, 
+0x27, 0x27, 0xc3, 0x69, 0x82, 0x3a, 0x6b, 0x74, 
+0xf6, 0x2c, 0xe7, 0xc6, 0xc0, 0x79, 0x0b, 0x40, 
+0xd2, 0xf0, 0x9f, 0x6b, 0x91, 0x9f, 0xb9, 0xc2, 
+0x5f, 0xdf, 0xfd, 0x9b, 0xe1, 0x6f, 0x76, 0xfb, 
+0x4b, 0x29, 0x1d, 0x1d, 0xfe, 0x2a, 0xb2, 0xc8, 
+0x8f, 0x19, 0xfe, 0xc1, 0x34, 0x12, 0x57, 0x4a, 
+0xe9, 0xa6, 0xd3, 0xe9, 0x9e, 0xd1, 0xd1, 0xd1, 
+0x57, 0x52, 0xa9, 0x54, 0x5f, 0xf4, 0xbc, 0x1c, 
+0xc7, 0xc1, 0x8b, 0x2f, 0xbe, 0x88, 0xab, 0xae, 
+0x2a, 0x5b, 0xf9, 0x77, 0xc1, 0xb4, 0x6a, 0xf8, 
+0x03, 0xc0, 0xe4, 0xe4, 0x24, 0x2e, 0x5c, 0xb8, 
+0x50, 0xef, 0xc3, 0x58, 0x34, 0x5d, 0x5d, 0x5d, 
+0x68, 0xd2, 0xdf, 0xdd, 0xa6, 0x60, 0x74, 0x74, 
+0x14, 0x03, 0x03, 0x65, 0xfd, 0xb5, 0x44, 0x8d, 
+0x68, 0x62, 0x09, 0xb0, 0xd7, 0xae, 0x5d, 0xfb, 
+0x1b, 0xfd, 0xfd, 0xfd, 0x7b, 0x54, 0x64, 0xcf, 
+0x02, 0xf3, 0xa1, 0x6f, 0xf6, 0xa2, 0x12, 0x10, 
+0xec, 0xf2, 0x5a, 0xf6, 0x88, 0x9b, 0x26, 0x48, 
+0x12, 0x70, 0x99, 0x79, 0x09, 0x40, 0xbd, 0xc3, 
+0x9f, 0x31, 0xa6, 0x5f, 0x3b, 0xc1, 0x5c, 0xff, 
+0x92, 0xf0, 0x97, 0x33, 0xeb, 0x60, 0xc7, 0x86, 
+0x7f, 0x26, 0x93, 0xe9, 0xd9, 0xb3, 0x67, 0xcf, 
+0xcb, 0xae, 0xeb, 0x96, 0xb5, 0xaf, 0xbb, 0xae, 
+0x8b, 0x97, 0x5e, 0x7a, 0x09, 0x5b, 0xb6, 0x94, 
+0x2d, 0xfe, 0xb7, 0x60, 0x5a, 0x39, 0xfc, 0x35, 
+0xad, 0xb0, 0xb9, 0x8b, 0x65, 0x59, 0xd4, 0x98, 
+0x56, 0x23, 0x46, 0x46, 0x46, 0xaa, 0xba, 0x76, 
+0x06, 0x91, 0x0c, 0x2d, 0x01, 0xa3, 0xa3, 0xa3, 
+0xe0, 0x7c, 0x49, 0x76, 0x7c, 0xaf, 0x0a, 0x8c, 
+0x31, 0x7b, 0xdd, 0xba, 0x75, 0xaf, 0xf7, 0xf5, 
+0xf5, 0xed, 0x56, 0xc1, 0xaa, 0x85, 0xba, 0x12, 
+0x60, 0x4a, 0x81, 0xe7, 0x79, 0x8e, 0x29, 0x02, 
+0xd1, 0x15, 0x04, 0xcd, 0x4a, 0x00, 0x63, 0x2c, 
+0xac, 0x24, 0x93, 0x04, 0x94, 0x93, 0xb8, 0x07, 
+0xa0, 0x11, 0xc2, 0x5f, 0xff, 0x23, 0x57, 0x0a, 
+0xff, 0xe0, 0xfb, 0x65, 0xe1, 0xdf, 0xd6, 0xd6, 
+0xd6, 0xbb, 0x7b, 0xf7, 0xee, 0x97, 0x1d, 0xc7, 
+0xe9, 0x89, 0x9e, 0x57, 0x2a, 0x95, 0xc2, 0xcb, 
+0x2f, 0xbf, 0x8c, 0xc1, 0xc1, 0xc1, 0xc5, 0x5c, 
+0xc7, 0x12, 0x96, 0x43, 0xf8, 0x6b, 0x06, 0x07, 
+0x07, 0x9b, 0x7e, 0x4e, 0xfd, 0x47, 0x1f, 0x7d, 
+0x84, 0x13, 0x27, 0x4e, 0xd4, 0xfb, 0x30, 0x5a, 
+0x8a, 0x91, 0x91, 0x91, 0xaa, 0xee, 0x94, 0xd9, 
+0x88, 0x1c, 0x3f, 0x7e, 0x1c, 0x6b, 0xd6, 0xac, 
+0x69, 0xe8, 0x66, 0xd8, 0xc9, 0xc9, 0x49, 0x1c, 
+0x39, 0x72, 0xa4, 0x21, 0x1b, 0x5d, 0x7f, 0xf4, 
+0xa3, 0x1f, 0x61, 0x7c, 0x7c, 0xbc, 0xec, 0x7d, 
+0xa5, 0x94, 0x3f, 0x31, 0x31, 0xf1, 0xbf, 0x3e, 
+0xfa, 0xe8, 0xa3, 0x9f, 0x2b, 0xa5, 0x74, 0x0f, 
+0x80, 0x67, 0x59, 0x96, 0xcf, 0x18, 0xf3, 0x00, 
+0xf8, 0xb6, 0x6d, 0x7b, 0x41, 0x0f, 0x80, 0xcf, 
+0x39, 0xf7, 0x00, 0xf8, 0xae, 0xeb, 0xfa, 0x8c, 
+0xb1, 0xb0, 0x37, 0x80, 0x73, 0xae, 0x7b, 0x07, 
+0x44, 0x2a, 0x95, 0x12, 0x7a, 0x06, 0x84, 0x10, 
+0x42, 0xea, 0xa9, 0x82, 0x9c, 0x73, 0xa1, 0x1b, 
+0x03, 0x7b, 0x7a, 0x7a, 0xe4, 0xc5, 0x8b, 0x17, 
+0x95, 0xd9, 0x13, 0x70, 0xea, 0xd4, 0x29, 0xd5, 
+0xdd, 0xdd, 0x5d, 0xb1, 0x27, 0x40, 0xf7, 0x03, 
+0x00, 0xcd, 0xd9, 0x13, 0x90, 0x48, 0x00, 0xea, 
+0x11, 0xfe, 0xda, 0xe2, 0xa2, 0xe1, 0x1f, 0x08, 
+0x80, 0xb9, 0xb5, 0xaf, 0x1b, 0x8c, 0x0d, 0x99, 
+0xe1, 0xaf, 0x4b, 0x45, 0x6e, 0x7b, 0x7b, 0xfb, 
+0xaa, 0x9d, 0x3b, 0x77, 0xbe, 0xe8, 0x38, 0x4e, 
+0xd9, 0x60, 0x6f, 0x3a, 0x9d, 0xc6, 0x2b, 0xaf, 
+0xbc, 0x82, 0x0d, 0x1b, 0x36, 0x2c, 0xfa, 0x42, 
+0x6a, 0x96, 0x53, 0xf8, 0x03, 0x33, 0x77, 0xd0, 
+0xc3, 0xc3, 0xc3, 0x48, 0xa5, 0x52, 0xf5, 0x3e, 
+0x94, 0x05, 0x33, 0x3d, 0x3d, 0x8d, 0xc3, 0x87, 
+0x0f, 0xd7, 0xfb, 0x30, 0x5a, 0x86, 0x56, 0x0e, 
+0x7f, 0xa5, 0x14, 0xbe, 0xfb, 0xdd, 0xef, 0xe2, 
+0x0f, 0xfe, 0xe0, 0x0f, 0xf0, 0xf8, 0xe3, 0x8f, 
+0xe3, 0xd0, 0xa1, 0x43, 0xf5, 0x3e, 0xa4, 0xa6, 
+0xa5, 0x58, 0x2c, 0xe2, 0x7f, 0xfe, 0xcf, 0xff, 
+0x59, 0x51, 0x02, 0x8e, 0x1d, 0x3b, 0xf6, 0xc7, 
+0xc7, 0x8f, 0x1f, 0x7f, 0xcf, 0xb2, 0x2c, 0x0f, 
+0x80, 0x07, 0xc0, 0x0f, 0x5e, 0xfb, 0x8c, 0x31, 
+0xcf, 0x71, 0x9c, 0xf0, 0xb5, 0x96, 0x01, 0xc7, 
+0x71, 0x7c, 0xc6, 0x98, 0xcf, 0x39, 0x2f, 0x13, 
+0x81, 0x38, 0x09, 0xe0, 0x9c, 0x0b, 0x73, 0x76, 
+0xc0, 0x5c, 0x12, 0xd0, 0x6a, 0xd3, 0x03, 0xe7, 
+0xac, 0x0f, 0xd5, 0x3b, 0xfc, 0x95, 0x52, 0x76, 
+0x34, 0xfc, 0xa5, 0xb1, 0xbc, 0xaf, 0x0e, 0xff, 
+0xe0, 0x75, 0x49, 0xf8, 0x77, 0x74, 0x74, 0xf4, 
+0xed, 0xda, 0xb5, 0xeb, 0xe5, 0xb8, 0xf0, 0xcf, 
+0x64, 0x32, 0x78, 0xed, 0xb5, 0xd7, 0x28, 0xfc, 
+0x17, 0x89, 0x10, 0xa2, 0x61, 0xef, 0x30, 0x92, 
+0xd2, 0xd6, 0xd6, 0x46, 0x3b, 0x04, 0x56, 0x89, 
+0x56, 0x0d, 0xff, 0x0b, 0x17, 0x2e, 0xe0, 0xf7, 
+0x7e, 0xef, 0xf7, 0xb0, 0x75, 0xeb, 0x56, 0xdc, 
+0x73, 0xcf, 0x3d, 0xb8, 0xfe, 0xfa, 0xeb, 0x29, 
+0xfc, 0x17, 0x89, 0xeb, 0xba, 0x78, 0xe5, 0x95, 
+0x57, 0x62, 0xab, 0xaf, 0x8c, 0x31, 0x7b, 0xc3, 
+0x86, 0x0d, 0x2f, 0xae, 0x5d, 0xbb, 0x76, 0x47, 
+0x30, 0xac, 0x1b, 0x0e, 0x05, 0x20, 0x58, 0xc2, 
+0x5d, 0x7f, 0xfe, 0xeb, 0xe1, 0x00, 0x00, 0xe1, 
+0x32, 0xf0, 0x3a, 0x3b, 0x60, 0x34, 0x8f, 0x17, 
+0x0a, 0x85, 0xd8, 0xe1, 0x00, 0xcb, 0xb2, 0x78, 
+0xb1, 0x58, 0x64, 0x71, 0x2b, 0x06, 0x02, 0x33, 
+0xff, 0x4f, 0xeb, 0xad, 0x84, 0x0f, 0x1f, 0x3e, 
+0xcc, 0x0e, 0x1c, 0x38, 0xd0, 0x32, 0x43, 0x01, 
+0xb3, 0x56, 0x00, 0x1a, 0x21, 0xfc, 0xcd, 0x87, 
+0x19, 0xfe, 0xfa, 0xa1, 0xc3, 0x1f, 0xc1, 0xe2, 
+0x3e, 0x3a, 0xfc, 0x3b, 0x3b, 0x3b, 0xd7, 0xec, 
+0xd8, 0xb1, 0xe3, 0x45, 0xdb, 0xb6, 0x3b, 0xa3, 
+0xe7, 0x95, 0xcd, 0x66, 0xf1, 0xea, 0xab, 0xaf, 
+0xa2, 0xbf, 0xbf, 0xbf, 0x5a, 0xd7, 0x71, 0x59, 
+0x86, 0xbf, 0x49, 0x5f, 0x5f, 0x1f, 0xd6, 0xaf, 
+0x2f, 0x5b, 0x4f, 0xa9, 0x69, 0x18, 0x1f, 0x1f, 
+0x6f, 0x99, 0x99, 0x0d, 0xf5, 0xa2, 0x15, 0xc3, 
+0xff, 0xbd, 0xf7, 0xde, 0xc3, 0xef, 0xff, 0xfe, 
+0xef, 0xe3, 0xcb, 0x5f, 0xfe, 0x32, 0xa6, 0xa6, 
+0xa6, 0x00, 0x00, 0xff, 0xfa, 0x5f, 0xff, 0x6b, 
+0xfc, 0xf7, 0xff, 0xfe, 0xdf, 0xeb, 0x7c, 0x64, 
+0xad, 0xc3, 0x5c, 0x95, 0x80, 0xf1, 0xf1, 0xf1, 
+0x2f, 0x99, 0x95, 0x00, 0xcb, 0xb2, 0xbc, 0xe0, 
+0xae, 0x3f, 0x1c, 0x16, 0x30, 0x1e, 0xbe, 0xeb, 
+0xba, 0xba, 0x32, 0x90, 0xa8, 0x12, 0x00, 0x63, 
+0x9d, 0x00, 0xbd, 0x62, 0xa0, 0xe7, 0x79, 0x32, 
+0x93, 0xc9, 0xa8, 0x62, 0xb1, 0x28, 0xcd, 0xe9, 
+0x81, 0x00, 0xd0, 0x4a, 0x95, 0x80, 0x8a, 0x02, 
+0x50, 0xad, 0xf0, 0x8f, 0xee, 0xea, 0x27, 0xa5, 
+0xb4, 0x6a, 0x18, 0xfe, 0xae, 0x94, 0xd2, 0xe9, 
+0xea, 0xea, 0xea, 0xdf, 0xb1, 0x63, 0xc7, 0x4b, 
+0x96, 0x65, 0xb5, 0x47, 0xcf, 0xab, 0xbd, 0xbd, 
+0x1d, 0xaf, 0xbd, 0xf6, 0x5a, 0x55, 0xb7, 0x84, 
+0x5d, 0xee, 0xe1, 0xaf, 0x69, 0xe6, 0x25, 0x82, 
+0x0b, 0x85, 0x02, 0x2e, 0x5d, 0xba, 0x04, 0x29, 
+0x25, 0x84, 0x10, 0xe1, 0x73, 0xa5, 0xd7, 0xe6, 
+0x33, 0xd1, 0x7a, 0xe1, 0xff, 0x4f, 0xff, 0xf4, 
+0x4f, 0xf8, 0xcd, 0xdf, 0xfc, 0x4d, 0xfc, 0xf0, 
+0x87, 0x3f, 0x2c, 0x79, 0xff, 0x89, 0x27, 0x9e, 
+0xc0, 0x9f, 0xfe, 0xe9, 0x9f, 0x36, 0x55, 0x73, 
+0x5d, 0x33, 0x90, 0x50, 0x02, 0xc6, 0x38, 0xe7, 
+0x3a, 0xf8, 0x3d, 0x00, 0x1e, 0x63, 0xcc, 0x0b, 
+0xfa, 0x01, 0x3c, 0xdd, 0x1f, 0xc0, 0x39, 0xf7, 
+0xe2, 0x24, 0xa0, 0x52, 0x4f, 0x00, 0x63, 0x4c, 
+0x98, 0x2b, 0x06, 0x7a, 0x9e, 0x27, 0xbb, 0xba, 
+0xba, 0xe4, 0xe4, 0xe4, 0xa4, 0x5a, 0xb9, 0x72, 
+0xa5, 0x4c, 0xba, 0x46, 0x40, 0xcb, 0x08, 0x40, 
+0xb4, 0x7c, 0x11, 0x15, 0x80, 0xb8, 0xf0, 0x3f, 
+0x77, 0xee, 0x1c, 0x5b, 0xbd, 0x7a, 0xf5, 0x9c, 
+0x5b, 0xfa, 0x56, 0x5a, 0xdb, 0xbf, 0x5a, 0xe1, 
+0xdf, 0xdd, 0xdd, 0xbd, 0x6e, 0x64, 0x64, 0xe4, 
+0x45, 0xcb, 0xb2, 0xca, 0x5a, 0xbb, 0x3b, 0x3b, 
+0x3b, 0xf1, 0xda, 0x6b, 0xaf, 0x55, 0x75, 0x53, 
+0x12, 0x0a, 0xff, 0x52, 0x9a, 0x59, 0x02, 0x16, 
+0x82, 0x52, 0x0a, 0x42, 0x08, 0x14, 0x0a, 0x05, 
+0xe4, 0xf3, 0xf9, 0xf0, 0x59, 0x3f, 0x96, 0x83, 
+0x20, 0xb4, 0x5a, 0xf8, 0xbf, 0xf7, 0xde, 0x7b, 
+0xb8, 0xf9, 0xe6, 0x9b, 0xcb, 0x16, 0x88, 0xba, 
+0xfd, 0xf6, 0xdb, 0xf1, 0x57, 0x7f, 0xf5, 0x57, 
+0x4d, 0xdd, 0xef, 0xd2, 0xc8, 0xcc, 0x25, 0x01, 
+0x47, 0x8f, 0x1e, 0xfd, 0x93, 0xe3, 0xc7, 0x8f, 
+0x8f, 0x45, 0x2b, 0x01, 0x00, 0x3c, 0xc7, 0x71, 
+0x8a, 0x5a, 0x00, 0x18, 0x63, 0x9e, 0xd1, 0x18, 
+0xe8, 0xc5, 0x49, 0x80, 0x7e, 0xd6, 0x2b, 0x06, 
+0x2e, 0x57, 0x09, 0x98, 0x53, 0x00, 0x2a, 0xdd, 
+0xfd, 0xeb, 0x55, 0xfe, 0x74, 0xf8, 0x8f, 0x8c, 
+0x8c, 0xe0, 0xcc, 0x99, 0x33, 0xe1, 0x74, 0x0a, 
+0x1d, 0xfe, 0xd9, 0x6c, 0x96, 0x4d, 0x4e, 0x4e, 
+0x86, 0x63, 0x2d, 0xe6, 0xae, 0x7e, 0x71, 0xdd, 
+0xfe, 0x8b, 0x09, 0xff, 0x9e, 0x9e, 0x9e, 0x0d, 
+0xc3, 0xc3, 0xc3, 0x2f, 0x58, 0x96, 0xd5, 0x16, 
+0x3d, 0xa7, 0xae, 0xae, 0x2e, 0xbc, 0xfe, 0xfa, 
+0xeb, 0x55, 0xed, 0x58, 0xa7, 0xf0, 0x8f, 0x67, 
+0xb9, 0x49, 0xc0, 0x6c, 0x14, 0x8b, 0x45, 0x5c, 
+0xba, 0x74, 0x09, 0x93, 0x93, 0x93, 0x98, 0x9c, 
+0x9c, 0x44, 0x3e, 0x9f, 0xaf, 0xf7, 0x21, 0x55, 
+0x95, 0x56, 0x0b, 0xff, 0x89, 0x89, 0x09, 0xdc, 
+0x70, 0xc3, 0x0d, 0x38, 0x79, 0xf2, 0x64, 0xc9, 
+0xfb, 0x37, 0xdd, 0x74, 0x13, 0xbe, 0xf3, 0x9d, 
+0xef, 0xd0, 0x94, 0xd1, 0x1a, 0x33, 0x97, 0x04, 
+0x1c, 0x39, 0x72, 0xe4, 0x2b, 0x27, 0x4e, 0x9c, 
+0x78, 0xcf, 0xa8, 0x04, 0xe8, 0xe0, 0x2f, 0xa9, 
+0x04, 0x68, 0x09, 0x08, 0x9a, 0x05, 0xcb, 0x2a, 
+0x01, 0x66, 0x35, 0x20, 0x93, 0xc9, 0x08, 0xdd, 
+0x0c, 0xc8, 0x18, 0x13, 0xd9, 0x6c, 0x36, 0xdc, 
+0x4c, 0x28, 0x6e, 0xb5, 0xc0, 0xf9, 0x36, 0x05, 
+0x36, 0x95, 0x00, 0xcc, 0x37, 0xfc, 0x01, 0x40, 
+0x97, 0xfe, 0x75, 0xf8, 0xe7, 0x72, 0x39, 0xe6, 
+0x38, 0xce, 0x92, 0x86, 0x7f, 0x6f, 0x6f, 0xef, 
+0xe0, 0xf0, 0xf0, 0xf0, 0xf3, 0x9c, 0xf3, 0xb2, 
+0x25, 0xc7, 0x56, 0xac, 0x58, 0x81, 0x37, 0xde, 
+0x78, 0x03, 0x3d, 0x3d, 0x65, 0xb3, 0x00, 0x17, 
+0x0c, 0x85, 0xff, 0xec, 0xac, 0x5b, 0xb7, 0xae, 
+0xaa, 0xc3, 0x2c, 0xad, 0x82, 0xef, 0xfb, 0xa1, 
+0x0c, 0x5c, 0xb8, 0x70, 0x01, 0x85, 0x42, 0xa1, 
+0xde, 0x87, 0xb4, 0x60, 0x5a, 0x2d, 0xfc, 0x4f, 
+0x9f, 0x3e, 0x8d, 0x1b, 0x6f, 0xbc, 0xb1, 0x6c, 
+0x29, 0xdd, 0x6b, 0xaf, 0xbd, 0x16, 0xdf, 0xfd, 
+0xee, 0x77, 0xd1, 0xd1, 0xd1, 0x51, 0xa7, 0x23, 
+0x5b, 0x5e, 0xcc, 0x21, 0x01, 0xe2, 0xc8, 0x91, 
+0x23, 0x5f, 0xd6, 0x95, 0x00, 0xc6, 0x58, 0x51, 
+0x3f, 0x63, 0x0e, 0x09, 0x08, 0xfe, 0x5c, 0x59, 
+0x15, 0x40, 0x3f, 0xb2, 0xd9, 0x6c, 0xd8, 0x17, 
+0xe0, 0xfb, 0xbe, 0xd4, 0x4b, 0x06, 0x9b, 0x33, 
+0x03, 0x7c, 0xdf, 0x97, 0x73, 0xf5, 0x03, 0x83, 
+0xd0, 0xa9, 0x91, 0x00, 0x00, 0x20, 0x00, 0x49, 
+0x44, 0x41, 0x54, 0x34, 0x53, 0x15, 0xa0, 0x44, 
+0x00, 0x16, 0x13, 0xfe, 0x93, 0x93, 0x93, 0xcc, 
+0x75, 0x5d, 0x1e, 0x17, 0xfe, 0xd3, 0xd3, 0xd3, 
+0x1c, 0x40, 0xc5, 0xf0, 0x47, 0xb0, 0xbc, 0x6f, 
+0xa5, 0x6e, 0xff, 0xd9, 0xc2, 0x5f, 0x08, 0xe1, 
+0xae, 0x5a, 0xb5, 0x6a, 0x68, 0xeb, 0xd6, 0xad, 
+0xcf, 0x73, 0xce, 0xcb, 0x6a, 0x73, 0x3d, 0x3d, 
+0x3d, 0x78, 0xfd, 0xf5, 0xd7, 0xab, 0xba, 0xe4, 
+0x2b, 0x85, 0x7f, 0x32, 0x56, 0xac, 0x58, 0x81, 
+0xa1, 0xa1, 0xa1, 0x86, 0x9e, 0x27, 0x5d, 0x6f, 
+0x2e, 0x5d, 0xba, 0x84, 0x33, 0x67, 0xce, 0xe0, 
+0xdc, 0xb9, 0x73, 0xf0, 0x7d, 0xbf, 0xde, 0x87, 
+0x93, 0x98, 0x56, 0x0b, 0xff, 0x4b, 0x97, 0x2e, 
+0xe1, 0xb6, 0xdb, 0x6e, 0xc3, 0x8f, 0x7f, 0xfc, 
+0xe3, 0x92, 0xf7, 0x47, 0x47, 0x47, 0xf1, 0xfd, 
+0xef, 0x7f, 0x1f, 0x2b, 0x56, 0xac, 0xa8, 0xd3, 
+0x91, 0x2d, 0x4f, 0x16, 0x2b, 0x01, 0x9c, 0xf3, 
+0xa2, 0xd9, 0x18, 0xc8, 0x18, 0xf3, 0x52, 0xa9, 
+0x94, 0x7e, 0x5d, 0x52, 0x05, 0x30, 0xf6, 0x1a, 
+0x10, 0x8c, 0x31, 0x61, 0xae, 0x11, 0xa0, 0x9b, 
+0x02, 0xb5, 0x04, 0x44, 0x9b, 0x02, 0x9b, 0x7d, 
+0x28, 0x20, 0xec, 0x64, 0x99, 0xcf, 0xfa, 0xfe, 
+0x71, 0xe1, 0xdf, 0xdd, 0xdd, 0xcd, 0x72, 0xb9, 
+0x1c, 0xeb, 0xe8, 0xe8, 0x60, 0x85, 0x42, 0xa1, 
+0x24, 0xfc, 0x75, 0xd7, 0xff, 0x6c, 0xe1, 0xaf, 
+0x2b, 0x00, 0x9e, 0xe7, 0xcd, 0x2b, 0xfc, 0xfb, 
+0xfa, 0xfa, 0x36, 0x6d, 0xdd, 0xba, 0xf5, 0x85, 
+0xb8, 0xf0, 0x5f, 0xb9, 0x72, 0x25, 0x7e, 0xe3, 
+0x37, 0x7e, 0x83, 0xc2, 0xbf, 0x4e, 0x9c, 0x3f, 
+0x7f, 0x1e, 0x87, 0x0f, 0x1f, 0xc6, 0xf4, 0xf4, 
+0x74, 0xbd, 0x0f, 0xa5, 0x61, 0x69, 0x6f, 0x6f, 
+0xc7, 0xc0, 0xc0, 0x00, 0x76, 0xed, 0xda, 0x85, 
+0x2d, 0x5b, 0xb6, 0xa0, 0xa7, 0xa7, 0xa7, 0xe1, 
+0x1b, 0xcc, 0x5a, 0x2d, 0xfc, 0x0b, 0x85, 0x02, 
+0x1e, 0x79, 0xe4, 0x91, 0xb2, 0xf0, 0xdf, 0xb9, 
+0x73, 0x27, 0xbe, 0xfb, 0xdd, 0xef, 0x52, 0xf8, 
+0xd7, 0x81, 0x39, 0xa6, 0x08, 0x5a, 0x1b, 0x37, 
+0x6e, 0x7c, 0x76, 0xdd, 0xba, 0x75, 0x23, 0x46, 
+0x16, 0x98, 0xbb, 0xbe, 0x86, 0x53, 0xc4, 0x83, 
+0x87, 0x0d, 0xc0, 0x2e, 0x16, 0x8b, 0x76, 0xb1, 
+0x58, 0x0c, 0xa7, 0x07, 0xea, 0x87, 0x52, 0xaa, 
+0xe4, 0x75, 0x3e, 0x9f, 0xe7, 0xe9, 0x74, 0x9a, 
+0x05, 0x55, 0x6b, 0x9e, 0xcd, 0x66, 0xd9, 0xf4, 
+0xf4, 0x34, 0xcb, 0xe5, 0x72, 0x15, 0x57, 0x0a, 
+0x3c, 0x70, 0xe0, 0x40, 0xc9, 0x31, 0x9a, 0xd9, 
+0xd9, 0xc8, 0x24, 0xfa, 0xa4, 0x89, 0x36, 0xfd, 
+0x01, 0xe5, 0xe1, 0x7f, 0xfa, 0xf4, 0x69, 0xde, 
+0xd1, 0xd1, 0xc1, 0x2e, 0x5c, 0xb8, 0xc0, 0x1d, 
+0xc7, 0x29, 0x09, 0x7f, 0xa5, 0x94, 0xc5, 0x39, 
+0xe7, 0xc5, 0x62, 0x91, 0x7b, 0x9e, 0xc7, 0x51, 
+0x7a, 0xf1, 0x4b, 0xc2, 0xdf, 0xfc, 0x07, 0x03, 
+0x60, 0xcf, 0x56, 0xf6, 0x5f, 0xbd, 0x7a, 0xf5, 
+0x96, 0xab, 0xae, 0xba, 0xea, 0x39, 0xce, 0x79, 
+0xd9, 0x24, 0xee, 0x55, 0xab, 0x56, 0xe1, 0x8d, 
+0x37, 0xde, 0x40, 0x57, 0x57, 0x57, 0x35, 0xae, 
+0x13, 0x00, 0xe0, 0xc7, 0x3f, 0xfe, 0x31, 0x85, 
+0xff, 0x3c, 0x29, 0x14, 0x0a, 0x78, 0xff, 0xfd, 
+0xf7, 0xf1, 0xc9, 0x27, 0x9f, 0xd4, 0xfb, 0x50, 
+0x1a, 0x1a, 0xc6, 0x18, 0xba, 0xba, 0xba, 0xb0, 
+0x71, 0xe3, 0x46, 0xec, 0xd8, 0xb1, 0x03, 0x7d, 
+0x7d, 0x7d, 0x0d, 0x29, 0x02, 0xad, 0x16, 0xfe, 
+0xc5, 0x62, 0x11, 0x8f, 0x3e, 0xfa, 0x28, 0xbe, 
+0xf7, 0xbd, 0xef, 0x95, 0xbc, 0xbf, 0x6d, 0xdb, 
+0x36, 0x7c, 0xef, 0x7b, 0xdf, 0xab, 0xea, 0xb0, 
+0x21, 0x31, 0x3f, 0xe6, 0x2b, 0x01, 0x7a, 0xd3, 
+0x37, 0x04, 0x12, 0x60, 0xde, 0x40, 0x1a, 0x37, 
+0x94, 0xb6, 0xef, 0xfb, 0x56, 0xb1, 0x58, 0xb4, 
+0x0b, 0x85, 0x42, 0x28, 0x02, 0x3c, 0x40, 0x0f, 
+0x57, 0xe7, 0x72, 0x39, 0x3e, 0x3d, 0x3d, 0xcd, 
+0x2d, 0xcb, 0xe2, 0x85, 0x42, 0x81, 0x5d, 0xb8, 
+0x70, 0x81, 0x77, 0x74, 0x74, 0xb0, 0xe8, 0x72, 
+0xc1, 0xb3, 0xad, 0x0f, 0x00, 0x34, 0xfe, 0xda, 
+0x00, 0x4c, 0x29, 0x35, 0xeb, 0xdd, 0xff, 0x7c, 
+0xe6, 0xfa, 0x5f, 0xb8, 0x70, 0x81, 0x67, 0xb3, 
+0x59, 0x66, 0x59, 0x16, 0x3f, 0x7f, 0xfe, 0xbc, 
+0xa5, 0xef, 0xfc, 0xa7, 0xa6, 0xa6, 0xc2, 0xc0, 
+0x8f, 0x76, 0xfb, 0xcf, 0xb6, 0xa5, 0xaf, 0x5e, 
+0xde, 0x37, 0x2e, 0xfc, 0xd7, 0xac, 0x59, 0xb3, 
+0x75, 0xcb, 0x96, 0x2d, 0x07, 0x19, 0x63, 0x4e, 
+0xf4, 0xa4, 0xfa, 0xfa, 0xfa, 0xf0, 0xfa, 0xeb, 
+0xaf, 0xa3, 0xbd, 0xbd, 0x6c, 0x16, 0xe0, 0x82, 
+0xf9, 0xf5, 0xaf, 0x7f, 0x5d, 0x36, 0x25, 0x88, 
+0x98, 0x1f, 0x6d, 0x6d, 0x6d, 0x18, 0x18, 0x18, 
+0xa0, 0x46, 0xaa, 0x84, 0xf8, 0xbe, 0x8f, 0x53, 
+0xa7, 0x4e, 0xe1, 0x93, 0x4f, 0x3e, 0x69, 0x88, 
+0xd9, 0x04, 0xad, 0x16, 0xfe, 0x9e, 0xe7, 0xe1, 
+0xb1, 0xc7, 0x1e, 0xc3, 0xb7, 0xbe, 0xf5, 0xad, 
+0x92, 0xf7, 0xb7, 0x6c, 0xd9, 0x82, 0x1f, 0xfe, 
+0xf0, 0x87, 0x58, 0xb3, 0xa6, 0x6c, 0xc3, 0x50, 
+0xa2, 0x0e, 0x24, 0x18, 0x0e, 0xf8, 0x4a, 0x30, 
+0x1c, 0x50, 0x34, 0x87, 0x03, 0x18, 0x63, 0xc5, 
+0xe8, 0x70, 0x00, 0xe7, 0x5c, 0xf7, 0x05, 0xf8, 
+0xc6, 0x73, 0x38, 0x1c, 0x90, 0xcd, 0x66, 0x75, 
+0x7f, 0x40, 0x6c, 0x53, 0xa0, 0x1e, 0x0a, 0xe8, 
+0xef, 0xef, 0x97, 0x67, 0xce, 0x9c, 0x99, 0xf7, 
+0x50, 0x40, 0xa3, 0x0d, 0x03, 0xf0, 0xb9, 0x4a, 
+0xff, 0xc0, 0xe5, 0xf2, 0x86, 0xee, 0xf8, 0xaf, 
+0xb4, 0xd0, 0x4f, 0x36, 0x9b, 0x65, 0x97, 0x2e, 
+0x5d, 0xe2, 0x53, 0x53, 0x53, 0x3c, 0x2e, 0xfc, 
+0xa3, 0x0f, 0xf3, 0xce, 0x1f, 0x15, 0xc2, 0x5f, 
+0x29, 0xe5, 0x20, 0x12, 0xfe, 0xfd, 0xfd, 0xfd, 
+0x23, 0x5b, 0xb6, 0x6c, 0x79, 0x36, 0x2e, 0xfc, 
+0xd7, 0xac, 0x59, 0x83, 0x37, 0xde, 0x78, 0xa3, 
+0xaa, 0xe1, 0x7f, 0xf6, 0xec, 0x59, 0xfc, 0xdd, 
+0xdf, 0xfd, 0x5d, 0xd5, 0x7e, 0xde, 0x72, 0x65, 
+0x7a, 0x7a, 0x1a, 0xbf, 0xf8, 0xc5, 0x2f, 0x30, 
+0x31, 0x31, 0x01, 0x21, 0x44, 0xbd, 0x0f, 0xa7, 
+0xe1, 0xb1, 0x6d, 0x1b, 0xeb, 0xd6, 0xad, 0xc3, 
+0xce, 0x9d, 0x3b, 0xb1, 0x7a, 0xf5, 0xea, 0xba, 
+0x56, 0x04, 0x5a, 0x2d, 0xfc, 0x7d, 0xdf, 0xc7, 
+0x93, 0x4f, 0x3e, 0x59, 0x16, 0xfe, 0x43, 0x43, 
+0x43, 0xf8, 0xc1, 0x0f, 0x7e, 0x40, 0xe1, 0xdf, 
+0x40, 0x24, 0xa8, 0x04, 0x1c, 0x5c, 0xb7, 0x6e, 
+0xdd, 0x70, 0x64, 0x38, 0x40, 0xef, 0x0c, 0x1b, 
+0xbe, 0xc6, 0x4c, 0x45, 0x39, 0x1c, 0x02, 0x50, 
+0x4a, 0xd9, 0x8c, 0xb1, 0x30, 0x8f, 0x38, 0xe7, 
+0x3c, 0x97, 0xcb, 0x59, 0xb9, 0x5c, 0xce, 0x8a, 
+0xae, 0x12, 0xa8, 0x57, 0x0a, 0xd4, 0x43, 0x01, 
+0x17, 0x2e, 0x5c, 0x48, 0x34, 0x14, 0x10, 0x73, 
+0xbc, 0x0d, 0x55, 0x05, 0x08, 0x3f, 0x51, 0x92, 
+0x8e, 0xfb, 0x8f, 0x8c, 0x8c, 0x00, 0x00, 0xcc, 
+0xb9, 0xfe, 0x95, 0x56, 0xf9, 0x9b, 0x9a, 0x9a, 
+0xb2, 0x2c, 0xcb, 0x2a, 0x29, 0xf9, 0x23, 0x12, 
+0xfc, 0xba, 0xec, 0x1f, 0x37, 0xe6, 0xaf, 0xca, 
+0xd7, 0xf6, 0x77, 0xd6, 0xaf, 0x5f, 0xbf, 0x63, 
+0xf3, 0xe6, 0xcd, 0xcf, 0x30, 0xc6, 0xec, 0xe8, 
+0xc9, 0xac, 0x5d, 0xbb, 0x16, 0xaf, 0xbf, 0xfe, 
+0x7a, 0xd5, 0xef, 0x30, 0xff, 0xe9, 0x9f, 0xfe, 
+0x89, 0x02, 0xab, 0x8a, 0x7c, 0xfa, 0xe9, 0xa7, 
+0xf8, 0xf9, 0xcf, 0x7f, 0xde, 0x30, 0x77, 0xb6, 
+0x8d, 0x8e, 0x16, 0x81, 0xe1, 0xe1, 0xe1, 0xba, 
+0x54, 0x4f, 0x5a, 0x31, 0xfc, 0x9f, 0x7e, 0xfa, 
+0x69, 0xbc, 0xfd, 0xf6, 0xdb, 0x25, 0xef, 0xaf, 
+0x5f, 0xbf, 0x1e, 0x3f, 0xf8, 0xc1, 0x0f, 0xb0, 
+0x6e, 0xdd, 0xba, 0x3a, 0x1d, 0x19, 0x51, 0x89, 
+0x84, 0xc3, 0x01, 0xc3, 0x3a, 0x37, 0x74, 0x4f, 
+0x80, 0x21, 0x01, 0xe6, 0x96, 0xf1, 0xa1, 0x08, 
+0x98, 0x3b, 0x07, 0x22, 0x90, 0x00, 0x9d, 0x59, 
+0xbe, 0xef, 0x33, 0x53, 0x04, 0x26, 0x27, 0x27, 
+0x79, 0x74, 0x28, 0x20, 0x7a, 0x2c, 0x87, 0x0f, 
+0x1f, 0x2e, 0xa9, 0x9c, 0x37, 0x7a, 0x2f, 0x40, 
+0xc5, 0x5b, 0x8a, 0xb9, 0xc6, 0xfd, 0xf5, 0x74, 
+0x3f, 0x3d, 0xd7, 0xbf, 0x58, 0x2c, 0xb2, 0x4c, 
+0x26, 0xc3, 0xa2, 0x6b, 0x2c, 0x23, 0xb8, 0xa8, 
+0x30, 0xa6, 0xfb, 0x99, 0xcd, 0x18, 0xc6, 0x3f, 
+0x88, 0x69, 0x6d, 0xd1, 0x2d, 0x7d, 0x1d, 0x29, 
+0xa5, 0xbb, 0x7e, 0xfd, 0xfa, 0x5d, 0x43, 0x43, 
+0x43, 0x4f, 0x07, 0xd6, 0x56, 0xc2, 0xfa, 0xf5, 
+0xeb, 0xf1, 0xda, 0x6b, 0xaf, 0xa1, 0xad, 0xad, 
+0x6c, 0x09, 0x80, 0x45, 0x71, 0xea, 0xd4, 0xa9, 
+0x96, 0xd8, 0xf6, 0xb6, 0xd1, 0xf0, 0x7d, 0x1f, 
+0xc7, 0x8e, 0x1d, 0xc3, 0xbb, 0xef, 0xbe, 0x8b, 
+0x53, 0xa7, 0x4e, 0x91, 0x60, 0x25, 0x20, 0x9d, 
+0x4e, 0x63, 0xeb, 0xd6, 0xad, 0x58, 0xbb, 0x76, 
+0x2d, 0x96, 0xea, 0x46, 0xa2, 0xd5, 0xc2, 0x5f, 
+0x08, 0x81, 0x43, 0x87, 0x0e, 0xe1, 0xad, 0xb7, 
+0xde, 0x2a, 0x79, 0x7f, 0xf5, 0xea, 0xd5, 0xf8, 
+0xfe, 0xf7, 0xbf, 0x5f, 0xd5, 0x5d, 0x41, 0x89, 
+0xea, 0xb2, 0x90, 0xc6, 0x40, 0xcc, 0xec, 0x1b, 
+0xe0, 0xf8, 0xbe, 0xef, 0xf8, 0xbe, 0x1f, 0x66, 
+0x0e, 0x00, 0x9b, 0x31, 0xa6, 0xb7, 0x0b, 0x2e, 
+0x93, 0x00, 0x4d, 0x2a, 0x95, 0x62, 0xb9, 0x5c, 
+0x8e, 0x7b, 0x9e, 0x17, 0x56, 0x01, 0xf2, 0xf9, 
+0x3c, 0xd3, 0xfb, 0x05, 0xf4, 0xf6, 0xf6, 0x26, 
+0xaa, 0x02, 0x34, 0x58, 0xe5, 0x3f, 0x84, 0x03, 
+0x95, 0x4b, 0xff, 0xb3, 0x8d, 0xfb, 0xeb, 0x8e, 
+0xff, 0xe8, 0x5c, 0x7f, 0xbd, 0xc4, 0x2f, 0x8c, 
+0xae, 0x4a, 0x6d, 0x59, 0x9e, 0xe7, 0x59, 0xbe, 
+0xef, 0x5b, 0x46, 0x19, 0xa6, 0xe4, 0x1f, 0x24, 
+0xf8, 0x47, 0x8a, 0xdd, 0xd2, 0x77, 0x60, 0x60, 
+0x60, 0x74, 0x68, 0x68, 0xe8, 0x49, 0xc6, 0x58, 
+0x99, 0xb4, 0x0c, 0x0c, 0x0c, 0xe0, 0xd5, 0x57, 
+0x5f, 0x45, 0x26, 0x53, 0xb6, 0x04, 0xc0, 0xa2, 
+0x89, 0xce, 0x09, 0x26, 0xaa, 0x8b, 0xef, 0xfb, 
+0x38, 0x7e, 0xfc, 0x38, 0xde, 0x7d, 0xf7, 0x5d, 
+0x9c, 0x38, 0x71, 0xa2, 0xa9, 0xa6, 0xc2, 0xd5, 
+0x03, 0xc6, 0x18, 0xd6, 0xac, 0x59, 0x83, 0xe1, 
+0xe1, 0xe1, 0xaa, 0xcb, 0x6e, 0x94, 0x56, 0x0b, 
+0x7f, 0x29, 0x25, 0x9e, 0x7f, 0xfe, 0x79, 0x7c, 
+0xed, 0x6b, 0x5f, 0x2b, 0x79, 0x7f, 0xe5, 0xca, 
+0x95, 0xf8, 0xde, 0xf7, 0xbe, 0x87, 0x2d, 0x5b, 
+0xb6, 0xd4, 0xe9, 0xc8, 0x88, 0xa4, 0x24, 0x95, 
+0x80, 0x60, 0x73, 0x20, 0xc7, 0x1c, 0x46, 0x0e, 
+0x2a, 0x03, 0xb6, 0xef, 0xfb, 0x61, 0xf5, 0xb9, 
+0x58, 0x2c, 0xda, 0xbe, 0xef, 0x5b, 0x9e, 0xe7, 
+0x59, 0xc5, 0x62, 0xd1, 0x2a, 0x16, 0x8b, 0x56, 
+0xa1, 0x50, 0xb0, 0x3c, 0xcf, 0xe3, 0x7a, 0x28, 
+0x20, 0x95, 0x4a, 0x31, 0xcb, 0xb2, 0x78, 0x26, 
+0x93, 0x29, 0x19, 0x0a, 0x00, 0x00, 0x3d, 0x14, 
+0x60, 0x1e, 0x87, 0xae, 0x02, 0x68, 0xa2, 0x9b, 
+0x05, 0x35, 0xd2, 0x30, 0x40, 0x18, 0xa6, 0x71, 
+0xf3, 0xfd, 0x81, 0xca, 0xe3, 0xfe, 0xba, 0xe3, 
+0xdf, 0x9c, 0xee, 0x97, 0xcb, 0xe5, 0x42, 0x11, 
+0xe0, 0x9c, 0x73, 0xcf, 0xf3, 0xb8, 0x71, 0x51, 
+0xa3, 0x0b, 0xfd, 0x94, 0x94, 0xfd, 0xcd, 0xe0, 
+0xc7, 0xe5, 0x7f, 0x38, 0x57, 0x4a, 0xe9, 0x0e, 
+0x0e, 0x0e, 0x5e, 0x3d, 0x38, 0x38, 0x78, 0x20, 
+0x2e, 0xfc, 0x37, 0x6e, 0xdc, 0x88, 0x57, 0x5f, 
+0x7d, 0x15, 0xe9, 0x74, 0xba, 0x26, 0x17, 0x88, 
+0xee, 0xfe, 0x97, 0x06, 0x21, 0x04, 0x3e, 0xfa, 
+0xe8, 0x23, 0xbc, 0xfb, 0xee, 0xbb, 0x38, 0x72, 
+0xe4, 0x08, 0x2e, 0x5e, 0xbc, 0x58, 0xef, 0x43, 
+0x6a, 0x68, 0x32, 0x99, 0x0c, 0xb6, 0x6d, 0xdb, 
+0x56, 0xb3, 0xc5, 0x96, 0x5a, 0x31, 0xfc, 0x5f, 
+0x7a, 0xe9, 0x25, 0x7c, 0xe5, 0x2b, 0x5f, 0x29, 
+0x79, 0x7f, 0xc5, 0x8a, 0x15, 0xf8, 0xeb, 0xbf, 
+0xfe, 0xeb, 0x70, 0x68, 0x93, 0x68, 0x7c, 0x12, 
+0xf6, 0x04, 0x8c, 0x44, 0x86, 0x03, 0x4a, 0x7a, 
+0x01, 0x10, 0xdc, 0x7c, 0xea, 0x1e, 0x00, 0xf3, 
+0x75, 0x74, 0x46, 0x40, 0x3e, 0x9f, 0xe7, 0xbe, 
+0xef, 0xb3, 0xe9, 0xe9, 0x69, 0x9e, 0xc9, 0x64, 
+0x58, 0xa1, 0x50, 0x28, 0xa9, 0x02, 0x0c, 0x0e, 
+0x0e, 0x22, 0xae, 0x0a, 0x10, 0x9d, 0x11, 0x00, 
+0x34, 0x9e, 0x04, 0xf0, 0x68, 0x69, 0x62, 0x3e, 
+0xe3, 0xfe, 0xd9, 0x6c, 0x96, 0x65, 0x32, 0x19, 
+0xe6, 0x79, 0x1e, 0xd3, 0x63, 0xff, 0xba, 0x91, 
+0x42, 0xcf, 0xf5, 0x37, 0x1f, 0xd1, 0x3b, 0x7f, 
+0x04, 0xff, 0x10, 0x3a, 0xfc, 0x01, 0x38, 0x98, 
+0x99, 0xc2, 0xe1, 0x02, 0x70, 0xa4, 0x94, 0xce, 
+0xc6, 0x8d, 0x1b, 0x3f, 0x33, 0x30, 0x30, 0xf0, 
+0x18, 0x80, 0xb2, 0x0b, 0xb6, 0x79, 0xf3, 0x66, 
+0xbc, 0xfc, 0xf2, 0xcb, 0x35, 0xdb, 0xca, 0xf5, 
+0xec, 0xd9, 0xb3, 0xc8, 0xe5, 0x72, 0x35, 0xf9, 
+0xd9, 0x44, 0x3c, 0x52, 0x4a, 0x9c, 0x3d, 0x7b, 
+0x16, 0x1f, 0x7c, 0xf0, 0x01, 0xde, 0x79, 0xe7, 
+0x1d, 0x1c, 0x3f, 0x7e, 0xbc, 0xe5, 0x96, 0xcf, 
+0xad, 0x16, 0x8c, 0x31, 0xac, 0x5b, 0xb7, 0x0e, 
+0x83, 0x83, 0x83, 0x55, 0x1d, 0x12, 0x68, 0xb5, 
+0xf0, 0x07, 0x80, 0x37, 0xde, 0x78, 0x03, 0xff, 
+0xfb, 0x7f, 0xff, 0xef, 0x92, 0xf7, 0x3a, 0x3a, 
+0x3a, 0xf0, 0x9d, 0xef, 0x7c, 0x07, 0x7b, 0xf6, 
+0xec, 0xa9, 0xd3, 0x51, 0x11, 0x0b, 0x65, 0xae, 
+0xad, 0x84, 0x87, 0x86, 0x86, 0xc2, 0x4a, 0x00, 
+0x63, 0xcc, 0xd6, 0xc3, 0xcf, 0x08, 0x32, 0x07, 
+0x86, 0x04, 0x98, 0x43, 0x00, 0x7a, 0xb8, 0x1a, 
+0x46, 0x3f, 0x80, 0x7e, 0x4e, 0xa7, 0xd3, 0x6c, 
+0x6a, 0x6a, 0x8a, 0x2f, 0xa6, 0x0a, 0xd0, 0x68, 
+0x70, 0xa0, 0x72, 0xe9, 0x1f, 0xa8, 0x3c, 0xee, 
+0xaf, 0x9b, 0xfe, 0xa6, 0xa6, 0xa6, 0x42, 0x53, 
+0x9a, 0x9a, 0x9a, 0xb2, 0x72, 0xb9, 0x5c, 0x59, 
+0xe3, 0x5f, 0xe4, 0xce, 0xdf, 0x1c, 0xfb, 0x2f, 
+0x2b, 0xf9, 0xeb, 0x71, 0x1b, 0x21, 0x84, 0x3b, 
+0x34, 0x34, 0xf4, 0x99, 0xf5, 0xeb, 0xd7, 0x3f, 
+0x82, 0x98, 0xf0, 0xbf, 0xf2, 0xca, 0x2b, 0xf1, 
+0xd2, 0x4b, 0x2f, 0xc1, 0x71, 0xca, 0x26, 0x02, 
+0x54, 0x0d, 0xbd, 0xfd, 0x27, 0x51, 0x1f, 0x3c, 
+0xcf, 0xc3, 0xa9, 0x53, 0xa7, 0xf0, 0xde, 0x7b, 
+0xef, 0xe1, 0x17, 0xbf, 0xf8, 0x05, 0x4e, 0x9d, 
+0x3a, 0x45, 0x42, 0x16, 0xc3, 0xca, 0x95, 0x2b, 
+0xb1, 0x79, 0xf3, 0xe6, 0xaa, 0xcc, 0x12, 0x68, 
+0xc5, 0xf0, 0xff, 0xf7, 0xff, 0xfe, 0xdf, 0xe3, 
+0x0b, 0x5f, 0xf8, 0x42, 0xc9, 0x7b, 0x6d, 0x6d, 
+0x6d, 0xf8, 0xcb, 0xbf, 0xfc, 0x4b, 0x5c, 0x7b, 
+0xed, 0xb5, 0x75, 0x3a, 0x2a, 0x62, 0xb1, 0x24, 
+0x90, 0x80, 0x43, 0x66, 0x25, 0xc0, 0x1c, 0x02, 
+0x30, 0x6f, 0x46, 0x75, 0x2f, 0x80, 0x1e, 0x0a, 
+0xf0, 0x7d, 0x9f, 0xfb, 0xbe, 0xaf, 0x2b, 0xd8, 
+0xbc, 0x58, 0x2c, 0xf2, 0x7c, 0x3e, 0xcf, 0xf3, 
+0xf9, 0x3c, 0xf7, 0x3c, 0x8f, 0x2d, 0xb6, 0x0a, 
+0xd0, 0x48, 0x94, 0x7c, 0x62, 0xcc, 0x55, 0xfa, 
+0x37, 0x57, 0xfa, 0xd3, 0x4d, 0x7f, 0xe9, 0x74, 
+0x9a, 0xe9, 0x8b, 0x63, 0x36, 0xfe, 0xc1, 0xe8, 
+0xf6, 0x87, 0x21, 0x01, 0xba, 0xec, 0xef, 0xfb, 
+0xbe, 0x6d, 0x4e, 0xd1, 0x30, 0xba, 0x36, 0x5d, 
+0x21, 0x84, 0x3b, 0x30, 0x30, 0xb0, 0x77, 0xc3, 
+0x86, 0x0d, 0x8f, 0x22, 0x26, 0xfc, 0xb7, 0x6d, 
+0xdb, 0x86, 0x17, 0x5e, 0x78, 0x01, 0xb6, 0x5d, 
+0x36, 0x11, 0xa0, 0xaa, 0x50, 0xd8, 0x34, 0x0e, 
+0x53, 0x53, 0x53, 0x38, 0x7e, 0xfc, 0x38, 0xc6, 
+0xc6, 0xc6, 0xf0, 0xee, 0xbb, 0xef, 0x62, 0x62, 
+0x62, 0x02, 0xe7, 0xcf, 0x9f, 0xa7, 0x59, 0x04, 
+0x01, 0x5d, 0x5d, 0x5d, 0xd8, 0xba, 0x75, 0xeb, 
+0xa2, 0x84, 0xb8, 0x15, 0xc3, 0xff, 0xb7, 0x7f, 
+0xfb, 0xb7, 0xf1, 0xdf, 0xfe, 0xdb, 0x7f, 0x2b, 
+0x79, 0xcf, 0x71, 0x1c, 0xbc, 0xfd, 0xf6, 0xdb, 
+0xb8, 0xf9, 0xe6, 0x9b, 0xeb, 0x74, 0x54, 0x44, 
+0xb5, 0x98, 0x4b, 0x02, 0x06, 0x07, 0x07, 0x9f, 
+0x5b, 0xb7, 0x6e, 0xdd, 0xf6, 0xe0, 0xc6, 0x52, 
+0xf7, 0x9b, 0x39, 0x42, 0x08, 0x5b, 0x4a, 0x69, 
+0x09, 0x21, 0x2c, 0xcf, 0xf3, 0x6c, 0xdf, 0xf7, 
+0xcb, 0x2a, 0xd6, 0x66, 0x33, 0xa0, 0xeb, 0xba, 
+0x2c, 0x95, 0x4a, 0xb1, 0xd9, 0xaa, 0x00, 0xd1, 
+0xbf, 0x3f, 0x5a, 0x05, 0x68, 0x44, 0x2c, 0x73, 
+0x5c, 0xfd, 0xd3, 0x4f, 0x3f, 0x65, 0x7a, 0x6c, 
+0x62, 0x72, 0x72, 0x92, 0x6d, 0xda, 0xb4, 0x89, 
+0xe5, 0x72, 0x39, 0x96, 0xcd, 0x66, 0xf9, 0xd4, 
+0xd4, 0x14, 0xcb, 0x64, 0x32, 0x3c, 0x9f, 0xcf, 
+0xb3, 0x74, 0x3a, 0xcd, 0x5d, 0xd7, 0xe5, 0x93, 
+0x93, 0x93, 0x96, 0x94, 0x92, 0x6b, 0x83, 0x62, 
+0x8c, 0x95, 0x6d, 0xe7, 0x8b, 0xc8, 0xfc, 0xfe, 
+0x60, 0x99, 0xc6, 0x70, 0x8a, 0x86, 0x31, 0xcd, 
+0xcf, 0x0c, 0xff, 0x3d, 0x03, 0x03, 0x03, 0x4f, 
+0xc4, 0x8d, 0xf9, 0x8f, 0x8c, 0x8c, 0xe0, 0xd0, 
+0xa1, 0x43, 0x35, 0x0f, 0x7f, 0x00, 0x38, 0x73, 
+0xe6, 0x0c, 0x8e, 0x1d, 0x3b, 0x56, 0xf3, 0xbf, 
+0x87, 0x98, 0x1f, 0x42, 0x08, 0x4c, 0x4f, 0x4f, 
+0xe3, 0xec, 0xd9, 0xb3, 0x38, 0x75, 0xea, 0x14, 
+0x2e, 0x5d, 0xba, 0x84, 0x74, 0x3a, 0x5d, 0xb3, 
+0xa1, 0xa0, 0x66, 0xc1, 0x71, 0x1c, 0xf4, 0xf4, 
+0xf4, 0xe0, 0xfc, 0xf9, 0xf3, 0xf3, 0x9e, 0x55, 
+0xd1, 0x8a, 0xe1, 0xff, 0x7b, 0xbf, 0xf7, 0x7b, 
+0xf8, 0x0f, 0xff, 0xe1, 0x3f, 0x94, 0xbd, 0xff, 
+0x87, 0x7f, 0xf8, 0x87, 0x73, 0xce, 0xd7, 0x26, 
+0x9a, 0x07, 0xcb, 0xb2, 0xb0, 0x6b, 0xd7, 0x2e, 
+0x1c, 0x39, 0x72, 0x04, 0xe7, 0xcf, 0x9f, 0x2f, 
+0xf9, 0x1e, 0x63, 0x8c, 0x77, 0x75, 0x75, 0xed, 
+0x54, 0x4a, 0x9d, 0xbc, 0x70, 0xe1, 0xc2, 0x69, 
+0x00, 0x8a, 0x73, 0xae, 0x18, 0x63, 0xe1, 0x83, 
+0x73, 0x5e, 0xf6, 0x10, 0x42, 0x28, 0xcc, 0xac, 
+0xdb, 0xa3, 0xa4, 0x94, 0x50, 0x4a, 0x29, 0xdf, 
+0xf7, 0x21, 0x84, 0x40, 0x36, 0x9b, 0x55, 0xae, 
+0xeb, 0x2a, 0xcf, 0xf3, 0x50, 0x2c, 0x16, 0xb1, 
+0x62, 0xc5, 0x0a, 0x28, 0xa5, 0xd4, 0x85, 0x0b, 
+0x17, 0x20, 0x84, 0xc0, 0xe9, 0xd3, 0xa7, 0xe1, 
+0xfb, 0x3e, 0x3a, 0x3a, 0x3a, 0xf0, 0xe9, 0xa7, 
+0x9f, 0x86, 0xdb, 0xcf, 0xff, 0xf0, 0x87, 0x3f, 
+0x64, 0xb7, 0xde, 0x7a, 0x2b, 0x3e, 0xff, 0xf9, 
+0xcf, 0x03, 0x00, 0xfe, 0xf3, 0x7f, 0xfe, 0xcf, 
+0x4b, 0x7b, 0xa1, 0x62, 0x08, 0x03, 0x36, 0x7a, 
+0xf7, 0x6f, 0x96, 0xfe, 0x01, 0x20, 0x97, 0xcb, 
+0x95, 0xcc, 0xf7, 0x9f, 0x9a, 0x9a, 0x0a, 0xd7, 
+0x4b, 0xd6, 0xcb, 0xfc, 0x16, 0x0a, 0x85, 0xb0, 
+0x93, 0x52, 0x77, 0xfc, 0x17, 0x8b, 0x45, 0x3b, 
+0x30, 0x2c, 0xdb, 0xf7, 0xfd, 0x70, 0x79, 0x5f, 
+0xcc, 0x8c, 0xc1, 0x84, 0x25, 0x7f, 0x04, 0x63, 
+0xfe, 0xeb, 0xd7, 0xaf, 0xdf, 0x39, 0x30, 0x30, 
+0x10, 0xdb, 0xed, 0xbf, 0x63, 0xc7, 0x0e, 0x1c, 
+0x3a, 0x74, 0x68, 0xc9, 0x36, 0x97, 0xa9, 0xc5, 
+0xac, 0x02, 0xa2, 0xba, 0x28, 0xa5, 0x70, 0xf1, 
+0xe2, 0x45, 0x5c, 0xba, 0x74, 0xa9, 0xde, 0x87, 
+0xd2, 0x10, 0x14, 0x0a, 0x05, 0x78, 0x9e, 0x37, 
+0xaf, 0xff, 0xa6, 0x15, 0xc3, 0xff, 0x8f, 0xff, 
+0xf8, 0x8f, 0xf1, 0x6f, 0xfe, 0xcd, 0xbf, 0x29, 
+0x7b, 0xff, 0xdf, 0xfd, 0xbb, 0x7f, 0x87, 0x97, 
+0x5f, 0x7e, 0xb9, 0x0e, 0x47, 0x44, 0xd4, 0x92, 
+0xb9, 0x2a, 0x01, 0x03, 0x03, 0x03, 0x2f, 0xac, 
+0x5d, 0xbb, 0x76, 0x3b, 0x00, 0x5b, 0x08, 0x61, 
+0x0b, 0x21, 0xc2, 0xea, 0xb4, 0x10, 0xc2, 0x52, 
+0xc1, 0x12, 0xc1, 0xc1, 0x83, 0x9b, 0x0d, 0x81, 
+0x8e, 0xe3, 0x30, 0xb3, 0x0a, 0xa0, 0xa7, 0x04, 
+0x9a, 0x55, 0x00, 0x73, 0x5d, 0x00, 0xb3, 0xa1, 
+0xb4, 0xd1, 0x87, 0x01, 0x4a, 0x42, 0x36, 0x5a, 
+0xb2, 0x88, 0x76, 0xfd, 0x9b, 0xa5, 0x7f, 0xb3, 
+0x43, 0xb2, 0x58, 0x2c, 0x86, 0xf3, 0xfd, 0xcd, 
+0x26, 0x0a, 0xdd, 0x59, 0x69, 0xcc, 0xb5, 0x0c, 
+0xc3, 0x3f, 0xba, 0x4a, 0x93, 0x10, 0xc2, 0x59, 
+0xbb, 0x76, 0xed, 0xf6, 0x60, 0x9e, 0x7f, 0x59, 
+0xf8, 0x0f, 0x0f, 0x0f, 0xe3, 0x99, 0x67, 0x9e, 
+0x59, 0xd2, 0xd5, 0xd0, 0x68, 0xc9, 0xda, 0xe6, 
+0xa1, 0x51, 0xe7, 0xd9, 0x2e, 0x25, 0x93, 0x93, 
+0x93, 0xf8, 0xd5, 0xaf, 0x7e, 0x35, 0xaf, 0x61, 
+0x91, 0x56, 0x0c, 0xff, 0xb7, 0xde, 0x7a, 0x0b, 
+0xaf, 0xbe, 0xfa, 0x6a, 0xd9, 0xff, 0x13, 0x0f, 
+0x3c, 0xf0, 0x00, 0x7e, 0xf7, 0x77, 0x7f, 0xb7, 
+0x4e, 0x47, 0x45, 0xd4, 0x9a, 0x04, 0x12, 0xf0, 
+0x52, 0x7f, 0x7f, 0xff, 0x0e, 0x04, 0x0d, 0x80, 
+0x5a, 0x04, 0x82, 0xd7, 0x61, 0xe0, 0x33, 0xc6, 
+0x2c, 0xce, 0x39, 0x37, 0x7b, 0x01, 0xa4, 0x94, 
+0xac, 0x58, 0x2c, 0x72, 0xdf, 0xf7, 0x99, 0xef, 
+0xfb, 0x2c, 0xae, 0x17, 0x00, 0x98, 0xc9, 0xcc, 
+0xa4, 0xc7, 0xdb, 0x08, 0x33, 0x01, 0x38, 0x50, 
+0xf9, 0xee, 0x1f, 0x00, 0xe2, 0xba, 0xfe, 0xa7, 
+0xa7, 0xa7, 0xb9, 0xb9, 0x4a, 0x12, 0x22, 0xdd, 
+0x93, 0xe6, 0xf2, 0x8a, 0xe6, 0x50, 0x00, 0x22, 
+0x1b, 0xfc, 0xc0, 0xb8, 0xf3, 0xef, 0xef, 0xef, 
+0x1f, 0xde, 0xb8, 0x71, 0xe3, 0xc1, 0xb8, 0x45, 
+0x7e, 0xae, 0xbc, 0xf2, 0x4a, 0x3c, 0xfb, 0xec, 
+0xb3, 0x4b, 0xbe, 0xad, 0x6c, 0x4f, 0x4f, 0x0f, 
+0x55, 0x01, 0x9a, 0x84, 0xe5, 0xde, 0x0b, 0x40, 
+0xe1, 0x3f, 0xc3, 0xff, 0xf9, 0x3f, 0xff, 0x07, 
+0x07, 0x0f, 0x1e, 0x2c, 0x1b, 0x02, 0xd9, 0xb1, 
+0x63, 0x07, 0xbe, 0xfa, 0xd5, 0xaf, 0x36, 0xe4, 
+0x06, 0x4b, 0x44, 0xf5, 0x98, 0x4b, 0x02, 0x36, 
+0x6c, 0xd8, 0xf0, 0x4a, 0x7f, 0x7f, 0xff, 0x4e, 
+0x29, 0x65, 0xc9, 0x32, 0xc0, 0x08, 0x72, 0xcb, 
+0xf7, 0x7d, 0x4b, 0x08, 0xc1, 0x7d, 0xdf, 0xe7, 
+0x51, 0x84, 0x10, 0x4c, 0x2f, 0x0e, 0x94, 0x4e, 
+0xa7, 0xc3, 0x2a, 0xc0, 0xca, 0x95, 0x2b, 0x01, 
+0xcc, 0x64, 0xa5, 0x6e, 0x06, 0x8c, 0x6e, 0x12, 
+0xa4, 0xf9, 0xfc, 0xe7, 0x3f, 0xcf, 0x54, 0x03, 
+0x6d, 0x10, 0x14, 0xfe, 0x36, 0x54, 0xba, 0xfb, 
+0x07, 0x80, 0xe9, 0xe9, 0x69, 0xa6, 0x57, 0xfb, 
+0x8b, 0x96, 0xfe, 0x8d, 0x21, 0x00, 0x0b, 0xc1, 
+0x62, 0x3f, 0x88, 0x74, 0xfe, 0xc3, 0x08, 0x7e, 
+0xdf, 0xf7, 0xcd, 0x4e, 0x7f, 0x47, 0x08, 0xe1, 
+0xac, 0x5e, 0xbd, 0xfa, 0xaa, 0x4d, 0x9b, 0x36, 
+0x1d, 0x8a, 0x5b, 0xde, 0x77, 0xf3, 0xe6, 0xcd, 
+0x78, 0xfe, 0xf9, 0xe7, 0x97, 0x64, 0xcc, 0x3f, 
+0x0e, 0x5a, 0x16, 0xb4, 0x39, 0x58, 0xce, 0x02, 
+0x40, 0xe1, 0x3f, 0xc3, 0x7b, 0xef, 0xbd, 0x87, 
+0x03, 0x07, 0x0e, 0xa0, 0x58, 0x2c, 0x96, 0xbc, 
+0xbf, 0x6a, 0xd5, 0x2a, 0x7c, 0xeb, 0x5b, 0xdf, 
+0x42, 0x47, 0x47, 0x47, 0x9d, 0x8e, 0x8c, 0x58, 
+0x4a, 0xe6, 0x92, 0x80, 0xf5, 0xeb, 0xd7, 0xbf, 
+0xba, 0x76, 0xed, 0xda, 0x9d, 0xba, 0x02, 0x20, 
+0xa5, 0xb4, 0x74, 0x43, 0x20, 0x02, 0x11, 0x60, 
+0x8c, 0x85, 0x22, 0xa0, 0xab, 0x00, 0x96, 0x65, 
+0x71, 0x21, 0x04, 0xd3, 0xb3, 0x01, 0x3c, 0xcf, 
+0x63, 0x2b, 0x56, 0xac, 0x40, 0x2e, 0x97, 0x2b, 
+0x6b, 0x06, 0x8c, 0xae, 0x2b, 0x31, 0xdb, 0x2e, 
+0x81, 0xf5, 0x84, 0x57, 0xba, 0xfb, 0x1f, 0x1c, 
+0x1c, 0x2c, 0xb9, 0xfb, 0x2f, 0x14, 0x0a, 0xe1, 
+0x9c, 0x7f, 0xdd, 0xf5, 0xaf, 0xa7, 0x48, 0x78, 
+0x9e, 0xc7, 0x75, 0xc9, 0x04, 0x33, 0x6b, 0x28, 
+0x6b, 0x93, 0xb2, 0x84, 0x10, 0x96, 0x1e, 0xff, 
+0xd7, 0x3d, 0x00, 0x08, 0xca, 0x2f, 0x00, 0x9c, 
+0xbe, 0xbe, 0xbe, 0x2d, 0x9b, 0x37, 0x6f, 0x7e, 
+0x21, 0x6e, 0x63, 0x9f, 0xc1, 0xc1, 0x41, 0xbc, 
+0xf0, 0xc2, 0x0b, 0x35, 0x9d, 0xea, 0x37, 0x17, 
+0x57, 0x5e, 0x79, 0x65, 0xdd, 0xfe, 0x6e, 0x22, 
+0x39, 0x8d, 0xf2, 0x0b, 0xb5, 0xd4, 0x50, 0xf8, 
+0xcf, 0xf0, 0xc9, 0x27, 0x9f, 0xe0, 0xc1, 0x07, 
+0x1f, 0xc4, 0xe4, 0xe4, 0x64, 0xc9, 0xfb, 0xa9, 
+0x54, 0x0a, 0x6f, 0xbf, 0xfd, 0x36, 0x06, 0x06, 
+0x06, 0xea, 0x74, 0x64, 0x44, 0x3d, 0x98, 0x4b, 
+0x02, 0xd6, 0xad, 0x5b, 0xf7, 0xc6, 0xda, 0xb5, 
+0x6b, 0x77, 0x46, 0xab, 0x00, 0x52, 0x4a, 0x2e, 
+0x84, 0xe0, 0x42, 0x88, 0x92, 0xbb, 0x7f, 0xc7, 
+0x71, 0x98, 0x10, 0x82, 0x09, 0x21, 0x98, 0xae, 
+0x7e, 0xa7, 0xd3, 0x69, 0x56, 0x28, 0x14, 0x16, 
+0x3c, 0x0c, 0xd0, 0x08, 0x9f, 0x59, 0x1c, 0x88, 
+0xbf, 0xfb, 0xbf, 0x70, 0xe1, 0x02, 0xd3, 0x66, 
+0x13, 0xbd, 0xfb, 0x4f, 0xa5, 0x52, 0xcc, 0x75, 
+0x5d, 0xc6, 0x39, 0xe7, 0x4a, 0xa9, 0x92, 0xf2, 
+0x3f, 0x8c, 0x72, 0x4a, 0xb4, 0xf4, 0x8f, 0x48, 
+0xf9, 0x7f, 0xe5, 0xca, 0x95, 0x1b, 0x37, 0x6f, 
+0xde, 0xfc, 0x12, 0x63, 0xac, 0xac, 0x7d, 0x7b, 
+0xc3, 0x86, 0x0d, 0x35, 0x5d, 0xe4, 0x27, 0x29, 
+0xab, 0x57, 0xaf, 0xa6, 0x2a, 0x40, 0x13, 0xb0, 
+0x1c, 0x2b, 0x00, 0x14, 0xfe, 0x33, 0x14, 0x0a, 
+0x05, 0x3c, 0xf2, 0xc8, 0x23, 0xb1, 0xdb, 0xc5, 
+0x7e, 0xe1, 0x0b, 0x5f, 0xc0, 0x0d, 0x37, 0xdc, 
+0xb0, 0xf4, 0x07, 0x45, 0xd4, 0x9d, 0x04, 0x12, 
+0xf0, 0xaf, 0xfa, 0xfa, 0xfa, 0xb6, 0xe9, 0x0a, 
+0x80, 0x52, 0x8a, 0x9b, 0x77, 0xff, 0xfa, 0x21, 
+0xa5, 0x64, 0xfa, 0x26, 0x37, 0xae, 0x19, 0x10, 
+0x98, 0x59, 0x8b, 0xc3, 0xe4, 0xcc, 0x99, 0x33, 
+0x6c, 0xef, 0xde, 0xbd, 0x00, 0x1a, 0x7b, 0x3a, 
+0x20, 0x9f, 0x6d, 0xec, 0xbf, 0xaf, 0xaf, 0x0f, 
+0xfa, 0xee, 0x5f, 0xaf, 0x84, 0x64, 0xde, 0xfd, 
+0x7b, 0x9e, 0xc7, 0x7d, 0xdf, 0xe7, 0xc5, 0x62, 
+0x31, 0xec, 0x9c, 0x34, 0x9b, 0xfe, 0x02, 0xbb, 
+0x0a, 0xc3, 0xdf, 0x5c, 0x8d, 0x29, 0x9d, 0x4e, 
+0xf7, 0x6c, 0xd9, 0xb2, 0xe5, 0x79, 0xce, 0x79, 
+0x2a, 0x7a, 0x50, 0xeb, 0xd6, 0xad, 0xc3, 0xcb, 
+0x2f, 0xbf, 0x8c, 0x54, 0xaa, 0xec, 0x5b, 0x75, 
+0xe1, 0x9a, 0x6b, 0xae, 0x59, 0xf2, 0xfe, 0x03, 
+0x62, 0x7e, 0x34, 0x82, 0x4d, 0x2f, 0x25, 0x14, 
+0xfe, 0x97, 0x79, 0xf9, 0xe5, 0x97, 0xf1, 0xa3, 
+0x1f, 0xfd, 0xa8, 0xec, 0xfd, 0xff, 0xf4, 0x9f, 
+0xfe, 0x13, 0x0e, 0x1d, 0x3a, 0x54, 0x87, 0x23, 
+0x22, 0x1a, 0x85, 0x38, 0x09, 0x60, 0x8c, 0xe9, 
+0x87, 0xdd, 0xd7, 0xd7, 0xf7, 0x90, 0x94, 0xd2, 
+0x62, 0x8c, 0x71, 0x21, 0x44, 0x58, 0x01, 0x30, 
+0xf1, 0x7d, 0x9f, 0x4b, 0x29, 0x99, 0x7e, 0xe8, 
+0x2a, 0x80, 0x6e, 0x06, 0x6c, 0x6b, 0x6b, 0x0b, 
+0x6f, 0x96, 0x75, 0x1f, 0x00, 0x00, 0x7c, 0xf4, 
+0xd1, 0x47, 0xe1, 0xa2, 0x40, 0x95, 0xa8, 0xf7, 
+0xe7, 0x56, 0x6c, 0x47, 0x4c, 0xdc, 0xd8, 0xbf, 
+0x1e, 0xf3, 0xd0, 0x1b, 0x23, 0x44, 0x61, 0x8c, 
+0x85, 0x53, 0xff, 0x74, 0xf9, 0xdf, 0x2c, 0xfd, 
+0x07, 0xd3, 0x2e, 0xf4, 0x0c, 0x80, 0xd4, 0xc8, 
+0xc8, 0xc8, 0x73, 0x96, 0x65, 0x75, 0x46, 0xff, 
+0xee, 0x35, 0x6b, 0xd6, 0xe0, 0x95, 0x57, 0x5e, 
+0x69, 0xa8, 0xe6, 0xbb, 0x9e, 0x9e, 0x1e, 0xdc, 
+0x78, 0xe3, 0x8d, 0xf5, 0x3e, 0x0c, 0x62, 0x16, 
+0x96, 0x53, 0x05, 0x80, 0xc2, 0xff, 0x32, 0xbf, 
+0xf3, 0x3b, 0xbf, 0x53, 0xb6, 0xbe, 0x3f, 0x00, 
+0x3c, 0xf6, 0xd8, 0x63, 0xf8, 0x9d, 0xdf, 0xf9, 
+0x9d, 0x3a, 0x1c, 0xd1, 0xfc, 0x39, 0x79, 0xf2, 
+0x24, 0x7e, 0xeb, 0xb7, 0x7e, 0x0b, 0x7f, 0xfd, 
+0xd7, 0x7f, 0x5d, 0xef, 0x43, 0x69, 0x49, 0x4c, 
+0x09, 0x88, 0xf6, 0xdc, 0xa5, 0x52, 0xa9, 0x6d, 
+0x6d, 0x6d, 0x6d, 0x9d, 0x5a, 0x02, 0x10, 0x0c, 
+0x03, 0x68, 0x11, 0x30, 0x9b, 0x01, 0x75, 0xf8, 
+0x0b, 0x21, 0xc2, 0x1f, 0xa2, 0x87, 0x01, 0xcc, 
+0x9f, 0x19, 0xb7, 0x28, 0x10, 0x50, 0xde, 0x07, 
+0xd0, 0x08, 0x70, 0x5d, 0x9e, 0x88, 0xce, 0xfb, 
+0x9f, 0x6d, 0xec, 0x5f, 0x08, 0xc1, 0xf4, 0xdd, 
+0xbf, 0x2e, 0xff, 0x47, 0xa7, 0x00, 0x9a, 0xd5, 
+0x00, 0x44, 0xaa, 0x00, 0x23, 0x23, 0x23, 0x0f, 
+0xa7, 0xd3, 0xe9, 0xa1, 0xe8, 0xc1, 0xf4, 0xf5, 
+0xf5, 0xd5, 0x64, 0x4b, 0xdf, 0x6a, 0xb0, 0x65, 
+0xcb, 0x16, 0x6c, 0xdf, 0xbe, 0xbd, 0xde, 0x87, 
+0x41, 0x54, 0xa0, 0xde, 0x26, 0xbd, 0x54, 0x50, 
+0xf8, 0x5f, 0xe6, 0xad, 0xb7, 0xde, 0xc2, 0x6f, 
+0xfd, 0xd6, 0x6f, 0x95, 0xbd, 0xbf, 0x6f, 0xdf, 
+0x3e, 0x7c, 0xf5, 0xab, 0x5f, 0x5d, 0xb2, 0x2d, 
+0x93, 0x17, 0xca, 0x8f, 0x7e, 0xf4, 0x23, 0x3c, 
+0xfd, 0xf4, 0xd3, 0x18, 0x1c, 0x1c, 0xc4, 0x89, 
+0x13, 0x27, 0x70, 0xf7, 0xdd, 0x77, 0xd7, 0xfb, 
+0x90, 0x5a, 0x16, 0x2d, 0x01, 0xe6, 0xa6, 0x71, 
+0x41, 0x15, 0x80, 0x31, 0xc6, 0x52, 0x41, 0xe8, 
+0x5b, 0x4a, 0x29, 0xb3, 0xeb, 0x9f, 0x2b, 0xa5, 
+0x98, 0x52, 0x8a, 0x49, 0x29, 0x99, 0xee, 0x05, 
+0x70, 0x5d, 0x97, 0xe9, 0x61, 0x00, 0xfd, 0xb3, 
+0x16, 0x33, 0x1d, 0xb0, 0x9e, 0x70, 0x60, 0xa6, 
+0xfc, 0xaf, 0xdf, 0xd0, 0xcd, 0x7f, 0xe6, 0xdd, 
+0x7f, 0xb1, 0x58, 0x64, 0xd1, 0xb1, 0x7f, 0xb3, 
+0x3c, 0x22, 0x84, 0xe0, 0xfa, 0xee, 0x3f, 0xe8, 
+0xa4, 0x2c, 0x5b, 0x6b, 0x59, 0x97, 0xff, 0x07, 
+0x07, 0x07, 0xaf, 0x59, 0xb1, 0x62, 0xc5, 0x67, 
+0xa3, 0x07, 0xd2, 0xde, 0xde, 0x8e, 0x57, 0x5e, 
+0x79, 0xa5, 0xa1, 0xe7, 0xde, 0x5f, 0x7b, 0xed, 
+0xb5, 0xd8, 0xb6, 0x6d, 0x5b, 0xbd, 0x0f, 0x83, 
+0x88, 0x61, 0x39, 0x54, 0x00, 0x28, 0xfc, 0x2f, 
+0xf3, 0xe3, 0x1f, 0xff, 0x18, 0xcf, 0x3d, 0xf7, 
+0x5c, 0x99, 0xf8, 0xdd, 0x7d, 0xf7, 0xdd, 0xf8, 
+0xc6, 0x37, 0xbe, 0x51, 0xf7, 0xde, 0xa1, 0x4a, 
+0x14, 0x0a, 0x05, 0x7c, 0xe9, 0x4b, 0x5f, 0xc2, 
+0xd5, 0x57, 0x5f, 0x8d, 0x1b, 0x6f, 0xbc, 0x11, 
+0x5f, 0xfb, 0xda, 0xd7, 0xb0, 0x6d, 0xdb, 0x36, 
+0xfc, 0xfe, 0xef, 0xff, 0x7e, 0xbd, 0x0f, 0xad, 
+0xe5, 0x71, 0x5d, 0x37, 0x9c, 0x4d, 0x66, 0xca, 
+0xa1, 0x52, 0x8a, 0x05, 0x19, 0xc5, 0xcd, 0xbb, 
+0xff, 0xb8, 0x61, 0x00, 0xb3, 0xfc, 0xaf, 0x87, 
+0x00, 0x74, 0x46, 0xea, 0x9f, 0x37, 0x35, 0x35, 
+0xc5, 0x80, 0x99, 0x3e, 0x00, 0xfd, 0xde, 0xa7, 
+0x9f, 0x7e, 0x1a, 0xbe, 0x6e, 0xa4, 0x8d, 0x81, 
+0x4a, 0xe6, 0xd6, 0x4d, 0x4e, 0x4e, 0x32, 0xdb, 
+0xb6, 0xf5, 0x9a, 0xff, 0xd0, 0x77, 0xff, 0x53, 
+0x53, 0x53, 0x4c, 0x9b, 0x50, 0xd0, 0xe9, 0x1f, 
+0x1a, 0x11, 0x66, 0x76, 0x14, 0xe4, 0x4a, 0x29, 
+0x1e, 0x19, 0x4b, 0x31, 0x1f, 0x36, 0x00, 0xbb, 
+0xb7, 0xb7, 0x77, 0x7d, 0x7f, 0x7f, 0xff, 0x13, 
+0xd1, 0x83, 0xe0, 0x9c, 0xe3, 0xe0, 0xc1, 0x83, 
+0xe8, 0xea, 0xea, 0x5a, 0xa2, 0xd3, 0x5e, 0x38, 
+0xba, 0xa1, 0xe8, 0x17, 0xbf, 0xf8, 0x45, 0x9d, 
+0x8f, 0x84, 0x30, 0x69, 0x75, 0x01, 0xa0, 0xf0, 
+0x9f, 0x41, 0x29, 0x85, 0xa3, 0x47, 0x8f, 0xe2, 
+0xe1, 0x87, 0x1f, 0x2e, 0xdb, 0xab, 0xe3, 0xce, 
+0x3b, 0xef, 0xc4, 0x37, 0xbf, 0xf9, 0xcd, 0x86, 
+0xe9, 0x1d, 0x32, 0x39, 0x79, 0xf2, 0x24, 0xfe, 
+0xc7, 0xff, 0xf8, 0x1f, 0xf8, 0xc3, 0x3f, 0xfc, 
+0x43, 0x7c, 0xf2, 0xc9, 0x27, 0xe1, 0xfb, 0xbd, 
+0xbd, 0xbd, 0xf8, 0xe6, 0x37, 0xbf, 0xd9, 0x90, 
+0x55, 0xcf, 0x56, 0x44, 0x8f, 0xff, 0x9b, 0x48, 
+0x29, 0xb9, 0xbe, 0xf3, 0x67, 0x8c, 0x71, 0x29, 
+0x25, 0x07, 0xc0, 0x39, 0xe7, 0x4c, 0x4a, 0xc9, 
+0x18, 0x63, 0xcc, 0xb6, 0xed, 0xb0, 0x07, 0x80, 
+0x31, 0xc6, 0x84, 0x10, 0xe1, 0x6b, 0x2d, 0x9b, 
+0xd9, 0x6c, 0xb6, 0x62, 0xb0, 0xdf, 0x7a, 0xeb, 
+0xad, 0x18, 0x1b, 0x1b, 0xab, 0xe9, 0xb9, 0x2d, 
+0x04, 0x0e, 0x00, 0x7b, 0xf7, 0xee, 0x85, 0x9e, 
+0xfa, 0x07, 0xcc, 0x94, 0xe2, 0xf3, 0xf9, 0x3c, 
+0x03, 0x00, 0xf3, 0xee, 0x5f, 0x77, 0x40, 0x9a, 
+0x56, 0x64, 0x3c, 0xc2, 0x55, 0x94, 0xf4, 0x58, 
+0x8a, 0x2e, 0xff, 0x33, 0xc6, 0x6c, 0xc7, 0x71, 
+0xda, 0x37, 0x6d, 0xda, 0x14, 0xdb, 0xf1, 0x7f, 
+0xff, 0xfd, 0xf7, 0x63, 0xd3, 0xa6, 0x4d, 0x4b, 
+0x77, 0xd6, 0x8b, 0xe4, 0x86, 0x1b, 0x6e, 0xa0, 
+0x4a, 0x40, 0x83, 0xd1, 0xca, 0x43, 0x00, 0xcb, 
+0x39, 0xfc, 0x8b, 0xc5, 0x22, 0xbe, 0xf2, 0x95, 
+0xaf, 0xe0, 0xe6, 0x9b, 0x6f, 0x46, 0x57, 0x57, 
+0x17, 0x2c, 0xcb, 0xc2, 0xa6, 0x4d, 0x9b, 0x70, 
+0xf2, 0xe4, 0xc9, 0xf0, 0xcf, 0x30, 0xc6, 0xf0, 
+0x1f, 0xff, 0xe3, 0x7f, 0xc4, 0xb7, 0xbf, 0xfd, 
+0xed, 0x86, 0xea, 0x1d, 0xd2, 0xfc, 0xe4, 0x27, 
+0x3f, 0xc1, 0xc6, 0x8d, 0x1b, 0xf1, 0x5f, 0xfe, 
+0xcb, 0x7f, 0x29, 0x09, 0x7f, 0xcb, 0xb2, 0xf0, 
+0xf5, 0xaf, 0x7f, 0x1d, 0x43, 0x43, 0x65, 0xa3, 
+0xa1, 0xc4, 0x12, 0xa0, 0x65, 0x20, 0x18, 0xdf, 
+0xe7, 0xa6, 0x08, 0x58, 0x96, 0xc5, 0x8c, 0x8a, 
+0x00, 0x93, 0x91, 0x26, 0xc0, 0x68, 0x1f, 0x40, 
+0x26, 0x93, 0x09, 0xfb, 0xe6, 0x80, 0xcb, 0x55, 
+0x00, 0xe0, 0x72, 0x85, 0x3d, 0xba, 0x20, 0xd0, 
+0x92, 0x9d, 0xe8, 0x2c, 0xd8, 0xc1, 0xc1, 0x95, 
+0x94, 0x2f, 0x6c, 0xdb, 0x66, 0xd9, 0x6c, 0x96, 
+0x4d, 0x4e, 0x4e, 0x86, 0x27, 0xad, 0x94, 0xd2, 
+0x27, 0xce, 0x75, 0x25, 0xc0, 0xb6, 0x6d, 0xe6, 
+0xfb, 0x7e, 0x58, 0x01, 0xf0, 0x7d, 0x3f, 0x7a, 
+0xe7, 0x6f, 0x49, 0x29, 0x2d, 0x00, 0xf6, 0xf0, 
+0xf0, 0xf0, 0x73, 0xb6, 0x6d, 0xaf, 0x8c, 0x1e, 
+0xc0, 0xee, 0xdd, 0xbb, 0xf1, 0xd9, 0xcf, 0x96, 
+0x8d, 0x08, 0x34, 0x3c, 0x54, 0x09, 0x68, 0x2c, 
+0x5a, 0xb5, 0x02, 0xb0, 0x9c, 0xc3, 0xff, 0x9d, 
+0x77, 0xde, 0xc1, 0xc1, 0x83, 0x07, 0x67, 0xbd, 
+0x73, 0x5a, 0xbd, 0x7a, 0x35, 0xfe, 0xe4, 0x4f, 
+0xfe, 0x04, 0x77, 0xde, 0x79, 0xe7, 0x12, 0x1e, 
+0x59, 0x72, 0x2e, 0x5c, 0xb8, 0x80, 0x27, 0x9f, 
+0x7c, 0x12, 0x85, 0x42, 0xa1, 0xec, 0x7b, 0xbf, 
+0xfb, 0xbb, 0xbf, 0x8b, 0x3b, 0xee, 0xb8, 0xa3, 
+0x0e, 0x47, 0x45, 0x44, 0x86, 0x00, 0xcc, 0x2a, 
+0xb6, 0xbe, 0xf3, 0xe7, 0xfa, 0xae, 0x9f, 0x31, 
+0xc6, 0x39, 0xe7, 0xcc, 0xb6, 0x6d, 0x16, 0x64, 
+0x1e, 0x03, 0xc0, 0xda, 0xda, 0xda, 0x18, 0xe7, 
+0x9c, 0x79, 0x9e, 0xc7, 0x2c, 0xcb, 0x42, 0xa1, 
+0x50, 0x60, 0xd1, 0x05, 0xeb, 0xce, 0x9d, 0x3b, 
+0xc7, 0xba, 0xbb, 0xbb, 0xc3, 0xbb, 0x93, 0xcf, 
+0x7d, 0xee, 0x73, 0xe1, 0x66, 0x40, 0x8d, 0x40, 
+0xc9, 0x2c, 0x80, 0x68, 0xf7, 0xa2, 0xb6, 0x1a, 
+0xbd, 0xf0, 0x81, 0xb1, 0x10, 0x42, 0x18, 0xfe, 
+0x41, 0xa7, 0xa4, 0xa5, 0xc7, 0x4c, 0x8c, 0xbb, 
+0xff, 0x70, 0x5a, 0xe0, 0xe6, 0xcd, 0x9b, 0xef, 
+0xce, 0x64, 0x32, 0x65, 0x1d, 0x74, 0xab, 0x57, 
+0xaf, 0x6e, 0xea, 0x5d, 0xb9, 0xa8, 0x12, 0xd0, 
+0x38, 0xb4, 0xa2, 0x00, 0x2c, 0xd7, 0xf0, 0x57, 
+0x4a, 0xe1, 0xbf, 0xfe, 0xd7, 0xff, 0x8a, 0xcf, 
+0x7c, 0xe6, 0x33, 0x15, 0xc3, 0x9f, 0x31, 0x86, 
+0xa7, 0x9f, 0x7e, 0x1a, 0xef, 0xbc, 0xf3, 0x4e, 
+0xc3, 0x86, 0xbf, 0x52, 0x0a, 0x2f, 0xbd, 0xf4, 
+0x12, 0x3e, 0xfc, 0xf0, 0xc3, 0xb2, 0xef, 0x3d, 
+0xfb, 0xec, 0xb3, 0xf8, 0xb7, 0xff, 0xf6, 0xdf, 
+0xd6, 0xe1, 0xa8, 0x96, 0x37, 0x95, 0x86, 0x00, 
+0x82, 0x35, 0x6d, 0x74, 0xc3, 0x1f, 0xd7, 0x8d, 
+0x7f, 0xb6, 0x6d, 0x33, 0xcb, 0xb2, 0x58, 0x50, 
+0x11, 0x08, 0xdf, 0xcb, 0x64, 0x32, 0x08, 0x44, 
+0xa0, 0x8c, 0x5c, 0x2e, 0x17, 0xbe, 0x1f, 0x5d, 
+0x11, 0xb0, 0xd1, 0x08, 0x05, 0x20, 0xae, 0xfb, 
+0x3f, 0xda, 0xfc, 0xe7, 0xba, 0x2e, 0x73, 0x1c, 
+0x87, 0x99, 0xe1, 0xaf, 0xcb, 0x25, 0x46, 0x19, 
+0xc5, 0xd2, 0xfd, 0x00, 0x52, 0x4a, 0xab, 0xad, 
+0xad, 0xad, 0xa7, 0xa7, 0xa7, 0xe7, 0xbe, 0xe8, 
+0x5f, 0x9c, 0xc9, 0x64, 0xf0, 0xfc, 0xf3, 0xcf, 
+0xd7, 0x75, 0x95, 0xbf, 0x6a, 0x40, 0x12, 0xd0, 
+0x18, 0xb4, 0xda, 0x10, 0xc0, 0x72, 0x0d, 0xff, 
+0xe3, 0xc7, 0x8f, 0xe3, 0x8e, 0x3b, 0xee, 0xc0, 
+0x6f, 0xfe, 0xe6, 0x6f, 0x96, 0x2d, 0xe9, 0xab, 
+0xb9, 0xf7, 0xde, 0x7b, 0xf1, 0xd3, 0x9f, 0xfe, 
+0x14, 0x5f, 0xfd, 0xea, 0x57, 0xc3, 0xad, 0x56, 
+0x1b, 0x91, 0xdf, 0xfe, 0xed, 0xdf, 0xc6, 0x37, 
+0xbe, 0xf1, 0x8d, 0xb2, 0xf7, 0xf7, 0xee, 0xdd, 
+0x8b, 0x2f, 0x7c, 0xe1, 0x0b, 0x75, 0x38, 0x22, 
+0xc2, 0x44, 0xcb, 0x80, 0x71, 0xe7, 0xaf, 0x2b, 
+0x01, 0x65, 0xe5, 0x7f, 0x2d, 0x04, 0x52, 0xca, 
+0xf0, 0xa6, 0xd8, 0x7c, 0xd6, 0x4d, 0x80, 0x7a, 
+0xe8, 0x7c, 0xdd, 0xba, 0x75, 0xb1, 0x33, 0x01, 
+0xde, 0x7c, 0xf3, 0xcd, 0x86, 0x28, 0xfd, 0x6b, 
+0xb8, 0x39, 0xfe, 0xaf, 0xc7, 0x2d, 0x56, 0xae, 
+0x5c, 0x19, 0x9e, 0x90, 0xe7, 0x79, 0xcc, 0xf7, 
+0xfd, 0xb0, 0xfb, 0x51, 0x57, 0x00, 0xa4, 0x94, 
+0xcc, 0xb2, 0x2c, 0x16, 0xac, 0x94, 0xa4, 0x57, 
+0x4d, 0x2a, 0x19, 0xff, 0x67, 0x8c, 0x59, 0x83, 
+0x83, 0x83, 0x0f, 0x46, 0xc7, 0xfd, 0x19, 0x63, 
+0x78, 0xea, 0xa9, 0xa7, 0xd0, 0xdb, 0xdb, 0x5b, 
+0x87, 0x53, 0xae, 0x3e, 0x24, 0x01, 0xf5, 0x67, 
+0xbe, 0x5b, 0xe0, 0x36, 0x32, 0xcb, 0x35, 0xfc, 
+0xbf, 0xfe, 0xf5, 0xaf, 0x63, 0xc7, 0x8e, 0x1d, 
+0xf8, 0x9b, 0xbf, 0xf9, 0x9b, 0xb2, 0xef, 0x39, 
+0x8e, 0x83, 0xfb, 0xef, 0xbf, 0x1f, 0x7f, 0xfb, 
+0xb7, 0x7f, 0x8b, 0x6f, 0x7f, 0xfb, 0xdb, 0xd8, 
+0xbd, 0x7b, 0x77, 0x1d, 0x8e, 0x30, 0x39, 0x6f, 
+0xbf, 0xfd, 0x76, 0xec, 0x7e, 0xef, 0x57, 0x5d, 
+0x75, 0x15, 0xfe, 0xe2, 0x2f, 0xfe, 0xa2, 0x64, 
+0x3a, 0x1a, 0xb1, 0xf4, 0x44, 0x67, 0x01, 0x60, 
+0xa6, 0xb1, 0x9d, 0x73, 0xce, 0x99, 0x59, 0x0d, 
+0x30, 0xa7, 0x01, 0x9a, 0x12, 0xa0, 0x7b, 0x01, 
+0x80, 0x99, 0x8c, 0x04, 0x2e, 0x4b, 0x40, 0x14, 
+0xbd, 0x22, 0x60, 0x23, 0xc2, 0x3f, 0xfa, 0xe8, 
+0xa3, 0x92, 0x83, 0x9e, 0x9e, 0x9e, 0x66, 0xba, 
+0x84, 0xa1, 0xc3, 0x5f, 0x5b, 0x8e, 0x59, 0x02, 
+0xd1, 0xf3, 0x24, 0x8d, 0x31, 0x92, 0x70, 0xec, 
+0x44, 0x1b, 0x55, 0x77, 0x77, 0xf7, 0xba, 0xf6, 
+0xf6, 0xff, 0x9f, 0xbd, 0x33, 0x8f, 0x8f, 0xa2, 
+0xbc, 0xff, 0xf8, 0xe7, 0x79, 0x66, 0x76, 0x37, 
+0x9b, 0x25, 0x86, 0x10, 0xce, 0x00, 0x2a, 0x02, 
+0x51, 0x08, 0x84, 0xab, 0x20, 0x78, 0x0b, 0x1e, 
+0xa0, 0xd6, 0x82, 0x88, 0x50, 0x95, 0x2a, 0x6d, 
+0x95, 0x2a, 0x45, 0x5b, 0x7e, 0x28, 0x88, 0x5a, 
+0x04, 0x6f, 0x94, 0x6a, 0x8b, 0x0a, 0x6a, 0x11, 
+0x54, 0xac, 0x28, 0xca, 0x59, 0x54, 0x50, 0xf0, 
+0x00, 0xe4, 0x46, 0x02, 0x26, 0x12, 0x2e, 0x91, 
+0x23, 0x01, 0x72, 0x91, 0x6c, 0x92, 0xbd, 0x66, 
+0xe6, 0xf9, 0xfd, 0x91, 0x7d, 0xc6, 0xd9, 0xd9, 
+0x23, 0x9b, 0xb0, 0x67, 0x98, 0xf7, 0xeb, 0x35, 
+0xaf, 0x25, 0x3b, 0x7b, 0x7c, 0x27, 0x4b, 0xf6, 
+0xfb, 0x79, 0xbe, 0xd7, 0xd3, 0x6c, 0x90, 0xfe, 
+0x4d, 0x9b, 0xa2, 0xc3, 0x6c, 0x8a, 0xd7, 0x94, 
+0x4c, 0x28, 0x8a, 0xe2, 0xb7, 0x03, 0x5c, 0x32, 
+0x72, 0xae, 0x3a, 0xff, 0x49, 0x93, 0x26, 0x61, 
+0xcc, 0x98, 0x31, 0x38, 0x73, 0xe6, 0x8c, 0xdf, 
+0xb9, 0x69, 0xd3, 0xa6, 0xa1, 0xb8, 0xb8, 0x18, 
+0xff, 0xfb, 0xdf, 0xff, 0x70, 0xf5, 0xd5, 0x57, 
+0xc7, 0xc1, 0xba, 0x86, 0xb1, 0x77, 0xef, 0xde, 
+0x80, 0x2d, 0x8a, 0xb9, 0xb9, 0xb9, 0xf8, 0xee, 
+0xbb, 0xef, 0x90, 0x95, 0x95, 0x15, 0x27, 0xcb, 
+0x0c, 0x02, 0xa5, 0x00, 0x00, 0x10, 0xc6, 0x18, 
+0xf5, 0xde, 0x12, 0xc6, 0x18, 0x11, 0x04, 0xc1, 
+0x4f, 0x00, 0xf0, 0xd5, 0x3f, 0xbf, 0x05, 0x7e, 
+0x8d, 0x00, 0x70, 0x11, 0x00, 0xd4, 0x15, 0xd1, 
+0x6b, 0x27, 0x02, 0x72, 0x12, 0x71, 0x24, 0xb0, 
+0x5a, 0xb1, 0x10, 0x28, 0xff, 0x4f, 0x29, 0x45, 
+0x55, 0x55, 0x15, 0xbf, 0x48, 0x62, 0x32, 0x99, 
+0xd4, 0xa2, 0x07, 0xfe, 0x0b, 0xd1, 0x08, 0x01, 
+0xaa, 0x75, 0xfe, 0x8c, 0x31, 0xda, 0xbe, 0x7d, 
+0xfb, 0x5b, 0xa1, 0xab, 0x33, 0xb0, 0x5a, 0xad, 
+0xb8, 0xfe, 0xfa, 0xeb, 0x63, 0x73, 0x75, 0x31, 
+0xc6, 0x28, 0x0c, 0x8c, 0x2f, 0x1e, 0x8f, 0x27, 
+0xa9, 0x47, 0x36, 0x9f, 0xab, 0xce, 0x7f, 0xdd, 
+0xba, 0x75, 0x78, 0xf3, 0xcd, 0x37, 0x41, 0x29, 
+0xf5, 0xbb, 0xf6, 0xec, 0xec, 0x6c, 0xcc, 0x9c, 
+0x39, 0x33, 0x69, 0x3e, 0xd7, 0xd2, 0xd2, 0x52, 
+0xdc, 0x7a, 0xeb, 0xad, 0xa8, 0xae, 0xae, 0xf6, 
+0xb9, 0x7f, 0xc0, 0x80, 0x01, 0xf8, 0xe2, 0x8b, 
+0x2f, 0x90, 0x91, 0x91, 0x11, 0x27, 0xcb, 0x0c, 
+0x02, 0xc1, 0x53, 0x00, 0x1a, 0x67, 0x4f, 0xf5, 
+0x22, 0xc0, 0xeb, 0xe7, 0x54, 0xe7, 0x4f, 0x29, 
+0x85, 0x77, 0xf5, 0x4f, 0x44, 0x51, 0x84, 0x24, 
+0x49, 0xea, 0xae, 0xbe, 0x36, 0x9b, 0x8d, 0xef, 
+0x0c, 0x98, 0x14, 0x39, 0x49, 0x1f, 0xe7, 0xac, 
+0xcd, 0xff, 0x03, 0x75, 0xaa, 0xc6, 0x62, 0xb1, 
+0x90, 0xd4, 0xd4, 0x54, 0x98, 0xcd, 0x66, 0xb5, 
+0xfd, 0x81, 0x87, 0x43, 0x44, 0x51, 0xf4, 0x51, 
+0x49, 0xbc, 0x08, 0x90, 0x52, 0x4a, 0x6d, 0x36, 
+0x5b, 0xba, 0xd5, 0x6a, 0xed, 0xa5, 0x7f, 0xc3, 
+0x21, 0x43, 0x86, 0x34, 0xe9, 0x9e, 0x57, 0x23, 
+0x12, 0x10, 0x3f, 0x82, 0xe5, 0x8c, 0x93, 0x81, 
+0x73, 0xd5, 0xf9, 0x3b, 0x1c, 0x0e, 0xfc, 0xdf, 
+0xff, 0xfd, 0x1f, 0x52, 0x53, 0x53, 0x03, 0x5e, 
+0xfb, 0x53, 0x4f, 0x3d, 0x95, 0x34, 0xce, 0xdf, 
+0xe3, 0xf1, 0xe0, 0xf6, 0xdb, 0x6f, 0xf7, 0xdb, 
+0x94, 0xe8, 0xe6, 0x9b, 0x6f, 0xc6, 0x57, 0x5f, 
+0x7d, 0x65, 0x38, 0xff, 0x04, 0x42, 0x17, 0x09, 
+0x20, 0x3c, 0x0d, 0xa0, 0x0f, 0xfd, 0x0b, 0x82, 
+0x40, 0x4c, 0x26, 0x13, 0xb8, 0xbf, 0xe3, 0x9d, 
+0x01, 0xfc, 0x89, 0x3c, 0x02, 0x90, 0x96, 0x96, 
+0x86, 0xe6, 0xcd, 0x9b, 0x07, 0x7c, 0xaf, 0x70, 
+0xf6, 0x04, 0x88, 0x17, 0x22, 0x50, 0x57, 0x00, 
+0xa8, 0xff, 0xcf, 0xe9, 0x76, 0xbb, 0x09, 0xff, 
+0xc3, 0xe3, 0x69, 0x00, 0xee, 0xfc, 0x35, 0xf9, 
+0x7f, 0x55, 0x21, 0x79, 0x07, 0x28, 0xa8, 0xbf, 
+0xb8, 0x76, 0xed, 0xda, 0x5d, 0x0a, 0x9d, 0xc0, 
+0xc8, 0xc8, 0xc8, 0x38, 0x27, 0x66, 0xea, 0x1b, 
+0x91, 0x80, 0xf8, 0x90, 0xac, 0x75, 0x00, 0xe7, 
+0xaa, 0xf3, 0x07, 0x80, 0x99, 0x33, 0x67, 0x22, 
+0x2f, 0x2f, 0x2f, 0xe0, 0xb9, 0xce, 0x9d, 0x3b, 
+0x63, 0xf4, 0xe8, 0xd1, 0x31, 0xb6, 0xa8, 0x61, 
+0x6c, 0xdf, 0xbe, 0x1d, 0x6b, 0xd6, 0xac, 0xc1, 
+0xde, 0xbd, 0x7b, 0xb1, 0x6b, 0xd7, 0x2e, 0x1c, 
+0x3c, 0x78, 0x50, 0x3d, 0x67, 0x36, 0x9b, 0xf1, 
+0xe2, 0x8b, 0x2f, 0xe2, 0xe1, 0x87, 0x1f, 0x4e, 
+0xf8, 0xb1, 0xc4, 0xe7, 0x0a, 0x81, 0x52, 0x00, 
+0xde, 0xe5, 0x3b, 0xf1, 0x4e, 0x04, 0xf4, 0x0b, 
+0xfd, 0x7b, 0x5b, 0x00, 0xe1, 0xf5, 0x7b, 0x30, 
+0x9b, 0xcd, 0x10, 0x04, 0x81, 0x0b, 0x02, 0x98, 
+0xcd, 0x66, 0xf0, 0xa8, 0xb8, 0xbe, 0x0d, 0xb0, 
+0xac, 0xac, 0x8c, 0x64, 0x66, 0x66, 0x26, 0x6c, 
+0x34, 0x40, 0x0c, 0x75, 0xd2, 0xe3, 0xf1, 0x70, 
+0x65, 0xa4, 0xc2, 0x6b, 0x00, 0xb4, 0xce, 0x5f, 
+0x10, 0x04, 0x22, 0x49, 0x92, 0xcf, 0x2f, 0x2e, 
+0x2d, 0x2d, 0xcd, 0xef, 0xdb, 0xa9, 0x6f, 0xdf, 
+0xbe, 0x49, 0xa3, 0xe6, 0xcf, 0x16, 0x43, 0x04, 
+0xc4, 0x9e, 0x64, 0x8c, 0x00, 0x9c, 0xcb, 0xce, 
+0xbf, 0xa2, 0xa2, 0x02, 0x73, 0xe6, 0xcc, 0x09, 
+0x7a, 0xfe, 0xe1, 0x87, 0x1f, 0x46, 0xdd, 0xb0, 
+0xd1, 0xc4, 0xc3, 0x6e, 0xb7, 0x63, 0xea, 0xd4, 
+0xa9, 0x98, 0x3b, 0x77, 0x6e, 0xc0, 0x0e, 0x94, 
+0xae, 0x5d, 0xbb, 0x62, 0xf1, 0xe2, 0xc5, 0xe8, 
+0xdb, 0xb7, 0x6f, 0x1c, 0xac, 0x33, 0x08, 0x17, 
+0xaf, 0x18, 0xf0, 0xf1, 0x5d, 0xfa, 0x9f, 0xf5, 
+0x29, 0x00, 0x2e, 0x04, 0x80, 0xba, 0xc5, 0xb1, 
+0xb7, 0x70, 0xd0, 0xef, 0xb5, 0xbd, 0x69, 0xf5, 
+0x84, 0x75, 0xfe, 0x40, 0x80, 0xdd, 0x00, 0xb5, 
+0x1d, 0x00, 0x1c, 0xed, 0xca, 0x5f, 0x3b, 0x63, 
+0x9b, 0x3b, 0x7f, 0x2e, 0x12, 0xf8, 0x2f, 0x4f, 
+0x14, 0x45, 0x8b, 0xc9, 0x64, 0xba, 0x40, 0xff, 
+0xda, 0x89, 0x5e, 0xb9, 0x1b, 0x69, 0x8c, 0x74, 
+0x40, 0x6c, 0x49, 0xb6, 0x08, 0xc0, 0xb9, 0xec, 
+0xfc, 0x01, 0x60, 0xde, 0xbc, 0x79, 0xa8, 0xa9, 
+0xa9, 0x09, 0x78, 0xae, 0x79, 0xf3, 0xe6, 0x18, 
+0x37, 0x6e, 0x5c, 0x8c, 0x2d, 0x0a, 0x8f, 0x55, 
+0xab, 0x56, 0xa1, 0x7b, 0xf7, 0xee, 0x78, 0xe3, 
+0x8d, 0x37, 0xfc, 0x9c, 0x7f, 0x6a, 0x6a, 0x2a, 
+0xa6, 0x4d, 0x9b, 0x86, 0x5d, 0xbb, 0x76, 0x19, 
+0xce, 0x3f, 0x81, 0xd1, 0x46, 0x02, 0xb8, 0xdf, 
+0x82, 0xbf, 0x10, 0x80, 0xbe, 0x0b, 0x80, 0x3f, 
+0x9f, 0x77, 0xc5, 0x05, 0x7a, 0x6d, 0xa7, 0xd3, 
+0x49, 0xb4, 0xb3, 0x00, 0x12, 0x19, 0x0a, 0xfc, 
+0xba, 0x01, 0x50, 0xa0, 0x07, 0xe8, 0x2f, 0x52, 
+0xdb, 0x06, 0xc1, 0xef, 0xd3, 0xe7, 0x4d, 0x9a, 
+0x37, 0x6f, 0xde, 0x16, 0x9a, 0xe9, 0x82, 0x40, 
+0xdd, 0x1f, 0x74, 0x9b, 0x36, 0x6d, 0xa2, 0x70, 
+0x09, 0x89, 0x8d, 0x21, 0x02, 0x62, 0x87, 0xd3, 
+0xe9, 0x8c, 0xb7, 0x09, 0x61, 0x73, 0xae, 0x3b, 
+0x7f, 0xb7, 0xdb, 0x1d, 0x72, 0xf5, 0x7f, 0xdf, 
+0x7d, 0xf7, 0xa1, 0x59, 0xb3, 0x66, 0x31, 0xb4, 
+0xa8, 0x7e, 0x4e, 0x9d, 0x3a, 0x85, 0xd1, 0xa3, 
+0x47, 0xe3, 0xd6, 0x5b, 0x6f, 0xc5, 0xf1, 0xe3, 
+0xc7, 0x7d, 0xce, 0x89, 0xa2, 0x88, 0xf1, 0xe3, 
+0xc7, 0xe3, 0xe0, 0xc1, 0x83, 0x78, 0xf6, 0xd9, 
+0x67, 0x13, 0xce, 0x76, 0x83, 0x5f, 0x09, 0xd2, 
+0x05, 0xe0, 0xb3, 0xfa, 0xd7, 0xdc, 0xaa, 0x04, 
+0xf2, 0x7d, 0x1c, 0xbe, 0x29, 0x90, 0x7e, 0x6b, 
+0xe0, 0x44, 0x47, 0xf4, 0xe6, 0x28, 0x00, 0xd4, 
+0xb5, 0x00, 0x0a, 0x82, 0xa0, 0x16, 0x00, 0xea, 
+0xc3, 0xf5, 0x16, 0x8b, 0xc5, 0x67, 0x95, 0xa5, 
+0x19, 0x8b, 0x08, 0xed, 0x2f, 0x2b, 0x35, 0x35, 
+0xb5, 0x9d, 0xfe, 0x8d, 0x5a, 0xb5, 0x6a, 0x15, 
+0x95, 0x0b, 0x48, 0x06, 0x8c, 0x74, 0x40, 0x6c, 
+0xa8, 0xad, 0xad, 0x8d, 0xb7, 0x09, 0x61, 0x71, 
+0xae, 0x3b, 0x7f, 0x00, 0xf8, 0xe0, 0x83, 0x0f, 
+0x50, 0x5c, 0x5c, 0x1c, 0xf0, 0x9c, 0x28, 0x8a, 
+0x98, 0x38, 0x71, 0x62, 0x8c, 0x2d, 0x0a, 0xcd, 
+0x3b, 0xef, 0xbc, 0x83, 0xc9, 0x93, 0x27, 0xa3, 
+0xa2, 0xa2, 0xc2, 0xe7, 0xfe, 0xe6, 0xcd, 0x9b, 
+0x63, 0xd4, 0xa8, 0x51, 0x98, 0x3c, 0x79, 0x32, 
+0xb2, 0xb3, 0xb3, 0xe3, 0x64, 0x9d, 0x41, 0xb8, 
+0x04, 0xc8, 0xff, 0xc3, 0x5b, 0xc0, 0xae, 0x0d, 
+0xe5, 0xfb, 0x15, 0x03, 0x06, 0x12, 0x03, 0x7c, 
+0x53, 0x20, 0x6d, 0x17, 0x40, 0xb2, 0x11, 0xb2, 
+0x06, 0x20, 0xd0, 0xea, 0xbf, 0x9e, 0xd7, 0x23, 
+0x8c, 0x31, 0x62, 0x36, 0x9b, 0x5b, 0xe8, 0x4f, 
+0x9c, 0xcb, 0x02, 0x00, 0x30, 0x44, 0x40, 0x2c, 
+0x90, 0x24, 0x09, 0x1e, 0x8f, 0x27, 0xa1, 0xa7, 
+0x4b, 0x1a, 0xce, 0xff, 0xd7, 0x51, 0xbf, 0xc1, 
+0x18, 0x35, 0x6a, 0x14, 0x3a, 0x76, 0xec, 0x18, 
+0x43, 0x8b, 0x82, 0x73, 0xea, 0xd4, 0x29, 0xdc, 
+0x79, 0xe7, 0x9d, 0x58, 0xbf, 0x7e, 0xbd, 0xdf, 
+0xb9, 0x09, 0x13, 0x26, 0x60, 0xf6, 0xec, 0xd9, 
+0x09, 0xb9, 0xfb, 0xa0, 0x41, 0x68, 0x02, 0x45, 
+0x01, 0xf8, 0x41, 0x29, 0x85, 0x20, 0x08, 0x7e, 
+0x91, 0x6d, 0x5d, 0x4d, 0x40, 0xec, 0x8d, 0x8e, 
+0x02, 0x51, 0xb9, 0x0a, 0x45, 0x51, 0x92, 0x2b, 
+0x19, 0x1b, 0x23, 0x8c, 0x74, 0x40, 0xf4, 0xd1, 
+0x6f, 0x11, 0x9b, 0x48, 0x18, 0xce, 0xbf, 0x8e, 
+0xd5, 0xab, 0x57, 0xa3, 0xa0, 0xa0, 0x20, 0xe8, 
+0xf9, 0xbf, 0xff, 0xfd, 0xef, 0x31, 0xb4, 0x26, 
+0x38, 0x8c, 0x31, 0x8c, 0x1d, 0x3b, 0x16, 0x5f, 
+0x7f, 0xfd, 0x35, 0xb2, 0xb3, 0xb3, 0xa1, 0xad, 
+0xf0, 0xee, 0xd9, 0xb3, 0xa7, 0xe1, 0xfc, 0x93, 
+0x14, 0xbd, 0xf3, 0x0f, 0xb0, 0xd2, 0xe7, 0x6d, 
+0xee, 0xe0, 0x07, 0x50, 0x17, 0x99, 0x0a, 0xb4, 
+0x2b, 0x20, 0xef, 0x92, 0xe3, 0x69, 0x80, 0x38, 
+0x5c, 0x52, 0xa3, 0xf1, 0x11, 0x00, 0xa9, 0xa9, 
+0xa9, 0x3e, 0x15, 0x2d, 0xa2, 0x28, 0xfa, 0xfc, 
+0x4c, 0x29, 0xad, 0xaf, 0xa2, 0x91, 0x11, 0x42, 
+0x98, 0x2c, 0xcb, 0x7e, 0xb1, 0xd8, 0x44, 0xfe, 
+0x62, 0x8e, 0x25, 0x86, 0x08, 0x88, 0x2e, 0x89, 
+0x9a, 0x06, 0x30, 0x9c, 0xff, 0xaf, 0xcc, 0x9a, 
+0x35, 0x2b, 0xe8, 0xb9, 0x2b, 0xae, 0xb8, 0x02, 
+0xfd, 0xfb, 0xf7, 0x8f, 0xa1, 0x35, 0xc1, 0x79, 
+0xf9, 0xe5, 0x97, 0x91, 0x91, 0x91, 0x81, 0x7b, 
+0xee, 0xb9, 0x07, 0xc7, 0x8f, 0x1f, 0x87, 0x24, 
+0x49, 0x00, 0xea, 0xda, 0xfb, 0x16, 0x2d, 0x5a, 
+0x64, 0x38, 0xff, 0x24, 0x24, 0x50, 0x0a, 0x40, 
+0xdb, 0x06, 0x88, 0x20, 0xe1, 0x7f, 0x5e, 0xec, 
+0x6e, 0x32, 0x99, 0x60, 0x36, 0x9b, 0x43, 0x7e, 
+0xf6, 0x2e, 0x97, 0x8b, 0x38, 0x9d, 0x4e, 0x52, 
+0x53, 0x53, 0x43, 0xec, 0x76, 0x3b, 0x29, 0x2b, 
+0x2b, 0x23, 0x15, 0x15, 0x15, 0x09, 0x29, 0x0c, 
+0x44, 0x6f, 0x8f, 0xa2, 0x6a, 0x9c, 0xd5, 0x6a, 
+0x65, 0x76, 0xbb, 0x1d, 0x26, 0x93, 0x89, 0x29, 
+0x8a, 0x02, 0x51, 0x14, 0x99, 0xbe, 0xba, 0x9a, 
+0x52, 0xca, 0x64, 0x59, 0x86, 0x24, 0x49, 0x8c, 
+0x10, 0xa2, 0x1e, 0xfc, 0xbc, 0x24, 0x49, 0x7e, 
+0xa5, 0xbd, 0xda, 0x7d, 0xb0, 0xcf, 0x75, 0x8c, 
+0x74, 0x40, 0xf4, 0x48, 0x44, 0xa1, 0x69, 0x38, 
+0xff, 0x5f, 0xd9, 0xba, 0x75, 0x2b, 0x36, 0x6c, 
+0xd8, 0x10, 0xf4, 0xfc, 0xff, 0xfd, 0xdf, 0xff, 
+0xc5, 0xd0, 0x9a, 0xe0, 0xec, 0xd8, 0xb1, 0x03, 
+0x4b, 0x96, 0x2c, 0xc1, 0xd1, 0xa3, 0x47, 0x71, 
+0xea, 0xd4, 0x29, 0x9f, 0x73, 0xb3, 0x66, 0xcd, 
+0x42, 0x6e, 0x6e, 0x6e, 0x9c, 0x2c, 0x33, 0x88, 
+0x14, 0xfa, 0x41, 0x40, 0xfa, 0x19, 0x00, 0xfa, 
+0x36, 0x40, 0xed, 0xcf, 0xb2, 0x2c, 0xab, 0x1b, 
+0xe3, 0xa5, 0xa4, 0xa4, 0x80, 0xa7, 0x0d, 0x4c, 
+0x26, 0x13, 0x64, 0x59, 0x86, 0xd7, 0x3f, 0xfa, 
+0xbc, 0x1f, 0x1f, 0x06, 0x94, 0x9f, 0x9f, 0x8f, 
+0x9c, 0x9c, 0x9c, 0x84, 0x68, 0x0f, 0xa4, 0x00, 
+0x70, 0xe4, 0xc8, 0x11, 0xd8, 0x6c, 0xb6, 0x7a, 
+0x0d, 0x72, 0xb9, 0x5c, 0x90, 0x24, 0x89, 0x01, 
+0xfe, 0xd1, 0x00, 0xad, 0x10, 0xa8, 0xaa, 0xaa, 
+0x3a, 0xa6, 0x7f, 0xee, 0x89, 0x13, 0x27, 0x50, 
+0x55, 0x55, 0x15, 0x29, 0xbb, 0x93, 0x1e, 0x23, 
+0x12, 0x10, 0x1d, 0x12, 0x2d, 0x02, 0x60, 0x38, 
+0x7f, 0x5f, 0x02, 0xad, 0xfe, 0x09, 0x21, 0xb8, 
+0xe5, 0x96, 0x5b, 0xb0, 0x71, 0xe3, 0x46, 0x0c, 
+0x1f, 0x3e, 0x3c, 0x0e, 0x56, 0xd5, 0xe1, 0x72, 
+0xb9, 0xb0, 0x73, 0xe7, 0x4e, 0xcc, 0x9f, 0x3f, 
+0x1f, 0xa3, 0x47, 0x8f, 0xc6, 0xf6, 0xed, 0xdb, 
+0x03, 0x3a, 0xff, 0x87, 0x1f, 0x7e, 0x38, 0x4e, 
+0x16, 0x1a, 0x44, 0x82, 0x20, 0xfb, 0x01, 0x40, 
+0x9b, 0x02, 0x40, 0x80, 0x59, 0x00, 0xc1, 0x3a, 
+0x00, 0xb4, 0x29, 0x00, 0x7d, 0x17, 0x80, 0x7e, 
+0x3f, 0x00, 0x4e, 0x7e, 0x7e, 0x3e, 0x99, 0x31, 
+0x63, 0x46, 0xdc, 0xa3, 0x02, 0x7e, 0x35, 0x00, 
+0xa5, 0xa5, 0xa5, 0x30, 0x9b, 0xcd, 0x3e, 0xce, 
+0x5d, 0x10, 0x04, 0x46, 0x29, 0x65, 0xdc, 0xe9, 
+0x6b, 0x6f, 0x65, 0x59, 0xd6, 0x47, 0x01, 0x98, 
+0xdd, 0x6e, 0x2f, 0x93, 0x24, 0xe9, 0x84, 0xfe, 
+0xb5, 0x43, 0xe5, 0xfd, 0xce, 0x45, 0x0c, 0x11, 
+0x10, 0x79, 0x1c, 0x0e, 0x87, 0x9f, 0xf2, 0x8e, 
+0x17, 0x86, 0xf3, 0xf7, 0xe5, 0xc0, 0x81, 0x03, 
+0x58, 0xbe, 0x7c, 0xb9, 0xfa, 0xb3, 0x20, 0x08, 
+0xb8, 0xeb, 0xae, 0xbb, 0x90, 0x97, 0x97, 0x87, 
+0x55, 0xab, 0x56, 0xc5, 0x6d, 0x4a, 0x68, 0x71, 
+0x71, 0x31, 0xa6, 0x4e, 0x9d, 0x8a, 0xb6, 0x6d, 
+0xdb, 0xe2, 0x37, 0xbf, 0xf9, 0x0d, 0xfe, 0xfc, 
+0xe7, 0x3f, 0xe3, 0xf0, 0xe1, 0xc3, 0x3e, 0x8f, 
+0xc9, 0xcc, 0xcc, 0xc4, 0xc2, 0x85, 0x0b, 0xf1, 
+0xc8, 0x23, 0x8f, 0xc4, 0xc5, 0x46, 0x83, 0xc8, 
+0x10, 0xac, 0x0b, 0x00, 0x9a, 0x22, 0xc0, 0x70, 
+0x3a, 0x00, 0x78, 0x14, 0x40, 0xbb, 0x59, 0x1e, 
+0x87, 0xa7, 0x00, 0xce, 0x3b, 0xef, 0x3c, 0x52, 
+0x59, 0x59, 0x49, 0xba, 0x76, 0xed, 0x8a, 0x9c, 
+0x9c, 0x9c, 0x80, 0xf6, 0xcc, 0x98, 0x31, 0x83, 
+0xc4, 0xb3, 0x85, 0x20, 0x64, 0x11, 0xa0, 0xc9, 
+0x64, 0x62, 0x81, 0xea, 0x00, 0xdc, 0x6e, 0xb7, 
+0xba, 0xe2, 0x0f, 0x24, 0x02, 0x08, 0x21, 0xcc, 
+0xe1, 0x70, 0xec, 0xd5, 0xbf, 0xde, 0x86, 0x0d, 
+0x1b, 0x1a, 0xf4, 0x65, 0x78, 0x2e, 0x60, 0x88, 
+0x80, 0xc8, 0x53, 0x59, 0x59, 0x19, 0x6f, 0x13, 
+0x0c, 0xe7, 0x1f, 0x80, 0xd9, 0xb3, 0x67, 0x43, 
+0x51, 0x14, 0xa4, 0xa4, 0xa4, 0xe0, 0xc1, 0x07, 
+0x1f, 0xc4, 0x81, 0x03, 0x07, 0xb0, 0x68, 0xd1, 
+0x22, 0xf4, 0xec, 0xd9, 0x33, 0x2e, 0xf6, 0xd8, 
+0xed, 0x76, 0x8c, 0x1f, 0x3f, 0x1e, 0x17, 0x5e, 
+0x78, 0x21, 0x5e, 0x7c, 0xf1, 0xc5, 0x80, 0x3b, 
+0x11, 0x5a, 0x2c, 0x16, 0x4c, 0x9e, 0x3c, 0x19, 
+0x07, 0x0f, 0x1e, 0xc4, 0x3d, 0xf7, 0xdc, 0x13, 
+0x07, 0x2b, 0x0d, 0xa2, 0x85, 0x3e, 0x05, 0x10, 
+0xee, 0x11, 0x28, 0x1a, 0x10, 0xaa, 0x08, 0xb0, 
+0xbc, 0xbc, 0x9c, 0x00, 0xa1, 0xb7, 0x05, 0x8e, 
+0x97, 0x08, 0xa0, 0x00, 0x90, 0x96, 0x96, 0xa6, 
+0x3a, 0xf9, 0x94, 0x94, 0x14, 0x06, 0xc0, 0x27, 
+0x0a, 0x20, 0x8a, 0x22, 0x13, 0x45, 0x91, 0x69, 
+0x23, 0x01, 0xb2, 0x2c, 0x33, 0x4a, 0xa9, 0x2a, 
+0x02, 0x14, 0x45, 0x61, 0x8c, 0x31, 0x85, 0x52, 
+0xaa, 0x10, 0x42, 0x94, 0xf2, 0xf2, 0xf2, 0xed, 
+0xfa, 0x37, 0x2b, 0x29, 0x29, 0xc1, 0xee, 0xdd, 
+0xbb, 0x63, 0x71, 0x5d, 0x49, 0x85, 0x21, 0x02, 
+0x22, 0x4b, 0xbc, 0x05, 0x80, 0xe1, 0xfc, 0xfd, 
+0x39, 0x7d, 0xfa, 0x34, 0x96, 0x2f, 0x5f, 0x8e, 
+0xc7, 0x1e, 0x7b, 0x0c, 0x47, 0x8e, 0x1c, 0xc1, 
+0xeb, 0xaf, 0xbf, 0x8e, 0x4e, 0x9d, 0x3a, 0xc5, 
+0xcd, 0x9e, 0x82, 0x82, 0x02, 0xf4, 0xef, 0xdf, 
+0x1f, 0x6f, 0xbd, 0xf5, 0x56, 0xd0, 0x11, 0xd2, 
+0xa3, 0x47, 0x8f, 0xc6, 0x4f, 0x3f, 0xfd, 0x84, 
+0x97, 0x5e, 0x7a, 0x29, 0xe8, 0x46, 0x2f, 0x06, 
+0xc9, 0x87, 0x3e, 0x05, 0xc0, 0x77, 0x01, 0xc4, 
+0xaf, 0x6d, 0x80, 0x84, 0x52, 0x4a, 0x04, 0x41, 
+0x50, 0x6f, 0xb5, 0x07, 0xdf, 0x14, 0x08, 0xa8, 
+0x8b, 0x06, 0xe8, 0xa7, 0x02, 0x06, 0x1a, 0x08, 
+0x54, 0x56, 0x56, 0x46, 0x8a, 0x8b, 0x8b, 0xc9, 
+0xd5, 0x57, 0x5f, 0x8d, 0x51, 0xa3, 0x46, 0x05, 
+0xb3, 0x2b, 0xe6, 0x22, 0xc0, 0x67, 0x0e, 0x40, 
+0x55, 0x55, 0x15, 0x13, 0x45, 0x91, 0x58, 0x2c, 
+0x16, 0x26, 0x49, 0x12, 0x4c, 0x26, 0x13, 0xab, 
+0xaa, 0xaa, 0xe2, 0x45, 0x80, 0xcc, 0x64, 0x32, 
+0x31, 0x00, 0x4c, 0x51, 0x14, 0xa6, 0x28, 0x0a, 
+0x93, 0x24, 0x89, 0x09, 0x82, 0xa0, 0x30, 0xc6, 
+0x14, 0xc6, 0x98, 0xe2, 0xbd, 0x5f, 0x61, 0x8c, 
+0x29, 0xa7, 0x4f, 0x9f, 0x3e, 0xdc, 0xb6, 0x6d, 
+0xdb, 0x02, 0x8b, 0xc5, 0xd2, 0x5d, 0xfb, 0x1e, 
+0x6b, 0xd7, 0xae, 0x45, 0x4e, 0x4e, 0x8e, 0x51, 
+0x41, 0xab, 0xc3, 0x28, 0x0c, 0x8c, 0x1c, 0x95, 
+0x95, 0x95, 0x60, 0x8c, 0xc5, 0x65, 0x03, 0x16, 
+0xc3, 0xf9, 0x07, 0xa6, 0xb6, 0xb6, 0x16, 0xfb, 
+0xf7, 0xef, 0xc7, 0x79, 0xe7, 0x9d, 0x17, 0x6f, 
+0x53, 0xb0, 0x7c, 0xf9, 0x72, 0xdc, 0x7d, 0xf7, 
+0xdd, 0x41, 0xc7, 0x10, 0x5f, 0x76, 0xd9, 0x65, 
+0x98, 0x3d, 0x7b, 0x76, 0x93, 0xff, 0x4c, 0xce, 
+0x45, 0x02, 0xa5, 0x00, 0x50, 0xb7, 0x10, 0xe6, 
+0x3b, 0xda, 0xfa, 0xa4, 0x02, 0xf8, 0xad, 0xa2, 
+0x28, 0x14, 0x00, 0xdf, 0xf8, 0x8e, 0x28, 0x8a, 
+0x42, 0x4c, 0x26, 0x93, 0x2a, 0x08, 0x08, 0x21, 
+0xc4, 0x6c, 0x36, 0x93, 0xda, 0xda, 0x5a, 0x75, 
+0x30, 0x10, 0xff, 0x77, 0x7a, 0x7a, 0xba, 0xba, 
+0x98, 0xde, 0xbf, 0x7f, 0x3f, 0x29, 0x2e, 0x2e, 
+0xc6, 0xa8, 0x51, 0xa3, 0x58, 0xa0, 0x94, 0xb8, 
+0xb7, 0x10, 0x31, 0x66, 0x05, 0x82, 0x6a, 0x0a, 
+0x40, 0x6b, 0x24, 0x00, 0x38, 0x1c, 0x0e, 0x66, 
+0xb7, 0xdb, 0x01, 0xd4, 0x45, 0x00, 0x04, 0x41, 
+0x60, 0x1e, 0x8f, 0x87, 0x79, 0x3c, 0x1e, 0x46, 
+0x29, 0x65, 0xa2, 0x28, 0x2a, 0x94, 0x52, 0x26, 
+0x49, 0x92, 0x9a, 0x02, 0xf0, 0xae, 0xfe, 0x19, 
+0x21, 0x44, 0x21, 0x84, 0x28, 0xc5, 0xc5, 0xc5, 
+0x2b, 0xf5, 0x6f, 0x58, 0x5e, 0x5e, 0x8e, 0x4f, 
+0x3e, 0xf9, 0x24, 0xea, 0x17, 0x96, 0x8c, 0x18, 
+0x91, 0x80, 0xc8, 0x20, 0xcb, 0x72, 0xd0, 0x2f, 
+0xf7, 0x68, 0x62, 0x38, 0xff, 0xe0, 0x5c, 0x78, 
+0xe1, 0x85, 0x09, 0xe1, 0xfc, 0x77, 0xef, 0xde, 
+0x8d, 0x3b, 0xef, 0xbc, 0x33, 0xe0, 0xff, 0x8f, 
+0x8b, 0x2e, 0xba, 0x08, 0x4b, 0x96, 0x2c, 0xc1, 
+0xa6, 0x4d, 0x9b, 0xce, 0x89, 0xcf, 0x04, 0xa8, 
+0x2b, 0x7c, 0xfc, 0xf1, 0xc7, 0x1f, 0xe3, 0x6d, 
+0x46, 0x5c, 0xd0, 0xee, 0x05, 0xc0, 0x9d, 0x7f, 
+0xa8, 0xb0, 0xbf, 0x2c, 0xcb, 0x54, 0xdf, 0x09, 
+0xc0, 0x0f, 0xa0, 0x2e, 0x0d, 0x90, 0x92, 0x92, 
+0x42, 0xd2, 0xd3, 0xd3, 0x61, 0xb3, 0xd9, 0x88, 
+0xd3, 0xe9, 0x24, 0x40, 0xdd, 0xa6, 0x40, 0x76, 
+0xbb, 0xdd, 0x47, 0x79, 0x14, 0x14, 0x14, 0x90, 
+0xe9, 0xd3, 0xa7, 0xf3, 0xf7, 0xd7, 0xdb, 0x15, 
+0xb3, 0x95, 0x8b, 0xd8, 0xae, 0x5d, 0x3b, 0x56, 
+0x56, 0x56, 0xa6, 0x1d, 0xe3, 0xcb, 0x28, 0xa5, 
+0xda, 0x56, 0x40, 0xc6, 0xea, 0x96, 0xf7, 0x8c, 
+0xa3, 0x28, 0x8a, 0xc2, 0x57, 0xff, 0x00, 0x14, 
+0x00, 0x8a, 0x24, 0x49, 0x0a, 0x63, 0x4c, 0x11, 
+0x04, 0x41, 0xe6, 0xf7, 0x95, 0x94, 0x94, 0x1c, 
+0x6c, 0xdb, 0xb6, 0x6d, 0x41, 0x4a, 0x4a, 0x8a, 
+0x4f, 0x14, 0x20, 0x2f, 0x2f, 0x0f, 0x17, 0x5c, 
+0x70, 0x01, 0xae, 0xb8, 0xe2, 0x8a, 0x58, 0x5d, 
+0x67, 0xd2, 0x60, 0x44, 0x02, 0x22, 0x43, 0x65, 
+0x65, 0x65, 0x4c, 0xe7, 0xb1, 0x1b, 0xce, 0x3f, 
+0xf1, 0x39, 0x73, 0xe6, 0x0c, 0x46, 0x8e, 0x1c, 
+0x19, 0xb0, 0x55, 0xd4, 0x6a, 0xb5, 0xe2, 0xeb, 
+0xaf, 0xbf, 0xc6, 0xf9, 0xe7, 0x9f, 0x1f, 0x07, 
+0xcb, 0x62, 0xcf, 0xfe, 0xfd, 0xfb, 0xf1, 0xf6, 
+0xdb, 0x6f, 0xa3, 0x45, 0x8b, 0x16, 0x09, 0xd3, 
+0x7a, 0x19, 0x2b, 0x82, 0xf8, 0x57, 0xc2, 0x18, 
+0xa3, 0xda, 0x43, 0x51, 0x14, 0x4a, 0x08, 0xa1, 
+0xbc, 0x3d, 0xd0, 0x9b, 0x12, 0xa0, 0x82, 0x20, 
+0x10, 0x45, 0x51, 0x88, 0x24, 0x49, 0x6a, 0xda, 
+0x00, 0xde, 0xd4, 0x01, 0x1f, 0x0f, 0x2c, 0xcb, 
+0x32, 0x69, 0xdd, 0xba, 0x35, 0x14, 0x45, 0x21, 
+0xde, 0xee, 0x37, 0xad, 0x9f, 0x65, 0x00, 0xb0, 
+0x64, 0xc9, 0x12, 0x32, 0x7d, 0xfa, 0x74, 0x06, 
+0xc0, 0x2f, 0x62, 0x19, 0xab, 0x48, 0x00, 0xdd, 
+0xb9, 0x73, 0x27, 0x32, 0x33, 0x33, 0x99, 0xb6, 
+0x15, 0x90, 0x77, 0x02, 0x98, 0xcd, 0x66, 0xc6, 
+0x0b, 0x01, 0x83, 0xd5, 0x01, 0x78, 0x6b, 0x01, 
+0x14, 0x41, 0x10, 0x14, 0x4a, 0xa9, 0xc2, 0x53, 
+0x00, 0x8c, 0x31, 0x19, 0x80, 0x7c, 0xe4, 0xc8, 
+0x91, 0xff, 0x32, 0xc6, 0xfc, 0xfe, 0xe2, 0x56, 
+0xaf, 0x5e, 0x8d, 0xa3, 0x47, 0x8f, 0x46, 0xfb, 
+0xfa, 0x92, 0x12, 0x23, 0x12, 0x70, 0xf6, 0xe8, 
+0x67, 0xb6, 0x47, 0x13, 0xc3, 0xf9, 0x27, 0x07, 
+0xf7, 0xdd, 0x77, 0x9f, 0x5f, 0x75, 0x3f, 0xe7, 
+0xd1, 0x47, 0x1f, 0x6d, 0xf2, 0xce, 0xdf, 0xed, 
+0x76, 0xe3, 0xa3, 0x8f, 0x3e, 0xc2, 0xe0, 0xc1, 
+0x83, 0x31, 0x78, 0xf0, 0x60, 0x0c, 0x1d, 0x3a, 
+0x14, 0x8f, 0x3d, 0xf6, 0x18, 0xb4, 0x3b, 0xbc, 
+0x36, 0x75, 0x02, 0x39, 0x7f, 0xaf, 0x93, 0x57, 
+0xd3, 0x00, 0xda, 0xe1, 0x3f, 0x5e, 0xa7, 0x4e, 
+0x29, 0xa5, 0x54, 0x00, 0x49, 0xe9, 0x6f, 0x00, 
+0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x1b, 
+0x09, 0xe0, 0x75, 0x00, 0x26, 0x93, 0x89, 0x98, 
+0xcd, 0x66, 0xe2, 0x76, 0xbb, 0xa9, 0x7e, 0x22, 
+0xa0, 0xc3, 0xe1, 0x20, 0xb5, 0xb5, 0xb5, 0x24, 
+0x2b, 0x2b, 0x0b, 0x19, 0x19, 0x19, 0xea, 0x1b, 
+0xf3, 0x79, 0x00, 0x40, 0x9d, 0x08, 0xe0, 0xed, 
+0x80, 0xf1, 0x88, 0x04, 0xa8, 0x29, 0x00, 0x5e, 
+0x08, 0x58, 0x55, 0x55, 0xc5, 0x52, 0x52, 0x52, 
+0x98, 0xc5, 0x62, 0x61, 0x00, 0xe0, 0x74, 0x3a, 
+0x99, 0xcb, 0xe5, 0x62, 0x6e, 0xb7, 0x9b, 0xb9, 
+0xdd, 0x6e, 0xe6, 0xf1, 0x78, 0x98, 0x24, 0x49, 
+0x4c, 0x14, 0x45, 0x45, 0x10, 0x04, 0x45, 0x10, 
+0x04, 0x45, 0x0b, 0xa5, 0x54, 0xa1, 0x94, 0xca, 
+0x84, 0x10, 0x85, 0x52, 0x2a, 0xdb, 0xed, 0xf6, 
+0x53, 0x45, 0x45, 0x45, 0xef, 0xeb, 0xdf, 0x58, 
+0x96, 0x65, 0x2c, 0x5a, 0xb4, 0x28, 0xe1, 0xfa, 
+0xb6, 0x13, 0x05, 0x43, 0x04, 0x9c, 0x1d, 0x4e, 
+0xa7, 0x33, 0x26, 0x73, 0x27, 0x0c, 0xe7, 0x9f, 
+0x1c, 0x7c, 0xf7, 0xdd, 0x77, 0x41, 0x53, 0x8f, 
+0x1d, 0x3b, 0x76, 0xc4, 0xa3, 0x8f, 0x3e, 0x1a, 
+0x63, 0x8b, 0x62, 0xc7, 0xe1, 0xc3, 0x87, 0x31, 
+0x75, 0xea, 0x54, 0x74, 0xec, 0xd8, 0x11, 0x63, 
+0xc6, 0x8c, 0x81, 0xcb, 0xe5, 0xc2, 0x8e, 0x1d, 
+0x3b, 0x30, 0x64, 0xc8, 0x90, 0x78, 0x9b, 0x16, 
+0x57, 0x34, 0xc5, 0x80, 0x3c, 0xd7, 0x4f, 0x19, 
+0x63, 0x94, 0xd6, 0x79, 0x7d, 0xaa, 0x28, 0x8a, 
+0x36, 0x22, 0x40, 0x14, 0x45, 0xa1, 0xde, 0x83, 
+0x48, 0x92, 0x44, 0x15, 0x45, 0x21, 0x1e, 0x8f, 
+0x87, 0xca, 0xb2, 0x4c, 0xcc, 0x66, 0x33, 0x31, 
+0x9b, 0xcd, 0xc4, 0x62, 0xb1, 0xa8, 0x69, 0x00, 
+0xde, 0x0e, 0x58, 0x5d, 0x5d, 0x4d, 0x00, 0x20, 
+0x33, 0x33, 0x93, 0xf0, 0x28, 0x40, 0x51, 0x51, 
+0x11, 0x29, 0x28, 0x28, 0x50, 0x1d, 0x7c, 0xbc, 
+0x44, 0x80, 0x4f, 0x1b, 0x60, 0xa0, 0x3a, 0x00, 
+0x6d, 0x04, 0x40, 0x10, 0x04, 0x66, 0x32, 0x99, 
+0x14, 0x51, 0x14, 0x7d, 0x9c, 0xbe, 0x20, 0x08, 
+0x8a, 0x28, 0x8a, 0xb2, 0x28, 0x8a, 0x32, 0x00, 
+0xf5, 0x60, 0x8c, 0xc9, 0x8c, 0x31, 0xf9, 0xd8, 
+0xb1, 0x63, 0x3f, 0x54, 0x56, 0x56, 0x7e, 0xa3, 
+0x7f, 0xf3, 0x33, 0x67, 0xce, 0xe0, 0xc3, 0x0f, 
+0x3f, 0xf4, 0xbb, 0x68, 0x83, 0x3a, 0x0c, 0x11, 
+0x70, 0x76, 0xe8, 0x87, 0xb8, 0x44, 0x1a, 0xc3, 
+0xf9, 0x27, 0x07, 0x8c, 0x31, 0x4c, 0x9e, 0x3c, 
+0x39, 0xe8, 0xf9, 0x17, 0x5f, 0x7c, 0x11, 0xa9, 
+0xa9, 0xa9, 0x31, 0xb4, 0x28, 0x36, 0x1c, 0x3d, 
+0x7a, 0x14, 0xbf, 0xfd, 0xed, 0x6f, 0xd1, 0xa5, 
+0x4b, 0x17, 0xbc, 0xf8, 0xe2, 0x8b, 0x38, 0x7d, 
+0xfa, 0x34, 0xee, 0xbb, 0xef, 0x3e, 0x7c, 0xfd, 
+0xf5, 0xd7, 0x68, 0xdb, 0xb6, 0x6d, 0xbc, 0xcd, 
+0x8b, 0x1b, 0x01, 0xba, 0x00, 0xa8, 0xd6, 0xf9, 
+0xeb, 0xd3, 0x00, 0xfc, 0xe0, 0x91, 0x00, 0x0e, 
+0x17, 0x01, 0x7c, 0xf5, 0xef, 0x72, 0xb9, 0x28, 
+0x8f, 0x00, 0xd4, 0xd4, 0xd4, 0xd0, 0xd4, 0xd4, 
+0x54, 0xd2, 0xb2, 0x65, 0x4b, 0xd4, 0xd6, 0xd6, 
+0x92, 0x9a, 0x9a, 0x1a, 0x75, 0x26, 0x40, 0x56, 
+0x56, 0x56, 0x40, 0xa7, 0x1e, 0x0f, 0x11, 0x40, 
+0xb3, 0xb2, 0xb2, 0x58, 0x51, 0x51, 0x91, 0xfa, 
+0x8e, 0x36, 0x9b, 0x8d, 0xa5, 0xa6, 0xa6, 0xb2, 
+0x9a, 0x9a, 0x1a, 0xc6, 0x5b, 0x01, 0xb9, 0x08, 
+0xb0, 0x58, 0x2c, 0x8a, 0x36, 0x0d, 0xc0, 0xa3, 
+0x00, 0x3a, 0x31, 0x20, 0x53, 0x4a, 0x7d, 0x0e, 
+0x00, 0xd2, 0xbe, 0x7d, 0xfb, 0x96, 0xba, 0x5c, 
+0xae, 0x23, 0x7a, 0x03, 0x0a, 0x0b, 0x0b, 0xb1, 
+0x6e, 0xdd, 0xba, 0x68, 0x5d, 0x5f, 0xd2, 0x63, 
+0x88, 0x80, 0xc6, 0x53, 0x59, 0x59, 0x09, 0x97, 
+0xcb, 0x15, 0x95, 0xd7, 0xae, 0xae, 0xae, 0x36, 
+0x9c, 0x7f, 0x92, 0xb0, 0x78, 0xf1, 0x62, 0x6c, 
+0xdf, 0xee, 0xd7, 0x95, 0x0c, 0xa0, 0xee, 0xef, 
+0xeb, 0xf7, 0xbf, 0xff, 0x7d, 0x8c, 0x2d, 0x8a, 
+0x3e, 0x0b, 0x17, 0x2e, 0x44, 0xcf, 0x9e, 0x3d, 
+0xf1, 0xbf, 0xff, 0xfd, 0x0f, 0x8c, 0x31, 0x98, 
+0x4c, 0x26, 0xbc, 0xf1, 0xc6, 0x1b, 0x78, 0xeb, 
+0xad, 0xb7, 0xce, 0xa9, 0x90, 0x7f, 0x38, 0x04, 
+0xca, 0xfd, 0xeb, 0x6a, 0x00, 0xd4, 0x88, 0x80, 
+0x2c, 0xcb, 0xea, 0xc1, 0x11, 0x04, 0x81, 0x0a, 
+0x82, 0x40, 0xcd, 0x66, 0x33, 0x91, 0x24, 0x89, 
+0x38, 0x9d, 0x4e, 0xca, 0xa7, 0x02, 0x9e, 0x39, 
+0x73, 0x86, 0x36, 0x6b, 0xd6, 0x8c, 0x9c, 0x77, 
+0xde, 0x79, 0x04, 0xf8, 0x75, 0x26, 0x00, 0x17, 
+0x01, 0x05, 0x05, 0x05, 0x24, 0x3f, 0x3f, 0x3f, 
+0x6e, 0x91, 0x00, 0x35, 0x02, 0x90, 0x99, 0x99, 
+0xc9, 0xca, 0xca, 0xca, 0xfc, 0xd2, 0x00, 0x66, 
+0xb3, 0x99, 0x69, 0xd3, 0x00, 0xb2, 0x2c, 0x2b, 
+0x7a, 0xb8, 0x10, 0x10, 0x45, 0x51, 0xe6, 0x35, 
+0x00, 0xf8, 0x35, 0x12, 0x20, 0x79, 0x45, 0x80, 
+0xbb, 0xb0, 0xb0, 0x70, 0x81, 0xa2, 0x28, 0x7e, 
+0xe5, 0xb7, 0x5f, 0x7e, 0xf9, 0x25, 0x36, 0x6f, 
+0xde, 0x1c, 0x8d, 0xeb, 0x6b, 0x12, 0x18, 0x22, 
+0xa0, 0xf1, 0x44, 0x63, 0x0f, 0x8a, 0xea, 0xea, 
+0x6a, 0xec, 0xdf, 0xbf, 0xdf, 0x70, 0xfe, 0x49, 
+0x80, 0xcb, 0xe5, 0xc2, 0xb4, 0x69, 0xd3, 0x02, 
+0x9e, 0x23, 0x84, 0xe0, 0xd5, 0x57, 0x5f, 0x8d, 
+0xb1, 0x45, 0xd1, 0xa5, 0xbc, 0xbc, 0x1c, 0x23, 
+0x46, 0x8c, 0xc0, 0xb8, 0x71, 0xe3, 0xd4, 0x14, 
+0x58, 0xeb, 0xd6, 0xad, 0xb1, 0x6e, 0xdd, 0x3a, 
+0x3c, 0xf0, 0xc0, 0x03, 0x71, 0xb6, 0x2e, 0xb1, 
+0xe0, 0x91, 0x00, 0xbd, 0x00, 0x60, 0x8c, 0x51, 
+0x4d, 0xde, 0x9f, 0x8b, 0x01, 0x41, 0xbb, 0xfa, 
+0xe7, 0x22, 0x40, 0x92, 0x24, 0xca, 0x8b, 0xfe, 
+0x5c, 0x2e, 0x17, 0xa5, 0x94, 0x52, 0x9e, 0x06, 
+0x70, 0xbb, 0xdd, 0x3e, 0xb5, 0x00, 0xe9, 0xe9, 
+0xe9, 0xa4, 0xb2, 0xb2, 0x52, 0x4d, 0x03, 0xb4, 
+0x6b, 0xd7, 0x8e, 0x00, 0x75, 0xdb, 0x5f, 0x87, 
+0x23, 0x02, 0xa2, 0x81, 0xdf, 0x24, 0x40, 0x6d, 
+0x1a, 0xa0, 0xbc, 0xbc, 0x3c, 0x60, 0x1a, 0xc0, 
+0x6c, 0x36, 0x2b, 0x3c, 0x15, 0x20, 0x8a, 0xa2, 
+0xc2, 0x43, 0xfd, 0xbc, 0xf0, 0x0f, 0x80, 0x24, 
+0x08, 0x82, 0x24, 0x08, 0x82, 0xe4, 0xbd, 0x4f, 
+0x02, 0x20, 0xd5, 0xd4, 0xd4, 0x94, 0x1e, 0x3b, 
+0x76, 0x6c, 0x11, 0xbc, 0x55, 0x90, 0x1c, 0xc6, 
+0x18, 0x96, 0x2f, 0x5f, 0x6e, 0x88, 0x80, 0x10, 
+0x18, 0x22, 0xa0, 0x71, 0x94, 0x96, 0x96, 0x46, 
+0x74, 0xfa, 0xa4, 0xe1, 0xfc, 0x93, 0x8b, 0x39, 
+0x73, 0xe6, 0xe0, 0xc8, 0x91, 0x23, 0x01, 0xcf, 
+0x8d, 0x1d, 0x3b, 0x36, 0x61, 0x76, 0x1e, 0x8c, 
+0x04, 0x85, 0x85, 0x85, 0x18, 0x38, 0x70, 0xa0, 
+0xcf, 0xb8, 0xe5, 0x7e, 0xfd, 0xfa, 0x61, 0xc7, 
+0x8e, 0x1d, 0xb8, 0xf2, 0xca, 0x2b, 0xe3, 0x68, 
+0x59, 0xe2, 0xa1, 0x5b, 0x50, 0x13, 0x00, 0x94, 
+0x10, 0xc2, 0x1d, 0xbe, 0xc0, 0x18, 0x13, 0x14, 
+0x45, 0xe1, 0x07, 0x25, 0x84, 0x50, 0x59, 0x96, 
+0x05, 0x59, 0x96, 0x69, 0x5d, 0xa9, 0x9b, 0x3f, 
+0x3c, 0x1d, 0xe0, 0x74, 0x3a, 0xa9, 0xd3, 0xe9, 
+0xa4, 0x82, 0x20, 0x50, 0xab, 0xd5, 0x4a, 0xb4, 
+0xb5, 0x00, 0xe9, 0xe9, 0xe9, 0x84, 0xd7, 0x02, 
+0x14, 0x17, 0x17, 0x93, 0x76, 0xed, 0xda, 0xa9, 
+0xb5, 0x00, 0xf5, 0x89, 0x80, 0x68, 0x44, 0x01, 
+0x28, 0x00, 0x68, 0xd3, 0x00, 0xbc, 0x1b, 0x20, 
+0x35, 0x35, 0x55, 0x8d, 0x00, 0xf0, 0x28, 0x80, 
+0x2c, 0xcb, 0x0a, 0x2f, 0x06, 0xe4, 0xab, 0x7f, 
+0x00, 0xea, 0xaa, 0x3f, 0x50, 0x2d, 0x80, 0x28, 
+0x8a, 0x92, 0x20, 0x08, 0x12, 0xa5, 0x54, 0x02, 
+0x20, 0x9d, 0x38, 0x71, 0xe2, 0xc7, 0xf2, 0xf2, 
+0xf2, 0x2f, 0xf5, 0x86, 0x30, 0xc6, 0xb0, 0x6c, 
+0xd9, 0x32, 0x7c, 0xff, 0xfd, 0xf7, 0x91, 0xbe, 
+0xc6, 0x26, 0x83, 0x21, 0x02, 0x1a, 0x8e, 0x2c, 
+0xcb, 0x28, 0x29, 0x29, 0x89, 0xc8, 0x6b, 0x19, 
+0xce, 0x3f, 0xb9, 0x28, 0x2d, 0x2d, 0xc5, 0xb3, 
+0xcf, 0x3e, 0x1b, 0xf0, 0x9c, 0xcd, 0x66, 0xc3, 
+0xf3, 0xcf, 0x3f, 0x1f, 0x63, 0x8b, 0xa2, 0xc7, 
+0x57, 0x5f, 0x7d, 0x85, 0x81, 0x03, 0x07, 0xe2, 
+0xc0, 0x81, 0x03, 0xea, 0x7d, 0x77, 0xdd, 0x75, 
+0x17, 0x36, 0x6c, 0xd8, 0x80, 0x8e, 0x1d, 0x3b, 
+0xc6, 0xd1, 0xb2, 0xc4, 0x22, 0xd0, 0x46, 0x40, 
+0xdc, 0xe9, 0x03, 0xa0, 0x8a, 0xa2, 0x08, 0x3c, 
+0xdc, 0xcf, 0xff, 0x4d, 0x08, 0x11, 0x64, 0x59, 
+0x16, 0xbc, 0x29, 0x00, 0x41, 0x92, 0x24, 0x81, 
+0xaf, 0xfe, 0x25, 0x49, 0xa2, 0x6e, 0xb7, 0x5b, 
+0xf0, 0x78, 0x3c, 0xaa, 0x10, 0xe0, 0xc5, 0x80, 
+0xbc, 0x1b, 0x20, 0x35, 0x35, 0x95, 0xd8, 0x6c, 
+0x36, 0x52, 0x5b, 0x5b, 0x4b, 0xaa, 0xab, 0xab, 
+0x49, 0x65, 0x65, 0xa5, 0x8f, 0x08, 0x00, 0x80, 
+0x9c, 0x9c, 0x9c, 0xb8, 0x88, 0x00, 0xda, 0xbd, 
+0x7b, 0x77, 0xf5, 0xd5, 0x33, 0x33, 0x33, 0x59, 
+0xa0, 0x6e, 0x00, 0x87, 0xc3, 0xc1, 0x52, 0x53, 
+0x53, 0x15, 0x51, 0x14, 0x59, 0x4a, 0x4a, 0x8a, 
+0x62, 0x36, 0x9b, 0x15, 0x4a, 0x29, 0xd3, 0x46, 
+0x01, 0x44, 0x51, 0x94, 0xb5, 0x91, 0x00, 0xed, 
+0xca, 0x9f, 0x1f, 0x94, 0x52, 0x89, 0x52, 0x2a, 
+0xed, 0xdb, 0xb7, 0xef, 0x33, 0xbb, 0xdd, 0xbe, 
+0x23, 0x90, 0x41, 0xcb, 0x97, 0x2f, 0x37, 0x44, 
+0x40, 0x08, 0x0c, 0x11, 0xd0, 0x70, 0x8a, 0x8a, 
+0x8a, 0xa0, 0xdf, 0xd2, 0xba, 0xa1, 0x18, 0xce, 
+0x3f, 0xf9, 0x98, 0x32, 0x65, 0x4a, 0xc0, 0xf9, 
+0xfe, 0x00, 0x30, 0x75, 0xea, 0x54, 0x64, 0x65, 
+0x65, 0xc5, 0xd8, 0xa2, 0xe8, 0x30, 0x77, 0xee, 
+0x5c, 0x0c, 0x1b, 0x36, 0xcc, 0xe7, 0x5a, 0x9f, 
+0x7e, 0xfa, 0x69, 0x2c, 0x5a, 0xb4, 0x08, 0x56, 
+0xab, 0x35, 0x8e, 0x96, 0x25, 0x36, 0x9a, 0x14, 
+0x80, 0xc0, 0xc3, 0xfc, 0x7c, 0xf5, 0xcf, 0x18, 
+0xe3, 0x42, 0x40, 0x90, 0x65, 0x59, 0xf0, 0xa6, 
+0x05, 0x04, 0x4a, 0x29, 0x05, 0x20, 0x10, 0x42, 
+0xd4, 0x83, 0xdf, 0x07, 0x40, 0xf0, 0x78, 0x3c, 
+0x94, 0x47, 0x01, 0x78, 0x6d, 0x80, 0xdd, 0x6e, 
+0xa7, 0x76, 0xbb, 0x9d, 0x0a, 0x82, 0x40, 0xb5, 
+0x05, 0x81, 0x40, 0xdd, 0x88, 0x60, 0xde, 0x16, 
+0x18, 0x0f, 0x11, 0x10, 0x70, 0x33, 0xa0, 0x8a, 
+0x8a, 0x0a, 0x06, 0xd4, 0x0d, 0x05, 0xe2, 0xc5, 
+0x80, 0x7c, 0x26, 0x80, 0xcb, 0xe5, 0x52, 0x57, 
+0xff, 0xda, 0x28, 0x00, 0x74, 0xd5, 0xff, 0x26, 
+0x93, 0x49, 0x12, 0x04, 0x41, 0x16, 0x04, 0x41, 
+0x15, 0x00, 0x84, 0x10, 0x0f, 0xbf, 0xdd, 0xb3, 
+0x67, 0xcf, 0x7f, 0xab, 0xaa, 0xaa, 0x82, 0x8a, 
+0x80, 0x4d, 0x9b, 0x36, 0x45, 0xea, 0x1a, 0x9b, 
+0x1c, 0x86, 0x08, 0x68, 0x18, 0xb2, 0x2c, 0xe3, 
+0xd8, 0x31, 0xbf, 0x1d, 0xaa, 0xc3, 0xc6, 0x70, 
+0xfe, 0xc9, 0xc7, 0x96, 0x2d, 0x5b, 0xb0, 0x60, 
+0xc1, 0x82, 0x80, 0xe7, 0xce, 0x3f, 0xff, 0xfc, 
+0x26, 0x31, 0xfc, 0x46, 0x96, 0x65, 0x3c, 0xf4, 
+0xd0, 0x43, 0x78, 0xf0, 0xc1, 0x07, 0x7d, 0x76, 
+0xc0, 0x7c, 0xe6, 0x99, 0x67, 0xf0, 0xc4, 0x13, 
+0x4f, 0xc4, 0xd1, 0xb2, 0xc4, 0x47, 0xe7, 0x43, 
+0xa9, 0xde, 0xe9, 0x13, 0x42, 0xd4, 0x34, 0x00, 
+0x21, 0x44, 0x00, 0x20, 0x78, 0x53, 0x00, 0xea, 
+0xcf, 0x92, 0x24, 0x09, 0x1e, 0x8f, 0x47, 0xf0, 
+0x78, 0x3c, 0x82, 0x24, 0x49, 0x54, 0x1b, 0x05, 
+0x10, 0x04, 0x81, 0x3a, 0x9d, 0x4e, 0xea, 0x70, 
+0x38, 0x7c, 0x52, 0x01, 0xbc, 0x20, 0xb0, 0xa6, 
+0xa6, 0x86, 0x64, 0x66, 0x66, 0xaa, 0x05, 0x81, 
+0xf1, 0x12, 0x01, 0x74, 0xc9, 0x92, 0x25, 0xf0, 
+0x1a, 0xc1, 0x8a, 0x8a, 0x8a, 0x18, 0x8f, 0x02, 
+0xd8, 0x6c, 0x36, 0xa6, 0x8f, 0x02, 0xc8, 0xb2, 
+0xac, 0xa4, 0xa4, 0xa4, 0x28, 0xa2, 0x28, 0x32, 
+0xb3, 0xd9, 0xac, 0x98, 0xcd, 0x66, 0x9f, 0x42, 
+0x40, 0x93, 0xc9, 0x24, 0xf3, 0x14, 0x80, 0x26, 
+0x02, 0x20, 0x8b, 0xa2, 0x28, 0xf1, 0x54, 0x00, 
+0x21, 0xc4, 0xc3, 0x8f, 0x3d, 0x7b, 0xf6, 0x2c, 
+0xae, 0xaa, 0xaa, 0xda, 0x19, 0xc8, 0xb0, 0x15, 
+0x2b, 0x56, 0x60, 0xe3, 0xc6, 0x8d, 0x91, 0xb8, 
+0xc6, 0x26, 0x89, 0x21, 0x02, 0x1a, 0x46, 0x79, 
+0x79, 0x79, 0xa3, 0xe6, 0x02, 0x18, 0xce, 0x3f, 
+0xf9, 0x50, 0x14, 0x05, 0x0f, 0x3e, 0xf8, 0x60, 
+0xc0, 0x22, 0xaa, 0xce, 0x9d, 0x3b, 0x63, 0xfe, 
+0xfc, 0xf9, 0x49, 0xbf, 0x32, 0xae, 0xac, 0xac, 
+0xc4, 0xcd, 0x37, 0xdf, 0x8c, 0x39, 0x73, 0xe6, 
+0xf8, 0xdc, 0x3f, 0x73, 0xe6, 0x4c, 0x3c, 0xfe, 
+0xf8, 0xe3, 0x71, 0xb2, 0x2a, 0xf1, 0x09, 0x92, 
+0x02, 0x10, 0xf4, 0x87, 0x77, 0xe5, 0x2f, 0x02, 
+0x10, 0xf9, 0xbf, 0xbd, 0x8e, 0x5f, 0xe4, 0x69, 
+0x00, 0x00, 0x6a, 0x61, 0x20, 0xbc, 0x11, 0x00, 
+0x41, 0x10, 0x28, 0x00, 0xc1, 0xed, 0x76, 0xab, 
+0x42, 0x80, 0xb7, 0x05, 0x0a, 0x82, 0x40, 0xcf, 
+0x9c, 0x39, 0x43, 0xcb, 0xcb, 0xcb, 0x29, 0xdf, 
+0x2a, 0x98, 0xa7, 0x02, 0xe2, 0x25, 0x02, 0x28, 
+0x00, 0x68, 0xd3, 0x00, 0x9c, 0x60, 0x51, 0x00, 
+0x5e, 0x0b, 0xa0, 0x28, 0x8a, 0x22, 0xcb, 0xb2, 
+0x62, 0x32, 0x99, 0x14, 0xb3, 0xd9, 0xec, 0x13, 
+0x01, 0x00, 0x20, 0x13, 0x42, 0x24, 0x42, 0x88, 
+0x4f, 0x0a, 0x00, 0xde, 0x34, 0x00, 0x63, 0x4c, 
+0x02, 0xe0, 0x21, 0x84, 0xb8, 0xf3, 0xf2, 0xf2, 
+0x82, 0x8a, 0x80, 0x95, 0x2b, 0x57, 0x1a, 0x22, 
+0x20, 0x04, 0x86, 0x08, 0x68, 0x18, 0x47, 0x8f, 
+0x1e, 0x6d, 0x50, 0x65, 0xad, 0xe1, 0xfc, 0x93, 
+0x93, 0xb9, 0x73, 0xe7, 0xe2, 0x87, 0x1f, 0x7e, 
+0xf0, 0xb9, 0xef, 0xda, 0x6b, 0xaf, 0xc5, 0x8a, 
+0x15, 0x2b, 0xb0, 0x7f, 0xff, 0x7e, 0x5c, 0x77, 
+0xdd, 0x75, 0x71, 0xb2, 0x2c, 0x32, 0x1c, 0x3e, 
+0x7c, 0x18, 0x83, 0x06, 0x0d, 0xc2, 0x9a, 0x35, 
+0x6b, 0x7c, 0xee, 0x9f, 0x3e, 0x7d, 0x3a, 0x9e, 
+0x7c, 0xf2, 0xc9, 0x38, 0x59, 0x95, 0x9c, 0x10, 
+0x42, 0xd0, 0xbe, 0x7d, 0xfb, 0x0e, 0x1a, 0xe7, 
+0x2f, 0x12, 0x42, 0x04, 0x45, 0x51, 0x44, 0x4d, 
+0x14, 0x40, 0xf4, 0xd6, 0x01, 0x88, 0xf0, 0x3a, 
+0x7a, 0x1e, 0xfe, 0x67, 0x8c, 0x89, 0xa8, 0x0b, 
+0xfd, 0x0b, 0x92, 0x24, 0x51, 0x97, 0xcb, 0x25, 
+0x78, 0x3c, 0x1e, 0x55, 0x04, 0x68, 0x53, 0x01, 
+0xda, 0x7a, 0x80, 0xf2, 0xf2, 0x72, 0x2a, 0x08, 
+0x02, 0xe5, 0xfb, 0x04, 0xc4, 0x4b, 0x04, 0xd0, 
+0x9c, 0x9c, 0x1c, 0x16, 0x28, 0x0a, 0x00, 0xd4, 
+0xcd, 0x04, 0x08, 0x56, 0x0b, 0x20, 0xcb, 0xb2, 
+0xc2, 0x0f, 0x2d, 0x8c, 0x31, 0xd9, 0xeb, 0xf8, 
+0x65, 0xcd, 0xbf, 0xd5, 0x14, 0x00, 0x21, 0xc4, 
+0x23, 0x8a, 0xa2, 0x1a, 0x05, 0xa0, 0x94, 0xba, 
+0xf3, 0xf2, 0xf2, 0x3e, 0xaa, 0xac, 0xac, 0x0c, 
+0x2a, 0x02, 0xbe, 0xf9, 0xe6, 0x9b, 0xb3, 0xb9, 
+0xc6, 0x26, 0x8d, 0x21, 0x02, 0xc2, 0xc7, 0xe9, 
+0x74, 0xe2, 0xe4, 0xc9, 0x93, 0x61, 0x3d, 0xd6, 
+0x70, 0xfe, 0xc9, 0xc9, 0xe9, 0xd3, 0xa7, 0xd5, 
+0xf0, 0xb7, 0xc5, 0x62, 0xc1, 0xb8, 0x71, 0xe3, 
+0x90, 0x97, 0x97, 0x87, 0xf5, 0xeb, 0xd7, 0xe3, 
+0xd6, 0x5b, 0x6f, 0x45, 0xdd, 0x62, 0x2d, 0x79, 
+0xf9, 0xe1, 0x87, 0x1f, 0x30, 0x60, 0xc0, 0x00, 
+0xbf, 0xbd, 0x42, 0x9e, 0x78, 0xe2, 0x09, 0x3c, 
+0xf5, 0xd4, 0x53, 0xf1, 0x31, 0x2a, 0x89, 0x48, 
+0x4b, 0x4b, 0x03, 0xe0, 0x1b, 0x09, 0xe8, 0xd9, 
+0xb3, 0xe7, 0x55, 0xd9, 0xd9, 0xd9, 0x5d, 0x35, 
+0xab, 0x7f, 0x91, 0xdf, 0x72, 0xa7, 0xaf, 0xbd, 
+0x95, 0x65, 0x59, 0x94, 0x24, 0x49, 0x94, 0x24, 
+0x49, 0x90, 0x24, 0x49, 0x70, 0xbb, 0xdd, 0xaa, 
+0x30, 0xe0, 0x07, 0x8f, 0x0a, 0xf0, 0x54, 0x00, 
+0x17, 0x02, 0xbc, 0x1e, 0x80, 0x17, 0x05, 0x0a, 
+0x82, 0x40, 0x33, 0x32, 0x32, 0xe2, 0x26, 0x02, 
+0xd4, 0xbf, 0x06, 0x7d, 0x14, 0x20, 0x2d, 0x2d, 
+0x8d, 0x55, 0x54, 0x54, 0x30, 0x9b, 0xcd, 0xc6, 
+0xec, 0x76, 0xbb, 0x1a, 0x05, 0xe0, 0xa9, 0x00, 
+0xde, 0x16, 0xc8, 0x5b, 0x02, 0x2d, 0x16, 0x8b, 
+0x0c, 0x40, 0x36, 0x9b, 0xcd, 0x32, 0x4f, 0x05, 
+0x98, 0xcd, 0x66, 0xc9, 0x64, 0x32, 0x49, 0x7a, 
+0x11, 0x00, 0xc0, 0x23, 0x08, 0x82, 0x07, 0x80, 
+0x07, 0xbf, 0x46, 0x02, 0x3e, 0xae, 0xaa, 0xaa, 
+0xda, 0x15, 0xc8, 0xc8, 0xcf, 0x3e, 0xfb, 0x0c, 
+0xab, 0x56, 0xad, 0x32, 0x26, 0x06, 0x06, 0xc1, 
+0x10, 0x01, 0xe1, 0x53, 0x54, 0x54, 0x84, 0xea, 
+0xea, 0xea, 0x90, 0x8f, 0x31, 0x9c, 0x7f, 0xf2, 
+0x32, 0x65, 0xca, 0x14, 0xa4, 0xa4, 0xa4, 0x60, 
+0xc6, 0x8c, 0x19, 0x38, 0x76, 0xec, 0x18, 0xde, 
+0x79, 0xe7, 0x1d, 0xe4, 0xe6, 0xe6, 0xc6, 0xdb, 
+0xac, 0x88, 0x90, 0x97, 0x97, 0x87, 0xeb, 0xae, 
+0xbb, 0x0e, 0x65, 0x65, 0x65, 0x3e, 0xf7, 0x4f, 
+0x9b, 0x36, 0x0d, 0x4f, 0x3f, 0xfd, 0x74, 0x9c, 
+0xac, 0x4a, 0x2e, 0xfa, 0xf6, 0xed, 0xeb, 0x97, 
+0x02, 0xa0, 0x94, 0x92, 0x5e, 0xbd, 0x7a, 0x0d, 
+0xce, 0xce, 0xce, 0xbe, 0x58, 0xeb, 0xfc, 0xbd, 
+0x35, 0x01, 0xa2, 0xa2, 0x28, 0xea, 0xc1, 0xf3, 
+0xff, 0xde, 0x43, 0xd4, 0x16, 0x03, 0x6a, 0xcf, 
+0xb9, 0xdd, 0x6e, 0xc1, 0x3b, 0x47, 0x40, 0x60, 
+0x8c, 0x09, 0x82, 0x20, 0xf8, 0xd4, 0x03, 0xd8, 
+0xed, 0x76, 0xda, 0xac, 0x59, 0x33, 0xc2, 0x8b, 
+0x02, 0xe3, 0x25, 0x02, 0xa8, 0xf7, 0x4d, 0x02, 
+0x46, 0x01, 0x78, 0x47, 0x80, 0xd5, 0x6a, 0x65, 
+0x29, 0x29, 0x29, 0x4c, 0x92, 0x24, 0xa5, 0x59, 
+0xb3, 0x66, 0x8a, 0xc9, 0x64, 0x62, 0x92, 0x24, 
+0xf9, 0x45, 0x00, 0xb4, 0xa9, 0x00, 0x42, 0x88, 
+0x3a, 0x03, 0x40, 0x14, 0x45, 0xc9, 0x64, 0x32, 
+0x79, 0x78, 0x2d, 0x00, 0x5f, 0xfd, 0x0b, 0x82, 
+0xe0, 0x11, 0x04, 0x41, 0x8d, 0x04, 0xec, 0xde, 
+0xbd, 0xfb, 0xe3, 0xca, 0xca, 0xca, 0x80, 0x22, 
+0x60, 0xc3, 0x86, 0x0d, 0x58, 0xbc, 0x78, 0x31, 
+0x64, 0x59, 0x6e, 0xcc, 0x75, 0x36, 0x79, 0x0c, 
+0x11, 0x10, 0x1e, 0x8c, 0x31, 0x1c, 0x3c, 0x78, 
+0x30, 0xe8, 0x84, 0x40, 0xc3, 0xf9, 0x27, 0x2f, 
+0xa7, 0x4f, 0x9f, 0xc6, 0x90, 0x21, 0x43, 0xf0, 
+0xcb, 0x2f, 0xbf, 0xe0, 0x1f, 0xff, 0xf8, 0x07, 
+0x5a, 0xb5, 0x6a, 0x15, 0x6f, 0x93, 0x22, 0xc6, 
+0x9e, 0x3d, 0x7b, 0x30, 0x64, 0xc8, 0x10, 0x94, 
+0x97, 0x97, 0xfb, 0xdc, 0x3f, 0x65, 0xca, 0x94, 
+0xa0, 0xad, 0x8e, 0x06, 0xfe, 0xf4, 0xee, 0xdd, 
+0x1b, 0x9d, 0x3b, 0x77, 0x56, 0x7f, 0xe6, 0x7e, 
+0x93, 0x10, 0x42, 0x73, 0x73, 0x73, 0xaf, 0xcb, 
+0xce, 0xce, 0xbe, 0xd8, 0x9b, 0x06, 0xf0, 0x71, 
+0xfc, 0x00, 0x44, 0xd4, 0xe5, 0xff, 0xd5, 0x83, 
+0x31, 0xe6, 0x73, 0xb8, 0xdd, 0x6e, 0xd1, 0xe3, 
+0xf1, 0x08, 0x6e, 0xb7, 0x5b, 0x00, 0x20, 0xf0, 
+0x74, 0x80, 0x20, 0x08, 0x6a, 0x3d, 0x80, 0xc3, 
+0xe1, 0xa0, 0x35, 0x35, 0x35, 0xd4, 0x6a, 0xb5, 
+0xfa, 0x4c, 0x09, 0xd4, 0x8b, 0x80, 0x8a, 0x8a, 
+0x8a, 0x90, 0x22, 0x20, 0x10, 0x8d, 0x11, 0x01, 
+0x3e, 0xf1, 0x30, 0x6d, 0x14, 0x20, 0x3f, 0x3f, 
+0x1f, 0x40, 0x5d, 0x2d, 0x00, 0x8f, 0x02, 0xf0, 
+0x54, 0x80, 0x2c, 0xcb, 0x4a, 0x6a, 0x6a, 0xaa, 
+0x92, 0x92, 0x92, 0xa2, 0xc8, 0xb2, 0xac, 0x00, 
+0x90, 0xb9, 0x10, 0x80, 0xa6, 0x0e, 0xc0, 0xdb, 
+0xfb, 0xaf, 0xd6, 0x03, 0x68, 0x52, 0x00, 0x3e, 
+0xc5, 0x80, 0x82, 0x20, 0xb8, 0x09, 0x21, 0x6e, 
+0x4a, 0xa9, 0x2b, 0x2f, 0x2f, 0x2f, 0xa8, 0x08, 
+0xf8, 0xe1, 0x87, 0x1f, 0xf0, 0xce, 0x3b, 0xef, 
+0xc0, 0xed, 0x76, 0x37, 0xf4, 0x3a, 0xcf, 0x09, 
+0x0c, 0x11, 0x10, 0x1e, 0x92, 0x24, 0xe1, 0xc0, 
+0x81, 0x03, 0x7e, 0x62, 0xd2, 0x70, 0xfe, 0xc9, 
+0x4d, 0xeb, 0xd6, 0xad, 0x71, 0xf7, 0xdd, 0x77, 
+0x37, 0xb9, 0x51, 0xb7, 0x3f, 0xfe, 0xf8, 0x63, 
+0xc0, 0x95, 0xff, 0x23, 0x8f, 0x3c, 0x82, 0x17, 
+0x5e, 0x78, 0x21, 0x4e, 0x56, 0x25, 0x27, 0x82, 
+0x20, 0x60, 0xd4, 0xa8, 0x51, 0xe8, 0xdc, 0xb9, 
+0x73, 0xa0, 0x48, 0x00, 0xcd, 0xcd, 0xcd, 0xbd, 
+0x31, 0x3b, 0x3b, 0xbb, 0x1b, 0x77, 0xfa, 0xda, 
+0x5b, 0xaf, 0xd3, 0x37, 0x41, 0x23, 0x06, 0x24, 
+0x49, 0x12, 0x3d, 0x1e, 0x8f, 0xc8, 0x8b, 0x02, 
+0x79, 0x0d, 0x01, 0x34, 0xe9, 0x00, 0x87, 0xc3, 
+0x21, 0x38, 0x1c, 0x0e, 0xa1, 0x6e, 0x52, 0x7e, 
+0x5d, 0x3d, 0x40, 0xa0, 0xa2, 0x40, 0xad, 0x08, 
+0x68, 0xdb, 0xb6, 0x6d, 0x48, 0x11, 0x10, 0xa9, 
+0x91, 0xc1, 0xaa, 0x00, 0xd0, 0x47, 0x01, 0x32, 
+0x32, 0x32, 0xd4, 0x28, 0x40, 0x45, 0x45, 0x05, 
+0xb3, 0x5a, 0xad, 0x3e, 0x7b, 0x04, 0x68, 0xbb, 
+0x02, 0x52, 0x52, 0x52, 0x54, 0xc7, 0xaf, 0x15, 
+0x01, 0xda, 0x7a, 0x00, 0x6d, 0x51, 0xa0, 0xd7, 
+0xe9, 0xab, 0xe9, 0x00, 0x7e, 0x0b, 0x4d, 0x3a, 
+0xa0, 0xbc, 0xbc, 0x3c, 0xe0, 0x30, 0x80, 0x03, 
+0x07, 0x0e, 0x60, 0xde, 0xbc, 0x79, 0xf5, 0x86, 
+0x71, 0xcf, 0x55, 0x0c, 0x11, 0x10, 0x1e, 0x4e, 
+0xa7, 0x13, 0x87, 0x0e, 0x1d, 0x52, 0xff, 0x80, 
+0x0c, 0xe7, 0x6f, 0x90, 0x88, 0x14, 0x14, 0x14, 
+0x60, 0xc8, 0x90, 0x21, 0x7e, 0xc3, 0xac, 0x26, 
+0x4d, 0x9a, 0x84, 0x59, 0xb3, 0x66, 0xc5, 0xc9, 
+0xaa, 0xe4, 0x46, 0x14, 0x45, 0x8c, 0x1a, 0x35, 
+0x0a, 0x17, 0x5d, 0x74, 0x11, 0x00, 0xdf, 0x7a, 
+0x00, 0x42, 0x08, 0xed, 0xd1, 0xa3, 0xc7, 0xb0, 
+0x8b, 0x2f, 0xbe, 0xb8, 0xbb, 0xa2, 0x28, 0x26, 
+0x6f, 0x04, 0x80, 0x3b, 0x7d, 0x93, 0x57, 0x08, 
+0x98, 0xb4, 0x42, 0x00, 0x80, 0x1a, 0x05, 0x00, 
+0x20, 0x78, 0x45, 0x83, 0x8f, 0x08, 0xf0, 0x16, 
+0x01, 0xfa, 0xec, 0x1d, 0xc0, 0x45, 0x00, 0x2f, 
+0x0a, 0xd4, 0x8a, 0x00, 0xa0, 0xee, 0xfb, 0x45, 
+0x2b, 0x02, 0x46, 0x8d, 0x1a, 0xe5, 0x73, 0x1d, 
+0x91, 0x18, 0x19, 0x4c, 0xa7, 0x4f, 0x9f, 0xee, 
+0xf3, 0xec, 0xfc, 0xfc, 0x7c, 0xf5, 0xe7, 0x60, 
+0x05, 0x81, 0x81, 0x52, 0x01, 0x16, 0x8b, 0x45, 
+0x31, 0x9b, 0xcd, 0x8a, 0xc5, 0x62, 0x91, 0x79, 
+0x3d, 0x00, 0x02, 0x74, 0x04, 0x68, 0x45, 0x80, 
+0x28, 0x8a, 0x1e, 0x93, 0xc9, 0xe4, 0x86, 0xb7, 
+0x26, 0x40, 0x14, 0x45, 0x37, 0x21, 0xc4, 0x4d, 
+0x08, 0x71, 0xef, 0xdd, 0xbb, 0x77, 0xe5, 0xc9, 
+0x93, 0x27, 0xd7, 0x06, 0x32, 0xfa, 0xf8, 0xf1, 
+0xe3, 0x78, 0xfd, 0xf5, 0xd7, 0xfd, 0xc2, 0x61, 
+0x06, 0x75, 0x18, 0x22, 0x20, 0x3c, 0xaa, 0xaa, 
+0xaa, 0x70, 0xf4, 0xe8, 0x51, 0xc3, 0xf9, 0x1b, 
+0x24, 0x24, 0x3f, 0xfd, 0xf4, 0x13, 0x06, 0x0f, 
+0x1e, 0xec, 0xb7, 0x9f, 0xc5, 0xa4, 0x49, 0x93, 
+0x30, 0x7b, 0xf6, 0xec, 0x38, 0x59, 0xd5, 0x34, 
+0xe0, 0x22, 0x40, 0x9b, 0x0e, 0xe0, 0x50, 0x4a, 
+0x69, 0x8f, 0x1e, 0x3d, 0x6e, 0xba, 0xf8, 0xe2, 
+0x8b, 0x73, 0x34, 0xa9, 0x00, 0xd5, 0xf9, 0x43, 
+0xb3, 0xfa, 0x57, 0x14, 0xc5, 0xe4, 0x75, 0xfe, 
+0xaa, 0x20, 0xe0, 0x62, 0x40, 0x93, 0x3e, 0x10, 
+0xbc, 0x93, 0x06, 0x85, 0xda, 0xda, 0x5a, 0xa1, 
+0xba, 0xba, 0x5a, 0xe0, 0x45, 0x81, 0x6e, 0xb7, 
+0x9b, 0xf0, 0xa2, 0xc0, 0xf2, 0xf2, 0x72, 0xea, 
+0x70, 0x38, 0xd4, 0x19, 0x01, 0x65, 0x65, 0x65, 
+0x24, 0x27, 0x27, 0x07, 0xc0, 0xaf, 0xdb, 0x07, 
+0x87, 0xb3, 0x6f, 0x40, 0x43, 0xa2, 0x00, 0x3e, 
+0x29, 0x80, 0x9c, 0x9c, 0x1c, 0x06, 0xd4, 0xa5, 
+0x02, 0xb2, 0xb2, 0xb2, 0xd4, 0x57, 0xd4, 0x17, 
+0x04, 0xa6, 0xa4, 0xa4, 0xb0, 0x9a, 0x9a, 0x1a, 
+0x35, 0x15, 0x10, 0xac, 0x1e, 0xc0, 0x6c, 0x36, 
+0xab, 0xce, 0x5f, 0xdb, 0x11, 0x40, 0x29, 0xf5, 
+0x68, 0x53, 0x00, 0xde, 0xae, 0x00, 0x55, 0x08, 
+0x78, 0xd3, 0x01, 0xee, 0xc2, 0xc2, 0xc2, 0xf5, 
+0x47, 0x8f, 0x1e, 0x5d, 0xea, 0xdd, 0x5c, 0xc8, 
+0x87, 0xb2, 0xb2, 0x32, 0xbc, 0xf6, 0xda, 0x6b, 
+0x38, 0x71, 0xe2, 0x44, 0xb8, 0xd7, 0x7a, 0x4e, 
+0x61, 0x88, 0x80, 0xf0, 0x28, 0x29, 0x29, 0x41, 
+0x61, 0x61, 0xa1, 0xe1, 0xfc, 0x0d, 0x12, 0x8a, 
+0xc2, 0xc2, 0x42, 0x0c, 0x1e, 0x3c, 0xd8, 0x6f, 
+0x4b, 0xeb, 0x27, 0x9e, 0x78, 0xc2, 0x70, 0xfe, 
+0x11, 0x42, 0x14, 0x45, 0xdc, 0x7e, 0xfb, 0xed, 
+0x41, 0x23, 0x01, 0x39, 0x39, 0x39, 0xb7, 0x64, 
+0x67, 0x67, 0xf7, 0x08, 0xe0, 0xfc, 0x79, 0x04, 
+0xc0, 0xa4, 0xed, 0x0a, 0xf0, 0x78, 0x3c, 0x6a, 
+0x3a, 0xc0, 0xed, 0x76, 0xfb, 0xa5, 0x02, 0x18, 
+0x63, 0x02, 0x8f, 0x00, 0x30, 0xc6, 0x04, 0xfd, 
+0xb4, 0x40, 0x9b, 0xcd, 0x46, 0xd2, 0xd2, 0xd2, 
+0x88, 0xc3, 0xe1, 0x20, 0x45, 0x45, 0x45, 0x54, 
+0x5b, 0x14, 0x08, 0xfc, 0x2a, 0x02, 0x80, 0xc8, 
+0x15, 0x05, 0x52, 0x00, 0xd0, 0x47, 0x01, 0x82, 
+0x15, 0x04, 0xa6, 0xa7, 0xa7, 0x33, 0xab, 0xd5, 
+0xca, 0xec, 0x76, 0xbb, 0xba, 0x4f, 0x80, 0x77, 
+0x16, 0x00, 0x4b, 0x49, 0x49, 0x51, 0x08, 0x21, 
+0xda, 0x55, 0xbf, 0x4f, 0x57, 0x00, 0x21, 0x44, 
+0x32, 0x9b, 0xcd, 0x7e, 0x91, 0x00, 0x68, 0xda, 
+0x03, 0xbd, 0x87, 0x5b, 0x5b, 0x18, 0xf8, 0xf3, 
+0xcf, 0x3f, 0x6f, 0x3b, 0x74, 0xe8, 0xd0, 0x07, 
+0x8c, 0x31, 0xbf, 0x59, 0xae, 0xd5, 0xd5, 0xd5, 
+0x98, 0x37, 0x6f, 0x1e, 0x0e, 0x1e, 0x3c, 0x18, 
+0xce, 0xb5, 0x9e, 0x73, 0x18, 0x22, 0x20, 0x3c, 
+0x1a, 0x12, 0x42, 0x33, 0x9c, 0xbf, 0x41, 0xb4, 
+0xd9, 0xbf, 0x7f, 0x3f, 0xae, 0xbd, 0xf6, 0x5a, 
+0xbf, 0x96, 0xd5, 0xe7, 0x9e, 0x7b, 0xce, 0xa8, 
+0xf6, 0x8f, 0x30, 0x5c, 0x04, 0x04, 0x8b, 0x04, 
+0xe4, 0xe4, 0xe4, 0xdc, 0xda, 0xad, 0x5b, 0xb7, 
+0x1e, 0x8a, 0xa2, 0x98, 0x08, 0x21, 0xaa, 0xf3, 
+0xe7, 0xb5, 0x01, 0x8c, 0x31, 0x35, 0x1d, 0xe0, 
+0xfd, 0xb7, 0x1a, 0x05, 0xd0, 0x16, 0x05, 0xf2, 
+0xc2, 0x40, 0x78, 0x85, 0x00, 0x77, 0xfc, 0x0e, 
+0x87, 0x83, 0xd6, 0xd6, 0xd6, 0xaa, 0x22, 0xa0, 
+0xb2, 0xb2, 0x92, 0x72, 0x11, 0xa0, 0xef, 0x0c, 
+0xe0, 0x76, 0x85, 0xea, 0x0c, 0x68, 0x28, 0x94, 
+0x0b, 0x05, 0x2e, 0x02, 0x78, 0x14, 0x20, 0x50, 
+0x2a, 0xa0, 0xac, 0xac, 0x8c, 0xd9, 0x6c, 0x36, 
+0x66, 0xb5, 0x5a, 0x59, 0x8b, 0x16, 0x2d, 0x14, 
+0x49, 0x92, 0x14, 0xb3, 0xd9, 0xac, 0xa6, 0x01, 
+0x78, 0x3d, 0x00, 0x8f, 0x06, 0x40, 0x93, 0x06, 
+0xb0, 0x58, 0x2c, 0x12, 0x21, 0x44, 0x6d, 0x0b, 
+0xf4, 0x3a, 0x78, 0x9f, 0x28, 0x80, 0x37, 0x05, 
+0xc0, 0x45, 0x80, 0x9b, 0x8b, 0x80, 0x13, 0x27, 
+0x4e, 0xe4, 0x17, 0x14, 0x14, 0x2c, 0x90, 0x65, 
+0xb9, 0x56, 0x7f, 0x01, 0x2e, 0x97, 0x0b, 0xf3, 
+0xe7, 0xcf, 0xc7, 0xee, 0xdd, 0xbb, 0x1b, 0x73, 
+0xfd, 0x4d, 0x1e, 0x43, 0x04, 0x44, 0x0e, 0xc3, 
+0xf9, 0x1b, 0x44, 0x9b, 0x83, 0x07, 0x0f, 0xe2, 
+0xda, 0x6b, 0xaf, 0x45, 0x71, 0x71, 0xb1, 0x7a, 
+0x9f, 0xd9, 0x6c, 0xc6, 0xdc, 0xb9, 0x73, 0xf1, 
+0xd8, 0x63, 0x8f, 0xc5, 0xd1, 0xb2, 0xd8, 0xc3, 
+0x18, 0xc3, 0xc7, 0x1f, 0x7f, 0x8c, 0x11, 0x23, 
+0x46, 0x44, 0xf5, 0x7d, 0x44, 0x51, 0xc4, 0xc8, 
+0x91, 0x23, 0x83, 0x46, 0x02, 0xba, 0x77, 0xef, 
+0xfe, 0xbb, 0x4b, 0x2e, 0xb9, 0xa4, 0xa7, 0xb7, 
+0x16, 0xc0, 0xc4, 0x6f, 0x65, 0x59, 0xf6, 0x11, 
+0x02, 0xfc, 0x96, 0xd7, 0x0c, 0x68, 0x3b, 0x04, 
+0x14, 0x45, 0x11, 0xdd, 0x6e, 0xb7, 0xe0, 0x72, 
+0xb9, 0x04, 0x97, 0xcb, 0xa5, 0x46, 0x03, 0x18, 
+0x63, 0x82, 0x28, 0x8a, 0xb4, 0xb6, 0xb6, 0x96, 
+0x5a, 0xad, 0x56, 0x62, 0xb3, 0xd9, 0x08, 0x17, 
+0x01, 0x8d, 0xe9, 0x0c, 0x68, 0x68, 0x14, 0x20, 
+0xe0, 0x54, 0x8c, 0x40, 0xa9, 0x00, 0x7d, 0x57, 
+0x80, 0xbe, 0x1e, 0x40, 0x9b, 0x06, 0xb0, 0xd9, 
+0x6c, 0x7e, 0x93, 0x01, 0xa1, 0xe9, 0x0c, 0xd0, 
+0xce, 0x06, 0xd0, 0xa7, 0x03, 0xf8, 0xea, 0x5f, 
+0x2f, 0x02, 0x4a, 0x4b, 0x4b, 0x0f, 0xef, 0xdd, 
+0xbb, 0xf7, 0x3f, 0x92, 0x24, 0xf9, 0xed, 0xee, 
+0x21, 0xcb, 0x32, 0x3e, 0xfc, 0xf0, 0x43, 0x63, 
+0x6a, 0x60, 0x10, 0x0c, 0x11, 0x70, 0xf6, 0x18, 
+0xce, 0xdf, 0x20, 0xda, 0xec, 0xdb, 0xb7, 0x0f, 
+0xd7, 0x5c, 0x73, 0x0d, 0x8a, 0x8a, 0x8a, 0xd4, 
+0xfb, 0xb2, 0xb3, 0xb3, 0xb1, 0x65, 0xcb, 0x16, 
+0xfc, 0xe5, 0x2f, 0x7f, 0x89, 0xa3, 0x65, 0xb1, 
+0x67, 0xc5, 0x8a, 0x15, 0xe8, 0xdd, 0xbb, 0x37, 
+0x46, 0x8f, 0x1e, 0x8d, 0x2e, 0x5d, 0xba, 0x44, 
+0xfd, 0xfd, 0xf4, 0x22, 0x40, 0x8b, 0x37, 0x12, 
+0x30, 0xfc, 0x92, 0x4b, 0x2e, 0xc9, 0xd5, 0x3a, 
+0x7f, 0xbe, 0xfa, 0x97, 0x24, 0x49, 0x3d, 0xa0, 
+0xab, 0x03, 0xe0, 0x87, 0x3e, 0x1d, 0xe0, 0xf1, 
+0x78, 0xa8, 0xc3, 0xe1, 0x50, 0x53, 0x02, 0xa2, 
+0x28, 0xd2, 0x9a, 0x9a, 0x1a, 0x5a, 0x5d, 0x5d, 
+0x4d, 0x6d, 0x36, 0x1b, 0x71, 0x3a, 0x9d, 0xc4, 
+0x7b, 0x5f, 0xd0, 0xce, 0x80, 0x70, 0x8a, 0x02, 
+0xeb, 0x13, 0x01, 0xd4, 0xfb, 0x20, 0x00, 0xa1, 
+0x53, 0x01, 0xfa, 0xae, 0x00, 0x7d, 0x3d, 0x00, 
+0xdf, 0x2c, 0x48, 0x5b, 0x14, 0x68, 0xb5, 0x5a, 
+0x7d, 0xda, 0x01, 0x29, 0xa5, 0x12, 0x21, 0x44, 
+0xe2, 0x22, 0xc0, 0x6c, 0x36, 0x7b, 0xa0, 0x13, 
+0x01, 0x94, 0x52, 0x77, 0x00, 0x11, 0xe0, 0xa6, 
+0x94, 0xba, 0x2b, 0x2b, 0x2b, 0x8b, 0x76, 0xed, 
+0xda, 0xf5, 0xb6, 0xcb, 0xe5, 0xf2, 0x4d, 0x8c, 
+0x79, 0x2f, 0x7a, 0xe5, 0xca, 0x95, 0xf8, 0xfa, 
+0xeb, 0xaf, 0x43, 0x5d, 0xef, 0x39, 0x8b, 0x21, 
+0x02, 0x1a, 0x8f, 0xe1, 0xfc, 0x0d, 0xa2, 0xc9, 
+0x96, 0x2d, 0x5b, 0xf0, 0xe0, 0x83, 0x0f, 0xe2, 
+0xd2, 0x4b, 0x2f, 0xc5, 0x89, 0x13, 0x27, 0x90, 
+0x92, 0x92, 0x02, 0x00, 0xb8, 0xf7, 0xde, 0x7b, 
+0xb1, 0x6b, 0xd7, 0x2e, 0xf4, 0xe9, 0xd3, 0x27, 
+0xce, 0x16, 0xc6, 0x8e, 0x35, 0x6b, 0xd6, 0x60, 
+0xc0, 0x80, 0x01, 0x18, 0x3e, 0x7c, 0x38, 0xf6, 
+0xec, 0xd9, 0x83, 0x3e, 0x7d, 0xfa, 0x60, 0xfa, 
+0xf4, 0xe9, 0x31, 0x79, 0x6f, 0x2e, 0x02, 0x3a, 
+0x75, 0xea, 0x04, 0x20, 0x60, 0x24, 0x60, 0xc4, 
+0x25, 0x97, 0x5c, 0x92, 0x2b, 0xcb, 0xb2, 0x49, 
+0x7b, 0x00, 0x50, 0x57, 0xff, 0x1e, 0x8f, 0xc7, 
+0xe4, 0xf1, 0x78, 0x4c, 0x92, 0x24, 0xf9, 0x45, 
+0x00, 0xf8, 0x2d, 0x74, 0x2d, 0x82, 0x35, 0x35, 
+0x35, 0x6a, 0x4a, 0x40, 0x14, 0x45, 0x5a, 0x5d, 
+0x5d, 0x4d, 0x45, 0x51, 0xa4, 0x4e, 0xa7, 0xd3, 
+0x6f, 0x46, 0x80, 0xb6, 0x33, 0x20, 0x54, 0x51, 
+0x60, 0xb8, 0xa8, 0x11, 0x80, 0xfa, 0x52, 0x01, 
+0xfa, 0x7a, 0x80, 0x8a, 0x8a, 0x0a, 0xd6, 0xb2, 
+0x65, 0x4b, 0xc5, 0x6e, 0xb7, 0xb3, 0xf4, 0xf4, 
+0x74, 0xc5, 0xe3, 0xf1, 0x28, 0xda, 0xa2, 0x40, 
+0x42, 0x88, 0xec, 0x2d, 0x06, 0xf4, 0x4b, 0x07, 
+0x70, 0x11, 0xc0, 0x53, 0x02, 0xde, 0xb9, 0x00, 
+0x52, 0x08, 0x11, 0xa0, 0x16, 0x06, 0x3a, 0x1c, 
+0x8e, 0xb2, 0x9d, 0x3b, 0x77, 0xfe, 0xc7, 0xe1, 
+0x70, 0xfc, 0x12, 0xe8, 0x82, 0x3e, 0xff, 0xfc, 
+0x73, 0x43, 0x04, 0x04, 0xc1, 0x10, 0x01, 0x0d, 
+0xc7, 0x70, 0xfe, 0x06, 0xd1, 0x62, 0xcd, 0x9a, 
+0x35, 0xe8, 0xde, 0xbd, 0x3b, 0x06, 0x0d, 0x1a, 
+0x84, 0xb9, 0x73, 0xe7, 0xa2, 0xaa, 0xaa, 0x0a, 
+0xcd, 0x9a, 0x35, 0xc3, 0xa0, 0x41, 0x83, 0xb0, 
+0x7e, 0xfd, 0x7a, 0x2c, 0x58, 0xb0, 0x00, 0x36, 
+0x9b, 0x2d, 0xde, 0x66, 0xc6, 0x84, 0x6f, 0xbf, 
+0xfd, 0x16, 0x57, 0x5e, 0x79, 0x25, 0x86, 0x0e, 
+0x1d, 0x8a, 0xed, 0xdb, 0xb7, 0x03, 0x00, 0x2e, 
+0xbc, 0xf0, 0x42, 0x7c, 0xf6, 0xd9, 0x67, 0x68, 
+0xd6, 0xac, 0x59, 0xcc, 0xec, 0x08, 0x23, 0x12, 
+0x70, 0xdb, 0x25, 0x97, 0x5c, 0xd2, 0x0b, 0x80, 
+0x59, 0x96, 0x65, 0x33, 0x7e, 0x8d, 0x06, 0x98, 
+0xf5, 0xf5, 0x00, 0x1e, 0x8f, 0xc7, 0xa4, 0xe9, 
+0x12, 0xf0, 0x73, 0xfe, 0xf0, 0xb6, 0x07, 0xf2, 
+0x71, 0xc1, 0xd5, 0xd5, 0xd5, 0x82, 0x5e, 0x04, 
+0x68, 0x3b, 0x03, 0x80, 0xba, 0xed, 0x83, 0xf5, 
+0x9d, 0x01, 0x40, 0xe3, 0x53, 0x01, 0x21, 0x07, 
+0x63, 0x6b, 0x53, 0x01, 0xfc, 0x3e, 0xbd, 0x08, 
+0xd0, 0x16, 0x05, 0xea, 0x45, 0x80, 0x2c, 0xcb, 
+0x0a, 0x21, 0x44, 0xb6, 0x5a, 0xad, 0x7c, 0x77, 
+0x40, 0x9f, 0xe1, 0x40, 0x94, 0x52, 0xbe, 0xfa, 
+0xe7, 0xce, 0xdf, 0x47, 0x04, 0xe8, 0x6a, 0x02, 
+0x54, 0x11, 0xe0, 0xf1, 0x78, 0xaa, 0xb6, 0x6f, 
+0xdf, 0xbe, 0xd0, 0x6e, 0xb7, 0xff, 0x14, 0xc8, 
+0x6e, 0x43, 0x04, 0x04, 0xc7, 0x10, 0x01, 0xe1, 
+0x63, 0x38, 0x7f, 0x83, 0x68, 0x50, 0x54, 0x54, 
+0x84, 0x3b, 0xee, 0xb8, 0x03, 0x43, 0x87, 0x0e, 
+0xf5, 0x9b, 0xe9, 0xff, 0xc2, 0x0b, 0x2f, 0x60, 
+0xfd, 0xfa, 0xf5, 0xb8, 0xf6, 0xda, 0x6b, 0xe3, 
+0x64, 0x5d, 0xf4, 0x39, 0x70, 0xe0, 0x00, 0xc6, 
+0x8d, 0x1b, 0x87, 0x57, 0x5e, 0x79, 0x05, 0xdf, 
+0x7e, 0xfb, 0x2d, 0xae, 0xbb, 0xee, 0x3a, 0x5c, 
+0x73, 0xcd, 0x35, 0x3e, 0x29, 0xdc, 0xcc, 0xcc, 
+0x4c, 0x7c, 0xf1, 0xc5, 0x17, 0x68, 0xdb, 0xb6, 
+0x6d, 0xcc, 0xed, 0x13, 0x45, 0x11, 0xb7, 0xdd, 
+0x76, 0x5b, 0xd0, 0x48, 0x40, 0x4e, 0x4e, 0xce, 
+0x6d, 0xdd, 0xba, 0x75, 0xeb, 0x85, 0x3a, 0xe7, 
+0x6f, 0x66, 0x8c, 0x99, 0xb5, 0xd1, 0x00, 0xad, 
+0x10, 0xf0, 0xee, 0x19, 0x20, 0x7a, 0x3c, 0x1e, 
+0xbe, 0xb9, 0x50, 0xc0, 0xf6, 0x40, 0x68, 0xf6, 
+0x0d, 0xe0, 0xe3, 0x82, 0xdd, 0x6e, 0x37, 0xd1, 
+0x76, 0x06, 0x84, 0x5b, 0x14, 0xd8, 0x90, 0x54, 
+0x00, 0x61, 0x8c, 0xf9, 0x9c, 0xe4, 0x4f, 0xd2, 
+0x86, 0x12, 0xf2, 0xf3, 0xf3, 0xc9, 0xa8, 0x51, 
+0xa3, 0x50, 0x50, 0x50, 0x40, 0x8a, 0x8a, 0x8a, 
+0x48, 0x45, 0x45, 0x05, 0xc9, 0xc9, 0xc9, 0x41, 
+0x59, 0x59, 0x19, 0x39, 0x79, 0xf2, 0x24, 0xcd, 
+0xc8, 0xc8, 0x20, 0x0e, 0x87, 0x83, 0x98, 0x4c, 
+0x26, 0x6a, 0xb3, 0xd9, 0x88, 0xdd, 0x6e, 0xa7, 
+0x82, 0x20, 0xd0, 0xda, 0xda, 0x5a, 0x75, 0x43, 
+0x04, 0x3e, 0x13, 0xd9, 0xe5, 0x72, 0x09, 0xd0, 
+0x0c, 0x4b, 0xd0, 0x14, 0x48, 0xa8, 0xfd, 0x94, 
+0x9a, 0x5b, 0x9e, 0x63, 0xe1, 0xea, 0xca, 0xcc, 
+0xd5, 0x96, 0xb7, 0x35, 0xc3, 0xd2, 0xbb, 0x77, 
+0xef, 0xe1, 0x19, 0x19, 0x19, 0x7d, 0x03, 0x5d, 
+0xdc, 0xb0, 0x61, 0xc3, 0x9a, 0xf4, 0x1f, 0xd2, 
+0xd9, 0xf0, 0xfd, 0xf7, 0xdf, 0xfb, 0x7d, 0xf9, 
+0x18, 0xfc, 0x8a, 0xe1, 0xfc, 0x0d, 0xa2, 0x41, 
+0x41, 0x41, 0x01, 0xae, 0xb8, 0xe2, 0x0a, 0x54, 
+0x54, 0x54, 0xf8, 0x9d, 0xa3, 0x94, 0xa2, 0xaa, 
+0xaa, 0xaa, 0xc9, 0xae, 0xfa, 0x8f, 0x1e, 0x3d, 
+0x8a, 0x99, 0x33, 0x67, 0xe2, 0xdd, 0x77, 0xdf, 
+0x45, 0xb3, 0x66, 0xcd, 0x70, 0xe6, 0x8c, 0x5f, 
+0x39, 0x17, 0x80, 0xba, 0x9d, 0x1b, 0xdf, 0x7d, 
+0xf7, 0x5d, 0x74, 0xec, 0xd8, 0x31, 0xc6, 0x16, 
+0xfa, 0x22, 0x49, 0x12, 0x96, 0x2d, 0x5b, 0x86, 
+0x9f, 0x7f, 0xfe, 0x59, 0xbd, 0x8f, 0xbb, 0x4a, 
+0xc6, 0x98, 0x52, 0x50, 0x50, 0xf0, 0xc9, 0xbe, 
+0x7d, 0xfb, 0x76, 0x03, 0x50, 0x53, 0xd5, 0x84, 
+0x10, 0x75, 0xe1, 0x4a, 0x29, 0x55, 0x6f, 0x29, 
+0xa5, 0x6a, 0xba, 0xdb, 0xbb, 0x98, 0x95, 0x2c, 
+0x16, 0x8b, 0xc4, 0x17, 0xc4, 0xde, 0xc1, 0x78, 
+0x32, 0x21, 0x44, 0xe6, 0x11, 0xf3, 0xd4, 0xd4, 
+0x54, 0x45, 0x96, 0x65, 0xc5, 0xe3, 0xf1, 0x28, 
+0xe9, 0xe9, 0xe9, 0x8a, 0xdd, 0x6e, 0x67, 0x2d, 
+0x5b, 0xb6, 0x54, 0x2a, 0x2a, 0x2a, 0x58, 0x5a, 
+0x5a, 0x1a, 0x3b, 0x79, 0xf2, 0x24, 0xcb, 0xc8, 
+0xc8, 0x60, 0x59, 0x59, 0x59, 0xac, 0x7b, 0xf7, 
+0xee, 0x6c, 0xc9, 0x92, 0x25, 0xea, 0xa2, 0x1d, 
+0xf8, 0x35, 0x9a, 0xaf, 0xb1, 0xd9, 0xaf, 0xdd, 
+0x89, 0xea, 0x4f, 0x04, 0xaa, 0x07, 0xe0, 0x53, 
+0x02, 0x79, 0x51, 0x60, 0x46, 0x46, 0x06, 0xe3, 
+0x45, 0x81, 0x36, 0x9b, 0x4d, 0xed, 0x0c, 0xf0, 
+0x78, 0x3c, 0x0a, 0xaf, 0x07, 0xe0, 0x91, 0x00, 
+0x78, 0xc7, 0x04, 0xf3, 0x8b, 0xe3, 0x43, 0x82, 
+0xf4, 0x91, 0x00, 0xb3, 0xd9, 0xec, 0x31, 0x99, 
+0x4c, 0x92, 0xc9, 0x64, 0xf2, 0xe8, 0x0b, 0x03, 
+0xbd, 0xbf, 0x58, 0x8f, 0xe6, 0x97, 0xeb, 0x16, 
+0x04, 0xc1, 0x4d, 0x29, 0x75, 0xed, 0xde, 0xbd, 
+0x7b, 0x79, 0x45, 0x45, 0xc5, 0x8e, 0x40, 0x1f, 
+0xa0, 0x11, 0x09, 0x08, 0x8e, 0x11, 0x09, 0x08, 
+0x4e, 0xb2, 0x3a, 0x7f, 0x97, 0xcb, 0x85, 0x8f, 
+0x3e, 0xfa, 0x08, 0xdb, 0xb6, 0x6d, 0x8b, 0xb7, 
+0x29, 0x06, 0x01, 0x38, 0x75, 0xea, 0x14, 0x6e, 
+0xba, 0xe9, 0xa6, 0x80, 0xce, 0x1f, 0xa8, 0x1b, 
+0x65, 0xdc, 0x14, 0x9d, 0xff, 0xc9, 0x93, 0x27, 
+0x31, 0x71, 0xe2, 0x44, 0x74, 0xed, 0xda, 0x15, 
+0xf3, 0xe7, 0xcf, 0x87, 0x24, 0x49, 0x01, 0x9d, 
+0xbf, 0xc5, 0x62, 0xc1, 0x4b, 0x2f, 0xbd, 0x84, 
+0x75, 0xeb, 0xd6, 0xc5, 0xdd, 0xf9, 0x03, 0x75, 
+0x91, 0x80, 0x11, 0x23, 0x46, 0xa0, 0x53, 0xa7, 
+0x4e, 0x3e, 0x51, 0x00, 0x40, 0x8d, 0x04, 0xdc, 
+0xde, 0xad, 0x5b, 0xb7, 0x5e, 0xde, 0xc5, 0xa8, 
+0x4f, 0x77, 0x80, 0x76, 0x5a, 0x60, 0xb0, 0xce, 
+0x00, 0x97, 0xcb, 0x25, 0xf2, 0x16, 0x41, 0xde, 
+0x19, 0xc0, 0x5b, 0x04, 0xf5, 0x9d, 0x01, 0x4e, 
+0xa7, 0x93, 0x68, 0x3b, 0x03, 0x80, 0xba, 0xef, 
+0x29, 0x20, 0x74, 0x2a, 0x40, 0x4b, 0xa0, 0x28, 
+0x40, 0xc0, 0x14, 0x40, 0xb8, 0x45, 0x81, 0x27, 
+0x4f, 0x9e, 0xf4, 0x29, 0x0a, 0xd4, 0xb7, 0x07, 
+0xea, 0xf7, 0x0c, 0xa8, 0x4f, 0x04, 0xf0, 0x74, 
+0x00, 0x74, 0x85, 0x81, 0x9a, 0x16, 0x41, 0x37, 
+0xbc, 0xe3, 0x82, 0x51, 0x37, 0x34, 0x88, 0x8b, 
+0x80, 0x95, 0x86, 0x08, 0x68, 0x38, 0x86, 0x08, 
+0xf0, 0x27, 0x19, 0x9d, 0xff, 0xe1, 0xc3, 0x87, 
+0xf1, 0xe8, 0xa3, 0x8f, 0xa2, 0x7d, 0xfb, 0xf6, 
+0x18, 0x33, 0x66, 0x0c, 0x2e, 0xbd, 0xf4, 0x52, 
+0x5c, 0x74, 0xd1, 0x45, 0x98, 0x32, 0x65, 0x0a, 
+0x36, 0x6c, 0xd8, 0x60, 0x6c, 0xa0, 0x95, 0x20, 
+0xfc, 0xf6, 0xb7, 0xbf, 0xc5, 0x2f, 0xbf, 0x04, 
+0x2c, 0x5d, 0x02, 0x00, 0x64, 0x65, 0x65, 0xc5, 
+0xd0, 0x9a, 0xe8, 0x53, 0x5e, 0x5e, 0x8e, 0x29, 
+0x53, 0xa6, 0xa0, 0x73, 0xe7, 0xce, 0x78, 0xed, 
+0xb5, 0xd7, 0x82, 0xee, 0xe1, 0x22, 0x08, 0x02, 
+0xc6, 0x8d, 0x1b, 0x87, 0xc2, 0xc2, 0x42, 0x4c, 
+0x9e, 0x3c, 0xd9, 0x6f, 0x46, 0x7f, 0x3c, 0xd1, 
+0x8a, 0x00, 0x2d, 0x5e, 0x41, 0x40, 0xbb, 0x77, 
+0xef, 0x3e, 0x2a, 0x27, 0x27, 0xa7, 0xb7, 0x37, 
+0x15, 0xe0, 0x93, 0x06, 0x90, 0x24, 0xc9, 0x27, 
+0x1d, 0xa0, 0x9d, 0x11, 0x00, 0x6f, 0xd8, 0x5f, 
+0x5b, 0x17, 0xe0, 0xf1, 0x78, 0xa8, 0xdb, 0xed, 
+0xa6, 0x2e, 0x97, 0x8b, 0x0a, 0x82, 0x40, 0x53, 
+0x52, 0x52, 0x08, 0xef, 0x0c, 0xe0, 0x45, 0x81, 
+0xbc, 0x1e, 0x20, 0x54, 0x2a, 0x80, 0x13, 0xce, 
+0xa8, 0x60, 0x55, 0x00, 0x04, 0x0a, 0x0f, 0x68, 
+0x09, 0x54, 0x14, 0x18, 0x48, 0x04, 0x54, 0x55, 
+0x55, 0xf9, 0x89, 0x00, 0x4a, 0xa9, 0xdc, 0x10, 
+0x11, 0x10, 0xa8, 0x3b, 0x20, 0xc0, 0xa0, 0x20, 
+0x1f, 0x11, 0x90, 0x97, 0x97, 0xb7, 0xc2, 0x10, 
+0x01, 0x0d, 0xc7, 0x10, 0x01, 0xbf, 0x92, 0x6c, 
+0xce, 0x7f, 0xf5, 0xea, 0xd5, 0xb8, 0xe9, 0xa6, 
+0x9b, 0xd0, 0xa5, 0x4b, 0x17, 0xbc, 0xf4, 0xd2, 
+0x4b, 0x3e, 0x9b, 0xc5, 0xfc, 0xfc, 0xf3, 0xcf, 
+0x98, 0x35, 0x6b, 0x16, 0xae, 0xba, 0xea, 0x2a, 
+0xb4, 0x6c, 0xd9, 0x12, 0xa3, 0x47, 0x8f, 0xc6, 
+0xbb, 0xef, 0xbe, 0xeb, 0x37, 0x56, 0xd6, 0x20, 
+0x36, 0x94, 0x94, 0x94, 0xa8, 0xc5, 0x6d, 0xc1, 
+0xe8, 0xda, 0xb5, 0x6b, 0x8c, 0xac, 0x89, 0x2e, 
+0x76, 0xbb, 0x1d, 0x33, 0x66, 0xcc, 0x40, 0xa7, 
+0x4e, 0x9d, 0x30, 0x6b, 0xd6, 0x2c, 0xd4, 0xd6, 
+0xfa, 0x8d, 0x6f, 0x01, 0x50, 0xe7, 0x44, 0x47, 
+0x8f, 0x1e, 0x8d, 0x82, 0x82, 0x02, 0xbc, 0xf3, 
+0xce, 0x3b, 0xb8, 0xe0, 0x82, 0x0b, 0x62, 0x6c, 
+0x69, 0x78, 0x88, 0xa2, 0x88, 0xe1, 0xc3, 0x87, 
+0x87, 0x8a, 0x04, 0x8c, 0xea, 0xd1, 0xa3, 0x47, 
+0x6f, 0x45, 0x51, 0xcc, 0x8c, 0x31, 0xb3, 0x24, 
+0x49, 0x66, 0xd4, 0x75, 0x06, 0x98, 0x24, 0x49, 
+0x32, 0x69, 0x37, 0x11, 0xaa, 0xaf, 0x3d, 0x10, 
+0x9a, 0x5a, 0x00, 0x7d, 0x3d, 0x80, 0xcb, 0xe5, 
+0x0a, 0x58, 0x0f, 0xa0, 0x6f, 0x0d, 0x6c, 0x48, 
+0x14, 0xc0, 0x27, 0x02, 0x10, 0x4e, 0x2a, 0x00, 
+0x08, 0x4f, 0x04, 0xf0, 0x19, 0x01, 0x7c, 0xe3, 
+0xa0, 0x86, 0x88, 0x00, 0xef, 0xad, 0x9f, 0x08, 
+0xf0, 0x8e, 0x0c, 0xf6, 0x49, 0x05, 0x68, 0x5b, 
+0x05, 0x0d, 0x11, 0xd0, 0x38, 0x0c, 0x11, 0x90, 
+0x5c, 0xce, 0x7f, 0xf5, 0xea, 0xd5, 0xe8, 0xd7, 
+0xaf, 0x1f, 0x6e, 0xb9, 0xe5, 0x16, 0x7c, 0xfe, 
+0xf9, 0xe7, 0xf5, 0x4e, 0x32, 0x3c, 0x73, 0xe6, 
+0x0c, 0x3e, 0xfe, 0xf8, 0x63, 0xcc, 0x9b, 0x37, 
+0x0f, 0x55, 0x55, 0x55, 0x31, 0xb2, 0xd2, 0x40, 
+0x4b, 0x38, 0xd3, 0x4a, 0xfb, 0xf5, 0xeb, 0x17, 
+0x03, 0x4b, 0xa2, 0x4b, 0x49, 0x49, 0x09, 0x3a, 
+0x75, 0xea, 0x84, 0xa7, 0x9e, 0x7a, 0x2a, 0xe4, 
+0xff, 0xb5, 0x5b, 0x6f, 0xbd, 0x15, 0xbb, 0x77, 
+0xef, 0xc6, 0xe2, 0xc5, 0x8b, 0x91, 0x9d, 0x9d, 
+0x1d, 0x43, 0x0b, 0x1b, 0x07, 0x17, 0x01, 0x17, 
+0x5e, 0x78, 0xa1, 0xcf, 0xfd, 0xfa, 0x48, 0x40, 
+0xa0, 0x39, 0x01, 0xde, 0x68, 0x80, 0xe8, 0xf1, 
+0x78, 0x7c, 0x44, 0x00, 0x02, 0x6c, 0x1c, 0x44, 
+0x29, 0x55, 0xeb, 0xe6, 0xb8, 0x10, 0xe0, 0x93, 
+0x02, 0x83, 0x0d, 0x09, 0x0a, 0x95, 0x0a, 0xa8, 
+0x2f, 0x0a, 0xe0, 0x97, 0x02, 0x68, 0xac, 0x08, 
+0xd0, 0xcf, 0x08, 0x90, 0x24, 0x49, 0xd1, 0x0e, 
+0x0a, 0x6a, 0x68, 0x24, 0x80, 0xcf, 0x09, 0x20, 
+0x01, 0x26, 0x06, 0x12, 0xef, 0xee, 0x81, 0xa2, 
+0x28, 0xaa, 0x29, 0x01, 0xaf, 0x08, 0x30, 0x22, 
+0x01, 0x8d, 0xe4, 0x5c, 0x16, 0x01, 0xc9, 0xe2, 
+0xfc, 0x8f, 0x1c, 0x39, 0x82, 0x81, 0x03, 0x07, 
+0xe2, 0x96, 0x5b, 0x6e, 0xc1, 0xae, 0x5d, 0x01, 
+0x77, 0xcc, 0x0e, 0x88, 0x28, 0x8a, 0x98, 0x39, 
+0x73, 0x26, 0x36, 0x6e, 0xdc, 0x18, 0x93, 0xa1, 
+0x2a, 0x06, 0xfe, 0x1c, 0x3a, 0x74, 0xa8, 0xde, 
+0xc7, 0x34, 0x05, 0x01, 0xb0, 0x7a, 0xf5, 0x6a, 
+0xbf, 0x6d, 0x8b, 0xf5, 0x2c, 0x59, 0xb2, 0x04, 
+0x2b, 0x56, 0xac, 0x40, 0x6e, 0x6e, 0x6e, 0x8c, 
+0xac, 0x8a, 0x0c, 0x5a, 0x11, 0x10, 0x24, 0x12, 
+0x70, 0x47, 0x8f, 0x1e, 0x3d, 0x7a, 0x73, 0xe7, 
+0xaf, 0xad, 0x05, 0xe0, 0x11, 0x00, 0x3e, 0x23, 
+0x40, 0xbb, 0x8d, 0xb0, 0x7e, 0x64, 0xb0, 0xc7, 
+0xe3, 0xa1, 0xfa, 0x7a, 0x00, 0x8f, 0xc7, 0x43, 
+0xb4, 0x43, 0x82, 0xf8, 0x7c, 0x00, 0xa0, 0xae, 
+0x35, 0x50, 0x9b, 0x0a, 0xd0, 0x0f, 0x08, 0xd2, 
+0xa3, 0x8d, 0x02, 0x04, 0xac, 0x01, 0x68, 0x8c, 
+0x08, 0xd0, 0xb7, 0x07, 0xea, 0x45, 0x40, 0x63, 
+0xd2, 0x01, 0xde, 0xb6, 0x40, 0x9f, 0xb1, 0xc1, 
+0x94, 0x52, 0xb7, 0xc9, 0x64, 0x72, 0x53, 0x4a, 
+0xdd, 0xf0, 0x8a, 0x00, 0x1e, 0x09, 0xf0, 0x8a, 
+0x04, 0x43, 0x04, 0x34, 0x92, 0x73, 0x51, 0x04, 
+0x24, 0x8b, 0xf3, 0x2f, 0x29, 0x29, 0xc1, 0x8d, 
+0x37, 0xde, 0x88, 0xad, 0x5b, 0xb7, 0x36, 0xe8, 
+0x79, 0x97, 0x5c, 0x72, 0x09, 0xb6, 0x6c, 0xd9, 
+0x82, 0x27, 0x9f, 0x7c, 0x12, 0x82, 0x20, 0x44, 
+0xc9, 0x3a, 0x83, 0xfa, 0xa8, 0x2f, 0x02, 0x40, 
+0x08, 0x41, 0xdf, 0xbe, 0x01, 0x9b, 0x99, 0x92, 
+0x8a, 0xbc, 0xbc, 0xbc, 0x90, 0xe7, 0x4d, 0x26, 
+0x13, 0x86, 0x0e, 0x1d, 0x1a, 0x23, 0x6b, 0x22, 
+0x4f, 0x18, 0x91, 0x80, 0xd1, 0x3d, 0x7a, 0xf4, 
+0xe8, 0xc3, 0x23, 0x01, 0xf0, 0x46, 0x03, 0xe0, 
+0xad, 0x0b, 0x40, 0x80, 0x3d, 0x03, 0x02, 0xa5, 
+0x01, 0xf4, 0xf5, 0x00, 0xfa, 0x54, 0x40, 0x6d, 
+0x6d, 0x6d, 0xd0, 0x54, 0x40, 0x43, 0xa2, 0x00, 
+0x41, 0xe7, 0x00, 0x44, 0x4b, 0x04, 0x04, 0x4b, 
+0x07, 0x68, 0xe7, 0x04, 0xe8, 0x27, 0x06, 0xea, 
+0x45, 0x00, 0x8f, 0x04, 0x70, 0x11, 0xc0, 0x6b, 
+0x02, 0xf8, 0xe8, 0x60, 0x43, 0x04, 0x34, 0x9e, 
+0x73, 0x49, 0x04, 0x24, 0x8b, 0xf3, 0x77, 0x3a, 
+0x9d, 0xb8, 0xf9, 0xe6, 0x9b, 0xb1, 0x7f, 0xff, 
+0xfe, 0xb0, 0x9f, 0x43, 0x08, 0xc1, 0xc4, 0x89, 
+0x13, 0xb1, 0x6b, 0xd7, 0xae, 0x26, 0xb1, 0xb2, 
+0x4c, 0x76, 0x0e, 0x1c, 0x38, 0x10, 0xf2, 0xfc, 
+0x35, 0xd7, 0x5c, 0x83, 0xe6, 0xcd, 0x9b, 0xc7, 
+0xc8, 0x9a, 0xe8, 0x51, 0xdf, 0x75, 0x0e, 0x1c, 
+0x38, 0x30, 0xa6, 0x83, 0x7d, 0xa2, 0x81, 0x28, 
+0x8a, 0xf8, 0xdd, 0xef, 0x7e, 0x17, 0x2a, 0x12, 
+0x30, 0xba, 0x5b, 0xb7, 0x6e, 0xbd, 0xf4, 0xe3, 
+0x82, 0xb5, 0x91, 0x00, 0xe8, 0x8a, 0x02, 0x03, 
+0x09, 0x01, 0x6d, 0x1a, 0x40, 0x9f, 0x0a, 0x70, 
+0x3a, 0x9d, 0xa4, 0x4d, 0x9b, 0x36, 0xa8, 0xa9, 
+0xa9, 0x21, 0x5c, 0x8c, 0xf0, 0x54, 0x00, 0x50, 
+0x7f, 0x14, 0x80, 0x13, 0x72, 0x10, 0x50, 0x24, 
+0x45, 0x00, 0x2f, 0x0c, 0xd4, 0xa6, 0x03, 0xd2, 
+0xd2, 0xd2, 0xd4, 0x16, 0x41, 0xed, 0xb0, 0x20, 
+0x04, 0x18, 0x1b, 0x4c, 0x02, 0x0c, 0x0b, 0xe2, 
+0x22, 0x40, 0x5b, 0x18, 0xa8, 0xe9, 0xc7, 0x34, 
+0x44, 0x40, 0x23, 0x39, 0x17, 0x44, 0x40, 0xb2, 
+0x38, 0x7f, 0xa0, 0x2e, 0x64, 0x5a, 0x5f, 0x01, 
+0x99, 0x96, 0xf6, 0xed, 0xdb, 0x63, 0xcd, 0x9a, 
+0x35, 0xf8, 0xf7, 0xbf, 0xff, 0x0d, 0xab, 0xd5, 
+0x1a, 0x45, 0xcb, 0x0c, 0xc2, 0xa5, 0xbe, 0xcf, 
+0xef, 0x9e, 0x7b, 0xee, 0x89, 0x91, 0x25, 0x91, 
+0xc7, 0xe5, 0x72, 0xa9, 0xff, 0xae, 0x4f, 0x00, 
+0xdc, 0x70, 0xc3, 0x0d, 0xd1, 0x36, 0x27, 0x26, 
+0x68, 0x45, 0x00, 0x87, 0x8b, 0x01, 0x42, 0x08, 
+0xed, 0xd9, 0xb3, 0xe7, 0x98, 0xce, 0x9d, 0x3b, 
+0x67, 0xf3, 0xf6, 0x40, 0x42, 0x88, 0xe8, 0xdd, 
+0x52, 0x58, 0x84, 0x57, 0x00, 0x78, 0x0f, 0xbf, 
+0xd5, 0x3f, 0xd5, 0x61, 0x36, 0x9b, 0x89, 0xc5, 
+0x62, 0x21, 0xfa, 0x54, 0x00, 0x8f, 0x02, 0x54, 
+0x56, 0x56, 0x06, 0x8c, 0x02, 0x68, 0x0b, 0x02, 
+0x83, 0x45, 0x01, 0x42, 0x0a, 0x00, 0xef, 0x13, 
+0x22, 0x22, 0x02, 0x02, 0x75, 0x07, 0xc8, 0xb2, 
+0xac, 0xe8, 0x45, 0x00, 0x4f, 0x07, 0x40, 0x23, 
+0x02, 0x04, 0x41, 0xf0, 0x58, 0x2c, 0x16, 0x4f, 
+0xb0, 0x48, 0x80, 0xbe, 0x3b, 0x80, 0xdf, 0x1a, 
+0x22, 0xa0, 0xf1, 0x34, 0x65, 0x11, 0x90, 0x4c, 
+0xce, 0x1f, 0x00, 0x16, 0x2e, 0x5c, 0x18, 0xf4, 
+0x9c, 0x20, 0x08, 0x38, 0x7c, 0xf8, 0x30, 0xde, 
+0x7d, 0xf7, 0x5d, 0xdc, 0x7e, 0xfb, 0xed, 0xb8, 
+0xfb, 0xee, 0xbb, 0xb1, 0x77, 0xef, 0x5e, 0x5c, 
+0x7f, 0xfd, 0xf5, 0xb1, 0x33, 0xd0, 0x20, 0x24, 
+0x25, 0x25, 0x25, 0x21, 0x1d, 0xa3, 0xcd, 0x66, 
+0xc3, 0xc8, 0x91, 0x23, 0x63, 0x68, 0xd1, 0xd9, 
+0x73, 0xfa, 0xf4, 0x69, 0xcc, 0x9b, 0x37, 0x0f, 
+0x43, 0x86, 0x0c, 0x41, 0xfb, 0xf6, 0xed, 0x51, 
+0x53, 0x53, 0x03, 0x59, 0x96, 0x7d, 0x86, 0xe6, 
+0x04, 0xa2, 0xa9, 0x08, 0x00, 0xa0, 0x4e, 0x04, 
+0xdc, 0x7a, 0xeb, 0xad, 0x6a, 0x24, 0x40, 0x0b, 
+0x21, 0x44, 0xec, 0xdb, 0xb7, 0xef, 0x1f, 0x3a, 
+0x74, 0xe8, 0x70, 0x01, 0x00, 0x51, 0x1f, 0x0d, 
+0xd0, 0xd6, 0x02, 0x78, 0x0f, 0x81, 0x1f, 0xda, 
+0xd9, 0x00, 0x3c, 0x15, 0xe0, 0x74, 0x3a, 0xa9, 
+0x24, 0x49, 0x24, 0x25, 0x25, 0x85, 0x58, 0xad, 
+0x56, 0xa2, 0xdd, 0x3a, 0x38, 0xd0, 0x6c, 0x80, 
+0xfa, 0xe0, 0x75, 0x00, 0x24, 0xdc, 0xbd, 0xd0, 
+0xb5, 0x85, 0x03, 0xc1, 0xa6, 0x05, 0x7a, 0x0d, 
+0x20, 0x40, 0x5d, 0x45, 0x62, 0x56, 0x56, 0x16, 
+0x29, 0x2b, 0x2b, 0x23, 0x76, 0xbb, 0x9d, 0x64, 
+0x64, 0x64, 0x90, 0x9a, 0x9a, 0x1a, 0x72, 0xde, 
+0x79, 0xe7, 0x91, 0xf2, 0xf2, 0x72, 0x2a, 0x8a, 
+0x22, 0x75, 0xbb, 0xdd, 0x84, 0x87, 0x39, 0xec, 
+0x76, 0xbb, 0x3a, 0x31, 0xd0, 0xed, 0x76, 0x53, 
+0x68, 0x2a, 0x24, 0xf9, 0xad, 0xdb, 0xed, 0xe6, 
+0x33, 0x95, 0x4d, 0x00, 0x44, 0xef, 0x9c, 0x65, 
+0x7d, 0x88, 0x45, 0x9d, 0x16, 0xa8, 0x99, 0xd1, 
+0x6c, 0xe9, 0xd5, 0xab, 0xd7, 0xef, 0x32, 0x32, 
+0x32, 0x7e, 0x13, 0xe8, 0xda, 0x8c, 0x89, 0x81, 
+0xc1, 0x69, 0x6a, 0x13, 0x03, 0x93, 0xcd, 0xf9, 
+0x1f, 0x3d, 0x7a, 0x14, 0x17, 0x5e, 0x78, 0x61, 
+0xd0, 0x2a, 0xde, 0xde, 0xbd, 0x7b, 0xe3, 0x87, 
+0x1f, 0x7e, 0x88, 0xb1, 0x55, 0x06, 0x0d, 0x61, 
+0xe5, 0xca, 0x95, 0xf8, 0xdd, 0xef, 0x7e, 0x17, 
+0xf0, 0x5c, 0x66, 0x66, 0x26, 0x66, 0xcc, 0x98, 
+0x81, 0x09, 0x13, 0x26, 0xc4, 0xd8, 0xaa, 0x86, 
+0x73, 0xfa, 0xf4, 0x69, 0x2c, 0x5d, 0xba, 0x14, 
+0x4b, 0x96, 0x2c, 0xc1, 0xb7, 0xdf, 0x7e, 0xeb, 
+0x33, 0x5f, 0x62, 0xf2, 0xe4, 0xc9, 0xb8, 0xff, 
+0xfe, 0xfb, 0x43, 0x56, 0xf4, 0xb7, 0x68, 0xd1, 
+0x02, 0x25, 0x25, 0x25, 0xa8, 0x2b, 0x74, 0x6f, 
+0x3a, 0x48, 0x92, 0x84, 0x95, 0x2b, 0x57, 0xaa, 
+0x33, 0x1e, 0xb4, 0x62, 0x40, 0x92, 0xa4, 0xea, 
+0xef, 0xbe, 0xfb, 0xee, 0xf5, 0xd2, 0xd2, 0xd2, 
+0x62, 0x6f, 0xf7, 0x9a, 0x8b, 0x47, 0xad, 0xbd, 
+0x13, 0x02, 0xf9, 0xe1, 0xe1, 0x87, 0x20, 0x08, 
+0x1e, 0x41, 0x10, 0x3c, 0x3c, 0x1d, 0xae, 0x9d, 
+0x12, 0xc8, 0x0f, 0xed, 0x2e, 0xbc, 0x1e, 0x8f, 
+0x47, 0xd1, 0x4e, 0x08, 0x74, 0xb9, 0x5c, 0x0a, 
+0x50, 0xb7, 0x18, 0xef, 0xde, 0xbd, 0x3b, 0x2b, 
+0x28, 0x28, 0x60, 0x80, 0xef, 0xc2, 0x9d, 0x10, 
+0x02, 0xc6, 0x18, 0x0b, 0xfb, 0x93, 0x08, 0x37, 
+0x12, 0xc0, 0xf7, 0x0d, 0x08, 0x27, 0x12, 0x90, 
+0x96, 0x96, 0xa6, 0x6e, 0x21, 0x0c, 0xcd, 0xc4, 
+0x40, 0xb3, 0xd9, 0xac, 0x40, 0xb7, 0x8b, 0xa0, 
+0x77, 0x5a, 0x60, 0x58, 0x2d, 0x82, 0x3c, 0x0d, 
+0x60, 0xa4, 0x03, 0xce, 0x9e, 0xa6, 0x14, 0x09, 
+0x48, 0x36, 0xe7, 0x0f, 0x00, 0xef, 0xbf, 0xff, 
+0x7e, 0xc8, 0x36, 0xbf, 0x41, 0x83, 0x06, 0xc5, 
+0xd0, 0x1a, 0x83, 0xc6, 0xb0, 0x76, 0xed, 0x5a, 
+0xbf, 0xfb, 0xba, 0x74, 0xe9, 0x82, 0xd7, 0x5f, 
+0x7f, 0x1d, 0xc7, 0x8e, 0x1d, 0x4b, 0x68, 0xe7, 
+0x5f, 0x55, 0x55, 0xa5, 0xae, 0xf4, 0xb3, 0xb2, 
+0xb2, 0xf0, 0xc0, 0x03, 0x0f, 0x60, 0xfd, 0xfa, 
+0xf5, 0x7e, 0xc3, 0xa5, 0xfe, 0xf9, 0xcf, 0x7f, 
+0xe2, 0x1f, 0xff, 0xf8, 0x47, 0xc8, 0xd7, 0xba, 
+0xe3, 0x8e, 0x3b, 0x9a, 0x9c, 0xf3, 0x07, 0x7e, 
+0x8d, 0x04, 0x64, 0x65, 0x65, 0xf9, 0x45, 0x02, 
+0x4c, 0x26, 0x53, 0xb3, 0x2b, 0xaf, 0xbc, 0xf2, 
+0xbe, 0xf4, 0xf4, 0xf4, 0x16, 0xf0, 0x46, 0x02, 
+0x02, 0xa4, 0x01, 0x02, 0xa6, 0x02, 0xdc, 0x6e, 
+0xb7, 0x20, 0x49, 0x12, 0x75, 0xb9, 0x5c, 0x82, 
+0xdb, 0xed, 0xa6, 0x92, 0x24, 0x11, 0x49, 0x92, 
+0x48, 0xa0, 0xd9, 0x00, 0xda, 0x5a, 0x00, 0x6d, 
+0x47, 0x00, 0xe0, 0x5f, 0x0c, 0xc8, 0x21, 0x84, 
+0x90, 0x06, 0x7d, 0x1a, 0x0d, 0x19, 0x19, 0xec, 
+0x35, 0x24, 0xa4, 0x08, 0xa8, 0xa9, 0xa9, 0x61, 
+0x5c, 0x04, 0xf0, 0xb1, 0xc1, 0x5c, 0xe1, 0x68, 
+0xb7, 0x12, 0xd6, 0x0a, 0x81, 0x30, 0x45, 0x80, 
+0x87, 0x17, 0x04, 0xea, 0x44, 0x80, 0x31, 0x36, 
+0xb8, 0x11, 0x34, 0x05, 0x11, 0x90, 0x8c, 0xce, 
+0x1f, 0x00, 0xd6, 0xad, 0x5b, 0x17, 0xf2, 0xfc, 
+0x65, 0x97, 0x5d, 0x16, 0x23, 0x4b, 0x0c, 0x1a, 
+0x83, 0xdd, 0x6e, 0xc7, 0x7b, 0xef, 0xbd, 0xa7, 
+0xfe, 0x3c, 0x68, 0xd0, 0x20, 0x7c, 0xfa, 0xe9, 
+0xa7, 0x28, 0x2c, 0x2c, 0xc4, 0x83, 0x0f, 0x3e, 
+0x98, 0xf0, 0x35, 0x1a, 0x7f, 0xfc, 0xe3, 0x1f, 
+0x83, 0x3a, 0x7d, 0x2d, 0x8a, 0xa2, 0x60, 0xf1, 
+0xe2, 0xc5, 0x41, 0xcf, 0x67, 0x64, 0x64, 0xe0, 
+0xe9, 0xa7, 0x9f, 0x8e, 0x86, 0x89, 0x09, 0x01, 
+0xef, 0x0e, 0xc8, 0xcc, 0xcc, 0x54, 0xef, 0xe3, 
+0x3e, 0xd2, 0x6c, 0x36, 0xb7, 0xb8, 0xfa, 0xea, 
+0xab, 0xef, 0xb3, 0x5a, 0xad, 0x69, 0x84, 0x10, 
+0x11, 0x75, 0x9d, 0x01, 0xa2, 0x77, 0x40, 0x90, 
+0xc8, 0x18, 0x13, 0x25, 0x49, 0x12, 0x09, 0x21, 
+0x82, 0x24, 0x49, 0x82, 0x2c, 0xcb, 0xd4, 0xe3, 
+0xf1, 0xa8, 0x33, 0x01, 0x28, 0xa5, 0x6a, 0x27, 
+0x80, 0x20, 0x08, 0x54, 0x92, 0x24, 0xe2, 0xf1, 
+0x78, 0xd4, 0xcd, 0x82, 0x00, 0x40, 0x5b, 0x0b, 
+0xa0, 0xb5, 0x8b, 0x77, 0x04, 0x04, 0xa3, 0xc1, 
+0x72, 0x2c, 0x5c, 0x11, 0x10, 0x6e, 0x4d, 0x80, 
+0x5e, 0x04, 0x68, 0xb7, 0x12, 0xe6, 0x22, 0x00, 
+0xba, 0x68, 0x80, 0x56, 0x04, 0x04, 0x6a, 0x11, 
+0x0c, 0x21, 0x02, 0xdc, 0x86, 0x08, 0x68, 0x1c, 
+0xc9, 0x2c, 0x02, 0x92, 0xd5, 0xf9, 0x33, 0xc6, 
+0xb0, 0x73, 0xe7, 0xce, 0x90, 0x8f, 0x31, 0x04, 
+0x40, 0x62, 0xb3, 0x60, 0xc1, 0x02, 0xd4, 0xd4, 
+0xd4, 0x60, 0xc4, 0x88, 0x11, 0xd8, 0xb4, 0x69, 
+0x13, 0xbe, 0xff, 0xfe, 0x7b, 0xdc, 0x76, 0xdb, 
+0x6d, 0x49, 0xb1, 0x12, 0x3e, 0x70, 0xe0, 0x00, 
+0x3e, 0xfd, 0xf4, 0xd3, 0x46, 0x3f, 0x9f, 0x52, 
+0x8a, 0xec, 0xec, 0x6c, 0x50, 0x4a, 0xf1, 0xcc, 
+0x33, 0xcf, 0xa0, 0x65, 0xcb, 0x96, 0x11, 0xb4, 
+0x2e, 0xf1, 0xb0, 0x58, 0x2c, 0xb8, 0xed, 0xb6, 
+0xdb, 0x90, 0x9e, 0x9e, 0xee, 0x17, 0x09, 0x48, 
+0x4d, 0x4d, 0x6d, 0x37, 0x78, 0xf0, 0xe0, 0x3f, 
+0x0b, 0x82, 0x60, 0x85, 0x66, 0xe5, 0xaf, 0x28, 
+0x8a, 0xa0, 0x28, 0x8a, 0xc0, 0x9d, 0x3f, 0xef, 
+0x04, 0xd0, 0x17, 0x02, 0xf2, 0x5a, 0x00, 0x49, 
+0x92, 0x88, 0xc5, 0x62, 0x51, 0x6b, 0x01, 0x00, 
+0x40, 0xdf, 0x11, 0xc0, 0xe7, 0x02, 0x68, 0xa7, 
+0x03, 0x06, 0xa3, 0x51, 0xff, 0x0b, 0x23, 0x5d, 
+0x18, 0x78, 0x36, 0x22, 0x40, 0x5b, 0x18, 0x08, 
+0x40, 0x22, 0x84, 0x78, 0x0c, 0x11, 0x10, 0x1d, 
+0x92, 0x51, 0x04, 0x24, 0xab, 0xf3, 0x07, 0x80, 
+0xc2, 0xc2, 0xc2, 0x90, 0xd3, 0xd4, 0xda, 0xb4, 
+0x69, 0x13, 0x70, 0xdf, 0x72, 0x83, 0xc4, 0x41, 
+0x96, 0x65, 0x14, 0x16, 0x16, 0x62, 0xe9, 0xd2, 
+0xa5, 0x49, 0x27, 0xd6, 0x2a, 0x2b, 0x2b, 0xcf, 
+0xea, 0xf9, 0x2d, 0x5a, 0xb4, 0xc0, 0xe1, 0xc3, 
+0x87, 0x91, 0x9b, 0x9b, 0x8b, 0xf1, 0xe3, 0xc7, 
+0x47, 0xc8, 0xaa, 0xc4, 0xc6, 0x66, 0xb3, 0x61, 
+0xc4, 0x88, 0x11, 0x3e, 0x91, 0x1d, 0xee, 0x23, 
+0x9b, 0x35, 0x6b, 0xd6, 0x69, 0xf0, 0xe0, 0xc1, 
+0x63, 0x65, 0x59, 0xe6, 0xdb, 0x01, 0xfb, 0x1c, 
+0x84, 0x10, 0x81, 0x1f, 0x92, 0x24, 0x09, 0x1e, 
+0x8f, 0x47, 0x90, 0x24, 0x89, 0x4a, 0x92, 0x44, 
+0xb5, 0x51, 0x00, 0xa7, 0xd3, 0x49, 0x1d, 0x0e, 
+0x07, 0xd5, 0x46, 0x01, 0x6a, 0x6b, 0x6b, 0x09, 
+0x00, 0x54, 0x56, 0x56, 0x06, 0x5c, 0xf1, 0x07, 
+0xeb, 0x06, 0x68, 0xb4, 0x0c, 0x4d, 0x54, 0x11, 
+0xc0, 0x1d, 0x3f, 0x1f, 0x16, 0x64, 0x88, 0x80, 
+0xc8, 0x92, 0x4c, 0x22, 0x20, 0x99, 0x9d, 0x3f, 
+0x50, 0x7f, 0xeb, 0x98, 0x91, 0xff, 0x4f, 0x7c, 
+0xfe, 0xfe, 0xf7, 0xbf, 0x27, 0xed, 0xf4, 0xc5, 
+0x9a, 0x9a, 0x9a, 0xb3, 0x7a, 0x7e, 0x69, 0x69, 
+0x29, 0x7a, 0xf5, 0xea, 0x85, 0xa5, 0x4b, 0x97, 
+0x9e, 0x53, 0x43, 0xa8, 0x9a, 0x37, 0x6f, 0x8e, 
+0xe1, 0xc3, 0x87, 0xc3, 0x62, 0xb1, 0xf8, 0x45, 
+0x02, 0x32, 0x32, 0x32, 0x72, 0xfb, 0xf5, 0xeb, 
+0x77, 0x39, 0xbc, 0xab, 0x7f, 0x6f, 0x2a, 0x40, 
+0x90, 0x65, 0x59, 0xd0, 0x76, 0x03, 0x10, 0x42, 
+0x7c, 0x22, 0x00, 0x8a, 0xa2, 0x10, 0x59, 0x96, 
+0x89, 0xb6, 0x16, 0x80, 0x47, 0x01, 0x5c, 0x2e, 
+0x97, 0x3a, 0x1d, 0x10, 0x00, 0x78, 0x4b, 0x20, 
+0x9f, 0xff, 0xc1, 0x5b, 0x02, 0x03, 0x71, 0x56, 
+0x71, 0xa8, 0x48, 0x8a, 0x00, 0xbe, 0x95, 0x70, 
+0xb8, 0x22, 0x40, 0x3b, 0x30, 0x48, 0x2b, 0x02, 
+0xb4, 0x73, 0x02, 0x00, 0x78, 0x0c, 0x11, 0x10, 
+0x79, 0x92, 0x41, 0x04, 0x24, 0xbb, 0xf3, 0x07, 
+0x0c, 0x01, 0x60, 0x10, 0x5f, 0xec, 0x76, 0xfb, 
+0x59, 0x3d, 0xff, 0x81, 0x07, 0x1e, 0xc0, 0xa6, 
+0x4d, 0x9b, 0xfc, 0x76, 0xd2, 0x3b, 0x17, 0x68, 
+0xdd, 0xba, 0x35, 0x6e, 0xb9, 0xe5, 0x16, 0x55, 
+0xf8, 0x68, 0x07, 0x06, 0x75, 0xee, 0xdc, 0x79, 
+0x78, 0xcb, 0x96, 0x2d, 0x5b, 0xc3, 0xbb, 0xea, 
+0x87, 0x66, 0xf5, 0x4f, 0x29, 0xa5, 0xda, 0x28, 
+0x80, 0x2c, 0xcb, 0x6a, 0x04, 0x80, 0x52, 0x4a, 
+0x4d, 0x26, 0x13, 0xe1, 0x73, 0x01, 0x78, 0x04, 
+0x40, 0x3b, 0x1d, 0x50, 0x5b, 0x0c, 0x58, 0x5c, 
+0x5c, 0xac, 0xa6, 0x01, 0x82, 0x71, 0xd6, 0x89, 
+0xa8, 0xc6, 0x8a, 0x00, 0xbe, 0x81, 0x90, 0x24, 
+0x49, 0x0a, 0xdf, 0x4a, 0xb8, 0x3e, 0x11, 0x00, 
+0xaf, 0x00, 0x80, 0x46, 0x08, 0x58, 0x2c, 0x96, 
+0xa0, 0x22, 0xc0, 0x64, 0x32, 0x19, 0x22, 0x20, 
+0x4a, 0x24, 0xb2, 0x08, 0x68, 0x0a, 0xce, 0x1f, 
+0x00, 0xb6, 0x6d, 0xdb, 0x16, 0xf2, 0x7c, 0xb2, 
+0x85, 0x94, 0x0d, 0x92, 0x8b, 0x93, 0x27, 0x4f, 
+0x36, 0xea, 0x79, 0x69, 0x69, 0x69, 0xf8, 0xf0, 
+0xc3, 0x0f, 0xf1, 0xc6, 0x1b, 0x6f, 0xc0, 0x62, 
+0xb1, 0x44, 0xd8, 0xaa, 0xe4, 0xa1, 0x43, 0x87, 
+0x0e, 0xb8, 0xfe, 0xfa, 0xeb, 0xfd, 0xa2, 0x00, 
+0x94, 0x52, 0xcb, 0xc0, 0x81, 0x03, 0xef, 0x86, 
+0xb7, 0x18, 0xd0, 0x1b, 0x09, 0x10, 0x00, 0x08, 
+0xde, 0x68, 0x00, 0x95, 0x65, 0x99, 0x7a, 0x8b, 
+0xf4, 0x05, 0x4a, 0x29, 0x95, 0x24, 0x89, 0x2a, 
+0x8a, 0x42, 0xb4, 0xb5, 0x00, 0xda, 0x62, 0xc0, 
+0x16, 0x2d, 0x5a, 0xa8, 0xaf, 0x1f, 0x6e, 0x1a, 
+0x00, 0x88, 0x80, 0x00, 0x00, 0xce, 0x6e, 0x17, 
+0xc1, 0xcc, 0xcc, 0x4c, 0x1f, 0x11, 0xd0, 0xa2, 
+0x45, 0x0b, 0x3e, 0x20, 0xc8, 0x4f, 0x04, 0xd8, 
+0x6c, 0x36, 0x1f, 0x01, 0x00, 0x43, 0x04, 0xc4, 
+0x95, 0x44, 0x14, 0x01, 0x4d, 0xc5, 0xf9, 0x7b, 
+0x3c, 0x9e, 0x90, 0x73, 0xd5, 0x4d, 0x26, 0x13, 
+0x7e, 0xf3, 0x9b, 0x80, 0x63, 0x2d, 0x0c, 0x0c, 
+0x22, 0x42, 0x43, 0x05, 0x40, 0x4e, 0x4e, 0x0e, 
+0xfe, 0xfd, 0xef, 0x7f, 0xe3, 0xe8, 0xd1, 0xa3, 
+0x18, 0x33, 0x66, 0x4c, 0x94, 0xac, 0x4a, 0x2e, 
+0xb2, 0xb3, 0xb3, 0x7d, 0xbe, 0x23, 0x79, 0x24, 
+0xc0, 0x66, 0xb3, 0x75, 0x1e, 0x30, 0x60, 0xc0, 
+0x10, 0x6d, 0xde, 0x5f, 0x51, 0x14, 0x0a, 0xc0, 
+0xe7, 0x67, 0x59, 0x96, 0xa9, 0xa2, 0x28, 0x44, 
+0x1f, 0x01, 0xe0, 0x51, 0x80, 0x94, 0x94, 0x14, 
+0x92, 0x9e, 0x9e, 0x8e, 0x40, 0x69, 0x00, 0xa0, 
+0xfe, 0x0d, 0xa6, 0x22, 0x56, 0x8a, 0xda, 0x58, 
+0x11, 0x90, 0x9f, 0x9f, 0x0f, 0x2e, 0x02, 0xb2, 
+0xb2, 0xb2, 0x94, 0xaa, 0xaa, 0x2a, 0x66, 0xb7, 
+0xdb, 0x59, 0x20, 0x11, 0x20, 0xcb, 0xb2, 0x62, 
+0x88, 0x80, 0xc4, 0x22, 0x91, 0x44, 0x40, 0x53, 
+0x71, 0xfe, 0x00, 0xb0, 0x77, 0xef, 0x5e, 0x38, 
+0x9d, 0xce, 0xa0, 0xe7, 0x73, 0x73, 0x73, 0x91, 
+0x92, 0x92, 0x12, 0x43, 0x8b, 0x22, 0x43, 0x7e, 
+0x7e, 0x3e, 0x5e, 0x7a, 0xe9, 0x25, 0x94, 0x97, 
+0x97, 0xc7, 0xdb, 0x14, 0x83, 0x7a, 0x08, 0x47, 
+0x00, 0xa4, 0xa4, 0xa4, 0x60, 0xec, 0xd8, 0xb1, 
+0xd8, 0xb8, 0x71, 0x23, 0x7e, 0xfc, 0xf1, 0x47, 
+0x4c, 0x9c, 0x38, 0xb1, 0x49, 0xec, 0x69, 0x10, 
+0x49, 0xae, 0xba, 0xea, 0x2a, 0x9c, 0x77, 0xde, 
+0x79, 0x7e, 0x91, 0x80, 0xf3, 0xcf, 0x3f, 0xff, 
+0x96, 0xf6, 0xed, 0xdb, 0x77, 0xe0, 0x9d, 0x00, 
+0x8a, 0xa2, 0x08, 0x8c, 0x31, 0xca, 0x1d, 0xbf, 
+0xb7, 0xf0, 0x8f, 0xf0, 0x1a, 0x00, 0x49, 0x92, 
+0xa8, 0x2c, 0xcb, 0x84, 0xaf, 0xfe, 0xb5, 0x11, 
+0x80, 0x40, 0x69, 0x80, 0xb2, 0xb2, 0x32, 0xc2, 
+0xd3, 0x00, 0xc1, 0xda, 0x01, 0x23, 0xda, 0xad, 
+0x16, 0x80, 0xcb, 0x00, 0x00, 0x20, 0x00, 0x49, 
+0x44, 0x41, 0x54, 0x8b, 0x72, 0xb6, 0x22, 0xa0, 
+0xac, 0xac, 0x8c, 0x65, 0x65, 0x65, 0x29, 0x56, 
+0xab, 0x55, 0x15, 0x01, 0x1e, 0x8f, 0xc7, 0x10, 
+0x01, 0x09, 0x4e, 0x22, 0x88, 0x80, 0xa6, 0xe4, 
+0xfc, 0x81, 0xfa, 0xf3, 0xff, 0x03, 0x06, 0x0c, 
+0x88, 0x91, 0x25, 0x67, 0x8f, 0x24, 0x49, 0xf8, 
+0xf4, 0xd3, 0x4f, 0x71, 0xed, 0xb5, 0xd7, 0x62, 
+0xe4, 0xc8, 0x91, 0x18, 0x3b, 0x76, 0x2c, 0xb4, 
+0x21, 0x4b, 0x83, 0xc4, 0xa4, 0xb8, 0xb8, 0x38, 
+0xe4, 0xf9, 0xbe, 0x7d, 0xfb, 0xa2, 0xa8, 0xa8, 
+0x08, 0xef, 0xbd, 0xf7, 0x1e, 0x2e, 0xbf, 0xfc, 
+0xf2, 0x18, 0x59, 0x95, 0x7c, 0x98, 0xcd, 0x66, 
+0xbf, 0x54, 0x00, 0x21, 0x04, 0x94, 0x52, 0xb1, 
+0x5f, 0xbf, 0x7e, 0xf7, 0x8a, 0xa2, 0x28, 0x12, 
+0x42, 0xd4, 0x90, 0x3f, 0x2f, 0x00, 0xe4, 0xa9, 
+0x00, 0x2e, 0x06, 0x44, 0x51, 0x24, 0x3c, 0x15, 
+0xa0, 0x4f, 0x03, 0x00, 0x40, 0x7d, 0x69, 0x00, 
+0x7d, 0x21, 0x20, 0x63, 0x2c, 0xb2, 0x02, 0xc0, 
+0xfb, 0xa2, 0x11, 0x15, 0x01, 0xe9, 0xe9, 0xe9, 
+0x31, 0x13, 0x01, 0x94, 0x52, 0x63, 0x58, 0x50, 
+0x23, 0x89, 0xa7, 0x08, 0x68, 0x6a, 0xce, 0x1f, 
+0x68, 0x1a, 0x02, 0xe0, 0xd4, 0xa9, 0x53, 0x78, 
+0xe6, 0x99, 0x67, 0xd0, 0xa9, 0x53, 0x27, 0xdc, 
+0x7e, 0xfb, 0xed, 0xd8, 0xbe, 0x7d, 0x3b, 0x3e, 
+0xfd, 0xf4, 0x53, 0xb4, 0x6d, 0xdb, 0x36, 0xde, 
+0xa6, 0x19, 0x84, 0x41, 0x7d, 0x11, 0x80, 0x9b, 
+0x6f, 0xbe, 0x19, 0x19, 0x19, 0x19, 0x31, 0xb2, 
+0x26, 0xb9, 0xc9, 0xca, 0xca, 0x42, 0x9f, 0x3e, 
+0x7d, 0x00, 0xf8, 0x8e, 0x0a, 0x4e, 0x49, 0x49, 
+0xe9, 0x90, 0x9b, 0x9b, 0x7b, 0xa9, 0x3e, 0x02, 
+0xa0, 0x28, 0x8a, 0x4f, 0x07, 0x00, 0x3f, 0x44, 
+0x51, 0x24, 0x3c, 0x0d, 0x10, 0xa8, 0x1b, 0xa0, 
+0xa1, 0x76, 0x45, 0x65, 0x1a, 0x45, 0xa2, 0x88, 
+0x00, 0xef, 0xa6, 0x40, 0x61, 0x8b, 0x00, 0xef, 
+0xfd, 0x86, 0x08, 0x68, 0x24, 0xf1, 0x10, 0x01, 
+0x4d, 0xd1, 0xf9, 0x03, 0xf5, 0x17, 0x00, 0x26, 
+0xb2, 0x00, 0xd8, 0xbc, 0x79, 0x33, 0xee, 0xba, 
+0xeb, 0x2e, 0x9c, 0x7f, 0xfe, 0xf9, 0x78, 0xf2, 
+0xc9, 0x27, 0x71, 0xfc, 0xf8, 0x71, 0x00, 0xc0, 
+0xb3, 0xcf, 0x3e, 0x1b, 0xf6, 0x66, 0x25, 0x06, 
+0xb1, 0x67, 0xcd, 0x9a, 0x35, 0x78, 0xf3, 0xcd, 
+0x37, 0xd5, 0x9f, 0xf9, 0xe7, 0x16, 0x0c, 0x63, 
+0xff, 0x94, 0x86, 0x71, 0xe9, 0xa5, 0x97, 0xfa, 
+0x0d, 0x43, 0x22, 0x84, 0x20, 0x2b, 0x2b, 0xeb, 
+0x0a, 0xc6, 0x18, 0xf5, 0x76, 0x00, 0x50, 0x2e, 
+0x02, 0x18, 0x63, 0x84, 0x0b, 0x01, 0x5e, 0x0b, 
+0xc0, 0xdb, 0x01, 0x01, 0xc0, 0x6c, 0x36, 0x13, 
+0x9b, 0xcd, 0x06, 0x00, 0x70, 0xbb, 0xdd, 0xea, 
+0x50, 0x20, 0x7d, 0x1d, 0x40, 0x28, 0xa2, 0x36, 
+0x8e, 0x2a, 0x11, 0x44, 0x00, 0x63, 0x4c, 0x6e, 
+0x80, 0x08, 0x70, 0x1b, 0x22, 0xe0, 0xec, 0x89, 
+0xa5, 0x08, 0x68, 0xaa, 0xce, 0xdf, 0x6e, 0xb7, 
+0xa3, 0xa0, 0xa0, 0x20, 0xe8, 0xf9, 0xb4, 0xb4, 
+0x34, 0x5c, 0x72, 0xc9, 0x25, 0x31, 0xb4, 0x28, 
+0x3c, 0x18, 0x63, 0x18, 0x35, 0x6a, 0x14, 0x2e, 
+0xbb, 0xec, 0x32, 0xfc, 0xf7, 0xbf, 0xff, 0x85, 
+0xdb, 0xed, 0x56, 0xcf, 0x0d, 0x18, 0x30, 0x00, 
+0x13, 0x27, 0x4e, 0x8c, 0xa3, 0x75, 0x06, 0xc1, 
+0xd8, 0xb9, 0x73, 0x27, 0xae, 0xbb, 0xee, 0x3a, 
+0x0c, 0x1d, 0x3a, 0x14, 0x7f, 0xfb, 0xdb, 0xdf, 
+0xf0, 0xcb, 0x2f, 0xbf, 0xe0, 0xe0, 0xc1, 0x83, 
+0x38, 0x7a, 0xf4, 0x68, 0xd0, 0xe7, 0x58, 0x2c, 
+0x16, 0xa3, 0x0d, 0xb5, 0x81, 0x08, 0x82, 0x80, 
+0x6b, 0xae, 0xb9, 0x06, 0x80, 0x6f, 0x5b, 0xa0, 
+0xcd, 0x66, 0xeb, 0x92, 0x95, 0x95, 0xd5, 0x86, 
+0xaf, 0xfc, 0xbd, 0x29, 0x00, 0xc2, 0x9d, 0x3e, 
+0x63, 0x8c, 0x88, 0xa2, 0xa8, 0xd6, 0x02, 0xf0, 
+0x3a, 0x00, 0x7e, 0xcb, 0x53, 0x00, 0x5c, 0x04, 
+0x70, 0xb4, 0x5b, 0x15, 0x73, 0x78, 0x27, 0x00, 
+0x27, 0xaa, 0xf3, 0x28, 0x23, 0x21, 0x02, 0xdc, 
+0x6e, 0x77, 0xac, 0x22, 0x01, 0x1e, 0x43, 0x04, 
+0x44, 0x86, 0x58, 0x88, 0x80, 0xa6, 0xea, 0xfc, 
+0x01, 0x60, 0xcb, 0x96, 0x2d, 0x21, 0xe7, 0xae, 
+0xff, 0xe6, 0x37, 0xbf, 0x49, 0xc8, 0x51, 0xb2, 
+0xcf, 0x3f, 0xff, 0x3c, 0x3e, 0xf9, 0xe4, 0x13, 
+0xbf, 0xfb, 0x4d, 0x26, 0x13, 0xfe, 0xf3, 0x9f, 
+0xff, 0x24, 0xa4, 0xcd, 0xe7, 0x32, 0x87, 0x0e, 
+0x1d, 0xc2, 0x98, 0x31, 0x63, 0xd0, 0xbf, 0x7f, 
+0x7f, 0x75, 0xcf, 0x09, 0xa7, 0xd3, 0x89, 0x47, 
+0x1f, 0x7d, 0x14, 0xab, 0x57, 0xaf, 0x0e, 0xf9, 
+0xdc, 0xa1, 0x43, 0x87, 0x26, 0x65, 0x11, 0x6a, 
+0xbc, 0x69, 0xdb, 0xb6, 0xad, 0xcf, 0x7e, 0x01, 
+0x5e, 0x48, 0x76, 0x76, 0xf6, 0x15, 0xde, 0xcd, 
+0xf9, 0x08, 0x5f, 0xf9, 0x0b, 0x82, 0x40, 0x04, 
+0x41, 0x20, 0xda, 0x14, 0x80, 0xf6, 0x00, 0x00, 
+0x49, 0x92, 0x08, 0x00, 0x70, 0x11, 0xc0, 0xf7, 
+0x06, 0xa8, 0xa9, 0xa9, 0x21, 0x00, 0xa0, 0x1f, 
+0x08, 0xc4, 0xdf, 0x90, 0xb7, 0x02, 0x46, 0xfd, 
+0x2f, 0xb2, 0x21, 0x22, 0xa0, 0x7b, 0xf7, 0xee, 
+0x4c, 0x2f, 0x02, 0xd2, 0xd2, 0xd2, 0xce, 0x4a, 
+0x04, 0x98, 0x4c, 0x26, 0x59, 0x2f, 0x02, 0xf8, 
+0xc4, 0x40, 0x43, 0x04, 0x44, 0x8f, 0x68, 0x8a, 
+0x80, 0xa6, 0xec, 0xfc, 0x01, 0x60, 0xd3, 0xa6, 
+0x4d, 0x21, 0xcf, 0x27, 0x62, 0xf8, 0x7f, 0xdd, 
+0xba, 0x75, 0x41, 0x77, 0x83, 0x7b, 0xf9, 0xe5, 
+0x97, 0xd1, 0xb3, 0x67, 0xcf, 0x18, 0x5b, 0x64, 
+0x10, 0x8c, 0xd3, 0xa7, 0x4f, 0xe3, 0xaf, 0x7f, 
+0xfd, 0x2b, 0xba, 0x75, 0xeb, 0x86, 0x8f, 0x3e, 
+0xfa, 0xc8, 0x6f, 0xb7, 0xc9, 0x8f, 0x3f, 0xfe, 
+0x18, 0xb3, 0x67, 0xcf, 0x0e, 0xfa, 0x7c, 0x41, 
+0x10, 0xf0, 0xcc, 0x33, 0xcf, 0x44, 0xdb, 0xcc, 
+0x26, 0x8b, 0x36, 0x7a, 0xc7, 0x23, 0x01, 0x2d, 
+0x5b, 0xb6, 0x1c, 0x48, 0x08, 0xe1, 0xa1, 0x7f, 
+0x35, 0xfc, 0xcf, 0x18, 0xe3, 0x82, 0x80, 0x00, 
+0x00, 0xaf, 0x01, 0x90, 0x65, 0x59, 0x4d, 0x05, 
+0x70, 0x11, 0xc0, 0xe1, 0x63, 0x81, 0x39, 0xc5, 
+0xc5, 0xc5, 0xea, 0xcf, 0xfa, 0x42, 0xc0, 0x98, 
+0x48, 0xf2, 0x70, 0x45, 0x00, 0xdf, 0x49, 0x90, 
+0x8b, 0x00, 0xed, 0xd4, 0xc0, 0x60, 0x22, 0xa0, 
+0x79, 0xf3, 0xe6, 0x72, 0x43, 0x45, 0x00, 0x34, 
+0xbb, 0x08, 0x1a, 0x22, 0x20, 0x7a, 0x44, 0x43, 
+0x04, 0x24, 0xb3, 0xf3, 0xaf, 0xac, 0xac, 0xc4, 
+0x6b, 0xaf, 0xbd, 0x86, 0xbf, 0xfe, 0xf5, 0xaf, 
+0xa8, 0xae, 0xae, 0x0e, 0xfa, 0xb8, 0x8d, 0x1b, 
+0x37, 0x86, 0x7c, 0x9d, 0x44, 0x13, 0x00, 0x25, 
+0x25, 0x25, 0xb8, 0xf3, 0xce, 0x3b, 0x03, 0x46, 
+0x2d, 0xa6, 0x4c, 0x99, 0x82, 0x87, 0x1e, 0x7a, 
+0x28, 0x0e, 0x56, 0x19, 0xe8, 0xa9, 0xae, 0xae, 
+0xc6, 0x8c, 0x19, 0x33, 0xd0, 0xb9, 0x73, 0x67, 
+0xbc, 0xfe, 0xfa, 0xeb, 0xf0, 0x78, 0x3c, 0x41, 
+0x1f, 0x7b, 0xec, 0xd8, 0xb1, 0xa0, 0xe7, 0xc6, 
+0x8d, 0x1b, 0x87, 0x1e, 0x3d, 0x7a, 0x44, 0xc3, 
+0xc4, 0xa8, 0x20, 0x49, 0x12, 0x14, 0x45, 0x81, 
+0xdd, 0x6e, 0xc7, 0x9e, 0x3d, 0x7b, 0x42, 0x46, 
+0xd7, 0x62, 0xc1, 0xc5, 0x17, 0x5f, 0x0c, 0x41, 
+0x10, 0x7c, 0x8a, 0x01, 0x45, 0x51, 0xcc, 0xe8, 
+0xd1, 0xa3, 0x47, 0x0f, 0x4a, 0x29, 0xa1, 0x94, 
+0x12, 0x78, 0x23, 0x01, 0x8c, 0x31, 0x22, 0x08, 
+0x82, 0x8f, 0x08, 0x00, 0xa0, 0x46, 0x5f, 0xb4, 
+0xce, 0x9f, 0x6f, 0x0e, 0x14, 0x88, 0x60, 0x13, 
+0x01, 0xc5, 0x08, 0x5c, 0x4f, 0x58, 0x30, 0xc6, 
+0x18, 0xf1, 0x5e, 0x31, 0xbf, 0x70, 0xc6, 0x18, 
+0xe3, 0xa1, 0x88, 0x9c, 0x9c, 0x1c, 0x96, 0x9f, 
+0x9f, 0x4f, 0x96, 0x2c, 0x59, 0x82, 0x51, 0xa3, 
+0x46, 0x31, 0xa0, 0xce, 0xe8, 0xa2, 0xa2, 0x22, 
+0x96, 0x95, 0x95, 0x05, 0x00, 0xb0, 0xdb, 0xed, 
+0x8a, 0xd5, 0x6a, 0xa5, 0x76, 0xbb, 0x1d, 0xe9, 
+0xe9, 0xe9, 0x8a, 0x77, 0xb3, 0x0a, 0xda, 0xbc, 
+0x79, 0x73, 0xf9, 0xcc, 0x99, 0x33, 0x00, 0xea, 
+0x36, 0x63, 0xd0, 0xcf, 0xb0, 0xa6, 0x94, 0xc2, 
+0x64, 0x32, 0xc1, 0xe3, 0xf1, 0x40, 0x10, 0x04, 
+0xc8, 0xb2, 0x5c, 0xd7, 0x02, 0x41, 0x29, 0x14, 
+0x45, 0x51, 0xcf, 0xf1, 0x9f, 0xf9, 0x63, 0xf8, 
+0x2d, 0xa5, 0x14, 0x79, 0x79, 0x79, 0xcb, 0x7b, 
+0xf5, 0xea, 0x85, 0x8c, 0x8c, 0x0c, 0xbf, 0xe9, 
+0x2b, 0x9f, 0x7f, 0xfe, 0x39, 0x00, 0xa3, 0x28, 
+0x26, 0x10, 0x97, 0x5d, 0x76, 0x19, 0x6c, 0x36, 
+0x1b, 0x76, 0xee, 0xdc, 0x19, 0x72, 0x5f, 0xfb, 
+0xfa, 0x20, 0x84, 0xa0, 0x7f, 0xff, 0xfe, 0x49, 
+0xb9, 0x92, 0xdc, 0xb5, 0x6b, 0x17, 0xe6, 0xce, 
+0x9d, 0x8b, 0x0f, 0x3f, 0xfc, 0x50, 0xfd, 0xbf, 
+0x59, 0x50, 0x50, 0x80, 0xcf, 0x3f, 0xff, 0xdc, 
+0x6f, 0x52, 0x9a, 0x2c, 0xcb, 0xd8, 0xba, 0x75, 
+0x6b, 0xc8, 0xd7, 0xeb, 0xdf, 0xbf, 0x7f, 0xd4, 
+0x6c, 0x6d, 0x0c, 0xe3, 0xc7, 0x8f, 0xc7, 0xe9, 
+0xd3, 0xa7, 0xfd, 0xee, 0xbf, 0xe7, 0x9e, 0x7b, 
+0xf0, 0xc2, 0x0b, 0x2f, 0xc4, 0xc1, 0x22, 0x03, 
+0x3d, 0x4e, 0xa7, 0x13, 0x9d, 0x3b, 0x77, 0x0e, 
+0xf8, 0x39, 0x85, 0x03, 0xff, 0x5e, 0xcd, 0xcc, 
+0xcc, 0xc4, 0xcc, 0x99, 0x33, 0x23, 0x6c, 0x5d, 
+0x74, 0x60, 0x8c, 0xa1, 0xa6, 0xa6, 0x06, 0x79, 
+0x79, 0x79, 0x58, 0xb5, 0x6a, 0x15, 0x7a, 0xf5, 
+0xea, 0x85, 0x31, 0x63, 0xc6, 0xf8, 0xf5, 0xe3, 
+0xc7, 0x1a, 0xab, 0xd5, 0x8a, 0x0b, 0x2e, 0xb8, 
+0x00, 0x3f, 0xff, 0xfc, 0xb3, 0x7a, 0x1f, 0x21, 
+0x04, 0xad, 0x5a, 0xb5, 0xca, 0x01, 0xb0, 0x8b, 
+0x3b, 0x7d, 0x00, 0xe0, 0x22, 0xc0, 0x64, 0x32, 
+0x41, 0x57, 0x04, 0x48, 0xcc, 0x66, 0x33, 0x11, 
+0x45, 0x11, 0x0e, 0x87, 0x83, 0x00, 0xf0, 0xbb, 
+0x28, 0x6f, 0x2b, 0x60, 0xc8, 0x2f, 0xdd, 0x98, 
+0x09, 0x00, 0xc0, 0x57, 0x04, 0x00, 0x75, 0x17, 
+0x6d, 0x88, 0x80, 0xa6, 0x4f, 0xaf, 0x5e, 0xbd, 
+0xd0, 0xa2, 0x45, 0x0b, 0x6c, 0xd8, 0xb0, 0x01, 
+0x0e, 0x87, 0xa3, 0xc1, 0xcf, 0xb7, 0x5a, 0xad, 
+0xb8, 0xea, 0xaa, 0xab, 0xd0, 0xa1, 0x43, 0x87, 
+0x28, 0x58, 0x17, 0x1d, 0x5c, 0x2e, 0x17, 0xfe, 
+0xfb, 0xdf, 0xff, 0x62, 0xee, 0xdc, 0xb9, 0x01, 
+0x5b, 0xfa, 0xbe, 0xfe, 0xfa, 0x6b, 0x8c, 0x1d, 
+0x3b, 0x16, 0x8b, 0x17, 0x2f, 0xf6, 0xc9, 0x8d, 
+0xe7, 0xe5, 0xe5, 0x85, 0x8c, 0x0e, 0xb4, 0x6d, 
+0xdb, 0x16, 0x1d, 0x3b, 0x76, 0x8c, 0x8a, 0xcd, 
+0x8d, 0xe1, 0xbd, 0xf7, 0xde, 0xc3, 0xb2, 0x65, 
+0xcb, 0x7c, 0xee, 0x23, 0x84, 0xe0, 0xd1, 0x47, 
+0x1f, 0xc5, 0xb3, 0xcf, 0x3e, 0x1b, 0x27, 0xab, 
+0x0c, 0xf4, 0x88, 0xa2, 0xd8, 0x68, 0xe7, 0x0f, 
+0xd4, 0x6d, 0x0c, 0x94, 0x95, 0x95, 0x85, 0xb5, 
+0x6b, 0xd7, 0xa2, 0x5d, 0xbb, 0x76, 0x11, 0xb4, 
+0x2c, 0xb2, 0x14, 0x17, 0x17, 0x63, 0xf7, 0xee, 
+0xdd, 0xc8, 0xc8, 0xc8, 0xc0, 0xa6, 0x4d, 0x9b, 
+0xf0, 0xc1, 0x07, 0x1f, 0xa0, 0x77, 0xef, 0xde, 
+0x98, 0x35, 0x6b, 0x56, 0x42, 0x6d, 0x47, 0xdc, 
+0xb1, 0x63, 0x47, 0xfc, 0xfc, 0xf3, 0xcf, 0xfa, 
+0x28, 0x80, 0x8d, 0x31, 0xa6, 0x3a, 0x7e, 0x00, 
+0x44, 0x51, 0x14, 0x22, 0x08, 0x02, 0xb4, 0xab, 
+0x7f, 0x3d, 0x36, 0x9b, 0x4d, 0xfd, 0x0e, 0x71, 
+0xb9, 0x5c, 0x44, 0x14, 0xc3, 0x77, 0xeb, 0x31, 
+0x15, 0x00, 0x80, 0x21, 0x02, 0xce, 0x55, 0x3a, 
+0x76, 0xec, 0x88, 0x3b, 0xee, 0xb8, 0x03, 0xf9, 
+0xf9, 0xf9, 0xd8, 0xbb, 0x77, 0x2f, 0x5c, 0x2e, 
+0x57, 0xbd, 0xcf, 0xb1, 0x58, 0x2c, 0xe8, 0xd9, 
+0xb3, 0x27, 0x72, 0x72, 0x72, 0xd0, 0x90, 0xff, 
+0xd4, 0xf1, 0x66, 0xdf, 0xbe, 0x7d, 0x18, 0x3d, 
+0x7a, 0x34, 0xf6, 0xec, 0xd9, 0x13, 0xf2, 0x71, 
+0x4b, 0x96, 0x2c, 0x41, 0x9b, 0x36, 0x6d, 0x30, 
+0x67, 0xce, 0x1c, 0xf5, 0xbe, 0x64, 0x0a, 0xff, 
+0xef, 0xdc, 0xb9, 0xd3, 0xaf, 0xb2, 0xbf, 0x65, 
+0xcb, 0x96, 0x78, 0xef, 0xbd, 0xf7, 0x30, 0x6c, 
+0xd8, 0xb0, 0x38, 0x59, 0x65, 0x10, 0x88, 0xb3, 
+0xfd, 0xfb, 0xb9, 0xfa, 0xea, 0xab, 0xb1, 0x60, 
+0xc1, 0x82, 0x84, 0xda, 0xd8, 0xa7, 0xa6, 0xa6, 
+0x06, 0xff, 0xfd, 0xef, 0x7f, 0x31, 0x6f, 0xde, 
+0x3c, 0x1c, 0x39, 0x72, 0x04, 0x6e, 0xb7, 0x1b, 
+0xa9, 0xa9, 0xa9, 0xe8, 0xd4, 0xa9, 0x13, 0x7e, 
+0xfc, 0xf1, 0x47, 0x5c, 0x74, 0xd1, 0x45, 0x98, 
+0x3b, 0x77, 0x6e, 0x42, 0x0e, 0x29, 0x32, 0x99, 
+0x4c, 0x81, 0xf6, 0x08, 0x30, 0x01, 0xaa, 0xf3, 
+0x87, 0x20, 0x08, 0x60, 0x8c, 0xa9, 0x3f, 0x7b, 
+0xa3, 0x00, 0xe0, 0xa2, 0x20, 0x12, 0x24, 0xc4, 
+0xb7, 0xaa, 0x21, 0x02, 0xce, 0x0d, 0x44, 0x51, 
+0x44, 0xaf, 0x5e, 0xbd, 0xd0, 0xb3, 0x67, 0x4f, 
+0x14, 0x17, 0x17, 0xe3, 0xd8, 0xb1, 0x63, 0x28, 
+0x2f, 0x2f, 0x87, 0xc3, 0xe1, 0x80, 0xcb, 0xe5, 
+0x82, 0xc5, 0x62, 0x81, 0xd5, 0x6a, 0x45, 0x8b, 
+0x16, 0x2d, 0xd0, 0xb1, 0x63, 0x47, 0xb4, 0x6b, 
+0xd7, 0x2e, 0xe9, 0x2a, 0xc7, 0x57, 0xac, 0x58, 
+0x81, 0xbb, 0xee, 0xba, 0x2b, 0xec, 0xad, 0x54, 
+0x5f, 0x7b, 0xed, 0x35, 0xb4, 0x6d, 0xdb, 0x16, 
+0x8f, 0x3f, 0xfe, 0x38, 0x80, 0xfa, 0x0b, 0x00, 
+0x13, 0xe5, 0xff, 0xd5, 0xa6, 0x4d, 0x9b, 0x70, 
+0xcb, 0x2d, 0xb7, 0xa0, 0xaa, 0xaa, 0x0a, 0x00, 
+0xd0, 0xac, 0x59, 0x33, 0x0c, 0x1b, 0x36, 0x0c, 
+0xff, 0xfc, 0xe7, 0x3f, 0x93, 0x2a, 0x52, 0x73, 
+0xae, 0xd0, 0xd8, 0xf4, 0x5b, 0xaf, 0x5e, 0xbd, 
+0xf0, 0xfc, 0xf3, 0xcf, 0x27, 0x94, 0xa0, 0xcb, 
+0xcf, 0xcf, 0xc7, 0xbc, 0x79, 0xf3, 0xf0, 0xde, 
+0x7b, 0xef, 0xa1, 0xaa, 0xaa, 0x0a, 0x6d, 0xdb, 
+0xb6, 0x55, 0x47, 0x4b, 0x57, 0x57, 0x57, 0xa3, 
+0xb6, 0xb6, 0x16, 0x33, 0x66, 0xcc, 0xc0, 0xc3, 
+0x0f, 0x3f, 0x9c, 0xb0, 0x0b, 0x07, 0xbd, 0x5d, 
+0xde, 0xc9, 0x80, 0xa6, 0x50, 0xcf, 0x09, 0x15, 
+0x05, 0xd0, 0xe3, 0x70, 0x38, 0x88, 0xcd, 0x66, 
+0xab, 0xf7, 0x43, 0x8f, 0xcb, 0x6f, 0x47, 0x1f, 
+0x05, 0x00, 0x1a, 0x2f, 0x02, 0x5a, 0xb6, 0x6c, 
+0x49, 0x4a, 0x4b, 0x4b, 0xa9, 0x21, 0x02, 0x92, 
+0x07, 0x4a, 0x29, 0xda, 0xb7, 0x6f, 0x8f, 0xf6, 
+0xed, 0xdb, 0xc7, 0xdb, 0x94, 0x88, 0x22, 0x49, 
+0x12, 0x1e, 0x7a, 0xe8, 0xa1, 0x06, 0xef, 0xa3, 
+0xfe, 0xc4, 0x13, 0x4f, 0xa0, 0x5d, 0xbb, 0x76, 
+0xf8, 0xe3, 0x1f, 0xff, 0x58, 0x6f, 0x04, 0xe0, 
+0xa6, 0x9b, 0x6e, 0x3a, 0x1b, 0x13, 0xcf, 0x0a, 
+0xb7, 0xdb, 0x8d, 0x55, 0xab, 0x56, 0x61, 0xfe, 
+0xfc, 0xf9, 0xf8, 0xe2, 0x8b, 0x2f, 0x7c, 0x9c, 
+0xca, 0x88, 0x11, 0x23, 0xf0, 0xde, 0x7b, 0xef, 
+0xc5, 0xcd, 0x36, 0x83, 0xd0, 0xd4, 0x6d, 0xa6, 
+0x1a, 0x3e, 0x9d, 0x3a, 0x75, 0xc2, 0xd3, 0x4f, 
+0x3f, 0x8d, 0x3b, 0xef, 0xbc, 0x33, 0xee, 0x39, 
+0x73, 0xa0, 0xce, 0xfe, 0xc5, 0x8b, 0x17, 0x63, 
+0xde, 0xbc, 0x79, 0xd8, 0xb0, 0x61, 0x83, 0xcf, 
+0x39, 0xed, 0xc4, 0xc2, 0x91, 0x23, 0x47, 0xe2, 
+0xd5, 0x57, 0x5f, 0x4d, 0x78, 0x11, 0xca, 0x05, 
+0x80, 0xf6, 0x77, 0x4b, 0x29, 0x0d, 0xe9, 0x8f, 
+0x29, 0xa5, 0xac, 0xa1, 0x9f, 0x63, 0xbd, 0x76, 
+0x44, 0xf4, 0xd5, 0x1a, 0x40, 0xa4, 0x44, 0x40, 
+0x45, 0x45, 0x05, 0x5a, 0xb6, 0x6c, 0xa9, 0x18, 
+0x22, 0xc0, 0x20, 0xde, 0x2c, 0x5e, 0xbc, 0x38, 
+0xe4, 0xf0, 0x94, 0x50, 0x8c, 0x1f, 0x3f, 0x1e, 
+0x0e, 0x87, 0x03, 0x45, 0x45, 0x45, 0x41, 0x1f, 
+0xd3, 0xa5, 0x4b, 0x17, 0x64, 0x67, 0x67, 0x37, 
+0xd6, 0xbc, 0xb3, 0x62, 0xc9, 0x92, 0x25, 0x78, 
+0xf8, 0xe1, 0x87, 0x83, 0xce, 0x87, 0x37, 0xc6, 
+0xfb, 0x26, 0x36, 0xe1, 0x46, 0x00, 0x5a, 0xb7, 
+0x6e, 0x8d, 0x27, 0x9e, 0x78, 0x02, 0xe3, 0xc7, 
+0x8f, 0x87, 0xd9, 0x6c, 0x8e, 0xb2, 0x55, 0xe1, 
+0x71, 0xe4, 0xc8, 0x11, 0x75, 0xc3, 0xa1, 0x60, 
+0x64, 0x67, 0x67, 0xe3, 0x5f, 0xff, 0xfa, 0x17, 
+0x86, 0x0e, 0x1d, 0x1a, 0x43, 0xcb, 0xce, 0x0e, 
+0xbd, 0xb0, 0x22, 0x84, 0xf8, 0xf8, 0x63, 0xee, 
+0x67, 0x38, 0xdc, 0x57, 0x51, 0x4a, 0xeb, 0xfd, 
+0x30, 0xad, 0x56, 0x6b, 0x58, 0x1f, 0x78, 0x5c, 
+0xe3, 0xab, 0x2c, 0xc0, 0xff, 0x4a, 0x42, 0x48, 
+0xbd, 0x2d, 0x82, 0x00, 0xa0, 0x6d, 0x11, 0xac, 
+0xa8, 0xa8, 0x60, 0x2d, 0x5b, 0xb6, 0x54, 0xb4, 
+0x2d, 0x82, 0x0e, 0x87, 0x83, 0x19, 0x2d, 0x82, 
+0x06, 0xb1, 0xe4, 0xc3, 0x0f, 0x3f, 0x6c, 0xf4, 
+0x73, 0x25, 0x49, 0xc2, 0x5f, 0xff, 0xfa, 0xd7, 
+0x90, 0x8f, 0x89, 0xd7, 0xea, 0xbf, 0xb0, 0xb0, 
+0x10, 0x77, 0xdf, 0x7d, 0x77, 0xc8, 0xcd, 0x61, 
+0xd2, 0xd2, 0xd2, 0x62, 0x68, 0x91, 0x41, 0x43, 
+0x09, 0x47, 0x00, 0xb4, 0x6a, 0xd5, 0x0a, 0x87, 
+0x0e, 0x1d, 0xc2, 0xc4, 0x89, 0x13, 0x13, 0xc6, 
+0xf9, 0x6f, 0xdb, 0xb6, 0x0d, 0xb9, 0xb9, 0xb9, 
+0x41, 0x9d, 0x7f, 0x6e, 0x6e, 0x2e, 0x3e, 0xfc, 
+0xf0, 0x43, 0x14, 0x14, 0x14, 0x24, 0x95, 0xf3, 
+0x3f, 0x71, 0xe2, 0x84, 0xcf, 0xcf, 0x84, 0x10, 
+0x48, 0x92, 0x54, 0x45, 0x08, 0x61, 0xfc, 0x00, 
+0xea, 0x56, 0xfd, 0x84, 0x10, 0x56, 0x9f, 0xd3, 
+0xb7, 0xdb, 0xed, 0x8d, 0xb2, 0x23, 0xee, 0x09, 
+0x56, 0x43, 0x04, 0x18, 0x34, 0x15, 0x42, 0x55, 
+0xef, 0x47, 0x82, 0x9b, 0x6f, 0xbe, 0x39, 0xaa, 
+0xaf, 0x1f, 0x8c, 0xe9, 0xd3, 0xa7, 0xfb, 0x8c, 
+0xf5, 0x0d, 0x84, 0xd5, 0x6a, 0x8d, 0x91, 0x35, 
+0x06, 0x8d, 0x21, 0x1c, 0x01, 0xd0, 0xba, 0x75, 
+0x6b, 0x34, 0x6b, 0xd6, 0x2c, 0x06, 0xd6, 0x84, 
+0xcf, 0xb4, 0x69, 0xd3, 0x42, 0x3a, 0xb7, 0x35, 
+0x6b, 0xd6, 0x60, 0xcc, 0x98, 0x31, 0x88, 0x54, 
+0x51, 0x5c, 0xac, 0x38, 0x7c, 0xf8, 0xb0, 0xfa, 
+0x6f, 0x1e, 0x09, 0x28, 0x2d, 0x2d, 0xdd, 0x0b, 
+0x80, 0x11, 0x42, 0x98, 0xa2, 0x28, 0xaa, 0x08, 
+0xd0, 0x3c, 0x4e, 0x15, 0x02, 0x82, 0x20, 0x30, 
+0x41, 0x10, 0x58, 0x6d, 0x6d, 0x2d, 0x5c, 0x2e, 
+0x17, 0x33, 0x99, 0x4c, 0x0c, 0x00, 0x2c, 0x16, 
+0x8b, 0xfa, 0x9c, 0xf4, 0xf4, 0xf4, 0x7a, 0x3f, 
+0xf4, 0xb8, 0x0b, 0x00, 0xc0, 0x10, 0x01, 0x06, 
+0x4d, 0x83, 0x70, 0x3a, 0x1b, 0x1a, 0x8b, 0xcd, 
+0x66, 0xc3, 0xd5, 0x57, 0x5f, 0x1d, 0xb5, 0xd7, 
+0x0f, 0x45, 0xb8, 0xfb, 0xc2, 0x1b, 0x24, 0x0e, 
+0xa7, 0x4e, 0x9d, 0xf2, 0xf9, 0xdc, 0xc2, 0x19, 
+0x7e, 0xd3, 0xbc, 0x79, 0xf3, 0x68, 0x9a, 0xd4, 
+0x60, 0x36, 0x6e, 0xdc, 0xa8, 0x8e, 0x28, 0x0e, 
+0x44, 0xaf, 0x5e, 0xbd, 0x92, 0x32, 0xf5, 0x54, 
+0x52, 0x52, 0x82, 0xea, 0xea, 0x6a, 0x9f, 0xfd, 
+0x00, 0x18, 0x63, 0xd2, 0xbe, 0x7d, 0xfb, 0x76, 
+0x2b, 0x8a, 0xc2, 0x14, 0x45, 0x61, 0x40, 0x9d, 
+0xc3, 0xe7, 0x87, 0x24, 0x49, 0xaa, 0x2f, 0x14, 
+0x04, 0x81, 0x39, 0x9d, 0x4e, 0x38, 0x1c, 0x0e, 
+0x88, 0xa2, 0xa8, 0xde, 0xef, 0x70, 0x38, 0x82, 
+0x3a, 0x7c, 0xee, 0x2f, 0xf5, 0x24, 0x84, 0x00, 
+0x00, 0x0c, 0x11, 0x60, 0x90, 0xfc, 0x38, 0x9d, 
+0xce, 0xa8, 0xbd, 0xf6, 0xef, 0x7f, 0xff, 0x7b, 
+0xbf, 0xa1, 0x41, 0xb1, 0x22, 0x1c, 0x61, 0xc3, 
+0x6b, 0x72, 0x0c, 0xe2, 0xcf, 0xca, 0x95, 0x2b, 
+0x71, 0xe2, 0xc4, 0x09, 0x1f, 0xe7, 0xc8, 0xbb, 
+0x35, 0x42, 0x91, 0x68, 0x02, 0x60, 0xfe, 0xfc, 
+0xf9, 0x21, 0xcf, 0xdf, 0x78, 0xe3, 0x8d, 0x31, 
+0xb2, 0x24, 0xb2, 0xe8, 0xfb, 0xff, 0x01, 0xa0, 
+0xba, 0xba, 0x7a, 0x9f, 0xdd, 0x6e, 0xaf, 0xf1, 
+0xae, 0xfa, 0x19, 0x21, 0x44, 0xe1, 0xce, 0x5f, 
+0x96, 0x65, 0x46, 0x29, 0x55, 0x0f, 0x97, 0xcb, 
+0xa5, 0x46, 0x00, 0xce, 0xd6, 0x96, 0x84, 0x11, 
+0x00, 0x80, 0x21, 0x02, 0x0c, 0x92, 0x9b, 0x68, 
+0x09, 0x80, 0x91, 0x23, 0x47, 0xe2, 0x95, 0x57, 
+0x5e, 0x89, 0xca, 0x6b, 0x87, 0x43, 0x38, 0xd7, 
+0xd5, 0xab, 0x57, 0xaf, 0x18, 0x58, 0x62, 0x10, 
+0x8a, 0xe3, 0xc7, 0x8f, 0xe3, 0x4f, 0x7f, 0xfa, 
+0x13, 0x3a, 0x75, 0xea, 0x84, 0xbe, 0x7d, 0xfb, 
+0xfa, 0x9c, 0xf3, 0x16, 0x47, 0x87, 0x24, 0x51, 
+0x04, 0xc0, 0x4f, 0x3f, 0xfd, 0x84, 0xd7, 0x5e, 
+0x7b, 0x0d, 0xdf, 0x7c, 0xf3, 0x4d, 0xc8, 0xc7, 
+0x25, 0xa3, 0x00, 0x70, 0x38, 0x1c, 0xf8, 0xe9, 
+0xa7, 0x9f, 0x7c, 0xee, 0x23, 0x84, 0xe0, 0xf4, 
+0xe9, 0xd3, 0xbb, 0xe0, 0x0d, 0xff, 0x6b, 0x0f, 
+0x59, 0x96, 0xd5, 0x1a, 0x00, 0x4a, 0x29, 0x93, 
+0x24, 0xc9, 0xa7, 0x1e, 0x40, 0x14, 0x45, 0x26, 
+0x8a, 0xa2, 0x9a, 0x02, 0xa8, 0xa9, 0xa9, 0x61, 
+0xa9, 0xa9, 0xa9, 0x3e, 0x7e, 0xb4, 0x5d, 0xbb, 
+0x76, 0x0c, 0x00, 0xba, 0x77, 0xef, 0xce, 0x96, 
+0x2c, 0x59, 0xe2, 0xf3, 0xde, 0x09, 0x25, 0x00, 
+0x00, 0x43, 0x04, 0x18, 0x24, 0x2f, 0x91, 0x4e, 
+0x01, 0x08, 0x82, 0x80, 0x59, 0xb3, 0x66, 0xe1, 
+0x93, 0x4f, 0x3e, 0x89, 0x6b, 0x6e, 0xb6, 0x3e, 
+0x01, 0xd0, 0xac, 0x59, 0x33, 0x5c, 0x74, 0xd1, 
+0x45, 0x31, 0xb2, 0xc6, 0x40, 0xcb, 0x99, 0x33, 
+0x67, 0x30, 0x7f, 0xfe, 0x7c, 0x0c, 0x1e, 0x3c, 
+0x18, 0x17, 0x5c, 0x70, 0x01, 0xde, 0x79, 0xe7, 
+0x1d, 0xfc, 0xf8, 0xe3, 0x8f, 0x7e, 0x8f, 0x4b, 
+0x06, 0x01, 0x50, 0x5b, 0x5b, 0x8b, 0xa9, 0x53, 
+0xa7, 0x22, 0x37, 0x37, 0x17, 0x13, 0x27, 0x4e, 
+0xc4, 0x91, 0x23, 0x47, 0x82, 0x3e, 0xd6, 0x66, 
+0xb3, 0xe1, 0x8a, 0x2b, 0xae, 0x88, 0x9d, 0x71, 
+0x11, 0x62, 0xf3, 0xe6, 0xcd, 0xea, 0xf7, 0x04, 
+0x4f, 0x01, 0x30, 0xc6, 0x94, 0xc2, 0xc2, 0xc2, 
+0x1f, 0x28, 0xa5, 0x0a, 0x21, 0x44, 0xa1, 0x94, 
+0x2a, 0x8c, 0x31, 0x45, 0x51, 0x14, 0x45, 0x10, 
+0x04, 0x45, 0x10, 0x04, 0x85, 0xa7, 0x01, 0xb4, 
+0x91, 0x00, 0x7d, 0x04, 0xc0, 0x6c, 0x36, 0xab, 
+0x3f, 0xf3, 0x19, 0x00, 0x99, 0x99, 0x99, 0x6c, 
+0xe7, 0xce, 0x9d, 0x7e, 0x76, 0x70, 0x7f, 0x9a, 
+0x90, 0x53, 0x12, 0x8c, 0x16, 0x41, 0x83, 0x64, 
+0xa4, 0x3e, 0x47, 0x79, 0xfe, 0xf9, 0xe7, 0xc3, 
+0xe1, 0x70, 0xa0, 0xa4, 0xa4, 0xa4, 0xde, 0xd7, 
+0x6a, 0xd5, 0xaa, 0x15, 0x16, 0x2f, 0x5e, 0x8c, 
+0xc1, 0x83, 0x07, 0x47, 0xca, 0xbc, 0x46, 0x53, 
+0xdf, 0x75, 0xf5, 0xec, 0xd9, 0x33, 0x21, 0x7a, 
+0xc5, 0xcf, 0x15, 0x4a, 0x4b, 0x4b, 0xf1, 0xe5, 
+0x97, 0x5f, 0x62, 0xc9, 0x92, 0x25, 0xf8, 0xec, 
+0xb3, 0xcf, 0xfc, 0x84, 0xe7, 0xbd, 0xf7, 0xde, 
+0x8b, 0x36, 0x6d, 0xda, 0xf8, 0xfc, 0xdf, 0x09, 
+0x47, 0x00, 0xc4, 0x73, 0xca, 0xdf, 0xe7, 0x9f, 
+0x7f, 0x8e, 0x09, 0x13, 0x26, 0xf8, 0xcc, 0xc7, 
+0x0f, 0xc5, 0x90, 0x21, 0x43, 0x12, 0xa6, 0x53, 
+0x21, 0x5c, 0x8e, 0x1f, 0x3f, 0x8e, 0x83, 0x07, 
+0x0f, 0x02, 0xf0, 0x6d, 0x01, 0xac, 0xa8, 0xa8, 
+0xd8, 0x5e, 0x51, 0x51, 0x51, 0xc5, 0x05, 0x00, 
+0x63, 0x4c, 0xe1, 0x4e, 0x9e, 0x47, 0x01, 0x00, 
+0x30, 0x41, 0x10, 0x54, 0xc7, 0xcf, 0x57, 0xfe, 
+0x5a, 0x31, 0xa0, 0xaf, 0xf3, 0x28, 0x2b, 0x2b, 
+0x63, 0xfa, 0xad, 0x87, 0xf9, 0xe2, 0x99, 0x93, 
+0x70, 0x11, 0x00, 0x4e, 0x24, 0x23, 0x01, 0xfa, 
+0x5d, 0x04, 0x8d, 0x48, 0x80, 0x41, 0x34, 0xa8, 
+0xcf, 0x51, 0x5e, 0x7c, 0xf1, 0xc5, 0x58, 0xb1, 
+0x62, 0x45, 0xbd, 0x05, 0x73, 0x37, 0xdc, 0x70, 
+0x03, 0x76, 0xee, 0xdc, 0x99, 0x10, 0xce, 0x1f, 
+0x40, 0xbd, 0x83, 0x8d, 0x8c, 0xf0, 0x7f, 0x6c, 
+0xf8, 0xf0, 0xc3, 0x0f, 0xd1, 0xaf, 0x5f, 0x3f, 
+0xb4, 0x6e, 0xdd, 0x1a, 0x77, 0xde, 0x79, 0x27, 
+0x96, 0x2d, 0x5b, 0x16, 0x30, 0xea, 0xe4, 0x76, 
+0xbb, 0x31, 0x62, 0xc4, 0x08, 0xe4, 0xe5, 0xe5, 
+0xa9, 0xf7, 0x85, 0x23, 0x00, 0xa2, 0xb5, 0x7d, 
+0x77, 0x28, 0x8a, 0x8b, 0x8b, 0x31, 0x7a, 0xf4, 
+0x68, 0xdc, 0x74, 0xd3, 0x4d, 0x61, 0x3b, 0x7f, 
+0xb3, 0xd9, 0x9c, 0x74, 0xfb, 0x4c, 0x48, 0x92, 
+0x84, 0x8d, 0x1b, 0x37, 0xfa, 0x14, 0xfe, 0x01, 
+0x80, 0x2c, 0xcb, 0xb5, 0x9b, 0x37, 0x6f, 0xfe, 
+0x84, 0x52, 0xaa, 0x70, 0x01, 0xc0, 0xa3, 0x00, 
+0x94, 0x52, 0x45, 0x51, 0x14, 0x85, 0x10, 0xc2, 
+0x04, 0x41, 0x50, 0xb8, 0xa3, 0xf7, 0x78, 0x3c, 
+0xcc, 0xed, 0x76, 0x33, 0xb7, 0xdb, 0xcd, 0x5c, 
+0x2e, 0x17, 0x73, 0x3a, 0x9d, 0xac, 0xb2, 0xb2, 
+0x12, 0x16, 0x8b, 0x85, 0xa5, 0xa4, 0xa4, 0xb0, 
+0xaa, 0xaa, 0xaa, 0xb0, 0x6b, 0x03, 0x12, 0x56, 
+0x00, 0x00, 0x91, 0x13, 0x01, 0x81, 0xb6, 0x12, 
+0x36, 0x44, 0x80, 0x41, 0x24, 0x61, 0x8c, 0xd5, 
+0xdb, 0x8b, 0x9b, 0x99, 0x99, 0x89, 0x41, 0x83, 
+0x06, 0xe1, 0x83, 0x0f, 0x3e, 0x80, 0xcd, 0x66, 
+0xf3, 0x3b, 0x7f, 0xc3, 0x0d, 0x37, 0x60, 0xd3, 
+0xa6, 0x4d, 0x58, 0xb3, 0x66, 0x4d, 0x4c, 0x36, 
+0xfc, 0xa9, 0xaa, 0xaa, 0xc2, 0x8c, 0x19, 0x33, 
+0x42, 0xee, 0x59, 0x70, 0xea, 0xd4, 0xa9, 0x7a, 
+0x23, 0x16, 0x83, 0x06, 0x0d, 0x8a, 0xb4, 0x69, 
+0x06, 0x3a, 0xf6, 0xef, 0xdf, 0x8f, 0x3b, 0xef, 
+0xbc, 0x13, 0xbb, 0x76, 0xed, 0x0a, 0xab, 0xa5, 
+0xaf, 0xaa, 0xaa, 0x0a, 0xc3, 0x86, 0x0d, 0x53, 
+0xc3, 0xe8, 0x3c, 0xe2, 0x19, 0x8a, 0x58, 0x0a, 
+0x00, 0x45, 0x51, 0xf0, 0xc6, 0x1b, 0x6f, 0xa0, 
+0x5b, 0xb7, 0x6e, 0xf8, 0xf8, 0xe3, 0x8f, 0xc3, 
+0x7a, 0x0e, 0x5f, 0xcd, 0x3e, 0xf1, 0xc4, 0x13, 
+0x49, 0xb5, 0x1d, 0x31, 0x00, 0xfc, 0xf0, 0xc3, 
+0x0f, 0x7e, 0xdf, 0x0f, 0x84, 0x10, 0x1c, 0x3a, 
+0x74, 0x68, 0x69, 0x79, 0x79, 0xf9, 0x19, 0x4a, 
+0xa9, 0x4c, 0x29, 0x95, 0x05, 0x41, 0x90, 0x79, 
+0xf8, 0x9f, 0xa7, 0x00, 0x44, 0x51, 0x54, 0xbc, 
+0x53, 0x00, 0x15, 0x8f, 0xc7, 0xc3, 0xb4, 0x05, 
+0x80, 0xbc, 0x0b, 0x40, 0x1b, 0xfe, 0x07, 0xc2, 
+0x6b, 0x01, 0x24, 0x84, 0x24, 0xb6, 0x00, 0x00, 
+0x0c, 0x11, 0x60, 0x90, 0x1c, 0xd8, 0xed, 0xf6, 
+0x7a, 0x5b, 0xad, 0xf8, 0x17, 0xd8, 0x6d, 0xb7, 
+0xdd, 0x86, 0xbd, 0x7b, 0xf7, 0xe2, 0xb9, 0xe7, 
+0x9e, 0xc3, 0x9f, 0xfe, 0xf4, 0x27, 0x3c, 0xfb, 
+0xec, 0xb3, 0xd8, 0xb6, 0x6d, 0x1b, 0xd6, 0xac, 
+0x59, 0x83, 0xcb, 0x2e, 0xbb, 0x2c, 0xea, 0xb6, 
+0xca, 0xb2, 0x8c, 0xb9, 0x73, 0xe7, 0xa2, 0x4b, 
+0x97, 0x2e, 0x78, 0xea, 0xa9, 0xa7, 0x30, 0x70, 
+0xe0, 0x40, 0xfc, 0xe7, 0x3f, 0xff, 0x09, 0xf8, 
+0xd8, 0x40, 0xf9, 0x43, 0x2d, 0x56, 0xab, 0x15, 
+0xc3, 0x87, 0x0f, 0x8f, 0x86, 0x99, 0x06, 0x1a, 
+0x1a, 0x33, 0x63, 0xa2, 0xb8, 0xb8, 0x18, 0x43, 
+0x87, 0x0e, 0x45, 0x49, 0x49, 0x09, 0x4a, 0x4b, 
+0x4b, 0x43, 0x3e, 0x36, 0x35, 0x35, 0x15, 0x17, 
+0x5c, 0x70, 0x41, 0x63, 0xcd, 0x6b, 0x10, 0xc7, 
+0x8f, 0x1f, 0xc7, 0x65, 0x97, 0x5d, 0x86, 0x09, 
+0x13, 0x26, 0x84, 0x15, 0x99, 0xe0, 0x94, 0x95, 
+0x95, 0x61, 0xf0, 0xe0, 0xc1, 0x98, 0x3a, 0x75, 
+0x6a, 0x14, 0xad, 0x8b, 0x3c, 0xc7, 0x8f, 0x1f, 
+0xf7, 0x89, 0xc6, 0x00, 0x75, 0x3e, 0xcc, 0x6e, 
+0xb7, 0xef, 0xdf, 0xba, 0x75, 0xeb, 0x26, 0x4a, 
+0xa9, 0xcc, 0x18, 0x93, 0x19, 0x63, 0x3c, 0xfc, 
+0xaf, 0xe6, 0xfe, 0x05, 0x41, 0x50, 0xc5, 0x00, 
+0xa5, 0x94, 0x99, 0x4c, 0x26, 0x45, 0x9b, 0x06, 
+0x00, 0x00, 0x93, 0xc9, 0xc4, 0xcc, 0x66, 0x33, 
+0xe3, 0x05, 0x80, 0x36, 0x9b, 0x8d, 0x71, 0xe1, 
+0xd7, 0xae, 0x5d, 0x3b, 0x96, 0x95, 0x95, 0xc5, 
+0x02, 0x15, 0x00, 0x02, 0x09, 0x5a, 0x03, 0x10, 
+0x0e, 0xc6, 0x06, 0x42, 0x06, 0x89, 0x44, 0x45, 
+0x45, 0x45, 0xbd, 0x8f, 0xd1, 0xe6, 0xe3, 0x3a, 
+0x75, 0xea, 0x84, 0xc7, 0x1e, 0x7b, 0x2c, 0x9a, 
+0x26, 0x05, 0xe4, 0xb3, 0xcf, 0x3e, 0xc3, 0x23, 
+0x8f, 0x3c, 0x82, 0x82, 0x82, 0x02, 0xf5, 0x3e, 
+0x87, 0xc3, 0x81, 0xfb, 0xee, 0xbb, 0x0f, 0xdf, 
+0x7e, 0xfb, 0x2d, 0xe6, 0xcd, 0x9b, 0xe7, 0x13, 
+0x9d, 0xd8, 0xb1, 0x23, 0xa0, 0x6e, 0x55, 0xf9, 
+0xdd, 0xef, 0x7e, 0x87, 0xf3, 0xce, 0x3b, 0x2f, 
+0x6a, 0xf6, 0x1a, 0xd4, 0x91, 0x91, 0x91, 0xd1, 
+0xa8, 0xe7, 0x15, 0x16, 0x16, 0x62, 0xc8, 0x90, 
+0x21, 0xf5, 0x3a, 0xf7, 0x1b, 0x6f, 0xbc, 0x31, 
+0x66, 0x1b, 0x6f, 0xcd, 0x99, 0x33, 0x07, 0x5b, 
+0xb7, 0x6e, 0x6d, 0xd0, 0x73, 0xb4, 0x5b, 0x4c, 
+0x27, 0xd3, 0xd0, 0x9f, 0x33, 0x67, 0xce, 0x60, 
+0xdd, 0xba, 0x75, 0x6a, 0xd4, 0x86, 0x87, 0xff, 
+0x15, 0x45, 0xf1, 0x6c, 0xde, 0xbc, 0xf9, 0x43, 
+0xd4, 0x2d, 0x32, 0x7d, 0x0e, 0xaf, 0x18, 0x90, 
+0xb5, 0x51, 0x00, 0xee, 0xfc, 0xbd, 0x11, 0x00, 
+0xc5, 0xed, 0x76, 0x33, 0x42, 0x08, 0x4b, 0x4b, 
+0x4b, 0xf3, 0xc9, 0xff, 0x9f, 0x3a, 0x75, 0x4a, 
+0xdd, 0xf6, 0x98, 0x17, 0x00, 0x86, 0x6a, 0xd1, 
+0x4d, 0xf8, 0x08, 0x00, 0x10, 0x38, 0x0a, 0x00, 
+0x84, 0x8e, 0x04, 0x00, 0xbf, 0x0e, 0x3f, 0x30, 
+0x22, 0x01, 0x06, 0x0d, 0x45, 0x51, 0x14, 0xbc, 
+0xfd, 0xf6, 0xdb, 0x78, 0xe4, 0x91, 0x47, 0xc2, 
+0x0a, 0xb9, 0x36, 0x54, 0x00, 0xc4, 0x9a, 0x3d, 
+0x7b, 0xf6, 0xe0, 0xfa, 0xeb, 0xaf, 0xc7, 0xcd, 
+0x37, 0xdf, 0xec, 0xe3, 0xfc, 0xb5, 0x2c, 0x5a, 
+0xb4, 0x08, 0xfd, 0xfb, 0xf7, 0x47, 0x7e, 0x7e, 
+0xbe, 0x7a, 0x5f, 0x28, 0x01, 0x90, 0x92, 0x92, 
+0x82, 0x99, 0x33, 0x67, 0x46, 0xdc, 0x56, 0x03, 
+0x7f, 0x3a, 0x75, 0xea, 0xd4, 0xe8, 0x15, 0xfa, 
+0xde, 0xbd, 0x7b, 0xf1, 0xbf, 0xff, 0xfd, 0x2f, 
+0xe4, 0x63, 0x46, 0x8e, 0x1c, 0xd9, 0xa8, 0xd7, 
+0x6e, 0x28, 0xb2, 0x2c, 0xe3, 0xfd, 0xf7, 0xdf, 
+0x6f, 0xd0, 0x73, 0x06, 0x0f, 0x1e, 0x8c, 0x6f, 
+0xbf, 0xfd, 0x16, 0x2f, 0xbc, 0xf0, 0x42, 0x52, 
+0x39, 0x7f, 0xa7, 0xd3, 0x89, 0x2f, 0xbe, 0xf8, 
+0x02, 0x6e, 0xb7, 0xdb, 0x2f, 0xf7, 0xff, 0xcb, 
+0x2f, 0xbf, 0x7c, 0x71, 0xf2, 0xe4, 0xc9, 0x53, 
+0x84, 0x10, 0x99, 0x31, 0xa6, 0xfa, 0x99, 0x50, 
+0x11, 0x00, 0x6d, 0xf8, 0x9f, 0x17, 0x01, 0x3a, 
+0x9d, 0x4e, 0xe6, 0x70, 0x38, 0x18, 0xcf, 0xff, 
+0xf3, 0x3d, 0x00, 0xd2, 0xd2, 0xd2, 0xfc, 0xbe, 
+0xb4, 0xb8, 0x7f, 0xd4, 0xfa, 0xcc, 0xa4, 0x10, 
+0x00, 0x40, 0xc3, 0x45, 0x40, 0x7e, 0x7e, 0x3e, 
+0x03, 0x0c, 0x11, 0x60, 0xd0, 0x70, 0xd6, 0xaf, 
+0x5f, 0x8f, 0xbe, 0x7d, 0xfb, 0xe2, 0xfe, 0xfb, 
+0xef, 0xc7, 0xcb, 0x2f, 0xbf, 0x8c, 0xd9, 0xb3, 
+0x67, 0xd7, 0xfb, 0x9c, 0x44, 0x15, 0x00, 0xc5, 
+0xc5, 0xc5, 0xf8, 0xf3, 0x9f, 0xff, 0x8c, 0x3e, 
+0x7d, 0xfa, 0xe0, 0xab, 0xaf, 0xbe, 0xaa, 0xf7, 
+0xf1, 0x3f, 0xfd, 0xf4, 0x13, 0x06, 0x0c, 0x18, 
+0x80, 0x85, 0x0b, 0x17, 0x42, 0x51, 0x14, 0x6c, 
+0xdf, 0xbe, 0xdd, 0xe7, 0xbc, 0xf6, 0x4b, 0xec, 
+0xc9, 0x27, 0x9f, 0x44, 0xd7, 0xae, 0x5d, 0x23, 
+0x6e, 0xb3, 0x41, 0x60, 0x86, 0x0c, 0x19, 0x12, 
+0x95, 0xd7, 0x35, 0x9b, 0xcd, 0xb8, 0xe5, 0x96, 
+0x5b, 0xa2, 0xf2, 0xda, 0x7a, 0xd6, 0xac, 0x59, 
+0x13, 0x72, 0x4f, 0x09, 0x2d, 0xd7, 0x5f, 0x7f, 
+0x3d, 0x36, 0x6c, 0xd8, 0x80, 0x75, 0xeb, 0xd6, 
+0xe1, 0xca, 0x2b, 0xaf, 0x8c, 0xb2, 0x65, 0x91, 
+0x45, 0x51, 0x14, 0x7c, 0xf9, 0xe5, 0x97, 0xb0, 
+0xdb, 0xed, 0x7e, 0x1d, 0x32, 0x95, 0x95, 0x95, 
+0x3f, 0x6d, 0xd8, 0xb0, 0xe1, 0x4b, 0x00, 0x12, 
+0x00, 0x49, 0x10, 0x04, 0x59, 0x5b, 0x03, 0x80, 
+0x3a, 0x21, 0xa0, 0x46, 0x01, 0x28, 0xa5, 0x4c, 
+0x14, 0x45, 0xc5, 0x64, 0x32, 0x29, 0x66, 0xb3, 
+0x59, 0x11, 0x04, 0x81, 0xa5, 0xa4, 0xa4, 0x28, 
+0x56, 0xab, 0x55, 0xd1, 0x87, 0xff, 0x01, 0xa0, 
+0xa2, 0xa2, 0xa2, 0x69, 0x14, 0x01, 0xea, 0x31, 
+0x44, 0x80, 0x41, 0x34, 0x39, 0x78, 0xf0, 0x20, 
+0x86, 0x0f, 0x1f, 0x8e, 0x21, 0x43, 0x86, 0xf8, 
+0xe4, 0xec, 0xa6, 0x4e, 0x9d, 0x5a, 0xef, 0x67, 
+0x12, 0x4e, 0x91, 0x55, 0xac, 0xb7, 0x28, 0x7d, 
+0xfe, 0xf9, 0xe7, 0xd1, 0xb5, 0x6b, 0x57, 0xcc, 
+0x9f, 0x3f, 0xbf, 0x41, 0xdb, 0xc1, 0xd6, 0xd6, 
+0xd6, 0x62, 0xdc, 0xb8, 0x71, 0xe8, 0xd2, 0xa5, 
+0x8b, 0xcf, 0x38, 0x59, 0x9b, 0xcd, 0x86, 0x36, 
+0x6d, 0xda, 0xc0, 0x62, 0xb1, 0xe0, 0x1f, 0xff, 
+0xf8, 0x07, 0x1e, 0x7d, 0xf4, 0xd1, 0x68, 0x98, 
+0x6d, 0x10, 0x84, 0x68, 0x08, 0x00, 0x42, 0x08, 
+0x26, 0x4d, 0x9a, 0x84, 0xf4, 0xf4, 0xf4, 0x88, 
+0xbf, 0x76, 0x20, 0xc2, 0x59, 0xfd, 0x0f, 0x1b, 
+0x36, 0x0c, 0x9b, 0x37, 0x6f, 0xc6, 0xda, 0xb5, 
+0x6b, 0x93, 0xb2, 0xd7, 0x1f, 0x00, 0xbe, 0xfb, 
+0xee, 0x3b, 0x9c, 0x3a, 0x75, 0xca, 0xcf, 0xf9, 
+0x3b, 0x9d, 0xce, 0x93, 0x5f, 0x7c, 0xf1, 0xc5, 
+0x42, 0xd4, 0xf9, 0x02, 0x89, 0x52, 0x2a, 0xa3, 
+0x4e, 0x08, 0xa8, 0x8e, 0x5f, 0x14, 0x45, 0x99, 
+0x17, 0xff, 0xe9, 0x71, 0xbb, 0xdd, 0x4c, 0x51, 
+0x14, 0x85, 0x57, 0xff, 0xf3, 0xe2, 0xbf, 0x94, 
+0x94, 0x14, 0x76, 0xea, 0xd4, 0x29, 0x9f, 0xfe, 
+0x7f, 0x6f, 0xfa, 0x3b, 0x68, 0xfe, 0x1f, 0x48, 
+0x32, 0x01, 0x00, 0x18, 0x22, 0xc0, 0x20, 0xf2, 
+0x48, 0x92, 0x84, 0xe7, 0x9e, 0x7b, 0x0e, 0x3d, 
+0x7a, 0xf4, 0xc0, 0x8a, 0x15, 0x2b, 0xfc, 0xce, 
+0xcb, 0xb2, 0x8c, 0xd1, 0xa3, 0x47, 0xe3, 0xd8, 
+0xb1, 0x63, 0x41, 0x5f, 0x23, 0x9c, 0x08, 0x40, 
+0x2c, 0x2b, 0x97, 0x0f, 0x1e, 0x3c, 0x88, 0x69, 
+0xd3, 0xa6, 0xd5, 0xdb, 0xc2, 0x17, 0x0a, 0x7d, 
+0x5b, 0x56, 0x4d, 0x4d, 0x0d, 0xba, 0x77, 0xef, 
+0x8e, 0x3d, 0x7b, 0xf6, 0x60, 0xc6, 0x8c, 0x19, 
+0xea, 0x9e, 0xe6, 0x06, 0xb1, 0x41, 0xdf, 0x16, 
+0xda, 0xb7, 0x6f, 0xdf, 0xb3, 0x1a, 0x0f, 0xdd, 
+0xaf, 0x5f, 0x3f, 0x6c, 0xd9, 0xb2, 0x05, 0xcf, 
+0x3f, 0xff, 0xfc, 0xd9, 0x9a, 0x16, 0x16, 0x8a, 
+0xa2, 0x60, 0xed, 0xda, 0xb5, 0x21, 0x1f, 0xf3, 
+0xcd, 0x37, 0xdf, 0xe0, 0xb3, 0xcf, 0x3e, 0xc3, 
+0xc0, 0x81, 0x03, 0x63, 0x62, 0x53, 0x34, 0xf8, 
+0xe1, 0x87, 0x1f, 0xd4, 0x7e, 0x7f, 0x2d, 0x92, 
+0x24, 0x55, 0x7f, 0xf5, 0xd5, 0x57, 0x6f, 0x3b, 
+0x9d, 0xce, 0x1a, 0x00, 0x92, 0x37, 0xf4, 0x2f, 
+0xf1, 0xd5, 0x3e, 0x4f, 0x05, 0x28, 0x8a, 0xa2, 
+0xf0, 0x9f, 0x45, 0x51, 0x54, 0xcc, 0x66, 0xb3, 
+0xcc, 0x8b, 0xff, 0xcc, 0x66, 0xb3, 0xa2, 0x9d, 
+0xfe, 0xc7, 0xc3, 0xff, 0xc0, 0xaf, 0x5b, 0x00, 
+0x07, 0x0a, 0xff, 0x07, 0x23, 0xe9, 0x04, 0x00, 
+0x60, 0x88, 0x00, 0x83, 0xc8, 0x91, 0x97, 0x97, 
+0x87, 0x01, 0x03, 0x06, 0xe0, 0xf1, 0xc7, 0x1f, 
+0x0f, 0x39, 0xc9, 0xaf, 0xa4, 0xa4, 0x04, 0xb7, 
+0xdf, 0x7e, 0x7b, 0xd0, 0xc7, 0xd4, 0x27, 0x00, 
+0xda, 0xb4, 0x69, 0x13, 0xd3, 0x14, 0xc0, 0xaa, 
+0x55, 0xab, 0x22, 0xfa, 0x7a, 0xad, 0x5b, 0xb7, 
+0xc6, 0xfb, 0xef, 0xbf, 0x8f, 0x75, 0xeb, 0xd6, 
+0x21, 0x3b, 0x3b, 0x3b, 0xa2, 0xaf, 0x6d, 0x10, 
+0x1e, 0x6d, 0xdb, 0xb6, 0x45, 0x4e, 0x4e, 0x0e, 
+0x3a, 0x74, 0xe8, 0x80, 0x45, 0x8b, 0x16, 0x61, 
+0xc7, 0x8e, 0x1d, 0xf8, 0xec, 0xb3, 0xcf, 0x1a, 
+0xbc, 0x15, 0x73, 0x46, 0x46, 0x06, 0xde, 0x78, 
+0xe3, 0x0d, 0x6c, 0xdb, 0xb6, 0x0d, 0x03, 0x06, 
+0x0c, 0x88, 0x92, 0xb5, 0xfe, 0x6c, 0xdf, 0xbe, 
+0x1d, 0xe5, 0xe5, 0xe5, 0x41, 0xcf, 0x77, 0xea, 
+0xd4, 0x29, 0x6e, 0x1b, 0x5e, 0x45, 0x8a, 0x82, 
+0x82, 0x02, 0xbf, 0xce, 0x19, 0x6f, 0xc1, 0xba, 
+0xb4, 0x79, 0xf3, 0xe6, 0x85, 0x25, 0x25, 0x25, 
+0x25, 0x8c, 0x31, 0x49, 0x10, 0x04, 0x49, 0x10, 
+0x04, 0x49, 0x14, 0x45, 0xf5, 0x10, 0x04, 0x41, 
+0x16, 0x45, 0x51, 0x16, 0x45, 0xd1, 0xa7, 0x15, 
+0x90, 0xe7, 0xff, 0x79, 0x04, 0x40, 0xbb, 0xfa, 
+0xe7, 0xe1, 0x7f, 0xbb, 0xdd, 0xce, 0x6c, 0x36, 
+0x1b, 0xe3, 0xe1, 0xff, 0xa2, 0xa2, 0x22, 0xd5, 
+0x0f, 0x2e, 0x59, 0xb2, 0xc4, 0x2f, 0xff, 0xcf, 
+0x23, 0x13, 0x49, 0x29, 0x00, 0x00, 0x43, 0x04, 
+0x18, 0x9c, 0x1d, 0x6e, 0xb7, 0x1b, 0x4f, 0x3e, 
+0xf9, 0x24, 0xfa, 0xf7, 0xef, 0x8f, 0x1f, 0x7e, 
+0xf8, 0x21, 0xac, 0xe7, 0x6c, 0xdb, 0xb6, 0x0d, 
+0x13, 0x27, 0x4e, 0x0c, 0x78, 0xee, 0xd4, 0xa9, 
+0x53, 0x21, 0x9f, 0x1b, 0xeb, 0xbe, 0xe5, 0x60, 
+0x85, 0x7e, 0x0d, 0x85, 0x10, 0x82, 0xfb, 0xef, 
+0xbf, 0x1f, 0xfb, 0xf6, 0xed, 0xc3, 0xdd, 0x77, 
+0xdf, 0x1d, 0x91, 0xd7, 0x34, 0x68, 0x3c, 0x6f, 
+0xbc, 0xf1, 0x06, 0x0a, 0x0b, 0x0b, 0x71, 0xd7, 
+0x5d, 0x77, 0x81, 0x10, 0xa2, 0x16, 0xc8, 0xb5, 
+0x69, 0xd3, 0xa6, 0xde, 0xe7, 0x12, 0x42, 0x70, 
+0xef, 0xbd, 0xf7, 0xa2, 0xb0, 0xb0, 0x10, 0x0f, 
+0x3c, 0xf0, 0x40, 0xcc, 0xaa, 0xfe, 0x39, 0xf5, 
+0xad, 0xfe, 0x93, 0xbd, 0x0b, 0x6a, 0xdf, 0xbe, 
+0x7d, 0xf8, 0xfe, 0xfb, 0xef, 0xd5, 0x9f, 0xb5, 
+0x85, 0x7f, 0x7b, 0xf7, 0xee, 0xfd, 0xf8, 0xc0, 
+0x81, 0x03, 0x07, 0x51, 0x97, 0xf3, 0xf7, 0xc0, 
+0x9b, 0xff, 0xd7, 0xae, 0xfe, 0x09, 0x21, 0x92, 
+0x66, 0xe5, 0xef, 0xb3, 0xfa, 0xe7, 0xf9, 0xff, 
+0x94, 0x94, 0x14, 0x25, 0x25, 0x25, 0x45, 0xd1, 
+0xae, 0xfe, 0xf5, 0xc5, 0x7f, 0x99, 0x99, 0x99, 
+0xaa, 0xaf, 0xeb, 0xde, 0xbd, 0x7b, 0xc8, 0x68, 
+0x40, 0xd2, 0x0a, 0x00, 0xc0, 0x10, 0x01, 0x06, 
+0x8d, 0x67, 0xfd, 0xfa, 0xf5, 0x78, 0xe6, 0x99, 
+0x67, 0xe0, 0xf1, 0x78, 0x1a, 0xf4, 0xbc, 0xb7, 
+0xdf, 0x7e, 0x3b, 0x60, 0xcf, 0x7c, 0x61, 0x61, 
+0x61, 0xc8, 0xe7, 0xc5, 0x5a, 0x00, 0xec, 0xdf, 
+0xbf, 0xff, 0xac, 0x5f, 0x23, 0x37, 0x37, 0x17, 
+0x9b, 0x36, 0x6d, 0xc2, 0x9b, 0x6f, 0xbe, 0xd9, 
+0xe8, 0x36, 0x34, 0x83, 0xc8, 0x72, 0xd5, 0x55, 
+0x57, 0x21, 0x35, 0x35, 0xd5, 0xe7, 0xbe, 0x3e, 
+0x7d, 0xfa, 0x60, 0xd3, 0xa6, 0x4d, 0xe8, 0xdc, 
+0xb9, 0x73, 0xd0, 0xe7, 0xe5, 0xe6, 0xe6, 0x62, 
+0xc3, 0x86, 0x0d, 0x58, 0xb0, 0x60, 0x01, 0x5a, 
+0xb5, 0x6a, 0x15, 0x6d, 0x33, 0x03, 0xb2, 0x66, 
+0xcd, 0x9a, 0x90, 0xe7, 0x13, 0x65, 0xf2, 0x65, 
+0x63, 0x38, 0x70, 0xe0, 0x00, 0x36, 0x6e, 0xdc, 
+0xa8, 0xfe, 0xac, 0xcd, 0xfd, 0x1f, 0x39, 0x72, 
+0xe4, 0xab, 0xed, 0xdb, 0xb7, 0xef, 0x80, 0xce, 
+0xf9, 0xf3, 0x43, 0x14, 0x45, 0x89, 0x3b, 0x7f, 
+0x78, 0xfd, 0x8a, 0x52, 0x57, 0xb4, 0x23, 0xeb, 
+0xf3, 0xff, 0x7c, 0xf5, 0x6f, 0xb3, 0xd9, 0x94, 
+0xb3, 0x29, 0xfe, 0x03, 0xea, 0xfc, 0x67, 0x52, 
+0x0b, 0x00, 0xc0, 0x10, 0x01, 0x06, 0xb1, 0x67, 
+0xc2, 0x84, 0x09, 0x3e, 0x4a, 0x1f, 0xa8, 0x5f, 
+0x00, 0xc4, 0x7a, 0x5a, 0x5e, 0x7d, 0x02, 0xe0, 
+0xa2, 0x8b, 0x2e, 0x0a, 0x9a, 0xc3, 0xb7, 0xd9, 
+0x6c, 0x78, 0xe9, 0xa5, 0x97, 0xb0, 0x73, 0xe7, 
+0x4e, 0x63, 0xca, 0x5f, 0x92, 0xd0, 0xb9, 0x73, 
+0x67, 0x6c, 0xdd, 0xba, 0x15, 0xe3, 0xc6, 0x8d, 
+0xf3, 0x71, 0x3e, 0xe7, 0x9d, 0x77, 0x1e, 0x5e, 
+0x7d, 0xf5, 0x55, 0xec, 0xda, 0xb5, 0x0b, 0x97, 
+0x5f, 0x7e, 0x79, 0xdc, 0xec, 0xab, 0xac, 0xac, 
+0x0c, 0xd9, 0xfb, 0x4f, 0x08, 0x49, 0xda, 0x08, 
+0xc0, 0xa1, 0x43, 0x87, 0xf0, 0xdd, 0x77, 0xdf, 
+0x01, 0x80, 0x5f, 0xbb, 0xdf, 0xe9, 0xd3, 0xa7, 
+0x77, 0x7d, 0xf9, 0xe5, 0x97, 0x5f, 0x08, 0x82, 
+0xe0, 0xd1, 0x3a, 0x7f, 0x6d, 0xf8, 0xdf, 0xfb, 
+0xb3, 0x1a, 0xfe, 0x37, 0x99, 0x4c, 0xb2, 0xd9, 
+0x6c, 0x96, 0x15, 0x45, 0x51, 0x4c, 0x26, 0x93, 
+0x22, 0xcb, 0xb2, 0xcf, 0xea, 0x3f, 0x35, 0x35, 
+0x55, 0xd1, 0xae, 0xfe, 0xab, 0xaa, 0xaa, 0x98, 
+0xcd, 0x66, 0x63, 0x7c, 0xf5, 0xcf, 0x8b, 0xff, 
+0x80, 0xd0, 0xe1, 0x7f, 0x20, 0xc9, 0x23, 0x00, 
+0x1c, 0x43, 0x04, 0x18, 0x84, 0xe2, 0x9b, 0x6f, 
+0xbe, 0xc1, 0x5b, 0x6f, 0xbd, 0x15, 0xb1, 0xd7, 
+0xe3, 0xb3, 0xd6, 0x8f, 0x1e, 0x3d, 0x0a, 0xa0, 
+0xae, 0x88, 0xf0, 0xf0, 0xe1, 0xc3, 0x41, 0x1f, 
+0x2f, 0x08, 0x02, 0xae, 0xbf, 0xfe, 0xfa, 0x88, 
+0xbd, 0x7f, 0x7d, 0x54, 0x55, 0x55, 0xf9, 0x54, 
+0xef, 0x07, 0xe2, 0xd5, 0x57, 0x5f, 0xc5, 0xd1, 
+0xa3, 0x47, 0x31, 0x63, 0xc6, 0x0c, 0x74, 0xe9, 
+0xd2, 0x05, 0x99, 0x99, 0x99, 0xe8, 0xd2, 0xa5, 
+0x0b, 0xa6, 0x4c, 0x99, 0x82, 0x82, 0x82, 0x02, 
+0x4c, 0x9e, 0x3c, 0xd9, 0x28, 0xf2, 0x4b, 0x32, 
+0x32, 0x33, 0x33, 0xf1, 0xce, 0x3b, 0xef, 0x60, 
+0xd3, 0xa6, 0x4d, 0x78, 0xfe, 0xf9, 0xe7, 0x31, 
+0x73, 0xe6, 0x4c, 0x14, 0x16, 0x16, 0xe2, 0xe1, 
+0x87, 0x1f, 0x8e, 0x7b, 0xff, 0xfc, 0xfa, 0xf5, 
+0xeb, 0x21, 0x49, 0x52, 0xd0, 0xf3, 0xd7, 0x5c, 
+0x73, 0x4d, 0xc8, 0x81, 0x35, 0x89, 0xca, 0x91, 
+0x23, 0x47, 0xf0, 0xed, 0xb7, 0xdf, 0x82, 0x31, 
+0xe6, 0x57, 0xf1, 0x5f, 0x52, 0x52, 0xb2, 0x67, 
+0xd5, 0xaa, 0x55, 0x8b, 0x35, 0x8e, 0xdf, 0x23, 
+0x08, 0x82, 0x47, 0x14, 0x45, 0x0f, 0x21, 0x44, 
+0x1b, 0x09, 0xf0, 0xf3, 0x27, 0x00, 0x54, 0x11, 
+0x60, 0x36, 0x9b, 0x15, 0x45, 0x51, 0x14, 0x59, 
+0x96, 0x15, 0x7d, 0xee, 0x3f, 0xd4, 0xea, 0xbf, 
+0xbe, 0xf0, 0x3f, 0x00, 0x90, 0x70, 0x86, 0x9c, 
+0x24, 0x0b, 0xfa, 0x1d, 0x04, 0x39, 0x8c, 0x31, 
+0xf0, 0x89, 0x81, 0x00, 0x90, 0x9f, 0x9f, 0xcf, 
+0xa7, 0x07, 0x12, 0xa0, 0x6e, 0x62, 0x20, 0x00, 
+0x64, 0x65, 0x65, 0x91, 0xb2, 0xb2, 0x32, 0x62, 
+0xb7, 0xdb, 0x89, 0xd9, 0x6c, 0xa6, 0x0e, 0x87, 
+0x83, 0xa4, 0xa5, 0xa5, 0x91, 0xca, 0xca, 0x4a, 
+0x6a, 0x32, 0x99, 0xa8, 0xd5, 0x6a, 0x25, 0x67, 
+0xce, 0x9c, 0x11, 0x44, 0x51, 0xa4, 0x82, 0x20, 
+0xd0, 0x9a, 0x9a, 0x1a, 0x01, 0x80, 0xcf, 0xa1, 
+0x28, 0x8a, 0xe8, 0xf1, 0x78, 0x04, 0xc6, 0x98, 
+0x28, 0xcb, 0xb2, 0x89, 0x31, 0x26, 0x02, 0x10, 
+0x15, 0x45, 0x31, 0x31, 0xc6, 0x4c, 0x1e, 0x8f, 
+0xc7, 0x04, 0xc0, 0xa4, 0x28, 0x8a, 0x99, 0x31, 
+0x66, 0xf2, 0x3e, 0xc6, 0x2c, 0xcb, 0xb2, 0xd9, 
+0x7b, 0xbf, 0xa5, 0x57, 0xaf, 0x5e, 0xc3, 0x03, 
+0x4d, 0x0c, 0x04, 0xea, 0x5a, 0x64, 0x92, 0x55, 
+0x29, 0xc7, 0x9a, 0xad, 0x5b, 0xb7, 0xe2, 0x89, 
+0x27, 0x9e, 0x50, 0xfb, 0xdf, 0x57, 0xac, 0x58, 
+0x81, 0x5b, 0x6f, 0xbd, 0x15, 0x00, 0xf0, 0xc5, 
+0x17, 0x5f, 0x60, 0xd8, 0xb0, 0x61, 0x67, 0xf5, 
+0xfa, 0xdd, 0xbb, 0x77, 0x57, 0xdb, 0x7d, 0x72, 
+0x72, 0x72, 0x82, 0x3e, 0xee, 0xb2, 0xcb, 0x2e, 
+0xc3, 0xa6, 0x4d, 0x9b, 0xce, 0xea, 0xbd, 0x1a, 
+0xc2, 0xb6, 0x6d, 0xdb, 0x70, 0xe9, 0xa5, 0x97, 
+0x86, 0x7c, 0xcc, 0xf1, 0xe3, 0xc7, 0xd1, 0xbe, 
+0x7d, 0xfb, 0x18, 0x59, 0x64, 0x70, 0x2e, 0x52, 
+0x53, 0x53, 0x83, 0x65, 0xcb, 0x96, 0x61, 0xd1, 
+0xa2, 0x45, 0xd8, 0xbf, 0x7f, 0x7f, 0xc8, 0xcd, 
+0x7e, 0x16, 0x2f, 0x5e, 0x8c, 0xd1, 0xa3, 0x47, 
+0xc7, 0xd0, 0xba, 0xb3, 0xe7, 0xe8, 0xd1, 0xa3, 
+0xf8, 0xea, 0xab, 0xaf, 0x02, 0x0e, 0x0a, 0x2b, 
+0x2f, 0x2f, 0x2f, 0x58, 0xb6, 0x6c, 0xd9, 0x7b, 
+0x00, 0x9c, 0x84, 0x10, 0xb7, 0x28, 0x8a, 0x6e, 
+0x42, 0x88, 0x9b, 0x10, 0xe2, 0xa6, 0x94, 0xba, 
+0x35, 0x0b, 0x41, 0x75, 0x41, 0xe8, 0x5d, 0x2c, 
+0x4a, 0xde, 0xf6, 0x40, 0x89, 0x52, 0x2a, 0x01, 
+0x90, 0x05, 0x41, 0x90, 0x08, 0x21, 0x72, 0x4a, 
+0x4a, 0x8a, 0x42, 0x29, 0x95, 0x65, 0x59, 0x56, 
+0x3c, 0x1e, 0x8f, 0x92, 0x9e, 0x9e, 0xae, 0x48, 
+0x92, 0xa4, 0xd8, 0x6c, 0x36, 0x26, 0x49, 0x92, 
+0xa2, 0x5f, 0xfd, 0xe7, 0xe7, 0xe7, 0xb3, 0x40, 
+0xc3, 0x7f, 0xf8, 0x14, 0x5d, 0xa0, 0x89, 0x44, 
+0x00, 0x38, 0x46, 0x24, 0xc0, 0x00, 0xa8, 0xab, 
+0xec, 0xbf, 0xf5, 0xd6, 0x5b, 0x31, 0x70, 0xe0, 
+0x40, 0x9f, 0xe1, 0x37, 0x93, 0x26, 0x4d, 0x82, 
+0xdb, 0xed, 0x8e, 0xd8, 0xfb, 0x14, 0x14, 0x14, 
+0x60, 0xe8, 0xd0, 0xa1, 0x58, 0xb6, 0x6c, 0x59, 
+0xc8, 0xc7, 0x9d, 0xad, 0xd0, 0x68, 0x28, 0xf5, 
+0x15, 0x35, 0xb6, 0x6e, 0xdd, 0xfa, 0x9c, 0x74, 
+0xfe, 0x3b, 0x76, 0xec, 0x80, 0xc3, 0xe1, 0x88, 
+0xb7, 0x19, 0x4d, 0x1a, 0x59, 0x96, 0xb1, 0x76, 
+0xed, 0x5a, 0xfc, 0xe1, 0x0f, 0x7f, 0x40, 0x9b, 
+0x36, 0x6d, 0x30, 0x76, 0xec, 0x58, 0xac, 0x59, 
+0xb3, 0x26, 0xa4, 0xf3, 0x6f, 0xd5, 0xaa, 0x15, 
+0x46, 0x8c, 0x18, 0x11, 0x43, 0x2b, 0xcf, 0x9e, 
+0xe3, 0xc7, 0x8f, 0x63, 0xfd, 0xfa, 0xf5, 0x7e, 
+0xce, 0x9f, 0x10, 0x82, 0x8a, 0x8a, 0x8a, 0xfd, 
+0x2b, 0x56, 0xac, 0x58, 0x04, 0xc0, 0xc5, 0xbf, 
+0xe3, 0x01, 0x78, 0x08, 0x21, 0x3e, 0x2b, 0x7f, 
+0xaf, 0x8f, 0x50, 0x43, 0xff, 0xd0, 0xf8, 0x11, 
+0x8b, 0xc5, 0x22, 0x6b, 0x0b, 0xff, 0x44, 0x51, 
+0x64, 0xb2, 0x2c, 0x2b, 0x0e, 0x87, 0x83, 0x99, 
+0xcd, 0x66, 0x66, 0xb1, 0x58, 0xd4, 0xb9, 0xff, 
+0x0d, 0x59, 0xfd, 0xeb, 0xd7, 0xc8, 0x4d, 0x4a, 
+0x00, 0x00, 0x86, 0x08, 0x38, 0x97, 0xa9, 0xa8, 
+0xa8, 0xc0, 0x5f, 0xfe, 0xf2, 0x17, 0xf4, 0xed, 
+0xdb, 0x37, 0x60, 0x1b, 0xdc, 0xa1, 0x43, 0x87, 
+0x30, 0x67, 0xce, 0x1c, 0x00, 0xfe, 0x7f, 0x08, 
+0x8d, 0x65, 0xc7, 0x8e, 0x1d, 0x78, 0xf2, 0xc9, 
+0x27, 0x43, 0x3e, 0xe6, 0xe6, 0x9b, 0x6f, 0x8e, 
+0xc8, 0x7b, 0x85, 0x4b, 0x7d, 0x02, 0xa0, 0x4f, 
+0x9f, 0x3e, 0x31, 0xb2, 0x24, 0xfe, 0xb8, 0x5c, 
+0x2e, 0xbc, 0xfb, 0xee, 0xbb, 0xe8, 0xdf, 0xbf, 
+0x3f, 0xb6, 0x6e, 0xdd, 0x0a, 0xab, 0xd5, 0x1a, 
+0x6f, 0x93, 0x9a, 0x24, 0x79, 0x79, 0x79, 0x98, 
+0x3c, 0x79, 0x32, 0x3a, 0x76, 0xec, 0x88, 0x1b, 
+0x6f, 0xbc, 0x11, 0xef, 0xbf, 0xff, 0x7e, 0xd8, 
+0x33, 0x28, 0xee, 0xb9, 0xe7, 0x1e, 0x98, 0xcd, 
+0xe6, 0x28, 0x5b, 0x18, 0x39, 0x4e, 0x9c, 0x38, 
+0x81, 0xaf, 0xbe, 0xfa, 0xca, 0x6f, 0xf3, 0x2f, 
+0x42, 0x08, 0xce, 0x9c, 0x39, 0x73, 0x68, 0xe5, 
+0xca, 0x95, 0xef, 0xc9, 0xb2, 0xec, 0x84, 0x37, 
+0xe4, 0xcf, 0x1d, 0x3f, 0x77, 0xfe, 0x26, 0x93, 
+0xc9, 0xc3, 0xf3, 0xff, 0x84, 0x10, 0xc9, 0xeb, 
+0x1f, 0xd4, 0xdc, 0x3f, 0x0f, 0xfd, 0x7b, 0xb7, 
+0x02, 0x96, 0x5d, 0x2e, 0x17, 0x93, 0x24, 0x49, 
+0x31, 0x99, 0x4c, 0xac, 0x59, 0xb3, 0x66, 0x8a, 
+0x24, 0x49, 0x8a, 0x76, 0xdb, 0xdf, 0xfa, 0x72, 
+0xff, 0xa1, 0x68, 0x72, 0x02, 0x00, 0x30, 0x44, 
+0xc0, 0xb9, 0x06, 0x63, 0x0c, 0x0b, 0x17, 0x2e, 
+0xc4, 0xc5, 0x17, 0x5f, 0x8c, 0x37, 0xdf, 0x7c, 
+0x33, 0xe4, 0xd4, 0xbb, 0xa7, 0x9f, 0x7e, 0x1a, 
+0xa5, 0xa5, 0xa5, 0x11, 0x6d, 0x81, 0xd2, 0xff, 
+0x77, 0x13, 0x04, 0x01, 0xb9, 0xb9, 0xb9, 0x68, 
+0xdf, 0xbe, 0x3d, 0x56, 0xaf, 0x5e, 0x1d, 0x73, 
+0x87, 0x5b, 0x9f, 0x00, 0xf8, 0xcd, 0x6f, 0x02, 
+0x66, 0x97, 0x9a, 0x14, 0x47, 0x8f, 0x1e, 0xc5, 
+0xb4, 0x69, 0xd3, 0xd0, 0xa1, 0x43, 0x07, 0xdc, 
+0x7b, 0xef, 0xbd, 0x18, 0x30, 0x60, 0x00, 0x26, 
+0x4c, 0x98, 0x10, 0x6f, 0xb3, 0x9a, 0x24, 0x0f, 
+0x3d, 0xf4, 0x10, 0x7a, 0xf7, 0xee, 0x8d, 0xd9, 
+0xb3, 0x67, 0x87, 0x3d, 0xe6, 0x17, 0xa8, 0x1b, 
+0x41, 0xcc, 0xdb, 0x4c, 0x93, 0x85, 0x13, 0x27, 
+0x4e, 0xe0, 0xcb, 0x2f, 0xbf, 0xf4, 0x71, 0xfe, 
+0xbc, 0xf0, 0xaf, 0xaa, 0xaa, 0xea, 0x97, 0xe5, 
+0xcb, 0x97, 0xbf, 0xeb, 0xf1, 0x78, 0x1c, 0xda, 
+0x95, 0x3f, 0x00, 0x8f, 0x28, 0x8a, 0x1e, 0x41, 
+0x10, 0x24, 0xef, 0xf7, 0xbe, 0xea, 0xf8, 0xb9, 
+0xf3, 0xe7, 0xb7, 0xd0, 0x74, 0x00, 0x00, 0x90, 
+0x5d, 0x2e, 0x17, 0xe3, 0x85, 0x7f, 0xb2, 0x2c, 
+0x2b, 0xbc, 0xf0, 0x4f, 0xdf, 0xf7, 0xaf, 0xdd, 
+0xbf, 0x43, 0xbf, 0xfa, 0xd7, 0x17, 0xff, 0x69, 
+0xfd, 0x63, 0x93, 0x14, 0x00, 0x80, 0x21, 0x02, 
+0xce, 0x15, 0xf2, 0xf3, 0xf3, 0x71, 0xe5, 0x95, 
+0x57, 0x62, 0xdc, 0xb8, 0x71, 0xf5, 0xee, 0x5b, 
+0x0f, 0xd4, 0x55, 0x23, 0xff, 0xe3, 0x1f, 0xff, 
+0x88, 0x58, 0x04, 0x20, 0x10, 0xed, 0xda, 0xb5, 
+0x43, 0xef, 0xde, 0xbd, 0xb1, 0x7b, 0xf7, 0x6e, 
+0xdc, 0x74, 0xd3, 0x4d, 0x51, 0x7b, 0x9f, 0x40, 
+0xc8, 0xb2, 0x8c, 0xbd, 0x7b, 0xf7, 0x86, 0x7c, 
+0x4c, 0x32, 0xb7, 0x5b, 0xd5, 0xc7, 0xfa, 0xf5, 
+0xeb, 0x71, 0xdb, 0x6d, 0xb7, 0xe1, 0xa2, 0x8b, 
+0x2e, 0xc2, 0xf3, 0xcf, 0x3f, 0x8f, 0xd2, 0xd2, 
+0x52, 0x0c, 0x1b, 0x36, 0x0c, 0xff, 0xfa, 0xd7, 
+0xbf, 0xe2, 0x6d, 0x5a, 0x93, 0x64, 0xe7, 0xce, 
+0x9d, 0x6a, 0x54, 0xad, 0x21, 0xd8, 0x6c, 0x36, 
+0x98, 0xcd, 0x66, 0xcc, 0x9e, 0x3d, 0x3b, 0x69, 
+0xf6, 0x93, 0x08, 0xe6, 0xfc, 0x01, 0xc0, 0x6e, 
+0xb7, 0x1f, 0x5f, 0xbe, 0x7c, 0xf9, 0x02, 0xb7, 
+0xdb, 0x5d, 0x8b, 0xba, 0xef, 0x6e, 0x35, 0xec, 
+0x2f, 0x8a, 0x22, 0x77, 0xfa, 0xaa, 0xf3, 0xd7, 
+0xdc, 0x06, 0x74, 0xfe, 0xda, 0xaa, 0x7f, 0x6d, 
+0xe8, 0x9f, 0x17, 0xfe, 0x59, 0xad, 0x56, 0x96, 
+0x9e, 0x9e, 0xae, 0x56, 0xfe, 0x67, 0x64, 0x64, 
+0x84, 0x5c, 0xfd, 0x07, 0xfb, 0xbe, 0x6b, 0xd2, 
+0x65, 0xbe, 0x5a, 0x11, 0xa0, 0x2f, 0x10, 0xe4, 
+0x22, 0x60, 0xc6, 0x8c, 0x19, 0x44, 0x23, 0x02, 
+0x30, 0x6a, 0xd4, 0x28, 0x00, 0x81, 0xb7, 0x12, 
+0x6e, 0xd9, 0xb2, 0x25, 0x29, 0x2d, 0x2d, 0xa5, 
+0xc6, 0x56, 0xc2, 0x89, 0xc3, 0xb4, 0x69, 0xd3, 
+0x1a, 0x5c, 0x60, 0xf7, 0xf6, 0xdb, 0x6f, 0x47, 
+0xad, 0xbd, 0xed, 0xbc, 0xf3, 0xce, 0xc3, 0x33, 
+0xcf, 0x3c, 0x83, 0x7b, 0xee, 0xb9, 0x27, 0x2a, 
+0xaf, 0x5f, 0x1f, 0xfb, 0xf6, 0xed, 0x0b, 0x99, 
+0xe7, 0xb6, 0xd9, 0x6c, 0x49, 0x3b, 0x5f, 0x3d, 
+0x14, 0xdf, 0x7d, 0xf7, 0x1d, 0x1e, 0x78, 0xe0, 
+0x01, 0xbf, 0x01, 0x48, 0x03, 0x07, 0x0e, 0xc4, 
+0x27, 0x9f, 0x7c, 0x62, 0x74, 0x34, 0x44, 0x89, 
+0x8f, 0x3e, 0xfa, 0xa8, 0x51, 0xcf, 0xbb, 0xf6, 
+0xda, 0x6b, 0xf1, 0xda, 0x6b, 0xaf, 0x35, 0x7a, 
+0x87, 0xc3, 0x58, 0x53, 0x54, 0x54, 0xe4, 0xe3, 
+0xfc, 0xb5, 0xee, 0xa4, 0xaa, 0xaa, 0xea, 0xe8, 
+0xf2, 0xe5, 0xcb, 0xdf, 0x71, 0x3a, 0x9d, 0xd5, 
+0x7c, 0x01, 0xc7, 0x43, 0xfe, 0xbc, 0x03, 0x20, 
+0x90, 0xf3, 0x67, 0x8c, 0xc9, 0x94, 0x52, 0xc9, 
+0x6c, 0x36, 0xcb, 0xde, 0x3d, 0x01, 0x14, 0x41, 
+0x10, 0x64, 0x42, 0x88, 0xe2, 0x1d, 0x07, 0xac, 
+0x48, 0x92, 0xa4, 0x34, 0x6f, 0xde, 0x5c, 0x91, 
+0x65, 0xd9, 0x27, 0xf4, 0x6f, 0xb3, 0xd9, 0x58, 
+0x59, 0x59, 0x99, 0x1a, 0xfa, 0xe7, 0xb6, 0xf0, 
+0x85, 0x2c, 0x47, 0xbb, 0xd8, 0x05, 0xfc, 0x17, 
+0xc6, 0x4d, 0x36, 0x02, 0xa0, 0x47, 0x27, 0x06, 
+0xd4, 0xfb, 0xf5, 0xd1, 0x80, 0x25, 0x4b, 0x96, 
+0xa0, 0x7b, 0xf7, 0xee, 0x2c, 0x50, 0x24, 0xa0, 
+0xa2, 0xa2, 0x82, 0xb5, 0x6c, 0xd9, 0x52, 0x31, 
+0x22, 0x01, 0x89, 0x83, 0x7e, 0xb7, 0xba, 0x70, 
+0x90, 0x24, 0x29, 0xe0, 0x30, 0x1f, 0x3d, 0xdd, 
+0xba, 0x75, 0x6b, 0xd0, 0xd0, 0x94, 0xab, 0xaf, 
+0xbe, 0x1a, 0x7b, 0xf6, 0xec, 0x89, 0x9b, 0xf3, 
+0x07, 0xea, 0x0f, 0xff, 0x5f, 0x7d, 0xf5, 0xd5, 
+0x49, 0x95, 0x6f, 0x0d, 0x87, 0xfd, 0xfb, 0xf7, 
+0x63, 0xf8, 0xf0, 0xe1, 0x7e, 0xce, 0xbf, 0x5b, 
+0xb7, 0x6e, 0x58, 0xbd, 0x7a, 0xb5, 0xdf, 0xe0, 
+0x9c, 0x64, 0x86, 0x31, 0x16, 0x56, 0xa4, 0x2b, 
+0x56, 0x6c, 0xd9, 0xb2, 0xa5, 0x41, 0x8f, 0x6f, 
+0xdf, 0xbe, 0x3d, 0x3e, 0xfd, 0xf4, 0x53, 0xac, 
+0x5a, 0xb5, 0x2a, 0xa9, 0x9c, 0xff, 0xda, 0xb5, 
+0x6b, 0x21, 0xcb, 0xb2, 0x5f, 0x9f, 0x7f, 0x55, 
+0x55, 0xd5, 0xb1, 0x65, 0xcb, 0x96, 0x2d, 0x70, 
+0x3a, 0x9d, 0x35, 0x9a, 0xef, 0x6e, 0x8f, 0x28, 
+0x8a, 0x6e, 0x6d, 0xfe, 0x1f, 0x1a, 0xe7, 0x6f, 
+0x32, 0x99, 0x24, 0xb3, 0xd9, 0x2c, 0x99, 0xcd, 
+0x66, 0xc9, 0x64, 0x32, 0xa9, 0x7e, 0x82, 0x10, 
+0x22, 0xf3, 0x76, 0x3f, 0x59, 0x96, 0x15, 0xab, 
+0xd5, 0xaa, 0xf6, 0xfc, 0xd7, 0xd4, 0xd4, 0x04, 
+0x0c, 0xfd, 0x73, 0xb4, 0x53, 0xff, 0xc2, 0x5d, 
+0xfd, 0x03, 0xe7, 0x90, 0x00, 0x00, 0x0c, 0x11, 
+0xd0, 0xd4, 0x38, 0x7e, 0xfc, 0x78, 0x83, 0x72, 
+0x8e, 0x5a, 0xf8, 0xe0, 0x8e, 0x50, 0x5c, 0x72, 
+0xc9, 0x25, 0x58, 0xb3, 0x66, 0x4d, 0xbd, 0x3b, 
+0xa5, 0x59, 0x2c, 0x16, 0xcc, 0x9a, 0x35, 0x0b, 
+0xeb, 0xd7, 0xaf, 0x8f, 0xfb, 0x97, 0x5a, 0x7d, 
+0x02, 0xe0, 0xc6, 0x1b, 0x6f, 0x8c, 0x91, 0x25, 
+0xb1, 0xa1, 0xa2, 0xa2, 0x02, 0xb7, 0xdc, 0x72, 
+0x8b, 0xdf, 0x5e, 0x0c, 0x1d, 0x3b, 0x76, 0xc4, 
+0xda, 0xb5, 0x6b, 0xd1, 0xa2, 0x45, 0x8b, 0x38, 
+0x59, 0x16, 0x59, 0x64, 0x59, 0xc6, 0xa2, 0x45, 
+0x8b, 0x90, 0x93, 0x93, 0xd3, 0x60, 0xa7, 0x1b, 
+0x4d, 0xea, 0x4b, 0x37, 0x71, 0x04, 0x41, 0xc0, 
+0xdf, 0xfe, 0xf6, 0x37, 0xfc, 0xf4, 0xd3, 0x4f, 
+0xb8, 0xed, 0xb6, 0xdb, 0xa2, 0x6c, 0x55, 0xe4, 
+0xd0, 0x3b, 0x7f, 0x2d, 0x55, 0x55, 0x55, 0xc7, 
+0x96, 0x2f, 0x5f, 0xbe, 0xc0, 0xe5, 0x72, 0x55, 
+0x7b, 0xdb, 0xfb, 0x3c, 0xf0, 0x16, 0xfe, 0xc1, 
+0x1b, 0xfe, 0x87, 0x77, 0xf5, 0x6f, 0x32, 0x99, 
+0xf8, 0xa1, 0x86, 0xfe, 0xb5, 0x87, 0x36, 0xef, 
+0x2f, 0xcb, 0xb2, 0x92, 0x92, 0x92, 0xa2, 0x38, 
+0x9d, 0x4e, 0x26, 0xcb, 0xb2, 0x92, 0x96, 0x96, 
+0xa6, 0x58, 0x2c, 0x16, 0x66, 0xb7, 0xdb, 0x99, 
+0xd5, 0x6a, 0x65, 0x15, 0x15, 0x15, 0x41, 0x87, 
+0xfe, 0x68, 0xa9, 0x6f, 0xf5, 0x0f, 0x9c, 0x63, 
+0x02, 0x00, 0xf0, 0x17, 0x01, 0xfc, 0x43, 0x35, 
+0x44, 0x40, 0xf2, 0xb1, 0x6d, 0xdb, 0xb6, 0xa8, 
+0xbe, 0x7e, 0xab, 0x56, 0xad, 0xd0, 0xa7, 0x4f, 
+0x1f, 0x7c, 0xfe, 0xf9, 0xe7, 0x68, 0xdb, 0xb6, 
+0x6d, 0xc0, 0xc7, 0xe4, 0xe6, 0xe6, 0x62, 0xdb, 
+0xb6, 0x6d, 0x78, 0xe4, 0x91, 0x47, 0x62, 0x3e, 
+0x5b, 0x3d, 0x10, 0xdf, 0x7e, 0xfb, 0x6d, 0xc8, 
+0xf3, 0x4d, 0x49, 0x00, 0xb8, 0x5c, 0x2e, 0xdc, 
+0x76, 0xdb, 0x6d, 0x38, 0x70, 0xe0, 0x80, 0xcf, 
+0xfd, 0x99, 0x99, 0x99, 0x58, 0xb3, 0x66, 0x4d, 
+0xcc, 0xb7, 0x5f, 0x8e, 0x06, 0x6e, 0xb7, 0x1b, 
+0x6f, 0xbf, 0xfd, 0x36, 0x2e, 0xbe, 0xf8, 0x62, 
+0x8c, 0x1d, 0x3b, 0x16, 0xfb, 0xf6, 0xed, 0x8b, 
+0xe9, 0x06, 0x3e, 0xa1, 0x38, 0x71, 0xe2, 0x44, 
+0x58, 0xdb, 0x60, 0xf7, 0xef, 0xdf, 0x1f, 0xdb, 
+0xb7, 0x6f, 0xc7, 0x2b, 0xaf, 0xbc, 0xd2, 0xe0, 
+0x8d, 0x8b, 0xe2, 0x49, 0x71, 0x71, 0x31, 0xbe, 
+0xfc, 0xf2, 0x4b, 0x28, 0x8a, 0xe2, 0xe7, 0xfc, 
+0xab, 0xab, 0xab, 0x8f, 0x2f, 0x5f, 0xbe, 0x7c, 
+0x81, 0xc3, 0xe1, 0xa8, 0x86, 0x37, 0xe7, 0xef, 
+0xfd, 0xae, 0xf6, 0xa9, 0xfa, 0xf7, 0x46, 0x03, 
+0x7c, 0x8a, 0xfe, 0x28, 0xa5, 0xea, 0x2d, 0x34, 
+0xfe, 0x81, 0x3b, 0xfe, 0x66, 0xcd, 0x9a, 0xc9, 
+0x3c, 0xe4, 0xcf, 0xf3, 0xfe, 0x2d, 0x5a, 0xb4, 
+0x50, 0xac, 0x56, 0xab, 0xdf, 0xc4, 0x3f, 0x6e, 
+0x0f, 0x0f, 0xfd, 0x87, 0x9a, 0xfa, 0x17, 0x88, 
+0xf8, 0x7f, 0x63, 0xc5, 0x01, 0xbd, 0x12, 0x32, 
+0x44, 0x40, 0x72, 0xa2, 0xdf, 0x75, 0x2b, 0xd2, 
+0xf0, 0xf0, 0xff, 0xa0, 0x41, 0x83, 0x90, 0x97, 
+0x97, 0x87, 0xe1, 0xc3, 0x87, 0xab, 0xdb, 0xaf, 
+0x36, 0x6b, 0xd6, 0x0c, 0x8f, 0x3e, 0xfa, 0x28, 
+0xb6, 0x6f, 0xdf, 0x8e, 0xdc, 0xdc, 0xdc, 0xa8, 
+0xda, 0x11, 0x2e, 0x27, 0x4e, 0x9c, 0x08, 0xf9, 
+0x3b, 0x39, 0xff, 0xfc, 0xf3, 0x71, 0xf1, 0xc5, 
+0x17, 0xc7, 0xd0, 0xa2, 0xe8, 0x21, 0x49, 0x12, 
+0x46, 0x8f, 0x1e, 0x8d, 0x6f, 0xbe, 0xf9, 0xc6, 
+0xe7, 0x7e, 0x9b, 0xcd, 0x86, 0xd5, 0xab, 0x57, 
+0xa3, 0x5b, 0xb7, 0x6e, 0xf1, 0x31, 0x2c, 0x42, 
+0x38, 0x1c, 0x0e, 0xcc, 0x99, 0x33, 0x07, 0x9d, 
+0x3b, 0x77, 0xc6, 0xfd, 0xf7, 0xdf, 0x8f, 0x43, 
+0x87, 0x0e, 0x01, 0xa8, 0x4b, 0xe1, 0x84, 0xb3, 
+0xf1, 0x4f, 0x2c, 0xa8, 0x6f, 0xf5, 0x6f, 0x32, 
+0x99, 0xf0, 0xda, 0x6b, 0xaf, 0x61, 0xcb, 0x96, 
+0x2d, 0x49, 0xd7, 0x7a, 0x5a, 0x5c, 0x5c, 0xac, 
+0xae, 0xfc, 0xf5, 0x54, 0x57, 0x57, 0x1f, 0x5f, 
+0xba, 0x74, 0xe9, 0x02, 0x87, 0xc3, 0xe1, 0x93, 
+0xf3, 0xf7, 0x0e, 0xf3, 0x51, 0xf3, 0xff, 0x7c, 
+0xd5, 0xcf, 0x07, 0xfc, 0xf0, 0x43, 0x3b, 0xf3, 
+0x1f, 0x5e, 0xc7, 0x6f, 0xb5, 0x5a, 0x65, 0x8b, 
+0xc5, 0xa2, 0x4e, 0xfb, 0xb3, 0xd9, 0x6c, 0x4a, 
+0xb3, 0x66, 0xcd, 0x14, 0x1e, 0xfa, 0xe7, 0x79, 
+0x7f, 0x7d, 0xd5, 0x7f, 0xb8, 0xa1, 0xff, 0x60, 
+0x45, 0xf1, 0xe7, 0xa4, 0x00, 0x00, 0x92, 0x5b, 
+0x04, 0x10, 0x42, 0xdc, 0x86, 0x08, 0xa8, 0x7f, 
+0x07, 0xbe, 0xb3, 0x45, 0x9b, 0xff, 0x6f, 0xdd, 
+0xba, 0x35, 0x96, 0x2d, 0x5b, 0x86, 0xca, 0xca, 
+0x4a, 0xec, 0xde, 0xbd, 0x1b, 0xa5, 0xa5, 0xa5, 
+0x78, 0xf1, 0xc5, 0x17, 0xa3, 0x9a, 0x4f, 0xaf, 
+0xa9, 0xa9, 0xc1, 0x5b, 0x6f, 0xbd, 0x85, 0xcd, 
+0x9b, 0x37, 0x87, 0xf5, 0xf8, 0x95, 0x2b, 0x57, 
+0x86, 0x3c, 0xdf, 0x54, 0x56, 0xff, 0x8c, 0x31, 
+0xfc, 0xf1, 0x8f, 0x7f, 0xc4, 0x8a, 0x15, 0x2b, 
+0x7c, 0xee, 0x37, 0x99, 0x4c, 0xf8, 0xe4, 0x93, 
+0x4f, 0xea, 0x9d, 0x82, 0x18, 0x2f, 0xca, 0xcb, 
+0xcb, 0x31, 0x76, 0xec, 0x58, 0xf4, 0xeb, 0xd7, 
+0x0f, 0x3b, 0x76, 0x04, 0xfc, 0xd3, 0x45, 0x75, 
+0x75, 0x35, 0x66, 0xcd, 0x9a, 0x85, 0x4e, 0x9d, 
+0x3a, 0xe1, 0xa1, 0x87, 0x1e, 0xc2, 0xf1, 0xe3, 
+0xc7, 0x7d, 0xce, 0x27, 0xd2, 0x8e, 0x8c, 0xf5, 
+0x09, 0x80, 0xcb, 0x2f, 0xbf, 0x1c, 0x13, 0x26, 
+0x4c, 0x48, 0x88, 0xc8, 0x58, 0x43, 0x38, 0x79, 
+0xf2, 0xa4, 0x5f, 0xb5, 0x3f, 0x50, 0xe7, 0x23, 
+0xaa, 0xab, 0xab, 0x4f, 0x78, 0x9d, 0xbf, 0x5d, 
+0xe7, 0xfc, 0x55, 0xc7, 0x8f, 0xba, 0xb6, 0x3f, 
+0xb5, 0xd8, 0x4f, 0x7f, 0x68, 0x57, 0xfe, 0x16, 
+0x8b, 0x45, 0xb6, 0x5a, 0xad, 0x32, 0xef, 0xf9, 
+0x97, 0x24, 0xc9, 0x27, 0xef, 0x9f, 0x9e, 0x9e, 
+0xae, 0x68, 0xf3, 0xfe, 0xe1, 0x54, 0xfd, 0xeb, 
+0x43, 0xff, 0xa1, 0x48, 0xae, 0x4f, 0x26, 0xc2, 
+0x24, 0xab, 0x08, 0x20, 0xde, 0x91, 0x92, 0xe7, 
+0xba, 0x08, 0x08, 0x27, 0xfc, 0x78, 0x36, 0xb4, 
+0x6e, 0xdd, 0xda, 0xef, 0x3e, 0x8b, 0xc5, 0x82, 
+0x5e, 0xbd, 0x7a, 0xa9, 0x91, 0x80, 0x68, 0xf0, 
+0xd3, 0x4f, 0x3f, 0xe1, 0xa1, 0x87, 0x1e, 0x42, 
+0xfb, 0xf6, 0xed, 0x31, 0x61, 0xc2, 0x04, 0x5c, 
+0x75, 0xd5, 0x55, 0x78, 0xee, 0xb9, 0xe7, 0x42, 
+0xce, 0x37, 0x00, 0xea, 0x17, 0x00, 0xb7, 0xdf, 
+0x7e, 0x7b, 0x24, 0xcd, 0x8c, 0x1b, 0x0f, 0x3f, 
+0xfc, 0x30, 0xde, 0x7f, 0xff, 0x7d, 0x9f, 0xfb, 
+0x2c, 0x16, 0x0b, 0x3e, 0xf8, 0xe0, 0x03, 0x0c, 
+0x1d, 0x3a, 0x34, 0x4e, 0x56, 0x85, 0xe6, 0xc4, 
+0x89, 0x13, 0xb8, 0xea, 0xaa, 0xab, 0xb0, 0x68, 
+0xd1, 0x22, 0xec, 0xda, 0xb5, 0x0b, 0x03, 0x07, 
+0x0e, 0xc4, 0xa4, 0x49, 0x93, 0x7c, 0xfe, 0x0f, 
+0x33, 0xc6, 0xd0, 0xbd, 0x7b, 0x77, 0x4c, 0x99, 
+0x32, 0x25, 0xa0, 0xb8, 0xb5, 0x5a, 0xad, 0x09, 
+0xf5, 0x19, 0xee, 0xda, 0xb5, 0x2b, 0xe4, 0xf9, 
+0x1b, 0x6e, 0xb8, 0x21, 0x46, 0x96, 0x44, 0x8e, 
+0x93, 0x27, 0x4f, 0x62, 0xed, 0xda, 0xb5, 0x3e, 
+0xfb, 0x16, 0xf0, 0x54, 0xb1, 0xdd, 0x6e, 0x3f, 
+0xb1, 0x6c, 0xd9, 0xb2, 0x05, 0x0e, 0x87, 0xc3, 
+0x2e, 0x08, 0x82, 0x1a, 0xee, 0xe7, 0xce, 0x9f, 
+0x52, 0xea, 0x06, 0xe0, 0x31, 0x99, 0x4c, 0x1e, 
+0xef, 0xcf, 0x3e, 0x3d, 0xff, 0xd0, 0xcd, 0xf9, 
+0xb7, 0x58, 0x2c, 0x32, 0x21, 0x44, 0x26, 0x84, 
+0xa8, 0x21, 0x7f, 0xde, 0xef, 0xcf, 0x47, 0xfd, 
+0xda, 0xed, 0x76, 0xd6, 0xb2, 0x65, 0x4b, 0x25, 
+0x58, 0xde, 0x3f, 0x6b, 0xf0, 0xd4, 0x55, 0x00, 
+0x00, 0x20, 0x00, 0x49, 0x44, 0x41, 0x54, 0x58, 
+0xd5, 0x7f, 0x38, 0xab, 0x7f, 0xe0, 0x1c, 0x17, 
+0x00, 0x40, 0xf0, 0x5f, 0x8e, 0x21, 0x02, 0x12, 
+0x1f, 0x6f, 0x2b, 0x66, 0xd4, 0x88, 0xe5, 0xb6, 
+0xa9, 0x92, 0x24, 0xe1, 0x93, 0x4f, 0x3e, 0xc1, 
+0xe0, 0xc1, 0x83, 0xd1, 0xbd, 0x7b, 0x77, 0xcc, 
+0x99, 0x33, 0x07, 0x95, 0x95, 0x95, 0x90, 0x24, 
+0x09, 0x92, 0x24, 0xe1, 0xf1, 0xc7, 0x1f, 0xc7, 
+0x0d, 0x37, 0xdc, 0x10, 0x34, 0xea, 0x51, 0x5d, 
+0x5d, 0x1d, 0xf2, 0xb3, 0xce, 0xcd, 0xcd, 0x4d, 
+0xca, 0x2f, 0x64, 0x3d, 0xd3, 0xa7, 0x4f, 0xf7, 
+0xeb, 0x3b, 0xcf, 0xcc, 0xcc, 0xc4, 0x97, 0x5f, 
+0x7e, 0xa9, 0xb6, 0xf0, 0x26, 0x1a, 0x79, 0x79, 
+0x79, 0xb8, 0xfc, 0xf2, 0xcb, 0x7d, 0x86, 0xb5, 
+0xc8, 0xb2, 0x8c, 0x57, 0x5e, 0x79, 0x05, 0x5d, 
+0xbb, 0x76, 0xc5, 0xdc, 0xb9, 0x73, 0xe1, 0x72, 
+0xb9, 0x90, 0x9f, 0x9f, 0x8f, 0x63, 0xc7, 0x8e, 
+0x05, 0x7d, 0x9d, 0xb9, 0x73, 0xe7, 0xd6, 0x5b, 
+0x90, 0x1a, 0x4b, 0xf4, 0xe9, 0x17, 0x3d, 0xb1, 
+0x9e, 0x81, 0x71, 0xb6, 0x9c, 0x3a, 0x75, 0x2a, 
+0xa0, 0xf3, 0x07, 0xa0, 0x3a, 0xff, 0xda, 0xda, 
+0xda, 0x2a, 0x4d, 0x9e, 0xdf, 0x27, 0xe7, 0x2f, 
+0x8a, 0xa2, 0x9f, 0xf3, 0xe7, 0xdf, 0xeb, 0xda, 
+0xd5, 0xbf, 0xd9, 0x6c, 0xf6, 0xab, 0xf8, 0xd7, 
+0x0e, 0xfb, 0xd1, 0x17, 0xfd, 0x69, 0xfb, 0xfd, 
+0xb5, 0x79, 0xff, 0x60, 0xa1, 0x7f, 0x2d, 0xa1, 
+0x9c, 0x3f, 0x60, 0x08, 0x00, 0x00, 0x49, 0xd9, 
+0x1d, 0xe0, 0x31, 0x44, 0x40, 0xd3, 0x11, 0x00, 
+0x9f, 0x7e, 0xfa, 0x29, 0x2e, 0xb8, 0xe0, 0x02, 
+0x8c, 0x1a, 0x35, 0x2a, 0xe4, 0x67, 0xb5, 0x6e, 
+0xdd, 0x3a, 0xf4, 0xe9, 0xd3, 0x27, 0x60, 0x07, 
+0xc3, 0x9a, 0x35, 0x6b, 0xe0, 0x72, 0xb9, 0x82, 
+0x3e, 0x77, 0xf2, 0xe4, 0xc9, 0x11, 0xb1, 0x35, 
+0x9e, 0xbc, 0xfa, 0xea, 0xab, 0x98, 0x39, 0x73, 
+0xa6, 0xcf, 0x7d, 0x5d, 0xbb, 0x76, 0xc5, 0xe6, 
+0xcd, 0x9b, 0x71, 0xe5, 0x95, 0x57, 0xc6, 0xc9, 
+0xaa, 0xd0, 0xcc, 0x9b, 0x37, 0x0f, 0x03, 0x07, 
+0x0e, 0xc4, 0x2f, 0xbf, 0xfc, 0x12, 0xf0, 0x7c, 
+0x69, 0x69, 0x29, 0x1e, 0x7c, 0xf0, 0x41, 0xb4, 
+0x68, 0xd1, 0x02, 0x23, 0x47, 0x8e, 0x0c, 0xfa, 
+0x3a, 0x7f, 0xfb, 0xdb, 0xdf, 0xe2, 0xda, 0x5e, 
+0xaa, 0xa7, 0xa0, 0xa0, 0x20, 0xe4, 0x8e, 0x93, 
+0x3d, 0x7a, 0xf4, 0x40, 0xaf, 0x5e, 0xbd, 0x62, 
+0x68, 0xd1, 0xd9, 0xa1, 0x77, 0xfe, 0xda, 0x02, 
+0x71, 0xbb, 0xdd, 0x5e, 0xe4, 0x75, 0xfe, 0x76, 
+0xbe, 0x08, 0xd3, 0x38, 0x7f, 0x37, 0x77, 0xfe, 
+0xfa, 0x76, 0x3f, 0x7d, 0xe8, 0x9f, 0x8f, 0xf9, 
+0x25, 0x84, 0xf8, 0xb4, 0xfe, 0x05, 0x1a, 0xf6, 
+0xa3, 0x2d, 0xfa, 0xe3, 0xfd, 0xfe, 0xfa, 0xbc, 
+0x7f, 0xb0, 0xd0, 0x7f, 0x7d, 0x85, 0x7f, 0x5a, 
+0x0c, 0x01, 0xe0, 0x25, 0xc9, 0x44, 0x80, 0xdb, 
+0x10, 0x01, 0x4d, 0x43, 0x00, 0x8c, 0x1f, 0x3f, 
+0x1e, 0xb7, 0xdf, 0x7e, 0x3b, 0x8a, 0x8a, 0x8a, 
+0xc2, 0x7a, 0x7c, 0x71, 0x71, 0x31, 0x86, 0x0c, 
+0x19, 0x82, 0x17, 0x5e, 0x78, 0x01, 0x1e, 0x8f, 
+0x47, 0xbd, 0x3f, 0x54, 0xf8, 0xbf, 0x43, 0x87, 
+0x0e, 0x18, 0x33, 0x66, 0xcc, 0x59, 0xdb, 0x1a, 
+0x4f, 0x16, 0x2e, 0x5c, 0x88, 0x49, 0x93, 0x26, 
+0xf9, 0xdc, 0x77, 0xe5, 0x95, 0x57, 0x62, 0xf3, 
+0xe6, 0xcd, 0x09, 0x39, 0x49, 0xae, 0xb2, 0xb2, 
+0x12, 0x77, 0xdc, 0x71, 0x07, 0x1e, 0x78, 0xe0, 
+0x01, 0x38, 0x9d, 0xce, 0x7a, 0x1f, 0x5f, 0x5b, 
+0x5b, 0x8b, 0xfd, 0xfb, 0xf7, 0x07, 0x3c, 0x37, 
+0x7e, 0xfc, 0x78, 0xbc, 0xfc, 0xf2, 0xcb, 0x91, 
+0x36, 0xf1, 0xac, 0xa8, 0xef, 0xfb, 0xe4, 0x0f, 
+0x7f, 0xf8, 0x43, 0x8c, 0x2c, 0x39, 0x7b, 0xb8, 
+0xf3, 0xe7, 0x7f, 0x4f, 0xda, 0xef, 0xff, 0xea, 
+0xea, 0x6a, 0xad, 0xf3, 0x77, 0xd7, 0xe7, 0xfc, 
+0xf9, 0x77, 0xb6, 0xb6, 0xe0, 0x8f, 0xcf, 0xf8, 
+0x87, 0xd7, 0xe1, 0x43, 0x57, 0xf5, 0xcf, 0xc3, 
+0xff, 0x7c, 0xce, 0x7f, 0x8b, 0x16, 0x2d, 0x94, 
+0x40, 0x45, 0x7f, 0x3c, 0xef, 0x1f, 0xae, 0xf3, 
+0xaf, 0x6f, 0xf5, 0x0f, 0x34, 0xb1, 0xed, 0x80, 
+0x23, 0x01, 0xd1, 0xfc, 0x06, 0xb5, 0xbf, 0x1b, 
+0xfd, 0x76, 0xc2, 0xa3, 0x46, 0x8d, 0x42, 0x41, 
+0x41, 0x01, 0x09, 0xb4, 0x95, 0x70, 0x46, 0x46, 
+0x06, 0x29, 0x2d, 0x2d, 0xa5, 0x31, 0xd8, 0x4a, 
+0x58, 0x7b, 0x6b, 0x66, 0x8c, 0x99, 0xcf, 0xa5, 
+0xad, 0x84, 0xdb, 0xb4, 0x69, 0x83, 0xd3, 0xa7, 
+0x4f, 0x47, 0xed, 0xf5, 0xdd, 0x6e, 0x37, 0x4c, 
+0x26, 0x53, 0xd4, 0x5e, 0xff, 0xb3, 0xcf, 0x3e, 
+0x3b, 0xab, 0x8d, 0x82, 0x2e, 0xbc, 0xf0, 0x42, 
+0x3c, 0xf6, 0xd8, 0x63, 0xb8, 0xe3, 0x8e, 0x3b, 
+0xd0, 0xb9, 0x73, 0x67, 0x94, 0x97, 0x97, 0xfb, 
+0x3d, 0x46, 0x10, 0x04, 0x2c, 0x5d, 0xba, 0x54, 
+0xdd, 0x06, 0x39, 0x59, 0x70, 0x3a, 0x9d, 0x38, 
+0x7c, 0xf8, 0x30, 0x52, 0x53, 0x53, 0xb1, 0x71, 
+0xe3, 0x46, 0xdc, 0x7b, 0xef, 0xbd, 0x3e, 0x45, 
+0x59, 0x77, 0xdd, 0x75, 0x17, 0xde, 0x79, 0xe7, 
+0x9d, 0x84, 0x1c, 0x6a, 0xb4, 0x7d, 0xfb, 0x76, 
+0x8c, 0x19, 0x33, 0x06, 0x87, 0x0f, 0x1f, 0x3e, 
+0xab, 0xd7, 0xc9, 0xca, 0xca, 0xc2, 0xfc, 0xf9, 
+0xf3, 0x13, 0xb2, 0xae, 0x61, 0xe4, 0xc8, 0x91, 
+0x58, 0xba, 0x74, 0x69, 0xc0, 0x73, 0x82, 0x20, 
+0xe0, 0xe8, 0xd1, 0xa3, 0xe0, 0x53, 0x54, 0x13, 
+0x19, 0xad, 0xf3, 0x0f, 0xd0, 0xea, 0x57, 0xbc, 
+0x74, 0xe9, 0xd2, 0x77, 0xbc, 0x61, 0x7f, 0x37, 
+0x21, 0xc4, 0x8d, 0xba, 0x02, 0x3f, 0xb7, 0xde, 
+0xf9, 0xf3, 0xb0, 0xbf, 0xd6, 0xf9, 0x13, 0x42, 
+0x24, 0x8b, 0xc5, 0xe2, 0xb3, 0xad, 0x2f, 0xbc, 
+0x8e, 0xdf, 0x66, 0xb3, 0xf9, 0xe4, 0xfe, 0xb5, 
+0x9b, 0xfc, 0xf0, 0x2d, 0x7e, 0xeb, 0xcb, 0xfb, 
+0x87, 0x6a, 0xf9, 0x0b, 0xc7, 0xf9, 0x03, 0x86, 
+0x00, 0x08, 0x88, 0x21, 0x02, 0x92, 0x83, 0x94, 
+0x94, 0x94, 0x90, 0x61, 0x6f, 0x52, 0xb7, 0xef, 
+0x75, 0xa3, 0x5e, 0xbb, 0x79, 0xf3, 0xe6, 0x7e, 
+0xc3, 0x65, 0x22, 0xcd, 0xc0, 0x81, 0x03, 0xb1, 
+0x75, 0xeb, 0xd6, 0xb3, 0x7e, 0x9d, 0x40, 0x23, 
+0xa8, 0x81, 0xba, 0xeb, 0x5f, 0xb8, 0x70, 0x61, 
+0x52, 0xad, 0xc6, 0xaa, 0xaa, 0xaa, 0x30, 0x77, 
+0xee, 0x5c, 0xbc, 0xfa, 0xea, 0xab, 0x41, 0x43, 
+0xcc, 0xd3, 0xa7, 0x4f, 0xc7, 0x53, 0x4f, 0x3d, 
+0x15, 0x5b, 0xc3, 0xc2, 0x44, 0x92, 0x24, 0xd8, 
+0x6c, 0xb6, 0xb3, 0xda, 0x76, 0x3a, 0x3d, 0x3d, 
+0x1d, 0x0f, 0x3d, 0xf4, 0x10, 0x26, 0x4d, 0x9a, 
+0x84, 0xe6, 0xcd, 0x9b, 0x47, 0xd0, 0xba, 0xc8, 
+0x20, 0xcb, 0x32, 0x5a, 0xb7, 0x6e, 0x1d, 0x50, 
+0x70, 0x02, 0x75, 0xdd, 0x26, 0x5f, 0x7c, 0xf1, 
+0x45, 0x8c, 0xad, 0x6a, 0x38, 0xa7, 0x4f, 0x9f, 
+0xc6, 0x9a, 0x35, 0x6b, 0x7c, 0x72, 0xfe, 0x9c, 
+0x9a, 0x9a, 0x9a, 0xe2, 0xa5, 0x4b, 0x97, 0x2e, 
+0xa8, 0xa9, 0xa9, 0xa9, 0xd4, 0x3b, 0x7f, 0x78, 
+0xa3, 0xb1, 0x7a, 0xe7, 0x8f, 0x5f, 0x23, 0x00, 
+0x92, 0xd9, 0x6c, 0x96, 0x28, 0xa5, 0x7e, 0xbd, 
+0xfe, 0x00, 0x64, 0x9b, 0xcd, 0x26, 0xcb, 0xb2, 
+0xac, 0x10, 0x42, 0x64, 0x9b, 0xcd, 0xe6, 0x33, 
+0xe6, 0xb7, 0xb1, 0xce, 0x1f, 0x68, 0x9c, 0x00, 
+0x30, 0x52, 0x00, 0x01, 0x48, 0xf4, 0x74, 0x80, 
+0x28, 0x8a, 0xe7, 0x7c, 0x3a, 0xc0, 0xe5, 0x72, 
+0x85, 0x74, 0xfe, 0x40, 0x5d, 0xe8, 0xbb, 0x4b, 
+0x97, 0x2e, 0x8d, 0x7a, 0xfd, 0x68, 0x87, 0xff, 
+0xf7, 0xec, 0xd9, 0x13, 0x11, 0xe7, 0x0f, 0x20, 
+0xa0, 0xf3, 0x17, 0x45, 0x11, 0xaf, 0xbf, 0xfe, 
+0x7a, 0xd2, 0x38, 0xff, 0x53, 0xa7, 0x4e, 0x61, 
+0xda, 0xb4, 0x69, 0x38, 0xff, 0xfc, 0xf3, 0x31, 
+0x75, 0xea, 0xd4, 0x80, 0xce, 0xbf, 0x43, 0x87, 
+0x0e, 0x58, 0xba, 0x74, 0x69, 0xc2, 0x3a, 0x7f, 
+0xa0, 0x6e, 0xef, 0x8f, 0x96, 0x2d, 0x5b, 0x36, 
+0xea, 0xb9, 0x19, 0x19, 0x19, 0x98, 0x31, 0x63, 
+0x06, 0x8e, 0x1c, 0x39, 0x82, 0x99, 0x33, 0x67, 
+0x26, 0x84, 0xf3, 0x3f, 0x79, 0xf2, 0xa4, 0x5f, 
+0x7a, 0x69, 0xed, 0xda, 0xb5, 0x41, 0x9d, 0x3f, 
+0x00, 0x4c, 0x9c, 0x38, 0x31, 0xda, 0x66, 0x9d, 
+0x35, 0xb1, 0x70, 0xfe, 0xd0, 0x7d, 0xb7, 0x23, 
+0x88, 0xf3, 0xe7, 0xbd, 0xfe, 0x0d, 0x75, 0xfe, 
+0x5a, 0x1a, 0xe3, 0xfc, 0x01, 0x43, 0x00, 0x04, 
+0xe5, 0xff, 0xdb, 0x3b, 0xef, 0xf0, 0xa8, 0xaa, 
+0xfc, 0xff, 0xbf, 0x6f, 0x99, 0x49, 0xa1, 0x05, 
+0x12, 0x5a, 0x04, 0x09, 0xc2, 0xa2, 0x12, 0xaa, 
+0x18, 0x40, 0xa4, 0x08, 0x82, 0x80, 0x74, 0x05, 
+0x29, 0xab, 0xab, 0xe2, 0x2a, 0x2b, 0x56, 0x5c, 
+0xdd, 0x55, 0xf6, 0xf9, 0xea, 0xae, 0x65, 0xd9, 
+0x9f, 0x88, 0x2e, 0xbb, 0x60, 0xa7, 0xac, 0x52, 
+0x45, 0x08, 0x10, 0x6a, 0x1a, 0x09, 0x90, 0x06, 
+0x49, 0x40, 0x20, 0x82, 0x20, 0xd2, 0x5b, 0x7a, 
+0x08, 0xc9, 0x24, 0x33, 0xb7, 0xfc, 0xfe, 0xc8, 
+0x9c, 0xe1, 0xce, 0x9d, 0x3b, 0x99, 0x99, 0x64, 
+0x7a, 0xce, 0xeb, 0x79, 0xf2, 0x64, 0x32, 0x77, 
+0xe6, 0xe6, 0x9c, 0x9b, 0xcc, 0x7d, 0xbf, 0xcf, 
+0xe7, 0x7c, 0xce, 0xe7, 0xf8, 0xb3, 0x09, 0x20, 
+0xa1, 0xa7, 0xa6, 0x6c, 0x02, 0x9c, 0x99, 0xff, 
+0x97, 0x65, 0x19, 0xcf, 0x3e, 0xfb, 0x6c, 0x83, 
+0xce, 0xef, 0x69, 0x03, 0x70, 0xe0, 0xc0, 0x01, 
+0x8f, 0x9d, 0x7b, 0xe0, 0xc0, 0x81, 0xc8, 0xcb, 
+0xcb, 0xc3, 0x8b, 0x2f, 0xbe, 0xe8, 0xb1, 0xdf, 
+0xe1, 0x2e, 0xca, 0xcb, 0xcb, 0xf1, 0xc6, 0x1b, 
+0x6f, 0x20, 0x26, 0x26, 0x06, 0x8b, 0x16, 0x2d, 
+0xd2, 0xfc, 0xbb, 0xea, 0xf5, 0x7a, 0xbc, 0xfd, 
+0xf6, 0xdb, 0x38, 0x75, 0xea, 0x14, 0xa6, 0x4d, 
+0x9b, 0xe6, 0x83, 0x56, 0x3a, 0x0f, 0xcb, 0xb2, 
+0xe8, 0xd9, 0xb3, 0xa7, 0x4b, 0xef, 0x89, 0x8c, 
+0x8c, 0xc4, 0x47, 0x1f, 0x7d, 0x84, 0xf3, 0xe7, 
+0xcf, 0xe3, 0xdd, 0x77, 0xdf, 0xf5, 0x8a, 0xf0, 
+0x5f, 0xbc, 0x78, 0x11, 0xd5, 0xd5, 0xd5, 0x9a, 
+0xc7, 0x0c, 0x06, 0x03, 0xd6, 0xaf, 0x5f, 0x8f, 
+0xf1, 0xe3, 0xc7, 0xa3, 0x53, 0xa7, 0x4e, 0x78, 
+0xe2, 0x89, 0x27, 0x70, 0xf2, 0xe4, 0x49, 0xcb, 
+0xf1, 0x55, 0xab, 0x56, 0xd9, 0x3d, 0xef, 0x43, 
+0x0f, 0x3d, 0xd4, 0xa8, 0x69, 0x2d, 0x6f, 0x50, 
+0x58, 0x58, 0x68, 0x93, 0xed, 0x0f, 0xd4, 0xdd, 
+0xe7, 0xab, 0xaa, 0xaa, 0xae, 0xc7, 0xc7, 0xc7, 
+0x5b, 0xc4, 0x1f, 0xb7, 0xb7, 0xf3, 0x75, 0x59, 
+0xfc, 0xd5, 0x26, 0x80, 0x88, 0xbf, 0x59, 0xe8, 
+0x1d, 0xae, 0xf5, 0x57, 0x8a, 0xbf, 0x56, 0xc6, 
+0x7f, 0x63, 0x42, 0xff, 0x04, 0x6a, 0x00, 0xea, 
+0xc1, 0x9f, 0xcb, 0x06, 0x37, 0x75, 0x13, 0xe0, 
+0x4c, 0x88, 0x55, 0x96, 0x65, 0x3c, 0xfd, 0xf4, 
+0xd3, 0xe0, 0x38, 0xce, 0xe5, 0xf3, 0xb7, 0x6e, 
+0xdd, 0xba, 0x21, 0xcd, 0x72, 0x1a, 0x4f, 0x18, 
+0x80, 0xb6, 0x6d, 0xdb, 0x62, 0xe9, 0xd2, 0xa5, 
+0xc8, 0xca, 0xca, 0xf2, 0x9b, 0xea, 0x84, 0xf6, 
+0x10, 0x45, 0x11, 0x5f, 0x7c, 0xf1, 0x05, 0x7e, 
+0xf7, 0xbb, 0xdf, 0xe1, 0xb3, 0xcf, 0x3e, 0xd3, 
+0x4c, 0x94, 0x63, 0x18, 0x06, 0x53, 0xa7, 0x4e, 
+0xc5, 0xf1, 0xe3, 0xc7, 0xb1, 0x68, 0xd1, 0x22, 
+0x34, 0x6b, 0xd6, 0xcc, 0x07, 0x2d, 0x75, 0x1d, 
+0x67, 0xaa, 0x10, 0xea, 0xf5, 0x7a, 0xcc, 0x9e, 
+0x3d, 0x1b, 0xab, 0x56, 0xad, 0xc2, 0xf9, 0xf3, 
+0xe7, 0xb1, 0x70, 0xe1, 0x42, 0xb4, 0x6c, 0xd9, 
+0xd2, 0x0b, 0xad, 0xab, 0xdb, 0x07, 0x63, 0xfc, 
+0xf8, 0xf1, 0x08, 0x0b, 0x0b, 0xb3, 0x3c, 0x27, 
+0xcb, 0x32, 0xf6, 0xed, 0xdb, 0x87, 0x67, 0x9f, 
+0x7d, 0x16, 0xed, 0xdb, 0xb7, 0xc7, 0x9c, 0x39, 
+0x73, 0xb0, 0x67, 0xcf, 0x1e, 0x88, 0xa2, 0x88, 
+0xda, 0xda, 0x5a, 0x3c, 0xff, 0xfc, 0xf3, 0x10, 
+0x45, 0x11, 0x25, 0x25, 0x25, 0x36, 0x05, 0x98, 
+0x08, 0x0c, 0xc3, 0x60, 0xf1, 0xe2, 0xc5, 0x5e, 
+0xe9, 0x43, 0x43, 0x29, 0x2a, 0x2a, 0xb2, 0x4a, 
+0xf8, 0x23, 0x28, 0xc4, 0x7f, 0xe5, 0xad, 0x5b, 
+0xb7, 0x2c, 0xe2, 0xcf, 0x30, 0x8c, 0x91, 0x88, 
+0xbf, 0xd6, 0x9c, 0x3f, 0x1a, 0x20, 0xfe, 0xa4, 
+0xd0, 0x8f, 0xa3, 0xb5, 0xfe, 0xa4, 0x6d, 0xee, 
+0x4c, 0xfa, 0x53, 0x43, 0x0d, 0x80, 0x03, 0x9c, 
+0x29, 0x16, 0x04, 0xd4, 0x55, 0x63, 0xf2, 0x96, 
+0x09, 0x30, 0x27, 0x98, 0x38, 0x6d, 0x02, 0xca, 
+0xcb, 0xcb, 0x35, 0xeb, 0xc3, 0x06, 0xb2, 0x09, 
+0x50, 0x7f, 0x80, 0xb5, 0x90, 0x24, 0x09, 0x77, 
+0xdc, 0x71, 0x47, 0x83, 0x2a, 0xe0, 0xdd, 0x7f, 
+0xbf, 0x66, 0x0a, 0x85, 0xdb, 0x70, 0x64, 0x00, 
+0x86, 0x0f, 0x1f, 0xee, 0x74, 0x02, 0x62, 0xa7, 
+0x4e, 0x9d, 0xb0, 0x74, 0xe9, 0x52, 0x5c, 0xb8, 
+0x70, 0x01, 0xaf, 0xbe, 0xfa, 0xaa, 0xdf, 0x57, 
+0x5e, 0x3b, 0x79, 0xf2, 0x24, 0xfa, 0xf7, 0xef, 
+0x8f, 0xf9, 0xf3, 0xe7, 0xa3, 0xb8, 0xb8, 0xd8, 
+0xe6, 0x78, 0x68, 0x68, 0x28, 0xe6, 0xcd, 0x9b, 
+0x87, 0x53, 0xa7, 0x4e, 0x21, 0x3e, 0x3e, 0x1e, 
+0x3d, 0x7a, 0xf4, 0xf0, 0x41, 0x2b, 0x1b, 0x4e, 
+0xe7, 0xce, 0x9d, 0x1d, 0xbe, 0x26, 0x3c, 0x3c, 
+0x1c, 0xeb, 0xd6, 0xad, 0xc3, 0x33, 0xcf, 0x3c, 
+0x83, 0xe6, 0xcd, 0x9b, 0x7b, 0xa1, 0x55, 0x75, 
+0x7c, 0xf5, 0xd5, 0x57, 0x18, 0x3d, 0x7a, 0x34, 
+0x7a, 0xf5, 0xea, 0x05, 0x86, 0x61, 0x50, 0x5d, 
+0x5d, 0x8d, 0x85, 0x0b, 0x17, 0xa2, 0x4b, 0x97, 
+0x2e, 0x18, 0x35, 0x6a, 0x14, 0x56, 0xaf, 0x5e, 
+0x8d, 0xca, 0xca, 0x4a, 0x9b, 0xf7, 0x65, 0x64, 
+0x64, 0xe0, 0xbd, 0xf7, 0xde, 0xc3, 0xaa, 0x55, 
+0xab, 0xec, 0x9a, 0xef, 0x59, 0xb3, 0x66, 0x79, 
+0xfc, 0x73, 0xd3, 0x18, 0x8a, 0x8a, 0x8a, 0xb0, 
+0x77, 0xef, 0x5e, 0xab, 0x7b, 0x07, 0x19, 0xd8, 
+0x55, 0x55, 0x55, 0xdd, 0xd8, 0xb2, 0x65, 0xcb, 
+0x2a, 0xa5, 0xf8, 0xf3, 0x3c, 0x6f, 0x25, 0xfe, 
+0x3a, 0x9d, 0xce, 0xa8, 0x16, 0x7f, 0xc5, 0x12, 
+0x3f, 0x4d, 0xf1, 0x57, 0x96, 0xf8, 0x75, 0xa5, 
+0xd0, 0x0f, 0xe0, 0xda, 0x72, 0xbf, 0x86, 0x88, 
+0x3f, 0x00, 0xd0, 0x4d, 0xb2, 0x9d, 0x40, 0x96, 
+0x65, 0x59, 0x99, 0x18, 0xa8, 0x4e, 0x2e, 0x8b, 
+0x8d, 0x8d, 0x95, 0x0b, 0x0a, 0x0a, 0x98, 0x4d, 
+0x9b, 0x36, 0x61, 0xc6, 0x8c, 0x19, 0xc4, 0x00, 
+0x30, 0xe6, 0x10, 0x0e, 0x80, 0xba, 0x5d, 0xcb, 
+0xa2, 0xa2, 0xa2, 0xa4, 0xe2, 0xe2, 0x62, 0xb6, 
+0x55, 0xab, 0x56, 0x92, 0x39, 0xd4, 0xc9, 0x46, 
+0x44, 0x44, 0x88, 0xa4, 0x1a, 0x98, 0x56, 0x32, 
+0x17, 0xcb, 0xb2, 0xd0, 0xe9, 0x74, 0x30, 0x99, 
+0x4c, 0xe0, 0x38, 0x4e, 0xb3, 0x36, 0x35, 0xcf, 
+0xf3, 0x10, 0x04, 0x01, 0x92, 0x24, 0x59, 0x5e, 
+0xa3, 0x7c, 0xed, 0xd1, 0xa3, 0x47, 0xe3, 0xfb, 
+0xf5, 0xeb, 0x87, 0x88, 0x88, 0x88, 0x01, 0xea, 
+0xf7, 0xee, 0xde, 0xbd, 0x1b, 0x00, 0x02, 0x2e, 
+0x31, 0xd0, 0x59, 0x03, 0x00, 0x00, 0x73, 0xe7, 
+0xce, 0xc5, 0xae, 0x5d, 0xbb, 0x9c, 0x3a, 0x6f, 
+0xfb, 0xf6, 0xed, 0xf1, 0xc9, 0x27, 0x9f, 0x78, 
+0xb4, 0xe4, 0xea, 0x6f, 0xbf, 0xfd, 0xe6, 0x70, 
+0xd9, 0xdf, 0xa6, 0x4d, 0x9b, 0x50, 0x59, 0x59, 
+0x89, 0xff, 0xfb, 0xbf, 0xff, 0xc3, 0x86, 0x0d, 
+0x1b, 0x34, 0x93, 0x19, 0xbb, 0x77, 0xef, 0x8e, 
+0xb7, 0xdf, 0x7e, 0x1b, 0x4f, 0x3d, 0xf5, 0x94, 
+0x5f, 0x66, 0xc3, 0x6b, 0xb1, 0x7b, 0xf7, 0x6e, 
+0xcc, 0x9a, 0x35, 0x0b, 0x37, 0x6f, 0xde, 0xb4, 
+0x7a, 0x9e, 0xe3, 0x38, 0xf4, 0xe9, 0xd3, 0x07, 
+0x53, 0xa6, 0x4c, 0xc1, 0xfc, 0xf9, 0xf3, 0xbd, 
+0x5a, 0x84, 0xc9, 0xdd, 0x38, 0xb3, 0xfd, 0xb0, 
+0xb7, 0x93, 0xaf, 0x05, 0x41, 0xc0, 0x6b, 0xaf, 
+0xbd, 0x86, 0xcf, 0x3f, 0xff, 0x1c, 0x00, 0x90, 
+0x94, 0x94, 0x84, 0x1b, 0x37, 0x6e, 0xe0, 0x83, 
+0x0f, 0x3e, 0xc0, 0xf2, 0xe5, 0xcb, 0x9d, 0x3a, 
+0xc7, 0xa2, 0x45, 0x8b, 0xec, 0x9a, 0x95, 0x66, 
+0xcd, 0x9a, 0xe1, 0x9f, 0xff, 0xfc, 0xa7, 0xdb, 
+0xda, 0xeb, 0x6e, 0xd4, 0x23, 0x7f, 0xa5, 0x78, 
+0x9a, 0xc5, 0x7f, 0xe5, 0xad, 0x5b, 0xb7, 0xca, 
+0x95, 0xe2, 0x4f, 0xe6, 0xfe, 0xd5, 0xe2, 0xaf, 
+0x1c, 0x88, 0xb1, 0x2c, 0x6b, 0xd2, 0xeb, 0xf5, 
+0x16, 0xc1, 0x57, 0x8b, 0xbf, 0xba, 0xc4, 0xaf, 
+0x5a, 0xfc, 0x49, 0xa1, 0x1f, 0x41, 0x10, 0xbc, 
+0x2e, 0xfe, 0x00, 0x35, 0x00, 0x0d, 0xc6, 0x6c, 
+0x02, 0x64, 0xb2, 0x32, 0x80, 0x9a, 0x00, 0xef, 
+0xe2, 0x8a, 0x01, 0x98, 0x3c, 0x79, 0x32, 0xa2, 
+0xa2, 0xa2, 0x34, 0x47, 0x9b, 0x04, 0x8e, 0xe3, 
+0xf0, 0xe2, 0x8b, 0x2f, 0xe2, 0xc3, 0x0f, 0x3f, 
+0xf4, 0x78, 0xb5, 0x35, 0x47, 0xa3, 0xff, 0xde, 
+0xbd, 0x7b, 0xa3, 0x5d, 0xbb, 0x76, 0x68, 0xd7, 
+0xae, 0x1d, 0xd6, 0xad, 0x5b, 0x87, 0x85, 0x0b, 
+0x17, 0x62, 0xf3, 0xe6, 0xcd, 0xc8, 0xcd, 0xcd, 
+0x45, 0x45, 0x45, 0x05, 0xee, 0xba, 0xeb, 0x2e, 
+0x8c, 0x1f, 0x3f, 0x1e, 0xd3, 0xa7, 0x4f, 0x6f, 
+0xd0, 0xf4, 0x86, 0xaf, 0xf8, 0xfc, 0xf3, 0xcf, 
+0xf1, 0xca, 0x2b, 0xaf, 0xd8, 0x94, 0x34, 0xd6, 
+0xe9, 0x74, 0xc8, 0xc9, 0xc9, 0x09, 0xb8, 0x0d, 
+0x63, 0xec, 0xe1, 0x8c, 0x01, 0xe8, 0xda, 0xb5, 
+0xab, 0x47, 0xdb, 0x20, 0xcb, 0x32, 0x0a, 0x0a, 
+0x0a, 0xb0, 0x7f, 0xff, 0x7e, 0xa4, 0xa7, 0xa7, 
+0x23, 0x3d, 0x3d, 0xdd, 0xaa, 0x8a, 0x64, 0x59, 
+0x59, 0x19, 0x32, 0x32, 0x32, 0xf0, 0xd5, 0x57, 
+0x5f, 0x39, 0x7d, 0x4e, 0x49, 0x92, 0x6c, 0x8c, 
+0x1b, 0x61, 0xd5, 0xaa, 0x55, 0x88, 0x89, 0x89, 
+0x69, 0x6c, 0xb3, 0x3d, 0x42, 0x71, 0x71, 0x31, 
+0x12, 0x13, 0x13, 0x2d, 0x91, 0x0b, 0xb5, 0xf8, 
+0x9b, 0xc3, 0xfe, 0x4e, 0x8b, 0x3f, 0xf9, 0xae, 
+0x14, 0x7f, 0x75, 0xc6, 0xbf, 0xb3, 0xe2, 0x1f, 
+0x1d, 0x1d, 0x2d, 0x91, 0x42, 0x3f, 0xde, 0x16, 
+0x7f, 0x80, 0x1a, 0x00, 0xa7, 0x51, 0x47, 0x01, 
+0x00, 0x6a, 0x02, 0x7c, 0x89, 0x2b, 0x06, 0x40, 
+0xa7, 0xd3, 0xe1, 0x95, 0x57, 0x5e, 0xc1, 0x7b, 
+0xef, 0xbd, 0xa7, 0xf9, 0xba, 0x07, 0x1e, 0x78, 
+0x00, 0xcb, 0x97, 0x2f, 0xf7, 0x9a, 0x00, 0x39, 
+0x32, 0x00, 0xea, 0x24, 0xaa, 0x5e, 0xbd, 0x7a, 
+0xa1, 0x57, 0xaf, 0x5e, 0x9e, 0x6c, 0x92, 0xc7, 
+0xc9, 0xcf, 0xcf, 0xc7, 0x6b, 0xaf, 0xbd, 0xa6, 
+0xb9, 0x9f, 0xc1, 0x82, 0x05, 0x0b, 0x82, 0x46, 
+0xfc, 0x01, 0xe7, 0x0c, 0x40, 0x43, 0x57, 0xa7, 
+0x38, 0xc3, 0x77, 0xdf, 0x7d, 0x87, 0x3f, 0xff, 
+0xf9, 0xcf, 0xf5, 0x1a, 0x5e, 0x00, 0xd8, 0xb8, 
+0x71, 0x23, 0xa2, 0xa2, 0xa2, 0xea, 0xad, 0xe8, 
+0xe7, 0x88, 0x3e, 0x7d, 0xfa, 0xe0, 0xb3, 0xcf, 
+0x3e, 0xc3, 0xa8, 0x51, 0xa3, 0x1a, 0x7c, 0x0e, 
+0x4f, 0x52, 0x5c, 0x5c, 0x8c, 0xbd, 0x7b, 0xf7, 
+0xc2, 0x68, 0x34, 0xda, 0xac, 0xf3, 0xaf, 0xaa, 
+0xaa, 0x2a, 0x8c, 0x8f, 0x8f, 0x5f, 0x59, 0x59, 
+0x59, 0x59, 0x6e, 0x0e, 0xe9, 0x5b, 0x92, 0xfd, 
+0xa0, 0x12, 0x7f, 0x58, 0x4f, 0xbd, 0x0a, 0x21, 
+0x21, 0x21, 0x24, 0x12, 0x60, 0x33, 0xdf, 0x6f, 
+0x4f, 0xfc, 0x5b, 0xb4, 0x68, 0x21, 0x89, 0xa2, 
+0xd8, 0x28, 0xf1, 0x57, 0xd2, 0x58, 0xf1, 0x07, 
+0x68, 0x0e, 0x80, 0x4b, 0x68, 0x5d, 0x70, 0x86, 
+0x61, 0x6c, 0x92, 0x02, 0x01, 0xcf, 0xe6, 0x04, 
+0xc8, 0xb2, 0x2c, 0x2a, 0x6a, 0x4c, 0x2b, 0xbf, 
+0x3b, 0xcc, 0x09, 0x38, 0x7a, 0xf4, 0x68, 0x7c, 
+0x30, 0xe4, 0x04, 0xb8, 0x62, 0x00, 0x80, 0xba, 
+0x52, 0xaa, 0x6d, 0xda, 0xb4, 0xb1, 0x3a, 0xde, 
+0xb3, 0x67, 0x4f, 0xc4, 0xc7, 0xc7, 0x23, 0x33, 
+0x33, 0xd3, 0xab, 0x02, 0xe4, 0xaa, 0x01, 0x08, 
+0x74, 0x4c, 0x26, 0x13, 0x9e, 0x7d, 0xf6, 0x59, 
+0xcd, 0x25, 0x57, 0x5d, 0xba, 0x74, 0xb1, 0x6b, 
+0xcc, 0x02, 0x15, 0x65, 0x72, 0x9d, 0x3d, 0x3c, 
+0x59, 0xbd, 0xf0, 0xf5, 0xd7, 0x5f, 0x77, 0x28, 
+0xfe, 0x00, 0x90, 0x90, 0x90, 0xe0, 0x94, 0x59, 
+0xd1, 0xa2, 0x7d, 0xfb, 0xf6, 0xf8, 0xfa, 0xeb, 
+0xaf, 0x71, 0xe4, 0xc8, 0x11, 0xbf, 0x15, 0xff, 
+0x92, 0x92, 0x12, 0xbb, 0xe2, 0x5f, 0x5d, 0x5d, 
+0x5d, 0xb8, 0x75, 0xeb, 0x56, 0x8b, 0xf8, 0xab, 
+0x92, 0xfd, 0x8c, 0x6a, 0xf1, 0x57, 0x16, 0xf9, 
+0xd1, 0x12, 0x7f, 0xf2, 0xbd, 0x3e, 0xf1, 0xaf, 
+0xaa, 0xaa, 0x92, 0xb5, 0xc4, 0xdf, 0xd9, 0x12, 
+0xbf, 0xc0, 0xed, 0xd1, 0xbf, 0x3b, 0xc4, 0x1f, 
+0xa0, 0x06, 0xc0, 0x65, 0xdc, 0x69, 0x02, 0xc2, 
+0xc2, 0xc2, 0xe4, 0x86, 0x98, 0x80, 0x90, 0x90, 
+0x10, 0xa1, 0xa9, 0x9b, 0x00, 0x57, 0x0d, 0x40, 
+0xcb, 0x96, 0x2d, 0xf1, 0xd7, 0xbf, 0xfe, 0x15, 
+0x00, 0x70, 0xe7, 0x9d, 0x77, 0x62, 0xd5, 0xaa, 
+0x55, 0x38, 0x7e, 0xfc, 0x38, 0xa6, 0x4e, 0x9d, 
+0xea, 0xb1, 0x36, 0x6a, 0x51, 0x58, 0x58, 0x68, 
+0xb7, 0xe4, 0x2b, 0x00, 0xb4, 0x69, 0xd3, 0x06, 
+0x0f, 0x3c, 0xf0, 0x80, 0x17, 0x5b, 0xe4, 0x79, 
+0xfe, 0xf9, 0xcf, 0x7f, 0xe2, 0xd8, 0xb1, 0x63, 
+0x9a, 0xc7, 0xfe, 0xf3, 0x9f, 0xff, 0x34, 0x58, 
+0x84, 0xfc, 0x15, 0x5f, 0x47, 0x00, 0xec, 0x85, 
+0xe9, 0xd5, 0x18, 0x0c, 0x06, 0x97, 0xab, 0x15, 
+0x86, 0x84, 0x84, 0xe0, 0xed, 0xb7, 0xdf, 0xc6, 
+0x99, 0x33, 0x67, 0xf0, 0xfc, 0xf3, 0xcf, 0xfb, 
+0x6d, 0xc2, 0x69, 0x49, 0x49, 0x09, 0xf6, 0xec, 
+0xd9, 0xa3, 0x59, 0xe1, 0xcf, 0x60, 0x30, 0x14, 
+0xc5, 0xc7, 0xc7, 0xaf, 0xbc, 0x79, 0xf3, 0x66, 
+0x99, 0x3d, 0xf1, 0xb7, 0x57, 0xde, 0xb7, 0x31, 
+0xe2, 0x6f, 0x32, 0x99, 0x24, 0x2d, 0xf1, 0x77, 
+0xa6, 0xc4, 0x2f, 0xe0, 0x5a, 0x8d, 0x7f, 0x67, 
+0xf1, 0xcf, 0xbf, 0x9e, 0x9f, 0xe3, 0x2e, 0x13, 
+0x60, 0x34, 0x1a, 0x25, 0x6a, 0x02, 0x1a, 0x86, 
+0x33, 0x06, 0x40, 0xfd, 0x67, 0xfa, 0xcb, 0x5f, 
+0xfe, 0x82, 0xd4, 0xd4, 0x54, 0x9c, 0x3e, 0x7d, 
+0x1a, 0xcf, 0x3c, 0xf3, 0x8c, 0x4f, 0x6e, 0x5e, 
+0x8e, 0x46, 0xff, 0xe3, 0xc6, 0x8d, 0x0b, 0xa8, 
+0x79, 0x7d, 0x47, 0x1c, 0x3b, 0x76, 0x0c, 0x1f, 
+0x7d, 0xf4, 0x91, 0xe6, 0xb1, 0x29, 0x53, 0xa6, 
+0x04, 0x5c, 0x89, 0x62, 0x2d, 0x24, 0x49, 0x42, 
+0x7c, 0x7c, 0xbc, 0x25, 0xc2, 0xe1, 0x4c, 0x79, 
+0x6a, 0x4f, 0x19, 0x80, 0xa2, 0xa2, 0x22, 0xcd, 
+0xe9, 0x41, 0x77, 0xf0, 0xc4, 0x13, 0x4f, 0xe0, 
+0xd4, 0xa9, 0x53, 0x58, 0xb4, 0x68, 0x11, 0x5a, 
+0xb4, 0x68, 0xe1, 0x91, 0xdf, 0xe1, 0x0e, 0xc8, 
+0xc8, 0x5f, 0x6b, 0xa9, 0x9f, 0x59, 0xfc, 0x57, 
+0x34, 0x44, 0xfc, 0x75, 0x3a, 0x9d, 0xd0, 0x50, 
+0xf1, 0xb7, 0xb7, 0xb9, 0x4f, 0x43, 0xc4, 0xdf, 
+0x5d, 0xa3, 0x7f, 0x80, 0x1a, 0x80, 0x06, 0x43, 
+0x4d, 0x80, 0x6f, 0x71, 0x35, 0x02, 0x40, 0x18, 
+0x39, 0x72, 0x24, 0x42, 0x42, 0x42, 0x3c, 0xd1, 
+0x24, 0xa7, 0xd8, 0xbb, 0x77, 0x6f, 0xbd, 0xc7, 
+0x83, 0x29, 0xfc, 0x2f, 0x49, 0x12, 0x5e, 0x78, 
+0xe1, 0x05, 0xcd, 0xbf, 0x55, 0xcb, 0x96, 0x2d, 
+0xf1, 0x9f, 0xff, 0xfc, 0xc7, 0x07, 0xad, 0x72, 
+0x2f, 0xd9, 0xd9, 0xd9, 0x88, 0x8b, 0x8b, 0xc3, 
+0x63, 0x8f, 0x3d, 0x86, 0x09, 0x13, 0x26, 0xa0, 
+0xac, 0xac, 0x0c, 0xf9, 0xf9, 0xf9, 0xf5, 0xbe, 
+0x27, 0x3c, 0x3c, 0x1c, 0xbd, 0x7b, 0xf7, 0xf6, 
+0x48, 0x7b, 0xec, 0x45, 0x5a, 0x1a, 0xcb, 0xc6, 
+0x8d, 0x1b, 0xb1, 0x71, 0xe3, 0x46, 0xbf, 0x4d, 
+0xf4, 0x23, 0x94, 0x94, 0x94, 0x58, 0x25, 0xfc, 
+0x11, 0xcc, 0x4b, 0x1e, 0x8b, 0xe2, 0xe3, 0xe3, 
+0x57, 0x54, 0x54, 0x54, 0x38, 0x14, 0x7f, 0xb2, 
+0xd4, 0x4f, 0x29, 0xfe, 0x6a, 0xd1, 0x27, 0xdf, 
+0xf5, 0x7a, 0xbd, 0xe4, 0x48, 0xfc, 0xc9, 0xe6, 
+0x3e, 0x82, 0x20, 0x48, 0x6a, 0xf1, 0x07, 0xea, 
+0x34, 0xc2, 0xdb, 0xe2, 0x0f, 0x50, 0x03, 0xd0, 
+0x28, 0xa8, 0x09, 0xf0, 0x1d, 0x0d, 0x35, 0x00, 
+0xbe, 0x44, 0x96, 0x65, 0xec, 0xdc, 0xb9, 0xd3, 
+0xee, 0x71, 0x8e, 0xe3, 0xfc, 0x72, 0xe3, 0x97, 
+0x86, 0xf2, 0xe5, 0x97, 0x5f, 0xda, 0x2d, 0x77, 
+0xbc, 0x7c, 0xf9, 0x72, 0xdc, 0x79, 0xe7, 0x9d, 
+0x5e, 0x6e, 0x91, 0xfb, 0x28, 0x2c, 0x2c, 0xc4, 
+0xdc, 0xb9, 0x73, 0x31, 0x64, 0xc8, 0x10, 0x8b, 
+0xe0, 0x27, 0x26, 0x26, 0xa2, 0x57, 0xaf, 0x5e, 
+0xd8, 0xba, 0x75, 0x6b, 0xbd, 0xef, 0x9d, 0x35, 
+0x6b, 0x96, 0xc7, 0xd6, 0xfe, 0x7b, 0xca, 0x00, 
+0x04, 0xc2, 0xdf, 0xaa, 0xb4, 0xb4, 0x14, 0x89, 
+0x89, 0x89, 0x56, 0x25, 0xc2, 0x19, 0xf3, 0x3a, 
+0xff, 0xea, 0xea, 0xea, 0xe2, 0xf8, 0xf8, 0xf8, 
+0x95, 0x8d, 0x11, 0x7f, 0x73, 0xe6, 0xbf, 0x8d, 
+0xf8, 0x33, 0x0c, 0x23, 0x36, 0x46, 0xfc, 0x0b, 
+0x0a, 0x0a, 0x64, 0x5f, 0x88, 0x3f, 0x40, 0x0d, 
+0x40, 0xa3, 0x09, 0x22, 0x13, 0xa0, 0x39, 0x6c, 
+0xf1, 0x57, 0x13, 0xe0, 0x8c, 0x01, 0xf0, 0x56, 
+0x65, 0x35, 0x67, 0xc9, 0xcf, 0xcf, 0xaf, 0x77, 
+0xfd, 0xff, 0xf0, 0xe1, 0xc3, 0x6d, 0x12, 0x15, 
+0x03, 0x95, 0x6b, 0xd7, 0xae, 0x61, 0xe1, 0xc2, 
+0x85, 0x9a, 0xc7, 0x66, 0xcf, 0x9e, 0xed, 0xd1, 
+0x3a, 0x0b, 0x9e, 0x44, 0x14, 0x45, 0xfc, 0xe7, 
+0x3f, 0xff, 0x41, 0x8f, 0x1e, 0x3d, 0xb0, 0x6a, 
+0xd5, 0x2a, 0x9b, 0x69, 0xa6, 0xab, 0x57, 0xaf, 
+0xe2, 0xec, 0xd9, 0xb3, 0x76, 0xdf, 0x1f, 0x1e, 
+0x1e, 0x8e, 0x45, 0x8b, 0x16, 0x79, 0x6c, 0x97, 
+0xc9, 0x9f, 0x7e, 0xfa, 0xc9, 0x23, 0xe7, 0x75, 
+0x66, 0x4b, 0x63, 0x5f, 0x52, 0x5a, 0x5a, 0x8a, 
+0xbd, 0x7b, 0xf7, 0xda, 0x88, 0x3f, 0x00, 0x22, 
+0xfe, 0x2b, 0x2a, 0x2a, 0x2a, 0x4a, 0xfd, 0x51, 
+0xfc, 0x95, 0xfd, 0xf0, 0xa6, 0xf8, 0x03, 0xd4, 
+0x00, 0xb8, 0x85, 0x20, 0x31, 0x01, 0x5b, 0x02, 
+0xc9, 0x04, 0xd4, 0x67, 0x00, 0x5a, 0xb5, 0x6a, 
+0x85, 0xbf, 0xff, 0xfd, 0xef, 0xf8, 0xe5, 0x97, 
+0x5f, 0xbc, 0xd8, 0x22, 0xc7, 0xec, 0xd8, 0xb1, 
+0xa3, 0xde, 0xe3, 0x81, 0x50, 0xbb, 0xdf, 0x59, 
+0x5e, 0x7f, 0xfd, 0x75, 0xcd, 0xba, 0xfe, 0x5d, 
+0xba, 0x74, 0xc1, 0x17, 0x5f, 0x7c, 0xe1, 0x83, 
+0x16, 0x35, 0x9e, 0xfd, 0xfb, 0xf7, 0xe3, 0xbe, 
+0xfb, 0xee, 0xc3, 0x6b, 0xaf, 0xbd, 0xe6, 0xd4, 
+0x5e, 0x14, 0x6a, 0x3a, 0x76, 0xec, 0x88, 0xad, 
+0x5b, 0xb7, 0xa2, 0x5d, 0xbb, 0x76, 0x1e, 0x68, 
+0x5d, 0x1d, 0xca, 0x08, 0x80, 0x3b, 0x4d, 0x86, 
+0x3f, 0x1b, 0x00, 0xb5, 0xf8, 0x93, 0x51, 0x3f, 
+0x00, 0x18, 0x0c, 0x86, 0xe2, 0xad, 0x5b, 0xb7, 
+0xfa, 0x54, 0xfc, 0xcb, 0xca, 0xca, 0x88, 0xd8, 
+0x6b, 0x8a, 0xbf, 0xbb, 0x76, 0xf6, 0x6b, 0x08, 
+0xd4, 0x00, 0xb8, 0x09, 0x6a, 0x02, 0xbc, 0x8b, 
+0x96, 0x01, 0x68, 0xde, 0xbc, 0x39, 0xfe, 0xf6, 
+0xb7, 0xbf, 0xe1, 0xdc, 0xb9, 0x73, 0x78, 0xef, 
+0xbd, 0xf7, 0xfc, 0x2e, 0x02, 0x50, 0x9f, 0x01, 
+0x88, 0x8e, 0x8e, 0xf6, 0xfb, 0x8d, 0x6e, 0x9c, 
+0x65, 0xc7, 0x8e, 0x1d, 0xf8, 0xe1, 0x87, 0x1f, 
+0x6c, 0x9e, 0xe7, 0x38, 0x0e, 0x6b, 0xd6, 0xac, 
+0xf1, 0x78, 0xa1, 0x25, 0x77, 0x73, 0xed, 0xda, 
+0x35, 0x3c, 0xf9, 0xe4, 0x93, 0x18, 0x31, 0x62, 
+0x44, 0x83, 0x43, 0xec, 0x53, 0xa6, 0x4c, 0xc1, 
+0xb1, 0x63, 0xc7, 0x30, 0x66, 0xcc, 0x18, 0x37, 
+0xb7, 0xee, 0x36, 0x82, 0x20, 0xe0, 0xe7, 0x9f, 
+0x7f, 0x46, 0xff, 0xfe, 0xfd, 0xb1, 0x61, 0xc3, 
+0x06, 0xa4, 0xa4, 0xa4, 0xb8, 0xed, 0xdc, 0x06, 
+0x83, 0xc1, 0x6d, 0xe7, 0x72, 0x27, 0x4a, 0xf1, 
+0x57, 0x0a, 0x3f, 0x00, 0x18, 0x0c, 0x86, 0x92, 
+0xf8, 0xf8, 0xf8, 0x15, 0xe5, 0xe5, 0xe5, 0x6e, 
+0x11, 0x7f, 0xf2, 0xe5, 0xaa, 0xf8, 0xb7, 0x68, 
+0xd1, 0x42, 0xbe, 0x7e, 0xfd, 0xba, 0xec, 0x6f, 
+0xe2, 0x0f, 0x50, 0x03, 0xe0, 0x56, 0x5c, 0x35, 
+0x01, 0x40, 0xdd, 0xda, 0x4f, 0x80, 0x9a, 0x00, 
+0x57, 0x51, 0x1a, 0x80, 0xf0, 0xf0, 0x70, 0xbc, 
+0xf5, 0xd6, 0x5b, 0x38, 0x77, 0xee, 0x1c, 0x3e, 
+0xfc, 0xf0, 0x43, 0x8f, 0x6f, 0xe4, 0x03, 0x38, 
+0xbf, 0xd4, 0x8a, 0x70, 0xed, 0xda, 0x35, 0xe4, 
+0xe5, 0x69, 0xa6, 0x5a, 0x00, 0x00, 0xe6, 0xcd, 
+0x9b, 0x07, 0x9e, 0x0f, 0xfc, 0xba, 0x5c, 0x17, 
+0x2f, 0x5e, 0xc4, 0x33, 0xcf, 0x3c, 0x63, 0xf3, 
+0x3c, 0xcb, 0xb2, 0xf8, 0xf2, 0xcb, 0x2f, 0x31, 
+0x74, 0xe8, 0x50, 0xef, 0x37, 0xaa, 0x91, 0xbc, 
+0xf1, 0xc6, 0x1b, 0x58, 0xbb, 0x76, 0x6d, 0x83, 
+0xde, 0x1b, 0x1e, 0x1e, 0x8e, 0xaf, 0xbe, 0xfa, 
+0x0a, 0x5b, 0xb7, 0x6e, 0x6d, 0xf0, 0x36, 0xc1, 
+0xce, 0x72, 0xf3, 0xe6, 0x4d, 0x24, 0x24, 0x24, 
+0x20, 0x3f, 0x3f, 0x1f, 0x33, 0x67, 0xce, 0xc4, 
+0xb0, 0x61, 0xc3, 0xdc, 0xb6, 0xa4, 0xd4, 0x1f, 
+0x23, 0x00, 0x6a, 0xf1, 0x57, 0x52, 0x53, 0x53, 
+0x53, 0xb2, 0x75, 0xeb, 0xd6, 0x15, 0xe5, 0xe5, 
+0xe5, 0x6e, 0x99, 0xf3, 0x87, 0xf9, 0xfe, 0xea, 
+0x09, 0xf1, 0x57, 0xe2, 0x4d, 0xf1, 0x07, 0xa8, 
+0x01, 0x70, 0x3b, 0xae, 0x98, 0x00, 0xf2, 0x8f, 
+0x40, 0x4d, 0x80, 0xeb, 0x98, 0x4c, 0x26, 0x84, 
+0x86, 0x86, 0xe2, 0xf5, 0xd7, 0x5f, 0xc7, 0x6f, 
+0xbf, 0xfd, 0x86, 0x8f, 0x3f, 0xfe, 0xd8, 0xe3, 
+0x37, 0x58, 0x00, 0xf8, 0xe5, 0x97, 0x5f, 0xf0, 
+0xe4, 0x93, 0x4f, 0xa2, 0x6d, 0xdb, 0xb6, 0x58, 
+0xb2, 0x64, 0x89, 0xd3, 0xef, 0x4b, 0x48, 0x48, 
+0xb0, 0x5b, 0xff, 0x5d, 0xa7, 0xd3, 0xe1, 0x85, 
+0x17, 0x5e, 0x70, 0x57, 0x13, 0x7d, 0x86, 0xd1, 
+0x68, 0xc4, 0x8c, 0x19, 0x33, 0x50, 0x52, 0x52, 
+0x02, 0xa0, 0x4e, 0xfc, 0x58, 0x96, 0x05, 0xcf, 
+0xf3, 0x58, 0xb3, 0x66, 0x0d, 0xfe, 0xf8, 0xc7, 
+0x3f, 0xfa, 0xb8, 0x85, 0x0d, 0xa3, 0xa1, 0x79, 
+0x19, 0x71, 0x71, 0x71, 0xc8, 0xcf, 0xcf, 0xf7, 
+0xda, 0xdf, 0xb6, 0x4d, 0x9b, 0x36, 0x36, 0x11, 
+0x86, 0x37, 0xdf, 0x7c, 0xd3, 0x2d, 0xe7, 0xf6, 
+0x37, 0x03, 0x40, 0xc4, 0x5f, 0xab, 0xc8, 0x4f, 
+0x4d, 0x4d, 0x4d, 0x49, 0x7c, 0x7c, 0xfc, 0x8a, 
+0xb2, 0xb2, 0xb2, 0x52, 0xf3, 0x7d, 0xce, 0xaf, 
+0xc5, 0xdf, 0x13, 0x25, 0x7e, 0x9d, 0x85, 0x1a, 
+0x00, 0x2f, 0xe1, 0x4e, 0x13, 0x10, 0x1e, 0x1e, 
+0x2e, 0x35, 0x75, 0x13, 0x30, 0x68, 0xd0, 0x20, 
+0x9c, 0x3d, 0x7b, 0x16, 0x9f, 0x7d, 0xf6, 0x19, 
+0xda, 0xb7, 0x6f, 0xef, 0xf1, 0xdf, 0x77, 0xea, 
+0xd4, 0x29, 0xfc, 0xfe, 0xf7, 0xbf, 0x47, 0xcf, 
+0x9e, 0x3d, 0xb1, 0x76, 0xed, 0x5a, 0x18, 0x8d, 
+0x46, 0xbc, 0xf9, 0xe6, 0x9b, 0xf8, 0xc3, 0x1f, 
+0xfe, 0xe0, 0xd4, 0xcd, 0xb1, 0xbe, 0x79, 0xef, 
+0xe9, 0xd3, 0xa7, 0xa3, 0x43, 0x87, 0x0e, 0xee, 
+0x6c, 0xae, 0x4f, 0x78, 0xe3, 0x8d, 0x37, 0x70, 
+0xe8, 0xd0, 0x21, 0xcb, 0xcf, 0xd5, 0xd5, 0xd5, 
+0xd0, 0xe9, 0x74, 0xf8, 0xf1, 0xc7, 0x1f, 0x31, 
+0x7b, 0xf6, 0x6c, 0x1f, 0xb6, 0xac, 0x71, 0xb8, 
+0x6a, 0x00, 0xfa, 0xf7, 0xef, 0x8f, 0x2d, 0x5b, 
+0xb6, 0x20, 0x27, 0x27, 0x07, 0x77, 0xdf, 0x7d, 
+0xb7, 0x87, 0x5a, 0xe5, 0x1c, 0x53, 0xa7, 0x4e, 
+0xf5, 0x68, 0xd1, 0x21, 0x5f, 0xa0, 0x14, 0x7f, 
+0x25, 0x0c, 0xc3, 0x58, 0x46, 0xfe, 0x54, 0xfc, 
+0x9d, 0x83, 0x1a, 0x00, 0x0f, 0x60, 0xef, 0x0f, 
+0xe8, 0x2e, 0x13, 0x20, 0x8a, 0xa2, 0xe4, 0x8a, 
+0x09, 0x30, 0x0b, 0x7f, 0x50, 0x99, 0x80, 0xd8, 
+0xd8, 0x58, 0x90, 0xfd, 0x15, 0x3c, 0xc9, 0xc9, 
+0x93, 0x27, 0x31, 0x67, 0xce, 0x1c, 0xc4, 0xc6, 
+0xc6, 0x62, 0xdd, 0xba, 0x75, 0x36, 0x4b, 0x0b, 
+0xbf, 0xff, 0xfe, 0x7b, 0x0c, 0x1f, 0x3e, 0x1c, 
+0x57, 0xae, 0x5c, 0xb1, 0x7b, 0x8e, 0xa4, 0xa4, 
+0x24, 0x1c, 0x3d, 0x7a, 0xd4, 0xee, 0xf1, 0x97, 
+0x5e, 0x7a, 0xc9, 0x6d, 0xed, 0xf5, 0x36, 0x3f, 
+0xff, 0xfc, 0x33, 0x3e, 0xf9, 0xe4, 0x13, 0x8c, 
+0x1c, 0x39, 0xd2, 0x66, 0x57, 0xb9, 0xf1, 0xe3, 
+0xc7, 0x23, 0x37, 0x37, 0x17, 0x53, 0xa6, 0x4c, 
+0xf1, 0x51, 0xeb, 0xdc, 0x83, 0x33, 0x06, 0x80, 
+0x61, 0x18, 0x8c, 0x19, 0x33, 0x06, 0xdb, 0xb7, 
+0x6f, 0x47, 0x7e, 0x7e, 0x3e, 0xa6, 0x4d, 0x9b, 
+0xe6, 0x91, 0xca, 0x6d, 0xae, 0xc2, 0xb2, 0x2c, 
+0x16, 0x2c, 0x58, 0xd0, 0xe8, 0xf3, 0xf8, 0x8b, 
+0x41, 0x2d, 0x2b, 0x2b, 0xb3, 0xbb, 0xce, 0xdf, 
+0x60, 0x30, 0x94, 0x6e, 0xdd, 0xba, 0x75, 0x45, 
+0x69, 0x69, 0xa9, 0x45, 0xfc, 0x39, 0x8e, 0x23, 
+0x75, 0xfd, 0x1b, 0x2d, 0xfe, 0xea, 0x2d, 0x7d, 
+0x03, 0x5d, 0xfc, 0x01, 0x6a, 0x00, 0x3c, 0x46, 
+0x63, 0x4d, 0x40, 0x41, 0x41, 0x01, 0xdc, 0x65, 
+0x02, 0x14, 0x06, 0x20, 0xa8, 0x4c, 0x80, 0x27, 
+0x39, 0x7d, 0xfa, 0x34, 0x66, 0xcf, 0x9e, 0x8d, 
+0x5e, 0xbd, 0x7a, 0x61, 0xfd, 0xfa, 0xf5, 0xf5, 
+0xd6, 0x14, 0x38, 0x7c, 0xf8, 0x30, 0xe2, 0xe2, 
+0xe2, 0x90, 0x9d, 0x9d, 0xad, 0x79, 0x7c, 0xf1, 
+0xe2, 0xc5, 0x76, 0xdf, 0x3b, 0x6e, 0xdc, 0x38, 
+0x3c, 0xf8, 0xe0, 0x83, 0x8d, 0x6e, 0xaf, 0xb7, 
+0x59, 0xb3, 0x66, 0x0d, 0xba, 0x75, 0xeb, 0x86, 
+0xd8, 0xd8, 0x58, 0xbc, 0xf5, 0xd6, 0x5b, 0x48, 
+0x4b, 0x4b, 0xb3, 0x1c, 0x1b, 0x30, 0x60, 0x00, 
+0x52, 0x53, 0x53, 0xb1, 0x6b, 0xd7, 0xae, 0x80, 
+0xdf, 0xc4, 0x08, 0x80, 0x53, 0x39, 0x25, 0xad, 
+0x5b, 0xb7, 0x46, 0x62, 0x62, 0x22, 0x26, 0x4d, 
+0x9a, 0xe4, 0x85, 0x16, 0xb9, 0xc6, 0x33, 0xcf, 
+0x3c, 0x83, 0xc8, 0xc8, 0xc8, 0x46, 0x9d, 0xc3, 
+0x1b, 0x66, 0xdb, 0x11, 0x65, 0x65, 0x65, 0x9a, 
+0x4b, 0xfd, 0x88, 0xf8, 0x6f, 0xdb, 0xb6, 0xed, 
+0x5b, 0xb5, 0xf8, 0x93, 0xfb, 0x18, 0xcf, 0xf3, 
+0x36, 0xe2, 0x0f, 0xf3, 0x06, 0x3f, 0xce, 0x8a, 
+0x3f, 0x00, 0x31, 0x98, 0xc4, 0x1f, 0xa0, 0x06, 
+0xc0, 0xa3, 0x34, 0xc6, 0x04, 0xb4, 0x6e, 0xdd, 
+0x5a, 0xa6, 0x26, 0xc0, 0x37, 0xe4, 0xe5, 0xe5, 
+0x61, 0xe0, 0xc0, 0x81, 0xd8, 0xb0, 0x61, 0x83, 
+0xd3, 0xc5, 0x84, 0xae, 0x5d, 0xbb, 0x86, 0x11, 
+0x23, 0x46, 0x60, 0xe5, 0xca, 0x95, 0x56, 0xcf, 
+0x1f, 0x3d, 0x7a, 0x14, 0x49, 0x49, 0x49, 0x9a, 
+0xef, 0x69, 0xd9, 0xb2, 0x25, 0xbe, 0xfe, 0xfa, 
+0xeb, 0x46, 0xb7, 0xd7, 0x9b, 0x9c, 0x3c, 0x79, 
+0x12, 0x23, 0x47, 0x8e, 0xc4, 0x53, 0x4f, 0x3d, 
+0x85, 0x4b, 0x97, 0x2e, 0x59, 0x6d, 0x7c, 0xd3, 
+0xb5, 0x6b, 0x57, 0xac, 0x5b, 0xb7, 0x0e, 0x87, 
+0x0f, 0x1f, 0x0e, 0x98, 0x5d, 0x25, 0x9d, 0x21, 
+0x34, 0x34, 0xd4, 0xe1, 0x6b, 0xfc, 0x39, 0xcc, 
+0x1e, 0x1e, 0x1e, 0x8e, 0xf9, 0xf3, 0xe7, 0x37, 
+0xea, 0x1c, 0xbe, 0x36, 0x00, 0x6a, 0xf1, 0x67, 
+0xac, 0x97, 0xfa, 0x95, 0x6e, 0xdf, 0xbe, 0x7d, 
+0x45, 0x49, 0x49, 0x89, 0x96, 0xf8, 0x5b, 0x09, 
+0xbf, 0x52, 0xfc, 0x59, 0x96, 0x35, 0xd9, 0x13, 
+0x7f, 0x59, 0x96, 0xc5, 0x60, 0x17, 0x7f, 0x80, 
+0x1a, 0x00, 0x8f, 0x43, 0x4d, 0x40, 0x60, 0x21, 
+0xcb, 0x32, 0xa6, 0x4d, 0x9b, 0xd6, 0xa0, 0x75, 
+0xde, 0x46, 0xa3, 0x11, 0xcf, 0x3d, 0xf7, 0x1c, 
+0x5e, 0x7e, 0xf9, 0x65, 0x4b, 0x88, 0xb2, 0xbe, 
+0xd1, 0xff, 0x92, 0x25, 0x4b, 0xd0, 0xb9, 0x73, 
+0xe7, 0x06, 0xb7, 0xd5, 0x9b, 0x54, 0x57, 0x57, 
+0x63, 0xe1, 0xc2, 0x85, 0xe8, 0xdb, 0xb7, 0xaf, 
+0x65, 0xb4, 0x6f, 0x32, 0x99, 0x60, 0x30, 0x18, 
+0x10, 0x19, 0x19, 0x89, 0x4f, 0x3f, 0xfd, 0x14, 
+0xa7, 0x4e, 0x9d, 0xc2, 0xec, 0xd9, 0xb3, 0xfd, 
+0x22, 0xf4, 0xed, 0x4e, 0x9c, 0x29, 0x1d, 0xed, 
+0xeb, 0xb9, 0x7e, 0x47, 0xbc, 0xf1, 0xc6, 0x1b, 
+0x68, 0xdb, 0xb6, 0x6d, 0x83, 0xde, 0xab, 0xd7, 
+0xeb, 0xbd, 0x92, 0x60, 0x6b, 0x0f, 0x2d, 0xf1, 
+0x27, 0x10, 0xf1, 0x2f, 0x2e, 0x2e, 0x2e, 0xb1, 
+0x23, 0xfe, 0xc6, 0x86, 0x88, 0x7f, 0x58, 0x58, 
+0x98, 0x18, 0xec, 0xe2, 0x0f, 0x50, 0x03, 0xe0, 
+0x15, 0x02, 0xdd, 0x04, 0x10, 0x23, 0x60, 0x36, 
+0x01, 0x47, 0xb4, 0xfa, 0x12, 0x2c, 0x26, 0x20, 
+0x33, 0x33, 0x13, 0x97, 0x2e, 0x5d, 0x6a, 0xd4, 
+0x39, 0x96, 0x2f, 0x5f, 0x8e, 0x1e, 0x3d, 0x7a, 
+0x60, 0xf1, 0xe2, 0xc5, 0x9a, 0xeb, 0xe1, 0x01, 
+0x60, 0xc6, 0x8c, 0x19, 0x01, 0x93, 0x15, 0x9f, 
+0x90, 0x90, 0x80, 0x9e, 0x3d, 0x7b, 0x62, 0xd1, 
+0xa2, 0x45, 0x56, 0xcb, 0x2f, 0xdb, 0xb4, 0x69, 
+0x83, 0xbf, 0xfd, 0xed, 0x6f, 0x38, 0x7b, 0xf6, 
+0x2c, 0x16, 0x2c, 0x58, 0x00, 0xbd, 0x5e, 0xef, 
+0xc3, 0x56, 0x7a, 0x8e, 0x60, 0x30, 0x00, 0x11, 
+0x11, 0x11, 0x58, 0xb4, 0x68, 0x51, 0x83, 0xde, 
+0xdb, 0xa9, 0x53, 0x27, 0x9f, 0x99, 0x3a, 0xa5, 
+0xf8, 0x33, 0xaa, 0x75, 0xfe, 0x35, 0x35, 0x35, 
+0x65, 0x09, 0x09, 0x09, 0x54, 0xfc, 0x1b, 0x01, 
+0x35, 0x00, 0x5e, 0x22, 0x90, 0x4d, 0x80, 0xf9, 
+0x83, 0x45, 0x4c, 0xc0, 0xe6, 0x60, 0x36, 0x01, 
+0x1b, 0x37, 0x6e, 0x74, 0xcb, 0x79, 0x2e, 0x5c, 
+0xb8, 0x80, 0xbf, 0xfc, 0xe5, 0x2f, 0x96, 0x1d, 
+0xe2, 0x94, 0x4c, 0x9c, 0x38, 0xb1, 0xc1, 0xeb, 
+0xca, 0xbd, 0xc9, 0x85, 0x0b, 0x17, 0x2c, 0x3b, 
+0xf6, 0x5d, 0xb8, 0x70, 0xc1, 0xf2, 0x7c, 0xff, 
+0xfe, 0xfd, 0xb1, 0x7c, 0xf9, 0x72, 0x5c, 0xba, 
+0x74, 0x09, 0x1f, 0x7e, 0xf8, 0x61, 0xc0, 0x15, 
+0xf6, 0x71, 0x15, 0x67, 0x0c, 0xc0, 0x3d, 0xf7, 
+0xdc, 0xe3, 0x85, 0x96, 0x34, 0x8e, 0xb9, 0x73, 
+0xe7, 0x62, 0xe0, 0xc0, 0x81, 0x2e, 0xbd, 0xa7, 
+0x6b, 0xd7, 0xae, 0xd8, 0xb6, 0x6d, 0x9b, 0x87, 
+0x5a, 0x54, 0x3f, 0xe5, 0xe5, 0xe5, 0x96, 0xda, 
+0xfe, 0x6a, 0x03, 0x52, 0x53, 0x53, 0x53, 0xb6, 
+0x7d, 0xfb, 0xf6, 0x6f, 0x8b, 0x8a, 0x8a, 0x02, 
+0x56, 0xfc, 0xfd, 0x01, 0x6a, 0x00, 0xbc, 0x08, 
+0x35, 0x01, 0xfe, 0x8f, 0xa3, 0x72, 0xbd, 0x8d, 
+0x65, 0xcc, 0x98, 0x31, 0xf8, 0xf1, 0xc7, 0x1f, 
+0x3d, 0x56, 0x0b, 0xde, 0x5d, 0xe4, 0xe6, 0xe6, 
+0x62, 0xc0, 0x80, 0x01, 0xd8, 0xbe, 0x7d, 0xbb, 
+0xd5, 0xf3, 0xfd, 0xfa, 0xf5, 0xc3, 0xa1, 0x43, 
+0x87, 0x30, 0x7f, 0xfe, 0x7c, 0xa7, 0xf6, 0xbd, 
+0x0f, 0x06, 0xae, 0x5f, 0xbf, 0xee, 0xf0, 0x35, 
+0xfe, 0x1e, 0x01, 0x00, 0xea, 0xee, 0x33, 0xcb, 
+0x96, 0x2d, 0x73, 0x5a, 0x84, 0x46, 0x8c, 0x18, 
+0x81, 0x43, 0x87, 0x0e, 0xf9, 0x24, 0x91, 0xb3, 
+0xbc, 0xbc, 0xdc, 0x6e, 0x91, 0x9f, 0xda, 0xda, 
+0xda, 0xb2, 0x84, 0x84, 0x84, 0x15, 0x81, 0x2e, 
+0xfe, 0xbe, 0x1e, 0xfd, 0x03, 0xd4, 0x00, 0x78, 
+0x1d, 0x6a, 0x02, 0xfc, 0x97, 0xe2, 0xe2, 0x62, 
+0x9c, 0x3b, 0x77, 0xce, 0x63, 0xe7, 0x7f, 0xfe, 
+0xf9, 0xe7, 0xb1, 0x6d, 0xdb, 0x36, 0x9f, 0x6e, 
+0x47, 0xec, 0x0c, 0xe9, 0xe9, 0xe9, 0x18, 0x35, 
+0x6a, 0x94, 0xa5, 0xa0, 0x8f, 0x92, 0x25, 0x4b, 
+0x96, 0x04, 0x45, 0xc5, 0x42, 0x57, 0x70, 0x54, 
+0xfe, 0xb7, 0x7d, 0xfb, 0xf6, 0xb8, 0xf7, 0xde, 
+0x7b, 0xbd, 0xd4, 0x9a, 0xc6, 0x11, 0x17, 0x17, 
+0x87, 0xb9, 0x73, 0xe7, 0x3a, 0x7c, 0xdd, 0xbc, 
+0x79, 0xf3, 0x90, 0x94, 0x94, 0xe4, 0x93, 0xb9, 
+0x7f, 0xe5, 0xc8, 0x5f, 0x09, 0xc3, 0x30, 0xa8, 
+0xad, 0xad, 0x2d, 0xdb, 0xbe, 0x7d, 0xfb, 0x8a, 
+0xc2, 0xc2, 0xc2, 0x62, 0x57, 0xc4, 0x5f, 0xaf, 
+0xd7, 0x53, 0xf1, 0xd7, 0x80, 0x1a, 0x00, 0x1f, 
+0x40, 0x4d, 0x80, 0x7f, 0x92, 0x9b, 0x9b, 0xeb, 
+0xf0, 0x35, 0xae, 0x86, 0x50, 0x01, 0xa0, 0x6d, 
+0xdb, 0xb6, 0xd8, 0xb6, 0x6d, 0x1b, 0xbe, 0xfe, 
+0xfa, 0x6b, 0xab, 0xac, 0x79, 0x7f, 0xe4, 0xc8, 
+0x91, 0x23, 0x18, 0x37, 0x6e, 0x1c, 0x2a, 0x2b, 
+0x2b, 0x6d, 0x8e, 0xf5, 0xee, 0xdd, 0x1b, 0xa3, 
+0x46, 0x8d, 0xf2, 0x41, 0xab, 0x3c, 0x8f, 0xc1, 
+0x60, 0xc0, 0xaa, 0x55, 0xab, 0xb0, 0x7c, 0xf9, 
+0x72, 0x9b, 0x95, 0x1f, 0x8e, 0x76, 0xd8, 0x9b, 
+0x35, 0x6b, 0x16, 0x38, 0x8e, 0xf3, 0x64, 0xf3, 
+0xdc, 0xca, 0xa2, 0x45, 0x8b, 0x10, 0x11, 0x11, 
+0xa1, 0x79, 0x8c, 0xe7, 0x79, 0x2c, 0x5f, 0xbe, 
+0x1c, 0x5f, 0x7e, 0xf9, 0xa5, 0x4f, 0xa2, 0x54, 
+0x44, 0xfc, 0xd5, 0xc5, 0xb5, 0x98, 0xba, 0x22, 
+0x3f, 0xe5, 0xdb, 0xb7, 0x6f, 0x5f, 0xd9, 0x10, 
+0xf1, 0x27, 0xa2, 0x4f, 0xc5, 0xdf, 0x1a, 0x6a, 
+0x00, 0x7c, 0x04, 0x35, 0x01, 0xfe, 0xc7, 0xe1, 
+0xc3, 0x87, 0xeb, 0x3d, 0xde, 0xad, 0x5b, 0x37, 
+0x64, 0x64, 0x64, 0x60, 0xc1, 0x82, 0x05, 0x4e, 
+0xdd, 0xf0, 0xc3, 0xc2, 0xc2, 0xf0, 0xdc, 0x73, 
+0xcf, 0xe1, 0xf8, 0xf1, 0xe3, 0x98, 0x3c, 0x79, 
+0xb2, 0xbb, 0x9a, 0xe9, 0x31, 0x64, 0x59, 0xc6, 
+0xfc, 0xf9, 0xf3, 0xed, 0x56, 0x36, 0x7c, 0xed, 
+0xb5, 0xd7, 0xbc, 0xdc, 0x22, 0xcf, 0x73, 0xf6, 
+0xec, 0x59, 0xbc, 0xf9, 0xe6, 0x9b, 0xe8, 0xd4, 
+0xa9, 0x13, 0xe6, 0xce, 0x9d, 0x8b, 0x97, 0x5f, 
+0x7e, 0x19, 0x0f, 0x3e, 0xf8, 0x20, 0x0a, 0x0a, 
+0x0a, 0x2c, 0xaf, 0x71, 0x14, 0x01, 0x78, 0xfa, 
+0xe9, 0xa7, 0x3d, 0xdd, 0x4c, 0xb7, 0xd2, 0xb6, 
+0x6d, 0x5b, 0xac, 0x58, 0xb1, 0xc2, 0x26, 0x92, 
+0xf3, 0xf0, 0xc3, 0x0f, 0x23, 0x33, 0x33, 0xb3, 
+0xd1, 0x4b, 0x06, 0x1b, 0x8a, 0x96, 0xf8, 0x93, 
+0xc4, 0x3f, 0xb3, 0xf8, 0xaf, 0x28, 0x2c, 0x2c, 
+0x2c, 0xa2, 0xe2, 0xef, 0x3e, 0x18, 0x3f, 0x6b, 
+0x4f, 0x93, 0x83, 0xb1, 0x33, 0x21, 0x27, 0xcb, 
+0x32, 0xfe, 0xf1, 0x8f, 0x7f, 0x58, 0x8e, 0x15, 
+0x14, 0x14, 0x30, 0x00, 0x10, 0x1b, 0x1b, 0xcb, 
+0x00, 0xc0, 0xd5, 0xab, 0x57, 0x99, 0xb2, 0xb2, 
+0x32, 0x26, 0x36, 0x36, 0x16, 0x25, 0x25, 0x25, 
+0x4c, 0x65, 0x65, 0x25, 0xa3, 0xd7, 0xeb, 0x59, 
+0x83, 0xc1, 0xc0, 0xb4, 0x68, 0xd1, 0x82, 0xa9, 
+0xa8, 0xa8, 0x60, 0x75, 0x3a, 0x1d, 0xcb, 0x71, 
+0x1c, 0x5b, 0x5d, 0x5d, 0xcd, 0xf2, 0x3c, 0xcf, 
+0x72, 0x1c, 0xc7, 0x56, 0x55, 0x55, 0x71, 0x00, 
+0xac, 0xbe, 0x24, 0x49, 0xe2, 0x6b, 0x6b, 0x6b, 
+0x79, 0x59, 0x96, 0x95, 0x5f, 0x3a, 0xc5, 0x77, 
+0x9d, 0x20, 0x08, 0x3a, 0x49, 0x92, 0xf4, 0xb2, 
+0x2c, 0xeb, 0x44, 0x51, 0xd4, 0x9b, 0x9f, 0xd7, 
+0x9b, 0x1f, 0xeb, 0xfb, 0xf5, 0xeb, 0xf7, 0x78, 
+0x44, 0x44, 0x44, 0x7f, 0xad, 0xbe, 0x8c, 0x1f, 
+0x3f, 0x3e, 0x20, 0xd6, 0x85, 0x4f, 0x9e, 0x3c, 
+0x19, 0x09, 0x09, 0x09, 0x76, 0x8f, 0xff, 0xfe, 
+0xf7, 0xbf, 0xc7, 0x9a, 0x35, 0x6b, 0x00, 0x00, 
+0xe7, 0xce, 0x9d, 0xc3, 0x92, 0x25, 0x4b, 0xb0, 
+0x72, 0xe5, 0x4a, 0x9b, 0x9d, 0xd2, 0xba, 0x76, 
+0xed, 0x8a, 0x17, 0x5f, 0x7c, 0x11, 0xcf, 0x3d, 
+0xf7, 0x5c, 0x83, 0xeb, 0xc8, 0xfb, 0x82, 0x95, 
+0x2b, 0x57, 0xe2, 0xb9, 0xe7, 0x9e, 0xd3, 0x3c, 
+0x16, 0x15, 0x15, 0x85, 0x4b, 0x97, 0x2e, 0x39, 
+0xb5, 0x26, 0xde, 0xdf, 0x91, 0x24, 0x09, 0xbb, 
+0x76, 0xed, 0xc2, 0xe7, 0x9f, 0x7f, 0x8e, 0x3d, 
+0x7b, 0xf6, 0x68, 0xee, 0xd1, 0xa0, 0xd7, 0xeb, 
+0xb1, 0x70, 0xe1, 0x42, 0xfc, 0xf1, 0x8f, 0x7f, 
+0x44, 0xa7, 0x4e, 0x9d, 0xec, 0x9e, 0x4b, 0xf9, 
+0x3f, 0x11, 0x68, 0x1c, 0x3b, 0x76, 0x0c, 0xab, 
+0x56, 0xad, 0x82, 0xc1, 0x60, 0xc0, 0xcc, 0x99, 
+0x33, 0x7d, 0xfa, 0x19, 0xad, 0xa8, 0xa8, 0xc0, 
+0xde, 0xbd, 0x7b, 0x6d, 0xc4, 0x1f, 0x00, 0x15, 
+0x7f, 0x0f, 0x42, 0x0d, 0x80, 0x1f, 0x40, 0x4d, 
+0x80, 0x7f, 0xd0, 0xb1, 0x63, 0xc7, 0x7a, 0x13, 
+0xbe, 0xfe, 0xfa, 0xd7, 0xbf, 0xe2, 0x5f, 0xff, 
+0xfa, 0x97, 0xd5, 0x73, 0x45, 0x45, 0x45, 0xd8, 
+0xbc, 0x79, 0x33, 0x22, 0x23, 0x23, 0xd1, 0xa5, 
+0x4b, 0x17, 0xc4, 0xc4, 0xc4, 0x78, 0x74, 0xbf, 
+0x77, 0x4f, 0x51, 0x53, 0x53, 0x83, 0x2e, 0x5d, 
+0xba, 0xa0, 0xb0, 0xb0, 0x50, 0xf3, 0xf8, 0xc2, 
+0x85, 0x0b, 0xf1, 0xd1, 0x47, 0x1f, 0x79, 0xb9, 
+0x55, 0xee, 0x45, 0x92, 0x24, 0x2c, 0x5b, 0xb6, 
+0x0c, 0xff, 0xfe, 0xf7, 0xbf, 0x9d, 0xce, 0xf5, 
+0x88, 0x88, 0x88, 0x40, 0x79, 0x79, 0xb9, 0xe6, 
+0xb1, 0xc8, 0xc8, 0x48, 0x9c, 0x3c, 0x79, 0xb2, 
+0xc1, 0xeb, 0xeb, 0x29, 0x75, 0xa8, 0xc5, 0x9f, 
+0xb1, 0x5e, 0xea, 0x57, 0x9e, 0x90, 0x90, 0xb0, 
+0xf2, 0xc6, 0x8d, 0x1b, 0x85, 0x54, 0xfc, 0xdd, 
+0x4f, 0xd3, 0xca, 0xe6, 0xf1, 0x53, 0x64, 0x59, 
+0x96, 0xb5, 0x4c, 0x00, 0xc3, 0x30, 0x90, 0x65, 
+0x59, 0x26, 0x26, 0x20, 0x36, 0x36, 0x56, 0x2e, 
+0x28, 0x28, 0x60, 0x0a, 0x0a, 0x0a, 0xe4, 0xd8, 
+0xd8, 0x58, 0x46, 0xf1, 0x8f, 0xc8, 0x90, 0x7f, 
+0xc2, 0xca, 0xca, 0x4a, 0x29, 0x2c, 0x2c, 0x8c, 
+0xad, 0xac, 0xac, 0x44, 0xab, 0x56, 0xad, 0x24, 
+0x52, 0xd0, 0x26, 0x3c, 0x3c, 0x1c, 0xd5, 0xd5, 
+0xd5, 0x00, 0x80, 0x66, 0xcd, 0x9a, 0xa1, 0xaa, 
+0xaa, 0xca, 0xea, 0x77, 0xb1, 0x2c, 0x8b, 0x90, 
+0x90, 0x10, 0x9b, 0xc4, 0x1b, 0x25, 0x3c, 0xcf, 
+0x43, 0x10, 0x04, 0x48, 0x92, 0x04, 0x8e, 0xe3, 
+0x20, 0x8a, 0x22, 0x00, 0x58, 0x1e, 0x1f, 0x3d, 
+0x7a, 0x74, 0x73, 0xbf, 0x7e, 0xfd, 0xa0, 0x65, 
+0x02, 0x76, 0xef, 0xde, 0x0d, 0x00, 0x7e, 0x6b, 
+0x02, 0x2e, 0x5f, 0xbe, 0xec, 0x30, 0xdb, 0xbb, 
+0x59, 0xb3, 0x66, 0x36, 0xcf, 0xb5, 0x6d, 0xdb, 
+0x16, 0x7f, 0xfa, 0xd3, 0x9f, 0x3c, 0xd5, 0x2c, 
+0xaf, 0xb1, 0x6e, 0xdd, 0x3a, 0xbb, 0xe2, 0xcf, 
+0xf3, 0xbc, 0xcf, 0xc2, 0xc2, 0xee, 0x42, 0x96, 
+0x65, 0x4c, 0x9a, 0x34, 0x09, 0xbb, 0x76, 0xed, 
+0x72, 0xe9, 0x7d, 0xf6, 0xc4, 0x3f, 0x2e, 0x2e, 
+0x0e, 0x9f, 0x7f, 0xfe, 0x39, 0x15, 0xff, 0x46, 
+0xa2, 0x14, 0x7f, 0x8d, 0x6c, 0xff, 0x0a, 0x77, 
+0x88, 0x3f, 0x14, 0xd3, 0x9e, 0x54, 0xfc, 0xad, 
+0xa1, 0x39, 0x00, 0x7e, 0x02, 0xcd, 0x09, 0xf0, 
+0x2d, 0x8e, 0xe6, 0xff, 0x01, 0xa0, 0x79, 0xf3, 
+0xe6, 0x5e, 0x68, 0x89, 0x6f, 0x58, 0xb6, 0x6c, 
+0x99, 0xdd, 0x63, 0xd3, 0xa7, 0x4f, 0xc7, 0x1d, 
+0x77, 0xdc, 0xe1, 0xc5, 0xd6, 0xb8, 0x9f, 0x6f, 
+0xbe, 0xf9, 0xc6, 0x65, 0xf1, 0xd7, 0xa2, 0x6d, 
+0xdb, 0xb6, 0xf8, 0xf6, 0xdb, 0x6f, 0x91, 0x93, 
+0x93, 0x83, 0xfb, 0xef, 0xbf, 0xdf, 0x0d, 0x2d, 
+0x6b, 0xba, 0x38, 0x21, 0xfe, 0x2b, 0xdc, 0x21, 
+0xfe, 0x64, 0xf4, 0x4f, 0xc5, 0xdf, 0x16, 0x6a, 
+0x00, 0xfc, 0x08, 0x6a, 0x02, 0x7c, 0x87, 0x33, 
+0x06, 0x40, 0x2b, 0x02, 0x10, 0x0c, 0x64, 0x64, 
+0x64, 0xe0, 0xc8, 0x11, 0xcd, 0x3f, 0x17, 0x80, 
+0xc0, 0x4f, 0xfe, 0xab, 0xad, 0xad, 0xc5, 0x3b, 
+0xef, 0xbc, 0xd3, 0xa8, 0x73, 0xf0, 0x3c, 0x8f, 
+0x57, 0x5f, 0x7d, 0x15, 0xa7, 0x4f, 0x9f, 0xc6, 
+0x73, 0xcf, 0x3d, 0xe7, 0x37, 0x05, 0x5d, 0xd4, 
+0xf9, 0x27, 0x81, 0x02, 0x11, 0x7f, 0xad, 0x75, 
+0xfe, 0x46, 0xa3, 0xb1, 0x22, 0x21, 0x21, 0x61, 
+0xc5, 0xf5, 0xeb, 0xd7, 0x9d, 0x16, 0x7f, 0x9e, 
+0xe7, 0xfd, 0x4e, 0xfc, 0x03, 0x01, 0x6a, 0x00, 
+0xfc, 0x0c, 0x6a, 0x02, 0x7c, 0x83, 0xa3, 0xa5, 
+0x5e, 0x40, 0xf0, 0x1a, 0x80, 0xff, 0xfe, 0xf7, 
+0xbf, 0x76, 0x8f, 0x0d, 0x1c, 0x38, 0x10, 0x83, 
+0x07, 0x0f, 0xf6, 0x62, 0x6b, 0xdc, 0x4f, 0x4a, 
+0x4a, 0x0a, 0x4a, 0x4b, 0x4b, 0x1b, 0xfc, 0xfe, 
+0x91, 0x23, 0x47, 0xe2, 0xe8, 0xd1, 0xa3, 0x58, 
+0xba, 0x74, 0xa9, 0xdd, 0xe5, 0x73, 0xde, 0xa6, 
+0xba, 0xba, 0x1a, 0x85, 0x85, 0x85, 0xe0, 0x79, 
+0x1e, 0x85, 0x85, 0x85, 0x0d, 0xda, 0xbb, 0xc2, 
+0x57, 0x28, 0xc5, 0x5f, 0x8d, 0x59, 0xfc, 0x57, 
+0xba, 0x2a, 0xfe, 0xe6, 0xad, 0x7d, 0x5d, 0x16, 
+0x7f, 0xbd, 0x5e, 0x2f, 0x7b, 0x4a, 0xfc, 0xfd, 
+0x7d, 0xf4, 0x0f, 0x50, 0x03, 0xe0, 0x97, 0x50, 
+0x13, 0xe0, 0x7d, 0xca, 0xca, 0xca, 0x1c, 0xbe, 
+0x26, 0x18, 0xa7, 0x00, 0xae, 0x5d, 0xbb, 0x86, 
+0x2d, 0x5b, 0xb6, 0xd8, 0x3d, 0x1e, 0xe8, 0xa3, 
+0x7f, 0x00, 0x88, 0x8f, 0x8f, 0x6f, 0xd0, 0xfb, 
+0xee, 0xbc, 0xf3, 0x4e, 0xfc, 0xf0, 0xc3, 0x0f, 
+0x48, 0x4d, 0x4d, 0x45, 0x6c, 0x6c, 0xac, 0x9b, 
+0x5b, 0xd5, 0x30, 0x04, 0x41, 0x40, 0x49, 0x49, 
+0x09, 0x4c, 0x26, 0x13, 0x32, 0x32, 0x32, 0xf0, 
+0xc5, 0x17, 0x5f, 0xa0, 0xb4, 0xb4, 0x34, 0x60, 
+0xca, 0x31, 0x57, 0x54, 0x54, 0x20, 0x29, 0x29, 
+0x49, 0xb3, 0xc8, 0x0f, 0x11, 0xff, 0x6b, 0xd7, 
+0xae, 0xdd, 0xf0, 0x96, 0xf8, 0x0b, 0x82, 0x20, 
+0x35, 0x55, 0xf1, 0x07, 0xa8, 0x01, 0xf0, 0x5b, 
+0xa8, 0x09, 0xf0, 0x2e, 0x37, 0x6f, 0xde, 0x74, 
+0xf8, 0x9a, 0x60, 0x8c, 0x00, 0x7c, 0xf9, 0xe5, 
+0x97, 0x56, 0x1b, 0xfc, 0x28, 0xe9, 0xd8, 0xb1, 
+0x23, 0x66, 0xcc, 0x98, 0xe1, 0xe5, 0x16, 0xb9, 
+0x17, 0x49, 0x92, 0x6c, 0xca, 0x19, 0x2b, 0xe9, 
+0xd3, 0xa7, 0x0f, 0x9e, 0x7e, 0xfa, 0x69, 0xab, 
+0xba, 0x0e, 0xa1, 0xa1, 0xa1, 0xf8, 0xbf, 0xff, 
+0xfb, 0x3f, 0x9c, 0x3c, 0x79, 0xd2, 0xaf, 0xfa, 
+0x5f, 0x5e, 0x5e, 0x8e, 0xbc, 0xbc, 0x3c, 0xfc, 
+0xeb, 0x5f, 0xff, 0xc2, 0xb4, 0x69, 0xd3, 0x10, 
+0x12, 0x12, 0x82, 0x57, 0x5f, 0x7d, 0x35, 0x20, 
+0xf6, 0x21, 0x00, 0x6e, 0x8b, 0xbf, 0x72, 0xda, 
+0x82, 0x31, 0xaf, 0xf3, 0xaf, 0xad, 0xad, 0xbd, 
+0x49, 0xc5, 0xdf, 0xfb, 0x50, 0x03, 0xe0, 0xc7, 
+0x50, 0x13, 0xe0, 0x3d, 0xb4, 0x2a, 0xdf, 0xa9, 
+0x09, 0xb6, 0x08, 0x80, 0xd1, 0x68, 0xc4, 0xd7, 
+0x5f, 0x7f, 0x6d, 0xf7, 0xf8, 0xfc, 0xf9, 0xf3, 
+0xfd, 0x7e, 0xcf, 0x02, 0x47, 0x64, 0x66, 0x66, 
+0xda, 0x5d, 0xdd, 0x00, 0xd4, 0x6d, 0x93, 0xbb, 
+0x7a, 0xf5, 0x6a, 0x14, 0x15, 0x15, 0x21, 0x29, 
+0x29, 0x09, 0x7b, 0xf6, 0xec, 0xc1, 0x95, 0x2b, 
+0x57, 0xf0, 0xfe, 0xfb, 0xef, 0xfb, 0xcd, 0x5e, 
+0x07, 0x37, 0x6e, 0xdc, 0xc0, 0x92, 0x25, 0x4b, 
+0x30, 0x7e, 0xfc, 0x78, 0x3c, 0xf2, 0xc8, 0x23, 
+0x88, 0x8e, 0x8e, 0x46, 0x62, 0x62, 0x22, 0x1e, 
+0x7d, 0xf4, 0x51, 0x5f, 0x37, 0xcd, 0x69, 0x6e, 
+0xde, 0xbc, 0xa9, 0x29, 0xfe, 0x00, 0x88, 0xf8, 
+0xaf, 0x70, 0xa7, 0xf8, 0x87, 0x84, 0x84, 0x50, 
+0xf1, 0x77, 0x02, 0x6a, 0x00, 0xfc, 0x1c, 0x6a, 
+0x02, 0xbc, 0x43, 0x7d, 0x11, 0x00, 0x86, 0x61, 
+0x30, 0x67, 0xce, 0x9c, 0x80, 0x19, 0x69, 0x39, 
+0xcb, 0xba, 0x75, 0xeb, 0xec, 0x2e, 0x7d, 0x0c, 
+0x09, 0x09, 0xc1, 0xbc, 0x79, 0xf3, 0xbc, 0xdc, 
+0x22, 0xf7, 0xb3, 0x61, 0xc3, 0x06, 0xbb, 0xc7, 
+0xa2, 0xa2, 0xa2, 0x30, 0x6b, 0xd6, 0x2c, 0x00, 
+0x40, 0xeb, 0xd6, 0xad, 0x31, 0x7a, 0xf4, 0x68, 
+0x8c, 0x1d, 0x3b, 0xd6, 0x6f, 0x8a, 0x37, 0x95, 
+0x96, 0x96, 0xe2, 0xe5, 0x97, 0x5f, 0x46, 0x97, 
+0x2e, 0x5d, 0xf0, 0xe6, 0x9b, 0x6f, 0xa2, 0x5b, 
+0xb7, 0x6e, 0x38, 0x75, 0xea, 0x14, 0x16, 0x2c, 
+0x58, 0x10, 0x50, 0xfb, 0x31, 0xdc, 0xbc, 0x79, 
+0x13, 0x89, 0x89, 0x89, 0x16, 0xf1, 0x27, 0xa3, 
+0x7e, 0xa0, 0x4e, 0xfc, 0x77, 0xec, 0xd8, 0xe1, 
+0xd6, 0x91, 0x7f, 0x48, 0x48, 0x88, 0xc8, 0x30, 
+0x0c, 0x15, 0x7f, 0x27, 0xa0, 0x06, 0x20, 0x00, 
+0xa0, 0x26, 0xc0, 0xf3, 0xd8, 0x8b, 0x00, 0x4c, 
+0x98, 0x30, 0x01, 0x47, 0x8f, 0x1e, 0xc5, 0xda, 
+0xb5, 0x6b, 0xfd, 0x26, 0x01, 0xcc, 0x5d, 0x2c, 
+0x59, 0xb2, 0xc4, 0xee, 0xb1, 0x39, 0x73, 0xe6, 
+0x04, 0xfc, 0x1a, 0xf7, 0xb2, 0xb2, 0x32, 0xac, 
+0x5e, 0xbd, 0xda, 0xee, 0xf1, 0xbf, 0xff, 0xfd, 
+0xef, 0x7e, 0xb7, 0x31, 0x93, 0x2c, 0xcb, 0xd8, 
+0xbb, 0x77, 0x2f, 0x26, 0x4e, 0x9c, 0x88, 0x98, 
+0x98, 0x18, 0x2c, 0x5f, 0xbe, 0x1c, 0x3d, 0x7a, 
+0xf4, 0x40, 0x7a, 0x7a, 0x3a, 0xd6, 0xac, 0x59, 
+0x83, 0x8e, 0x1d, 0x3b, 0xfa, 0xba, 0x89, 0x2e, 
+0xa1, 0x25, 0xfe, 0x04, 0x22, 0xfe, 0x57, 0xaf, 
+0x5e, 0xbd, 0xae, 0xb8, 0x6f, 0x50, 0xf1, 0xf7, 
+0x22, 0xd4, 0x00, 0x04, 0x08, 0xd4, 0x04, 0x78, 
+0x8e, 0xea, 0xea, 0x6a, 0x4b, 0x51, 0x23, 0xc2, 
+0xd0, 0xa1, 0x43, 0x71, 0xe0, 0xc0, 0x01, 0xec, 
+0xd8, 0xb1, 0x03, 0x7d, 0xfa, 0xf4, 0xf1, 0x7a, 
+0x9b, 0x3c, 0xcd, 0xee, 0xdd, 0xbb, 0x71, 0xe2, 
+0xc4, 0x09, 0xbb, 0xc7, 0x83, 0x21, 0xf9, 0xef, 
+0x8b, 0x2f, 0xbe, 0xb0, 0x29, 0x78, 0x45, 0x88, 
+0x8b, 0x8b, 0xc3, 0x8b, 0x2f, 0xbe, 0xe8, 0xe5, 
+0x16, 0xd5, 0x4f, 0x7a, 0x7a, 0x3a, 0x62, 0x63, 
+0x63, 0x31, 0x6e, 0xdc, 0x38, 0xec, 0xde, 0xbd, 
+0x1b, 0x0c, 0xc3, 0xe0, 0xdf, 0xff, 0xfe, 0x37, 
+0xf2, 0xf3, 0xf3, 0x31, 0x7c, 0xf8, 0x70, 0x5f, 
+0x37, 0xcf, 0x65, 0x94, 0xe2, 0xaf, 0x1c, 0xf5, 
+0x03, 0x80, 0xd1, 0x68, 0xac, 0xdc, 0xb9, 0x73, 
+0xa7, 0x5a, 0xfc, 0x8d, 0xee, 0x14, 0xff, 0x16, 
+0x2d, 0x5a, 0x50, 0xf1, 0x77, 0x00, 0x35, 0x00, 
+0x01, 0x04, 0x35, 0x01, 0x9e, 0x41, 0x19, 0xfe, 
+0xef, 0xd3, 0xa7, 0x0f, 0x76, 0xec, 0xd8, 0x81, 
+0x03, 0x07, 0x0e, 0x60, 0xe8, 0xd0, 0xa1, 0x5e, 
+0x6d, 0x87, 0x37, 0xf9, 0xe4, 0x93, 0x4f, 0xec, 
+0x1e, 0x7b, 0xf2, 0xc9, 0x27, 0xd1, 0xb7, 0x6f, 
+0x5f, 0x2f, 0xb6, 0xc6, 0xfd, 0xd4, 0xd6, 0xd6, 
+0xda, 0x5d, 0xde, 0xd8, 0xa9, 0x53, 0x27, 0x6c, 
+0xda, 0xb4, 0x09, 0x2c, 0xeb, 0x3f, 0xb7, 0xbf, 
+0x7f, 0xff, 0xfb, 0xdf, 0x18, 0x3d, 0x7a, 0x34, 
+0x4e, 0x9e, 0x3c, 0x09, 0xa0, 0x6e, 0x8f, 0x81, 
+0xd3, 0xa7, 0x4f, 0xe3, 0xb5, 0xd7, 0x5e, 0x0b, 
+0xa8, 0x70, 0x3f, 0xa1, 0xb2, 0xb2, 0xd2, 0xb2, 
+0xb1, 0x8f, 0x5a, 0x34, 0x4d, 0x26, 0x53, 0xe5, 
+0x8e, 0x1d, 0x3b, 0x56, 0x5c, 0xb9, 0x72, 0x45, 
+0x53, 0xfc, 0xcd, 0x51, 0x00, 0xe5, 0x97, 0xd0, 
+0x10, 0xf1, 0x17, 0x45, 0x91, 0x8a, 0xbf, 0x03, 
+0xfc, 0xe7, 0x13, 0x40, 0x71, 0x8a, 0x20, 0x33, 
+0x01, 0xf9, 0x5a, 0x7d, 0xf1, 0xb6, 0x09, 0xa8, 
+0xac, 0xac, 0xc4, 0x5d, 0x77, 0xdd, 0x85, 0x35, 
+0x6b, 0xd6, 0xe0, 0xe8, 0xd1, 0xa3, 0x98, 0x30, 
+0x61, 0x82, 0xd7, 0x7e, 0xb7, 0x2f, 0xc8, 0xcf, 
+0xcf, 0x47, 0x6a, 0x6a, 0xaa, 0xe6, 0xb1, 0xf6, 
+0xed, 0xdb, 0x63, 0xe9, 0xd2, 0xa5, 0x5e, 0x6e, 
+0x91, 0xfb, 0x59, 0xbb, 0x76, 0xad, 0x66, 0x7e, 
+0x43, 0x64, 0x64, 0x24, 0x12, 0x13, 0x13, 0xd1, 
+0xa5, 0x4b, 0x17, 0x1f, 0xb4, 0xca, 0x96, 0xca, 
+0xca, 0x4a, 0xcc, 0x9e, 0x3d, 0x1b, 0x0b, 0x16, 
+0x2c, 0x80, 0x20, 0x08, 0xd0, 0xeb, 0xf5, 0x48, 
+0x4b, 0x4b, 0xc3, 0x77, 0xdf, 0x7d, 0x87, 0xf6, 
+0xed, 0xdb, 0xfb, 0xba, 0x79, 0x0d, 0xa2, 0xb2, 
+0xb2, 0xd2, 0x66, 0x63, 0x1f, 0x82, 0x59, 0xfc, 
+0x57, 0xd6, 0x27, 0xfe, 0xe4, 0x79, 0x72, 0x4f, 
+0xd1, 0xe9, 0x74, 0x26, 0x2a, 0xfe, 0x9e, 0x81, 
+0x6e, 0x06, 0x14, 0xa0, 0x30, 0x5a, 0xff, 0x91, 
+0x08, 0xc8, 0x0d, 0x84, 0x1e, 0x8b, 0x88, 0x88, 
+0xb8, 0x4f, 0xab, 0x2f, 0xde, 0xda, 0x40, 0xc8, 
+0x60, 0x30, 0x80, 0xe7, 0xf9, 0x80, 0xcf, 0x78, 
+0x07, 0x80, 0x1f, 0x7e, 0xf8, 0x01, 0x17, 0x2e, 
+0x5c, 0xc0, 0x0b, 0x2f, 0xbc, 0x60, 0x77, 0x6d, 
+0xf8, 0x9c, 0x39, 0x73, 0xb0, 0x7e, 0xfd, 0x7a, 
+0xcd, 0x63, 0x9b, 0x37, 0x6f, 0xc6, 0x63, 0x8f, 
+0x3d, 0xe6, 0xc9, 0x26, 0x7a, 0x9c, 0xc2, 0xc2, 
+0x42, 0xdc, 0x77, 0xdf, 0x7d, 0xb8, 0x72, 0xe5, 
+0x8a, 0xd5, 0xf3, 0xcd, 0x9b, 0x37, 0x47, 0x6a, 
+0x6a, 0x2a, 0xe2, 0xe2, 0xe2, 0x7c, 0xd4, 0x32, 
+0x6b, 0xf2, 0xf3, 0xf3, 0x31, 0x73, 0xe6, 0x4c, 
+0xfc, 0xfa, 0xeb, 0xaf, 0x96, 0xe7, 0x9e, 0x7f, 
+0xfe, 0xf9, 0x7a, 0x57, 0x66, 0xf8, 0x3b, 0x95, 
+0x95, 0x95, 0x48, 0x4a, 0x4a, 0xb2, 0xec, 0x3b, 
+0x42, 0x60, 0xea, 0xd6, 0xf9, 0x57, 0xee, 0xd8, 
+0xb1, 0x63, 0xe5, 0xe5, 0xcb, 0x97, 0xaf, 0x51, 
+0xf1, 0xf7, 0x0f, 0xa8, 0x01, 0x08, 0x60, 0xa8, 
+0x09, 0xa0, 0x10, 0x0e, 0x1d, 0x3a, 0x84, 0x37, 
+0xde, 0x78, 0x03, 0x19, 0x19, 0x19, 0x00, 0xea, 
+0xc4, 0xee, 0xb9, 0xe7, 0x9e, 0xc3, 0xeb, 0xaf, 
+0xbf, 0x8e, 0x98, 0x98, 0x18, 0xcb, 0xeb, 0x2e, 
+0x5c, 0xb8, 0x80, 0xee, 0xdd, 0xbb, 0x43, 0x10, 
+0x04, 0x9b, 0x73, 0x3c, 0xf1, 0xc4, 0x13, 0xd8, 
+0xb8, 0x71, 0xa3, 0xb7, 0x9a, 0xec, 0x12, 0x92, 
+0x24, 0xe1, 0xab, 0xaf, 0xbe, 0xc2, 0xd7, 0x5f, 
+0x7f, 0x8d, 0xb6, 0x6d, 0xdb, 0x62, 0xe0, 0xc0, 
+0x81, 0x18, 0x34, 0x68, 0x10, 0x06, 0x0f, 0x1e, 
+0x6c, 0x95, 0xac, 0x28, 0x08, 0x02, 0xc6, 0x8c, 
+0x19, 0x83, 0xb4, 0xb4, 0x34, 0xab, 0xf7, 0xdf, 
+0x7b, 0xef, 0xbd, 0x58, 0xb9, 0x72, 0xa5, 0xcf, 
+0xab, 0x1a, 0xfe, 0xfa, 0xeb, 0xaf, 0xd8, 0xb0, 
+0x61, 0x03, 0x0e, 0x1c, 0x38, 0x80, 0x7d, 0xfb, 
+0xf6, 0x59, 0xd5, 0x60, 0x60, 0x18, 0x06, 0x27, 
+0x4e, 0x9c, 0x40, 0xcf, 0x9e, 0x3d, 0x7d, 0xd8, 
+0xc2, 0x86, 0x43, 0xc5, 0x3f, 0xf0, 0xa0, 0x06, 
+0x20, 0xc0, 0xa1, 0x26, 0xa0, 0x69, 0x73, 0xf9, 
+0xf2, 0x65, 0xbc, 0xf3, 0xce, 0x3b, 0x58, 0xbb, 
+0x76, 0xad, 0xe6, 0xbe, 0xf6, 0x3c, 0xcf, 0xe3, 
+0xa9, 0xa7, 0x9e, 0xc2, 0xc2, 0x85, 0x0b, 0xd1, 
+0xbd, 0x7b, 0x77, 0xcc, 0x9c, 0x39, 0x13, 0x3f, 
+0xfc, 0xf0, 0x83, 0xcd, 0xeb, 0x46, 0x8f, 0x1e, 
+0x8d, 0xad, 0x5b, 0xb7, 0xfa, 0x65, 0xb1, 0xa3, 
+0x9c, 0x9c, 0x1c, 0xbc, 0xf4, 0xd2, 0x4b, 0xc8, 
+0xcb, 0xcb, 0xd3, 0x3c, 0x1e, 0x1d, 0x1d, 0x8d, 
+0xd0, 0xd0, 0x50, 0xb0, 0x2c, 0x0b, 0xa3, 0xd1, 
+0x88, 0x8b, 0x17, 0x2f, 0x5a, 0x8e, 0x85, 0x85, 
+0x85, 0xe1, 0x6f, 0x7f, 0xfb, 0x1b, 0xde, 0x7a, 
+0xeb, 0x2d, 0xe8, 0xf5, 0x7a, 0x6f, 0x35, 0xd9, 
+0x2e, 0x0f, 0x3d, 0xf4, 0x10, 0xd2, 0xd3, 0xd3, 
+0x35, 0x8f, 0x4d, 0x99, 0x32, 0x05, 0x5b, 0xb7, 
+0x6e, 0xf5, 0x72, 0x8b, 0xdc, 0x83, 0x96, 0xf8, 
+0x93, 0x5b, 0x93, 0xd1, 0x68, 0xbc, 0xb5, 0x63, 
+0xc7, 0x8e, 0x15, 0x9e, 0x14, 0xff, 0xd0, 0xd0, 
+0x50, 0x89, 0x65, 0x59, 0x91, 0x8a, 0xbf, 0x6b, 
+0x50, 0x03, 0x10, 0x04, 0x50, 0x13, 0xd0, 0xf4, 
+0xa8, 0xaa, 0xaa, 0xc2, 0xc7, 0x1f, 0x7f, 0x8c, 
+0xc5, 0x8b, 0x17, 0x3b, 0xb5, 0x21, 0x0c, 0xc7, 
+0x71, 0x18, 0x36, 0x6c, 0x98, 0xcd, 0xc8, 0x18, 
+0x00, 0xa6, 0x4e, 0x9d, 0x8a, 0x0d, 0x1b, 0x36, 
+0xf8, 0xdd, 0x92, 0xb8, 0xe2, 0xe2, 0x62, 0xbc, 
+0xf3, 0xce, 0x3b, 0x58, 0xb1, 0x62, 0x85, 0xa6, 
+0xb9, 0x71, 0xc4, 0xb8, 0x71, 0xe3, 0xb0, 0x7c, 
+0xf9, 0x72, 0xdc, 0x75, 0xd7, 0x5d, 0x1e, 0x68, 
+0x9d, 0xeb, 0x64, 0x64, 0x64, 0xd8, 0x4d, 0x2c, 
+0x6d, 0xd9, 0xb2, 0x25, 0x4e, 0x9c, 0x38, 0x81, 
+0xce, 0x9d, 0x3b, 0x7b, 0xb9, 0x55, 0x8d, 0x47, 
+0x2d, 0xfe, 0xaa, 0x6c, 0xff, 0x5b, 0x3b, 0x77, 
+0xee, 0x5c, 0x79, 0xe9, 0xd2, 0xa5, 0xab, 0x54, 
+0xfc, 0xfd, 0x0f, 0x9a, 0x04, 0x18, 0x04, 0x04, 
+0x51, 0x62, 0xe0, 0x16, 0x7f, 0x49, 0x0c, 0xf4, 
+0x57, 0x64, 0x59, 0xc6, 0xea, 0xd5, 0xab, 0xd1, 
+0xa3, 0x47, 0x0f, 0xbc, 0xff, 0xfe, 0xfb, 0x4e, 
+0xef, 0x06, 0x27, 0x8a, 0xa2, 0x8d, 0xf8, 0x93, 
+0xd1, 0xf1, 0x8f, 0x3f, 0xfe, 0xe8, 0x57, 0xe2, 
+0x4f, 0xc2, 0xfd, 0x77, 0xdf, 0x7d, 0x37, 0xbe, 
+0xfd, 0xf6, 0x5b, 0x97, 0xc5, 0xbf, 0x63, 0xc7, 
+0x8e, 0xd8, 0xb8, 0x71, 0x23, 0x76, 0xef, 0xde, 
+0xed, 0x37, 0xe2, 0x0f, 0x00, 0x1f, 0x7d, 0xf4, 
+0x91, 0xdd, 0x63, 0x9f, 0x7c, 0xf2, 0x49, 0x40, 
+0x8a, 0xff, 0xad, 0x5b, 0xb7, 0xdc, 0x2e, 0xfe, 
+0xe4, 0xfe, 0x41, 0xc5, 0xdf, 0xf3, 0xd0, 0x08, 
+0x40, 0x10, 0xd1, 0x14, 0x22, 0x01, 0x8f, 0x3e, 
+0xfa, 0x28, 0x1e, 0x7a, 0xe8, 0x21, 0x37, 0x5f, 
+0xb9, 0xc0, 0x60, 0xff, 0xfe, 0xfd, 0x58, 0x81, 
+0x0c, 0x2c, 0x35, 0x00, 0x00, 0x20, 0x00, 0x49, 
+0x44, 0x41, 0x54, 0xb0, 0x60, 0x01, 0xf2, 0xf3, 
+0x35, 0x3d, 0x92, 0xd3, 0xb0, 0x2c, 0x8b, 0xa7, 
+0x9f, 0x7e, 0x1a, 0xef, 0xbf, 0xff, 0x3e, 0x3a, 
+0x75, 0xea, 0xe4, 0xa6, 0xd6, 0xb9, 0x87, 0xc3, 
+0x87, 0x0f, 0x63, 0xfe, 0xfc, 0xf9, 0xc8, 0xcd, 
+0xcd, 0x75, 0xf9, 0xbd, 0x7a, 0xbd, 0x1e, 0xf3, 
+0xe6, 0xcd, 0xc3, 0x87, 0x1f, 0x7e, 0x88, 0x96, 
+0x2d, 0x5b, 0x7a, 0xa0, 0x75, 0x0d, 0x27, 0x3f, 
+0x3f, 0x1f, 0x03, 0x06, 0x0c, 0xd0, 0x3c, 0x36, 
+0x7a, 0xf4, 0x68, 0x24, 0x25, 0x25, 0x79, 0xb9, 
+0x45, 0x8d, 0xe7, 0xd6, 0xad, 0x5b, 0x48, 0x4c, 
+0x4c, 0x44, 0x75, 0x75, 0xb5, 0xd6, 0x96, 0xbe, 
+0xb7, 0x76, 0xed, 0xda, 0xb5, 0xf2, 0xe2, 0xc5, 
+0x8b, 0x56, 0xe2, 0x0f, 0xc0, 0xc4, 0xb2, 0xac, 
+0xb1, 0x3e, 0xf1, 0x67, 0x59, 0xd6, 0x44, 0xc5, 
+0xdf, 0x3b, 0x50, 0x03, 0x10, 0x64, 0x04, 0xab, 
+0x09, 0x50, 0x76, 0x6b, 0xfc, 0xf8, 0xf1, 0x4d, 
+0xce, 0x04, 0xe4, 0xe6, 0xe6, 0x62, 0xd0, 0xa0, 
+0x41, 0x90, 0x24, 0xa9, 0x51, 0xe7, 0x19, 0x3f, 
+0x7e, 0x3c, 0xfe, 0xdf, 0xff, 0xfb, 0x7f, 0xe8, 
+0xdd, 0xbb, 0xb7, 0x9b, 0x5a, 0xe6, 0x1e, 0x4a, 
+0x4a, 0x4a, 0xb0, 0x70, 0xe1, 0x42, 0x7c, 0xfb, 
+0xed, 0xb7, 0x2e, 0xf7, 0xb1, 0x75, 0xeb, 0xd6, 
+0xf8, 0xd3, 0x9f, 0xfe, 0x84, 0x57, 0x5e, 0x79, 
+0xc5, 0x6f, 0x2b, 0xe5, 0x4d, 0x9b, 0x36, 0x4d, 
+0x73, 0x7e, 0xbf, 0x6d, 0xdb, 0xb6, 0x38, 0x7c, 
+0xf8, 0xb0, 0xdf, 0x2c, 0x4b, 0x74, 0x16, 0x2a, 
+0xfe, 0xc1, 0x01, 0x35, 0x00, 0x41, 0x88, 0xa7, 
+0x4d, 0x40, 0x58, 0x58, 0x18, 0x53, 0x5e, 0x5e, 
+0xce, 0x79, 0xcb, 0x04, 0x68, 0x75, 0xa7, 0x29, 
+0x99, 0x00, 0x49, 0x92, 0x30, 0x78, 0xf0, 0x60, 
+0x1c, 0x3e, 0x7c, 0xb8, 0xc1, 0xe7, 0x18, 0x30, 
+0x60, 0x00, 0x16, 0x2f, 0x5e, 0xec, 0xb7, 0x79, 
+0x14, 0x63, 0xc6, 0x8c, 0x41, 0x72, 0x72, 0xb2, 
+0xd3, 0xaf, 0xef, 0xde, 0xbd, 0x3b, 0x86, 0x0e, 
+0x1d, 0x8a, 0x11, 0x23, 0x46, 0x60, 0xc6, 0x8c, 
+0x19, 0x7e, 0x97, 0xbc, 0x58, 0x52, 0x52, 0x02, 
+0xbd, 0x5e, 0x8f, 0x16, 0x2d, 0x5a, 0x60, 0xd3, 
+0xa6, 0x4d, 0x78, 0xe2, 0x89, 0x27, 0x6c, 0x5e, 
+0xd3, 0xae, 0x5d, 0x3b, 0xbf, 0xda, 0x6a, 0xd8, 
+0x59, 0xd4, 0x61, 0x7f, 0x25, 0x26, 0x93, 0xa9, 
+0x6a, 0xe7, 0xce, 0x9d, 0x2b, 0x2f, 0x5e, 0xbc, 
+0x78, 0x85, 0x8a, 0xbf, 0xff, 0x43, 0x0d, 0x40, 
+0x90, 0x12, 0x2c, 0x26, 0xa0, 0x7f, 0xff, 0xfe, 
+0x76, 0x23, 0x01, 0xe3, 0xc6, 0x8d, 0x6b, 0x12, 
+0x26, 0x60, 0xe3, 0xc6, 0x8d, 0x96, 0x4d, 0x6b, 
+0xb4, 0xe8, 0xdb, 0xb7, 0x2f, 0x4a, 0x4a, 0x4a, 
+0x70, 0xf9, 0xf2, 0x65, 0x9b, 0x63, 0x5d, 0xbb, 
+0x76, 0xc5, 0x47, 0x1f, 0x7d, 0x84, 0x59, 0xb3, 
+0x66, 0x69, 0xde, 0xe4, 0xfc, 0x81, 0xbc, 0xbc, 
+0x3c, 0xdc, 0x7f, 0xff, 0xfd, 0x76, 0x8f, 0xf7, 
+0xeb, 0xd7, 0x0f, 0xeb, 0xd7, 0xaf, 0xc7, 0xcd, 
+0x9b, 0x37, 0x51, 0x55, 0x55, 0x85, 0x9e, 0x3d, 
+0x7b, 0xfa, 0x6d, 0x91, 0x9c, 0xb3, 0x67, 0xcf, 
+0x62, 0xf1, 0xe2, 0xc5, 0x58, 0xbd, 0x7a, 0x35, 
+0x8c, 0x46, 0x23, 0x62, 0x62, 0x62, 0x50, 0x54, 
+0x54, 0x84, 0x5b, 0xb7, 0x6e, 0x59, 0xbd, 0xae, 
+0x7d, 0xfb, 0xf6, 0x48, 0x4d, 0x4d, 0x0d, 0xb8, 
+0x25, 0x7f, 0xb7, 0x6e, 0xdd, 0x42, 0x72, 0x72, 
+0xb2, 0x4d, 0x89, 0x65, 0xf3, 0x52, 0x3f, 0x2a, 
+0xfe, 0x01, 0x46, 0xe0, 0xd5, 0x98, 0xa4, 0x38, 
+0x85, 0x2c, 0xcb, 0xb2, 0x96, 0x09, 0x60, 0x18, 
+0x06, 0xb2, 0x2c, 0xcb, 0xc4, 0x04, 0xc4, 0xc6, 
+0xc6, 0xca, 0x05, 0x05, 0x05, 0x4c, 0x41, 0x41, 
+0x81, 0x1c, 0x1b, 0x1b, 0xcb, 0x28, 0x3e, 0x30, 
+0x0c, 0xf9, 0xb0, 0x54, 0x56, 0x56, 0x4a, 0x61, 
+0x61, 0x61, 0x6c, 0x65, 0x65, 0x25, 0x5a, 0xb5, 
+0x6a, 0x25, 0x55, 0x54, 0x54, 0x00, 0x00, 0x1b, 
+0x11, 0x11, 0x21, 0x96, 0x97, 0x97, 0x03, 0x00, 
+0x9a, 0x35, 0x6b, 0x66, 0x73, 0x53, 0x60, 0x59, 
+0x16, 0x21, 0x21, 0x21, 0xa8, 0xad, 0xad, 0xb5, 
+0xdb, 0x4e, 0x9e, 0xe7, 0x21, 0x08, 0x02, 0x24, 
+0x49, 0x02, 0xc7, 0x71, 0x96, 0x9a, 0xfc, 0xa4, 
+0xe9, 0x47, 0x8e, 0x1c, 0xd9, 0xd2, 0xaf, 0x5f, 
+0x3f, 0xb9, 0x4d, 0x9b, 0x36, 0x36, 0x13, 0xa8, 
+0x7b, 0xf7, 0xee, 0x05, 0x80, 0xa0, 0x37, 0x01, 
+0xbb, 0x77, 0xef, 0xae, 0xf7, 0xf8, 0xfb, 0xef, 
+0xbf, 0x8f, 0x49, 0x93, 0x26, 0x21, 0x2b, 0x2b, 
+0x0b, 0xf1, 0xf1, 0xf1, 0x28, 0x2a, 0x2a, 0x42, 
+0x44, 0x44, 0x04, 0x86, 0x0f, 0x1f, 0x8e, 0x89, 
+0x13, 0x27, 0xfa, 0xc5, 0xf2, 0xb7, 0xfa, 0xf8, 
+0xe2, 0x8b, 0x2f, 0xea, 0x3d, 0x3e, 0x71, 0xe2, 
+0x44, 0xbf, 0xdf, 0x89, 0xf1, 0xa7, 0x9f, 0x7e, 
+0xc2, 0xbf, 0xfe, 0xf5, 0x2f, 0x6c, 0xda, 0xb4, 
+0x09, 0xa2, 0x28, 0x22, 0x3c, 0x3c, 0x1c, 0xb2, 
+0x2c, 0xe3, 0xdc, 0xb9, 0x73, 0x36, 0xaf, 0xbd, 
+0xfb, 0xee, 0xbb, 0xb1, 0x75, 0xeb, 0x56, 0xbf, 
+0xef, 0x93, 0x9a, 0xfa, 0xc4, 0xdf, 0x64, 0x32, 
+0x55, 0x99, 0xc3, 0xfe, 0x54, 0xfc, 0x03, 0x08, 
+0x1a, 0x01, 0x68, 0x22, 0x28, 0xcd, 0x80, 0xf2, 
+0x6f, 0xae, 0x8e, 0x06, 0xcc, 0x98, 0x31, 0x03, 
+0x3f, 0xff, 0xfc, 0x33, 0x73, 0xf5, 0xea, 0x55, 
+0x06, 0x00, 0xa2, 0xa3, 0xa3, 0x19, 0x5f, 0x45, 
+0x02, 0x48, 0x14, 0xc0, 0x1c, 0x09, 0x98, 0xd6, 
+0xba, 0x75, 0xeb, 0x01, 0x8a, 0xfe, 0x58, 0xfa, 
+0x30, 0x76, 0xec, 0xd8, 0xa0, 0x36, 0x01, 0x9d, 
+0x3b, 0x77, 0xd6, 0x1c, 0xdd, 0x03, 0x75, 0xd7, 
+0xa1, 0xb8, 0xb8, 0xd8, 0x6f, 0xb6, 0xb0, 0x6d, 
+0x08, 0x5d, 0xba, 0x74, 0xb1, 0x5a, 0xbb, 0xaf, 
+0x26, 0x23, 0x23, 0x03, 0x43, 0x86, 0x0c, 0xf1, 
+0x62, 0x8b, 0x9c, 0xe7, 0xe0, 0xc1, 0x83, 0x58, 
+0xb4, 0x68, 0x11, 0x76, 0xed, 0xda, 0xe5, 0xf0, 
+0xb5, 0x21, 0x21, 0x21, 0x58, 0xb8, 0x70, 0x21, 
+0xde, 0x7e, 0xfb, 0x6d, 0xbf, 0x37, 0x65, 0x6a, 
+0xaa, 0xaa, 0xaa, 0x90, 0x94, 0x94, 0x64, 0x25, 
+0xfe, 0xe4, 0x33, 0x68, 0x16, 0xff, 0x55, 0xe7, 
+0xcf, 0x9f, 0xbf, 0x6c, 0x4f, 0xfc, 0x99, 0xba, 
+0x0d, 0x7d, 0x8c, 0x9e, 0x16, 0xff, 0xc8, 0xc8, 
+0x48, 0xf9, 0xea, 0xd5, 0xab, 0x2e, 0x8b, 0x7f, 
+0x53, 0x12, 0x7d, 0x25, 0xd4, 0x00, 0x34, 0x21, 
+0x82, 0xc1, 0x04, 0x68, 0x45, 0x02, 0x18, 0x86, 
+0xc1, 0xd8, 0xb1, 0x63, 0x31, 0x62, 0xc4, 0x08, 
+0x0f, 0x5e, 0x3d, 0xdf, 0x70, 0xe6, 0xcc, 0x19, 
+0xf4, 0xe8, 0xd1, 0xc3, 0xee, 0xf1, 0xf6, 0xed, 
+0xdb, 0x6b, 0xd6, 0xbc, 0x0f, 0x14, 0x1c, 0xf5, 
+0xef, 0xce, 0x3b, 0xef, 0xc4, 0xb9, 0x73, 0xe7, 
+0xfc, 0x6a, 0xe3, 0x1e, 0x00, 0xa8, 0xa8, 0xa8, 
+0xc0, 0xfc, 0xf9, 0xf3, 0xb1, 0x6e, 0xdd, 0x3a, 
+0xa7, 0x5e, 0x3f, 0x7a, 0xf4, 0x68, 0x7c, 0xfe, 
+0xf9, 0xe7, 0xf8, 0xdd, 0xef, 0x7e, 0xe7, 0xe1, 
+0x96, 0xb9, 0x1f, 0x17, 0xc4, 0xdf, 0xb2, 0xac, 
+0x17, 0x54, 0xfc, 0x03, 0x02, 0xff, 0xfa, 0x54, 
+0x51, 0x3c, 0x8a, 0xf2, 0x1f, 0x5d, 0xf9, 0x01, 
+0x50, 0xd7, 0x0a, 0xd8, 0xb4, 0x69, 0x13, 0x7a, 
+0xf6, 0xec, 0x69, 0xf9, 0x20, 0x5d, 0xbd, 0x7a, 
+0x55, 0x56, 0xd6, 0x09, 0x88, 0x8a, 0x8a, 0x92, 
+0x94, 0x75, 0x02, 0x0c, 0x06, 0x83, 0x1c, 0x11, 
+0x11, 0x21, 0x7a, 0xa2, 0x4e, 0x80, 0x62, 0xdd, 
+0xb0, 0xf1, 0xc8, 0x91, 0x23, 0xf1, 0x65, 0x65, 
+0x65, 0x79, 0xca, 0x3e, 0x90, 0x7e, 0xec, 0xdd, 
+0xbb, 0xd7, 0x6e, 0x85, 0xb5, 0x40, 0x26, 0x25, 
+0x25, 0xa5, 0xde, 0xe3, 0xfe, 0x9a, 0xf5, 0xee, 
+0x2c, 0x8e, 0xfa, 0xf7, 0xf4, 0xd3, 0x4f, 0xfb, 
+0x9d, 0xf8, 0x67, 0x66, 0x66, 0xa2, 0x6f, 0xdf, 
+0xbe, 0x0e, 0xc5, 0x9f, 0x65, 0x59, 0x4c, 0x9e, 
+0x3c, 0x19, 0x69, 0x69, 0x69, 0x48, 0x4a, 0x4a, 
+0x0a, 0x0a, 0xf1, 0x57, 0x7e, 0xe6, 0x4c, 0x26, 
+0x53, 0x35, 0x15, 0xff, 0xc0, 0xc6, 0xbf, 0x3e, 
+0x59, 0x14, 0x8f, 0xe3, 0x0e, 0x13, 0x50, 0x56, 
+0x56, 0x26, 0xfb, 0xca, 0x04, 0xe4, 0xe7, 0xe7, 
+0xc7, 0x97, 0x95, 0x95, 0xe5, 0x69, 0xcd, 0xdd, 
+0x25, 0x26, 0x26, 0x06, 0x9d, 0x09, 0x70, 0x24, 
+0x90, 0xd1, 0xd1, 0xd1, 0x5e, 0x6a, 0x89, 0x67, 
+0xa8, 0x2f, 0xf3, 0x9f, 0x61, 0x18, 0x3c, 0xf3, 
+0xcc, 0x33, 0xde, 0x6b, 0x8c, 0x13, 0x5c, 0xbe, 
+0x7c, 0x19, 0x13, 0x26, 0x4c, 0xc0, 0x85, 0x0b, 
+0x17, 0xec, 0xbe, 0x26, 0x3c, 0x3c, 0x1c, 0xf3, 
+0xe7, 0xcf, 0xc7, 0xa9, 0x53, 0xa7, 0xb0, 0x6d, 
+0xdb, 0xb6, 0x80, 0x8d, 0x4c, 0x55, 0x55, 0x55, 
+0x59, 0xe6, 0xfc, 0x95, 0xc2, 0x0f, 0xd4, 0x89, 
+0xff, 0xee, 0xdd, 0xbb, 0x57, 0x3a, 0x23, 0xfe, 
+0x00, 0x04, 0x2a, 0xfe, 0xfe, 0x09, 0x35, 0x00, 
+0x4d, 0x90, 0x60, 0x30, 0x01, 0xa5, 0xa5, 0xa5, 
+0x9a, 0x91, 0x80, 0x60, 0x32, 0x01, 0xb2, 0x2c, 
+0x3b, 0xac, 0x7e, 0x18, 0xc8, 0x11, 0x00, 0x49, 
+0x92, 0xea, 0xed, 0xdf, 0x88, 0x11, 0x23, 0xfc, 
+0xaa, 0x92, 0x9f, 0x2c, 0xcb, 0x98, 0x37, 0x6f, 
+0x9e, 0x4d, 0x12, 0x1c, 0xe1, 0xf1, 0xc7, 0x1f, 
+0xc7, 0xa6, 0x4d, 0x9b, 0x70, 0xe9, 0xd2, 0x25, 
+0x2c, 0x5f, 0xbe, 0x3c, 0x20, 0x47, 0xfc, 0x04, 
+0x22, 0xfe, 0xb7, 0x6e, 0xdd, 0xb2, 0x49, 0x94, 
+0x33, 0x8b, 0xff, 0xaa, 0x73, 0xe7, 0xce, 0x39, 
+0x25, 0xfe, 0x2c, 0xcb, 0x9a, 0xa8, 0xf8, 0xfb, 
+0x27, 0xd4, 0x00, 0x34, 0x51, 0xfc, 0xdd, 0x04, 
+0xc0, 0x7c, 0x33, 0x71, 0x64, 0x02, 0xb4, 0x22, 
+0x01, 0x49, 0x49, 0x49, 0xd8, 0xbf, 0x7f, 0xbf, 
+0xc7, 0xae, 0x9d, 0xb7, 0x38, 0x75, 0xea, 0x14, 
+0x4a, 0x4a, 0x4a, 0xea, 0x7d, 0x4d, 0x20, 0x47, 
+0x00, 0xb2, 0xb3, 0xb3, 0x51, 0x5a, 0x5a, 0x6a, 
+0xf7, 0xf8, 0xb3, 0xcf, 0x3e, 0xeb, 0xc5, 0xd6, 
+0x38, 0x66, 0xd9, 0xb2, 0x65, 0x48, 0x4a, 0x4a, 
+0xb2, 0xda, 0xc1, 0x8f, 0xc0, 0xf3, 0x3c, 0x3e, 
+0xfb, 0xec, 0x33, 0x4c, 0x9f, 0x3e, 0x3d, 0xa0, 
+0x13, 0x32, 0x01, 0xa0, 0xba, 0xba, 0xda, 0x6a, 
+0xe4, 0xaf, 0x44, 0x10, 0x04, 0x22, 0xfe, 0x97, 
+0x1a, 0x2a, 0xfe, 0xb2, 0x2c, 0x5b, 0xee, 0x03, 
+0xa0, 0xe2, 0xef, 0x53, 0xa8, 0x01, 0x68, 0xc2, 
+0xf8, 0xb3, 0x09, 0xd0, 0xe9, 0x74, 0x4e, 0x9b, 
+0x00, 0x65, 0x1f, 0x94, 0x91, 0x80, 0x40, 0x37, 
+0x01, 0xe7, 0xcf, 0x9f, 0x77, 0xf8, 0x9a, 0x40, 
+0x8e, 0x00, 0x7c, 0xff, 0xfd, 0xf7, 0x76, 0x8f, 
+0xb5, 0x68, 0xd1, 0x02, 0xd3, 0xa7, 0x4f, 0xf7, 
+0x62, 0x6b, 0xea, 0x47, 0x92, 0x24, 0x7c, 0xfa, 
+0xe9, 0xa7, 0x9a, 0xe2, 0x0f, 0xd4, 0x8d, 0xfe, 
+0x03, 0xb1, 0x96, 0xbf, 0x9a, 0xea, 0xea, 0x6a, 
+0x9b, 0x84, 0x3f, 0x82, 0xbb, 0xc4, 0x9f, 0x65, 
+0x59, 0x81, 0x8a, 0xbf, 0x7f, 0x40, 0x0d, 0x40, 
+0x13, 0x27, 0xd0, 0x4d, 0x40, 0x5e, 0x5e, 0x9e, 
+0x66, 0x4e, 0x00, 0xc3, 0x30, 0x01, 0x1f, 0x09, 
+0xb8, 0x74, 0xe9, 0x92, 0xc3, 0xd7, 0x04, 0xaa, 
+0x01, 0x30, 0x1a, 0x8d, 0x9a, 0xdb, 0x12, 0x13, 
+0x66, 0xce, 0x9c, 0x89, 0xf0, 0xf0, 0x70, 0x2f, 
+0xb6, 0xa8, 0x7e, 0xf6, 0xec, 0xd9, 0xa3, 0x69, 
+0xc8, 0x48, 0x82, 0xe2, 0xeb, 0xaf, 0xbf, 0xee, 
+0xe5, 0x16, 0xb9, 0x1f, 0xe5, 0xc8, 0x5f, 0x09, 
+0xc3, 0x30, 0x10, 0x04, 0xc1, 0xb0, 0x7b, 0xf7, 
+0xee, 0x55, 0xbf, 0xfd, 0xf6, 0x1b, 0x15, 0xff, 
+0x20, 0x82, 0x1a, 0x00, 0x4a, 0xc0, 0x9b, 0x80, 
+0xdc, 0xdc, 0xdc, 0xf8, 0xd2, 0xd2, 0xd2, 0x5c, 
+0xad, 0x3e, 0x04, 0xaa, 0x09, 0x10, 0x45, 0x11, 
+0x59, 0x59, 0x59, 0x0e, 0x5f, 0x17, 0xa8, 0x53, 
+0x00, 0x3b, 0x77, 0xee, 0xb4, 0x1b, 0xfe, 0x6f, 
+0xd5, 0xaa, 0x15, 0xde, 0x7b, 0xef, 0x3d, 0x2f, 
+0xb7, 0xa8, 0x7e, 0xb4, 0x8a, 0x15, 0x85, 0x84, 
+0x84, 0x40, 0x92, 0x24, 0xfc, 0xe1, 0x0f, 0x7f, 
+0xc0, 0xe0, 0xc1, 0x83, 0x7d, 0xd0, 0x2a, 0xf7, 
+0x41, 0xc4, 0x5f, 0x59, 0xb1, 0x90, 0x44, 0xd4, 
+0x4c, 0x26, 0x93, 0x61, 0xcf, 0x9e, 0x3d, 0x0e, 
+0xc5, 0xdf, 0x3c, 0x75, 0x47, 0xc5, 0x3f, 0x80, 
+0xa0, 0x06, 0x80, 0x02, 0xc0, 0x7f, 0x4c, 0x80, 
+0xf9, 0x66, 0xe2, 0x8c, 0x09, 0x30, 0xaa, 0x4c, 
+0xc0, 0xd6, 0xb2, 0xb2, 0xb2, 0x5c, 0xad, 0x48, 
+0x40, 0x72, 0x72, 0x32, 0x0e, 0x1c, 0x38, 0xe0, 
+0xd1, 0xeb, 0xe7, 0x4e, 0x76, 0xee, 0xdc, 0x89, 
+0xbe, 0x7d, 0xfb, 0x62, 0xf5, 0xea, 0xd5, 0x0e, 
+0x5f, 0x1b, 0xa8, 0x11, 0x80, 0xfa, 0xfa, 0xf6, 
+0xe9, 0xa7, 0x9f, 0xfa, 0xd5, 0x2e, 0x85, 0x79, 
+0x79, 0x79, 0x9a, 0x85, 0x7e, 0x62, 0x62, 0x62, 
+0x90, 0x98, 0x98, 0x88, 0xff, 0xfd, 0xef, 0x7f, 
+0x3e, 0x68, 0x95, 0xfb, 0xa8, 0xae, 0xae, 0x46, 
+0x4a, 0x4a, 0x8a, 0x8d, 0xf8, 0x03, 0xb0, 0x88, 
+0xff, 0xd9, 0xb3, 0x67, 0x2f, 0x3a, 0x12, 0x7f, 
+0x73, 0x04, 0x80, 0x8a, 0x7f, 0x00, 0x41, 0x0d, 
+0x00, 0xc5, 0x82, 0x3f, 0x98, 0x00, 0x59, 0x96, 
+0x45, 0x27, 0x4d, 0x80, 0x49, 0x6d, 0x02, 0x0e, 
+0x1f, 0x3e, 0xbc, 0xb5, 0xbe, 0x48, 0x80, 0xbf, 
+0x9b, 0x80, 0x8b, 0x17, 0x2f, 0x62, 0xd4, 0xa8, 
+0x51, 0x98, 0x38, 0x71, 0x22, 0x0a, 0x0a, 0x0a, 
+0x1c, 0xbe, 0x9e, 0x61, 0x18, 0x74, 0xe8, 0xd0, 
+0xc1, 0x0b, 0x2d, 0x73, 0x8d, 0xbc, 0xbc, 0x3c, 
+0x3c, 0xf5, 0xd4, 0x53, 0xf8, 0xfd, 0xef, 0x7f, 
+0x8f, 0xbd, 0x7b, 0xf7, 0x5a, 0xca, 0x3b, 0x13, 
+0xb2, 0xb2, 0xb2, 0x90, 0x90, 0x90, 0xa0, 0xf9, 
+0xde, 0x71, 0xe3, 0xc6, 0x61, 0xee, 0xdc, 0xb9, 
+0xde, 0x68, 0xa6, 0x53, 0x7c, 0xf3, 0xcd, 0x37, 
+0x18, 0x35, 0x6a, 0x94, 0xd5, 0x0e, 0x85, 0xe1, 
+0xe1, 0xe1, 0xf8, 0xe7, 0x3f, 0xff, 0x89, 0x63, 
+0xc7, 0x8e, 0x61, 0xcc, 0x98, 0x31, 0x3e, 0x6c, 
+0x5d, 0xe3, 0x21, 0xe2, 0x5f, 0x59, 0x59, 0x09, 
+0xc0, 0x3a, 0x8f, 0x46, 0x10, 0x04, 0x9f, 0x88, 
+0x7f, 0x68, 0x68, 0xa8, 0x4c, 0xc5, 0xdf, 0x3b, 
+0xd0, 0x4a, 0x80, 0x14, 0x1b, 0x18, 0xc5, 0x27, 
+0xa8, 0xa1, 0x15, 0x03, 0x5b, 0xb7, 0x6e, 0xcd, 
+0x14, 0x17, 0x17, 0xb3, 0x0d, 0xad, 0x18, 0xc8, 
+0x30, 0x0c, 0x27, 0x8a, 0xa2, 0xb2, 0x52, 0x20, 
+0x2f, 0xcb, 0xb2, 0xce, 0x64, 0x32, 0xe9, 0x00, 
+0x28, 0x2b, 0x06, 0x5a, 0x6d, 0x1e, 0x24, 0xcb, 
+0xb2, 0x3e, 0x2e, 0x2e, 0x6e, 0x6a, 0x64, 0x64, 
+0xa4, 0xd5, 0xee, 0x32, 0xa4, 0x4b, 0x63, 0xc6, 
+0x8c, 0xc1, 0xd0, 0xa1, 0x43, 0x3d, 0x78, 0xf5, 
+0x1a, 0xce, 0xa5, 0x4b, 0x97, 0x70, 0xe7, 0x9d, 
+0x77, 0x3a, 0xfd, 0xfa, 0xb6, 0x6d, 0xdb, 0xa2, 
+0xb0, 0xb0, 0xd0, 0x83, 0x2d, 0x72, 0x1e, 0x51, 
+0x14, 0x11, 0x1f, 0x1f, 0x8f, 0xa5, 0x4b, 0x97, 
+0xe2, 0xe0, 0xc1, 0x83, 0x56, 0xc7, 0xa2, 0xa3, 
+0xa3, 0x31, 0x75, 0xea, 0x54, 0x4c, 0x9e, 0x3c, 
+0x19, 0x23, 0x46, 0x8c, 0xc0, 0xf0, 0xe1, 0xc3, 
+0x35, 0x77, 0x36, 0x1c, 0x35, 0x6a, 0x14, 0xd6, 
+0xac, 0x59, 0xe3, 0x17, 0x51, 0x8d, 0x73, 0xe7, 
+0xce, 0xe1, 0xf9, 0xe7, 0x9f, 0xb7, 0xa9, 0xc3, 
+0xf0, 0xf8, 0xe3, 0x8f, 0xe3, 0xb3, 0xcf, 0x3e, 
+0x0b, 0x8a, 0x84, 0x3f, 0x83, 0xc1, 0x80, 0xe4, 
+0xe4, 0x64, 0x2b, 0xf1, 0x27, 0x98, 0xc5, 0x7f, 
+0xf5, 0x99, 0x33, 0x67, 0x2e, 0x2a, 0x23, 0x6e, 
+0xf0, 0x82, 0xf8, 0x0b, 0x82, 0x20, 0xb9, 0x43, 
+0xfc, 0x01, 0x6a, 0x00, 0x1c, 0x41, 0x0d, 0x00, 
+0x45, 0x13, 0x5f, 0x9b, 0x00, 0x93, 0xc9, 0xc4, 
+0xc9, 0xb2, 0xcc, 0x3b, 0x69, 0x02, 0x6c, 0xca, 
+0x06, 0x2b, 0x4d, 0x80, 0xfa, 0xa6, 0xe0, 0xcf, 
+0x26, 0xa0, 0x5f, 0xbf, 0x7e, 0xf8, 0xe9, 0xa7, 
+0x9f, 0x9c, 0x7a, 0x6d, 0xdf, 0xbe, 0x7d, 0x71, 
+0xf4, 0xe8, 0x51, 0x0f, 0xb7, 0xa8, 0x7e, 0xca, 
+0xcb, 0xcb, 0xf1, 0xed, 0xb7, 0xdf, 0x62, 0xd9, 
+0xb2, 0x65, 0xf5, 0x16, 0xc7, 0x21, 0x68, 0x6d, 
+0x0e, 0x15, 0x1d, 0x1d, 0x8d, 0x25, 0x4b, 0x96, 
+0xd4, 0xbb, 0xe3, 0xa1, 0xb7, 0x90, 0x24, 0x09, 
+0xcb, 0x96, 0x2d, 0xc3, 0xc2, 0x85, 0x0b, 0xad, 
+0x92, 0xe1, 0x7a, 0xf4, 0xe8, 0x81, 0xff, 0xfe, 
+0xf7, 0xbf, 0x78, 0xe4, 0x91, 0x47, 0x7c, 0xd8, 
+0x3a, 0xf7, 0xa1, 0x14, 0x7f, 0x8d, 0xa5, 0x7e, 
+0x35, 0x7b, 0xf6, 0xec, 0x59, 0xe5, 0x0d, 0xf1, 
+0x37, 0x18, 0x0c, 0x72, 0xf3, 0xe6, 0xcd, 0x25, 
+0x2a, 0xfe, 0xbe, 0x81, 0x4e, 0x01, 0x50, 0x34, 
+0x71, 0xd7, 0x74, 0x40, 0x58, 0x58, 0x98, 0xdc, 
+0x90, 0xe9, 0x00, 0x9d, 0x4e, 0x27, 0xba, 0x98, 
+0x13, 0x60, 0xd2, 0x9a, 0x0e, 0xb0, 0x97, 0x13, 
+0xa0, 0x1e, 0xa5, 0xfa, 0x0b, 0x13, 0x27, 0x4e, 
+0x74, 0xfa, 0xb5, 0xbe, 0x1e, 0x29, 0x7f, 0xf3, 
+0xcd, 0x37, 0xe8, 0xd4, 0xa9, 0x13, 0xde, 0x7a, 
+0xeb, 0x2d, 0xa7, 0xc4, 0x1f, 0x80, 0x95, 0xf8, 
+0xf3, 0x3c, 0x8f, 0x05, 0x0b, 0x16, 0xe0, 0xd4, 
+0xa9, 0x53, 0x7e, 0x21, 0xfe, 0x00, 0xf0, 0xca, 
+0x2b, 0xaf, 0xe0, 0xb5, 0xd7, 0x5e, 0xb3, 0x88, 
+0x7f, 0x78, 0x78, 0x38, 0x3e, 0xfa, 0xe8, 0x23, 
+0x1c, 0x3f, 0x7e, 0x3c, 0xe8, 0xc4, 0x5f, 0xab, 
+0xc8, 0x8f, 0x28, 0x8a, 0x35, 0x7b, 0xf7, 0xee, 
+0x6d, 0x90, 0xf8, 0x9b, 0x0d, 0x00, 0x15, 0xff, 
+0x00, 0x82, 0x46, 0x00, 0x28, 0xf5, 0xc2, 0xa8, 
+0x3e, 0x59, 0xe4, 0xff, 0x85, 0x44, 0x02, 0x0a, 
+0x0a, 0x0a, 0x18, 0x00, 0xf0, 0xd4, 0x06, 0x42, 
+0x8d, 0x8d, 0x04, 0x0c, 0x1c, 0x38, 0x70, 0x6a, 
+0x64, 0x64, 0xe4, 0xfd, 0xea, 0x1b, 0x04, 0x50, 
+0x17, 0x09, 0x78, 0xf0, 0xc1, 0x07, 0x3d, 0x78, 
+0xf5, 0x5c, 0x27, 0x33, 0x33, 0xd3, 0xe9, 0x36, 
+0x4d, 0x9f, 0x3e, 0x1d, 0x9b, 0x36, 0x6d, 0xf2, 
+0x70, 0x8b, 0x6c, 0x91, 0x24, 0x09, 0x2f, 0xbc, 
+0xf0, 0x02, 0x56, 0xac, 0x58, 0xd1, 0xe0, 0x73, 
+0x0c, 0x1b, 0x36, 0x0c, 0xcb, 0x97, 0x2f, 0x47, 
+0xef, 0xde, 0xbd, 0xdd, 0xd8, 0x32, 0xf7, 0x90, 
+0x93, 0x93, 0x83, 0x13, 0x27, 0x4e, 0x20, 0x24, 
+0x24, 0x04, 0xc3, 0x87, 0x0f, 0x77, 0x69, 0x5a, 
+0xc6, 0xdf, 0x51, 0x8a, 0xbf, 0x1a, 0x51, 0x14, 
+0x6b, 0xf6, 0xec, 0xd9, 0xb3, 0xea, 0xf4, 0xe9, 
+0xd3, 0x0d, 0x12, 0x7f, 0x8e, 0xe3, 0x4c, 0xce, 
+0x88, 0xbf, 0x28, 0x8a, 0x92, 0x20, 0x08, 0x12, 
+0x15, 0x7f, 0xdf, 0x43, 0x0d, 0x00, 0xc5, 0x21, 
+0x81, 0x6e, 0x02, 0x06, 0x0d, 0x1a, 0x64, 0x37, 
+0x27, 0x60, 0xf4, 0xe8, 0xd1, 0x7e, 0x65, 0x02, 
+0x6a, 0x6a, 0x6a, 0xd0, 0xb2, 0x65, 0x4b, 0xbb, 
+0x05, 0x67, 0x08, 0x3c, 0xcf, 0x63, 0xe3, 0xc6, 
+0x8d, 0x78, 0xec, 0xb1, 0xc7, 0xdc, 0xde, 0x86, 
+0x6b, 0xd7, 0xae, 0xe1, 0xad, 0xb7, 0xde, 0x42, 
+0x68, 0x68, 0x28, 0x96, 0x2f, 0x5f, 0x8e, 0x90, 
+0x90, 0x10, 0xab, 0xe3, 0x29, 0x29, 0x29, 0x18, 
+0x3d, 0x7a, 0x74, 0x83, 0xce, 0xdd, 0xae, 0x5d, 
+0x3b, 0x2c, 0x5e, 0xbc, 0x18, 0x7f, 0xf8, 0xc3, 
+0x1f, 0xdc, 0xd1, 0x54, 0x8a, 0x0b, 0x18, 0x0c, 
+0x06, 0xa4, 0xa6, 0xa6, 0xe2, 0xe6, 0xcd, 0x9b, 
+0x56, 0xcf, 0x33, 0x75, 0xeb, 0xfc, 0x6b, 0xf6, 
+0xee, 0xdd, 0xbb, 0xfa, 0x97, 0x5f, 0x7e, 0xb9, 
+0xe0, 0x6e, 0xf1, 0x17, 0x45, 0x51, 0x62, 0x18, 
+0x46, 0xa4, 0xe2, 0xef, 0x7f, 0xd0, 0x29, 0x00, 
+0x8a, 0xcb, 0xa8, 0x3f, 0x74, 0xe4, 0x83, 0xe9, 
+0x68, 0x17, 0x41, 0x77, 0x4e, 0x07, 0x98, 0xb3, 
+0x92, 0x9d, 0x9a, 0x0e, 0xc8, 0xc9, 0xc9, 0xd9, 
+0x5a, 0x52, 0x52, 0x92, 0x4b, 0xda, 0xae, 0x6c, 
+0x7f, 0x72, 0x72, 0x32, 0x32, 0x33, 0x33, 0xbd, 
+0x72, 0xdd, 0x9c, 0x21, 0x34, 0x34, 0xd4, 0xe1, 
+0xa8, 0x98, 0xe7, 0x79, 0xac, 0x5b, 0xb7, 0xce, 
+0x23, 0xe2, 0x7f, 0xe1, 0xc2, 0x05, 0x0c, 0x1b, 
+0x36, 0x0c, 0x6b, 0xd7, 0xae, 0xc5, 0x8a, 0x15, 
+0x2b, 0x30, 0x6a, 0xd4, 0x28, 0x1b, 0xc1, 0xf8, 
+0xee, 0xbb, 0xef, 0x5c, 0x3e, 0x2f, 0xcb, 0xb2, 
+0x78, 0xe9, 0xa5, 0x97, 0xf0, 0xcb, 0x2f, 0xbf, 
+0x50, 0xf1, 0xf7, 0x01, 0x35, 0x35, 0x35, 0x36, 
+0xe2, 0x4f, 0x3e, 0x0b, 0x54, 0xfc, 0x9b, 0x2e, 
+0xd4, 0x00, 0x50, 0x1c, 0xa2, 0xf5, 0xc1, 0x62, 
+0x18, 0xc6, 0x26, 0x1f, 0x00, 0xf0, 0x9e, 0x09, 
+0x80, 0xb9, 0xe0, 0x48, 0x43, 0x4c, 0x80, 0xb2, 
+0x0f, 0x24, 0x27, 0xc0, 0x9f, 0x4c, 0x40, 0x5c, 
+0x5c, 0x9c, 0xdd, 0x63, 0x1c, 0xc7, 0x61, 0xcd, 
+0x9a, 0x35, 0x98, 0x31, 0x63, 0x86, 0xdb, 0x7f, 
+0xef, 0xa9, 0x53, 0xa7, 0x30, 0x7c, 0xf8, 0x70, 
+0x9c, 0x3d, 0x7b, 0xd6, 0xf2, 0x5c, 0x66, 0x66, 
+0x26, 0x66, 0xce, 0x9c, 0x69, 0xb5, 0x94, 0x6f, 
+0xf3, 0xe6, 0xcd, 0x4e, 0x9f, 0x93, 0xe7, 0x79, 
+0x4c, 0x9c, 0x38, 0x11, 0x87, 0x0f, 0x1f, 0xc6, 
+0xb2, 0x65, 0xcb, 0x10, 0x11, 0x11, 0xe1, 0xd6, 
+0x36, 0x53, 0x1c, 0x53, 0x53, 0x53, 0x83, 0x94, 
+0x94, 0x14, 0x1b, 0xf1, 0x07, 0x40, 0xc5, 0xbf, 
+0x89, 0x43, 0x0d, 0x00, 0xc5, 0x29, 0x82, 0xc5, 
+0x04, 0x14, 0x17, 0x17, 0x5b, 0x22, 0x01, 0x4a, 
+0xfc, 0xc9, 0x04, 0x0c, 0x1c, 0x38, 0x50, 0xf3, 
+0x79, 0x22, 0xfe, 0x33, 0x67, 0xce, 0x74, 0xfb, 
+0xef, 0xdc, 0xb2, 0x65, 0x0b, 0x06, 0x0e, 0x1c, 
+0x88, 0x8b, 0x17, 0x2f, 0xda, 0x1c, 0xdb, 0xb3, 
+0x67, 0x0f, 0xfe, 0xfc, 0xe7, 0x3f, 0x5b, 0x7e, 
+0xb6, 0xb7, 0x1b, 0x9e, 0x92, 0x6f, 0xbf, 0xfd, 
+0x16, 0x27, 0x4f, 0x9e, 0xc4, 0xf5, 0xeb, 0xd7, 
+0x91, 0x90, 0x90, 0x80, 0xfb, 0xee, 0xbb, 0xcf, 
+0xad, 0xed, 0xa5, 0x38, 0x87, 0x5a, 0xfc, 0x95, 
+0x11, 0x30, 0xb3, 0xf8, 0xff, 0x8f, 0x8a, 0x7f, 
+0xd3, 0x85, 0x1a, 0x00, 0x8a, 0xd3, 0xf8, 0xab, 
+0x09, 0x70, 0x65, 0x75, 0x80, 0x39, 0x12, 0x90, 
+0xa7, 0xee, 0x03, 0xc3, 0x30, 0x48, 0x49, 0x49, 
+0x71, 0xaa, 0xfc, 0xae, 0xa7, 0x19, 0x32, 0x64, 
+0x88, 0xcd, 0x73, 0x1c, 0xc7, 0xe1, 0xfb, 0xef, 
+0xbf, 0x77, 0x7b, 0xb6, 0xbc, 0x28, 0x8a, 0xf8, 
+0xeb, 0x5f, 0xff, 0x8a, 0xc7, 0x1f, 0x7f, 0xdc, 
+0xb2, 0x1e, 0x5c, 0x8b, 0xa5, 0x4b, 0x97, 0xe2, 
+0xab, 0xaf, 0xbe, 0x72, 0xfa, 0xbc, 0x31, 0x31, 
+0x31, 0xb8, 0xe7, 0x9e, 0x7b, 0x10, 0x19, 0x19, 
+0xe9, 0x8e, 0x66, 0x52, 0x1a, 0x80, 0x52, 0xfc, 
+0xd5, 0x53, 0x5f, 0x0a, 0xf1, 0x3f, 0x4f, 0xc5, 
+0xbf, 0xe9, 0x42, 0x0d, 0x00, 0xc5, 0x25, 0xfc, 
+0xd1, 0x04, 0x30, 0x2e, 0x2e, 0x11, 0xcc, 0xce, 
+0xce, 0x8e, 0x2f, 0x2e, 0x2e, 0xce, 0x23, 0x6d, 
+0x57, 0x92, 0x9c, 0x9c, 0xec, 0x73, 0x13, 0x70, 
+0xcf, 0x3d, 0xf7, 0xe0, 0x9e, 0x7b, 0xee, 0xb1, 
+0xfc, 0x1c, 0x13, 0x13, 0x83, 0xed, 0xdb, 0xb7, 
+0x63, 0xf6, 0xec, 0xd9, 0x6e, 0xfd, 0x3d, 0x45, 
+0x45, 0x45, 0x78, 0xe4, 0x91, 0x47, 0xf0, 0xf1, 
+0xc7, 0x1f, 0x3b, 0xf5, 0xfa, 0x97, 0x5f, 0x7e, 
+0x19, 0xa9, 0xa9, 0xa9, 0x4e, 0xbd, 0x96, 0xe7, 
+0xf9, 0xc6, 0x34, 0x8d, 0xd2, 0x48, 0xd4, 0xe2, 
+0xaf, 0x44, 0x10, 0x84, 0x9a, 0xc4, 0xc4, 0xc4, 
+0x06, 0x8b, 0x3f, 0xc3, 0x30, 0x76, 0x97, 0xfa, 
+0x51, 0xf1, 0x0f, 0x2c, 0xe8, 0x2a, 0x00, 0x4a, 
+0x83, 0x50, 0xaf, 0x0c, 0x00, 0xea, 0x56, 0x07, 
+0xa8, 0x0b, 0x05, 0x01, 0xfe, 0xbb, 0x3a, 0xe0, 
+0x81, 0x07, 0x1e, 0x98, 0x16, 0x15, 0x15, 0x35, 
+0x40, 0xd1, 0x27, 0x4b, 0x5f, 0x1e, 0x7e, 0xf8, 
+0x61, 0x3c, 0xf0, 0xc0, 0x03, 0x9e, 0xba, 0x7c, 
+0x0e, 0xb9, 0x78, 0xf1, 0x22, 0xde, 0x7d, 0xf7, 
+0x5d, 0x74, 0xeb, 0xd6, 0xcd, 0x92, 0x91, 0xef, 
+0x4e, 0xae, 0x5c, 0xb9, 0x82, 0xc1, 0x83, 0x07, 
+0xe3, 0xf2, 0xe5, 0xcb, 0x2e, 0xbd, 0xaf, 0x75, 
+0xeb, 0xd6, 0x28, 0x2b, 0x2b, 0x73, 0xf8, 0xba, 
+0x83, 0x07, 0x0f, 0xfa, 0xd5, 0xea, 0x8a, 0xa6, 
+0x84, 0x56, 0xc2, 0x1f, 0x41, 0x14, 0xc5, 0xda, 
+0xbd, 0x7b, 0xf7, 0xae, 0x3e, 0x75, 0xea, 0x94, 
+0x45, 0xfc, 0x49, 0x99, 0x5f, 0x67, 0xc5, 0x9f, 
+0x31, 0xaf, 0xf7, 0xf7, 0xa5, 0xf8, 0x03, 0xd4, 
+0x00, 0xb8, 0x03, 0x6a, 0x00, 0x28, 0x0d, 0x26, 
+0x98, 0x4c, 0x80, 0xba, 0x2b, 0x0c, 0xc3, 0xe0, 
+0xe1, 0x87, 0x1f, 0x0e, 0xf8, 0x5d, 0xde, 0xec, 
+0x91, 0x9c, 0x9c, 0xec, 0xd1, 0x3a, 0xf6, 0x59, 
+0x59, 0x59, 0x41, 0x7b, 0xed, 0xfc, 0x19, 0x2a, 
+0xfe, 0x14, 0x57, 0xa0, 0x53, 0x00, 0x94, 0x06, 
+0xe3, 0x2f, 0xd3, 0x01, 0x2e, 0x6c, 0x20, 0x64, 
+0x33, 0x1d, 0x90, 0x95, 0x95, 0x15, 0xaf, 0x95, 
+0x13, 0x00, 0xd4, 0xad, 0x77, 0xcf, 0xce, 0xce, 
+0xf6, 0xd4, 0xe5, 0xf3, 0x29, 0x6d, 0xda, 0xb4, 
+0xf1, 0xe8, 0xf9, 0xd5, 0xb5, 0x03, 0x28, 0x9e, 
+0xa7, 0xa6, 0xa6, 0x06, 0xfb, 0xf6, 0xed, 0xd3, 
+0x5c, 0xe7, 0x2f, 0x8a, 0x62, 0x6d, 0x62, 0x62, 
+0xe2, 0xff, 0xa8, 0xf8, 0x53, 0x94, 0x50, 0x03, 
+0x40, 0x69, 0x14, 0xae, 0x9a, 0x00, 0x00, 0x70, 
+0xb7, 0x09, 0x70, 0x71, 0x17, 0x41, 0x1b, 0x13, 
+0x90, 0x99, 0x99, 0x19, 0x5f, 0x5c, 0x5c, 0x9c, 
+0xa7, 0x4e, 0x94, 0x02, 0x80, 0xd4, 0xd4, 0x54, 
+0xe4, 0xe4, 0xe4, 0x78, 0xe8, 0xea, 0xf9, 0x8e, 
+0xd6, 0xad, 0x5b, 0x7b, 0xf4, 0xfc, 0xee, 0x9e, 
+0xb2, 0xa0, 0xd4, 0x4f, 0x6d, 0x6d, 0x2d, 0xf6, 
+0xed, 0xdb, 0x87, 0x8a, 0x8a, 0x0a, 0xcb, 0x73, 
+0xe4, 0xff, 0x59, 0x10, 0x84, 0xda, 0xc4, 0xc4, 
+0xc4, 0xff, 0x9d, 0x3c, 0x79, 0xf2, 0x9c, 0x5a, 
+0xfc, 0x99, 0xdb, 0x3b, 0x6b, 0x52, 0xf1, 0x6f, 
+0x82, 0x50, 0x03, 0x40, 0x69, 0x34, 0xae, 0x98, 
+0x00, 0xf2, 0x81, 0xf7, 0xb6, 0x09, 0xe0, 0x79, 
+0xde, 0x29, 0x13, 0xa0, 0x6c, 0xbf, 0x32, 0x12, 
+0x10, 0x6c, 0x26, 0xc0, 0xd3, 0x11, 0x00, 0x6a, 
+0x00, 0xbc, 0x47, 0x6d, 0x6d, 0x2d, 0x52, 0x53, 
+0x53, 0x6d, 0xc4, 0x1f, 0x00, 0x11, 0xff, 0xef, 
+0xec, 0x89, 0x3f, 0xcf, 0xf3, 0x46, 0x2a, 0xfe, 
+0x4d, 0x17, 0x6a, 0x00, 0x28, 0x6e, 0xc1, 0xdf, 
+0x4d, 0x80, 0xf9, 0x66, 0x57, 0xaf, 0x09, 0xc8, 
+0xc8, 0xc8, 0xb0, 0x44, 0x02, 0xd4, 0x04, 0x5b, 
+0x24, 0xa0, 0x65, 0xcb, 0x96, 0x1e, 0xcd, 0xd4, 
+0xa7, 0x53, 0x00, 0xde, 0x41, 0x3d, 0xf2, 0x57, 
+0x1a, 0x57, 0x73, 0xd8, 0xff, 0xbb, 0x93, 0x27, 
+0x4f, 0xfe, 0xd6, 0x58, 0xf1, 0x87, 0xf9, 0x73, 
+0x46, 0xc5, 0x3f, 0xb8, 0xa0, 0x06, 0x80, 0xe2, 
+0x36, 0x82, 0xc9, 0x04, 0x28, 0xdb, 0x4f, 0x6e, 
+0x48, 0xc1, 0x64, 0x02, 0x18, 0x86, 0x41, 0xfb, 
+0xf6, 0xed, 0x3d, 0x76, 0x7e, 0x1a, 0x01, 0xf0, 
+0x3c, 0x44, 0xfc, 0xcb, 0xcb, 0xcb, 0x01, 0x58, 
+0x0b, 0xa7, 0x39, 0xe1, 0xcf, 0x6d, 0xe2, 0x6f, 
+0xfe, 0x6c, 0x51, 0xf1, 0x0f, 0x32, 0xa8, 0x01, 
+0xa0, 0xb8, 0x95, 0x60, 0x30, 0x01, 0x07, 0x0f, 
+0x1e, 0x8c, 0x2f, 0x2e, 0x2e, 0xce, 0xd7, 0xba, 
+0x19, 0xed, 0xdb, 0xb7, 0x0f, 0x87, 0x0e, 0x1d, 
+0xf2, 0xc8, 0xb5, 0xf3, 0x36, 0xd1, 0xd1, 0xd1, 
+0x1e, 0x3b, 0x37, 0x35, 0x00, 0x9e, 0x45, 0x29, 
+0xfe, 0xea, 0xdc, 0x15, 0x57, 0x47, 0xfe, 0x3a, 
+0x9d, 0x8e, 0x8a, 0x7f, 0x13, 0x85, 0x1a, 0x00, 
+0x8a, 0x57, 0xf0, 0x37, 0x13, 0x00, 0x07, 0x89, 
+0x81, 0x07, 0x0f, 0x1e, 0xdc, 0x52, 0x5c, 0x5c, 
+0x9c, 0xaf, 0x6c, 0xbf, 0x32, 0x12, 0x10, 0x0c, 
+0x26, 0xa0, 0x63, 0xc7, 0x8e, 0x1e, 0x39, 0x6f, 
+0x8b, 0x16, 0x2d, 0x10, 0x1e, 0x1e, 0xee, 0x91, 
+0x73, 0x53, 0xac, 0xc3, 0xfe, 0x6a, 0xd1, 0x24, 
+0xe2, 0xff, 0xf3, 0xcf, 0x3f, 0x3b, 0x2d, 0xfe, 
+0xe6, 0xe3, 0x54, 0xfc, 0x9b, 0x20, 0xd4, 0x00, 
+0x50, 0xdc, 0x8e, 0xbd, 0x0f, 0xae, 0x3f, 0x99, 
+0x00, 0x67, 0x12, 0x03, 0x0f, 0x1c, 0x38, 0xb0, 
+0x25, 0x98, 0x23, 0x01, 0x9e, 0x88, 0x00, 0x3c, 
+0xfa, 0xe8, 0xa3, 0x3e, 0xbf, 0x2e, 0x46, 0xa3, 
+0x11, 0x27, 0x4f, 0x9e, 0x44, 0x56, 0x56, 0x16, 
+0x76, 0xef, 0xde, 0x8d, 0x75, 0xeb, 0xd6, 0xe1, 
+0xdb, 0x6f, 0xbf, 0xc5, 0xb9, 0x73, 0xe7, 0x7c, 
+0xda, 0x2e, 0x77, 0xa0, 0x95, 0xed, 0x4f, 0x90, 
+0x24, 0xc9, 0x98, 0x94, 0x94, 0xf4, 0xbd, 0xb3, 
+0xe2, 0xcf, 0xb2, 0x2c, 0x15, 0xff, 0x26, 0x0e, 
+0x35, 0x00, 0x14, 0x8f, 0x10, 0x08, 0x26, 0xc0, 
+0x99, 0xe9, 0x80, 0x03, 0x07, 0x0e, 0x6c, 0x29, 
+0x2a, 0x2a, 0xd2, 0x8c, 0x04, 0x04, 0xba, 0x09, 
+0x70, 0x67, 0x04, 0xa0, 0x67, 0xcf, 0x9e, 0xd8, 
+0xb3, 0x67, 0x0f, 0x76, 0xee, 0xdc, 0x69, 0x55, 
+0xc6, 0xd8, 0x9b, 0x5c, 0xbb, 0x76, 0x0d, 0xef, 
+0xbe, 0xfb, 0x2e, 0x3a, 0x77, 0xee, 0x8c, 0x9e, 
+0x3d, 0x7b, 0x62, 0xc8, 0x90, 0x21, 0x78, 0xf4, 
+0xd1, 0x47, 0x31, 0x77, 0xee, 0x5c, 0x54, 0x56, 
+0x56, 0x22, 0x26, 0x26, 0xc6, 0x27, 0xed, 0x72, 
+0x17, 0xb5, 0xb5, 0xb5, 0x48, 0x4b, 0x4b, 0xb3, 
+0x11, 0x7f, 0x86, 0x61, 0x20, 0x49, 0x92, 0x31, 
+0x31, 0x31, 0xf1, 0xbb, 0x82, 0x82, 0x82, 0xb3, 
+0x74, 0xce, 0x9f, 0xe2, 0x2c, 0xd4, 0x00, 0x50, 
+0x3c, 0x46, 0x30, 0x99, 0x00, 0xad, 0x48, 0x00, 
+0xc3, 0x30, 0x48, 0x4b, 0x4b, 0xc3, 0xe1, 0xc3, 
+0x87, 0x3d, 0x72, 0xfd, 0x3c, 0x8d, 0xb3, 0x11, 
+0x00, 0xbd, 0x5e, 0x6f, 0xf7, 0x58, 0x64, 0x64, 
+0x24, 0x96, 0x2f, 0x5f, 0x8e, 0x63, 0xc7, 0x8e, 
+0x61, 0xec, 0xd8, 0xb1, 0xee, 0x6a, 0x9a, 0x4b, 
+0xfc, 0xf2, 0xcb, 0x2f, 0x98, 0x33, 0x67, 0x0e, 
+0xba, 0x74, 0xe9, 0x82, 0x0f, 0x3e, 0xf8, 0x00, 
+0x85, 0x85, 0x85, 0x96, 0x63, 0xf7, 0xde, 0x7b, 
+0x2f, 0xb2, 0xb3, 0xb3, 0xb1, 0x60, 0xc1, 0x02, 
+0x4d, 0xb1, 0x09, 0x14, 0x8c, 0x46, 0x23, 0xd2, 
+0xd2, 0xd2, 0x2c, 0x09, 0x7f, 0x04, 0xa6, 0xae, 
+0xc8, 0x8f, 0x4b, 0xe2, 0x4f, 0xe7, 0xfc, 0x29, 
+0x04, 0x6a, 0x00, 0x28, 0x1e, 0xc5, 0x1b, 0x26, 
+0x20, 0x3c, 0x3c, 0x5c, 0xf2, 0xb4, 0x09, 0xd8, 
+0xbf, 0x7f, 0xbf, 0x4d, 0x24, 0x80, 0xb0, 0x6f, 
+0xdf, 0xbe, 0x80, 0x34, 0x01, 0xce, 0x46, 0x00, 
+0x3e, 0xf8, 0xe0, 0x03, 0x44, 0x45, 0x45, 0x59, 
+0x3d, 0xa7, 0xd3, 0xe9, 0xb0, 0x60, 0xc1, 0x02, 
+0xfc, 0xfa, 0xeb, 0xaf, 0x98, 0x3f, 0x7f, 0x3e, 
+0x38, 0x8e, 0xf3, 0x44, 0x13, 0x1d, 0x92, 0x96, 
+0x96, 0x86, 0xc1, 0x83, 0x07, 0x63, 0xfd, 0xfa, 
+0xf5, 0x30, 0x99, 0x4c, 0x56, 0xc7, 0xe6, 0xcd, 
+0x9b, 0x87, 0xdc, 0xdc, 0x5c, 0xf4, 0xeb, 0xd7, 
+0xcf, 0x27, 0x6d, 0x73, 0x17, 0x5a, 0xe2, 0x4f, 
+0x22, 0x51, 0x0d, 0x11, 0x7f, 0x1a, 0xf6, 0xa7, 
+0x10, 0xa8, 0x01, 0xa0, 0x78, 0x1c, 0x4f, 0x9b, 
+0x00, 0x51, 0x14, 0x25, 0x57, 0x4c, 0x80, 0xe2, 
+0xc6, 0xe7, 0xb2, 0x09, 0xa8, 0x2f, 0x12, 0x90, 
+0x9b, 0x9b, 0xeb, 0x91, 0xeb, 0xe7, 0x29, 0x9c, 
+0x35, 0x00, 0xad, 0x5b, 0xb7, 0x46, 0x4a, 0x4a, 
+0x0a, 0x62, 0x63, 0x63, 0x01, 0x00, 0x93, 0x26, 
+0x4d, 0xc2, 0x89, 0x13, 0x27, 0xf0, 0xe9, 0xa7, 
+0x9f, 0x22, 0x22, 0x22, 0xc2, 0x93, 0x4d, 0xac, 
+0x97, 0x35, 0x6b, 0xd6, 0x60, 0xec, 0xd8, 0xb1, 
+0x36, 0xa3, 0xe2, 0xf0, 0xf0, 0x70, 0xc4, 0xc7, 
+0xc7, 0xe3, 0xcb, 0x2f, 0xbf, 0x0c, 0xf8, 0x64, 
+0x44, 0x22, 0xfe, 0x64, 0x03, 0x26, 0xe5, 0x14, 
+0x14, 0x15, 0x7f, 0x4a, 0x63, 0xa1, 0x06, 0x80, 
+0xe2, 0x15, 0x1a, 0x6b, 0x02, 0x0a, 0x0a, 0x0a, 
+0xe0, 0x2e, 0x13, 0xa0, 0xba, 0x01, 0xba, 0x64, 
+0x02, 0xd2, 0xd3, 0xd3, 0x2d, 0x91, 0x00, 0xe5, 
+0xcd, 0x18, 0xa8, 0x8b, 0x04, 0x04, 0x92, 0x09, 
+0x70, 0x76, 0x0a, 0xe0, 0xca, 0x95, 0x2b, 0xe8, 
+0xd3, 0xa7, 0x0f, 0xf2, 0xf3, 0xf3, 0x71, 0xe8, 
+0xd0, 0x21, 0x6c, 0xdf, 0xbe, 0x1d, 0x3d, 0x7a, 
+0xf4, 0xf0, 0x70, 0xeb, 0xea, 0x67, 0xe9, 0xd2, 
+0xa5, 0x78, 0xea, 0xa9, 0xa7, 0x60, 0x34, 0x1a, 
+0x6d, 0x8e, 0xcd, 0x9c, 0x39, 0x13, 0x53, 0xa7, 
+0x4e, 0xf5, 0x41, 0xab, 0xdc, 0x8b, 0x96, 0xf8, 
+0x13, 0x44, 0x51, 0x34, 0x26, 0x25, 0x25, 0x7d, 
+0x4f, 0xc5, 0x9f, 0xd2, 0x18, 0xa8, 0x01, 0xa0, 
+0x78, 0x8d, 0xc6, 0x98, 0x80, 0xd6, 0xad, 0x5b, 
+0xcb, 0xfe, 0x64, 0x02, 0x94, 0x4b, 0x04, 0x95, 
+0xfd, 0x08, 0xa4, 0x48, 0x40, 0xbb, 0x76, 0xed, 
+0x9c, 0x0a, 0xdd, 0x5f, 0xbd, 0x7a, 0x15, 0x40, 
+0x5d, 0x2e, 0x40, 0x5c, 0x5c, 0x9c, 0xa7, 0x9b, 
+0xe5, 0x90, 0xeb, 0xd7, 0xaf, 0xe3, 0x9d, 0x77, 
+0xde, 0xb1, 0x7b, 0x7c, 0xc2, 0x84, 0x09, 0x5e, 
+0x6c, 0x8d, 0x67, 0x50, 0x8a, 0xbf, 0xda, 0x68, 
+0x12, 0xf1, 0x3f, 0x71, 0xe2, 0xc4, 0xaf, 0xce, 
+0x8a, 0xbf, 0x5a, 0xf8, 0xa9, 0xf8, 0x53, 0x00, 
+0x6a, 0x00, 0x28, 0x5e, 0x26, 0x58, 0x4c, 0x40, 
+0x5a, 0x5a, 0x9a, 0xdd, 0x48, 0x40, 0x5a, 0x5a, 
+0x1a, 0xf2, 0xf2, 0xac, 0x36, 0x18, 0xf4, 0x4b, 
+0x58, 0x96, 0x75, 0xaa, 0x1a, 0xe0, 0xd9, 0xb3, 
+0x67, 0xbd, 0xd0, 0x1a, 0xe7, 0x59, 0xb4, 0x68, 
+0x11, 0x0c, 0x06, 0x83, 0xe6, 0x31, 0xbd, 0x5e, 
+0x8f, 0x47, 0x1e, 0x79, 0xc4, 0xcb, 0x2d, 0x72, 
+0x2f, 0x26, 0x93, 0xc9, 0x4a, 0xfc, 0x95, 0x88, 
+0xa2, 0x68, 0x4c, 0x4e, 0x4e, 0x76, 0x59, 0xfc, 
+0xd5, 0xa3, 0x7f, 0x2a, 0xfe, 0x14, 0x80, 0x1a, 
+0x00, 0x8a, 0x0f, 0x08, 0x26, 0x13, 0x50, 0x5c, 
+0x5c, 0x7c, 0x44, 0xab, 0x1f, 0x81, 0x62, 0x02, 
+0x9c, 0xc9, 0x03, 0x38, 0x73, 0xe6, 0x8c, 0x17, 
+0x5a, 0xe2, 0x1c, 0x97, 0x2f, 0x5f, 0xc6, 0x57, 
+0x5f, 0x7d, 0x65, 0xf7, 0xf8, 0xf0, 0xe1, 0xc3, 
+0xd1, 0xa2, 0x45, 0x0b, 0x2f, 0xb6, 0xc8, 0xbd, 
+0x10, 0xf1, 0x27, 0x15, 0xfe, 0x94, 0x48, 0x92, 
+0x64, 0x4c, 0x4e, 0x4e, 0xfe, 0xfe, 0xf8, 0xf1, 
+0xe3, 0x54, 0xfc, 0x29, 0x6e, 0x81, 0x1a, 0x00, 
+0x8a, 0x4f, 0x08, 0x16, 0x13, 0xb0, 0x6f, 0xdf, 
+0xbe, 0xcd, 0x45, 0x45, 0x45, 0x47, 0x48, 0xdb, 
+0x03, 0x2d, 0x12, 0xe0, 0x4c, 0x1e, 0xc0, 0xe5, 
+0xcb, 0x97, 0xed, 0x8e, 0xb8, 0xbd, 0xcd, 0x27, 
+0x9f, 0x7c, 0x82, 0xda, 0xda, 0x5a, 0xbb, 0xc7, 
+0x27, 0x4e, 0x9c, 0xe8, 0xc5, 0xd6, 0xb8, 0x17, 
+0x93, 0xc9, 0x84, 0xf4, 0xf4, 0x74, 0xcb, 0x9c, 
+0x3f, 0x81, 0x31, 0xaf, 0xf3, 0x4f, 0x4a, 0x4a, 
+0x5a, 0x43, 0xc5, 0x9f, 0xe2, 0x4e, 0xa8, 0x01, 
+0xa0, 0xf8, 0x8c, 0x60, 0x32, 0x01, 0xf6, 0x22, 
+0x01, 0xe9, 0xe9, 0xe9, 0x7e, 0x6d, 0x02, 0x9c, 
+0x89, 0x00, 0xc8, 0xb2, 0x8c, 0x5f, 0x7f, 0xfd, 
+0xd5, 0x0b, 0xad, 0x71, 0x4c, 0x7c, 0x7c, 0x7c, 
+0xbd, 0xc7, 0x03, 0x75, 0xfe, 0x9f, 0x88, 0x7f, 
+0x69, 0x69, 0xa9, 0xd5, 0xf3, 0x4c, 0xdd, 0x52, 
+0x3f, 0x93, 0x59, 0xfc, 0xcf, 0x50, 0xf1, 0xa7, 
+0xb8, 0x13, 0x6a, 0x00, 0x28, 0x3e, 0x25, 0x58, 
+0x4c, 0x40, 0x6a, 0x6a, 0xaa, 0xdd, 0x48, 0x40, 
+0x7a, 0x7a, 0x3a, 0xf2, 0xf3, 0x6d, 0x72, 0x06, 
+0xfd, 0x02, 0x67, 0x97, 0x02, 0xda, 0x9b, 0x06, 
+0xa8, 0x6f, 0x34, 0xee, 0x6e, 0x4e, 0x9c, 0x38, 
+0x81, 0x8b, 0x17, 0x2f, 0xda, 0x3d, 0xde, 0xa7, 
+0x4f, 0x1f, 0x74, 0xef, 0xde, 0xdd, 0x6b, 0xed, 
+0x71, 0x17, 0x5a, 0xe2, 0x4f, 0xfe, 0x87, 0x44, 
+0x51, 0x34, 0x99, 0xc3, 0xfe, 0x6e, 0x11, 0xff, 
+0xb0, 0xb0, 0x30, 0x2a, 0xfe, 0x14, 0x0b, 0xd4, 
+0x00, 0x50, 0x7c, 0x4e, 0x30, 0x99, 0x00, 0x75, 
+0x24, 0x80, 0xdc, 0xc8, 0xfd, 0xd5, 0x04, 0x44, 
+0x46, 0x46, 0x3a, 0xf5, 0xba, 0x77, 0xdf, 0x7d, 
+0x17, 0x5f, 0x7c, 0xf1, 0x85, 0x65, 0x2a, 0xa0, 
+0xa2, 0xa2, 0x02, 0x3b, 0x76, 0xec, 0xf0, 0xea, 
+0xd4, 0xc0, 0xce, 0x9d, 0x3b, 0xeb, 0x3d, 0xfe, 
+0xcc, 0x33, 0xcf, 0x78, 0xa7, 0x21, 0x6e, 0xc4, 
+0x9e, 0xf8, 0x03, 0x80, 0x28, 0x8a, 0xa6, 0x94, 
+0x94, 0x94, 0x35, 0xc7, 0x8e, 0x1d, 0x73, 0x4a, 
+0xfc, 0x89, 0xe8, 0xd7, 0x27, 0xfe, 0x00, 0xa8, 
+0xf8, 0x53, 0x2c, 0x50, 0x03, 0x40, 0xf1, 0x0b, 
+0x82, 0xc5, 0x04, 0xa4, 0xa4, 0xa4, 0x58, 0x45, 
+0x02, 0x94, 0xa4, 0xa7, 0xa7, 0xe3, 0xc8, 0x11, 
+0x9b, 0x99, 0x02, 0x9f, 0xe2, 0xac, 0x01, 0x28, 
+0x28, 0x28, 0xc0, 0xfc, 0xf9, 0xf3, 0xd1, 0xa5, 
+0x4b, 0x17, 0x3c, 0xf6, 0xd8, 0x63, 0xf8, 0xf8, 
+0xe3, 0x8f, 0x31, 0x76, 0xec, 0x58, 0x8f, 0x14, 
+0x02, 0x92, 0x24, 0x09, 0x07, 0x0f, 0x1e, 0xc4, 
+0x5b, 0x6f, 0xbd, 0x85, 0xc1, 0x83, 0x07, 0xe3, 
+0xeb, 0xaf, 0xbf, 0x06, 0x00, 0xec, 0xda, 0xb5, 
+0xcb, 0xee, 0x7b, 0x74, 0x3a, 0x1d, 0x9e, 0x7c, 
+0xf2, 0x49, 0xb7, 0xb7, 0xc5, 0x93, 0x98, 0x4c, 
+0x26, 0xec, 0xdf, 0xbf, 0xdf, 0x22, 0xfe, 0xca, 
+0xc8, 0x91, 0x24, 0x49, 0xa6, 0x94, 0x94, 0x94, 
+0x35, 0x3f, 0xfd, 0xf4, 0xd3, 0x69, 0x67, 0xc5, 
+0x9f, 0xe7, 0x79, 0x2a, 0xfe, 0x14, 0x97, 0xe0, 
+0x7d, 0xdd, 0x00, 0x0a, 0x85, 0x20, 0xcb, 0xb2, 
+0xcc, 0x68, 0xdc, 0x41, 0x18, 0x86, 0x81, 0x2c, 
+0xcb, 0xf2, 0x3f, 0xfe, 0xf1, 0x0f, 0x06, 0xa8, 
+0xbb, 0xf1, 0x14, 0x14, 0x14, 0x30, 0x05, 0x05, 
+0x05, 0x72, 0x6c, 0x6c, 0x2c, 0xa3, 0xb8, 0x31, 
+0x31, 0xe4, 0xa6, 0x54, 0x59, 0x59, 0x29, 0x85, 
+0x85, 0x85, 0xb1, 0x95, 0x95, 0x95, 0x68, 0xd5, 
+0xaa, 0x95, 0x44, 0x36, 0x50, 0x09, 0x0f, 0x0f, 
+0x47, 0x75, 0x75, 0x35, 0x00, 0xa0, 0x59, 0xb3, 
+0x66, 0xa8, 0xaa, 0xaa, 0xb2, 0xfa, 0x5d, 0x2c, 
+0xcb, 0x22, 0x24, 0x24, 0xa4, 0xde, 0xd0, 0x36, 
+0xcf, 0xf3, 0x10, 0x04, 0x01, 0x92, 0x24, 0x81, 
+0xe3, 0x38, 0x88, 0xa2, 0x68, 0xf9, 0x0e, 0x00, 
+0x29, 0x29, 0x29, 0x9b, 0x47, 0x8f, 0x1e, 0x8d, 
+0xb6, 0x6d, 0xdb, 0xf6, 0x57, 0xf6, 0x01, 0xa8, 
+0x33, 0x01, 0x00, 0xd0, 0xbf, 0x7f, 0x7f, 0x8d, 
+0x33, 0x7b, 0x1f, 0x67, 0x0d, 0x00, 0x50, 0xb7, 
+0xc4, 0xae, 0xb6, 0xb6, 0x16, 0x93, 0x26, 0x4d, 
+0xc2, 0xf8, 0xf1, 0xe3, 0x51, 0x52, 0x52, 0x82, 
+0x0e, 0x1d, 0x3a, 0xb8, 0xa5, 0x1d, 0xd5, 0xd5, 
+0xd5, 0x48, 0x4a, 0x4a, 0xc2, 0xb6, 0x6d, 0xdb, 
+0x90, 0x90, 0x90, 0x80, 0xe2, 0xe2, 0x62, 0xcb, 
+0xb1, 0xbc, 0xbc, 0x3c, 0xb4, 0x6c, 0xd9, 0x12, 
+0x99, 0x99, 0x99, 0x76, 0xdf, 0xff, 0xe8, 0xa3, 
+0x8f, 0xa2, 0x6d, 0xdb, 0xb6, 0x6e, 0x69, 0x8b, 
+0x37, 0x20, 0xe2, 0x5f, 0x52, 0x52, 0xa2, 0x95, 
+0xed, 0x6f, 0x4a, 0x4e, 0x4e, 0xa6, 0xe2, 0x4f, 
+0xf1, 0x38, 0x0c, 0xfd, 0xfb, 0x50, 0xfc, 0x0d, 
+0x2d, 0x13, 0x00, 0xd4, 0x25, 0xa3, 0x11, 0x13, 
+0x00, 0xd4, 0x09, 0x3e, 0x00, 0xc4, 0xc6, 0xc6, 
+0x32, 0x00, 0x70, 0xf5, 0xea, 0x55, 0xa6, 0xac, 
+0xac, 0x8c, 0x89, 0x8d, 0x8d, 0x45, 0x49, 0x49, 
+0x09, 0x53, 0x59, 0x59, 0xc9, 0xe8, 0xf5, 0x7a, 
+0xd6, 0x60, 0x30, 0x30, 0x2d, 0x5a, 0xb4, 0x60, 
+0x2a, 0x2a, 0x2a, 0x58, 0x9d, 0x4e, 0xc7, 0x72, 
+0x1c, 0xc7, 0x56, 0x57, 0x57, 0xb3, 0x3c, 0xcf, 
+0xb3, 0x1c, 0xc7, 0xb1, 0x55, 0x55, 0x55, 0x1c, 
+0x00, 0xab, 0x2f, 0x49, 0x92, 0xf8, 0xda, 0xda, 
+0x5a, 0x5e, 0x96, 0x65, 0xe5, 0x97, 0x4e, 0xf1, 
+0x5d, 0x27, 0x08, 0x82, 0x4e, 0x92, 0x24, 0xbd, 
+0x2c, 0xcb, 0x3a, 0x51, 0x14, 0x95, 0xdf, 0xf5, 
+0xb2, 0x2c, 0xeb, 0x47, 0x8f, 0x1e, 0xfd, 0x78, 
+0xdb, 0xb6, 0x6d, 0xfb, 0xab, 0xbb, 0xc3, 0x30, 
+0x0c, 0x86, 0x0f, 0x1f, 0xee, 0x17, 0x26, 0xe0, 
+0xfc, 0xf9, 0xf3, 0xe8, 0xda, 0xb5, 0x6b, 0xbd, 
+0xaf, 0x61, 0x59, 0x16, 0x1c, 0xc7, 0xa1, 0x7d, 
+0xfb, 0xf6, 0x58, 0xbd, 0x7a, 0x35, 0xca, 0xcb, 
+0xcb, 0x71, 0xff, 0xfd, 0xf7, 0xa3, 0x4b, 0x97, 
+0x2e, 0x8d, 0xfe, 0xfd, 0x57, 0xae, 0x5c, 0xc1, 
+0x82, 0x05, 0x0b, 0x1c, 0x4e, 0x27, 0x98, 0x4d, 
+0xa0, 0xdd, 0xe3, 0x5b, 0xb7, 0x6e, 0xc5, 0x94, 
+0x29, 0x53, 0x1a, 0xdd, 0x1e, 0x6f, 0xe0, 0x48, 
+0xfc, 0x53, 0x52, 0x52, 0xd6, 0x1e, 0x3d, 0x7a, 
+0xf4, 0x17, 0x8e, 0xe3, 0x8c, 0x00, 0x94, 0x11, 
+0xa6, 0x06, 0xcd, 0xf9, 0x83, 0x8a, 0x3f, 0xc5, 
+0x0e, 0xd4, 0x00, 0x50, 0xfc, 0x92, 0x60, 0x32, 
+0x01, 0xed, 0xda, 0xb5, 0xb3, 0x89, 0x04, 0x00, 
+0xf0, 0x1b, 0x13, 0xd0, 0xae, 0x5d, 0x3b, 0x14, 
+0x15, 0x15, 0x69, 0x1e, 0x63, 0x59, 0x16, 0xb2, 
+0x2c, 0x63, 0xc8, 0x90, 0x21, 0x98, 0x32, 0x65, 
+0x0a, 0xc2, 0xc3, 0xc3, 0x31, 0x6f, 0xde, 0x3c, 
+0xf0, 0x7c, 0xe3, 0x83, 0x87, 0x19, 0x19, 0x19, 
+0x98, 0x32, 0x65, 0x0a, 0x4a, 0x4a, 0x4a, 0x1a, 
+0x75, 0x9e, 0xb6, 0x6d, 0xdb, 0xe2, 0xca, 0x95, 
+0x2b, 0xd0, 0xe9, 0x74, 0x8d, 0x6e, 0x93, 0xa7, 
+0x11, 0x04, 0x41, 0x33, 0xdb, 0x1f, 0xa8, 0x5f, 
+0xfc, 0x79, 0x9e, 0xb7, 0x44, 0x00, 0xa8, 0xf8, 
+0x53, 0xdc, 0x05, 0xcd, 0x01, 0xa0, 0xf8, 0x25, 
+0xc1, 0x92, 0x13, 0x90, 0x9c, 0x9c, 0xbc, 0xb9, 
+0xb0, 0xb0, 0xf0, 0x88, 0x72, 0x7e, 0x97, 0x70, 
+0xe0, 0xc0, 0x01, 0xbf, 0xc8, 0x09, 0x18, 0x38, 
+0x70, 0xa0, 0xdd, 0x63, 0x92, 0x24, 0xa1, 0x5f, 
+0xbf, 0x7e, 0x18, 0x39, 0x72, 0x24, 0xc6, 0x8e, 
+0x1d, 0x8b, 0x97, 0x5e, 0x7a, 0xc9, 0x2d, 0xe2, 
+0x0f, 0xd4, 0x55, 0xf4, 0x6b, 0xac, 0xf8, 0x03, 
+0xc0, 0x9f, 0xff, 0xfc, 0xe7, 0x80, 0x17, 0x7f, 
+0x59, 0x96, 0x85, 0xd4, 0xd4, 0x54, 0xbb, 0x23, 
+0x7f, 0x2a, 0xfe, 0x14, 0x4f, 0x40, 0x23, 0x00, 
+0x14, 0xbf, 0x26, 0x58, 0x22, 0x01, 0x63, 0xc6, 
+0x8c, 0xb1, 0x1b, 0x09, 0x18, 0x36, 0x6c, 0x98, 
+0x4f, 0x23, 0x01, 0x49, 0x49, 0x49, 0xf8, 0xee, 
+0xbb, 0xef, 0x90, 0x9a, 0x9a, 0x6a, 0xa9, 0xfb, 
+0x4f, 0x78, 0xe4, 0x91, 0x47, 0xf0, 0xfe, 0xfb, 
+0xef, 0x63, 0xd0, 0xa0, 0x41, 0x6e, 0xfd, 0x9d, 
+0x45, 0x45, 0x45, 0x88, 0x8e, 0x8e, 0x86, 0x20, 
+0x08, 0x8d, 0x3a, 0xcf, 0xa4, 0x49, 0x93, 0xb0, 
+0x65, 0xcb, 0x16, 0xb7, 0x99, 0x12, 0x4f, 0x21, 
+0x08, 0x82, 0x25, 0xec, 0xaf, 0x84, 0xa9, 0x2b, 
+0xf2, 0x23, 0xa4, 0xa4, 0xa4, 0xac, 0x3d, 0x72, 
+0xe4, 0xc8, 0x29, 0x1a, 0xf6, 0xa7, 0x78, 0x13, 
+0x6a, 0x00, 0x28, 0x7e, 0x4f, 0x30, 0x99, 0x80, 
+0xf6, 0xed, 0xdb, 0xdb, 0x28, 0x3d, 0xc3, 0x30, 
+0x18, 0x36, 0x6c, 0x98, 0xcf, 0xf7, 0xad, 0xaf, 
+0xaa, 0xaa, 0xc2, 0xd2, 0xa5, 0x4b, 0xc1, 0x71, 
+0x1c, 0xee, 0xbb, 0xef, 0x3e, 0xf4, 0xef, 0xdf, 
+0x1f, 0x51, 0x51, 0x51, 0x1e, 0xf9, 0x5d, 0xdb, 
+0xb7, 0x6f, 0x6f, 0xd4, 0x9c, 0x7d, 0x48, 0x48, 
+0x08, 0x3e, 0xfe, 0xf8, 0x63, 0xbc, 0xfa, 0xea, 
+0xab, 0x6e, 0x6c, 0x95, 0x67, 0x10, 0x04, 0x01, 
+0x07, 0x0e, 0x1c, 0xb0, 0x4a, 0x6c, 0x54, 0x64, 
+0xfb, 0x53, 0xf1, 0xa7, 0xf8, 0x0c, 0x6a, 0x00, 
+0x28, 0x01, 0x41, 0xb0, 0x98, 0x80, 0x47, 0x1e, 
+0x79, 0xc4, 0x12, 0x09, 0x50, 0x77, 0x69, 0xe8, 
+0xd0, 0xa1, 0x7e, 0x91, 0x13, 0xe0, 0x0d, 0x56, 
+0xaf, 0x5e, 0x8d, 0x67, 0x9f, 0x7d, 0xb6, 0x41, 
+0xef, 0xbd, 0xe7, 0x9e, 0x7b, 0xb0, 0x61, 0xc3, 
+0x06, 0xf4, 0xed, 0xdb, 0xd7, 0xcd, 0xad, 0x72, 
+0x3f, 0x54, 0xfc, 0x29, 0xfe, 0x0c, 0xcd, 0x01, 
+0xa0, 0x04, 0x04, 0xc1, 0x92, 0x13, 0x90, 0x98, 
+0x98, 0x68, 0xc9, 0x09, 0x50, 0x93, 0x91, 0x91, 
+0x81, 0xa3, 0x47, 0x8f, 0x7a, 0xe0, 0xea, 0xf9, 
+0x1f, 0xea, 0x7a, 0xf7, 0xce, 0xf2, 0xc7, 0x3f, 
+0xfe, 0x11, 0x79, 0x79, 0x79, 0x01, 0x29, 0xfe, 
+0xca, 0x3c, 0x10, 0x49, 0x92, 0x84, 0x7d, 0xfb, 
+0xf6, 0xad, 0xd3, 0x12, 0x7f, 0x9e, 0xe7, 0x5d, 
+0x16, 0x7f, 0xbd, 0x5e, 0x2f, 0x82, 0x8a, 0x3f, 
+0xc5, 0x45, 0xa8, 0x01, 0xa0, 0x04, 0x0c, 0xc1, 
+0x64, 0x02, 0x6e, 0xdc, 0xb8, 0x71, 0x44, 0xd9, 
+0x7e, 0x72, 0x63, 0x3d, 0x78, 0xf0, 0x60, 0x93, 
+0x30, 0x01, 0xae, 0x1a, 0x80, 0xee, 0xdd, 0xbb, 
+0x63, 0xd3, 0xa6, 0x4d, 0xf8, 0xe6, 0x9b, 0x6f, 
+0x10, 0x1e, 0x1e, 0xee, 0xa1, 0x56, 0xb9, 0x0f, 
+0x2d, 0xf1, 0x27, 0x10, 0xf1, 0xcf, 0xcb, 0xcb, 
+0x3b, 0xa9, 0x25, 0xfe, 0x00, 0x4c, 0xae, 0x8a, 
+0x3f, 0xc7, 0x71, 0x02, 0x15, 0x7f, 0x8a, 0xab, 
+0x50, 0x03, 0x40, 0x09, 0x28, 0x82, 0xcd, 0x04, 
+0x34, 0xd5, 0x48, 0x80, 0x33, 0x06, 0xa0, 0x45, 
+0x8b, 0x16, 0x98, 0x35, 0x6b, 0x16, 0x52, 0x53, 
+0x53, 0x71, 0xfa, 0xf4, 0x69, 0x4c, 0x9f, 0x3e, 
+0xdd, 0x0b, 0x2d, 0x6b, 0x3c, 0x4a, 0xf1, 0x57, 
+0xaf, 0xfe, 0x90, 0x24, 0x49, 0x48, 0x4b, 0x4b, 
+0x5b, 0x97, 0x97, 0x97, 0x77, 0x92, 0x65, 0x59, 
+0x13, 0x6e, 0x8b, 0xbf, 0x89, 0x88, 0x3f, 0xf9, 
+0xbf, 0x71, 0x45, 0xfc, 0x25, 0x49, 0x92, 0xa8, 
+0xf8, 0x53, 0x5c, 0x85, 0x1a, 0x00, 0x4a, 0xc0, 
+0x11, 0x6c, 0x26, 0x40, 0xd9, 0x7e, 0x72, 0xa3, 
+0x0d, 0x76, 0x13, 0xe0, 0x8c, 0x01, 0xd8, 0xb9, 
+0x73, 0x27, 0xd6, 0xaf, 0x5f, 0x8f, 0x91, 0x23, 
+0x47, 0x6a, 0x0a, 0x90, 0x3f, 0x22, 0x08, 0x02, 
+0x0e, 0x1e, 0x3c, 0xa8, 0x59, 0xe4, 0x47, 0x96, 
+0x65, 0x21, 0x2d, 0x2d, 0x6d, 0x7d, 0x6e, 0x6e, 
+0xee, 0x49, 0x52, 0xd9, 0x4f, 0x21, 0xfe, 0x46, 
+0x34, 0x42, 0xfc, 0x61, 0x0e, 0xff, 0x53, 0xf1, 
+0xa7, 0xb8, 0x02, 0x35, 0x00, 0x94, 0x80, 0x24, 
+0x58, 0x4c, 0xc0, 0xde, 0xbd, 0x7b, 0xed, 0x46, 
+0x02, 0x32, 0x33, 0x33, 0x83, 0xd6, 0x04, 0x38, 
+0x63, 0x00, 0xda, 0xb4, 0x69, 0xe3, 0x85, 0x96, 
+0xb8, 0x0f, 0x22, 0xfe, 0xca, 0x84, 0x3f, 0x82, 
+0x2c, 0xcb, 0xa2, 0x59, 0xfc, 0x7f, 0xa6, 0xe2, 
+0x4f, 0xf1, 0x17, 0xa8, 0x01, 0xa0, 0x04, 0x2c, 
+0xc1, 0x66, 0x02, 0x94, 0xed, 0x27, 0x37, 0xde, 
+0x60, 0x35, 0x01, 0xce, 0x18, 0x00, 0x57, 0xf6, 
+0x29, 0xf0, 0x35, 0x82, 0x20, 0x20, 0x23, 0x23, 
+0xc3, 0x46, 0xfc, 0x99, 0xba, 0x12, 0xc6, 0x62, 
+0x5a, 0x5a, 0xda, 0xba, 0xc3, 0x87, 0x0f, 0xdb, 
+0x88, 0x3f, 0xc3, 0x30, 0x54, 0xfc, 0x29, 0x3e, 
+0x83, 0x1a, 0x00, 0x4a, 0x40, 0x13, 0x2c, 0x26, 
+0x60, 0xcf, 0x9e, 0x3d, 0x9b, 0x6f, 0xdc, 0xb8, 
+0x91, 0xaf, 0xbe, 0xe9, 0x32, 0x0c, 0x83, 0xac, 
+0xac, 0x2c, 0xfc, 0xf4, 0xd3, 0x4f, 0x1e, 0xba, 
+0x82, 0xde, 0xa5, 0xb6, 0xb6, 0x16, 0x3b, 0x77, 
+0xee, 0xc4, 0x6f, 0xbf, 0xfd, 0xe6, 0xf0, 0xb5, 
+0x81, 0x12, 0x01, 0x10, 0x45, 0x11, 0x19, 0x19, 
+0x19, 0x36, 0xe5, 0x94, 0x99, 0xba, 0x22, 0x3f, 
+0x62, 0x5a, 0x5a, 0xda, 0x7a, 0x2d, 0xf1, 0xe7, 
+0x79, 0xde, 0xc8, 0x71, 0x1c, 0x15, 0x7f, 0x8a, 
+0xcf, 0xa0, 0x75, 0x00, 0x28, 0x41, 0x01, 0x63, 
+0x67, 0x92, 0x38, 0xd0, 0xea, 0x04, 0x8c, 0x1b, 
+0x37, 0xee, 0xb1, 0x0e, 0x1d, 0x3a, 0xdc, 0x67, 
+0xee, 0x93, 0x55, 0x5f, 0x86, 0x0c, 0x19, 0x12, 
+0x10, 0xcb, 0xdf, 0xd4, 0x94, 0x94, 0x94, 0x20, 
+0x29, 0x29, 0x09, 0xf1, 0xf1, 0xf1, 0xd8, 0xbd, 
+0x7b, 0x37, 0x2a, 0x2b, 0x2b, 0x1d, 0xbe, 0xa7, 
+0x65, 0xcb, 0x96, 0x20, 0x3b, 0x38, 0xfa, 0x33, 
+0xa2, 0x28, 0xe2, 0xe0, 0xc1, 0x83, 0x56, 0xe2, 
+0x4f, 0xfe, 0x6e, 0x92, 0x24, 0x89, 0xe9, 0xe9, 
+0xe9, 0xeb, 0x0f, 0x1d, 0x3a, 0x54, 0xa0, 0x35, 
+0xf2, 0xa7, 0xe2, 0x4f, 0xf1, 0x35, 0xd4, 0x00, 
+0x50, 0x82, 0x86, 0x60, 0x31, 0x01, 0xe3, 0xc7, 
+0x8f, 0xb7, 0x98, 0x00, 0x45, 0xdf, 0x00, 0x00, 
+0x0f, 0x3c, 0xf0, 0x40, 0x40, 0x98, 0x80, 0x8a, 
+0x8a, 0x0a, 0x7c, 0xf0, 0xc1, 0x07, 0x48, 0x49, 
+0x49, 0xc1, 0x4f, 0x3f, 0xfd, 0x54, 0xef, 0x4e, 
+0x7e, 0x5a, 0x74, 0xeb, 0xd6, 0x0d, 0xbf, 0xfe, 
+0xfa, 0xab, 0x87, 0x5a, 0xe7, 0x1e, 0xd4, 0xe2, 
+0xaf, 0xca, 0xf6, 0xb7, 0x2b, 0xfe, 0x5a, 0x73, 
+0xfe, 0x64, 0x3b, 0x5f, 0x2a, 0xfe, 0x14, 0x6f, 
+0x42, 0x0d, 0x00, 0x25, 0xa8, 0x08, 0x36, 0x13, 
+0xa0, 0xd5, 0x9d, 0x40, 0x30, 0x01, 0x63, 0xc6, 
+0x8c, 0x41, 0x72, 0x72, 0x72, 0x83, 0xdf, 0x3f, 
+0x78, 0xf0, 0x60, 0x64, 0x65, 0x65, 0xb9, 0xb1, 
+0x45, 0xee, 0x85, 0x84, 0xfd, 0x0b, 0x0b, 0x0b, 
+0x01, 0x68, 0x8a, 0xff, 0x86, 0x43, 0x87, 0x0e, 
+0x9d, 0xb0, 0x27, 0xfe, 0x0c, 0xc3, 0x58, 0x0c, 
+0x00, 0x15, 0x7f, 0x8a, 0xaf, 0xa0, 0x39, 0x00, 
+0x94, 0xa0, 0x22, 0x58, 0x72, 0x02, 0x76, 0xef, 
+0xde, 0xbd, 0xe5, 0xc6, 0x8d, 0x1b, 0xf9, 0x5a, 
+0xfd, 0xc8, 0xce, 0xce, 0xf6, 0xfb, 0x9c, 0x00, 
+0xad, 0x1d, 0xef, 0x5c, 0xc1, 0x53, 0x7b, 0x10, 
+0xb8, 0x03, 0xa5, 0xf8, 0x2b, 0x13, 0x36, 0x81, 
+0x3a, 0xf1, 0xdf, 0xbf, 0x7f, 0x3f, 0x15, 0x7f, 
+0x4a, 0x40, 0x40, 0x0d, 0x00, 0x25, 0xe8, 0x08, 
+0x16, 0x13, 0xb0, 0x6b, 0xd7, 0xae, 0x2d, 0xd7, 
+0xae, 0x5d, 0xcb, 0x27, 0x6d, 0x57, 0xde, 0xa4, 
+0xb3, 0xb3, 0xb3, 0x71, 0xec, 0xd8, 0x31, 0x8f, 
+0x5d, 0xc3, 0xc6, 0xd2, 0xac, 0x59, 0xb3, 0x46, 
+0xbd, 0x3f, 0x36, 0x36, 0xd6, 0x4d, 0x2d, 0x71, 
+0x2f, 0x6a, 0xf1, 0x57, 0x22, 0xcb, 0xb2, 0x78, 
+0xe0, 0xc0, 0x81, 0x8d, 0x39, 0x39, 0x39, 0x54, 
+0xfc, 0x29, 0x01, 0x01, 0x35, 0x00, 0x94, 0xa0, 
+0x24, 0x50, 0x4c, 0x00, 0x14, 0x73, 0xc1, 0xf6, 
+0x22, 0x01, 0xd7, 0xaf, 0x5f, 0xb7, 0x1b, 0x09, 
+0xf0, 0x57, 0x13, 0xd0, 0xd8, 0x25, 0x7c, 0xa3, 
+0x47, 0x8f, 0x76, 0x53, 0x4b, 0xdc, 0x87, 0x32, 
+0xdb, 0x5f, 0x4b, 0xfc, 0xf7, 0xef, 0xdf, 0xbf, 
+0x31, 0x3b, 0x3b, 0xfb, 0x38, 0x15, 0x7f, 0x4a, 
+0xa0, 0x40, 0x0d, 0x00, 0x25, 0x68, 0x91, 0x15, 
+0xa8, 0x8f, 0xbd, 0xf7, 0xde, 0x7b, 0x32, 0xb9, 
+0x09, 0xc6, 0xc6, 0xc6, 0xca, 0xb1, 0xb1, 0xb1, 
+0x72, 0x41, 0x41, 0x81, 0xdc, 0xb3, 0x67, 0x4f, 
+0x99, 0x98, 0x80, 0xab, 0x57, 0xaf, 0xca, 0x8e, 
+0x4c, 0x40, 0x44, 0x44, 0x84, 0xd8, 0x18, 0x13, 
+0xa0, 0xd3, 0xe9, 0x1c, 0x9a, 0x80, 0x40, 0x8c, 
+0x04, 0x74, 0xec, 0xd8, 0xb1, 0xc1, 0xef, 0x0d, 
+0x0d, 0x0d, 0xc5, 0xd0, 0xa1, 0x43, 0xdd, 0xd8, 
+0x9a, 0xc6, 0x23, 0x8a, 0x22, 0x32, 0x33, 0x33, 
+0x35, 0x97, 0xfa, 0x01, 0x90, 0x0e, 0x1c, 0x38, 
+0xb0, 0x31, 0x3b, 0x3b, 0xdb, 0xa5, 0x91, 0xbf, 
+0xea, 0x7f, 0xc2, 0x23, 0xe2, 0xdf, 0xb3, 0x67, 
+0x4f, 0xa7, 0xc4, 0xbf, 0xbe, 0xcf, 0x0a, 0x25, 
+0x78, 0xa1, 0x06, 0x80, 0xd2, 0x24, 0x50, 0xde, 
+0xd8, 0x94, 0x37, 0x3e, 0x75, 0x34, 0x60, 0xd3, 
+0xa6, 0x4d, 0x20, 0x26, 0x00, 0x00, 0x1c, 0x99, 
+0x00, 0x83, 0xc1, 0x20, 0xbb, 0xc3, 0x04, 0x38, 
+0x33, 0x1d, 0x60, 0x2f, 0x12, 0x90, 0x93, 0x93, 
+0xe3, 0x77, 0x26, 0xa0, 0x43, 0x87, 0x0e, 0x0d, 
+0x7e, 0xef, 0x83, 0x0f, 0x3e, 0x88, 0xd0, 0xd0, 
+0x50, 0x37, 0xb6, 0xa6, 0x71, 0x10, 0xf1, 0x27, 
+0x09, 0x7f, 0x04, 0xa6, 0xae, 0xc8, 0x8f, 0xb4, 
+0x7f, 0xff, 0xfe, 0x8d, 0x59, 0x59, 0x59, 0x27, 
+0xcc, 0x7f, 0x3f, 0xa7, 0xc5, 0x5f, 0x69, 0x02, 
+0x3c, 0x25, 0xfe, 0x9b, 0x36, 0x6d, 0x72, 0x4a, 
+0xfc, 0xbd, 0x70, 0x19, 0x29, 0x7e, 0x08, 0x35, 
+0x00, 0x94, 0x26, 0x83, 0x3f, 0x9b, 0x00, 0x67, 
+0x72, 0x02, 0x76, 0xee, 0xdc, 0xb9, 0xe5, 0xda, 
+0xb5, 0x6b, 0x79, 0xa4, 0xfd, 0xca, 0x3e, 0xf8, 
+0x9b, 0x09, 0x68, 0x8c, 0x01, 0xf0, 0xa7, 0xf0, 
+0xbf, 0x96, 0xf8, 0x93, 0x6b, 0x2f, 0xcb, 0xb2, 
+0x74, 0xe0, 0xc0, 0x81, 0x8d, 0x59, 0x59, 0x59, 
+0xc7, 0xeb, 0x13, 0x7f, 0xf3, 0x54, 0x8f, 0x60, 
+0x4f, 0xfc, 0x61, 0xfe, 0x1f, 0xd1, 0xeb, 0xf5, 
+0x22, 0xc3, 0x30, 0x22, 0x15, 0x7f, 0x8a, 0xb7, 
+0xa0, 0x06, 0x80, 0xd2, 0xa4, 0x08, 0x02, 0x13, 
+0x10, 0x4f, 0x4c, 0x80, 0xb2, 0x1f, 0x0c, 0xc3, 
+0xe0, 0xd0, 0xa1, 0x43, 0x7e, 0x63, 0x02, 0xc8, 
+0x14, 0x40, 0x9f, 0x3e, 0x7d, 0x90, 0x90, 0x90, 
+0x80, 0x71, 0xe3, 0xc6, 0x39, 0xf5, 0xbe, 0xf0, 
+0xf0, 0x70, 0xcc, 0x9a, 0x35, 0xcb, 0x93, 0x4d, 
+0x73, 0x1a, 0xb5, 0xf8, 0x2b, 0x4d, 0x17, 0x11, 
+0xff, 0xcc, 0xcc, 0xcc, 0x7a, 0xc5, 0x9f, 0xfc, 
+0x2d, 0x75, 0x3a, 0x9d, 0xc9, 0x9e, 0xf8, 0xb3, 
+0x2c, 0x2b, 0x10, 0xf1, 0x87, 0xf9, 0x7f, 0x85, 
+0x8a, 0x3f, 0xc5, 0x1b, 0xd0, 0x3a, 0x00, 0x94, 
+0x26, 0x09, 0xa3, 0xb8, 0x13, 0x2a, 0x3f, 0x03, 
+0xea, 0x5a, 0x01, 0x33, 0x66, 0xcc, 0xc0, 0xcf, 
+0x3f, 0xff, 0xcc, 0x5c, 0xbd, 0x7a, 0x95, 0x01, 
+0x80, 0xe8, 0xe8, 0x68, 0xa6, 0xbe, 0x3a, 0x01, 
+0x61, 0x61, 0x61, 0x4c, 0x79, 0x79, 0x39, 0xe7, 
+0xe9, 0x3a, 0x01, 0x13, 0x26, 0x4c, 0x98, 0x76, 
+0xc7, 0x1d, 0x77, 0x0c, 0xd0, 0xea, 0xdb, 0xc0, 
+0x81, 0x03, 0xd1, 0xa7, 0x4f, 0x1f, 0x0f, 0x5d, 
+0x39, 0xe7, 0x38, 0x7d, 0xfa, 0x34, 0x72, 0x73, 
+0x73, 0x31, 0x7b, 0xf6, 0x6c, 0x30, 0x0c, 0x83, 
+0x92, 0x92, 0x12, 0x0c, 0x18, 0x30, 0x00, 0x17, 
+0x2e, 0x5c, 0xa8, 0xf7, 0x7d, 0x4b, 0x96, 0x2c, 
+0xc1, 0x1b, 0x6f, 0xbc, 0xe1, 0xa5, 0x56, 0xda, 
+0x47, 0x4b, 0xfc, 0x09, 0x66, 0xf1, 0xff, 0x21, 
+0x33, 0x33, 0xf3, 0x98, 0xa3, 0x91, 0x3f, 0x15, 
+0x7f, 0x8a, 0x3f, 0x43, 0x0d, 0x00, 0xa5, 0xc9, 
+0xe2, 0x0e, 0x13, 0xd0, 0xba, 0x75, 0x6b, 0xa6, 
+0xb8, 0xb8, 0x98, 0xf5, 0xa6, 0x09, 0x00, 0xa0, 
+0x93, 0x24, 0x29, 0x64, 0xe2, 0xc4, 0x89, 0xd3, 
+0xa2, 0xa3, 0xa3, 0x07, 0x28, 0xfa, 0x63, 0xe9, 
+0x43, 0x5c, 0x5c, 0x9c, 0xcf, 0x4d, 0x80, 0x9a, 
+0xfc, 0xfc, 0x7c, 0x2c, 0x58, 0xb0, 0x00, 0x07, 
+0x0f, 0x1e, 0x44, 0x5d, 0x94, 0xfb, 0x36, 0x0c, 
+0xc3, 0xe0, 0x95, 0x57, 0x5e, 0xc1, 0x67, 0x9f, 
+0x7d, 0x06, 0x96, 0xf5, 0x6d, 0x60, 0x52, 0x14, 
+0x45, 0x64, 0x65, 0x65, 0xe1, 0xc6, 0x8d, 0x1b, 
+0x5a, 0xd9, 0xfe, 0xd2, 0xc1, 0x83, 0x07, 0x7f, 
+0xc8, 0xc8, 0xc8, 0xa0, 0xe2, 0x4f, 0x09, 0x78, 
+0xa8, 0x01, 0xa0, 0x34, 0x69, 0x82, 0xc1, 0x04, 
+0x68, 0x45, 0x02, 0x18, 0x86, 0x41, 0x5c, 0x5c, 
+0x1c, 0x7a, 0xf7, 0xee, 0xed, 0xb9, 0x8b, 0xd7, 
+0x40, 0xae, 0x5e, 0xbd, 0x8a, 0x1f, 0x7f, 0xfc, 
+0x11, 0xfb, 0xf6, 0xed, 0x43, 0x58, 0x58, 0x18, 
+0x5a, 0xb5, 0x6a, 0x85, 0x39, 0x73, 0xe6, 0x60, 
+0xd8, 0xb0, 0x61, 0xbe, 0x6e, 0x9a, 0x45, 0xfc, 
+0xd5, 0x09, 0x7f, 0x40, 0x9d, 0xf8, 0x67, 0x64, 
+0x64, 0x6c, 0x3a, 0x78, 0xf0, 0xe0, 0x4f, 0x54, 
+0xfc, 0x29, 0xc1, 0x00, 0x35, 0x00, 0x94, 0x26, 
+0x4f, 0x80, 0x99, 0x00, 0x9d, 0x2c, 0xcb, 0x7a, 
+0xa5, 0x09, 0x98, 0x34, 0x69, 0x52, 0xbd, 0x91, 
+0x00, 0x7f, 0x34, 0x01, 0xfe, 0x48, 0x7d, 0xe2, 
+0x0f, 0x40, 0x3a, 0x78, 0xf0, 0x20, 0x15, 0x7f, 
+0x4a, 0x50, 0x41, 0x93, 0x00, 0x29, 0x4d, 0x1e, 
+0x77, 0x24, 0x06, 0x96, 0x95, 0x95, 0xc9, 0x51, 
+0x51, 0x51, 0x92, 0x17, 0x12, 0x03, 0x2d, 0xeb, 
+0xcc, 0x51, 0x57, 0x3f, 0xa0, 0x36, 0x21, 0x21, 
+0x21, 0xfe, 0xea, 0xd5, 0xab, 0x79, 0xea, 0x95, 
+0x01, 0x00, 0x90, 0x9b, 0x9b, 0x8b, 0xe3, 0xc7, 
+0x8f, 0x7b, 0xf4, 0xfa, 0x05, 0x03, 0xa2, 0x28, 
+0x22, 0x3b, 0x3b, 0x5b, 0x73, 0xa9, 0x1f, 0xa8, 
+0xf8, 0x53, 0x82, 0x14, 0x1a, 0x01, 0xa0, 0x50, 
+0xcc, 0x04, 0x43, 0x24, 0x40, 0x39, 0x1d, 0xa0, 
+0x14, 0x80, 0xfb, 0xef, 0xbf, 0x9f, 0x46, 0x02, 
+0xec, 0x20, 0x49, 0x92, 0x65, 0xce, 0x5f, 0x09, 
+0x59, 0xea, 0x97, 0x91, 0x91, 0xf1, 0xe3, 0x81, 
+0x03, 0x07, 0x8e, 0xd4, 0x57, 0xe4, 0x87, 0x08, 
+0xbf, 0x39, 0xf3, 0x9f, 0x8a, 0x3f, 0x25, 0x20, 
+0xa0, 0x11, 0x00, 0x0a, 0xc5, 0x8c, 0xbf, 0x44, 
+0x02, 0xcc, 0xa3, 0x7c, 0xbb, 0x91, 0x00, 0x96, 
+0x65, 0x8d, 0xf6, 0x22, 0x01, 0x57, 0xae, 0x5c, 
+0xd1, 0x8c, 0x04, 0xe4, 0xe5, 0xe5, 0xd1, 0x48, 
+0x80, 0x06, 0x5a, 0xe2, 0x4f, 0xae, 0x9f, 0x59, 
+0xfc, 0x37, 0x3b, 0x23, 0xfe, 0xe4, 0xcb, 0xdf, 
+0xc4, 0x9f, 0x42, 0xa9, 0x0f, 0x1a, 0x01, 0xa0, 
+0x50, 0x54, 0xf8, 0x3a, 0x12, 0x60, 0x32, 0x99, 
+0x38, 0x59, 0x96, 0x79, 0xf3, 0x28, 0x5f, 0x33, 
+0x12, 0x20, 0xcb, 0xb2, 0x4e, 0x92, 0x24, 0xbd, 
+0x56, 0x24, 0x60, 0xf2, 0xe4, 0xc9, 0x96, 0x48, 
+0x80, 0x5a, 0x0c, 0x06, 0x0c, 0x18, 0x40, 0x23, 
+0x01, 0x66, 0xec, 0x89, 0x3f, 0x50, 0x67, 0x06, 
+0xcd, 0x23, 0xff, 0x7c, 0x67, 0xc4, 0xdf, 0x1f, 
+0xc3, 0xfe, 0xa4, 0x1f, 0x1e, 0xbe, 0x8c, 0x94, 
+0x00, 0x86, 0x1a, 0x00, 0x0a, 0x45, 0x03, 0x7f, 
+0x33, 0x01, 0x00, 0x78, 0x49, 0x92, 0x74, 0xf5, 
+0x99, 0x00, 0xf3, 0x71, 0xbd, 0xd9, 0x04, 0x4c, 
+0xed, 0xd4, 0xa9, 0xd3, 0xfd, 0x1a, 0xfd, 0xc2, 
+0x80, 0x01, 0x03, 0xd0, 0xab, 0x57, 0x2f, 0xcf, 
+0x5d, 0xbc, 0x00, 0x40, 0x2d, 0xfe, 0xea, 0x90, 
+0x79, 0x66, 0x66, 0xe6, 0x8f, 0xfb, 0xf7, 0xef, 
+0xf7, 0x3b, 0xf1, 0x77, 0x65, 0x63, 0x1f, 0x2a, 
+0xfe, 0x14, 0x47, 0xd0, 0x29, 0x00, 0x0a, 0x45, 
+0x03, 0x67, 0xa6, 0x03, 0x00, 0xc0, 0xd1, 0x74, 
+0x40, 0x43, 0x2b, 0x06, 0xea, 0x74, 0x3a, 0x51, 
+0x39, 0x1d, 0x00, 0x80, 0x88, 0x8b, 0x65, 0x3a, 
+0xc0, 0x1c, 0x72, 0xb6, 0x4c, 0x07, 0x10, 0xb1, 
+0x62, 0x59, 0xb6, 0x76, 0xfb, 0xf6, 0xed, 0x5b, 
+0xaf, 0x5c, 0xb9, 0x92, 0xab, 0xec, 0x03, 0xe9, 
+0x47, 0x53, 0x9f, 0x0e, 0x90, 0x24, 0x09, 0xd9, 
+0xd9, 0xd9, 0x96, 0x75, 0xfe, 0x6a, 0xf1, 0xcf, 
+0xca, 0xca, 0xda, 0x4c, 0xc5, 0x9f, 0xd2, 0x14, 
+0xa0, 0x06, 0x80, 0x42, 0xb1, 0x83, 0x23, 0x13, 
+0x40, 0x6e, 0xc4, 0x9e, 0x2a, 0x1b, 0xec, 0xc8, 
+0x04, 0x40, 0x51, 0x6e, 0x56, 0xcb, 0x04, 0x6c, 
+0xdb, 0xb6, 0x6d, 0xeb, 0x95, 0x2b, 0x57, 0x72, 
+0xd5, 0xe2, 0xc0, 0x30, 0x0c, 0x8e, 0x1c, 0x39, 
+0xe2, 0x37, 0x65, 0x83, 0xbd, 0x09, 0x11, 0xff, 
+0xeb, 0xd7, 0xaf, 0x6b, 0x8a, 0x66, 0x56, 0x56, 
+0xd6, 0xe6, 0xf4, 0xf4, 0xf4, 0xbc, 0xc6, 0x8a, 
+0x7f, 0x68, 0x68, 0xa8, 0x5b, 0xc4, 0x9f, 0xb4, 
+0x8d, 0x8a, 0x3f, 0xc5, 0x13, 0x50, 0x03, 0x40, 
+0xa1, 0xd4, 0x83, 0xda, 0x04, 0xa8, 0x6f, 0xb6, 
+0xbe, 0x34, 0x01, 0x64, 0x2b, 0x61, 0x47, 0x26, 
+0xe0, 0xf2, 0xe5, 0xcb, 0x56, 0x91, 0x00, 0xc2, 
+0xd1, 0xa3, 0x47, 0x71, 0xe4, 0xc8, 0x11, 0xcf, 
+0x5d, 0x3c, 0x3f, 0x43, 0x3d, 0xf2, 0x57, 0x21, 
+0x67, 0x67, 0x67, 0x6f, 0x49, 0x4f, 0x4f, 0xcf, 
+0x23, 0x7b, 0x2f, 0x34, 0x46, 0xfc, 0x61, 0x16, 
+0x7c, 0x34, 0x52, 0xfc, 0xa3, 0xa3, 0xa3, 0x65, 
+0x2a, 0xfe, 0x14, 0x4f, 0x41, 0x73, 0x00, 0x28, 
+0x14, 0x07, 0x30, 0x5a, 0x6a, 0x21, 0xcb, 0x36, 
+0xf9, 0x00, 0x00, 0xe0, 0xa9, 0xbd, 0x03, 0x48, 
+0x4e, 0x00, 0xc9, 0x0b, 0x80, 0x22, 0x27, 0xc0, 
+0x64, 0x32, 0xe9, 0x00, 0xd8, 0xcd, 0x09, 0x90, 
+0x65, 0x59, 0x3f, 0x65, 0xca, 0x94, 0xa9, 0x9d, 
+0x3a, 0x75, 0x8a, 0x53, 0xf5, 0x0b, 0x00, 0xd0, 
+0xb3, 0x67, 0x4f, 0x0c, 0x18, 0xa0, 0xb9, 0xad, 
+0x40, 0xd0, 0x20, 0x49, 0x12, 0x72, 0x72, 0x72, 
+0x70, 0xfd, 0xfa, 0x75, 0xad, 0xc3, 0x72, 0x56, 
+0x56, 0xd6, 0x96, 0xb4, 0xb4, 0xb4, 0x5c, 0xb2, 
+0xaa, 0xc2, 0xde, 0xc6, 0x3e, 0x00, 0x04, 0x2a, 
+0xfe, 0x94, 0x60, 0x81, 0x1a, 0x00, 0x0a, 0xc5, 
+0x09, 0x02, 0xc9, 0x04, 0x98, 0x93, 0x04, 0xf5, 
+0x00, 0xac, 0x36, 0x10, 0x9a, 0x3c, 0x79, 0xf2, 
+0x94, 0xce, 0x9d, 0x3b, 0x0f, 0x34, 0xf7, 0xc7, 
+0xaa, 0x2f, 0xf7, 0xdc, 0x73, 0x0f, 0xe2, 0xe2, 
+0xac, 0xfc, 0x41, 0xd0, 0x60, 0x4f, 0xfc, 0xcd, 
+0x4b, 0xfd, 0xe4, 0xec, 0xec, 0xec, 0x2d, 0xfb, 
+0xf6, 0xed, 0xb3, 0x2b, 0xfe, 0xa4, 0x08, 0x93, 
+0xf9, 0x39, 0xbb, 0x5b, 0xfa, 0x52, 0xf1, 0xa7, 
+0x04, 0x1a, 0xd4, 0x00, 0x50, 0x28, 0x4e, 0x12, 
+0xe0, 0x26, 0x40, 0xa0, 0xcf, 0x09, 0x28, 0x00, 
+0x00, 0x13, 0x7d, 0x49, 0x44, 0x41, 0x54, 0x27, 
+0x49, 0x92, 0x7e, 0xd2, 0xa4, 0x49, 0x93, 0x62, 
+0x62, 0x62, 0x1e, 0x50, 0xf5, 0x0b, 0x00, 0xd0, 
+0xa3, 0x47, 0x0f, 0x0c, 0x1c, 0x38, 0xd0, 0x33, 
+0x17, 0xcf, 0x47, 0x68, 0x89, 0xbf, 0x72, 0xa9, 
+0x9f, 0x52, 0xfc, 0x95, 0xd3, 0x27, 0x8c, 0xb9, 
+0xea, 0xa2, 0xb3, 0xe2, 0xaf, 0x95, 0xf0, 0xd7, 
+0xbc, 0x79, 0x73, 0x51, 0x14, 0x45, 0x2a, 0xfe, 
+0x14, 0xbf, 0x85, 0x1a, 0x00, 0x0a, 0xc5, 0x05, 
+0x82, 0xc1, 0x04, 0x4c, 0x98, 0x30, 0x61, 0xfc, 
+0x5d, 0x77, 0xdd, 0x35, 0xcc, 0xdc, 0x1f, 0xab, 
+0xbe, 0x74, 0xeb, 0xd6, 0x0d, 0x83, 0x07, 0x0f, 
+0x0e, 0x8a, 0x62, 0x32, 0x8e, 0xc4, 0x3f, 0x27, 
+0x27, 0x67, 0x4b, 0x6a, 0x6a, 0x6a, 0x40, 0x8b, 
+0x3f, 0xe9, 0x8b, 0xe7, 0xae, 0x22, 0x25, 0x98, 
+0xa1, 0x06, 0x80, 0x42, 0x71, 0x11, 0x4f, 0x9b, 
+0x80, 0xaa, 0xaa, 0x2a, 0x56, 0x96, 0x65, 0x4e, 
+0x69, 0x02, 0x38, 0x8e, 0x63, 0x45, 0x51, 0xe4, 
+0x61, 0x36, 0x02, 0xca, 0xb2, 0xc1, 0x4a, 0x13, 
+0x00, 0x80, 0x37, 0x99, 0x4c, 0xc4, 0x00, 0xa8, 
+0xcb, 0x06, 0x93, 0xdc, 0x00, 0xfd, 0xf8, 0xf1, 
+0xe3, 0xc7, 0xfc, 0xee, 0x77, 0xbf, 0x1b, 0xa9, 
+0xea, 0x17, 0x00, 0xa0, 0x6b, 0xd7, 0xae, 0x78, 
+0xe0, 0x81, 0x07, 0x02, 0xda, 0x04, 0xa8, 0xc5, 
+0x5f, 0xd5, 0x17, 0x39, 0x2b, 0x2b, 0x2b, 0x3e, 
+0x2d, 0x2d, 0xed, 0x90, 0x22, 0x61, 0xd2, 0x22, 
+0xfe, 0x3c, 0xcf, 0x5b, 0x84, 0x9f, 0x24, 0xfc, 
+0xa9, 0x85, 0x9f, 0x8a, 0x3f, 0x25, 0x18, 0xa0, 
+0x06, 0x80, 0x42, 0x69, 0x00, 0xde, 0x36, 0x01, 
+0x1c, 0xc7, 0xb1, 0x00, 0x38, 0x7b, 0x26, 0x40, 
+0x96, 0x65, 0x5e, 0x92, 0x24, 0x9d, 0x0b, 0x26, 
+0x40, 0x37, 0x76, 0xec, 0xd8, 0x87, 0xef, 0xbe, 
+0xfb, 0xee, 0xd1, 0x5a, 0xc2, 0x12, 0x13, 0x13, 
+0x83, 0x21, 0x43, 0x86, 0x04, 0xa4, 0x09, 0x50, 
+0x8a, 0xbf, 0x9d, 0x6c, 0xff, 0xf8, 0x7d, 0xfb, 
+0xf6, 0x1d, 0x52, 0x6c, 0xb0, 0x64, 0x99, 0xeb, 
+0x37, 0xaf, 0xa4, 0x68, 0xb0, 0xf8, 0x87, 0x86, 
+0x86, 0x4a, 0x0c, 0xc3, 0x88, 0x54, 0xfc, 0x29, 
+0x81, 0x00, 0x35, 0x00, 0x14, 0x4a, 0x03, 0xf1, 
+0x57, 0x13, 0x40, 0xca, 0x06, 0x2b, 0x4c, 0x80, 
+0x52, 0xfc, 0x75, 0xa4, 0x6c, 0xb0, 0x28, 0x8a, 
+0xfa, 0xd1, 0xa3, 0x47, 0x3f, 0x14, 0x1b, 0x1b, 
+0x3b, 0x56, 0xd5, 0x2f, 0x00, 0x40, 0xe7, 0xce, 
+0x9d, 0xf1, 0xe0, 0x83, 0x0f, 0x82, 0x65, 0x03, 
+0x67, 0xb5, 0xb0, 0xc9, 0x64, 0x42, 0x76, 0x76, 
+0x36, 0x8a, 0x8b, 0x8b, 0x35, 0xc5, 0xff, 0xd0, 
+0xa1, 0x43, 0xf1, 0x29, 0x29, 0x29, 0x44, 0xfc, 
+0x8d, 0x1c, 0xc7, 0x99, 0xe0, 0xa2, 0xf8, 0xb3, 
+0x2c, 0x2b, 0x00, 0x10, 0xe9, 0xc8, 0x9f, 0x12, 
+0xe8, 0x50, 0x03, 0x40, 0xa1, 0x34, 0x02, 0x5f, 
+0x99, 0x00, 0x59, 0x96, 0x39, 0x49, 0x92, 0x78, 
+0xa3, 0xd1, 0xc8, 0xc9, 0xd6, 0x3b, 0x08, 0xda, 
+0x35, 0x01, 0x00, 0x74, 0x82, 0x20, 0x90, 0x5c, 
+0x00, 0xcb, 0x1e, 0x02, 0x23, 0x47, 0x8e, 0x1c, 
+0xda, 0xa7, 0x4f, 0x9f, 0x09, 0x5a, 0x42, 0xd3, 
+0xa9, 0x53, 0x27, 0x0c, 0x1d, 0x3a, 0x34, 0x20, 
+0x4c, 0x40, 0x4d, 0x4d, 0x0d, 0x32, 0x33, 0x33, 
+0x71, 0xf3, 0xe6, 0x4d, 0x9b, 0x63, 0x0c, 0xc3, 
+0xc8, 0xd9, 0xd9, 0xd9, 0xf1, 0xa9, 0xa9, 0xa9, 
+0x39, 0x8a, 0x22, 0x3f, 0x56, 0x73, 0xfe, 0x4a, 
+0xf1, 0x67, 0x59, 0xd6, 0x6a, 0xde, 0xdf, 0x91, 
+0xf8, 0x7b, 0x2b, 0xdb, 0x1f, 0xa0, 0xe2, 0x4f, 
+0x71, 0x1f, 0xd4, 0x00, 0x50, 0x28, 0x8d, 0xc4, 
+0x15, 0x13, 0x10, 0x1b, 0x1b, 0xcb, 0x00, 0x80, 
+0xb7, 0x4c, 0x80, 0x2a, 0x0a, 0x40, 0xa6, 0x02, 
+0xd4, 0x7b, 0x07, 0xe8, 0x86, 0x0f, 0x1f, 0xfe, 
+0x40, 0xff, 0xfe, 0xfd, 0xa7, 0xa8, 0xfa, 0x05, 
+0x00, 0xe8, 0xd8, 0xb1, 0x23, 0x86, 0x0d, 0x1b, 
+0x06, 0x8e, 0xe3, 0x3c, 0x77, 0x11, 0x1b, 0x49, 
+0x65, 0x65, 0x25, 0x32, 0x33, 0x33, 0x61, 0x30, 
+0x18, 0x6c, 0x8e, 0x31, 0x0c, 0x23, 0x1f, 0x3a, 
+0x74, 0x28, 0x3e, 0x39, 0x39, 0x39, 0x87, 0x84, 
+0xfb, 0x95, 0xeb, 0xfb, 0x95, 0x73, 0xfe, 0x30, 
+0x17, 0x5a, 0x22, 0xa3, 0x7f, 0x2a, 0xfe, 0x94, 
+0x60, 0x86, 0x1a, 0x00, 0x0a, 0xc5, 0x0d, 0xf8, 
+0xa3, 0x09, 0x20, 0x46, 0xc0, 0xbc, 0x32, 0x40, 
+0xb9, 0x9b, 0xa0, 0x9e, 0x44, 0x04, 0x14, 0xab, 
+0x03, 0x74, 0x43, 0x87, 0x0e, 0x1d, 0x34, 0x60, 
+0xc0, 0x80, 0x69, 0x5a, 0x7d, 0xe9, 0xd0, 0xa1, 
+0x03, 0x86, 0x0f, 0x1f, 0xee, 0x97, 0x26, 0xa0, 
+0xb4, 0xb4, 0x14, 0xd9, 0xd9, 0xd9, 0x30, 0x1a, 
+0x8d, 0x56, 0xcf, 0x9b, 0xd7, 0xf9, 0x8b, 0x59, 
+0x59, 0x59, 0x3f, 0xa6, 0xa5, 0xa5, 0xe5, 0x29, 
+0xb6, 0x50, 0x26, 0x15, 0x14, 0x8d, 0x64, 0x4f, 
+0x05, 0xc5, 0x97, 0xe0, 0x48, 0xfc, 0x39, 0x8e, 
+0x13, 0x24, 0x49, 0x92, 0x40, 0xc5, 0x9f, 0x12, 
+0xe0, 0x50, 0x03, 0x40, 0xa1, 0xb8, 0x09, 0x77, 
+0x99, 0x00, 0x7b, 0xbb, 0x08, 0x2a, 0x4d, 0x40, 
+0x4d, 0x4d, 0x0d, 0x0b, 0x73, 0x1e, 0x80, 0x33, 
+0x26, 0x40, 0x10, 0x04, 0x8b, 0x01, 0x20, 0x91, 
+0x00, 0x49, 0x92, 0x48, 0x2e, 0x80, 0xc5, 0x0c, 
+0x0c, 0x19, 0x32, 0x64, 0x40, 0x5c, 0x5c, 0xdc, 
+0x0c, 0xd2, 0x17, 0x65, 0x97, 0xda, 0xb5, 0x6b, 
+0x87, 0xe1, 0xc3, 0x87, 0x83, 0xe7, 0x79, 0x0f, 
+0x5e, 0x45, 0xd7, 0xb8, 0x7e, 0xfd, 0x3a, 0x0e, 
+0x1f, 0x3e, 0x0c, 0x51, 0x14, 0xad, 0x9e, 0x67, 
+0x18, 0x06, 0xa2, 0x28, 0xd6, 0x26, 0x25, 0x25, 
+0xad, 0x39, 0x72, 0xe4, 0xc8, 0x29, 0x52, 0x3e, 
+0x99, 0x14, 0xf9, 0xc1, 0xed, 0xd1, 0xbf, 0x4d, 
+0xd8, 0xdf, 0x9e, 0xf8, 0x87, 0x85, 0x85, 0x09, 
+0x00, 0x44, 0x2a, 0xfe, 0x94, 0x60, 0xc1, 0xff, 
+0x27, 0xf6, 0x28, 0x94, 0x00, 0x41, 0xeb, 0x26, 
+0xcd, 0x30, 0x8c, 0xd5, 0x0e, 0x82, 0xe4, 0x86, 
+0x4f, 0x04, 0xc0, 0xde, 0x2e, 0x82, 0x51, 0x51, 
+0x51, 0x92, 0x72, 0xef, 0x00, 0xf3, 0x7e, 0x01, 
+0x96, 0x0c, 0xf3, 0xd0, 0xd0, 0x50, 0x09, 0x8a, 
+0x10, 0x34, 0xcb, 0xb2, 0x42, 0x68, 0x68, 0xa8, 
+0x52, 0xb4, 0xac, 0xca, 0xd5, 0x9a, 0x47, 0xb5, 
+0x96, 0x2f, 0xc5, 0x3a, 0x77, 0xa3, 0x39, 0x04, 
+0x6e, 0xe4, 0x38, 0xce, 0x98, 0x99, 0x99, 0x99, 
+0x9b, 0x93, 0x93, 0xb3, 0x41, 0x96, 0x65, 0x51, 
+0x2d, 0x44, 0x85, 0x85, 0x85, 0x48, 0x4f, 0x4f, 
+0x87, 0xc9, 0x64, 0xf2, 0xe0, 0x55, 0x74, 0x9e, 
+0x0b, 0x17, 0x2e, 0x20, 0x27, 0x27, 0xc7, 0x4a, 
+0xfc, 0x19, 0xf3, 0x7e, 0x0d, 0x46, 0xa3, 0xb1, 
+0x72, 0xeb, 0xd6, 0xad, 0x5f, 0x1f, 0x39, 0x72, 
+0xe4, 0xa4, 0x79, 0x9e, 0xdf, 0xea, 0x8b, 0x65, 
+0x59, 0xa3, 0x4e, 0xa7, 0x33, 0x2a, 0xc5, 0x1f, 
+0x80, 0xe5, 0xda, 0x91, 0xbd, 0x17, 0x3c, 0x21, 
+0xfe, 0x3d, 0x7b, 0xf6, 0xa4, 0xe2, 0x4f, 0xf1, 
+0x0b, 0xa8, 0x01, 0xa0, 0x50, 0xdc, 0x88, 0xa7, 
+0x4c, 0x40, 0x55, 0x55, 0x95, 0xac, 0x34, 0x01, 
+0x44, 0x80, 0xa0, 0x30, 0x01, 0x30, 0x2f, 0x4d, 
+0x53, 0x8d, 0x5e, 0xd5, 0x75, 0xeb, 0x4d, 0x2c, 
+0xcb, 0x1a, 0x59, 0x96, 0xb5, 0x08, 0x3f, 0x73, 
+0x7b, 0xe3, 0x1b, 0x23, 0xc7, 0x71, 0xc6, 0x9c, 
+0x9c, 0x9c, 0xfc, 0xac, 0xac, 0xac, 0x75, 0xb2, 
+0x2c, 0x8b, 0xca, 0x3e, 0x30, 0x0c, 0x83, 0xe2, 
+0xe2, 0x62, 0xec, 0xdb, 0xb7, 0x0f, 0x55, 0x55, 
+0x55, 0x1e, 0xbe, 0x92, 0xf5, 0xf3, 0xcb, 0x2f, 
+0xbf, 0xe0, 0xc8, 0x91, 0x23, 0x20, 0x97, 0x9b, 
+0xb4, 0x0f, 0x00, 0xaa, 0xab, 0xab, 0x8b, 0x37, 
+0x6e, 0xdc, 0xf8, 0xf9, 0x99, 0x33, 0x67, 0xce, 
+0xab, 0xfb, 0x46, 0x04, 0x5f, 0xb9, 0x9d, 0x32, 
+0x11, 0x7f, 0xbd, 0x5e, 0x6f, 0x32, 0x5f, 0x2f, 
+0xcb, 0xc8, 0x9f, 0x65, 0x59, 0x81, 0x88, 0x3f, 
+0xb9, 0xc6, 0x8d, 0x15, 0xff, 0x4d, 0x9b, 0x36, 
+0x59, 0x89, 0x3f, 0x81, 0x8a, 0x3f, 0xc5, 0xdb, 
+0xd0, 0x29, 0x00, 0x0a, 0xc5, 0xcd, 0x68, 0x4d, 
+0x05, 0x00, 0xee, 0x99, 0x0e, 0x68, 0xd6, 0xac, 
+0x19, 0x63, 0xce, 0x03, 0x60, 0x39, 0x8e, 0x63, 
+0x65, 0x59, 0xe6, 0xd4, 0xd3, 0x01, 0x46, 0xa3, 
+0x91, 0x93, 0x24, 0x89, 0x37, 0xff, 0x6c, 0x35, 
+0x1d, 0x60, 0x4e, 0x0a, 0x54, 0xe6, 0x03, 0x58, 
+0x56, 0x08, 0x90, 0x04, 0x41, 0xf2, 0xf8, 0xbe, 
+0xfb, 0xee, 0xeb, 0x35, 0x6c, 0xd8, 0xb0, 0x27, 
+0x59, 0x96, 0xb5, 0x89, 0xf9, 0xeb, 0xf5, 0x7a, 
+0x0c, 0x1a, 0x34, 0x08, 0xd1, 0xd1, 0xd1, 0x6e, 
+0xbf, 0x7e, 0xf5, 0x21, 0xcb, 0x32, 0x8e, 0x1d, 
+0x3b, 0x86, 0x73, 0xe7, 0xce, 0x59, 0x9e, 0x53, 
+0x5e, 0xee, 0x8a, 0x8a, 0x8a, 0x4b, 0xeb, 0xd7, 
+0xaf, 0x5f, 0x59, 0x5e, 0x5e, 0x5e, 0x41, 0x46, 
+0xf6, 0xea, 0x2c, 0x7f, 0x9e, 0xe7, 0xc9, 0x68, 
+0x9f, 0xcc, 0xf5, 0x9b, 0x74, 0x3a, 0x9d, 0x45, 
+0xf4, 0x19, 0xc5, 0x3a, 0x7f, 0x00, 0x62, 0x48, 
+0x48, 0x88, 0x48, 0x22, 0x2f, 0x9e, 0x10, 0xff, 
+0xf7, 0xde, 0x7b, 0x4f, 0xa6, 0xe2, 0x4f, 0xf1, 
+0x05, 0xd4, 0x00, 0x50, 0x28, 0x1e, 0xc0, 0x1f, 
+0x4c, 0x00, 0xcc, 0xa5, 0x83, 0x55, 0x06, 0x80, 
+0x87, 0xa2, 0x6a, 0xa0, 0xd2, 0x04, 0x90, 0xdc, 
+0x00, 0x28, 0xf2, 0x02, 0xfa, 0xf5, 0xeb, 0x77, 
+0xef, 0xf0, 0xe1, 0xc3, 0x9f, 0x66, 0x59, 0x56, 
+0x67, 0xee, 0x97, 0x55, 0x7f, 0xee, 0xbe, 0xfb, 
+0x6e, 0xf4, 0xe9, 0xd3, 0xc7, 0x2b, 0x05, 0x83, 
+0x6e, 0xdd, 0xba, 0x85, 0xbc, 0xbc, 0x3c, 0x94, 
+0x95, 0x95, 0x41, 0xab, 0x2d, 0x45, 0x45, 0x45, 
+0xa7, 0xd6, 0xae, 0x5d, 0xfb, 0x7d, 0x6d, 0x6d, 
+0x6d, 0x35, 0xea, 0x36, 0xf5, 0x31, 0xa1, 0x2e, 
+0xe3, 0xdf, 0x32, 0xe7, 0x0f, 0xf3, 0x6e, 0x7e, 
+0x30, 0x67, 0xfb, 0xc3, 0x1c, 0xf6, 0xd7, 0xe9, 
+0x74, 0x82, 0x72, 0xe4, 0x0f, 0x73, 0x64, 0x85, 
+0x8a, 0x3f, 0x25, 0x98, 0xa1, 0x06, 0x80, 0x42, 
+0xf1, 0x10, 0xde, 0x34, 0x01, 0xb7, 0x6e, 0xdd, 
+0xb2, 0xac, 0x0c, 0x80, 0x86, 0x09, 0x60, 0x18, 
+0xc6, 0x62, 0x06, 0x4c, 0x26, 0x13, 0x89, 0x00, 
+0xf0, 0xe6, 0x11, 0x3f, 0xaf, 0x36, 0x01, 0xe6, 
+0x95, 0x01, 0x3c, 0x00, 0x5d, 0xef, 0xde, 0xbd, 
+0xef, 0x7e, 0xe8, 0xa1, 0x87, 0xe6, 0x72, 0x1c, 
+0xa7, 0x57, 0xf5, 0x0f, 0x00, 0x10, 0x15, 0x15, 
+0x85, 0xc1, 0x83, 0x07, 0x23, 0x2c, 0x2c, 0xcc, 
+0xfd, 0x17, 0xd1, 0xcc, 0xb9, 0x73, 0xe7, 0x70, 
+0xe2, 0xc4, 0x09, 0x88, 0xa2, 0xa8, 0x69, 0x36, 
+0x2e, 0x5d, 0xba, 0x74, 0x78, 0xfd, 0xfa, 0xf5, 
+0x9b, 0x00, 0xd4, 0x02, 0x10, 0x14, 0x99, 0xfe, 
+0xc4, 0x08, 0x90, 0x91, 0xbe, 0x45, 0xf4, 0x15, 
+0x11, 0x00, 0x41, 0xaf, 0xd7, 0x5b, 0x8d, 0xfa, 
+0xa1, 0x10, 0x7f, 0x65, 0xde, 0x05, 0x15, 0x7f, 
+0x4a, 0x30, 0x41, 0x0d, 0x00, 0x85, 0xe2, 0x41, 
+0x3c, 0x6d, 0x02, 0x6e, 0xdd, 0xba, 0xc5, 0x92, 
+0xcd, 0x83, 0x6a, 0x6a, 0x6a, 0x58, 0x59, 0x96, 
+0x39, 0x00, 0x1c, 0xcb, 0xb2, 0x6c, 0x6d, 0x6d, 
+0xad, 0x65, 0x2a, 0x00, 0xe6, 0xe9, 0x00, 0xf3, 
+0x66, 0x42, 0xbc, 0x2c, 0xcb, 0x56, 0x91, 0x00, 
+0xe5, 0x52, 0x41, 0xd4, 0x45, 0x00, 0x78, 0x28, 
+0xa6, 0x05, 0xba, 0x75, 0xeb, 0xd6, 0x79, 0xcc, 
+0x98, 0x31, 0xcf, 0x84, 0x86, 0x86, 0x46, 0x9a, 
+0xfb, 0x65, 0xd5, 0x9f, 0x90, 0x90, 0x10, 0x0c, 
+0x1a, 0x34, 0x08, 0xed, 0xdb, 0xb7, 0x77, 0xeb, 
+0xf5, 0xab, 0xaa, 0xaa, 0xc2, 0xb1, 0x63, 0xc7, 
+0x70, 0xe3, 0xc6, 0x0d, 0x68, 0xfd, 0x5e, 0x00, 
+0x38, 0x73, 0xe6, 0x4c, 0xf2, 0xe6, 0xcd, 0x9b, 
+0x77, 0x99, 0x47, 0xf0, 0x16, 0xc1, 0xc7, 0xed, 
+0xd1, 0xbf, 0xa0, 0x1c, 0xfd, 0x9b, 0x43, 0xfc, 
+0x82, 0x52, 0xfc, 0x95, 0xc2, 0x0f, 0x40, 0x94, 
+0x65, 0x59, 0x0c, 0x0b, 0x0b, 0x6b, 0xb4, 0xf8, 
+0x6b, 0x65, 0xfb, 0x03, 0x54, 0xfc, 0x29, 0xfe, 
+0x01, 0x35, 0x00, 0x14, 0x8a, 0x87, 0x71, 0xd5, 
+0x04, 0xd4, 0x57, 0x31, 0xd0, 0x59, 0x13, 0x40, 
+0xa6, 0x06, 0x6a, 0x6b, 0x6b, 0x2d, 0x51, 0x00, 
+0x98, 0x4d, 0x80, 0x72, 0x37, 0x41, 0x12, 0x09, 
+0x80, 0xca, 0x04, 0x10, 0x03, 0x40, 0x22, 0x01, 
+0xb2, 0x2c, 0xeb, 0x9a, 0x35, 0x6b, 0xd6, 0x7c, 
+0xda, 0xb4, 0x69, 0xb3, 0xa3, 0xa2, 0xa2, 0x7a, 
+0xab, 0xfa, 0x67, 0x79, 0x7c, 0xe7, 0x9d, 0x77, 
+0xa2, 0x57, 0xaf, 0x5e, 0x08, 0x0f, 0x0f, 0x6f, 
+0xd4, 0x35, 0x33, 0x99, 0x4c, 0x38, 0x75, 0xea, 
+0x14, 0xce, 0x9d, 0x3b, 0x07, 0x49, 0x92, 0xec, 
+0x4d, 0x31, 0x88, 0x47, 0x8f, 0x1e, 0xdd, 0xba, 
+0x77, 0xef, 0xde, 0x03, 0xb8, 0x3d, 0xea, 0x17, 
+0x94, 0x23, 0x7e, 0x8e, 0xe3, 0x6c, 0xc4, 0x5f, 
+0xf9, 0xc5, 0xf3, 0xbc, 0x65, 0xd4, 0xaf, 0x34, 
+0x01, 0x7a, 0xbd, 0xde, 0x6a, 0xc5, 0x05, 0xcb, 
+0xb2, 0xa2, 0xc1, 0x60, 0x90, 0xe9, 0xc8, 0x9f, 
+0x12, 0x4c, 0x50, 0x03, 0x40, 0xa1, 0x78, 0x01, 
+0x4f, 0x99, 0x80, 0x9a, 0x9a, 0x1a, 0x86, 0xe7, 
+0x79, 0xd6, 0x19, 0x13, 0x00, 0x85, 0x11, 0x30, 
+0x1a, 0x8d, 0x96, 0xbc, 0x00, 0xd4, 0x89, 0x3e, 
+0x4f, 0x6a, 0x05, 0x00, 0xe0, 0x61, 0x9e, 0x16, 
+0x00, 0x60, 0xd9, 0x6d, 0x10, 0xe6, 0xc8, 0xc0, 
+0xd8, 0xb1, 0x63, 0x47, 0xde, 0x7b, 0xef, 0xbd, 
+0x13, 0x19, 0x86, 0xe1, 0xb4, 0xba, 0xc5, 0xf3, 
+0x3c, 0xba, 0x77, 0xef, 0x8e, 0x6e, 0xdd, 0xba, 
+0xb9, 0x3c, 0x2d, 0x60, 0x30, 0x18, 0x70, 0xf1, 
+0xe2, 0x45, 0x9c, 0x3d, 0x7b, 0xd6, 0x52, 0xd8, 
+0x47, 0xeb, 0x77, 0xd4, 0xd4, 0xd4, 0x14, 0x25, 
+0x27, 0x27, 0xaf, 0xf9, 0xf9, 0xe7, 0x9f, 0xcf, 
+0xc1, 0x5a, 0xfc, 0x05, 0xd4, 0x85, 0xfe, 0x05, 
+0x32, 0xfa, 0xc7, 0xed, 0x79, 0x7e, 0x32, 0xfa, 
+0x17, 0x89, 0x01, 0xd0, 0xe9, 0x74, 0xa2, 0x7a, 
+0xf4, 0x1f, 0x16, 0x16, 0x26, 0x4a, 0x92, 0x24, 
+0x89, 0xa2, 0x28, 0xb5, 0x68, 0xd1, 0xc2, 0x52, 
+0xdf, 0x5f, 0xaf, 0xd7, 0xcb, 0x54, 0xfc, 0x29, 
+0xc1, 0x04, 0x35, 0x00, 0x14, 0x8a, 0x97, 0xf0, 
+0xb6, 0x09, 0x20, 0x06, 0xc0, 0x60, 0x30, 0x70, 
+0x0c, 0xc3, 0x58, 0x4c, 0x00, 0xcc, 0x9b, 0x08, 
+0x31, 0x0c, 0x63, 0xb3, 0x4a, 0x40, 0x10, 0x04, 
+0x62, 0x08, 0x74, 0xa2, 0x28, 0x12, 0x83, 0x40, 
+0x22, 0x02, 0xbc, 0xd9, 0x40, 0xf0, 0xb1, 0xb1, 
+0xb1, 0xdd, 0x46, 0x8c, 0x18, 0xf1, 0x8c, 0x5e, 
+0xaf, 0x8f, 0x50, 0xf4, 0x4f, 0xdd, 0x5f, 0x74, 
+0xe8, 0xd0, 0x01, 0x31, 0x31, 0x31, 0x88, 0x8c, 
+0x8c, 0x44, 0x48, 0x48, 0x88, 0xe6, 0x75, 0xa9, 
+0xae, 0xae, 0x46, 0x69, 0x69, 0x29, 0x2e, 0x5e, 
+0xbc, 0x88, 0xa2, 0xa2, 0x22, 0xab, 0xa5, 0x7d, 
+0x1a, 0xd7, 0x10, 0x97, 0x2e, 0x5d, 0xca, 0x88, 
+0x8f, 0x8f, 0x8f, 0xaf, 0xad, 0xad, 0x35, 0xa0, 
+0x2e, 0x99, 0x4f, 0x80, 0x59, 0xe8, 0x95, 0x23, 
+0x7e, 0x9e, 0xe7, 0x2d, 0xe2, 0xaf, 0x2e, 0xf0, 
+0x03, 0xb3, 0x09, 0xd0, 0xeb, 0xf5, 0x16, 0xe1, 
+0x87, 0x42, 0xfc, 0x19, 0x86, 0x11, 0xc3, 0xc2, 
+0xc2, 0x24, 0x2a, 0xfe, 0x94, 0x60, 0x86, 0x1a, 
+0x00, 0x0a, 0xc5, 0x8b, 0xb8, 0xdb, 0x04, 0x54, 
+0x55, 0x55, 0x31, 0x3c, 0xcf, 0xb3, 0x8e, 0x4c, 
+0x80, 0xd1, 0x68, 0xb4, 0x24, 0x08, 0x02, 0xe0, 
+0x6a, 0x6a, 0x6a, 0x2c, 0x06, 0x00, 0x8a, 0xe5, 
+0x82, 0xe6, 0x28, 0x00, 0x8f, 0xdb, 0x51, 0x00, 
+0x2b, 0x43, 0x60, 0x7e, 0xcc, 0x01, 0xe0, 0x23, 
+0x22, 0x22, 0x5a, 0x4d, 0x9a, 0x34, 0xe9, 0xe9, 
+0x36, 0x6d, 0xda, 0xdc, 0xa3, 0xd1, 0x4f, 0x9b, 
+0x3e, 0x86, 0x87, 0x87, 0xa3, 0x65, 0xcb, 0x96, 
+0x96, 0x8d, 0x85, 0x4c, 0x26, 0x13, 0x6e, 0xde, 
+0xbc, 0x69, 0x53, 0x58, 0xc8, 0x9e, 0xf0, 0x1b, 
+0x8d, 0xc6, 0x8a, 0xac, 0xac, 0xac, 0x0d, 0x87, 
+0x0e, 0x1d, 0x3a, 0x2e, 0xcb, 0xb2, 0xc0, 0xb2, 
+0xac, 0x88, 0xdb, 0xa3, 0x7e, 0xcb, 0x77, 0xa5, 
+0x01, 0x60, 0x18, 0x46, 0x90, 0x65, 0x59, 0x54, 
+0x2e, 0xf3, 0x33, 0xd7, 0x37, 0xb0, 0xda, 0xce, 
+0x57, 0x14, 0x45, 0x09, 0x75, 0x89, 0x7f, 0x12, 
+0xc3, 0x30, 0xa2, 0x20, 0x08, 0x52, 0x78, 0x78, 
+0x38, 0x89, 0x02, 0x48, 0x55, 0x55, 0x55, 0x72, 
+0x9b, 0x36, 0x6d, 0xa4, 0x9b, 0x37, 0x6f, 0xca, 
+0x54, 0xfc, 0x29, 0xc1, 0x02, 0x35, 0x00, 0x14, 
+0x8a, 0x97, 0xf1, 0xb4, 0x09, 0x30, 0x1a, 0x8d, 
+0x0c, 0xc7, 0x71, 0x6c, 0x75, 0x75, 0x35, 0x0b, 
+0x80, 0xe3, 0x38, 0x8e, 0x65, 0x59, 0x96, 0x35, 
+0x18, 0x0c, 0x56, 0x51, 0x00, 0xb2, 0x4a, 0x40, 
+0x69, 0x02, 0xc8, 0x32, 0x41, 0x62, 0x02, 0x44, 
+0x51, 0xe4, 0xa0, 0x32, 0x03, 0x64, 0x1a, 0x41, 
+0x92, 0x24, 0x9e, 0x65, 0x59, 0xfe, 0xe1, 0x87, 
+0x1f, 0x1e, 0x71, 0xf7, 0xdd, 0x77, 0x3f, 0xca, 
+0xf3, 0x7c, 0x73, 0x73, 0xff, 0xb4, 0xfa, 0xdc, 
+0xe0, 0xe7, 0x24, 0x49, 0xaa, 0x39, 0x7b, 0xf6, 
+0x6c, 0x72, 0x62, 0x62, 0x62, 0x4a, 0x75, 0x75, 
+0x75, 0x8d, 0xb9, 0x40, 0x8f, 0x45, 0xfc, 0xcd, 
+0x82, 0x6e, 0x19, 0xf1, 0x43, 0x21, 0xfe, 0xc4, 
+0x00, 0x90, 0x2c, 0x7f, 0x32, 0xfa, 0x87, 0x6a, 
+0x53, 0x1f, 0x73, 0x91, 0x25, 0x91, 0x24, 0xfa, 
+0x35, 0x44, 0xfc, 0x69, 0x79, 0x5f, 0x4a, 0xa0, 
+0x41, 0x0d, 0x00, 0x85, 0xe2, 0x03, 0xbc, 0x69, 
+0x02, 0x78, 0x9e, 0x27, 0xb9, 0x00, 0x16, 0x43, 
+0xa0, 0xb5, 0x4c, 0x10, 0x8a, 0xdc, 0x00, 0x12, 
+0x1d, 0x10, 0x04, 0x81, 0x1c, 0xb3, 0x18, 0x00, 
+0x86, 0x61, 0x38, 0x73, 0x34, 0x80, 0x93, 0x24, 
+0x89, 0x97, 0x24, 0x89, 0x6b, 0xd5, 0xaa, 0x55, 
+0xb3, 0x87, 0x1f, 0x7e, 0x78, 0x7c, 0xe7, 0xce, 
+0x9d, 0x1f, 0x22, 0x35, 0x03, 0xcc, 0xfd, 0xd4, 
+0xea, 0xbb, 0x53, 0xcf, 0x01, 0x10, 0xaf, 0x5c, 
+0xb9, 0x92, 0x91, 0x9c, 0x9c, 0xbc, 0xb3, 0xa4, 
+0xa4, 0xa4, 0x42, 0x96, 0x65, 0x91, 0x65, 0x59, 
+0x51, 0x96, 0x65, 0x91, 0x08, 0x3f, 0x11, 0x7d, 
+0xe5, 0x63, 0x86, 0x61, 0x04, 0x8e, 0xe3, 0x2c, 
+0x62, 0xaf, 0x4e, 0xf6, 0x83, 0x62, 0x99, 0x1f, 
+0x29, 0xed, 0xab, 0xcc, 0xf2, 0x77, 0x45, 0xfc, 
+0x49, 0x15, 0x47, 0x57, 0xc5, 0xdf, 0xfc, 0xb7, 
+0xa6, 0x37, 0x5f, 0x8a, 0x4f, 0xa1, 0x06, 0x80, 
+0x42, 0xf1, 0x11, 0x9e, 0x30, 0x01, 0x2d, 0x5b, 
+0xb6, 0x64, 0x4a, 0x4b, 0x4b, 0x59, 0x2d, 0x13, 
+0xa0, 0xb5, 0x93, 0x20, 0x31, 0x01, 0xe4, 0x4b, 
+0x10, 0x04, 0xab, 0x88, 0x80, 0x28, 0x8a, 0x1c, 
+0x31, 0x04, 0xc4, 0x0c, 0x98, 0x97, 0x13, 0x72, 
+0xa8, 0x8b, 0x06, 0x10, 0x13, 0xc1, 0xc9, 0xb2, 
+0xcc, 0x76, 0xea, 0xd4, 0x29, 0x2a, 0x2e, 0x2e, 
+0x6e, 0xc4, 0x1d, 0x77, 0xdc, 0x31, 0x58, 0xa7, 
+0xd3, 0x45, 0xa8, 0xfb, 0xe6, 0x8c, 0xf8, 0xd7, 
+0xd4, 0xd4, 0x14, 0x5d, 0xb9, 0x72, 0x25, 0x3b, 
+0x37, 0x37, 0x37, 0xeb, 0xf2, 0xe5, 0xcb, 0xc5, 
+0x0c, 0xc3, 0x48, 0x44, 0xf8, 0x15, 0x06, 0x80, 
+0x44, 0x00, 0x44, 0x58, 0x1b, 0x00, 0x11, 0x75, 
+0x51, 0x00, 0x51, 0xa7, 0xd3, 0x59, 0x04, 0x5f, 
+0xa7, 0xd3, 0x59, 0xc2, 0xfe, 0x92, 0x24, 0x49, 
+0x64, 0x99, 0x1f, 0x99, 0xe3, 0x6f, 0xde, 0xbc, 
+0x39, 0x89, 0x02, 0x48, 0x06, 0x83, 0x41, 0x36, 
+0x99, 0x4c, 0x52, 0xab, 0x56, 0xad, 0xa4, 0xca, 
+0xca, 0x4a, 0x39, 0x2c, 0x2c, 0x8c, 0x8a, 0x3f, 
+0x25, 0x28, 0xa1, 0x06, 0x80, 0x42, 0xf1, 0x21, 
+0xce, 0x9a, 0x00, 0xa0, 0xce, 0x08, 0xb8, 0x62, 
+0x02, 0x9a, 0x35, 0x6b, 0xc6, 0x54, 0x56, 0x56, 
+0xb2, 0x6a, 0x13, 0x40, 0xaa, 0x06, 0x92, 0x5a, 
+0x01, 0x50, 0x18, 0x00, 0x93, 0xc9, 0x64, 0x79, 
+0x6c, 0x8e, 0x00, 0x70, 0x44, 0xf4, 0x45, 0x51, 
+0xe4, 0x54, 0x06, 0x80, 0x93, 0x24, 0x89, 0x33, 
+0x47, 0x04, 0x38, 0x96, 0x65, 0x59, 0x49, 0x92, 
+0x38, 0x49, 0x92, 0x58, 0x9e, 0xe7, 0xb9, 0xfb, 
+0xef, 0xbf, 0xbf, 0x57, 0xd7, 0xae, 0x5d, 0xef, 
+0x6f, 0xd9, 0xb2, 0x65, 0x97, 0xb0, 0xb0, 0xb0, 
+0x8e, 0x0c, 0xc3, 0x58, 0xed, 0x3d, 0x42, 0xba, 
+0x2e, 0x49, 0x52, 0x6d, 0x75, 0x75, 0xf5, 0x95, 
+0xf2, 0xf2, 0xf2, 0xf3, 0x67, 0xce, 0x9c, 0x39, 
+0x7c, 0xf4, 0xe8, 0xd1, 0xb3, 0xb2, 0x2c, 0x4b, 
+0x0a, 0xe1, 0x97, 0x94, 0xc2, 0xaf, 0xf5, 0x5d, 
+0x3d, 0xea, 0x37, 0xcf, 0xfb, 0x8b, 0x64, 0xbe, 
+0x5f, 0x9d, 0xec, 0xa7, 0x5e, 0xe6, 0x47, 0x46, 
+0xff, 0x7a, 0xbd, 0x9e, 0x8a, 0x3f, 0xa5, 0xc9, 
+0x40, 0x0d, 0x00, 0x85, 0xe2, 0x63, 0x3c, 0x69, 
+0x02, 0x6a, 0x6b, 0x6b, 0x19, 0x9d, 0x4e, 0xc7, 
+0x72, 0x1c, 0xc7, 0x9a, 0x4c, 0x26, 0x46, 0x59, 
+0x35, 0x90, 0xe3, 0x38, 0xd6, 0x60, 0x30, 0x58, 
+0x55, 0x10, 0x24, 0x11, 0x01, 0x32, 0x25, 0x20, 
+0x08, 0x82, 0xe5, 0x67, 0x12, 0x1d, 0x20, 0x82, 
+0x8f, 0xdb, 0x06, 0x80, 0x55, 0x7e, 0x97, 0x24, 
+0x89, 0x35, 0x9b, 0x01, 0x16, 0x75, 0xf7, 0x18, 
+0x26, 0x34, 0x34, 0x54, 0xdf, 0xbd, 0x7b, 0xf7, 
+0x4e, 0x11, 0x11, 0x11, 0xad, 0x49, 0x7f, 0x25, 
+0x49, 0x12, 0x6f, 0xdc, 0xb8, 0x71, 0xfd, 0xec, 
+0xd9, 0xb3, 0x85, 0xe6, 0xcc, 0x7b, 0x99, 0x61, 
+0x18, 0x89, 0x61, 0x18, 0x59, 0xc3, 0x00, 0x48, 
+0x5a, 0xc2, 0xcf, 0xf3, 0xbc, 0x28, 0xcb, 0xb2, 
+0xe5, 0x31, 0x14, 0xf3, 0xfc, 0x64, 0xd4, 0x2f, 
+0x49, 0x92, 0xa4, 0x4c, 0xf6, 0x53, 0x2e, 0xf3, 
+0x53, 0x17, 0xf8, 0xa9, 0xaa, 0xaa, 0x92, 0xed, 
+0x89, 0xff, 0xf5, 0xeb, 0xd7, 0xe5, 0xd6, 0xad, 
+0x5b, 0x53, 0xf1, 0xa7, 0x04, 0x0d, 0xd4, 0x00, 
+0x50, 0x28, 0x7e, 0x40, 0x43, 0x4d, 0x00, 0x50, 
+0x57, 0x35, 0x50, 0xcb, 0x04, 0x18, 0x0c, 0x06, 
+0x46, 0xa7, 0xd3, 0x59, 0x4c, 0x80, 0xd1, 0x68, 
+0x64, 0xec, 0xad, 0x10, 0x50, 0xe7, 0x05, 0xb0, 
+0x2c, 0xcb, 0x2a, 0xa3, 0x01, 0xc4, 0x00, 0x00, 
+0xb0, 0x88, 0x3f, 0x53, 0x57, 0x5e, 0x98, 0x4c, 
+0x27, 0xb0, 0xa8, 0x33, 0x04, 0xac, 0x2c, 0xcb, 
+0x2c, 0xc3, 0x30, 0xac, 0x2c, 0xcb, 0x8c, 0x2c, 
+0xcb, 0xe4, 0x3b, 0x03, 0x80, 0xe1, 0x38, 0x0e, 
+0xe6, 0xc7, 0x60, 0x18, 0x46, 0x06, 0x00, 0x51, 
+0x14, 0x65, 0xb3, 0xf8, 0x93, 0x2f, 0x49, 0x92, 
+0x24, 0x99, 0x65, 0x59, 0x89, 0x61, 0x18, 0xb2, 
+0xfd, 0xae, 0x84, 0xba, 0x10, 0xbe, 0xa4, 0x14, 
+0x7e, 0x8e, 0xe3, 0x24, 0x32, 0xca, 0xd7, 0x1a, 
+0xf5, 0x93, 0x39, 0x7e, 0x32, 0xdf, 0xaf, 0x95, 
+0xec, 0xa7, 0x2e, 0xf0, 0x53, 0x59, 0x59, 0x29, 
+0x47, 0x45, 0x45, 0x49, 0x44, 0xf8, 0x01, 0x80, 
+0x8a, 0x3f, 0x25, 0x18, 0xa1, 0x06, 0x80, 0x42, 
+0xf1, 0x13, 0x5c, 0x35, 0x01, 0x80, 0x75, 0xe9, 
+0xe0, 0xb2, 0xb2, 0x32, 0xa6, 0x43, 0x87, 0x0e, 
+0x36, 0x26, 0x40, 0xab, 0x6a, 0xa0, 0xc1, 0x60, 
+0xb0, 0x4c, 0x09, 0xd4, 0xd6, 0xd6, 0xb2, 0x24, 
+0x0a, 0x60, 0x32, 0x99, 0x2c, 0xd3, 0x03, 0x4a, 
+0x33, 0x40, 0xc4, 0x1f, 0x66, 0x91, 0x87, 0xd9, 
+0x08, 0x30, 0x0c, 0xc3, 0x2a, 0xc2, 0xff, 0x44, 
+0xf8, 0x59, 0x73, 0x14, 0x80, 0x51, 0x46, 0x01, 
+0x88, 0xf0, 0x73, 0x1c, 0x07, 0x00, 0x10, 0x45, 
+0x91, 0xf4, 0x5b, 0x36, 0x9b, 0x01, 0x8b, 0x09, 
+0x20, 0x11, 0x00, 0x32, 0xfa, 0x57, 0x44, 0x00, 
+0x24, 0xb5, 0xf0, 0xb3, 0x2c, 0x6b, 0xd9, 0x16, 
+0x59, 0xa7, 0xd3, 0x59, 0x44, 0x5f, 0x69, 0x00, 
+0xf4, 0x7a, 0xbd, 0x65, 0x4d, 0x7f, 0x68, 0x68, 
+0xa8, 0x55, 0xb2, 0x9f, 0x72, 0x8d, 0xbf, 0x5a, 
+0xfc, 0x23, 0x23, 0x23, 0xe5, 0x82, 0x82, 0x02, 
+0x50, 0xf1, 0xa7, 0x04, 0x23, 0xd4, 0x00, 0x50, 
+0x28, 0x7e, 0x84, 0xbb, 0x4c, 0x00, 0x00, 0x54, 
+0x56, 0x56, 0x32, 0x7a, 0xbd, 0x9e, 0x25, 0x26, 
+0x40, 0x59, 0x2b, 0x20, 0x2c, 0x2c, 0x8c, 0x51, 
+0xe7, 0x05, 0x28, 0xa7, 0x04, 0x88, 0x01, 0x60, 
+0xeb, 0x16, 0xed, 0x73, 0x82, 0x20, 0xb0, 0x64, 
+0x5a, 0x40, 0x14, 0x45, 0xcb, 0x68, 0x9f, 0x98, 
+0x03, 0x96, 0x65, 0x59, 0x51, 0x14, 0x2d, 0xa1, 
+0x7f, 0x59, 0x96, 0x19, 0x45, 0x14, 0x80, 0x81, 
+0xd9, 0x04, 0xd8, 0xe9, 0xb3, 0x95, 0xf8, 0x2b, 
+0x46, 0xff, 0xb2, 0x54, 0xf7, 0x4b, 0x24, 0x59, 
+0x96, 0x25, 0x8e, 0xe3, 0x44, 0x49, 0x92, 0x24, 
+0x8e, 0xe3, 0x2c, 0xd1, 0x00, 0x00, 0x22, 0xf9, 
+0x99, 0x84, 0xfa, 0x89, 0xe8, 0xeb, 0x74, 0x3a, 
+0x8b, 0xf8, 0xab, 0x43, 0xfe, 0x3a, 0x9d, 0x4e, 
+0x56, 0x66, 0xfa, 0xdb, 0x2b, 0xf0, 0xd3, 0x58, 
+0xf1, 0xa7, 0xc2, 0x4f, 0xf1, 0x67, 0xa8, 0x01, 
+0xa0, 0x50, 0xfc, 0x10, 0x2d, 0x23, 0x40, 0x3e, 
+0xab, 0x8e, 0x36, 0x11, 0x2a, 0x2b, 0x2b, 0x63, 
+0x62, 0x63, 0x63, 0x51, 0x5f, 0xd5, 0x40, 0xe5, 
+0x0a, 0x81, 0xd0, 0xd0, 0x50, 0x86, 0x18, 0x00, 
+0xb3, 0xf0, 0x5b, 0xa2, 0x01, 0x4a, 0x03, 0x40, 
+0xa6, 0x05, 0x58, 0x33, 0xe4, 0x31, 0x11, 0x7e, 
+0x51, 0x14, 0x59, 0x49, 0x92, 0x58, 0x8e, 0xe3, 
+0x18, 0x51, 0x14, 0x59, 0x59, 0x96, 0x19, 0x8e, 
+0xe3, 0x2c, 0xa3, 0x7f, 0x62, 0x00, 0x94, 0x46, 
+0x80, 0x4c, 0x03, 0x10, 0xf1, 0x17, 0x45, 0x51, 
+0x36, 0x8f, 0xf8, 0x65, 0x92, 0x17, 0xc0, 0x71, 
+0x9c, 0xa4, 0x34, 0x02, 0x3c, 0xcf, 0x5b, 0x19, 
+0x01, 0x9e, 0xe7, 0x25, 0x22, 0xfa, 0xe4, 0x31, 
+0x99, 0xeb, 0x57, 0x8a, 0x7e, 0x4d, 0x4d, 0x8d, 
+0x1c, 0x16, 0x16, 0x66, 0x35, 0xdf, 0x1f, 0x12, 
+0x12, 0x22, 0x9b, 0x4c, 0x26, 0xc9, 0x5e, 0xb2, 
+0x1f, 0x50, 0xb7, 0xc6, 0xdf, 0x7c, 0xad, 0xa9, 
+0xf8, 0x53, 0x82, 0x0a, 0x6a, 0x00, 0x28, 0x14, 
+0x3f, 0xc5, 0xdd, 0x26, 0x40, 0x2b, 0x39, 0x50, 
+0x99, 0x17, 0x20, 0x08, 0x02, 0xa3, 0x8c, 0x06, 
+0x28, 0x73, 0x03, 0x88, 0x01, 0x50, 0x7e, 0x67, 
+0x18, 0x86, 0x4c, 0x0f, 0x58, 0x09, 0x3f, 0xc7, 
+0x71, 0x8c, 0x24, 0x49, 0xac, 0x24, 0x49, 0x8c, 
+0xda, 0x04, 0xd8, 0xe9, 0xa7, 0xcc, 0x30, 0x8c, 
+0x2c, 0x08, 0x02, 0x88, 0xe0, 0x2b, 0xcd, 0x00, 
+0x99, 0x06, 0x20, 0xe2, 0x4e, 0x0c, 0x01, 0xf9, 
+0x59, 0xf9, 0x98, 0xcc, 0xf5, 0x2b, 0x47, 0xfd, 
+0x3c, 0xcf, 0xcb, 0xea, 0xf9, 0xfe, 0xfa, 0x92, 
+0xfd, 0xa8, 0xf8, 0x53, 0x9a, 0x0a, 0xd4, 0x00, 
+0x50, 0x28, 0x7e, 0x4c, 0x63, 0x4c, 0x00, 0xa0, 
+0xbd, 0x42, 0x40, 0x2b, 0x2f, 0x40, 0x39, 0x25, 
+0x40, 0x8c, 0x00, 0x89, 0x06, 0x98, 0x47, 0xfb, 
+0x36, 0x06, 0x40, 0xf9, 0x5d, 0x96, 0x65, 0xc6, 
+0x1c, 0xfe, 0xb7, 0x98, 0x00, 0x59, 0x96, 0x19, 
+0x62, 0x02, 0x64, 0x59, 0x66, 0x78, 0x9e, 0x87, 
+0x96, 0x09, 0x20, 0x62, 0x4f, 0x1e, 0x2b, 0x47, 
+0xff, 0x3c, 0xcf, 0x4b, 0x82, 0x20, 0x28, 0xa3, 
+0x00, 0xb2, 0x96, 0xf0, 0xeb, 0x74, 0x3a, 0x32, 
+0x9f, 0x6f, 0x15, 0xea, 0xe7, 0x79, 0x5e, 0xb6, 
+0x17, 0xf2, 0x27, 0xe2, 0x5f, 0x56, 0x56, 0x26, 
+0x37, 0x6b, 0xd6, 0xac, 0xde, 0xd2, 0xbe, 0xe6, 
+0x6b, 0x4b, 0xc5, 0x9f, 0x12, 0x54, 0x50, 0x03, 
+0x40, 0xa1, 0xf8, 0x39, 0x9e, 0x34, 0x01, 0xca, 
+0x29, 0x81, 0xb0, 0xb0, 0x30, 0xa6, 0xaa, 0xaa, 
+0xca, 0x26, 0x1a, 0xa0, 0xd7, 0xeb, 0x19, 0x2d, 
+0x23, 0xc0, 0xf3, 0x3c, 0x43, 0x0c, 0x80, 0x24, 
+0x49, 0x0c, 0x79, 0xce, 0x3c, 0x15, 0xc0, 0xf0, 
+0x3c, 0xcf, 0x48, 0x92, 0xc4, 0x48, 0x92, 0x64, 
+0x13, 0xfa, 0x57, 0xf5, 0x4f, 0x06, 0x00, 0x96, 
+0x65, 0x65, 0x96, 0x65, 0x65, 0x41, 0x10, 0x64, 
+0x96, 0x65, 0x65, 0x45, 0x0e, 0x80, 0xc5, 0x08, 
+0x10, 0xc1, 0x27, 0x26, 0x41, 0x29, 0xfc, 0x46, 
+0xa3, 0x51, 0x0e, 0x09, 0x09, 0xb1, 0x18, 0x80, 
+0x9a, 0x9a, 0x1a, 0x59, 0x3d, 0xea, 0x0f, 0x09, 
+0x09, 0xd1, 0xac, 0xec, 0x07, 0xd8, 0x66, 0xfa, 
+0x53, 0xf1, 0xa7, 0x04, 0x3b, 0xd4, 0x00, 0x50, 
+0x28, 0x01, 0x80, 0xab, 0x26, 0x40, 0x5d, 0x2b, 
+0x40, 0x9d, 0x1c, 0xa8, 0x2e, 0x1f, 0x5c, 0x5b, 
+0x5b, 0xcb, 0xa8, 0xa3, 0x01, 0x24, 0x37, 0x20, 
+0x24, 0x24, 0xc4, 0x92, 0x23, 0x20, 0x8a, 0x22, 
+0x43, 0x8c, 0x80, 0x4e, 0xa7, 0x63, 0x4c, 0x26, 
+0x13, 0x2b, 0x49, 0x92, 0x65, 0xf4, 0x4f, 0x4c, 
+0x01, 0x11, 0x7e, 0x9e, 0xe7, 0xc9, 0x9a, 0x7f, 
+0x4d, 0x13, 0xa0, 0x14, 0x7f, 0x00, 0x20, 0xe2, 
+0xaf, 0x34, 0x03, 0x3c, 0xcf, 0x5b, 0x04, 0x9f, 
+0x7c, 0xe7, 0x38, 0x4e, 0xd6, 0x12, 0x7e, 0x9e, 
+0xe7, 0xe5, 0xb0, 0xb0, 0x30, 0xa9, 0xa6, 0xa6, 
+0x46, 0x26, 0x55, 0xfd, 0xd4, 0x59, 0xfe, 0x5a, 
+0x21, 0x7f, 0x67, 0x92, 0xfd, 0x00, 0x2a, 0xfe, 
+0x94, 0xe0, 0x82, 0x1a, 0x00, 0x0a, 0x25, 0x40, 
+0x70, 0xd5, 0x04, 0x00, 0xce, 0xe5, 0x05, 0xd4, 
+0x17, 0x0d, 0x30, 0x99, 0x4c, 0x8c, 0xda, 0x08, 
+0x90, 0x88, 0x00, 0xf9, 0x2e, 0x8a, 0x22, 0xa3, 
+0x34, 0x03, 0xca, 0x91, 0xbf, 0x24, 0x49, 0x8c, 
+0x5e, 0xaf, 0xb7, 0x18, 0x00, 0xf2, 0x9d, 0x40, 
+0x84, 0x5f, 0xcb, 0x00, 0xa8, 0x1f, 0xeb, 0x74, 
+0x3a, 0x2b, 0x03, 0x40, 0x84, 0x9f, 0x84, 0xf9, 
+0xd5, 0xe1, 0x7e, 0xbd, 0x5e, 0x2f, 0x93, 0x51, 
+0x7f, 0x7d, 0xe2, 0xef, 0xcc, 0x7c, 0x3f, 0x40, 
+0xc5, 0x9f, 0x12, 0x7c, 0x50, 0x03, 0x40, 0xa1, 
+0x04, 0x10, 0xee, 0x58, 0x26, 0xe8, 0xc8, 0x04, 
+0x90, 0x68, 0x80, 0xd2, 0x08, 0x84, 0x86, 0x86, 
+0x32, 0x26, 0x93, 0xc9, 0x62, 0x04, 0x04, 0x41, 
+0x60, 0xcc, 0x99, 0xff, 0x8c, 0x28, 0x8a, 0x8c, 
+0xda, 0x0c, 0x88, 0xa2, 0x68, 0x11, 0x7c, 0x49, 
+0x92, 0x98, 0x90, 0x90, 0x10, 0x90, 0xe7, 0xd4, 
+0x70, 0x1c, 0x27, 0xd7, 0xd6, 0xd6, 0x5a, 0x99, 
+0x01, 0x8e, 0xe3, 0x64, 0x93, 0xc9, 0x24, 0x73, 
+0x1c, 0x27, 0xb3, 0x2c, 0x2b, 0x9b, 0x4c, 0x26, 
+0x59, 0xaf, 0xd7, 0x5b, 0x84, 0x5f, 0x29, 0xfa, 
+0x4a, 0xe1, 0x27, 0x23, 0x7e, 0xad, 0xb9, 0x7e, 
+0x7b, 0x21, 0x7f, 0xc0, 0x39, 0xf1, 0xa7, 0x6b, 
+0xfc, 0x29, 0xc1, 0x06, 0x35, 0x00, 0x14, 0x4a, 
+0x80, 0xd1, 0x58, 0x13, 0x00, 0xdc, 0xce, 0x0b, 
+0x00, 0xac, 0xa7, 0x04, 0x94, 0x46, 0xa0, 0x59, 
+0xb3, 0x66, 0x4c, 0x6d, 0x6d, 0x2d, 0x43, 0x96, 
+0x0c, 0x9a, 0x4c, 0x26, 0x86, 0x44, 0x04, 0x04, 
+0x41, 0x60, 0x48, 0x44, 0x40, 0x10, 0x04, 0x46, 
+0xaf, 0xd7, 0x33, 0x4a, 0x33, 0x00, 0x00, 0x82, 
+0x20, 0x58, 0xe6, 0xff, 0x45, 0x51, 0x64, 0x42, 
+0x43, 0x43, 0x41, 0x1e, 0x03, 0x75, 0xc2, 0x0f, 
+0x00, 0x35, 0x35, 0x35, 0x20, 0x3f, 0x13, 0x13, 
+0xc0, 0xf3, 0xbc, 0x6c, 0x34, 0x1a, 0x65, 0x8e, 
+0xe3, 0x64, 0xa5, 0xe8, 0xf3, 0x3c, 0x2f, 0xd7, 
+0xd6, 0xd6, 0xca, 0xca, 0x50, 0xbf, 0x52, 0xf8, 
+0x95, 0xe1, 0xfe, 0xf0, 0xf0, 0x70, 0xf9, 0xe6, 
+0xcd, 0x9b, 0x32, 0x00, 0x38, 0x0a, 0xf9, 0x37, 
+0x64, 0xbe, 0xdf, 0x7c, 0xcd, 0xe9, 0x0d, 0x94, 
+0x12, 0xb0, 0x50, 0x03, 0x40, 0xa1, 0x04, 0x20, 
+0xf5, 0x99, 0x00, 0xc0, 0xf9, 0xbc, 0x00, 0x75, 
+0x34, 0x00, 0x00, 0xc8, 0x72, 0xc1, 0xea, 0xea, 
+0x6a, 0x1b, 0x23, 0x10, 0x16, 0x16, 0xc6, 0x18, 
+0x8d, 0x46, 0x86, 0xec, 0x2b, 0x20, 0x08, 0x02, 
+0x23, 0x08, 0x02, 0xd3, 0xac, 0x59, 0x33, 0x90, 
+0xc7, 0xc4, 0x10, 0x00, 0xb7, 0xc5, 0x5e, 0x39, 
+0xfa, 0x57, 0x1b, 0x00, 0x02, 0xf9, 0x99, 0xe3, 
+0x38, 0x99, 0x18, 0x00, 0xa0, 0xce, 0x0c, 0x10, 
+0xd1, 0xe7, 0x79, 0x5e, 0xd6, 0xe9, 0x74, 0xb2, 
+0x96, 0xf0, 0x3b, 0x0a, 0xf7, 0x03, 0x40, 0x7d, 
+0x21, 0x7f, 0x80, 0x8a, 0x3f, 0xa5, 0x69, 0x41, 
+0x0d, 0x00, 0x85, 0x12, 0xa0, 0x34, 0xc4, 0x04, 
+0x00, 0xce, 0x47, 0x03, 0x00, 0xc0, 0x19, 0x23, 
+0x60, 0x32, 0x99, 0x98, 0x16, 0x2d, 0x5a, 0xc0, 
+0x64, 0x32, 0x31, 0x6a, 0x43, 0x00, 0xc0, 0xe6, 
+0xbb, 0x1a, 0x9e, 0xe7, 0x65, 0xf5, 0x63, 0xa5, 
+0xe8, 0x03, 0x80, 0x52, 0xf4, 0xf5, 0x7a, 0xbd, 
+0x45, 0xf8, 0x43, 0x42, 0x42, 0xe4, 0xd2, 0xd2, 
+0x52, 0xd8, 0x13, 0x7e, 0x00, 0x50, 0x8f, 0xfa, 
+0xcd, 0x7d, 0x6e, 0xf0, 0x7c, 0xbf, 0xf9, 0x1a, 
+0xd3, 0x1b, 0x27, 0x25, 0xe0, 0xa1, 0x06, 0x80, 
+0x42, 0x09, 0x60, 0x5c, 0x31, 0x01, 0x80, 0xfd, 
+0x29, 0x01, 0x75, 0x34, 0x00, 0x00, 0xec, 0x19, 
+0x01, 0x92, 0x23, 0x00, 0x00, 0x4a, 0x33, 0x00, 
+0x00, 0x64, 0x8a, 0x80, 0x3c, 0x06, 0xec, 0x0b, 
+0xbf, 0x1a, 0xa5, 0xd8, 0x03, 0x40, 0x4d, 0x4d, 
+0x8d, 0xe5, 0x67, 0x22, 0xfa, 0x00, 0x40, 0x84, 
+0x9f, 0xcc, 0xf1, 0x03, 0x80, 0x52, 0xf8, 0x5b, 
+0xb5, 0x6a, 0x25, 0x9f, 0x3f, 0x7f, 0xde, 0x22, 
+0xfc, 0xe6, 0x7e, 0x3a, 0x35, 0xea, 0x07, 0xea, 
+0x9f, 0xef, 0x37, 0x5f, 0x5b, 0x7a, 0xd3, 0xa4, 
+0x04, 0x05, 0xd4, 0x00, 0x50, 0x28, 0x01, 0x8e, 
+0x3d, 0x13, 0x00, 0xd4, 0x9f, 0x17, 0x00, 0x68, 
+0x47, 0x03, 0x00, 0x38, 0x34, 0x02, 0x00, 0xa0, 
+0x8c, 0x0a, 0x00, 0x75, 0x66, 0x00, 0x00, 0xc2, 
+0xc2, 0xc2, 0xac, 0x7e, 0x26, 0x46, 0xc0, 0x11, 
+0x44, 0xf8, 0x81, 0x3a, 0x91, 0x07, 0x00, 0x32, 
+0xd2, 0x07, 0x00, 0x22, 0xfa, 0x00, 0x40, 0xe6, 
+0xf8, 0x6f, 0xdc, 0xb8, 0x01, 0x22, 0xfc, 0x00, 
+0xe0, 0x28, 0xdc, 0x6f, 0xee, 0x3f, 0x1d, 0xf5, 
+0x53, 0x28, 0xa0, 0x06, 0x80, 0x42, 0x09, 0x1a, 
+0x1a, 0x3b, 0x25, 0x00, 0x38, 0x36, 0x02, 0x40, 
+0x5d, 0x8e, 0x80, 0xc1, 0x60, 0x60, 0xda, 0xb7, 
+0x6f, 0x0f, 0xb5, 0x19, 0x00, 0x00, 0x62, 0x08, 
+0x80, 0xdb, 0x26, 0x00, 0x00, 0x22, 0x22, 0x22, 
+0xac, 0x8e, 0x11, 0xc8, 0xc8, 0x1e, 0xb8, 0x2d, 
+0xfc, 0x40, 0x9d, 0xe0, 0x9b, 0x7f, 0x9f, 0x95, 
+0xe8, 0x03, 0x80, 0x32, 0xb9, 0x4f, 0x39, 0xe2, 
+0x07, 0xea, 0x84, 0xbf, 0xbe, 0x70, 0xbf, 0xb9, 
+0xcf, 0x54, 0xfc, 0x29, 0x4d, 0x1e, 0x6a, 0x00, 
+0x28, 0x94, 0x20, 0xa2, 0xa1, 0x53, 0x02, 0x80, 
+0x63, 0x23, 0x00, 0xd4, 0xe5, 0x08, 0xc4, 0xc4, 
+0xc4, 0xa0, 0xa2, 0xa2, 0xc2, 0x12, 0x15, 0x20, 
+0x66, 0x00, 0x80, 0x95, 0x21, 0x00, 0x80, 0xa8, 
+0xa8, 0x28, 0x18, 0x0c, 0x06, 0xa7, 0x22, 0x00, 
+0x61, 0x61, 0x61, 0x72, 0x71, 0x71, 0x31, 0x80, 
+0x3a, 0xb1, 0x27, 0xcf, 0x2b, 0x47, 0xfa, 0x40, 
+0x9d, 0xe8, 0x03, 0x75, 0xa3, 0x7d, 0x00, 0x0e, 
+0x85, 0xdf, 0x5e, 0x86, 0x3f, 0xe0, 0x58, 0xf8, 
+0x01, 0x2a, 0xfe, 0x94, 0xe0, 0x85, 0x1a, 0x00, 
+0x0a, 0x25, 0xc8, 0x70, 0x75, 0x4a, 0x00, 0xb0, 
+0x5d, 0x29, 0x40, 0x9e, 0xaf, 0xcf, 0x08, 0x00, 
+0x00, 0x31, 0x03, 0x40, 0x5d, 0x64, 0x80, 0xbc, 
+0xaf, 0x65, 0xcb, 0x96, 0x96, 0xc7, 0xc4, 0x14, 
+0x38, 0x82, 0x8c, 0xee, 0x01, 0x40, 0x4b, 0xf0, 
+0x01, 0x40, 0x6b, 0xb4, 0x6f, 0x6e, 0xa7, 0xe5, 
+0x35, 0x5a, 0xc2, 0x0f, 0xd0, 0x51, 0x3f, 0x85, 
+0xa2, 0x86, 0x1a, 0x00, 0x0a, 0x25, 0x08, 0x71, 
+0x64, 0x02, 0x00, 0xdb, 0x68, 0x00, 0xe0, 0xd8, 
+0x08, 0x00, 0xb6, 0x66, 0x00, 0xb8, 0x1d, 0x19, 
+0x00, 0x60, 0x31, 0x04, 0x04, 0xa5, 0x31, 0x70, 
+0x84, 0x52, 0xec, 0x01, 0x5b, 0xc1, 0x07, 0x6e, 
+0x8b, 0xbe, 0xb9, 0x5d, 0x36, 0x73, 0xfc, 0x8d, 
+0x15, 0x7e, 0x80, 0x8a, 0x3f, 0xa5, 0x69, 0x40, 
+0x0d, 0x00, 0x85, 0x12, 0xc4, 0x78, 0xd2, 0x08, 
+0x0c, 0x18, 0x30, 0x00, 0xd7, 0xae, 0x5d, 0xb3, 
+0xfc, 0xac, 0x34, 0x04, 0x80, 0xb5, 0x29, 0x70, 
+0x96, 0xf3, 0xe7, 0xcf, 0x03, 0x80, 0x5d, 0xc1, 
+0x37, 0xb7, 0xc1, 0x66, 0xb4, 0x0f, 0x38, 0x16, 
+0x7e, 0x80, 0x8a, 0x3f, 0x85, 0xa2, 0x84, 0x1a, 
+0x00, 0x0a, 0x25, 0xc8, 0x71, 0xc6, 0x04, 0x00, 
+0x8e, 0x8d, 0x00, 0x00, 0x2b, 0x33, 0x00, 0x68, 
+0x47, 0x06, 0xd4, 0xa8, 0x8d, 0x41, 0x7d, 0xa8, 
+0xc5, 0xde, 0xfc, 0x3b, 0xac, 0x9e, 0x53, 0x8b, 
+0x3e, 0x00, 0xd8, 0x9b, 0xe3, 0x27, 0x50, 0xe1, 
+0xa7, 0x50, 0x6c, 0xa1, 0x06, 0x80, 0x42, 0x69, 
+0x22, 0xb8, 0xc3, 0x08, 0x00, 0xf6, 0xcd, 0x00, 
+0x60, 0x6d, 0x08, 0x80, 0xba, 0x28, 0x01, 0x41, 
+0x19, 0x2d, 0x50, 0xd3, 0xb1, 0x63, 0x47, 0x19, 
+0x00, 0xf2, 0xf2, 0xf2, 0x6c, 0x8e, 0x29, 0x05, 
+0x1f, 0xb0, 0x15, 0x7d, 0xa0, 0xfe, 0xd1, 0x3e, 
+0x40, 0x85, 0x9f, 0x42, 0xd1, 0xe2, 0xff, 0x03, 
+0x65, 0xa6, 0xdd, 0xaf, 0x10, 0x12, 0x84, 0xec, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/bigimgs/contactpersonicon.png b/source/bitmaps/bigimgs/contactpersonicon.png
new file mode 100644 (file)
index 0000000..5d779aa
Binary files /dev/null and b/source/bitmaps/bigimgs/contactpersonicon.png differ
diff --git a/source/bitmaps/bigimgs/contactpersonicon48.cpp b/source/bitmaps/bigimgs/contactpersonicon48.cpp
new file mode 100644 (file)
index 0000000..bada54a
--- /dev/null
@@ -0,0 +1,642 @@
+#include <iostream>
+
+#ifndef BIGIMGS_CONTACTPERSONICON48_CPP
+#define BIGIMGS_CONTACTPERSONICON48_CPP
+
+static unsigned char bigimgs_contactpersonicon48_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x01, 0xbb, 0x00, 0x00, 0x01, 
+0xbb, 0x01, 0x3a, 0xec, 0xe3, 0xe2, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x13, 0x3e, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xcd, 0x9b, 0x7b, 
+0x54, 0x54, 0xd7, 0xbd, 0xc7, 0xbf, 0xfb, 0x9c, 
+0x33, 0x33, 0xcc, 0x8b, 0x61, 0x78, 0x07, 0x1f, 
+0x11, 0x08, 0x02, 0xa1, 0xf2, 0x70, 0x79, 0xd3, 
+0xac, 0x68, 0xc2, 0x58, 0x05, 0x34, 0x11, 0x13, 
+0x21, 0xa0, 0xde, 0x5e, 0xb3, 0xe8, 0x4a, 0xaf, 
+0x6d, 0xd3, 0x9a, 0x34, 0x2b, 0x59, 0xd5, 0x2e, 
+0x6b, 0x44, 0x6f, 0xac, 0x49, 0xba, 0xec, 0x4a, 
+0xa3, 0x4d, 0x57, 0xb4, 0x09, 0x15, 0x12, 0x2e, 
+0x86, 0x2c, 0xa2, 0x85, 0x8a, 0x5d, 0xe1, 0x0a, 
+0xf5, 0x81, 0xd1, 0x58, 0xdf, 0x98, 0xf8, 0x40, 
+0x59, 0x91, 0xc7, 0x80, 0x0c, 0x33, 0x67, 0xce, 
+0xbc, 0xce, 0xcc, 0x79, 0xdc, 0x3f, 0x74, 0xa6, 
+0x0c, 0xc3, 0x20, 0xa8, 0x98, 0xfe, 0xfe, 0x9b, 
+0xbd, 0xcf, 0xde, 0xe7, 0x7c, 0x3f, 0x67, 0xef, 
+0xdf, 0xfe, 0xed, 0xdf, 0xd9, 0x43, 0x64, 0x59, 
+0xc6, 0x64, 0x1a, 0x21, 0x84, 0x54, 0x56, 0x56, 
+0x12, 0x00, 0xe8, 0xe8, 0xe8, 0x20, 0x59, 0x59, 
+0x59, 0x32, 0x00, 0x54, 0x56, 0x56, 0xca, 0xf2, 
+0x64, 0xdf, 0x7c, 0x1c, 0x46, 0x26, 0xeb, 0x19, 
+0x86, 0x09, 0xa7, 0x2c, 0x16, 0x0b, 0xcd, 0xf3, 
+0x3c, 0xcd, 0x30, 0x0c, 0xc5, 0x71, 0x9c, 0x4c, 
+0xd3, 0xb4, 0x38, 0x63, 0xc6, 0x0c, 0x01, 0x80, 
+0xf4, 0x5d, 0x83, 0x98, 0x14, 0x00, 0x84, 0x10, 
+0x52, 0x56, 0x56, 0x46, 0x25, 0x26, 0x26, 0x32, 
+0x43, 0x43, 0x43, 0x2a, 0xaf, 0xd7, 0xab, 0xa1, 
+0x69, 0x3a, 0x42, 0x14, 0x45, 0x06, 0x80, 0xa8, 
+0x52, 0xa9, 0x3c, 0x1a, 0x8d, 0xc6, 0xe5, 0xf5, 
+0x7a, 0x79, 0xa7, 0xd3, 0xe9, 0xab, 0xaf, 0xaf, 
+0x97, 0xbe, 0x2b, 0x08, 0xf7, 0x1d, 0x80, 0x5f, 
+0x3c, 0x00, 0xa5, 0x5a, 0xad, 0xd6, 0x38, 0x9d, 
+0xce, 0x68, 0x9e, 0xe7, 0x63, 0x01, 0x24, 0xea, 
+0xf5, 0xfa, 0x87, 0x9d, 0x4e, 0x67, 0xb7, 0xcf, 
+0xe7, 0xeb, 0x53, 0x28, 0x14, 0x83, 0x06, 0x83, 
+0xc1, 0xaa, 0x56, 0xab, 0x1d, 0x49, 0x49, 0x49, 
+0xde, 0xca, 0xca, 0x4a, 0xf1, 0xbb, 0x80, 0xc0, 
+0xdc, 0xcf, 0xce, 0xfc, 0xe2, 0xa7, 0x4e, 0x9d, 
+0xaa, 0x1c, 0x1c, 0x1c, 0xd4, 0x5b, 0xad, 0xd6, 
+0x38, 0x9e, 0xe7, 0xa7, 0x3f, 0xf2, 0xc8, 0x23, 
+0x2f, 0xa4, 0xa6, 0xa6, 0x16, 0xa5, 0xa7, 0xa7, 
+0x47, 0x5c, 0xbf, 0x7e, 0xdd, 0x77, 0xf9, 0xf2, 
+0xe5, 0xb6, 0x0b, 0x17, 0x2e, 0x7c, 0x28, 0x08, 
+0xc2, 0xb7, 0x11, 0x11, 0x11, 0xfd, 0x6e, 0xb7, 
+0xdb, 0x6e, 0x32, 0x99, 0x78, 0x42, 0xc8, 0x03, 
+0x87, 0x70, 0xdf, 0x00, 0x8c, 0x14, 0x6f, 0xb7, 
+0xdb, 0x13, 0x1c, 0x0e, 0x47, 0xca, 0xa3, 0x8f, 
+0x3e, 0xfa, 0xb3, 0x85, 0x0b, 0x17, 0xe6, 0x3f, 
+0xf7, 0xdc, 0x73, 0x11, 0xb7, 0x2f, 0x55, 0x1f, 
+0x39, 0x72, 0x64, 0xb1, 0x46, 0xa3, 0x49, 0x69, 
+0x6f, 0x6f, 0xdf, 0x42, 0x08, 0xa1, 0x95, 0x4a, 
+0x25, 0x99, 0x36, 0x6d, 0x1a, 0xfb, 0x5d, 0x40, 
+0xb8, 0x2f, 0x00, 0x46, 0x8a, 0x67, 0x59, 0x36, 
+0xd1, 0x6e, 0xb7, 0xa7, 0x64, 0x65, 0x65, 0xbd, 
+0x54, 0x54, 0x54, 0xf4, 0x54, 0x71, 0x71, 0xb1, 
+0x6a, 0xf8, 0xf5, 0xf3, 0xe6, 0xcd, 0x53, 0x68, 
+0xb5, 0xda, 0x4c, 0x59, 0x96, 0x37, 0x1c, 0x3d, 
+0x7a, 0x74, 0x8b, 0x2c, 0xcb, 0x24, 0x32, 0x32, 
+0x12, 0xdf, 0x05, 0x84, 0x7b, 0x06, 0x30, 0x96, 
+0xf8, 0xc2, 0xc2, 0xc2, 0x10, 0xf1, 0x7e, 0xcb, 
+0xcb, 0xcb, 0xa3, 0x65, 0x59, 0x4e, 0x07, 0xb0, 
+0xfe, 0xd8, 0xb1, 0x63, 0xbf, 0x95, 0x24, 0x89, 
+0x44, 0x45, 0x45, 0x61, 0xda, 0xb4, 0x69, 0x6c, 
+0x65, 0x65, 0xe5, 0x03, 0x83, 0x70, 0x4f, 0x00, 
+0x86, 0x3b, 0xbc, 0xd1, 0xc4, 0x2f, 0x5d, 0xba, 
+0x74, 0x54, 0xf1, 0x7e, 0x9b, 0x3d, 0x7b, 0x36, 
+0x4d, 0x08, 0x49, 0x07, 0xf0, 0x9b, 0x63, 0xc7, 
+0x8e, 0xbd, 0x09, 0x00, 0x51, 0x51, 0x51, 0xe8, 
+0xec, 0xec, 0x7c, 0x60, 0x10, 0xee, 0x1a, 0xc0, 
+0x70, 0xf1, 0x82, 0x20, 0xe8, 0xed, 0x76, 0x7b, 
+0x82, 0xdd, 0x6e, 0x4f, 0x79, 0xf4, 0xd1, 0x47, 
+0x7f, 0x36, 0x1e, 0xf1, 0x7e, 0xcb, 0xcb, 0xcb, 
+0xa3, 0x09, 0x21, 0x69, 0x84, 0x90, 0x37, 0xda, 
+0xdb, 0xdb, 0x37, 0x03, 0xff, 0x82, 0xf0, 0x20, 
+0xa6, 0xc3, 0x5d, 0x01, 0x18, 0x2e, 0x1e, 0x80, 
+0x8e, 0xe7, 0xf9, 0x04, 0x97, 0xcb, 0x95, 0x9a, 
+0x99, 0x99, 0xf9, 0xd3, 0xc2, 0xc2, 0xc2, 0xfc, 
+0xa5, 0x4b, 0x97, 0xaa, 0xec, 0x76, 0x3b, 0x8e, 
+0x1f, 0x3f, 0x0e, 0x87, 0xc3, 0x81, 0x39, 0x73, 
+0xe6, 0x60, 0xda, 0xb4, 0x69, 0x61, 0xfb, 0xcb, 
+0xcd, 0xcd, 0xa5, 0x01, 0x3c, 0x02, 0x20, 0x08, 
+0xc2, 0x83, 0xf0, 0x09, 0x13, 0x06, 0x30, 0x52, 
+0xbc, 0xcb, 0xe5, 0x4a, 0x70, 0xbb, 0xdd, 0x29, 
+0x19, 0x19, 0x19, 0xff, 0x5d, 0x54, 0x54, 0x64, 
+0x7a, 0xf6, 0xd9, 0x67, 0x55, 0x76, 0xbb, 0x1d, 
+0xfb, 0xf7, 0xef, 0x87, 0xd3, 0xe9, 0x04, 0x00, 
+0xb4, 0xb4, 0xb4, 0xc0, 0x64, 0x32, 0x21, 0x39, 
+0x39, 0x39, 0x6c, 0xbf, 0xb9, 0xb9, 0xb9, 0x14, 
+0x80, 0x54, 0x00, 0xbf, 0x69, 0x6f, 0x6f, 0x7f, 
+0x93, 0xa2, 0x28, 0x99, 0x61, 0x98, 0x49, 0x87, 
+0x30, 0x21, 0x00, 0x23, 0xc5, 0x3b, 0x9d, 0xce, 
+0x44, 0xb7, 0xdb, 0x9d, 0x92, 0x9e, 0x9e, 0xbe, 
+0xba, 0xb0, 0xb0, 0x70, 0xc1, 0x68, 0xe2, 0x01, 
+0x40, 0x92, 0x24, 0xb4, 0xb5, 0xb5, 0x01, 0xc0, 
+0x9d, 0x20, 0xd0, 0xb2, 0x2c, 0xa7, 0x49, 0x92, 
+0xb4, 0xbe, 0xbd, 0xbd, 0xfd, 0x4d, 0x83, 0xc1, 
+0x00, 0x96, 0x65, 0x27, 0x15, 0xc2, 0xb8, 0x01, 
+0x0c, 0x17, 0xaf, 0xd3, 0xe9, 0x74, 0x36, 0x9b, 
+0x2d, 0xc1, 0x2f, 0xbe, 0xa0, 0xa0, 0x60, 0xc1, 
+0xb2, 0x65, 0xcb, 0x46, 0x15, 0xef, 0xb7, 0xf1, 
+0x42, 0xb8, 0xbd, 0x3a, 0xcc, 0x24, 0x84, 0xac, 
+0x3f, 0x7a, 0xf4, 0xe8, 0x96, 0xc9, 0x86, 0x30, 
+0x2e, 0x00, 0xa3, 0x89, 0xb7, 0xd9, 0x6c, 0xa9, 
+0xe9, 0xe9, 0xe9, 0xab, 0x17, 0x2e, 0x5c, 0xb8, 
+0xa0, 0xa4, 0xa4, 0x64, 0x4c, 0xf1, 0x7e, 0x1b, 
+0x2f, 0x84, 0xd9, 0xb3, 0x67, 0xd3, 0x00, 0xd2, 
+0x01, 0x4c, 0x3a, 0x84, 0x3b, 0x02, 0x18, 0x39, 
+0xec, 0x6d, 0x36, 0x5b, 0x02, 0xc7, 0x71, 0xa9, 
+0xe9, 0xe9, 0xe9, 0xab, 0x7f, 0xf0, 0x83, 0x1f, 
+0x2c, 0x28, 0x2d, 0x2d, 0x1d, 0x97, 0x78, 0xbf, 
+0xfd, 0xbb, 0x41, 0x18, 0x13, 0xc0, 0x68, 0x0e, 
+0xcf, 0xe5, 0x72, 0x05, 0xc4, 0x97, 0x95, 0x95, 
+0x4d, 0x48, 0xbc, 0xdf, 0xfe, 0x9d, 0x20, 0x84, 
+0x05, 0x30, 0x96, 0xf8, 0x85, 0x0b, 0x17, 0x4e, 
+0xf8, 0xcd, 0x8f, 0xb4, 0x7b, 0x81, 0xe0, 0xf3, 
+0xf9, 0x02, 0x11, 0x23, 0x00, 0x91, 0x10, 0x82, 
+0xbb, 0x05, 0x31, 0xea, 0x76, 0x78, 0x2c, 0x6f, 
+0x5f, 0x50, 0x50, 0x10, 0x76, 0xce, 0x6b, 0x34, 
+0x1a, 0x30, 0x0c, 0x03, 0x8f, 0xc7, 0x03, 0xaf, 
+0xd7, 0x3b, 0xae, 0x07, 0xa0, 0x28, 0xea, 0x8e, 
+0x4b, 0x24, 0x00, 0x9c, 0x3a, 0x75, 0x4a, 0xdc, 
+0xb3, 0x67, 0xcf, 0xa5, 0xa3, 0x47, 0x8f, 0xfe, 
+0xd6, 0x60, 0x30, 0x5c, 0xd2, 0x6a, 0xb5, 0x7d, 
+0x00, 0x58, 0xa3, 0xd1, 0xc8, 0x5b, 0xad, 0x56, 
+0xc9, 0x9f, 0x69, 0xda, 0xb8, 0x71, 0xa3, 0x3c, 
+0x11, 0x20, 0x21, 0x00, 0x86, 0x8b, 0x8f, 0x88, 
+0x88, 0xd0, 0x5b, 0x2c, 0x96, 0x84, 0xe1, 0x4b, 
+0x5d, 0x38, 0x6f, 0x3f, 0x75, 0xea, 0x54, 0x24, 
+0x26, 0x26, 0x02, 0xb8, 0xf5, 0x76, 0xaf, 0x5c, 
+0xb9, 0x02, 0x8e, 0xe3, 0x26, 0x03, 0xc2, 0xe5, 
+0x63, 0xc7, 0x8e, 0x6d, 0xd1, 0x68, 0x34, 0x57, 
+0x22, 0x23, 0x23, 0xcd, 0x00, 0x1c, 0x7a, 0xbd, 
+0xde, 0xe7, 0xf3, 0xf9, 0xa4, 0xd8, 0xd8, 0x58, 
+0x49, 0x10, 0x04, 0x29, 0x26, 0x26, 0x46, 0xc4, 
+0x38, 0xb3, 0x4d, 0x41, 0x53, 0xc0, 0x2f, 0xde, 
+0xe3, 0xf1, 0xa8, 0xa2, 0xa2, 0xa2, 0x74, 0x2c, 
+0xcb, 0x26, 0xba, 0x5c, 0xae, 0x94, 0x8c, 0x8c, 
+0x8c, 0x9f, 0x2e, 0x5a, 0xb4, 0x68, 0xd4, 0x20, 
+0x07, 0xb8, 0xf5, 0xe6, 0xfd, 0xe2, 0xfd, 0x82, 
+0xd2, 0xd2, 0xd2, 0x70, 0xf1, 0xe2, 0x45, 0x78, 
+0x3c, 0x9e, 0x3b, 0x02, 0xf0, 0x4f, 0x87, 0xe8, 
+0xe8, 0x68, 0x18, 0x0c, 0x86, 0xb0, 0xd7, 0xcd, 
+0x9e, 0x3d, 0x9b, 0xa6, 0x28, 0x6a, 0x26, 0x80, 
+0xdf, 0x1c, 0x3e, 0x7c, 0xf8, 0x1d, 0x00, 0x5a, 
+0x9a, 0xa6, 0xad, 0x3c, 0xcf, 0xbb, 0x29, 0x8a, 
+0x12, 0x3c, 0x1e, 0x8f, 0x8f, 0x61, 0x18, 0x7e, 
+0x68, 0x68, 0xc8, 0x1d, 0x1d, 0x1d, 0xcd, 0x97, 
+0x95, 0x95, 0x09, 0x84, 0x90, 0x31, 0xb3, 0x4d, 
+0x01, 0x00, 0x7e, 0xf1, 0x46, 0xa3, 0x51, 0xc5, 
+0x71, 0x9c, 0x9e, 0x65, 0xd9, 0x04, 0x96, 0x65, 
+0x53, 0xb3, 0xb2, 0xb2, 0x7e, 0x5a, 0x54, 0x54, 
+0x14, 0x08, 0x6f, 0x47, 0x9b, 0xf3, 0x0c, 0x13, 
+0xea, 0x4a, 0x28, 0x8a, 0x42, 0x5c, 0x5c, 0x1c, 
+0x6e, 0xdc, 0xb8, 0x71, 0x47, 0x00, 0x7e, 0x08, 
+0x3d, 0x3d, 0x3d, 0x63, 0x02, 0x00, 0x6e, 0x05, 
+0x4b, 0x84, 0x90, 0x34, 0x59, 0x96, 0xd7, 0x1f, 
+0x3a, 0x74, 0xe8, 0x03, 0x85, 0x42, 0x61, 0x61, 
+0x18, 0xc6, 0x45, 0x51, 0x14, 0xaf, 0x54, 0x2a, 
+0x5d, 0x0a, 0x85, 0x82, 0x55, 0x2a, 0x95, 0x96, 
+0xc1, 0xc1, 0x41, 0x2b, 0x00, 0x67, 0x59, 0x59, 
+0x99, 0x77, 0x2c, 0x08, 0xcc, 0x70, 0xf1, 0x53, 
+0xa7, 0x4e, 0x55, 0x9a, 0xcd, 0x66, 0x3d, 0xc7, 
+0x71, 0x89, 0x76, 0xbb, 0x3d, 0x75, 0xd6, 0xac, 
+0x59, 0x3f, 0x2f, 0x2a, 0x2a, 0x9a, 0x5b, 0x5c, 
+0x5c, 0x3c, 0xa6, 0xc3, 0x73, 0xbb, 0xdd, 0x10, 
+0x45, 0x11, 0x34, 0x4d, 0x07, 0x95, 0xc7, 0xc6, 
+0xc6, 0xa2, 0xa7, 0xa7, 0x07, 0x92, 0x24, 0xdd, 
+0x11, 0x80, 0x52, 0xa9, 0xc4, 0x8c, 0x19, 0x33, 
+0x46, 0xad, 0xf3, 0x7a, 0xbd, 0x50, 0x2a, 0x95, 
+0x81, 0xdf, 0x39, 0x39, 0x39, 0x34, 0x45, 0x51, 
+0xc9, 0x31, 0x31, 0x31, 0x1b, 0x28, 0x8a, 0x12, 
+0x08, 0x21, 0x32, 0x00, 0x99, 0x10, 0x22, 0x99, 
+0xcd, 0xe6, 0x7f, 0x9e, 0x39, 0x73, 0x66, 0x87, 
+0x56, 0xab, 0xfd, 0x36, 0x32, 0x32, 0xb2, 0x3f, 
+0x36, 0x36, 0x96, 0x1b, 0x0b, 0x02, 0x01, 0x10, 
+0x34, 0xe7, 0xad, 0x56, 0xeb, 0x43, 0x4e, 0xa7, 
+0x33, 0x75, 0xd6, 0xac, 0x59, 0xaf, 0x2c, 0x5a, 
+0xb4, 0xe8, 0xf1, 0xc5, 0x8b, 0x17, 0x2b, 0xc7, 
+0xe3, 0xed, 0xf5, 0x7a, 0x3d, 0xd2, 0xd2, 0xd2, 
+0x40, 0x51, 0x54, 0x50, 0x39, 0xc7, 0x71, 0x70, 
+0xbb, 0xdd, 0xf0, 0x7a, 0xbd, 0xe0, 0x79, 0x1e, 
+0x36, 0x9b, 0x0d, 0x23, 0x9f, 0x43, 0xa9, 0x54, 
+0x62, 0xd1, 0xa2, 0x45, 0x88, 0x8b, 0x8b, 0x0b, 
+0xe9, 0xb7, 0xa1, 0xa1, 0x01, 0xa2, 0x28, 0xa2, 
+0xac, 0xac, 0x2c, 0x3c, 0xbd, 0x61, 0xd6, 0xd2, 
+0xd2, 0xe2, 0x6d, 0x6a, 0x6a, 0x3a, 0x76, 0xf6, 
+0xec, 0xd9, 0x77, 0x0d, 0x06, 0x43, 0xa7, 0x52, 
+0xa9, 0x34, 0x6b, 0xb5, 0x5a, 0x6e, 0xc6, 0x8c, 
+0x19, 0xde, 0x8d, 0x1b, 0x37, 0x86, 0xbc, 0x09, 
+0xba, 0xb2, 0xb2, 0x92, 0xa2, 0x69, 0x5a, 0x21, 
+0x8a, 0xa2, 0xd6, 0xe1, 0x70, 0x24, 0xda, 0xed, 
+0xf6, 0xd4, 0xec, 0xec, 0xec, 0xd7, 0x9f, 0x79, 
+0xe6, 0x99, 0xc7, 0x16, 0x2d, 0x5a, 0xa4, 0xbc, 
+0xdd, 0x29, 0xac, 0x56, 0xeb, 0x98, 0x37, 0xf6, 
+0x7a, 0xbd, 0xb0, 0x5a, 0xad, 0x90, 0x65, 0x19, 
+0x6a, 0xb5, 0x3a, 0x00, 0x42, 0xa5, 0x52, 0x41, 
+0xab, 0xd5, 0x22, 0x32, 0x32, 0x12, 0xd1, 0xd1, 
+0xd1, 0x88, 0x8d, 0x8d, 0x85, 0xcf, 0xe7, 0x83, 
+0xdb, 0xed, 0xbe, 0xa3, 0xf8, 0xe6, 0xe6, 0x66, 
+0x74, 0x77, 0x77, 0xa3, 0xa2, 0xa2, 0x62, 0x5c, 
+0xe2, 0x01, 0x20, 0x25, 0x25, 0x85, 0xa6, 0x69, 
+0x3a, 0xc9, 0x6e, 0xb7, 0x4f, 0xe9, 0xee, 0xee, 
+0xbe, 0x48, 0x51, 0x94, 0x5b, 0xad, 0x56, 0xf3, 
+0x2e, 0x97, 0x4b, 0x28, 0x2e, 0x2e, 0x0e, 0x19, 
+0x01, 0xb4, 0xc9, 0x64, 0xa2, 0x7b, 0x7a, 0x7a, 
+0xd4, 0x3c, 0xcf, 0xc7, 0x72, 0x1c, 0x97, 0x9c, 
+0x99, 0x99, 0xb9, 0xa6, 0xb8, 0xb8, 0xf8, 0x89, 
+0xc2, 0xc2, 0x42, 0x25, 0x00, 0xc8, 0xb2, 0x8c, 
+0x13, 0x27, 0x4e, 0x40, 0x14, 0xc5, 0x3b, 0xde, 
+0x5c, 0x10, 0x04, 0xd8, 0xed, 0x76, 0x0c, 0x0c, 
+0x0c, 0x40, 0xa7, 0xd3, 0x41, 0xa5, 0x0a, 0x4d, 
+0x09, 0xd0, 0x34, 0x0d, 0xa3, 0xd1, 0x08, 0x9e, 
+0xe7, 0x21, 0x8a, 0x62, 0x58, 0xf1, 0xad, 0xad, 
+0xad, 0x38, 0x7e, 0xfc, 0x38, 0x5e, 0x7b, 0xed, 
+0xb5, 0x71, 0x8b, 0xf7, 0x5b, 0x6a, 0x6a, 0x2a, 
+0x4d, 0x08, 0x49, 0x72, 0x3a, 0x9d, 0xf1, 0x66, 
+0xb3, 0xf9, 0x9f, 0x0c, 0xc3, 0x38, 0x08, 0x21, 
+0xfc, 0xd9, 0xb3, 0x67, 0x25, 0x93, 0xc9, 0x14, 
+0x04, 0x81, 0xb2, 0x58, 0x2c, 0xb4, 0x24, 0x49, 
+0x6a, 0x8f, 0xc7, 0x13, 0x9b, 0x9c, 0x9c, 0x5c, 
+0x96, 0x9f, 0x9f, 0xff, 0x54, 0x41, 0x41, 0x41, 
+0x60, 0xc2, 0x11, 0x42, 0x90, 0x9d, 0x9d, 0x3d, 
+0xa1, 0x07, 0x90, 0x24, 0x69, 0x4c, 0xef, 0x6f, 
+0x36, 0x9b, 0xc1, 0x71, 0x5c, 0x58, 0xf1, 0x1d, 
+0x1d, 0x1d, 0xf8, 0xea, 0xab, 0xaf, 0xb0, 0x7e, 
+0xfd, 0xfa, 0xa0, 0xf2, 0xc6, 0xc6, 0x46, 0x98, 
+0xcd, 0xe6, 0x71, 0x3d, 0x43, 0x51, 0x51, 0x91, 
+0xf2, 0x7b, 0xdf, 0xfb, 0xde, 0x3c, 0xb5, 0x5a, 
+0x9d, 0x26, 0xcb, 0xb2, 0x5a, 0xa3, 0xd1, 0x30, 
+0x1d, 0x1d, 0x1d, 0x84, 0x10, 0x42, 0x86, 0x5f, 
+0x47, 0xf1, 0x3c, 0x4f, 0xcb, 0xb2, 0xac, 0x16, 
+0x04, 0x21, 0x76, 0xe6, 0xcc, 0x99, 0x25, 0xcf, 
+0x3f, 0xff, 0x7c, 0xc4, 0xc8, 0xce, 0xb2, 0xb3, 
+0xb3, 0x91, 0x93, 0x93, 0x33, 0xae, 0x1b, 0xfb, 
+0x4d, 0x10, 0x84, 0x51, 0xcb, 0xfb, 0xfb, 0xfb, 
+0x31, 0x30, 0x30, 0x10, 0x56, 0xfc, 0x2f, 0x7e, 
+0xf1, 0x0b, 0xb8, 0xdd, 0x6e, 0xfc, 0xea, 0x57, 
+0xbf, 0xc2, 0xf0, 0x67, 0x3d, 0x74, 0xe8, 0x10, 
+0x9c, 0x4e, 0x67, 0xd0, 0x72, 0x7b, 0x27, 0x33, 
+0x18, 0x0c, 0x94, 0x28, 0x8a, 0x06, 0x8f, 0xc7, 
+0xa3, 0xa2, 0x69, 0x9a, 0xca, 0xca, 0xca, 0x22, 
+0x23, 0xaf, 0xa1, 0x22, 0x23, 0x23, 0x89, 0x2c, 
+0xcb, 0x74, 0x74, 0x74, 0x74, 0x46, 0x46, 0x46, 
+0x46, 0xd8, 0x34, 0xd6, 0x9c, 0x39, 0x73, 0x26, 
+0x04, 0x61, 0x34, 0x00, 0x66, 0xb3, 0x19, 0xfd, 
+0xfd, 0xfd, 0x61, 0xc5, 0xb7, 0xb5, 0xb5, 0xc1, 
+0x62, 0xb1, 0x60, 0xce, 0x9c, 0x39, 0x81, 0x32, 
+0x87, 0xc3, 0x81, 0x6d, 0xdb, 0xb6, 0x21, 0x33, 
+0x33, 0x13, 0x2b, 0x56, 0xac, 0x18, 0xf7, 0xfd, 
+0x87, 0x99, 0x52, 0x14, 0x45, 0x85, 0xc5, 0x62, 
+0xa1, 0x7b, 0x7b, 0x7b, 0x43, 0x01, 0xd8, 0xed, 
+0x76, 0x99, 0x10, 0x22, 0x3a, 0x1c, 0x8e, 0xce, 
+0xaf, 0xbf, 0xfe, 0xda, 0x35, 0x56, 0xe0, 0x34, 
+0x11, 0x08, 0x0e, 0x87, 0x23, 0xe8, 0xb7, 0xd9, 
+0x6c, 0x1e, 0xf3, 0xcd, 0x03, 0xc0, 0x94, 0x29, 
+0x53, 0xf0, 0xf1, 0xc7, 0x1f, 0x07, 0x7e, 0xb7, 
+0xb7, 0xb7, 0xa3, 0xaa, 0xaa, 0x0a, 0xbf, 0xfc, 
+0xe5, 0x2f, 0x47, 0x6d, 0xd3, 0xdb, 0xdb, 0x3b, 
+0xa6, 0x6f, 0xa2, 0x28, 0x8a, 0x88, 0xa2, 0x18, 
+0x01, 0x40, 0x45, 0xd3, 0xb4, 0x42, 0xa5, 0x52, 
+0x51, 0xb8, 0xb5, 0xf2, 0xfd, 0xeb, 0x1a, 0x95, 
+0x4a, 0x25, 0xea, 0x74, 0x3a, 0xb7, 0x24, 0x49, 
+0x7d, 0x57, 0xae, 0x5c, 0x69, 0xfc, 0xec, 0xb3, 
+0xcf, 0xc6, 0x0c, 0xdd, 0xc6, 0x0b, 0xc1, 0xe9, 
+0x74, 0x06, 0x3c, 0xfd, 0x9d, 0x86, 0xbd, 0xdf, 
+0xd2, 0xd2, 0xd2, 0x02, 0xb1, 0x04, 0xcb, 0xb2, 
+0x78, 0xe5, 0x95, 0x57, 0xf0, 0xe3, 0x1f, 0xff, 
+0x38, 0x24, 0xbe, 0x10, 0x45, 0x11, 0xdb, 0xb7, 
+0x6f, 0x87, 0xd5, 0x6a, 0x0d, 0xa9, 0x1b, 0x61, 
+0x84, 0xe7, 0xf9, 0x48, 0x9e, 0xe7, 0xa3, 0x3c, 
+0x1e, 0x8f, 0xd6, 0xe9, 0x74, 0x2a, 0x4d, 0x26, 
+0x13, 0x35, 0xdc, 0x0f, 0xd0, 0x4f, 0x3f, 0xfd, 
+0x34, 0xe9, 0xef, 0xef, 0x27, 0x84, 0x10, 0x32, 
+0x30, 0x30, 0xd0, 0x33, 0x34, 0x34, 0x64, 0x60, 
+0x59, 0x36, 0x79, 0xd6, 0xac, 0x59, 0xcc, 0x08, 
+0x7f, 0x11, 0xb0, 0xa4, 0xa4, 0x24, 0x48, 0x92, 
+0x84, 0xfe, 0xfe, 0xfe, 0x31, 0x21, 0x38, 0x1c, 
+0x0e, 0x48, 0x92, 0x34, 0x2e, 0xf1, 0x23, 0xad, 
+0xbf, 0xbf, 0x1f, 0xab, 0x57, 0xaf, 0x86, 0x4e, 
+0xa7, 0x0b, 0x2a, 0xf7, 0xf9, 0x7c, 0x58, 0xb7, 
+0x6e, 0x1d, 0x56, 0xad, 0x5a, 0x85, 0x99, 0x33, 
+0x67, 0x8e, 0xd9, 0x07, 0x45, 0x51, 0x94, 0xd5, 
+0x6a, 0x4d, 0xe8, 0xec, 0xec, 0x3c, 0x4f, 0x08, 
+0x71, 0x52, 0x14, 0xe5, 0x31, 0x1a, 0x8d, 0x42, 
+0x7a, 0x7a, 0xba, 0x58, 0x5e, 0x5e, 0x8e, 0xca, 
+0xca, 0x4a, 0xd0, 0x26, 0x93, 0x09, 0x31, 0x31, 
+0x31, 0x92, 0xc3, 0xe1, 0x90, 0x24, 0x49, 0x12, 
+0xcc, 0x66, 0x73, 0x97, 0xc5, 0x62, 0x51, 0xb2, 
+0x2c, 0xfb, 0x48, 0x4e, 0x4e, 0xce, 0x3d, 0x41, 
+0x10, 0x04, 0x01, 0x1e, 0x8f, 0x67, 0x54, 0xf1, 
+0x92, 0x24, 0x21, 0x5c, 0xdf, 0xc0, 0xad, 0xac, 
+0x70, 0x44, 0x44, 0xb0, 0x3f, 0x66, 0x59, 0x16, 
+0xd5, 0xd5, 0xd5, 0x58, 0xb3, 0x66, 0x0d, 0x12, 
+0x12, 0x12, 0x42, 0xda, 0x74, 0x74, 0x74, 0xe0, 
+0xf0, 0xe1, 0xc3, 0x98, 0x3e, 0x7d, 0x3a, 0x94, 
+0x4a, 0x25, 0x62, 0x62, 0x62, 0x48, 0x5c, 0x5c, 
+0x9c, 0xc1, 0xe7, 0xf3, 0xa5, 0x5f, 0xb9, 0x72, 
+0xe5, 0x02, 0x21, 0xc4, 0xc3, 0x30, 0x0c, 0xaf, 
+0x56, 0xab, 0x7d, 0xcf, 0x3d, 0xf7, 0x9c, 0x64, 
+0x32, 0x99, 0x64, 0xba, 0xad, 0xad, 0x0d, 0x26, 
+0x93, 0x49, 0x66, 0x59, 0x56, 0x22, 0x84, 0x08, 
+0x84, 0x10, 0xdf, 0xe0, 0xe0, 0xe0, 0x8d, 0xc1, 
+0xc1, 0x41, 0xb0, 0x2c, 0x3b, 0x33, 0x27, 0x27, 
+0x47, 0x71, 0xb7, 0x10, 0xc2, 0x05, 0x39, 0xdb, 
+0xb7, 0x6f, 0xc7, 0xea, 0xd5, 0xab, 0xf1, 0xd4, 
+0x53, 0x4f, 0x21, 0x3e, 0x3e, 0x3e, 0x2c, 0x84, 
+0x91, 0xb6, 0x72, 0xe5, 0x4a, 0x64, 0x67, 0x67, 
+0xe3, 0xb1, 0xc7, 0x1e, 0x0b, 0x2a, 0x97, 0x65, 
+0x19, 0x1f, 0x7d, 0xf4, 0x11, 0xde, 0x7b, 0xef, 
+0x3d, 0x6c, 0xd8, 0xb0, 0x01, 0x1a, 0x8d, 0x26, 
+0x50, 0x17, 0x1f, 0x1f, 0x4f, 0xc5, 0xc6, 0xc6, 
+0x46, 0x0b, 0x82, 0x90, 0xf1, 0xcd, 0x37, 0xdf, 
+0x9c, 0xa6, 0x28, 0xca, 0x45, 0xd3, 0xb4, 0x87, 
+0xe7, 0x79, 0xa1, 0xb8, 0xb8, 0x58, 0xa6, 0x65, 
+0x59, 0xc6, 0xfc, 0xf9, 0xf3, 0x91, 0x96, 0x96, 
+0x26, 0xab, 0xd5, 0x6a, 0x91, 0xa2, 0x28, 0x1f, 
+0x4d, 0xd3, 0xde, 0xdb, 0xd3, 0x81, 0xd8, 0x6c, 
+0xb6, 0x99, 0xb9, 0xb9, 0xb9, 0x13, 0x86, 0x10, 
+0x4e, 0x3c, 0xcf, 0xf3, 0x58, 0xbc, 0x78, 0x31, 
+0x2e, 0x5d, 0xba, 0x84, 0xa4, 0xa4, 0xa4, 0x71, 
+0x8b, 0x07, 0x6e, 0x45, 0x95, 0x25, 0x25, 0x25, 
+0x41, 0xf3, 0x5e, 0x14, 0x45, 0x24, 0x27, 0x27, 
+0xe3, 0xef, 0x7f, 0xff, 0x3b, 0x76, 0xee, 0xdc, 
+0x89, 0xe9, 0xd3, 0xa7, 0x87, 0xb4, 0x8b, 0x8b, 
+0x8b, 0xa3, 0xb4, 0x5a, 0xad, 0xd1, 0xe3, 0xf1, 
+0xc4, 0x77, 0x75, 0x75, 0x9d, 0x8e, 0x88, 0x88, 
+0x70, 0xa8, 0x54, 0x2a, 0xfe, 0xd4, 0xa9, 0x53, 
+0x22, 0x73, 0x9b, 0xa0, 0x4c, 0x08, 0x91, 0xca, 
+0xca, 0xca, 0x7c, 0x5a, 0xad, 0xd6, 0xa1, 0x50, 
+0x28, 0x64, 0x8a, 0xa2, 0xe4, 0xee, 0xee, 0xee, 
+0xba, 0xd6, 0xd6, 0x56, 0x09, 0xc0, 0xf2, 0x8a, 
+0x8a, 0x0a, 0x75, 0x38, 0x08, 0xfe, 0x65, 0xeb, 
+0xec, 0xd9, 0xb3, 0x63, 0x8a, 0x07, 0x80, 0x53, 
+0xa7, 0x4e, 0x21, 0x23, 0x23, 0x03, 0x6a, 0xb5, 
+0x3a, 0xa8, 0xfc, 0xc8, 0x91, 0x23, 0xa0, 0x28, 
+0x0a, 0x4f, 0x3c, 0xf1, 0x44, 0x58, 0x00, 0xcb, 
+0x96, 0x2d, 0x0b, 0xfa, 0xcd, 0xf3, 0x3c, 0x76, 
+0xed, 0xda, 0x05, 0x9f, 0xcf, 0x87, 0x4b, 0x97, 
+0x2e, 0x21, 0x2a, 0x2a, 0x2a, 0x6c, 0xdb, 0xbc, 
+0xbc, 0x3c, 0x45, 0x4f, 0x4f, 0xcf, 0x13, 0x5d, 
+0x5d, 0x5d, 0x39, 0x1c, 0xc7, 0xf5, 0xa9, 0x54, 
+0x2a, 0x16, 0x00, 0x15, 0xd8, 0xc7, 0x8e, 0x80, 
+0xe0, 0xd4, 0x6a, 0xb5, 0xf0, 0x7a, 0xbd, 0xe8, 
+0xe9, 0xe9, 0xf9, 0xb4, 0xb5, 0xb5, 0x15, 0xb2, 
+0x2c, 0x2f, 0xff, 0xd1, 0x8f, 0x7e, 0x34, 0x26, 
+0x84, 0x84, 0x84, 0x04, 0xdc, 0xbc, 0x79, 0x13, 
+0x69, 0x69, 0x69, 0xd0, 0xeb, 0xf5, 0x41, 0xf5, 
+0x07, 0x0f, 0x1e, 0xc4, 0x9a, 0x35, 0x6b, 0x30, 
+0x67, 0xce, 0x1c, 0xcc, 0x9d, 0x3b, 0x37, 0xa8, 
+0xee, 0xcc, 0x99, 0x33, 0xd8, 0xbf, 0x7f, 0x3f, 
+0xb6, 0x6c, 0xd9, 0x12, 0x56, 0xc0, 0x68, 0xb6, 
+0x66, 0xcd, 0x1a, 0x34, 0x37, 0x37, 0x63, 0xf7, 
+0xee, 0xdd, 0x41, 0xe2, 0x0f, 0x1c, 0x38, 0x80, 
+0x81, 0x81, 0x01, 0x2c, 0x5b, 0xb6, 0x2c, 0xe8, 
+0x39, 0x72, 0x73, 0x73, 0x35, 0x67, 0xce, 0x9c, 
+0xf9, 0x8f, 0x93, 0x27, 0x4f, 0xfe, 0x1f, 0xc7, 
+0x71, 0x54, 0x4c, 0x4c, 0x4c, 0x70, 0x42, 0x64, 
+0x24, 0x04, 0xa3, 0xd1, 0x08, 0x00, 0xe8, 0xe9, 
+0xe9, 0xf9, 0xf4, 0x76, 0xfe, 0x6e, 0x4c, 0x08, 
+0xd3, 0xa6, 0x4d, 0x0b, 0xfb, 0x09, 0xec, 0x93, 
+0x4f, 0x3e, 0x41, 0x5f, 0x5f, 0x1f, 0xbe, 0xfc, 
+0xf2, 0x4b, 0x7c, 0xfe, 0xf9, 0xe7, 0x81, 0x72, 
+0x51, 0x14, 0x51, 0x5a, 0x5a, 0x8a, 0xda, 0xda, 
+0xda, 0x31, 0x9d, 0xe2, 0x70, 0xeb, 0xe8, 0xe8, 
+0x40, 0x7b, 0x7b, 0x3b, 0x2c, 0x16, 0x0b, 0x36, 
+0x6f, 0xde, 0x8c, 0x82, 0x82, 0x02, 0xff, 0xf3, 
+0xa3, 0xaa, 0xaa, 0x0a, 0xbf, 0xfb, 0xdd, 0xef, 
+0xf0, 0xf5, 0xd7, 0x5f, 0x87, 0xb4, 0xbb, 0x76, 
+0xed, 0x9a, 0xa7, 0xb7, 0xb7, 0xf7, 0x22, 0x45, 
+0x51, 0x82, 0x52, 0xa9, 0x94, 0x81, 0x51, 0x92, 
+0xa2, 0x7e, 0x08, 0x95, 0x95, 0x95, 0xde, 0xae, 
+0xae, 0x2e, 0x4c, 0x14, 0xc2, 0x88, 0xbe, 0xf0, 
+0xe7, 0x3f, 0xff, 0x19, 0x19, 0x19, 0x19, 0x30, 
+0x9b, 0xcd, 0xa8, 0xaa, 0xaa, 0xc2, 0xb3, 0xcf, 
+0x3e, 0x0b, 0x00, 0xb0, 0x58, 0x2c, 0x28, 0x29, 
+0x29, 0x81, 0xc7, 0xe3, 0x41, 0x4a, 0x4a, 0x4a, 
+0x88, 0x63, 0x1b, 0xcb, 0x9a, 0x9a, 0x9a, 0xb0, 
+0x75, 0xeb, 0x56, 0x68, 0x34, 0x1a, 0xbc, 0xf9, 
+0xe6, 0x9b, 0x81, 0xf2, 0x5d, 0xbb, 0x76, 0xa1, 
+0xa1, 0xa1, 0x01, 0xed, 0xed, 0xed, 0x21, 0x6d, 
+0x7a, 0x7b, 0x7b, 0xa5, 0x8e, 0x8e, 0x8e, 0xae, 
+0xab, 0x57, 0xaf, 0x7e, 0x15, 0x17, 0x17, 0xe7, 
+0x72, 0xbb, 0xdd, 0x42, 0x47, 0x47, 0x87, 0x3c, 
+0x6a, 0x56, 0xf8, 0x36, 0x04, 0xdc, 0x0b, 0x84, 
+0x96, 0x96, 0x16, 0x7c, 0xf9, 0xe5, 0x97, 0xd8, 
+0xb0, 0x61, 0x03, 0xe2, 0xe2, 0xe2, 0xa0, 0xd1, 
+0x68, 0x30, 0x6b, 0xd6, 0xac, 0x40, 0xfd, 0x91, 
+0x23, 0x47, 0x20, 0x08, 0x02, 0xde, 0x7b, 0xef, 
+0x3d, 0x7c, 0xff, 0xfb, 0xdf, 0x0f, 0x69, 0xcf, 
+0x71, 0x5c, 0xd8, 0xd8, 0x7f, 0xed, 0xda, 0xb5, 
+0xa8, 0xa8, 0xa8, 0x80, 0x42, 0xa1, 0x40, 0x74, 
+0x74, 0x34, 0x80, 0x5b, 0x1b, 0xa5, 0x6d, 0xdb, 
+0xb6, 0x61, 0xf7, 0xee, 0xdd, 0x81, 0xe7, 0xf5, 
+0x9b, 0xc5, 0x62, 0x91, 0x9b, 0x9a, 0x9a, 0xcc, 
+0xfb, 0xf6, 0xed, 0xdb, 0xa2, 0x52, 0xa9, 0xfa, 
+0x19, 0x86, 0x71, 0xb8, 0xdd, 0x6e, 0xdf, 0xa7, 
+0x9f, 0x7e, 0x2a, 0x85, 0x4d, 0x8b, 0x0f, 0x87, 
+0x60, 0xb1, 0x58, 0x02, 0xf1, 0xf1, 0x78, 0x20, 
+0xb8, 0x5c, 0x2e, 0x14, 0x15, 0x15, 0x81, 0x61, 
+0x18, 0xe8, 0x74, 0x3a, 0xbc, 0xf6, 0xda, 0x6b, 
+0x28, 0x2c, 0x2c, 0x44, 0x4a, 0x4a, 0x0a, 0x06, 
+0x06, 0x06, 0xe0, 0xf5, 0x7a, 0x71, 0xf8, 0xf0, 
+0x61, 0x14, 0x16, 0x16, 0x8e, 0x2a, 0xfe, 0xfa, 
+0xf5, 0xeb, 0x78, 0xfb, 0xed, 0xb7, 0xf1, 0xc7, 
+0x3f, 0xfe, 0x31, 0xa8, 0xfc, 0xdc, 0xb9, 0x73, 
+0xf0, 0x7a, 0xbd, 0xb8, 0x71, 0xe3, 0x46, 0x90, 
+0x43, 0xb4, 0xdb, 0xed, 0x28, 0x2f, 0x2f, 0xc7, 
+0xde, 0xbd, 0x7b, 0xf1, 0xf8, 0xe3, 0x8f, 0x87, 
+0x88, 0xdf, 0xbb, 0x77, 0xaf, 0xb9, 0xbe, 0xbe, 
+0xbe, 0x52, 0xa9, 0x54, 0x5e, 0xd1, 0xe9, 0x74, 
+0x37, 0x23, 0x22, 0x22, 0xdc, 0x6e, 0xb7, 0x5b, 
+0x24, 0x84, 0x8c, 0xfd, 0x61, 0x64, 0x18, 0x04, 
+0x1f, 0x80, 0x40, 0x70, 0x7f, 0x27, 0x08, 0x43, 
+0x43, 0x43, 0x20, 0x84, 0x40, 0xa1, 0x50, 0x20, 
+0x3e, 0x3e, 0x1e, 0x6b, 0xd7, 0xae, 0x05, 0x70, 
+0x2b, 0x76, 0xcf, 0xcc, 0xcc, 0x0c, 0xcc, 0x7b, 
+0x7f, 0xb9, 0xdf, 0x44, 0x51, 0x0c, 0xbc, 0xc1, 
+0xf7, 0xdf, 0x7f, 0x3f, 0x28, 0xbb, 0x74, 0xf0, 
+0xe0, 0x41, 0x2c, 0x59, 0xb2, 0x04, 0xaf, 0xbe, 
+0xfa, 0x2a, 0x36, 0x6e, 0xdc, 0x18, 0x00, 0x7d, 
+0xed, 0xda, 0x35, 0x7c, 0xf1, 0xc5, 0x17, 0x28, 
+0x2d, 0x2d, 0x45, 0x51, 0x51, 0xd1, 0x68, 0xe2, 
+0xfb, 0xf7, 0xec, 0xd9, 0xb3, 0x89, 0x61, 0x98, 
+0x0b, 0x0a, 0x85, 0xa2, 0x57, 0x14, 0x45, 0xfb, 
+0xe5, 0xcb, 0x97, 0xbd, 0x6d, 0x6d, 0x6d, 0x92, 
+0x2c, 0xcb, 0xa3, 0x4f, 0x81, 0x7b, 0x85, 0xe0, 
+0x72, 0xb9, 0x20, 0xcb, 0x32, 0x7e, 0xff, 0xfb, 
+0xdf, 0x63, 0xde, 0xbc, 0x79, 0x81, 0xf2, 0x03, 
+0x07, 0x0e, 0xa0, 0xac, 0xac, 0x0c, 0xaf, 0xbf, 
+0xfe, 0x3a, 0x32, 0x32, 0x32, 0x46, 0xde, 0x07, 
+0x2b, 0x56, 0xac, 0xc0, 0x5b, 0x6f, 0xbd, 0x85, 
+0xd4, 0xd4, 0xd4, 0xa0, 0x3a, 0x49, 0x92, 0x70, 
+0xe2, 0xc4, 0x09, 0xe4, 0xe4, 0xe4, 0x04, 0x56, 
+0x8a, 0x96, 0x96, 0x16, 0x54, 0x54, 0x54, 0x60, 
+0x68, 0x68, 0x08, 0x0b, 0x16, 0x2c, 0xc0, 0xce, 
+0x9d, 0x3b, 0x43, 0xc4, 0xef, 0xdb, 0xb7, 0x6f, 
+0xa0, 0xbe, 0xbe, 0x7e, 0x33, 0x21, 0xe4, 0xbc, 
+0x5e, 0xaf, 0xef, 0xe1, 0x79, 0xde, 0x96, 0x95, 
+0x95, 0xe5, 0x19, 0x7e, 0x24, 0x6f, 0x5c, 0x1f, 
+0x47, 0x27, 0x0a, 0x41, 0xa3, 0xd1, 0xa0, 0xb6, 
+0xb6, 0x16, 0xcb, 0x97, 0x2f, 0x87, 0x28, 0x8a, 
+0xa8, 0xad, 0xad, 0xc5, 0x82, 0x05, 0x0b, 0x50, 
+0x57, 0x57, 0x87, 0xb5, 0x6b, 0xd7, 0x86, 0x88, 
+0x07, 0x80, 0xf7, 0xdf, 0x7f, 0x1f, 0x3f, 0xfc, 
+0xe1, 0x0f, 0x43, 0xc4, 0x03, 0xc0, 0x92, 0x25, 
+0x4b, 0x60, 0xb1, 0x58, 0x82, 0xa6, 0xc4, 0xf4, 
+0xe9, 0xd3, 0x41, 0x08, 0x81, 0xdb, 0xed, 0xc6, 
+0x4b, 0x2f, 0xbd, 0x84, 0x87, 0x1e, 0x7a, 0x28, 
+0x50, 0x67, 0xb5, 0x5a, 0xe5, 0x7d, 0xfb, 0xf6, 
+0x0d, 0x7c, 0xf6, 0xd9, 0x67, 0x9b, 0x24, 0x49, 
+0x3a, 0x17, 0x15, 0x15, 0xd5, 0xad, 0xd7, 0xeb, 
+0xad, 0x46, 0xa3, 0xd1, 0x33, 0xf2, 0x3c, 0xe2, 
+0x84, 0x0e, 0x4a, 0xfa, 0x8f, 0xbf, 0x5a, 0x2c, 
+0x16, 0x05, 0xcb, 0xb2, 0x3a, 0xab, 0xd5, 0x1a, 
+0xe7, 0x74, 0x3a, 0x93, 0xa7, 0x4c, 0x99, 0x52, 
+0x6e, 0x32, 0x99, 0x46, 0x9d, 0x0e, 0x3b, 0x76, 
+0xec, 0xc0, 0xba, 0x75, 0xeb, 0x90, 0x98, 0x98, 
+0x88, 0x17, 0x5f, 0x7c, 0x11, 0xbf, 0xfe, 0xf5, 
+0xaf, 0x83, 0xea, 0xaf, 0x5d, 0xbb, 0x86, 0x0f, 
+0x3f, 0xfc, 0x10, 0x2f, 0xbf, 0xfc, 0xf2, 0xa8, 
+0xf1, 0xfd, 0xd0, 0xd0, 0x10, 0xe6, 0xce, 0x9d, 
+0x8b, 0xba, 0xba, 0xba, 0x90, 0x5d, 0xe8, 0xae, 
+0x5d, 0xbb, 0xb0, 0x6d, 0xdb, 0x36, 0x1c, 0x3c, 
+0x78, 0x30, 0x10, 0x55, 0xda, 0x6c, 0x36, 0xf9, 
+0xf3, 0xcf, 0x3f, 0x1f, 0xa8, 0xaf, 0xaf, 0xdf, 
+0x04, 0xe0, 0x9c, 0x4e, 0xa7, 0xbb, 0xa1, 0xd7, 
+0xeb, 0xad, 0x0c, 0xc3, 0x78, 0x3e, 0xf8, 0xe0, 
+0x03, 0x01, 0x40, 0x90, 0xe0, 0x09, 0x9f, 0x14, 
+0x9d, 0x28, 0x84, 0xb2, 0xb2, 0x32, 0x3c, 0xf9, 
+0xe4, 0x93, 0xa8, 0xa8, 0xa8, 0x40, 0x64, 0x64, 
+0x64, 0x48, 0x7f, 0xf9, 0xf9, 0xf9, 0x78, 0xf7, 
+0xdd, 0x77, 0x91, 0x97, 0x97, 0x17, 0x52, 0xb7, 
+0x76, 0xed, 0x5a, 0x54, 0x55, 0x55, 0xe1, 0xc5, 
+0x17, 0x5f, 0xc4, 0xd6, 0xad, 0x5b, 0x03, 0xe5, 
+0x3c, 0xcf, 0x43, 0xa1, 0x50, 0x84, 0x64, 0xa0, 
+0x59, 0x96, 0x95, 0xf7, 0xee, 0xdd, 0x3b, 0xb0, 
+0x67, 0xcf, 0x9e, 0x71, 0x89, 0x07, 0xee, 0xe2, 
+0x88, 0xcc, 0x1d, 0xa6, 0x03, 0x01, 0x50, 0x3e, 
+0x1c, 0xc2, 0x93, 0x4f, 0x3e, 0x89, 0xd2, 0xd2, 
+0xd2, 0x10, 0xf1, 0x03, 0x03, 0x03, 0xf8, 0xf6, 
+0xdb, 0x6f, 0xa1, 0xd7, 0xeb, 0x43, 0xc4, 0xbb, 
+0x5c, 0x2e, 0xf4, 0xf6, 0xf6, 0xe2, 0xc4, 0x89, 
+0x13, 0xe8, 0xef, 0xef, 0x0f, 0x04, 0x48, 0x36, 
+0x9b, 0x0d, 0xcd, 0xcd, 0xcd, 0x98, 0x3b, 0x77, 
+0x6e, 0x48, 0xcc, 0x6f, 0xb3, 0xd9, 0xf0, 0xd7, 
+0xbf, 0xfe, 0x75, 0x42, 0xe2, 0x01, 0x80, 0x1a, 
+0xad, 0x70, 0x3c, 0x10, 0x2a, 0x2b, 0x2b, 0xe5, 
+0x98, 0x98, 0x18, 0x9f, 0xc1, 0x60, 0x70, 0x18, 
+0x8d, 0xc6, 0x9b, 0x46, 0xa3, 0xf1, 0x7a, 0x77, 
+0x77, 0xf7, 0xa7, 0xad, 0xad, 0xad, 0xf5, 0x55, 
+0x55, 0x55, 0x6e, 0xff, 0xc8, 0x7a, 0xf9, 0xe5, 
+0x97, 0x31, 0x65, 0xca, 0x94, 0xa0, 0xf6, 0x6f, 
+0xbd, 0xf5, 0x16, 0xf2, 0xf2, 0xf2, 0xf0, 0xd1, 
+0x47, 0x1f, 0xa1, 0xba, 0xba, 0x3a, 0xa8, 0x6e, 
+0xfb, 0xf6, 0xed, 0x58, 0xba, 0x74, 0x29, 0x4e, 
+0x9e, 0x3c, 0x89, 0x96, 0x96, 0x96, 0x80, 0xf8, 
+0xbe, 0xbe, 0x3e, 0xfc, 0xe4, 0x27, 0x3f, 0x41, 
+0x6e, 0x6e, 0x6e, 0x88, 0x78, 0x96, 0x65, 0xd1, 
+0xd8, 0xd8, 0xd8, 0xff, 0xc9, 0x27, 0x9f, 0x6c, 
+0x12, 0x04, 0x61, 0xdc, 0xe2, 0x81, 0x7b, 0x3c, 
+0x2c, 0xed, 0x9f, 0x0e, 0x5d, 0x5d, 0x5d, 0x4a, 
+0x49, 0x92, 0xb4, 0x1c, 0xc7, 0xc5, 0xdb, 0x6c, 
+0xb6, 0xe4, 0x87, 0x1f, 0x7e, 0x78, 0x85, 0xc9, 
+0x64, 0x7a, 0xfe, 0x85, 0x17, 0x5e, 0x08, 0xf1, 
+0x09, 0x3e, 0x9f, 0x0f, 0x46, 0xa3, 0x11, 0x9d, 
+0x9d, 0x9d, 0x21, 0x73, 0x9e, 0xe7, 0x79, 0xa4, 
+0xa6, 0xa6, 0xe2, 0xea, 0xd5, 0xab, 0x41, 0xb9, 
+0x80, 0x7d, 0xfb, 0xf6, 0xa1, 0xb9, 0xb9, 0x19, 
+0x6f, 0xbc, 0xf1, 0x46, 0xc8, 0x0e, 0xd2, 0x2f, 
+0xbe, 0xa6, 0xa6, 0x66, 0x93, 0x2c, 0xcb, 0xe7, 
+0xa2, 0xa2, 0xa2, 0xc6, 0x2d, 0x1e, 0xb8, 0xc7, 
+0x83, 0x92, 0xfe, 0xe9, 0xe0, 0xdf, 0x3b, 0xe8, 
+0xf5, 0xfa, 0x01, 0x00, 0xe8, 0xe9, 0xe9, 0xa9, 
+0x3b, 0x74, 0xe8, 0x10, 0x28, 0x8a, 0x7a, 0x7e, 
+0xd5, 0xaa, 0x55, 0x41, 0xdb, 0xbe, 0x9a, 0x9a, 
+0x1a, 0xf0, 0x3c, 0x1f, 0xd8, 0x29, 0xfa, 0x53, 
+0xe8, 0x1b, 0x36, 0x6c, 0x80, 0xd9, 0x6c, 0xc6, 
+0x3b, 0xef, 0xbc, 0x13, 0x24, 0xbe, 0xa7, 0xa7, 
+0x07, 0x37, 0x6e, 0xdc, 0xc0, 0x1f, 0xfe, 0xf0, 
+0x87, 0x90, 0xef, 0x0c, 0x2c, 0xcb, 0xa2, 0xa9, 
+0xa9, 0xe9, 0xae, 0xc5, 0x03, 0xf7, 0xe9, 0xb8, 
+0xbc, 0xff, 0xdb, 0xa2, 0x56, 0xab, 0x55, 0xf8, 
+0x47, 0x82, 0xc3, 0xe1, 0x48, 0x9e, 0x31, 0x63, 
+0xc6, 0xca, 0xf9, 0xf3, 0xe7, 0x97, 0xae, 0x5c, 
+0xb9, 0x32, 0x00, 0xe1, 0xfc, 0xf9, 0xf3, 0xb8, 
+0x7a, 0xf5, 0x2a, 0x96, 0x2d, 0x5b, 0x06, 0xbb, 
+0xdd, 0x8e, 0xfc, 0xfc, 0x7c, 0x30, 0x0c, 0x03, 
+0xa7, 0xd3, 0x89, 0x7f, 0xfc, 0xe3, 0x1f, 0xe3, 
+0x4e, 0x9b, 0xd9, 0xed, 0x76, 0x34, 0x36, 0x36, 
+0x0e, 0x54, 0x57, 0x57, 0x57, 0xde, 0xad, 0x78, 
+0xe0, 0x3e, 0xfe, 0x5f, 0x20, 0x1c, 0x84, 0xd4, 
+0xd4, 0xd4, 0x95, 0xf3, 0xe7, 0xcf, 0x2f, 0x2d, 
+0x2f, 0x2f, 0x57, 0x8f, 0x6c, 0xd3, 0xdb, 0xdb, 
+0x1b, 0xf0, 0x0f, 0x4b, 0x96, 0x2c, 0x41, 0x63, 
+0x63, 0x63, 0xa0, 0xce, 0xff, 0x2d, 0x71, 0xe4, 
+0xb6, 0x1a, 0xb8, 0xb5, 0x4f, 0x68, 0x6a, 0x6a, 
+0x1a, 0xa8, 0xae, 0xae, 0xde, 0x24, 0x8a, 0xe2, 
+0xd9, 0xbb, 0x15, 0x0f, 0xdc, 0xa5, 0x13, 0x1c, 
+0xcd, 0x64, 0x59, 0x96, 0xeb, 0xeb, 0xeb, 0x25, 
+0xa7, 0xd3, 0xe9, 0xa3, 0x28, 0xca, 0xa9, 0xd7, 
+0xeb, 0x07, 0x74, 0x3a, 0xdd, 0xf5, 0xce, 0xce, 
+0xce, 0xff, 0x6d, 0x6b, 0x6b, 0x6b, 0x68, 0x68, 
+0x68, 0x70, 0x8f, 0x6c, 0x13, 0x1f, 0x1f, 0x0f, 
+0x8a, 0xa2, 0xb0, 0x73, 0xe7, 0x4e, 0x34, 0x34, 
+0x34, 0x04, 0xca, 0x2f, 0x5f, 0xbe, 0x8c, 0x55, 
+0xab, 0x56, 0x85, 0x24, 0x4d, 0x80, 0x5b, 0xe2, 
+0xff, 0xf6, 0xb7, 0xbf, 0xdd, 0xac, 0xa9, 0xa9, 
+0xf9, 0x9f, 0x7b, 0x15, 0x0f, 0xdc, 0xe7, 0x3f, 
+0x4c, 0x8c, 0xcc, 0x27, 0xf8, 0x7d, 0xc2, 0x37, 
+0xdf, 0x7c, 0x53, 0x4b, 0xd3, 0x34, 0x18, 0x86, 
+0x29, 0x59, 0xba, 0x74, 0x69, 0x40, 0x15, 0xc3, 
+0x30, 0x48, 0x4a, 0x4a, 0x82, 0xc5, 0x62, 0x81, 
+0x42, 0xa1, 0x80, 0x2c, 0xcb, 0xd8, 0xb1, 0x63, 
+0x07, 0x6a, 0x6a, 0x6a, 0xf0, 0xea, 0xab, 0xaf, 
+0x86, 0x9c, 0x3b, 0xe0, 0x38, 0x0e, 0xfb, 0xf7, 
+0xef, 0xbf, 0x59, 0x53, 0x53, 0xb3, 0x19, 0xc0, 
+0xe9, 0x7b, 0x15, 0x0f, 0xdc, 0x67, 0x00, 0x40, 
+0x78, 0x08, 0x97, 0x2e, 0x5d, 0xaa, 0x25, 0x84, 
+0x80, 0x10, 0x52, 0x52, 0x5c, 0x5c, 0x1c, 0x80, 
+0x70, 0xf2, 0xe4, 0xc9, 0xc0, 0x6a, 0x70, 0xee, 
+0xdc, 0x39, 0xac, 0x5b, 0xb7, 0x0e, 0x9b, 0x36, 
+0x6d, 0xc2, 0xf2, 0xe5, 0xcb, 0x83, 0xfa, 0xe5, 
+0x38, 0x0e, 0xcd, 0xcd, 0xcd, 0x37, 0xab, 0xab, 
+0xab, 0x37, 0x4b, 0x92, 0x74, 0x46, 0xa3, 0xd1, 
+0x74, 0xdf, 0xab, 0x78, 0x60, 0x92, 0xff, 0x35, 
+0x36, 0xd2, 0x27, 0xd8, 0x6c, 0xb6, 0xe4, 0xec, 
+0xec, 0xec, 0xff, 0x2c, 0x28, 0x28, 0x28, 0x79, 
+0xe6, 0x99, 0x67, 0x82, 0xc6, 0x77, 0x5f, 0x5f, 
+0x1f, 0x4a, 0x4b, 0x4b, 0xe1, 0x74, 0x3a, 0x03, 
+0xb9, 0x45, 0xbf, 0xf9, 0xc5, 0xef, 0xde, 0xbd, 
+0xdb, 0x2f, 0xfe, 0x46, 0x54, 0x54, 0xd4, 0xd0, 
+0xbd, 0x8a, 0x07, 0x26, 0x61, 0x04, 0xf8, 0x2d, 
+0xdc, 0x48, 0xb8, 0x78, 0xf1, 0x62, 0x2d, 0x45, 
+0x51, 0x32, 0x21, 0xa4, 0xf4, 0xe9, 0xa7, 0x9f, 
+0x0e, 0x82, 0x90, 0x99, 0x99, 0x19, 0xb2, 0x51, 
+0xe2, 0x38, 0x0e, 0x07, 0x0e, 0x1c, 0x98, 0x14, 
+0xf1, 0xc0, 0x24, 0x8e, 0x80, 0xc0, 0x0d, 0xc2, 
+0xac, 0x0e, 0xd9, 0xd9, 0xd9, 0x2b, 0x17, 0x2e, 
+0x5c, 0x58, 0x5a, 0x54, 0x54, 0x14, 0x36, 0xb3, 
+0x74, 0x5b, 0xfc, 0x60, 0x75, 0x75, 0xf5, 0x66, 
+0x41, 0x10, 0x4e, 0xdf, 0x6f, 0xf1, 0xc0, 0x24, 
+0x8e, 0x00, 0xbf, 0x85, 0x1b, 0x09, 0xa7, 0x4f, 
+0x9f, 0xae, 0x95, 0x24, 0x49, 0xa0, 0x28, 0xaa, 
+0xbc, 0xa0, 0xa0, 0x40, 0x33, 0x12, 0x02, 0xc7, 
+0x71, 0xf8, 0xe2, 0x8b, 0x2f, 0x06, 0x3f, 0xfe, 
+0xf8, 0xe3, 0xcd, 0xa2, 0x28, 0x9e, 0xd2, 0x68, 
+0x34, 0xdd, 0xf7, 0x5b, 0x3c, 0xf0, 0x00, 0x00, 
+0x00, 0xa3, 0x43, 0x10, 0x04, 0x41, 0x3e, 0x7f, 
+0xfe, 0x7c, 0x1d, 0x4d, 0xd3, 0x3c, 0x21, 0xe4, 
+0xbf, 0xf2, 0xf3, 0xf3, 0xb5, 0xfe, 0x83, 0x50, 
+0xd7, 0xaf, 0x5f, 0x17, 0x8e, 0x1f, 0x3f, 0xde, 
+0x5b, 0x57, 0x57, 0xb7, 0xd5, 0xe3, 0xf1, 0x9c, 
+0x33, 0x18, 0x0c, 0xf7, 0xc5, 0xe1, 0x8d, 0x66, 
+0x0f, 0x04, 0x00, 0x10, 0x0a, 0x21, 0x22, 0x22, 
+0x42, 0x56, 0x2a, 0x95, 0xe2, 0x85, 0x0b, 0x17, 
+0xea, 0xac, 0x56, 0x6b, 0x17, 0xcb, 0xb2, 0x3f, 
+0x8f, 0x8b, 0x8b, 0x33, 0x78, 0x3c, 0x1e, 0xb1, 
+0xab, 0xab, 0xeb, 0x9f, 0xf5, 0xf5, 0xf5, 0x7f, 
+0xd2, 0x68, 0x34, 0xdf, 0xaa, 0xd5, 0x6a, 0xb3, 
+0x5e, 0xaf, 0xb7, 0x4d, 0x86, 0x78, 0xe0, 0x01, 
+0xf8, 0x80, 0x90, 0x1b, 0x0e, 0xcb, 0x27, 0x70, 
+0x1c, 0xa7, 0xb6, 0xdb, 0xed, 0x06, 0x41, 0x10, 
+0xa2, 0x7d, 0x3e, 0x9f, 0x51, 0xa7, 0xd3, 0x19, 
+0xed, 0x76, 0xbb, 0x53, 0xa5, 0x52, 0x71, 0x34, 
+0x4d, 0x0f, 0x31, 0x0c, 0x63, 0x8d, 0x88, 0x88, 
+0xe0, 0xd4, 0x6a, 0xb5, 0x77, 0x32, 0xc4, 0x03, 
+0x0f, 0x70, 0x04, 0xf8, 0x6d, 0x78, 0x3e, 0x81, 
+0xe7, 0x79, 0x49, 0xab, 0xd5, 0xfa, 0x04, 0x41, 
+0x70, 0x52, 0x14, 0x75, 0x53, 0x14, 0x45, 0x26, 
+0x32, 0x32, 0x52, 0xd2, 0x6a, 0xb5, 0x5e, 0x00, 
+0x1e, 0x00, 0x9e, 0xae, 0xae, 0x2e, 0xa1, 0xb5, 
+0xb5, 0x55, 0xc4, 0x24, 0x88, 0x07, 0xbe, 0x03, 
+0x00, 0x00, 0xfc, 0x07, 0x99, 0x65, 0x00, 0x72, 
+0x79, 0x79, 0xb9, 0x04, 0xc0, 0xa7, 0xd5, 0x6a, 
+0x1d, 0x5a, 0xad, 0x96, 0xd2, 0x6a, 0xb5, 0xf2, 
+0xf0, 0xf3, 0xbe, 0x7f, 0xf9, 0xcb, 0x5f, 0xfc, 
+0xd7, 0x4e, 0x8a, 0xfd, 0x3f, 0x0b, 0x3c, 0x81, 
+0x98, 0xf9, 0x7b, 0xef, 0x9d, 0x00, 0x00, 0x00, 
+0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
+0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/bigimgs/contactpersonicon48.png b/source/bitmaps/bigimgs/contactpersonicon48.png
new file mode 100644 (file)
index 0000000..c78062a
Binary files /dev/null and b/source/bitmaps/bigimgs/contactpersonicon48.png differ
diff --git a/source/bitmaps/bigimgs/contactpersonicon64.cpp b/source/bitmaps/bigimgs/contactpersonicon64.cpp
new file mode 100644 (file)
index 0000000..d258f17
--- /dev/null
@@ -0,0 +1,642 @@
+#include <iostream>
+
+#ifndef BIGIMGS_CONTACTPERSONICON64_CPP
+#define BIGIMGS_CONTACTPERSONICON64_CPP
+
+static unsigned char bigimgs_contactpersonicon64_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x01, 0xbb, 0x00, 0x00, 0x01, 
+0xbb, 0x01, 0x3a, 0xec, 0xe3, 0xe2, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x13, 0x3e, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xcd, 0x9b, 0x7b, 
+0x54, 0x54, 0xd7, 0xbd, 0xc7, 0xbf, 0xfb, 0x9c, 
+0x33, 0x33, 0xcc, 0x8b, 0x61, 0x78, 0x07, 0x1f, 
+0x11, 0x08, 0x02, 0xa1, 0xf2, 0x70, 0x79, 0xd3, 
+0xac, 0x68, 0xc2, 0x58, 0x05, 0x34, 0x11, 0x13, 
+0x21, 0xa0, 0xde, 0x5e, 0xb3, 0xe8, 0x4a, 0xaf, 
+0x6d, 0xd3, 0x9a, 0x34, 0x2b, 0x59, 0xd5, 0x2e, 
+0x6b, 0x44, 0x6f, 0xac, 0x49, 0xba, 0xec, 0x4a, 
+0xa3, 0x4d, 0x57, 0xb4, 0x09, 0x15, 0x12, 0x2e, 
+0x86, 0x2c, 0xa2, 0x85, 0x8a, 0x5d, 0xe1, 0x0a, 
+0xf5, 0x81, 0xd1, 0x58, 0xdf, 0x98, 0xf8, 0x40, 
+0x59, 0x91, 0xc7, 0x80, 0x0c, 0x33, 0x67, 0xce, 
+0xbc, 0xce, 0xcc, 0x79, 0xdc, 0x3f, 0x74, 0xa6, 
+0x0c, 0xc3, 0x20, 0xa8, 0x98, 0xfe, 0xfe, 0x9b, 
+0xbd, 0xcf, 0xde, 0xe7, 0x7c, 0x3f, 0x67, 0xef, 
+0xdf, 0xfe, 0xed, 0xdf, 0xd9, 0x43, 0x64, 0x59, 
+0xc6, 0x64, 0x1a, 0x21, 0x84, 0x54, 0x56, 0x56, 
+0x12, 0x00, 0xe8, 0xe8, 0xe8, 0x20, 0x59, 0x59, 
+0x59, 0x32, 0x00, 0x54, 0x56, 0x56, 0xca, 0xf2, 
+0x64, 0xdf, 0x7c, 0x1c, 0x46, 0x26, 0xeb, 0x19, 
+0x86, 0x09, 0xa7, 0x2c, 0x16, 0x0b, 0xcd, 0xf3, 
+0x3c, 0xcd, 0x30, 0x0c, 0xc5, 0x71, 0x9c, 0x4c, 
+0xd3, 0xb4, 0x38, 0x63, 0xc6, 0x0c, 0x01, 0x80, 
+0xf4, 0x5d, 0x83, 0x98, 0x14, 0x00, 0x84, 0x10, 
+0x52, 0x56, 0x56, 0x46, 0x25, 0x26, 0x26, 0x32, 
+0x43, 0x43, 0x43, 0x2a, 0xaf, 0xd7, 0xab, 0xa1, 
+0x69, 0x3a, 0x42, 0x14, 0x45, 0x06, 0x80, 0xa8, 
+0x52, 0xa9, 0x3c, 0x1a, 0x8d, 0xc6, 0xe5, 0xf5, 
+0x7a, 0x79, 0xa7, 0xd3, 0xe9, 0xab, 0xaf, 0xaf, 
+0x97, 0xbe, 0x2b, 0x08, 0xf7, 0x1d, 0x80, 0x5f, 
+0x3c, 0x00, 0xa5, 0x5a, 0xad, 0xd6, 0x38, 0x9d, 
+0xce, 0x68, 0x9e, 0xe7, 0x63, 0x01, 0x24, 0xea, 
+0xf5, 0xfa, 0x87, 0x9d, 0x4e, 0x67, 0xb7, 0xcf, 
+0xe7, 0xeb, 0x53, 0x28, 0x14, 0x83, 0x06, 0x83, 
+0xc1, 0xaa, 0x56, 0xab, 0x1d, 0x49, 0x49, 0x49, 
+0xde, 0xca, 0xca, 0x4a, 0xf1, 0xbb, 0x80, 0xc0, 
+0xdc, 0xcf, 0xce, 0xfc, 0xe2, 0xa7, 0x4e, 0x9d, 
+0xaa, 0x1c, 0x1c, 0x1c, 0xd4, 0x5b, 0xad, 0xd6, 
+0x38, 0x9e, 0xe7, 0xa7, 0x3f, 0xf2, 0xc8, 0x23, 
+0x2f, 0xa4, 0xa6, 0xa6, 0x16, 0xa5, 0xa7, 0xa7, 
+0x47, 0x5c, 0xbf, 0x7e, 0xdd, 0x77, 0xf9, 0xf2, 
+0xe5, 0xb6, 0x0b, 0x17, 0x2e, 0x7c, 0x28, 0x08, 
+0xc2, 0xb7, 0x11, 0x11, 0x11, 0xfd, 0x6e, 0xb7, 
+0xdb, 0x6e, 0x32, 0x99, 0x78, 0x42, 0xc8, 0x03, 
+0x87, 0x70, 0xdf, 0x00, 0x8c, 0x14, 0x6f, 0xb7, 
+0xdb, 0x13, 0x1c, 0x0e, 0x47, 0xca, 0xa3, 0x8f, 
+0x3e, 0xfa, 0xb3, 0x85, 0x0b, 0x17, 0xe6, 0x3f, 
+0xf7, 0xdc, 0x73, 0x11, 0xb7, 0x2f, 0x55, 0x1f, 
+0x39, 0x72, 0x64, 0xb1, 0x46, 0xa3, 0x49, 0x69, 
+0x6f, 0x6f, 0xdf, 0x42, 0x08, 0xa1, 0x95, 0x4a, 
+0x25, 0x99, 0x36, 0x6d, 0x1a, 0xfb, 0x5d, 0x40, 
+0xb8, 0x2f, 0x00, 0x46, 0x8a, 0x67, 0x59, 0x36, 
+0xd1, 0x6e, 0xb7, 0xa7, 0x64, 0x65, 0x65, 0xbd, 
+0x54, 0x54, 0x54, 0xf4, 0x54, 0x71, 0x71, 0xb1, 
+0x6a, 0xf8, 0xf5, 0xf3, 0xe6, 0xcd, 0x53, 0x68, 
+0xb5, 0xda, 0x4c, 0x59, 0x96, 0x37, 0x1c, 0x3d, 
+0x7a, 0x74, 0x8b, 0x2c, 0xcb, 0x24, 0x32, 0x32, 
+0x12, 0xdf, 0x05, 0x84, 0x7b, 0x06, 0x30, 0x96, 
+0xf8, 0xc2, 0xc2, 0xc2, 0x10, 0xf1, 0x7e, 0xcb, 
+0xcb, 0xcb, 0xa3, 0x65, 0x59, 0x4e, 0x07, 0xb0, 
+0xfe, 0xd8, 0xb1, 0x63, 0xbf, 0x95, 0x24, 0x89, 
+0x44, 0x45, 0x45, 0x61, 0xda, 0xb4, 0x69, 0x6c, 
+0x65, 0x65, 0xe5, 0x03, 0x83, 0x70, 0x4f, 0x00, 
+0x86, 0x3b, 0xbc, 0xd1, 0xc4, 0x2f, 0x5d, 0xba, 
+0x74, 0x54, 0xf1, 0x7e, 0x9b, 0x3d, 0x7b, 0x36, 
+0x4d, 0x08, 0x49, 0x07, 0xf0, 0x9b, 0x63, 0xc7, 
+0x8e, 0xbd, 0x09, 0x00, 0x51, 0x51, 0x51, 0xe8, 
+0xec, 0xec, 0x7c, 0x60, 0x10, 0xee, 0x1a, 0xc0, 
+0x70, 0xf1, 0x82, 0x20, 0xe8, 0xed, 0x76, 0x7b, 
+0x82, 0xdd, 0x6e, 0x4f, 0x79, 0xf4, 0xd1, 0x47, 
+0x7f, 0x36, 0x1e, 0xf1, 0x7e, 0xcb, 0xcb, 0xcb, 
+0xa3, 0x09, 0x21, 0x69, 0x84, 0x90, 0x37, 0xda, 
+0xdb, 0xdb, 0x37, 0x03, 0xff, 0x82, 0xf0, 0x20, 
+0xa6, 0xc3, 0x5d, 0x01, 0x18, 0x2e, 0x1e, 0x80, 
+0x8e, 0xe7, 0xf9, 0x04, 0x97, 0xcb, 0x95, 0x9a, 
+0x99, 0x99, 0xf9, 0xd3, 0xc2, 0xc2, 0xc2, 0xfc, 
+0xa5, 0x4b, 0x97, 0xaa, 0xec, 0x76, 0x3b, 0x8e, 
+0x1f, 0x3f, 0x0e, 0x87, 0xc3, 0x81, 0x39, 0x73, 
+0xe6, 0x60, 0xda, 0xb4, 0x69, 0x61, 0xfb, 0xcb, 
+0xcd, 0xcd, 0xa5, 0x01, 0x3c, 0x02, 0x20, 0x08, 
+0xc2, 0x83, 0xf0, 0x09, 0x13, 0x06, 0x30, 0x52, 
+0xbc, 0xcb, 0xe5, 0x4a, 0x70, 0xbb, 0xdd, 0x29, 
+0x19, 0x19, 0x19, 0xff, 0x5d, 0x54, 0x54, 0x64, 
+0x7a, 0xf6, 0xd9, 0x67, 0x55, 0x76, 0xbb, 0x1d, 
+0xfb, 0xf7, 0xef, 0x87, 0xd3, 0xe9, 0x04, 0x00, 
+0xb4, 0xb4, 0xb4, 0xc0, 0x64, 0x32, 0x21, 0x39, 
+0x39, 0x39, 0x6c, 0xbf, 0xb9, 0xb9, 0xb9, 0x14, 
+0x80, 0x54, 0x00, 0xbf, 0x69, 0x6f, 0x6f, 0x7f, 
+0x93, 0xa2, 0x28, 0x99, 0x61, 0x98, 0x49, 0x87, 
+0x30, 0x21, 0x00, 0x23, 0xc5, 0x3b, 0x9d, 0xce, 
+0x44, 0xb7, 0xdb, 0x9d, 0x92, 0x9e, 0x9e, 0xbe, 
+0xba, 0xb0, 0xb0, 0x70, 0xc1, 0x68, 0xe2, 0x01, 
+0x40, 0x92, 0x24, 0xb4, 0xb5, 0xb5, 0x01, 0xc0, 
+0x9d, 0x20, 0xd0, 0xb2, 0x2c, 0xa7, 0x49, 0x92, 
+0xb4, 0xbe, 0xbd, 0xbd, 0xfd, 0x4d, 0x83, 0xc1, 
+0x00, 0x96, 0x65, 0x27, 0x15, 0xc2, 0xb8, 0x01, 
+0x0c, 0x17, 0xaf, 0xd3, 0xe9, 0x74, 0x36, 0x9b, 
+0x2d, 0xc1, 0x2f, 0xbe, 0xa0, 0xa0, 0x60, 0xc1, 
+0xb2, 0x65, 0xcb, 0x46, 0x15, 0xef, 0xb7, 0xf1, 
+0x42, 0xb8, 0xbd, 0x3a, 0xcc, 0x24, 0x84, 0xac, 
+0x3f, 0x7a, 0xf4, 0xe8, 0x96, 0xc9, 0x86, 0x30, 
+0x2e, 0x00, 0xa3, 0x89, 0xb7, 0xd9, 0x6c, 0xa9, 
+0xe9, 0xe9, 0xe9, 0xab, 0x17, 0x2e, 0x5c, 0xb8, 
+0xa0, 0xa4, 0xa4, 0x64, 0x4c, 0xf1, 0x7e, 0x1b, 
+0x2f, 0x84, 0xd9, 0xb3, 0x67, 0xd3, 0x00, 0xd2, 
+0x01, 0x4c, 0x3a, 0x84, 0x3b, 0x02, 0x18, 0x39, 
+0xec, 0x6d, 0x36, 0x5b, 0x02, 0xc7, 0x71, 0xa9, 
+0xe9, 0xe9, 0xe9, 0xab, 0x7f, 0xf0, 0x83, 0x1f, 
+0x2c, 0x28, 0x2d, 0x2d, 0x1d, 0x97, 0x78, 0xbf, 
+0xfd, 0xbb, 0x41, 0x18, 0x13, 0xc0, 0x68, 0x0e, 
+0xcf, 0xe5, 0x72, 0x05, 0xc4, 0x97, 0x95, 0x95, 
+0x4d, 0x48, 0xbc, 0xdf, 0xfe, 0x9d, 0x20, 0x84, 
+0x05, 0x30, 0x96, 0xf8, 0x85, 0x0b, 0x17, 0x4e, 
+0xf8, 0xcd, 0x8f, 0xb4, 0x7b, 0x81, 0xe0, 0xf3, 
+0xf9, 0x02, 0x11, 0x23, 0x00, 0x91, 0x10, 0x82, 
+0xbb, 0x05, 0x31, 0xea, 0x76, 0x78, 0x2c, 0x6f, 
+0x5f, 0x50, 0x50, 0x10, 0x76, 0xce, 0x6b, 0x34, 
+0x1a, 0x30, 0x0c, 0x03, 0x8f, 0xc7, 0x03, 0xaf, 
+0xd7, 0x3b, 0xae, 0x07, 0xa0, 0x28, 0xea, 0x8e, 
+0x4b, 0x24, 0x00, 0x9c, 0x3a, 0x75, 0x4a, 0xdc, 
+0xb3, 0x67, 0xcf, 0xa5, 0xa3, 0x47, 0x8f, 0xfe, 
+0xd6, 0x60, 0x30, 0x5c, 0xd2, 0x6a, 0xb5, 0x7d, 
+0x00, 0x58, 0xa3, 0xd1, 0xc8, 0x5b, 0xad, 0x56, 
+0xc9, 0x9f, 0x69, 0xda, 0xb8, 0x71, 0xa3, 0x3c, 
+0x11, 0x20, 0x21, 0x00, 0x86, 0x8b, 0x8f, 0x88, 
+0x88, 0xd0, 0x5b, 0x2c, 0x96, 0x84, 0xe1, 0x4b, 
+0x5d, 0x38, 0x6f, 0x3f, 0x75, 0xea, 0x54, 0x24, 
+0x26, 0x26, 0x02, 0xb8, 0xf5, 0x76, 0xaf, 0x5c, 
+0xb9, 0x02, 0x8e, 0xe3, 0x26, 0x03, 0xc2, 0xe5, 
+0x63, 0xc7, 0x8e, 0x6d, 0xd1, 0x68, 0x34, 0x57, 
+0x22, 0x23, 0x23, 0xcd, 0x00, 0x1c, 0x7a, 0xbd, 
+0xde, 0xe7, 0xf3, 0xf9, 0xa4, 0xd8, 0xd8, 0x58, 
+0x49, 0x10, 0x04, 0x29, 0x26, 0x26, 0x46, 0xc4, 
+0x38, 0xb3, 0x4d, 0x41, 0x53, 0xc0, 0x2f, 0xde, 
+0xe3, 0xf1, 0xa8, 0xa2, 0xa2, 0xa2, 0x74, 0x2c, 
+0xcb, 0x26, 0xba, 0x5c, 0xae, 0x94, 0x8c, 0x8c, 
+0x8c, 0x9f, 0x2e, 0x5a, 0xb4, 0x68, 0xd4, 0x20, 
+0x07, 0xb8, 0xf5, 0xe6, 0xfd, 0xe2, 0xfd, 0x82, 
+0xd2, 0xd2, 0xd2, 0x70, 0xf1, 0xe2, 0x45, 0x78, 
+0x3c, 0x9e, 0x3b, 0x02, 0xf0, 0x4f, 0x87, 0xe8, 
+0xe8, 0x68, 0x18, 0x0c, 0x86, 0xb0, 0xd7, 0xcd, 
+0x9e, 0x3d, 0x9b, 0xa6, 0x28, 0x6a, 0x26, 0x80, 
+0xdf, 0x1c, 0x3e, 0x7c, 0xf8, 0x1d, 0x00, 0x5a, 
+0x9a, 0xa6, 0xad, 0x3c, 0xcf, 0xbb, 0x29, 0x8a, 
+0x12, 0x3c, 0x1e, 0x8f, 0x8f, 0x61, 0x18, 0x7e, 
+0x68, 0x68, 0xc8, 0x1d, 0x1d, 0x1d, 0xcd, 0x97, 
+0x95, 0x95, 0x09, 0x84, 0x90, 0x31, 0xb3, 0x4d, 
+0x01, 0x00, 0x7e, 0xf1, 0x46, 0xa3, 0x51, 0xc5, 
+0x71, 0x9c, 0x9e, 0x65, 0xd9, 0x04, 0x96, 0x65, 
+0x53, 0xb3, 0xb2, 0xb2, 0x7e, 0x5a, 0x54, 0x54, 
+0x14, 0x08, 0x6f, 0x47, 0x9b, 0xf3, 0x0c, 0x13, 
+0xea, 0x4a, 0x28, 0x8a, 0x42, 0x5c, 0x5c, 0x1c, 
+0x6e, 0xdc, 0xb8, 0x71, 0x47, 0x00, 0x7e, 0x08, 
+0x3d, 0x3d, 0x3d, 0x63, 0x02, 0x00, 0x6e, 0x05, 
+0x4b, 0x84, 0x90, 0x34, 0x59, 0x96, 0xd7, 0x1f, 
+0x3a, 0x74, 0xe8, 0x03, 0x85, 0x42, 0x61, 0x61, 
+0x18, 0xc6, 0x45, 0x51, 0x14, 0xaf, 0x54, 0x2a, 
+0x5d, 0x0a, 0x85, 0x82, 0x55, 0x2a, 0x95, 0x96, 
+0xc1, 0xc1, 0x41, 0x2b, 0x00, 0x67, 0x59, 0x59, 
+0x99, 0x77, 0x2c, 0x08, 0xcc, 0x70, 0xf1, 0x53, 
+0xa7, 0x4e, 0x55, 0x9a, 0xcd, 0x66, 0x3d, 0xc7, 
+0x71, 0x89, 0x76, 0xbb, 0x3d, 0x75, 0xd6, 0xac, 
+0x59, 0x3f, 0x2f, 0x2a, 0x2a, 0x9a, 0x5b, 0x5c, 
+0x5c, 0x3c, 0xa6, 0xc3, 0x73, 0xbb, 0xdd, 0x10, 
+0x45, 0x11, 0x34, 0x4d, 0x07, 0x95, 0xc7, 0xc6, 
+0xc6, 0xa2, 0xa7, 0xa7, 0x07, 0x92, 0x24, 0xdd, 
+0x11, 0x80, 0x52, 0xa9, 0xc4, 0x8c, 0x19, 0x33, 
+0x46, 0xad, 0xf3, 0x7a, 0xbd, 0x50, 0x2a, 0x95, 
+0x81, 0xdf, 0x39, 0x39, 0x39, 0x34, 0x45, 0x51, 
+0xc9, 0x31, 0x31, 0x31, 0x1b, 0x28, 0x8a, 0x12, 
+0x08, 0x21, 0x32, 0x00, 0x99, 0x10, 0x22, 0x99, 
+0xcd, 0xe6, 0x7f, 0x9e, 0x39, 0x73, 0x66, 0x87, 
+0x56, 0xab, 0xfd, 0x36, 0x32, 0x32, 0xb2, 0x3f, 
+0x36, 0x36, 0x96, 0x1b, 0x0b, 0x02, 0x01, 0x10, 
+0x34, 0xe7, 0xad, 0x56, 0xeb, 0x43, 0x4e, 0xa7, 
+0x33, 0x75, 0xd6, 0xac, 0x59, 0xaf, 0x2c, 0x5a, 
+0xb4, 0xe8, 0xf1, 0xc5, 0x8b, 0x17, 0x2b, 0xc7, 
+0xe3, 0xed, 0xf5, 0x7a, 0x3d, 0xd2, 0xd2, 0xd2, 
+0x40, 0x51, 0x54, 0x50, 0x39, 0xc7, 0x71, 0x70, 
+0xbb, 0xdd, 0xf0, 0x7a, 0xbd, 0xe0, 0x79, 0x1e, 
+0x36, 0x9b, 0x0d, 0x23, 0x9f, 0x43, 0xa9, 0x54, 
+0x62, 0xd1, 0xa2, 0x45, 0x88, 0x8b, 0x8b, 0x0b, 
+0xe9, 0xb7, 0xa1, 0xa1, 0x01, 0xa2, 0x28, 0xa2, 
+0xac, 0xac, 0x2c, 0x3c, 0xbd, 0x61, 0xd6, 0xd2, 
+0xd2, 0xe2, 0x6d, 0x6a, 0x6a, 0x3a, 0x76, 0xf6, 
+0xec, 0xd9, 0x77, 0x0d, 0x06, 0x43, 0xa7, 0x52, 
+0xa9, 0x34, 0x6b, 0xb5, 0x5a, 0x6e, 0xc6, 0x8c, 
+0x19, 0xde, 0x8d, 0x1b, 0x37, 0x86, 0xbc, 0x09, 
+0xba, 0xb2, 0xb2, 0x92, 0xa2, 0x69, 0x5a, 0x21, 
+0x8a, 0xa2, 0xd6, 0xe1, 0x70, 0x24, 0xda, 0xed, 
+0xf6, 0xd4, 0xec, 0xec, 0xec, 0xd7, 0x9f, 0x79, 
+0xe6, 0x99, 0xc7, 0x16, 0x2d, 0x5a, 0xa4, 0xbc, 
+0xdd, 0x29, 0xac, 0x56, 0xeb, 0x98, 0x37, 0xf6, 
+0x7a, 0xbd, 0xb0, 0x5a, 0xad, 0x90, 0x65, 0x19, 
+0x6a, 0xb5, 0x3a, 0x00, 0x42, 0xa5, 0x52, 0x41, 
+0xab, 0xd5, 0x22, 0x32, 0x32, 0x12, 0xd1, 0xd1, 
+0xd1, 0x88, 0x8d, 0x8d, 0x85, 0xcf, 0xe7, 0x83, 
+0xdb, 0xed, 0xbe, 0xa3, 0xf8, 0xe6, 0xe6, 0x66, 
+0x74, 0x77, 0x77, 0xa3, 0xa2, 0xa2, 0x62, 0x5c, 
+0xe2, 0x01, 0x20, 0x25, 0x25, 0x85, 0xa6, 0x69, 
+0x3a, 0xc9, 0x6e, 0xb7, 0x4f, 0xe9, 0xee, 0xee, 
+0xbe, 0x48, 0x51, 0x94, 0x5b, 0xad, 0x56, 0xf3, 
+0x2e, 0x97, 0x4b, 0x28, 0x2e, 0x2e, 0x0e, 0x19, 
+0x01, 0xb4, 0xc9, 0x64, 0xa2, 0x7b, 0x7a, 0x7a, 
+0xd4, 0x3c, 0xcf, 0xc7, 0x72, 0x1c, 0x97, 0x9c, 
+0x99, 0x99, 0xb9, 0xa6, 0xb8, 0xb8, 0xf8, 0x89, 
+0xc2, 0xc2, 0x42, 0x25, 0x00, 0xc8, 0xb2, 0x8c, 
+0x13, 0x27, 0x4e, 0x40, 0x14, 0xc5, 0x3b, 0xde, 
+0x5c, 0x10, 0x04, 0xd8, 0xed, 0x76, 0x0c, 0x0c, 
+0x0c, 0x40, 0xa7, 0xd3, 0x41, 0xa5, 0x0a, 0x4d, 
+0x09, 0xd0, 0x34, 0x0d, 0xa3, 0xd1, 0x08, 0x9e, 
+0xe7, 0x21, 0x8a, 0x62, 0x58, 0xf1, 0xad, 0xad, 
+0xad, 0x38, 0x7e, 0xfc, 0x38, 0x5e, 0x7b, 0xed, 
+0xb5, 0x71, 0x8b, 0xf7, 0x5b, 0x6a, 0x6a, 0x2a, 
+0x4d, 0x08, 0x49, 0x72, 0x3a, 0x9d, 0xf1, 0x66, 
+0xb3, 0xf9, 0x9f, 0x0c, 0xc3, 0x38, 0x08, 0x21, 
+0xfc, 0xd9, 0xb3, 0x67, 0x25, 0x93, 0xc9, 0x14, 
+0x04, 0x81, 0xb2, 0x58, 0x2c, 0xb4, 0x24, 0x49, 
+0x6a, 0x8f, 0xc7, 0x13, 0x9b, 0x9c, 0x9c, 0x5c, 
+0x96, 0x9f, 0x9f, 0xff, 0x54, 0x41, 0x41, 0x41, 
+0x60, 0xc2, 0x11, 0x42, 0x90, 0x9d, 0x9d, 0x3d, 
+0xa1, 0x07, 0x90, 0x24, 0x69, 0x4c, 0xef, 0x6f, 
+0x36, 0x9b, 0xc1, 0x71, 0x5c, 0x58, 0xf1, 0x1d, 
+0x1d, 0x1d, 0xf8, 0xea, 0xab, 0xaf, 0xb0, 0x7e, 
+0xfd, 0xfa, 0xa0, 0xf2, 0xc6, 0xc6, 0x46, 0x98, 
+0xcd, 0xe6, 0x71, 0x3d, 0x43, 0x51, 0x51, 0x91, 
+0xf2, 0x7b, 0xdf, 0xfb, 0xde, 0x3c, 0xb5, 0x5a, 
+0x9d, 0x26, 0xcb, 0xb2, 0x5a, 0xa3, 0xd1, 0x30, 
+0x1d, 0x1d, 0x1d, 0x84, 0x10, 0x42, 0x86, 0x5f, 
+0x47, 0xf1, 0x3c, 0x4f, 0xcb, 0xb2, 0xac, 0x16, 
+0x04, 0x21, 0x76, 0xe6, 0xcc, 0x99, 0x25, 0xcf, 
+0x3f, 0xff, 0x7c, 0xc4, 0xc8, 0xce, 0xb2, 0xb3, 
+0xb3, 0x91, 0x93, 0x93, 0x33, 0xae, 0x1b, 0xfb, 
+0x4d, 0x10, 0x84, 0x51, 0xcb, 0xfb, 0xfb, 0xfb, 
+0x31, 0x30, 0x30, 0x10, 0x56, 0xfc, 0x2f, 0x7e, 
+0xf1, 0x0b, 0xb8, 0xdd, 0x6e, 0xfc, 0xea, 0x57, 
+0xbf, 0xc2, 0xf0, 0x67, 0x3d, 0x74, 0xe8, 0x10, 
+0x9c, 0x4e, 0x67, 0xd0, 0x72, 0x7b, 0x27, 0x33, 
+0x18, 0x0c, 0x94, 0x28, 0x8a, 0x06, 0x8f, 0xc7, 
+0xa3, 0xa2, 0x69, 0x9a, 0xca, 0xca, 0xca, 0x22, 
+0x23, 0xaf, 0xa1, 0x22, 0x23, 0x23, 0x89, 0x2c, 
+0xcb, 0x74, 0x74, 0x74, 0x74, 0x46, 0x46, 0x46, 
+0x46, 0xd8, 0x34, 0xd6, 0x9c, 0x39, 0x73, 0x26, 
+0x04, 0x61, 0x34, 0x00, 0x66, 0xb3, 0x19, 0xfd, 
+0xfd, 0xfd, 0x61, 0xc5, 0xb7, 0xb5, 0xb5, 0xc1, 
+0x62, 0xb1, 0x60, 0xce, 0x9c, 0x39, 0x81, 0x32, 
+0x87, 0xc3, 0x81, 0x6d, 0xdb, 0xb6, 0x21, 0x33, 
+0x33, 0x13, 0x2b, 0x56, 0xac, 0x18, 0xf7, 0xfd, 
+0x87, 0x99, 0x52, 0x14, 0x45, 0x85, 0xc5, 0x62, 
+0xa1, 0x7b, 0x7b, 0x7b, 0x43, 0x01, 0xd8, 0xed, 
+0x76, 0x99, 0x10, 0x22, 0x3a, 0x1c, 0x8e, 0xce, 
+0xaf, 0xbf, 0xfe, 0xda, 0x35, 0x56, 0xe0, 0x34, 
+0x11, 0x08, 0x0e, 0x87, 0x23, 0xe8, 0xb7, 0xd9, 
+0x6c, 0x1e, 0xf3, 0xcd, 0x03, 0xc0, 0x94, 0x29, 
+0x53, 0xf0, 0xf1, 0xc7, 0x1f, 0x07, 0x7e, 0xb7, 
+0xb7, 0xb7, 0xa3, 0xaa, 0xaa, 0x0a, 0xbf, 0xfc, 
+0xe5, 0x2f, 0x47, 0x6d, 0xd3, 0xdb, 0xdb, 0x3b, 
+0xa6, 0x6f, 0xa2, 0x28, 0x8a, 0x88, 0xa2, 0x18, 
+0x01, 0x40, 0x45, 0xd3, 0xb4, 0x42, 0xa5, 0x52, 
+0x51, 0xb8, 0xb5, 0xf2, 0xfd, 0xeb, 0x1a, 0x95, 
+0x4a, 0x25, 0xea, 0x74, 0x3a, 0xb7, 0x24, 0x49, 
+0x7d, 0x57, 0xae, 0x5c, 0x69, 0xfc, 0xec, 0xb3, 
+0xcf, 0xc6, 0x0c, 0xdd, 0xc6, 0x0b, 0xc1, 0xe9, 
+0x74, 0x06, 0x3c, 0xfd, 0x9d, 0x86, 0xbd, 0xdf, 
+0xd2, 0xd2, 0xd2, 0x02, 0xb1, 0x04, 0xcb, 0xb2, 
+0x78, 0xe5, 0x95, 0x57, 0xf0, 0xe3, 0x1f, 0xff, 
+0x38, 0x24, 0xbe, 0x10, 0x45, 0x11, 0xdb, 0xb7, 
+0x6f, 0x87, 0xd5, 0x6a, 0x0d, 0xa9, 0x1b, 0x61, 
+0x84, 0xe7, 0xf9, 0x48, 0x9e, 0xe7, 0xa3, 0x3c, 
+0x1e, 0x8f, 0xd6, 0xe9, 0x74, 0x2a, 0x4d, 0x26, 
+0x13, 0x35, 0xdc, 0x0f, 0xd0, 0x4f, 0x3f, 0xfd, 
+0x34, 0xe9, 0xef, 0xef, 0x27, 0x84, 0x10, 0x32, 
+0x30, 0x30, 0xd0, 0x33, 0x34, 0x34, 0x64, 0x60, 
+0x59, 0x36, 0x79, 0xd6, 0xac, 0x59, 0xcc, 0x08, 
+0x7f, 0x11, 0xb0, 0xa4, 0xa4, 0x24, 0x48, 0x92, 
+0x84, 0xfe, 0xfe, 0xfe, 0x31, 0x21, 0x38, 0x1c, 
+0x0e, 0x48, 0x92, 0x34, 0x2e, 0xf1, 0x23, 0xad, 
+0xbf, 0xbf, 0x1f, 0xab, 0x57, 0xaf, 0x86, 0x4e, 
+0xa7, 0x0b, 0x2a, 0xf7, 0xf9, 0x7c, 0x58, 0xb7, 
+0x6e, 0x1d, 0x56, 0xad, 0x5a, 0x85, 0x99, 0x33, 
+0x67, 0x8e, 0xd9, 0x07, 0x45, 0x51, 0x94, 0xd5, 
+0x6a, 0x4d, 0xe8, 0xec, 0xec, 0x3c, 0x4f, 0x08, 
+0x71, 0x52, 0x14, 0xe5, 0x31, 0x1a, 0x8d, 0x42, 
+0x7a, 0x7a, 0xba, 0x58, 0x5e, 0x5e, 0x8e, 0xca, 
+0xca, 0x4a, 0xd0, 0x26, 0x93, 0x09, 0x31, 0x31, 
+0x31, 0x92, 0xc3, 0xe1, 0x90, 0x24, 0x49, 0x12, 
+0xcc, 0x66, 0x73, 0x97, 0xc5, 0x62, 0x51, 0xb2, 
+0x2c, 0xfb, 0x48, 0x4e, 0x4e, 0xce, 0x3d, 0x41, 
+0x10, 0x04, 0x01, 0x1e, 0x8f, 0x67, 0x54, 0xf1, 
+0x92, 0x24, 0x21, 0x5c, 0xdf, 0xc0, 0xad, 0xac, 
+0x70, 0x44, 0x44, 0xb0, 0x3f, 0x66, 0x59, 0x16, 
+0xd5, 0xd5, 0xd5, 0x58, 0xb3, 0x66, 0x0d, 0x12, 
+0x12, 0x12, 0x42, 0xda, 0x74, 0x74, 0x74, 0xe0, 
+0xf0, 0xe1, 0xc3, 0x98, 0x3e, 0x7d, 0x3a, 0x94, 
+0x4a, 0x25, 0x62, 0x62, 0x62, 0x48, 0x5c, 0x5c, 
+0x9c, 0xc1, 0xe7, 0xf3, 0xa5, 0x5f, 0xb9, 0x72, 
+0xe5, 0x02, 0x21, 0xc4, 0xc3, 0x30, 0x0c, 0xaf, 
+0x56, 0xab, 0x7d, 0xcf, 0x3d, 0xf7, 0x9c, 0x64, 
+0x32, 0x99, 0x64, 0xba, 0xad, 0xad, 0x0d, 0x26, 
+0x93, 0x49, 0x66, 0x59, 0x56, 0x22, 0x84, 0x08, 
+0x84, 0x10, 0xdf, 0xe0, 0xe0, 0xe0, 0x8d, 0xc1, 
+0xc1, 0x41, 0xb0, 0x2c, 0x3b, 0x33, 0x27, 0x27, 
+0x47, 0x71, 0xb7, 0x10, 0xc2, 0x05, 0x39, 0xdb, 
+0xb7, 0x6f, 0xc7, 0xea, 0xd5, 0xab, 0xf1, 0xd4, 
+0x53, 0x4f, 0x21, 0x3e, 0x3e, 0x3e, 0x2c, 0x84, 
+0x91, 0xb6, 0x72, 0xe5, 0x4a, 0x64, 0x67, 0x67, 
+0xe3, 0xb1, 0xc7, 0x1e, 0x0b, 0x2a, 0x97, 0x65, 
+0x19, 0x1f, 0x7d, 0xf4, 0x11, 0xde, 0x7b, 0xef, 
+0x3d, 0x6c, 0xd8, 0xb0, 0x01, 0x1a, 0x8d, 0x26, 
+0x50, 0x17, 0x1f, 0x1f, 0x4f, 0xc5, 0xc6, 0xc6, 
+0x46, 0x0b, 0x82, 0x90, 0xf1, 0xcd, 0x37, 0xdf, 
+0x9c, 0xa6, 0x28, 0xca, 0x45, 0xd3, 0xb4, 0x87, 
+0xe7, 0x79, 0xa1, 0xb8, 0xb8, 0x58, 0xa6, 0x65, 
+0x59, 0xc6, 0xfc, 0xf9, 0xf3, 0x91, 0x96, 0x96, 
+0x26, 0xab, 0xd5, 0x6a, 0x91, 0xa2, 0x28, 0x1f, 
+0x4d, 0xd3, 0xde, 0xdb, 0xd3, 0x81, 0xd8, 0x6c, 
+0xb6, 0x99, 0xb9, 0xb9, 0xb9, 0x13, 0x86, 0x10, 
+0x4e, 0x3c, 0xcf, 0xf3, 0x58, 0xbc, 0x78, 0x31, 
+0x2e, 0x5d, 0xba, 0x84, 0xa4, 0xa4, 0xa4, 0x71, 
+0x8b, 0x07, 0x6e, 0x45, 0x95, 0x25, 0x25, 0x25, 
+0x41, 0xf3, 0x5e, 0x14, 0x45, 0x24, 0x27, 0x27, 
+0xe3, 0xef, 0x7f, 0xff, 0x3b, 0x76, 0xee, 0xdc, 
+0x89, 0xe9, 0xd3, 0xa7, 0x87, 0xb4, 0x8b, 0x8b, 
+0x8b, 0xa3, 0xb4, 0x5a, 0xad, 0xd1, 0xe3, 0xf1, 
+0xc4, 0x77, 0x75, 0x75, 0x9d, 0x8e, 0x88, 0x88, 
+0x70, 0xa8, 0x54, 0x2a, 0xfe, 0xd4, 0xa9, 0x53, 
+0x22, 0x73, 0x9b, 0xa0, 0x4c, 0x08, 0x91, 0xca, 
+0xca, 0xca, 0x7c, 0x5a, 0xad, 0xd6, 0xa1, 0x50, 
+0x28, 0x64, 0x8a, 0xa2, 0xe4, 0xee, 0xee, 0xee, 
+0xba, 0xd6, 0xd6, 0x56, 0x09, 0xc0, 0xf2, 0x8a, 
+0x8a, 0x0a, 0x75, 0x38, 0x08, 0xfe, 0x65, 0xeb, 
+0xec, 0xd9, 0xb3, 0x63, 0x8a, 0x07, 0x80, 0x53, 
+0xa7, 0x4e, 0x21, 0x23, 0x23, 0x03, 0x6a, 0xb5, 
+0x3a, 0xa8, 0xfc, 0xc8, 0x91, 0x23, 0xa0, 0x28, 
+0x0a, 0x4f, 0x3c, 0xf1, 0x44, 0x58, 0x00, 0xcb, 
+0x96, 0x2d, 0x0b, 0xfa, 0xcd, 0xf3, 0x3c, 0x76, 
+0xed, 0xda, 0x05, 0x9f, 0xcf, 0x87, 0x4b, 0x97, 
+0x2e, 0x21, 0x2a, 0x2a, 0x2a, 0x6c, 0xdb, 0xbc, 
+0xbc, 0x3c, 0x45, 0x4f, 0x4f, 0xcf, 0x13, 0x5d, 
+0x5d, 0x5d, 0x39, 0x1c, 0xc7, 0xf5, 0xa9, 0x54, 
+0x2a, 0x16, 0x00, 0x15, 0xd8, 0xc7, 0x8e, 0x80, 
+0xe0, 0xd4, 0x6a, 0xb5, 0xf0, 0x7a, 0xbd, 0xe8, 
+0xe9, 0xe9, 0xf9, 0xb4, 0xb5, 0xb5, 0x15, 0xb2, 
+0x2c, 0x2f, 0xff, 0xd1, 0x8f, 0x7e, 0x34, 0x26, 
+0x84, 0x84, 0x84, 0x04, 0xdc, 0xbc, 0x79, 0x13, 
+0x69, 0x69, 0x69, 0xd0, 0xeb, 0xf5, 0x41, 0xf5, 
+0x07, 0x0f, 0x1e, 0xc4, 0x9a, 0x35, 0x6b, 0x30, 
+0x67, 0xce, 0x1c, 0xcc, 0x9d, 0x3b, 0x37, 0xa8, 
+0xee, 0xcc, 0x99, 0x33, 0xd8, 0xbf, 0x7f, 0x3f, 
+0xb6, 0x6c, 0xd9, 0x12, 0x56, 0xc0, 0x68, 0xb6, 
+0x66, 0xcd, 0x1a, 0x34, 0x37, 0x37, 0x63, 0xf7, 
+0xee, 0xdd, 0x41, 0xe2, 0x0f, 0x1c, 0x38, 0x80, 
+0x81, 0x81, 0x01, 0x2c, 0x5b, 0xb6, 0x2c, 0xe8, 
+0x39, 0x72, 0x73, 0x73, 0x35, 0x67, 0xce, 0x9c, 
+0xf9, 0x8f, 0x93, 0x27, 0x4f, 0xfe, 0x1f, 0xc7, 
+0x71, 0x54, 0x4c, 0x4c, 0x4c, 0x70, 0x42, 0x64, 
+0x24, 0x04, 0xa3, 0xd1, 0x08, 0x00, 0xe8, 0xe9, 
+0xe9, 0xf9, 0xf4, 0x76, 0xfe, 0x6e, 0x4c, 0x08, 
+0xd3, 0xa6, 0x4d, 0x0b, 0xfb, 0x09, 0xec, 0x93, 
+0x4f, 0x3e, 0x41, 0x5f, 0x5f, 0x1f, 0xbe, 0xfc, 
+0xf2, 0x4b, 0x7c, 0xfe, 0xf9, 0xe7, 0x81, 0x72, 
+0x51, 0x14, 0x51, 0x5a, 0x5a, 0x8a, 0xda, 0xda, 
+0xda, 0x31, 0x9d, 0xe2, 0x70, 0xeb, 0xe8, 0xe8, 
+0x40, 0x7b, 0x7b, 0x3b, 0x2c, 0x16, 0x0b, 0x36, 
+0x6f, 0xde, 0x8c, 0x82, 0x82, 0x02, 0xff, 0xf3, 
+0xa3, 0xaa, 0xaa, 0x0a, 0xbf, 0xfb, 0xdd, 0xef, 
+0xf0, 0xf5, 0xd7, 0x5f, 0x87, 0xb4, 0xbb, 0x76, 
+0xed, 0x9a, 0xa7, 0xb7, 0xb7, 0xf7, 0x22, 0x45, 
+0x51, 0x82, 0x52, 0xa9, 0x94, 0x81, 0x51, 0x92, 
+0xa2, 0x7e, 0x08, 0x95, 0x95, 0x95, 0xde, 0xae, 
+0xae, 0x2e, 0x4c, 0x14, 0xc2, 0x88, 0xbe, 0xf0, 
+0xe7, 0x3f, 0xff, 0x19, 0x19, 0x19, 0x19, 0x30, 
+0x9b, 0xcd, 0xa8, 0xaa, 0xaa, 0xc2, 0xb3, 0xcf, 
+0x3e, 0x0b, 0x00, 0xb0, 0x58, 0x2c, 0x28, 0x29, 
+0x29, 0x81, 0xc7, 0xe3, 0x41, 0x4a, 0x4a, 0x4a, 
+0x88, 0x63, 0x1b, 0xcb, 0x9a, 0x9a, 0x9a, 0xb0, 
+0x75, 0xeb, 0x56, 0x68, 0x34, 0x1a, 0xbc, 0xf9, 
+0xe6, 0x9b, 0x81, 0xf2, 0x5d, 0xbb, 0x76, 0xa1, 
+0xa1, 0xa1, 0x01, 0xed, 0xed, 0xed, 0x21, 0x6d, 
+0x7a, 0x7b, 0x7b, 0xa5, 0x8e, 0x8e, 0x8e, 0xae, 
+0xab, 0x57, 0xaf, 0x7e, 0x15, 0x17, 0x17, 0xe7, 
+0x72, 0xbb, 0xdd, 0x42, 0x47, 0x47, 0x87, 0x3c, 
+0x6a, 0x56, 0xf8, 0x36, 0x04, 0xdc, 0x0b, 0x84, 
+0x96, 0x96, 0x16, 0x7c, 0xf9, 0xe5, 0x97, 0xd8, 
+0xb0, 0x61, 0x03, 0xe2, 0xe2, 0xe2, 0xa0, 0xd1, 
+0x68, 0x30, 0x6b, 0xd6, 0xac, 0x40, 0xfd, 0x91, 
+0x23, 0x47, 0x20, 0x08, 0x02, 0xde, 0x7b, 0xef, 
+0x3d, 0x7c, 0xff, 0xfb, 0xdf, 0x0f, 0x69, 0xcf, 
+0x71, 0x5c, 0xd8, 0xd8, 0x7f, 0xed, 0xda, 0xb5, 
+0xa8, 0xa8, 0xa8, 0x80, 0x42, 0xa1, 0x40, 0x74, 
+0x74, 0x34, 0x80, 0x5b, 0x1b, 0xa5, 0x6d, 0xdb, 
+0xb6, 0x61, 0xf7, 0xee, 0xdd, 0x81, 0xe7, 0xf5, 
+0x9b, 0xc5, 0x62, 0x91, 0x9b, 0x9a, 0x9a, 0xcc, 
+0xfb, 0xf6, 0xed, 0xdb, 0xa2, 0x52, 0xa9, 0xfa, 
+0x19, 0x86, 0x71, 0xb8, 0xdd, 0x6e, 0xdf, 0xa7, 
+0x9f, 0x7e, 0x2a, 0x85, 0x4d, 0x8b, 0x0f, 0x87, 
+0x60, 0xb1, 0x58, 0x02, 0xf1, 0xf1, 0x78, 0x20, 
+0xb8, 0x5c, 0x2e, 0x14, 0x15, 0x15, 0x81, 0x61, 
+0x18, 0xe8, 0x74, 0x3a, 0xbc, 0xf6, 0xda, 0x6b, 
+0x28, 0x2c, 0x2c, 0x44, 0x4a, 0x4a, 0x0a, 0x06, 
+0x06, 0x06, 0xe0, 0xf5, 0x7a, 0x71, 0xf8, 0xf0, 
+0x61, 0x14, 0x16, 0x16, 0x8e, 0x2a, 0xfe, 0xfa, 
+0xf5, 0xeb, 0x78, 0xfb, 0xed, 0xb7, 0xf1, 0xc7, 
+0x3f, 0xfe, 0x31, 0xa8, 0xfc, 0xdc, 0xb9, 0x73, 
+0xf0, 0x7a, 0xbd, 0xb8, 0x71, 0xe3, 0x46, 0x90, 
+0x43, 0xb4, 0xdb, 0xed, 0x28, 0x2f, 0x2f, 0xc7, 
+0xde, 0xbd, 0x7b, 0xf1, 0xf8, 0xe3, 0x8f, 0x87, 
+0x88, 0xdf, 0xbb, 0x77, 0xaf, 0xb9, 0xbe, 0xbe, 
+0xbe, 0x52, 0xa9, 0x54, 0x5e, 0xd1, 0xe9, 0x74, 
+0x37, 0x23, 0x22, 0x22, 0xdc, 0x6e, 0xb7, 0x5b, 
+0x24, 0x84, 0x8c, 0xfd, 0x61, 0x64, 0x18, 0x04, 
+0x1f, 0x80, 0x40, 0x70, 0x7f, 0x27, 0x08, 0x43, 
+0x43, 0x43, 0x20, 0x84, 0x40, 0xa1, 0x50, 0x20, 
+0x3e, 0x3e, 0x1e, 0x6b, 0xd7, 0xae, 0x05, 0x70, 
+0x2b, 0x76, 0xcf, 0xcc, 0xcc, 0x0c, 0xcc, 0x7b, 
+0x7f, 0xb9, 0xdf, 0x44, 0x51, 0x0c, 0xbc, 0xc1, 
+0xf7, 0xdf, 0x7f, 0x3f, 0x28, 0xbb, 0x74, 0xf0, 
+0xe0, 0x41, 0x2c, 0x59, 0xb2, 0x04, 0xaf, 0xbe, 
+0xfa, 0x2a, 0x36, 0x6e, 0xdc, 0x18, 0x00, 0x7d, 
+0xed, 0xda, 0x35, 0x7c, 0xf1, 0xc5, 0x17, 0x28, 
+0x2d, 0x2d, 0x45, 0x51, 0x51, 0xd1, 0x68, 0xe2, 
+0xfb, 0xf7, 0xec, 0xd9, 0xb3, 0x89, 0x61, 0x98, 
+0x0b, 0x0a, 0x85, 0xa2, 0x57, 0x14, 0x45, 0xfb, 
+0xe5, 0xcb, 0x97, 0xbd, 0x6d, 0x6d, 0x6d, 0x92, 
+0x2c, 0xcb, 0xa3, 0x4f, 0x81, 0x7b, 0x85, 0xe0, 
+0x72, 0xb9, 0x20, 0xcb, 0x32, 0x7e, 0xff, 0xfb, 
+0xdf, 0x63, 0xde, 0xbc, 0x79, 0x81, 0xf2, 0x03, 
+0x07, 0x0e, 0xa0, 0xac, 0xac, 0x0c, 0xaf, 0xbf, 
+0xfe, 0x3a, 0x32, 0x32, 0x32, 0x46, 0xde, 0x07, 
+0x2b, 0x56, 0xac, 0xc0, 0x5b, 0x6f, 0xbd, 0x85, 
+0xd4, 0xd4, 0xd4, 0xa0, 0x3a, 0x49, 0x92, 0x70, 
+0xe2, 0xc4, 0x09, 0xe4, 0xe4, 0xe4, 0x04, 0x56, 
+0x8a, 0x96, 0x96, 0x16, 0x54, 0x54, 0x54, 0x60, 
+0x68, 0x68, 0x08, 0x0b, 0x16, 0x2c, 0xc0, 0xce, 
+0x9d, 0x3b, 0x43, 0xc4, 0xef, 0xdb, 0xb7, 0x6f, 
+0xa0, 0xbe, 0xbe, 0x7e, 0x33, 0x21, 0xe4, 0xbc, 
+0x5e, 0xaf, 0xef, 0xe1, 0x79, 0xde, 0x96, 0x95, 
+0x95, 0xe5, 0x19, 0x7e, 0x24, 0x6f, 0x5c, 0x1f, 
+0x47, 0x27, 0x0a, 0x41, 0xa3, 0xd1, 0xa0, 0xb6, 
+0xb6, 0x16, 0xcb, 0x97, 0x2f, 0x87, 0x28, 0x8a, 
+0xa8, 0xad, 0xad, 0xc5, 0x82, 0x05, 0x0b, 0x50, 
+0x57, 0x57, 0x87, 0xb5, 0x6b, 0xd7, 0x86, 0x88, 
+0x07, 0x80, 0xf7, 0xdf, 0x7f, 0x1f, 0x3f, 0xfc, 
+0xe1, 0x0f, 0x43, 0xc4, 0x03, 0xc0, 0x92, 0x25, 
+0x4b, 0x60, 0xb1, 0x58, 0x82, 0xa6, 0xc4, 0xf4, 
+0xe9, 0xd3, 0x41, 0x08, 0x81, 0xdb, 0xed, 0xc6, 
+0x4b, 0x2f, 0xbd, 0x84, 0x87, 0x1e, 0x7a, 0x28, 
+0x50, 0x67, 0xb5, 0x5a, 0xe5, 0x7d, 0xfb, 0xf6, 
+0x0d, 0x7c, 0xf6, 0xd9, 0x67, 0x9b, 0x24, 0x49, 
+0x3a, 0x17, 0x15, 0x15, 0xd5, 0xad, 0xd7, 0xeb, 
+0xad, 0x46, 0xa3, 0xd1, 0x33, 0xf2, 0x3c, 0xe2, 
+0x84, 0x0e, 0x4a, 0xfa, 0x8f, 0xbf, 0x5a, 0x2c, 
+0x16, 0x05, 0xcb, 0xb2, 0x3a, 0xab, 0xd5, 0x1a, 
+0xe7, 0x74, 0x3a, 0x93, 0xa7, 0x4c, 0x99, 0x52, 
+0x6e, 0x32, 0x99, 0x46, 0x9d, 0x0e, 0x3b, 0x76, 
+0xec, 0xc0, 0xba, 0x75, 0xeb, 0x90, 0x98, 0x98, 
+0x88, 0x17, 0x5f, 0x7c, 0x11, 0xbf, 0xfe, 0xf5, 
+0xaf, 0x83, 0xea, 0xaf, 0x5d, 0xbb, 0x86, 0x0f, 
+0x3f, 0xfc, 0x10, 0x2f, 0xbf, 0xfc, 0xf2, 0xa8, 
+0xf1, 0xfd, 0xd0, 0xd0, 0x10, 0xe6, 0xce, 0x9d, 
+0x8b, 0xba, 0xba, 0xba, 0x90, 0x5d, 0xe8, 0xae, 
+0x5d, 0xbb, 0xb0, 0x6d, 0xdb, 0x36, 0x1c, 0x3c, 
+0x78, 0x30, 0x10, 0x55, 0xda, 0x6c, 0x36, 0xf9, 
+0xf3, 0xcf, 0x3f, 0x1f, 0xa8, 0xaf, 0xaf, 0xdf, 
+0x04, 0xe0, 0x9c, 0x4e, 0xa7, 0xbb, 0xa1, 0xd7, 
+0xeb, 0xad, 0x0c, 0xc3, 0x78, 0x3e, 0xf8, 0xe0, 
+0x03, 0x01, 0x40, 0x90, 0xe0, 0x09, 0x9f, 0x14, 
+0x9d, 0x28, 0x84, 0xb2, 0xb2, 0x32, 0x3c, 0xf9, 
+0xe4, 0x93, 0xa8, 0xa8, 0xa8, 0x40, 0x64, 0x64, 
+0x64, 0x48, 0x7f, 0xf9, 0xf9, 0xf9, 0x78, 0xf7, 
+0xdd, 0x77, 0x91, 0x97, 0x97, 0x17, 0x52, 0xb7, 
+0x76, 0xed, 0x5a, 0x54, 0x55, 0x55, 0xe1, 0xc5, 
+0x17, 0x5f, 0xc4, 0xd6, 0xad, 0x5b, 0x03, 0xe5, 
+0x3c, 0xcf, 0x43, 0xa1, 0x50, 0x84, 0x64, 0xa0, 
+0x59, 0x96, 0x95, 0xf7, 0xee, 0xdd, 0x3b, 0xb0, 
+0x67, 0xcf, 0x9e, 0x71, 0x89, 0x07, 0xee, 0xe2, 
+0x88, 0xcc, 0x1d, 0xa6, 0x03, 0x01, 0x50, 0x3e, 
+0x1c, 0xc2, 0x93, 0x4f, 0x3e, 0x89, 0xd2, 0xd2, 
+0xd2, 0x10, 0xf1, 0x03, 0x03, 0x03, 0xf8, 0xf6, 
+0xdb, 0x6f, 0xa1, 0xd7, 0xeb, 0x43, 0xc4, 0xbb, 
+0x5c, 0x2e, 0xf4, 0xf6, 0xf6, 0xe2, 0xc4, 0x89, 
+0x13, 0xe8, 0xef, 0xef, 0x0f, 0x04, 0x48, 0x36, 
+0x9b, 0x0d, 0xcd, 0xcd, 0xcd, 0x98, 0x3b, 0x77, 
+0x6e, 0x48, 0xcc, 0x6f, 0xb3, 0xd9, 0xf0, 0xd7, 
+0xbf, 0xfe, 0x75, 0x42, 0xe2, 0x01, 0x80, 0x1a, 
+0xad, 0x70, 0x3c, 0x10, 0x2a, 0x2b, 0x2b, 0xe5, 
+0x98, 0x98, 0x18, 0x9f, 0xc1, 0x60, 0x70, 0x18, 
+0x8d, 0xc6, 0x9b, 0x46, 0xa3, 0xf1, 0x7a, 0x77, 
+0x77, 0xf7, 0xa7, 0xad, 0xad, 0xad, 0xf5, 0x55, 
+0x55, 0x55, 0x6e, 0xff, 0xc8, 0x7a, 0xf9, 0xe5, 
+0x97, 0x31, 0x65, 0xca, 0x94, 0xa0, 0xf6, 0x6f, 
+0xbd, 0xf5, 0x16, 0xf2, 0xf2, 0xf2, 0xf0, 0xd1, 
+0x47, 0x1f, 0xa1, 0xba, 0xba, 0x3a, 0xa8, 0x6e, 
+0xfb, 0xf6, 0xed, 0x58, 0xba, 0x74, 0x29, 0x4e, 
+0x9e, 0x3c, 0x89, 0x96, 0x96, 0x96, 0x80, 0xf8, 
+0xbe, 0xbe, 0x3e, 0xfc, 0xe4, 0x27, 0x3f, 0x41, 
+0x6e, 0x6e, 0x6e, 0x88, 0x78, 0x96, 0x65, 0xd1, 
+0xd8, 0xd8, 0xd8, 0xff, 0xc9, 0x27, 0x9f, 0x6c, 
+0x12, 0x04, 0x61, 0xdc, 0xe2, 0x81, 0x7b, 0x3c, 
+0x2c, 0xed, 0x9f, 0x0e, 0x5d, 0x5d, 0x5d, 0x4a, 
+0x49, 0x92, 0xb4, 0x1c, 0xc7, 0xc5, 0xdb, 0x6c, 
+0xb6, 0xe4, 0x87, 0x1f, 0x7e, 0x78, 0x85, 0xc9, 
+0x64, 0x7a, 0xfe, 0x85, 0x17, 0x5e, 0x08, 0xf1, 
+0x09, 0x3e, 0x9f, 0x0f, 0x46, 0xa3, 0x11, 0x9d, 
+0x9d, 0x9d, 0x21, 0x73, 0x9e, 0xe7, 0x79, 0xa4, 
+0xa6, 0xa6, 0xe2, 0xea, 0xd5, 0xab, 0x41, 0xb9, 
+0x80, 0x7d, 0xfb, 0xf6, 0xa1, 0xb9, 0xb9, 0x19, 
+0x6f, 0xbc, 0xf1, 0x46, 0xc8, 0x0e, 0xd2, 0x2f, 
+0xbe, 0xa6, 0xa6, 0x66, 0x93, 0x2c, 0xcb, 0xe7, 
+0xa2, 0xa2, 0xa2, 0xc6, 0x2d, 0x1e, 0xb8, 0xc7, 
+0x83, 0x92, 0xfe, 0xe9, 0xe0, 0xdf, 0x3b, 0xe8, 
+0xf5, 0xfa, 0x01, 0x00, 0xe8, 0xe9, 0xe9, 0xa9, 
+0x3b, 0x74, 0xe8, 0x10, 0x28, 0x8a, 0x7a, 0x7e, 
+0xd5, 0xaa, 0x55, 0x41, 0xdb, 0xbe, 0x9a, 0x9a, 
+0x1a, 0xf0, 0x3c, 0x1f, 0xd8, 0x29, 0xfa, 0x53, 
+0xe8, 0x1b, 0x36, 0x6c, 0x80, 0xd9, 0x6c, 0xc6, 
+0x3b, 0xef, 0xbc, 0x13, 0x24, 0xbe, 0xa7, 0xa7, 
+0x07, 0x37, 0x6e, 0xdc, 0xc0, 0x1f, 0xfe, 0xf0, 
+0x87, 0x90, 0xef, 0x0c, 0x2c, 0xcb, 0xa2, 0xa9, 
+0xa9, 0xe9, 0xae, 0xc5, 0x03, 0xf7, 0xe9, 0xb8, 
+0xbc, 0xff, 0xdb, 0xa2, 0x56, 0xab, 0x55, 0xf8, 
+0x47, 0x82, 0xc3, 0xe1, 0x48, 0x9e, 0x31, 0x63, 
+0xc6, 0xca, 0xf9, 0xf3, 0xe7, 0x97, 0xae, 0x5c, 
+0xb9, 0x32, 0x00, 0xe1, 0xfc, 0xf9, 0xf3, 0xb8, 
+0x7a, 0xf5, 0x2a, 0x96, 0x2d, 0x5b, 0x06, 0xbb, 
+0xdd, 0x8e, 0xfc, 0xfc, 0x7c, 0x30, 0x0c, 0x03, 
+0xa7, 0xd3, 0x89, 0x7f, 0xfc, 0xe3, 0x1f, 0xe3, 
+0x4e, 0x9b, 0xd9, 0xed, 0x76, 0x34, 0x36, 0x36, 
+0x0e, 0x54, 0x57, 0x57, 0x57, 0xde, 0xad, 0x78, 
+0xe0, 0x3e, 0xfe, 0x5f, 0x20, 0x1c, 0x84, 0xd4, 
+0xd4, 0xd4, 0x95, 0xf3, 0xe7, 0xcf, 0x2f, 0x2d, 
+0x2f, 0x2f, 0x57, 0x8f, 0x6c, 0xd3, 0xdb, 0xdb, 
+0x1b, 0xf0, 0x0f, 0x4b, 0x96, 0x2c, 0x41, 0x63, 
+0x63, 0x63, 0xa0, 0xce, 0xff, 0x2d, 0x71, 0xe4, 
+0xb6, 0x1a, 0xb8, 0xb5, 0x4f, 0x68, 0x6a, 0x6a, 
+0x1a, 0xa8, 0xae, 0xae, 0xde, 0x24, 0x8a, 0xe2, 
+0xd9, 0xbb, 0x15, 0x0f, 0xdc, 0xa5, 0x13, 0x1c, 
+0xcd, 0x64, 0x59, 0x96, 0xeb, 0xeb, 0xeb, 0x25, 
+0xa7, 0xd3, 0xe9, 0xa3, 0x28, 0xca, 0xa9, 0xd7, 
+0xeb, 0x07, 0x74, 0x3a, 0xdd, 0xf5, 0xce, 0xce, 
+0xce, 0xff, 0x6d, 0x6b, 0x6b, 0x6b, 0x68, 0x68, 
+0x68, 0x70, 0x8f, 0x6c, 0x13, 0x1f, 0x1f, 0x0f, 
+0x8a, 0xa2, 0xb0, 0x73, 0xe7, 0x4e, 0x34, 0x34, 
+0x34, 0x04, 0xca, 0x2f, 0x5f, 0xbe, 0x8c, 0x55, 
+0xab, 0x56, 0x85, 0x24, 0x4d, 0x80, 0x5b, 0xe2, 
+0xff, 0xf6, 0xb7, 0xbf, 0xdd, 0xac, 0xa9, 0xa9, 
+0xf9, 0x9f, 0x7b, 0x15, 0x0f, 0xdc, 0xe7, 0x3f, 
+0x4c, 0x8c, 0xcc, 0x27, 0xf8, 0x7d, 0xc2, 0x37, 
+0xdf, 0x7c, 0x53, 0x4b, 0xd3, 0x34, 0x18, 0x86, 
+0x29, 0x59, 0xba, 0x74, 0x69, 0x40, 0x15, 0xc3, 
+0x30, 0x48, 0x4a, 0x4a, 0x82, 0xc5, 0x62, 0x81, 
+0x42, 0xa1, 0x80, 0x2c, 0xcb, 0xd8, 0xb1, 0x63, 
+0x07, 0x6a, 0x6a, 0x6a, 0xf0, 0xea, 0xab, 0xaf, 
+0x86, 0x9c, 0x3b, 0xe0, 0x38, 0x0e, 0xfb, 0xf7, 
+0xef, 0xbf, 0x59, 0x53, 0x53, 0xb3, 0x19, 0xc0, 
+0xe9, 0x7b, 0x15, 0x0f, 0xdc, 0x67, 0x00, 0x40, 
+0x78, 0x08, 0x97, 0x2e, 0x5d, 0xaa, 0x25, 0x84, 
+0x80, 0x10, 0x52, 0x52, 0x5c, 0x5c, 0x1c, 0x80, 
+0x70, 0xf2, 0xe4, 0xc9, 0xc0, 0x6a, 0x70, 0xee, 
+0xdc, 0x39, 0xac, 0x5b, 0xb7, 0x0e, 0x9b, 0x36, 
+0x6d, 0xc2, 0xf2, 0xe5, 0xcb, 0x83, 0xfa, 0xe5, 
+0x38, 0x0e, 0xcd, 0xcd, 0xcd, 0x37, 0xab, 0xab, 
+0xab, 0x37, 0x4b, 0x92, 0x74, 0x46, 0xa3, 0xd1, 
+0x74, 0xdf, 0xab, 0x78, 0x60, 0x92, 0xff, 0x35, 
+0x36, 0xd2, 0x27, 0xd8, 0x6c, 0xb6, 0xe4, 0xec, 
+0xec, 0xec, 0xff, 0x2c, 0x28, 0x28, 0x28, 0x79, 
+0xe6, 0x99, 0x67, 0x82, 0xc6, 0x77, 0x5f, 0x5f, 
+0x1f, 0x4a, 0x4b, 0x4b, 0xe1, 0x74, 0x3a, 0x03, 
+0xb9, 0x45, 0xbf, 0xf9, 0xc5, 0xef, 0xde, 0xbd, 
+0xdb, 0x2f, 0xfe, 0x46, 0x54, 0x54, 0xd4, 0xd0, 
+0xbd, 0x8a, 0x07, 0x26, 0x61, 0x04, 0xf8, 0x2d, 
+0xdc, 0x48, 0xb8, 0x78, 0xf1, 0x62, 0x2d, 0x45, 
+0x51, 0x32, 0x21, 0xa4, 0xf4, 0xe9, 0xa7, 0x9f, 
+0x0e, 0x82, 0x90, 0x99, 0x99, 0x19, 0xb2, 0x51, 
+0xe2, 0x38, 0x0e, 0x07, 0x0e, 0x1c, 0x98, 0x14, 
+0xf1, 0xc0, 0x24, 0x8e, 0x80, 0xc0, 0x0d, 0xc2, 
+0xac, 0x0e, 0xd9, 0xd9, 0xd9, 0x2b, 0x17, 0x2e, 
+0x5c, 0x58, 0x5a, 0x54, 0x54, 0x14, 0x36, 0xb3, 
+0x74, 0x5b, 0xfc, 0x60, 0x75, 0x75, 0xf5, 0x66, 
+0x41, 0x10, 0x4e, 0xdf, 0x6f, 0xf1, 0xc0, 0x24, 
+0x8e, 0x00, 0xbf, 0x85, 0x1b, 0x09, 0xa7, 0x4f, 
+0x9f, 0xae, 0x95, 0x24, 0x49, 0xa0, 0x28, 0xaa, 
+0xbc, 0xa0, 0xa0, 0x40, 0x33, 0x12, 0x02, 0xc7, 
+0x71, 0xf8, 0xe2, 0x8b, 0x2f, 0x06, 0x3f, 0xfe, 
+0xf8, 0xe3, 0xcd, 0xa2, 0x28, 0x9e, 0xd2, 0x68, 
+0x34, 0xdd, 0xf7, 0x5b, 0x3c, 0xf0, 0x00, 0x00, 
+0x00, 0xa3, 0x43, 0x10, 0x04, 0x41, 0x3e, 0x7f, 
+0xfe, 0x7c, 0x1d, 0x4d, 0xd3, 0x3c, 0x21, 0xe4, 
+0xbf, 0xf2, 0xf3, 0xf3, 0xb5, 0xfe, 0x83, 0x50, 
+0xd7, 0xaf, 0x5f, 0x17, 0x8e, 0x1f, 0x3f, 0xde, 
+0x5b, 0x57, 0x57, 0xb7, 0xd5, 0xe3, 0xf1, 0x9c, 
+0x33, 0x18, 0x0c, 0xf7, 0xc5, 0xe1, 0x8d, 0x66, 
+0x0f, 0x04, 0x00, 0x10, 0x0a, 0x21, 0x22, 0x22, 
+0x42, 0x56, 0x2a, 0x95, 0xe2, 0x85, 0x0b, 0x17, 
+0xea, 0xac, 0x56, 0x6b, 0x17, 0xcb, 0xb2, 0x3f, 
+0x8f, 0x8b, 0x8b, 0x33, 0x78, 0x3c, 0x1e, 0xb1, 
+0xab, 0xab, 0xeb, 0x9f, 0xf5, 0xf5, 0xf5, 0x7f, 
+0xd2, 0x68, 0x34, 0xdf, 0xaa, 0xd5, 0x6a, 0xb3, 
+0x5e, 0xaf, 0xb7, 0x4d, 0x86, 0x78, 0xe0, 0x01, 
+0xf8, 0x80, 0x90, 0x1b, 0x0e, 0xcb, 0x27, 0x70, 
+0x1c, 0xa7, 0xb6, 0xdb, 0xed, 0x06, 0x41, 0x10, 
+0xa2, 0x7d, 0x3e, 0x9f, 0x51, 0xa7, 0xd3, 0x19, 
+0xed, 0x76, 0xbb, 0x53, 0xa5, 0x52, 0x71, 0x34, 
+0x4d, 0x0f, 0x31, 0x0c, 0x63, 0x8d, 0x88, 0x88, 
+0xe0, 0xd4, 0x6a, 0xb5, 0x77, 0x32, 0xc4, 0x03, 
+0x0f, 0x70, 0x04, 0xf8, 0x6d, 0x78, 0x3e, 0x81, 
+0xe7, 0x79, 0x49, 0xab, 0xd5, 0xfa, 0x04, 0x41, 
+0x70, 0x52, 0x14, 0x75, 0x53, 0x14, 0x45, 0x26, 
+0x32, 0x32, 0x52, 0xd2, 0x6a, 0xb5, 0x5e, 0x00, 
+0x1e, 0x00, 0x9e, 0xae, 0xae, 0x2e, 0xa1, 0xb5, 
+0xb5, 0x55, 0xc4, 0x24, 0x88, 0x07, 0xbe, 0x03, 
+0x00, 0x00, 0xfc, 0x07, 0x99, 0x65, 0x00, 0x72, 
+0x79, 0x79, 0xb9, 0x04, 0xc0, 0xa7, 0xd5, 0x6a, 
+0x1d, 0x5a, 0xad, 0x96, 0xd2, 0x6a, 0xb5, 0xf2, 
+0xf0, 0xf3, 0xbe, 0x7f, 0xf9, 0xcb, 0x5f, 0xfc, 
+0xd7, 0x4e, 0x8a, 0xfd, 0x3f, 0x0b, 0x3c, 0x81, 
+0x98, 0xf9, 0x7b, 0xef, 0x9d, 0x00, 0x00, 0x00, 
+0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
+0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/bigimgs/contactpersonicon64.png b/source/bitmaps/bigimgs/contactpersonicon64.png
new file mode 100644 (file)
index 0000000..c78062a
Binary files /dev/null and b/source/bitmaps/bigimgs/contactpersonicon64.png differ
diff --git a/source/bitmaps/buttons.h b/source/bitmaps/buttons.h
new file mode 100644 (file)
index 0000000..25b6508
--- /dev/null
@@ -0,0 +1,14 @@
+#include <iostream>
+
+#ifndef BUTTONS_H
+#define BUTTONS_H
+
+// List all CPP files in the directory.
+
+#include "buttons/play.cpp"
+#include "buttons/add.cpp"
+#include "buttons/stop.cpp"
+#include "buttons/minus.cpp"
+
+#endif
+
diff --git a/source/bitmaps/buttons/add.cpp b/source/bitmaps/buttons/add.cpp
new file mode 100644 (file)
index 0000000..76d2a89
--- /dev/null
@@ -0,0 +1,81 @@
+#include <iostream>
+
+#ifndef BUTTONS_ADD_CPP
+#define BUTTONS_ADD_CPP
+
+static unsigned char buttons_add_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, 
+0xf8, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x01, 0xb9, 0x49, 
+0x44, 0x41, 0x54, 0x48, 0x89, 0xb5, 0x94, 0xbb, 
+0x6e, 0x13, 0x41, 0x14, 0x86, 0xff, 0xff, 0xcc, 
+0xcc, 0xae, 0xb5, 0x10, 0x9b, 0x20, 0x44, 0x61, 
+0x37, 0x44, 0xc8, 0x85, 0x1b, 0xaa, 0x94, 0x79, 
+0x81, 0x54, 0xa9, 0xa0, 0xa0, 0x43, 0xa2, 0x06, 
+0x0a, 0x1e, 0x83, 0x92, 0x97, 0xe0, 0x05, 0x78, 
+0x03, 0x44, 0x4b, 0x93, 0xa4, 0x88, 0x52, 0x51, 
+0x20, 0x21, 0xe1, 0xc2, 0x76, 0x7c, 0x89, 0x77, 
+0xe6, 0xa4, 0x30, 0xbe, 0xac, 0xb5, 0x6b, 0x26, 
+0xd8, 0x3e, 0xcd, 0x4a, 0xb3, 0xe7, 0xcc, 0x37, 
+0xff, 0xb9, 0x51, 0x55, 0xb1, 0x4f, 0x93, 0xbd, 
+0xde, 0x0e, 0xc0, 0xc6, 0x38, 0xf1, 0xf4, 0xe0, 
+0x1d, 0xad, 0xbc, 0x5c, 0x3d, 0x53, 0xaf, 0x5d, 
+0xfd, 0xda, 0x3b, 0xdb, 0x09, 0xc0, 0x24, 0xe6, 
+0x85, 0x7b, 0x9a, 0x9e, 0x24, 0xcd, 0x0c, 0x00, 
+0x10, 0x26, 0x1e, 0xc3, 0xcb, 0xde, 0x28, 0x26, 
+0x36, 0x0a, 0x80, 0x84, 0x62, 0x9f, 0xa4, 0xa8, 
+0x3d, 0x7f, 0x08, 0x00, 0xf0, 0x83, 0x1c, 0xa3, 
+0xeb, 0x41, 0x54, 0x68, 0x54, 0x0d, 0xc4, 0x89, 
+0xd0, 0xb0, 0x70, 0x46, 0xcb, 0x0a, 0xef, 0xff, 
+0x00, 0x70, 0x1d, 0x40, 0x40, 0x5c, 0x5c, 0x7f, 
+0xc4, 0x29, 0x48, 0x45, 0x68, 0x97, 0xae, 0x24, 
+0xc0, 0x74, 0x87, 0x00, 0x5a, 0x31, 0x28, 0x28, 
+0x20, 0x18, 0xa9, 0x60, 0x51, 0xe4, 0xec, 0x7d, 
+0xeb, 0x3b, 0x89, 0x46, 0x39, 0x80, 0xad, 0xf5, 
+0x14, 0xd1, 0xb0, 0xf6, 0xe0, 0x43, 0xeb, 0xa2, 
+0xe2, 0xde, 0xa9, 0xe4, 0xe1, 0x75, 0xff, 0xf3, 
+0xaf, 0xf3, 0x05, 0x40, 0x2c, 0x8f, 0x93, 0x66, 
+0x66, 0xab, 0x72, 0xcb, 0x9a, 0x01, 0xfe, 0x0e, 
+0x3d, 0x9d, 0x20, 0x6b, 0xd7, 0x09, 0xa0, 0x53, 
+0xe6, 0x3b, 0xfe, 0x79, 0x33, 0xf1, 0x86, 0x07, 
+0x05, 0x05, 0x74, 0x02, 0x49, 0xa5, 0x5a, 0xba, 
+0x2a, 0xc2, 0xd8, 0x2f, 0x81, 0x1b, 0x6a, 0xc0, 
+0x44, 0xbc, 0xcb, 0x67, 0xbe, 0x05, 0x40, 0x98, 
+0x04, 0x30, 0xdf, 0x7e, 0x37, 0x89, 0x25, 0x40, 
+0x57, 0x02, 0x18, 0x7b, 0xa0, 0xa2, 0xbd, 0x49, 
+0x16, 0xfe, 0x69, 0xd8, 0xf0, 0x10, 0x23, 0x16, 
+0xa2, 0x45, 0x80, 0x38, 0xf9, 0x06, 0xa2, 0x5e, 
+0x1a, 0xa0, 0x38, 0x52, 0x1f, 0x1e, 0xe9, 0x5c, 
+0x1d, 0x01, 0x49, 0x8d, 0x02, 0xf8, 0x51, 0xfa, 
+0x18, 0x27, 0x53, 0x01, 0x7a, 0x00, 0xc0, 0x98, 
+0x75, 0xfd, 0xf8, 0x53, 0xfb, 0x8b, 0x1f, 0xe6, 
+0xaf, 0xc2, 0x70, 0x96, 0x57, 0x1a, 0xc2, 0x1e, 
+0x26, 0xa3, 0xee, 0xc7, 0xab, 0xec, 0x5f, 0xb1, 
+0x71, 0xdb, 0xd4, 0x0a, 0x10, 0xb0, 0x28, 0x32, 
+0x9d, 0x80, 0x2e, 0x6e, 0x55, 0x44, 0x01, 0xc4, 
+0xb1, 0xd0, 0x45, 0x82, 0xf8, 0x55, 0x11, 0xad, 
+0x40, 0xc3, 0x4a, 0x9b, 0x0a, 0xee, 0x3f, 0xc9, 
+0x1b, 0xcd, 0x11, 0xba, 0x9a, 0x22, 0x4b, 0xd0, 
+0x99, 0x1d, 0x02, 0x00, 0x20, 0x28, 0xd4, 0xcf, 
+0x1a, 0x62, 0xfe, 0xdd, 0x19, 0x80, 0x22, 0xd3, 
+0xac, 0xd3, 0x40, 0xd6, 0x59, 0x59, 0x55, 0x0a, 
+0x5f, 0x1d, 0x71, 0x4f, 0xc0, 0xef, 0xdb, 0xf4, 
+0xcd, 0xb3, 0xe4, 0xcf, 0xdb, 0x42, 0x60, 0xdf, 
+0x46, 0xc9, 0x88, 0x9a, 0x83, 0x6d, 0xec, 0x0e, 
+0x24, 0xfe, 0x7f, 0xc9, 0x1f, 0x25, 0xb3, 0x9b, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/buttons/add.png b/source/bitmaps/buttons/add.png
new file mode 100644 (file)
index 0000000..e55565f
Binary files /dev/null and b/source/bitmaps/buttons/add.png differ
diff --git a/source/bitmaps/buttons/minus.cpp b/source/bitmaps/buttons/minus.cpp
new file mode 100644 (file)
index 0000000..ab8a898
--- /dev/null
@@ -0,0 +1,47 @@
+#include <iostream>
+
+#ifndef BUTTONS_MINUS_CPP
+#define BUTTONS_MINUS_CPP
+
+static unsigned char buttons_minus_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, 
+0xf8, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x00, 0xa5, 0x49, 
+0x44, 0x41, 0x54, 0x48, 0x89, 0xed, 0xd4, 0x41, 
+0x0a, 0xc2, 0x30, 0x10, 0x05, 0xd0, 0xff, 0x27, 
+0x49, 0x6b, 0x04, 0xf5, 0x18, 0x5e, 0xc0, 0xd3, 
+0x78, 0x85, 0x5e, 0xc8, 0x0b, 0x89, 0x27, 0x10, 
+0xef, 0x21, 0xb8, 0x48, 0x4b, 0x33, 0xdd, 0xd4, 
+0x62, 0xb1, 0x82, 0xc5, 0x66, 0x21, 0x64, 0x56, 
+0x21, 0x90, 0xff, 0x08, 0x0c, 0x9f, 0xaa, 0x8a, 
+0x94, 0x23, 0x49, 0xd3, 0x33, 0x90, 0x81, 0xff, 
+0x00, 0xec, 0xf3, 0x70, 0x72, 0xfe, 0x62, 0x88, 
+0xdd, 0xdc, 0x00, 0x4e, 0xdc, 0x29, 0xb4, 0xa9, 
+0xa9, 0xc7, 0x2a, 0x84, 0xeb, 0x00, 0x38, 0xe2, 
+0xb0, 0x77, 0x85, 0x2d, 0x39, 0xf5, 0x64, 0xde, 
+0xdc, 0xea, 0x10, 0xa8, 0xb2, 0x01, 0x5e, 0x7e, 
+0xe0, 0x49, 0xac, 0x85, 0x58, 0x2d, 0x00, 0x78, 
+0xb2, 0x35, 0x7d, 0x03, 0x0d, 0x40, 0x49, 0x22, 
+0x44, 0x45, 0xfc, 0x3d, 0x1f, 0x8e, 0x84, 0xe9, 
+0x85, 0x11, 0xf0, 0x50, 0x85, 0x2c, 0x50, 0x7e, 
+0x8e, 0xb4, 0x82, 0x77, 0xe0, 0x0c, 0xe8, 0x36, 
+0x7e, 0x1d, 0xf3, 0x79, 0x01, 0x0b, 0x4a, 0x23, 
+0x2d, 0xef, 0x00, 0xc0, 0x5c, 0xd7, 0x19, 0xc8, 
+0x40, 0x7a, 0xa0, 0x03, 0x37, 0x60, 0x28, 0x8f, 
+0x01, 0xb3, 0x7f, 0xfb, 0x00, 0x00, 0x00, 0x00, 
+0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 
+0x82, };
+
+#endif
+
diff --git a/source/bitmaps/buttons/minus.png b/source/bitmaps/buttons/minus.png
new file mode 100644 (file)
index 0000000..e4ab0c4
Binary files /dev/null and b/source/bitmaps/buttons/minus.png differ
diff --git a/source/bitmaps/buttons/play.cpp b/source/bitmaps/buttons/play.cpp
new file mode 100644 (file)
index 0000000..ed9e112
--- /dev/null
@@ -0,0 +1,68 @@
+#include <iostream>
+
+#ifndef BUTTONS_PLAY_CPP
+#define BUTTONS_PLAY_CPP
+
+static unsigned char buttons_play_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, 
+0xf8, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x01, 0x4c, 0x49, 
+0x44, 0x41, 0x54, 0x48, 0x89, 0xb5, 0xd6, 0xbd, 
+0x4a, 0xc3, 0x50, 0x18, 0xc6, 0xf1, 0xff, 0x53, 
+0x03, 0xd5, 0x6a, 0xa1, 0x93, 0x83, 0xa3, 0x50, 
+0x04, 0x17, 0x75, 0x16, 0xbc, 0x83, 0x5e, 0x82, 
+0x57, 0xe2, 0xec, 0x05, 0xb8, 0xe9, 0xe0, 0x05, 
+0x38, 0x64, 0x50, 0x07, 0x27, 0x05, 0xc5, 0x2b, 
+0x70, 0xf1, 0x16, 0xd4, 0x56, 0x29, 0x7e, 0x80, 
+0x1f, 0x49, 0x5e, 0x87, 0x1c, 0xa1, 0x96, 0x34, 
+0x39, 0x6d, 0x92, 0x17, 0x32, 0x84, 0x73, 0xf2, 
+0xfc, 0xce, 0x9b, 0x73, 0x20, 0x91, 0x99, 0x51, 
+0x67, 0x35, 0x6a, 0x4d, 0x2f, 0x02, 0x24, 0x75, 
+0x24, 0x95, 0x5a, 0x44, 0xd1, 0xc3, 0x9b, 0x40, 
+0x28, 0xa9, 0x59, 0x17, 0x90, 0x00, 0x3d, 0xe0, 
+0x46, 0x52, 0xa7, 0x0e, 0x20, 0x06, 0x86, 0xc0, 
+0x06, 0x70, 0x2d, 0x69, 0xa5, 0x6a, 0x20, 0x72, 
+0x48, 0x13, 0x58, 0x07, 0x2e, 0x25, 0x75, 0xeb, 
+0x00, 0x00, 0x02, 0x60, 0x0d, 0x38, 0x97, 0xb4, 
+0x55, 0x15, 0x10, 0x93, 0xee, 0xc3, 0x5f, 0xc9, 
+0x21, 0x27, 0x92, 0x76, 0xaa, 0x00, 0x46, 0x3b, 
+0x18, 0xad, 0x2e, 0x70, 0x2c, 0xa9, 0x57, 0x16, 
+0x88, 0x1d, 0x92, 0x64, 0x5c, 0xab, 0xc0, 0x81, 
+0xa4, 0xdd, 0xbc, 0x80, 0xa0, 0x00, 0x88, 0x80, 
+0x77, 0xe0, 0x69, 0xc2, 0x78, 0x0b, 0xd8, 0x93, 
+0xd4, 0x06, 0x0e, 0xcd, 0x2c, 0x19, 0x9f, 0xe0, 
+0x03, 0xbc, 0x16, 0xcc, 0x99, 0x07, 0xb6, 0x81, 
+0x10, 0x78, 0x9c, 0x16, 0x88, 0x1d, 0xf0, 0x39, 
+0x61, 0xbc, 0x05, 0x5c, 0x01, 0xfb, 0x66, 0x36, 
+0xc8, 0x9a, 0xe0, 0xd3, 0xc1, 0x90, 0xf4, 0xf4, 
+0x8c, 0xd7, 0x12, 0x70, 0x01, 0x1c, 0x99, 0xd9, 
+0xc7, 0xa4, 0x00, 0x9f, 0x0e, 0x5e, 0xf8, 0x7f, 
+0x92, 0x04, 0xb4, 0x81, 0x33, 0x20, 0x34, 0xb3, 
+0x9f, 0xbc, 0x00, 0x9f, 0x0e, 0x9e, 0x81, 0x6f, 
+0x77, 0xdf, 0x00, 0x16, 0x49, 0xdf, 0xf7, 0x6d, 
+0xd6, 0xa6, 0xce, 0x02, 0xf4, 0x81, 0x2f, 0x60, 
+0x0e, 0x58, 0x20, 0x5d, 0xf5, 0x7d, 0x51, 0xb0, 
+0x2f, 0x10, 0x3b, 0x20, 0x76, 0xc0, 0xa9, 0x99, 
+0x3d, 0xf8, 0x86, 0xfb, 0x00, 0x11, 0x30, 0x20, 
+0xed, 0xe0, 0xce, 0xcc, 0xde, 0xa6, 0x09, 0x07, 
+0x50, 0xde, 0x37, 0x59, 0x52, 0x00, 0x2c, 0x03, 
+0xfd, 0xa2, 0xcd, 0x9c, 0x15, 0x10, 0x80, 0x95, 
+0xf8, 0x33, 0xc8, 0x05, 0xaa, 0xa8, 0xda, 0xff, 
+0x2a, 0x7e, 0x01, 0x03, 0x83, 0x71, 0xd8, 0x94, 
+0x9e, 0x8b, 0x59, 0x00, 0x00, 0x00, 0x00, 0x49, 
+0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, 
+};
+
+#endif
+
diff --git a/source/bitmaps/buttons/play.png b/source/bitmaps/buttons/play.png
new file mode 100644 (file)
index 0000000..6160562
Binary files /dev/null and b/source/bitmaps/buttons/play.png differ
diff --git a/source/bitmaps/buttons/stop.cpp b/source/bitmaps/buttons/stop.cpp
new file mode 100644 (file)
index 0000000..18f7472
--- /dev/null
@@ -0,0 +1,51 @@
+#include <iostream>
+
+#ifndef BUTTONS_STOP_CPP
+#define BUTTONS_STOP_CPP
+
+static unsigned char buttons_stop_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xe0, 0x77, 0x3d, 
+0xf8, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x00, 0xc8, 0x49, 
+0x44, 0x41, 0x54, 0x48, 0x89, 0xdd, 0x95, 0x31, 
+0x0e, 0xc2, 0x30, 0x0c, 0x45, 0x9f, 0x11, 0x62, 
+0x42, 0x9c, 0x02, 0x89, 0x0b, 0xb2, 0x72, 0x53, 
+0x6e, 0xc0, 0x46, 0x5a, 0xd2, 0x50, 0x81, 0x19, 
+0x5a, 0x21, 0x11, 0x82, 0x70, 0xdd, 0x76, 0x00, 
+0x8f, 0x91, 0xe3, 0x97, 0xff, 0xed, 0xc8, 0xa2, 
+0xaa, 0xcc, 0x19, 0x8b, 0x59, 0xab, 0xff, 0x05, 
+0x60, 0x99, 0x1f, 0x88, 0xc8, 0x1e, 0x38, 0x38, 
+0xeb, 0xdd, 0x80, 0x9d, 0xaa, 0x9e, 0x3e, 0x02, 
+0x80, 0x15, 0xb0, 0x71, 0x02, 0x02, 0x99, 0x2b, 
+0x25, 0x8b, 0x1a, 0x67, 0x71, 0x80, 0x2b, 0x70, 
+0xff, 0x06, 0x48, 0x23, 0x01, 0x2f, 0x73, 0x3f, 
+0xb5, 0x82, 0xd6, 0x02, 0x18, 0xa3, 0xa0, 0x25, 
+0xb3, 0xa8, 0xd4, 0xe4, 0x44, 0x37, 0x0d, 0x9e, 
+0x2f, 0x9e, 0xf2, 0x7b, 0x25, 0x40, 0x03, 0xc4, 
+0xfe, 0x35, 0x43, 0x23, 0x62, 0x54, 0x10, 0xf1, 
+0xf5, 0x22, 0x62, 0x54, 0x50, 0x03, 0x17, 0x07, 
+0xa0, 0xb6, 0x00, 0x52, 0x9f, 0x58, 0x39, 0x00, 
+0x15, 0x06, 0x8b, 0x9a, 0x3e, 0x31, 0x38, 0x00, 
+0x01, 0xa3, 0x82, 0xe0, 0x04, 0x54, 0x43, 0x00, 
+0x1e, 0x8b, 0x02, 0x46, 0x8b, 0x6a, 0xba, 0x6f, 
+0x3f, 0x34, 0xce, 0x64, 0x0a, 0x24, 0x5f, 0x99, 
+0x22, 0xb2, 0x06, 0xb6, 0x8e, 0xe2, 0xd0, 0x4d, 
+0xde, 0x51, 0x55, 0x9f, 0x2a, 0xde, 0x00, 0x53, 
+0xc7, 0xef, 0xaf, 0xcc, 0xd9, 0x01, 0x0f, 0x25, 
+0xb2, 0x4d, 0xab, 0xef, 0x02, 0xae, 0x93, 0x00, 
+0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 
+0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/buttons/stop.png b/source/bitmaps/buttons/stop.png
new file mode 100644 (file)
index 0000000..763eb15
Binary files /dev/null and b/source/bitmaps/buttons/stop.png differ
diff --git a/source/bitmaps/icons.h b/source/bitmaps/icons.h
new file mode 100644 (file)
index 0000000..bab4ac0
--- /dev/null
@@ -0,0 +1,31 @@
+#include <iostream>
+
+#ifndef ICONS_H
+#define ICONS_H
+
+// List all CPP files in the directory.
+
+#include "icons/accgroup.cpp"
+#include "icons/accinet.cpp"
+#include "icons/acclocal.cpp"
+#include "icons/accnone.cpp"
+#include "icons/act1.cpp"
+#include "icons/act2.cpp"
+#include "icons/act3.cpp"
+#include "icons/act4.cpp"
+#include "icons/activitywindow.cpp"
+#include "icons/actsleep.cpp"
+#include "icons/ciext.cpp"
+#include "icons/cikey.cpp"
+#include "icons/cilog.cpp"
+#include "icons/cipto.cpp"
+#include "icons/cisnd.cpp"
+#include "icons/civen.cpp"
+#include "icons/nossl.cpp"
+#include "icons/offline.cpp"
+#include "icons/online.cpp"
+#include "icons/ssl.cpp"
+#include "icons/sslwarning.cpp"
+
+#endif
+
diff --git a/source/bitmaps/icons/.directory b/source/bitmaps/icons/.directory
new file mode 100644 (file)
index 0000000..b00ef51
--- /dev/null
@@ -0,0 +1,4 @@
+[Dolphin]
+PreviewsShown=true
+Timestamp=2014,12,31,18,24,36
+Version=3
diff --git a/source/bitmaps/icons/accgroup.cpp b/source/bitmaps/icons/accgroup.cpp
new file mode 100644 (file)
index 0000000..7c4edad
--- /dev/null
@@ -0,0 +1,70 @@
+#include <iostream>
+
+#ifndef ICONS_ACCGROUP_CPP
+#define ICONS_ACCGROUP_CPP
+
+static unsigned char icons_accgroup_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0x17, 0x00, 0x9a, 0x00, 0x36, 0x14, 
+0xbd, 0x58, 0x52, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x02, 0x1c, 0x12, 0x16, 0x24, 0xbb, 
+0xd6, 0x4a, 0xa0, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x45, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xa5, 0x92, 
+0xb1, 0x4b, 0xc3, 0x50, 0x10, 0xc6, 0x7f, 0x29, 
+0x0e, 0x2e, 0x5d, 0x2c, 0x76, 0xd1, 0x86, 0x92, 
+0xc1, 0x82, 0x83, 0x22, 0x2e, 0x0a, 0xb1, 0xd8, 
+0x45, 0xc1, 0x41, 0x32, 0x4b, 0x06, 0xe9, 0x2a, 
+0xe2, 0x64, 0x66, 0xbb, 0xda, 0xdd, 0x7f, 0xa0, 
+0x01, 0x37, 0x71, 0x12, 0xb7, 0x86, 0x76, 0xd0, 
+0x39, 0x43, 0x11, 0x87, 0x28, 0x29, 0x48, 0xa1, 
+0xd1, 0xa1, 0x83, 0xd8, 0x0e, 0xc6, 0xa1, 0x34, 
+0xed, 0x4b, 0x1e, 0xad, 0xe2, 0x2d, 0xdf, 0xdd, 
+0x7b, 0xf7, 0x7d, 0x77, 0xef, 0xde, 0xc1, 0x3f, 
+0x4d, 0x99, 0x0c, 0x6c, 0xdb, 0x0e, 0x7f, 0x43, 
+0x32, 0x4d, 0x33, 0xe2, 0xcd, 0xc5, 0x2f, 0x35, 
+0x4d, 0x9b, 0x4a, 0xf6, 0x3c, 0x4f, 0x88, 0x53, 
+0xb2, 0xa4, 0xa7, 0x8d, 0xed, 0x04, 0x8e, 0xfc, 
+0xb8, 0x25, 0x3a, 0xe8, 0x76, 0xbb, 0x34, 0x1d, 
+0x87, 0xcc, 0xa0, 0x27, 0x20, 0x40, 0x66, 0xd0, 
+0x4b, 0x08, 0x48, 0x3b, 0xd0, 0xdf, 0xbc, 0x04, 
+0x1a, 0x12, 0x72, 0x42, 0xc0, 0x75, 0x5d, 0x82, 
+0x20, 0x40, 0x39, 0x2a, 0x27, 0xf0, 0x7d, 0xef, 
+0x90, 0x20, 0x08, 0x70, 0x5d, 0x77, 0xfa, 0x13, 
+0x00, 0x9a, 0x8e, 0x83, 0x1e, 0x43, 0x00, 0x7d, 
+0xd6, 0x37, 0x5a, 0x96, 0x15, 0x3e, 0xdc, 0x5f, 
+0x0b, 0x09, 0xc7, 0x67, 0x17, 0x00, 0x94, 0xf7, 
+0x3f, 0xc7, 0xa4, 0xe5, 0x53, 0x45, 0x2a, 0xb0, 
+0xb3, 0x96, 0x8b, 0xf6, 0xa0, 0x6a, 0x94, 0x38, 
+0xbf, 0xad, 0x03, 0xd0, 0xb8, 0xb3, 0x60, 0x61, 
+0x6b, 0x9c, 0xf8, 0xf1, 0x18, 0x89, 0x48, 0x87, 
+0x58, 0x35, 0x4a, 0x02, 0x4e, 0xb3, 0x94, 0xac, 
+0x7a, 0xdc, 0x8a, 0x07, 0x97, 0xb3, 0x05, 0xfe, 
+0xb4, 0xff, 0xb2, 0x19, 0x8c, 0x3a, 0x78, 0x6d, 
+0x7f, 0xd1, 0x5c, 0x5d, 0x19, 0x9e, 0xb5, 0x9e, 
+0xc9, 0xe7, 0xe6, 0x01, 0x58, 0xd4, 0x7d, 0xa1, 
+0xf0, 0xcd, 0x95, 0x12, 0x0a, 0xdf, 0x58, 0x4b, 
+0xab, 0xf4, 0x7d, 0x9f, 0x13, 0x35, 0x4f, 0xdf, 
+0x1f, 0x26, 0x17, 0xd4, 0x3c, 0xfd, 0xb0, 0x03, 
+0x40, 0xdd, 0x69, 0x44, 0xec, 0xd2, 0x6e, 0xf1, 
+0x7b, 0x54, 0x5c, 0xd8, 0x83, 0xca, 0xfa, 0x26, 
+0x59, 0xa0, 0x92, 0x5b, 0x02, 0x20, 0x0b, 0xb4, 
+0xfd, 0x0e, 0xb5, 0xb4, 0x4a, 0xc1, 0x7f, 0x99, 
+0x9c, 0x4a, 0xe4, 0xfd, 0x00, 0xd5, 0x71, 0x76, 
+0x1b, 0xc3, 0x8e, 0xc5, 0x0a, 0x00, 0x00, 0x00, 
+0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
+0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/accgroup.png b/source/bitmaps/icons/accgroup.png
new file mode 100644 (file)
index 0000000..60339fa
Binary files /dev/null and b/source/bitmaps/icons/accgroup.png differ
diff --git a/source/bitmaps/icons/accinet.cpp b/source/bitmaps/icons/accinet.cpp
new file mode 100644 (file)
index 0000000..6daaddd
--- /dev/null
@@ -0,0 +1,83 @@
+#include <iostream>
+
+#ifndef ICONS_ACCINET_CPP
+#define ICONS_ACCINET_CPP
+
+static unsigned char icons_accinet_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0x17, 0x00, 0x9a, 0x00, 0x36, 0x14, 
+0xbd, 0x58, 0x52, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x02, 0x1c, 0x12, 0x1f, 0x07, 0xc8, 
+0x73, 0x80, 0x9b, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0xaf, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xa5, 0x93, 
+0x3f, 0x48, 0x1b, 0x51, 0x1c, 0xc7, 0x3f, 0x07, 
+0xd1, 0x41, 0x11, 0x24, 0x62, 0x2a, 0xa8, 0x28, 
+0x3d, 0xac, 0x28, 0xc5, 0x45, 0xea, 0x1f, 0x10, 
+0x97, 0x92, 0xc9, 0x45, 0xbb, 0x67, 0x52, 0x11, 
+0xda, 0xa5, 0xa0, 0x88, 0x20, 0x08, 0xed, 0x54, 
+0x8a, 0x5b, 0x41, 0x5c, 0x3a, 0x49, 0x41, 0x17, 
+0x5d, 0xa4, 0x43, 0xdb, 0xa1, 0xa0, 0x20, 0x22, 
+0x22, 0x64, 0x50, 0x63, 0x0c, 0x6a, 0xa9, 0xc5, 
+0x96, 0x5e, 0x0c, 0xb9, 0xf8, 0x2e, 0xbd, 0x77, 
+0xde, 0x75, 0x88, 0xf7, 0x2e, 0x92, 0x4a, 0x03, 
+0xfe, 0xa6, 0xcf, 0xfb, 0xfe, 0xf8, 0x7e, 0xdf, 
+0xef, 0xee, 0xbd, 0x07, 0xf7, 0x2c, 0x0d, 0xe0, 
+0x65, 0xf7, 0x17, 0xaf, 0x58, 0x0c, 0xbd, 0xae, 
+0x29, 0xcb, 0x3c, 0x3f, 0xd4, 0xab, 0x85, 0xfc, 
+0x45, 0x47, 0x5b, 0x17, 0x00, 0x07, 0xc9, 0x38, 
+0x8f, 0x3b, 0xc3, 0xff, 0x35, 0xef, 0xed, 0xfd, 
+0x28, 0x6c, 0x06, 0x90, 0x33, 0x1c, 0xac, 0xfa, 
+0x42, 0x23, 0x67, 0x38, 0x00, 0x3c, 0xb9, 0x58, 
+0xba, 0xd3, 0xbc, 0xd3, 0x10, 0x0b, 0xa6, 0xf5, 
+0xc1, 0x14, 0x86, 0x12, 0x45, 0xd6, 0x44, 0x58, 
+0x36, 0x2d, 0x8f, 0xda, 0x4a, 0xcc, 0x67, 0x47, 
+0x49, 0x44, 0xd6, 0x44, 0xe6, 0xad, 0x20, 0x40, 
+0x5c, 0x1b, 0x48, 0x37, 0x82, 0xcf, 0x10, 0x51, 
+0x86, 0x48, 0xd3, 0xa8, 0xe2, 0x5f, 0xdf, 0xdf, 
+0x97, 0x04, 0xaa, 0x09, 0x84, 0xcc, 0x28, 0xd1, 
+0xb6, 0x2c, 0xf2, 0x79, 0x49, 0x22, 0xbe, 0xcf, 
+0xc6, 0xc7, 0x49, 0xa5, 0x27, 0xe2, 0xfb, 0xaa, 
+0x6f, 0x5b, 0x22, 0x08, 0xb0, 0x5d, 0x81, 0x9d, 
+0xad, 0xc0, 0x67, 0x80, 0xdd, 0xf0, 0xb3, 0xb2, 
+0x4e, 0x22, 0xf4, 0x2f, 0xd1, 0x91, 0x76, 0x89, 
+0xb6, 0xf8, 0xb9, 0x8b, 0x85, 0x81, 0x5d, 0x9e, 
+0x6f, 0x76, 0x03, 0x30, 0xd8, 0x78, 0x1e, 0x04, 
+0x5c, 0x7b, 0x81, 0xa1, 0x98, 0xfd, 0x5a, 0x58, 
+0xd7, 0xc9, 0xfc, 0x4e, 0x12, 0x8d, 0x46, 0x49, 
+0xaf, 0x6c, 0x03, 0xf0, 0xf5, 0x4f, 0xdf, 0xdd, 
+0x13, 0xe4, 0xaf, 0x84, 0xe2, 0x77, 0xdf, 0x5e, 
+0x51, 0x39, 0x50, 0x45, 0x35, 0x50, 0x37, 0xf6, 
+0x86, 0xea, 0xe1, 0x19, 0x00, 0x24, 0xf0, 0x40, 
+0xef, 0xf1, 0x6e, 0x4e, 0x21, 0xcd, 0x45, 0xf6, 
+0x18, 0x9f, 0xa1, 0xf5, 0x56, 0xa0, 0x9b, 0x73, 
+0x10, 0xeb, 0xb3, 0xc0, 0x25, 0x6e, 0xce, 0x29, 
+0xe3, 0x1f, 0xd8, 0xc1, 0x67, 0x54, 0x1d, 0x2f, 
+0x93, 0x39, 0x4f, 0x20, 0xd3, 0x29, 0x6a, 0x46, 
+0x96, 0x70, 0x4d, 0x30, 0xd7, 0x62, 0x54, 0x84, 
+0x75, 0x6a, 0x1b, 0xdb, 0x0b, 0x01, 0xae, 0x17, 
+0xa4, 0x16, 0xb3, 0x5f, 0x32, 0x9d, 0x2a, 0x5c, 
+0xb6, 0xb5, 0xd8, 0x6d, 0xcd, 0x0f, 0x00, 0xb8, 
+0x94, 0xa7, 0xaa, 0x79, 0x78, 0xf0, 0x53, 0x71, 
+0x6f, 0xdd, 0x27, 0xb6, 0xf4, 0x7e, 0x8c, 0xd4, 
+0x16, 0x00, 0xab, 0x73, 0x4f, 0x01, 0x18, 0xff, 
+0x20, 0x38, 0x79, 0xfb, 0x50, 0xd3, 0xca, 0x7d, 
+0xb6, 0xcd, 0x13, 0x1b, 0xde, 0x0b, 0x7d, 0x5b, 
+0xad, 0x67, 0xa6, 0xa7, 0x34, 0x80, 0xbf, 0x18, 
+0x8d, 0xb2, 0xb1, 0xd9, 0xda, 0xb2, 0x7b, 0x00, 
+0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 
+0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/accinet.png b/source/bitmaps/icons/accinet.png
new file mode 100644 (file)
index 0000000..e346b61
Binary files /dev/null and b/source/bitmaps/icons/accinet.png differ
diff --git a/source/bitmaps/icons/acclocal.cpp b/source/bitmaps/icons/acclocal.cpp
new file mode 100644 (file)
index 0000000..ee5f059
--- /dev/null
@@ -0,0 +1,64 @@
+#include <iostream>
+
+#ifndef ICONS_ACCLOCAL_CPP
+#define ICONS_ACCLOCAL_CPP
+
+static unsigned char icons_acclocal_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0x17, 0x00, 0x9a, 0x00, 0x36, 0x14, 
+0xbd, 0x58, 0x52, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x02, 0x1c, 0x12, 0x1e, 0x2b, 0xe3, 
+0xb0, 0xdd, 0x39, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x14, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xbd, 0x91, 
+0xb1, 0x4a, 0x03, 0x41, 0x14, 0x45, 0x4f, 0xc2, 
+0x5a, 0xda, 0x04, 0x5c, 0x2c, 0x04, 0x6d, 0x22, 
+0x28, 0x62, 0x23, 0xe2, 0x47, 0xd8, 0xd9, 0x5b, 
+0xf9, 0x03, 0x82, 0x7f, 0x60, 0xed, 0x2f, 0x58, 
+0xf9, 0x0f, 0x56, 0x76, 0x96, 0x22, 0x81, 0x2d, 
+0x12, 0x63, 0x2c, 0x14, 0x44, 0xa2, 0xb0, 0x2a, 
+0xbb, 0x71, 0x66, 0x9d, 0x99, 0xec, 0x5a, 0x2c, 
+0x33, 0xb3, 0x10, 0x65, 0xa3, 0x01, 0xa7, 0xba, 
+0x73, 0x1f, 0xe7, 0xcd, 0x9d, 0xf7, 0x60, 0xc6, 
+0xd3, 0x00, 0x38, 0xdc, 0xba, 0x28, 0xaa, 0x66, 
+0x70, 0x3c, 0x3f, 0x15, 0x7c, 0xb2, 0xbb, 0xd3, 
+0x08, 0xec, 0x65, 0xad, 0xbd, 0x09, 0x40, 0x6f, 
+0x10, 0xb1, 0xb1, 0xde, 0xaa, 0x85, 0x3b, 0x9d, 
+0xa7, 0xf2, 0x31, 0x80, 0x51, 0x6c, 0x90, 0x0b, 
+0x65, 0x61, 0x14, 0x1b, 0x00, 0xb6, 0x87, 0x67, 
+0x3f, 0xc2, 0x57, 0x8b, 0xfb, 0x3e, 0xad, 0x15, 
+0xa9, 0x88, 0x9d, 0x29, 0x92, 0x14, 0x21, 0x15, 
+0xcb, 0xab, 0xed, 0x09, 0xf8, 0xe1, 0x76, 0x80, 
+0x48, 0x52, 0x74, 0x26, 0x7d, 0x03, 0x31, 0x8e, 
+0xd1, 0x79, 0x88, 0xd5, 0x10, 0x3a, 0x20, 0x5c, 
+0x3a, 0x70, 0xfa, 0xe5, 0xf1, 0x74, 0xa2, 0xa1, 
+0x4b, 0x20, 0xf4, 0xbb, 0x33, 0x95, 0x94, 0x64, 
+0x99, 0xa6, 0x1f, 0x75, 0xb9, 0x3c, 0x3f, 0x72, 
+0x7e, 0x3f, 0xea, 0xba, 0xba, 0x92, 0xc2, 0x37, 
+0x50, 0xb9, 0x40, 0x25, 0x73, 0x58, 0x0d, 0x70, 
+0xdd, 0xda, 0x9b, 0x6a, 0x13, 0xc1, 0x77, 0xa6, 
+0xd1, 0xaa, 0x16, 0xcc, 0x4d, 0x39, 0xec, 0x26, 
+0xc0, 0xb8, 0xf0, 0x40, 0x55, 0xff, 0x39, 0x41, 
+0xf6, 0x21, 0x6a, 0x41, 0xf3, 0x99, 0x55, 0xb7, 
+0xf0, 0xca, 0x30, 0xb9, 0xc3, 0x6a, 0x58, 0x99, 
+0x2d, 0x81, 0x51, 0xf5, 0xdf, 0xb0, 0x73, 0x6a, 
+0x02, 0xe4, 0x85, 0xf1, 0xc3, 0xa9, 0xe8, 0x5f, 
+0x25, 0x78, 0xd3, 0xf7, 0xce, 0xbc, 0xe9, 0x3d, 
+0xf3, 0x6f, 0xe7, 0x0b, 0x31, 0xce, 0x7a, 0x05, 
+0x02, 0x4b, 0xe6, 0x93, 0x00, 0x00, 0x00, 0x00, 
+0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 
+0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/acclocal.png b/source/bitmaps/icons/acclocal.png
new file mode 100644 (file)
index 0000000..2e8723e
Binary files /dev/null and b/source/bitmaps/icons/acclocal.png differ
diff --git a/source/bitmaps/icons/accnone.cpp b/source/bitmaps/icons/accnone.cpp
new file mode 100644 (file)
index 0000000..959e7dc
--- /dev/null
@@ -0,0 +1,57 @@
+#include <iostream>
+
+#ifndef ICONS_ACCNONE_CPP
+#define ICONS_ACCNONE_CPP
+
+static unsigned char icons_accnone_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xdf, 0x05, 0x0e, 0x11, 0x1f, 0x30, 0xf1, 
+0xe4, 0x0b, 0x6c, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x00, 0xe0, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xc5, 0x91, 
+0x3b, 0x6e, 0x84, 0x30, 0x18, 0x84, 0x3f, 0x22, 
+0x0a, 0x0a, 0x2e, 0x41, 0x01, 0x12, 0x37, 0xe1, 
+0x0a, 0x54, 0x1c, 0x92, 0x8b, 0x50, 0x58, 0x42, 
+0x82, 0x82, 0x1b, 0x20, 0xc4, 0xd3, 0xe6, 0xe1, 
+0xa4, 0x88, 0xec, 0x25, 0xfb, 0xd0, 0xae, 0xb2, 
+0x52, 0x32, 0xd5, 0x78, 0xac, 0xf9, 0x35, 0xff, 
+0x3f, 0xf0, 0x26, 0x1c, 0x80, 0x24, 0x49, 0x3e, 
+0xcf, 0x62, 0x96, 0x65, 0x2f, 0x99, 0xd3, 0x34, 
+0x75, 0x5c, 0xf3, 0x88, 0xa2, 0x08, 0x80, 0xaa, 
+0xaa, 0x88, 0xe3, 0xf8, 0xa9, 0xb9, 0x28, 0x0a, 
+0x00, 0x5c, 0x80, 0xae, 0xeb, 0x18, 0x86, 0x01, 
+0xc3, 0x01, 0xc6, 0x71, 0x7c, 0x68, 0xf6, 0x7d, 
+0xdf, 0x72, 0x9b, 0x60, 0x9a, 0x26, 0x2b, 0xf6, 
+0x7d, 0x8f, 0x94, 0x92, 0x30, 0x0c, 0x6f, 0xcc, 
+0x75, 0x5d, 0xa3, 0xb5, 0x46, 0x29, 0x75, 0x19, 
+0xb0, 0xae, 0x2b, 0xfb, 0xbe, 0x63, 0xf8, 0x19, 
+0x41, 0x10, 0x58, 0xde, 0x34, 0xcd, 0xcd, 0x40, 
+0x9b, 0xe0, 0x6c, 0x54, 0x4a, 0xa1, 0x94, 0x42, 
+0x08, 0x41, 0x9e, 0xe7, 0x56, 0x17, 0x42, 0x7c, 
+0x5f, 0xde, 0x71, 0x90, 0x52, 0x5e, 0x06, 0x1c, 
+0xc7, 0xc1, 0x3c, 0xcf, 0x18, 0x0e, 0xe0, 0x79, 
+0xde, 0x4b, 0x4d, 0xb8, 0xf7, 0xc4, 0xeb, 0x35, 
+0xee, 0xc1, 0xac, 0xfc, 0x01, 0xa0, 0xb5, 0xb6, 
+0x1f, 0x67, 0xfe, 0xeb, 0x04, 0xcb, 0xb2, 0x3c, 
+0x35, 0xfe, 0x68, 0x61, 0xdb, 0x36, 0xda, 0xb6, 
+0xc5, 0xf0, 0xb7, 0x13, 0xfc, 0xcf, 0x0d, 0x4c, 
+0x8d, 0x00, 0x65, 0x59, 0xf2, 0x67, 0xf8, 0x02, 
+0x84, 0x6e, 0x7a, 0x1f, 0x87, 0xdb, 0x41, 0xa7, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/accnone.png b/source/bitmaps/icons/accnone.png
new file mode 100644 (file)
index 0000000..2660584
Binary files /dev/null and b/source/bitmaps/icons/accnone.png differ
diff --git a/source/bitmaps/icons/act1.cpp b/source/bitmaps/icons/act1.cpp
new file mode 100644 (file)
index 0000000..81c1d0a
--- /dev/null
@@ -0,0 +1,94 @@
+#include <iostream>
+
+#ifndef ICONS_ACT1_CPP
+#define ICONS_ACT1_CPP
+
+static unsigned char icons_act1_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, 
+0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 
+0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x1c, 0x3a, 0x15, 
+0x37, 0x5a, 0xa8, 0x00, 0x00, 0x02, 0x2e, 0x49, 
+0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x53, 0x41, 
+0x6b, 0x13, 0x51, 0x10, 0xfe, 0xde, 0xdb, 0xb7, 
+0xbb, 0xc9, 0x6e, 0x52, 0x6b, 0x12, 0xdb, 0xc6, 
+0xb4, 0x34, 0x05, 0x5d, 0x90, 0x22, 0x2d, 0x78, 
+0x08, 0x81, 0x5a, 0xd2, 0x83, 0xf5, 0x14, 0x08, 
+0xa8, 0x37, 0x6f, 0xb5, 0xbd, 0x08, 0x39, 0xe4, 
+0xa0, 0x60, 0x15, 0x04, 0x89, 0xa4, 0xe0, 0xc1, 
+0x93, 0x05, 0x51, 0x44, 0xf4, 0x90, 0x1c, 0x9a, 
+0x1f, 0x50, 0x31, 0xe0, 0xa9, 0xc1, 0x1e, 0xb4, 
+0xd0, 0x10, 0x6b, 0xa5, 0xb5, 0x21, 0xb5, 0xa4, 
+0xb1, 0x69, 0x2b, 0x34, 0x09, 0xd9, 0xdd, 0xac, 
+0x87, 0x6d, 0x17, 0x42, 0x2c, 0x16, 0xc4, 0x81, 
+0x81, 0x6f, 0x66, 0x78, 0xdf, 0xcc, 0xf7, 0xe6, 
+0x3d, 0xe0, 0x1f, 0x8d, 0x1c, 0x57, 0x50, 0x14, 
+0xc5, 0x23, 0x49, 0xd2, 0x88, 0x61, 0x18, 0xb4, 
+0xd1, 0x68, 0x2c, 0xe4, 0xf3, 0xf9, 0xad, 0x13, 
+0x11, 0x04, 0x86, 0x02, 0xe3, 0x67, 0x6d, 0xbd, 
+0x6f, 0xce, 0xe8, 0x1e, 0x57, 0xe7, 0x81, 0x9b, 
+0x23, 0x06, 0xb0, 0x27, 0xef, 0xea, 0x3f, 0x59, 
+0x79, 0xbf, 0x50, 0x2f, 0xde, 0x5e, 0x5c, 0xca, 
+0xa6, 0x8e, 0x25, 0x18, 0x1d, 0x1e, 0x7d, 0x78, 
+0x41, 0x18, 0x9c, 0x1e, 0x58, 0x3f, 0xcf, 0x88, 
+0x4e, 0x00, 0x02, 0x18, 0xd4, 0x00, 0xd1, 0x09, 
+0x40, 0x81, 0x82, 0x7f, 0x5d, 0xcf, 0xeb, 0xcb, 
+0xaf, 0x32, 0x9f, 0x32, 0x93, 0x47, 0x67, 0x38, 
+0xab, 0xf3, 0xa5, 0xc0, 0xd8, 0x60, 0xc7, 0xc5, 
+0x17, 0xde, 0xb5, 0x5e, 0xa6, 0x51, 0x15, 0x2a, 
+0x67, 0xfa, 0xfd, 0xd2, 0x1d, 0xbc, 0x7b, 0xfa, 
+0x1e, 0x2a, 0x55, 0x21, 0xfd, 0x92, 0xa9, 0xbd, 
+0xc7, 0x36, 0xc4, 0xf7, 0x88, 0xdf, 0x8b, 0x9b, 
+0x85, 0xa5, 0x96, 0x09, 0xae, 0x5f, 0xb9, 0xf1, 
+0x63, 0xe0, 0xdb, 0x39, 0x2f, 0xd1, 0xcd, 0xd4, 
+0xcc, 0x46, 0xbc, 0x45, 0xda, 0xdd, 0xfe, 0x69, 
+0x13, 0x50, 0xa0, 0xa0, 0xac, 0x55, 0x92, 0xf3, 
+0x49, 0xf7, 0x61, 0x08, 0x84, 0x42, 0x21, 0x9b, 
+0x93, 0xeb, 0x70, 0xd7, 0xb8, 0x1a, 0x6a, 0x62, 
+0x0d, 0x33, 0x1b, 0x71, 0x44, 0x95, 0x18, 0xa2, 
+0x4a, 0x0c, 0x00, 0x10, 0x55, 0x62, 0xa8, 0x89, 
+0x66, 0xad, 0xca, 0xaa, 0x90, 0x9b, 0xce, 0x53, 
+0xc1, 0x60, 0xd0, 0x07, 0x00, 0xec, 0xb0, 0xc1, 
+0x30, 0x67, 0x70, 0xac, 0x2a, 0x1c, 0x00, 0x00, 
+0x26, 0x06, 0xa7, 0x00, 0x1e, 0x6d, 0xd8, 0xd2, 
+0xad, 0x51, 0x4e, 0x92, 0xa4, 0x31, 0x00, 0x6f, 
+0x19, 0x00, 0x30, 0xc6, 0x40, 0x79, 0x0a, 0xc3, 
+0xd6, 0x04, 0xa5, 0xf4, 0xaf, 0xbb, 0xe7, 0x44, 
+0x0a, 0x06, 0x46, 0x2c, 0x09, 0x9a, 0xa6, 0x7d, 
+0xe6, 0x9d, 0x4c, 0x93, 0x25, 0x19, 0x76, 0x9b, 
+0xdd, 0xf2, 0xe7, 0x8b, 0xb3, 0x7f, 0xc4, 0x7c, 
+0x27, 0xd3, 0x54, 0x55, 0xcd, 0xb4, 0x5c, 0xe2, 
+0xe4, 0xcd, 0xa9, 0xa2, 0xa7, 0xdc, 0xe5, 0x43, 
+0xd3, 0x8c, 0x1f, 0xcf, 0x3f, 0x6a, 0xe9, 0x7a, 
+0x6f, 0xfc, 0x81, 0xb5, 0xf8, 0x3d, 0x6f, 0x65, 
+0x67, 0xf6, 0xf5, 0x33, 0x8f, 0x35, 0x01, 0x00, 
+0x6c, 0x57, 0x4a, 0xd7, 0x88, 0xdf, 0xd0, 0x64, 
+0x49, 0x86, 0x2c, 0xc9, 0x88, 0x47, 0x12, 0x00, 
+0x80, 0x78, 0x24, 0x81, 0x78, 0x24, 0x81, 0xa3, 
+0x3c, 0xd7, 0x4f, 0xf4, 0xed, 0xfd, 0xd2, 0xad, 
+0xb6, 0x77, 0xb0, 0xb2, 0xba, 0xb2, 0xe9, 0xed, 
+0xf3, 0xd2, 0x6e, 0x7f, 0xf7, 0x65, 0x59, 0x75, 
+0x50, 0x81, 0x09, 0xc8, 0xce, 0x7d, 0x84, 0xc0, 
+0x0b, 0xa6, 0x8b, 0x02, 0x9a, 0x3e, 0x4d, 0x5f, 
+0x2d, 0x7f, 0x7d, 0x99, 0x4a, 0xa7, 0x9e, 0xb4, 
+0x11, 0x00, 0x40, 0xee, 0x4b, 0xee, 0x83, 0xab, 
+0xcf, 0x95, 0x15, 0xbb, 0x84, 0xab, 0x82, 0x9b, 
+0x17, 0x05, 0x59, 0x20, 0xd4, 0x49, 0xd0, 0x38, 
+0x5d, 0xd7, 0x2b, 0xe2, 0xce, 0x6e, 0xae, 0xb8, 
+0x3c, 0x91, 0x9c, 0x4b, 0x26, 0x4e, 0xf4, 0x99, 
+0xc2, 0xe1, 0xb0, 0xc7, 0xe1, 0x70, 0x8c, 0x10, 
+0x42, 0x68, 0xbd, 0x5e, 0x5f, 0x48, 0xa7, 0xd3, 
+0x5b, 0xf8, 0x1f, 0xf6, 0x1b, 0x0d, 0xc1, 0xb9, 
+0x3e, 0x90, 0x96, 0xaf, 0xc6, 0x00, 0x00, 0x00, 
+0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
+0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/act1.png b/source/bitmaps/icons/act1.png
new file mode 100644 (file)
index 0000000..2e65ce8
Binary files /dev/null and b/source/bitmaps/icons/act1.png differ
diff --git a/source/bitmaps/icons/act2.cpp b/source/bitmaps/icons/act2.cpp
new file mode 100644 (file)
index 0000000..018bf31
--- /dev/null
@@ -0,0 +1,92 @@
+#include <iostream>
+
+#ifndef ICONS_ACT2_CPP
+#define ICONS_ACT2_CPP
+
+static unsigned char icons_act2_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, 
+0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 
+0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x1d, 0x0a, 0x2a, 
+0xf5, 0x5b, 0x45, 0x00, 0x00, 0x02, 0x23, 0x49, 
+0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x53, 0xcf, 
+0x6b, 0x13, 0x41, 0x18, 0x7d, 0x33, 0x3b, 0x99, 
+0xdd, 0xec, 0x26, 0x1a, 0xd3, 0x24, 0x6d, 0x6c, 
+0x62, 0x13, 0xa4, 0x01, 0x09, 0xd2, 0x82, 0x48, 
+0x2e, 0xb5, 0xa4, 0x97, 0x7a, 0x0a, 0x08, 0x5e, 
+0xbd, 0xd5, 0x16, 0x44, 0x3c, 0x78, 0x13, 0x7f, 
+0x80, 0x20, 0x95, 0x0a, 0xa2, 0xe8, 0xc1, 0x82, 
+0x28, 0xe2, 0x2f, 0x68, 0x0e, 0xe6, 0x0f, 0xf0, 
+0x10, 0x10, 0x85, 0x2d, 0xf4, 0xa0, 0x85, 0xc4, 
+0xd8, 0x1f, 0x58, 0x0d, 0x09, 0xb5, 0x8d, 0x4d, 
+0x5b, 0x21, 0xe9, 0x92, 0xec, 0x66, 0x3d, 0x84, 
+0xac, 0x86, 0x58, 0x29, 0x88, 0x1f, 0x7c, 0xcc, 
+0x1b, 0x86, 0xef, 0x7d, 0x6f, 0xbe, 0x37, 0x03, 
+0xfc, 0x63, 0x90, 0xdd, 0x0e, 0x22, 0x91, 0x88, 
+0x47, 0x96, 0xe5, 0x21, 0xd3, 0x34, 0x69, 0xad, 
+0x56, 0x53, 0x73, 0xb9, 0xdc, 0xea, 0x9e, 0x08, 
+0x62, 0x03, 0xb1, 0xd1, 0x83, 0x52, 0xe0, 0xb9, 
+0xd7, 0xf0, 0xb8, 0x5d, 0x95, 0x2e, 0x81, 0x98, 
+0xc0, 0x96, 0xb2, 0x69, 0x7c, 0x67, 0xa5, 0xed, 
+0xbc, 0x56, 0x38, 0x3f, 0x37, 0x3f, 0x9b, 0xdc, 
+0x95, 0x60, 0x78, 0x70, 0xf8, 0xfa, 0x11, 0x1e, 
+0xbd, 0x12, 0x5e, 0xe9, 0x67, 0xc4, 0x20, 0x00, 
+0x01, 0x4c, 0x6a, 0x82, 0x18, 0x04, 0xa0, 0x40, 
+0x3e, 0xb4, 0x62, 0xe4, 0x8c, 0xcc, 0x93, 0xf4, 
+0xfb, 0xf4, 0x78, 0xab, 0x46, 0xb0, 0x3a, 0x1f, 
+0x8b, 0x8d, 0x44, 0xf7, 0x1d, 0x7d, 0xe4, 0xff, 
+0x1c, 0x60, 0x3a, 0xad, 0xa3, 0x2e, 0x34, 0xd3, 
+0xc2, 0xb4, 0x0e, 0xf9, 0x87, 0x42, 0xed, 0x3d, 
+0xd2, 0x80, 0xad, 0x47, 0xfc, 0x52, 0x28, 0xe6, 
+0xe7, 0x01, 0x80, 0xb5, 0x08, 0x82, 0xee, 0x43, 
+0x2f, 0x5d, 0xcb, 0x6e, 0x61, 0x87, 0x57, 0x2d, 
+0x45, 0xb7, 0xbe, 0x4e, 0x5a, 0xf8, 0x52, 0xf8, 
+0x2a, 0xcc, 0x86, 0x09, 0x67, 0x61, 0xbf, 0xd0, 
+0x17, 0x09, 0xdc, 0x55, 0x81, 0x67, 0xd6, 0x15, 
+0xe2, 0xf1, 0xb8, 0x14, 0x96, 0x0e, 0x6f, 0x2b, 
+0xcb, 0x4e, 0x4e, 0x48, 0xe7, 0x5c, 0xef, 0x2f, 
+0xde, 0xb1, 0xf0, 0x85, 0xfe, 0x8b, 0xd8, 0x09, 
+0x55, 0x8c, 0x8f, 0x95, 0x4c, 0x9f, 0xaa, 0xaa, 
+0xc5, 0x96, 0x82, 0x41, 0xc1, 0x14, 0x58, 0x95, 
+0x57, 0xfe, 0x6a, 0xd9, 0x58, 0x74, 0x02, 0xe0, 
+0x80, 0xa0, 0x53, 0x41, 0x96, 0xe5, 0x11, 0x00, 
+0x2f, 0x18, 0x00, 0x30, 0xc6, 0x40, 0x6d, 0x14, 
+0xa6, 0xd4, 0x00, 0xa5, 0x14, 0x0f, 0xe7, 0xa6, 
+0x01, 0x00, 0x13, 0xc7, 0xcf, 0xb5, 0xad, 0x82, 
+0xdc, 0x1c, 0x99, 0x20, 0x52, 0x30, 0x30, 0x62, 
+0xcd, 0x40, 0xd7, 0xf5, 0x0f, 0x36, 0x27, 0xd3, 
+0x25, 0xd9, 0xc6, 0xef, 0xbd, 0xfd, 0x25, 0xd7, 
+0x2e, 0xd9, 0xff, 0xa8, 0xc4, 0x74, 0x19, 0x7a, 
+0xbd, 0x54, 0x4f, 0xb7, 0xd9, 0x38, 0x7e, 0x66, 
+0xa2, 0xe0, 0x29, 0xf9, 0x7a, 0xd1, 0x68, 0xee, 
+0x6f, 0xbe, 0xbe, 0x61, 0x15, 0x5c, 0x1e, 0xbd, 
+0xd6, 0x66, 0xfc, 0x96, 0xbf, 0xbc, 0x31, 0xfd, 
+0xf4, 0x81, 0xa7, 0xcd, 0x85, 0xf5, 0xf2, 0xda, 
+0x69, 0x6f, 0xc8, 0xfb, 0x4e, 0xfe, 0xe6, 0x60, 
+0x00, 0x30, 0x79, 0x6a, 0xca, 0xaa, 0x51, 0x64, 
+0xc5, 0xc2, 0x9a, 0xaf, 0x6a, 0xac, 0x97, 0xd6, 
+0xce, 0x76, 0xbc, 0x83, 0x85, 0xa5, 0x85, 0xa2, 
+0x3f, 0xe8, 0xa7, 0xdd, 0xa1, 0xee, 0x13, 0x4a, 
+0xdd, 0x41, 0x39, 0xe3, 0xe0, 0xb6, 0xdf, 0x52, 
+0xe4, 0x68, 0xf4, 0xea, 0xc6, 0x52, 0x69, 0xf1, 
+0x71, 0x32, 0x95, 0xbc, 0xdd, 0x41, 0x00, 0x00, 
+0xd9, 0x4f, 0xd9, 0x37, 0xee, 0xa0, 0x7b, 0x56, 
+0xf4, 0xf1, 0x93, 0xbc, 0xcb, 0x26, 0x72, 0x85, 
+0x13, 0xea, 0x24, 0xa8, 0x1d, 0xd0, 0x8c, 0xb2, 
+0xb8, 0xb1, 0x99, 0x2d, 0x64, 0xc6, 0x66, 0x5e, 
+0xcd, 0x4c, 0xed, 0xe9, 0x33, 0x25, 0x12, 0x09, 
+0x8f, 0xc3, 0xe1, 0x18, 0x22, 0x84, 0x50, 0x4d, 
+0xd3, 0xd4, 0x54, 0x2a, 0xb5, 0x8a, 0xff, 0x11, 
+0x3f, 0x01, 0x3c, 0x31, 0xb6, 0xc1, 0x6f, 0xfe, 
+0x37, 0x57, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 
+0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/act2.png b/source/bitmaps/icons/act2.png
new file mode 100644 (file)
index 0000000..ca810f8
Binary files /dev/null and b/source/bitmaps/icons/act2.png differ
diff --git a/source/bitmaps/icons/act3.cpp b/source/bitmaps/icons/act3.cpp
new file mode 100644 (file)
index 0000000..02c66dd
--- /dev/null
@@ -0,0 +1,94 @@
+#include <iostream>
+
+#ifndef ICONS_ACT3_CPP
+#define ICONS_ACT3_CPP
+
+static unsigned char icons_act3_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, 
+0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 
+0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x1d, 0x11, 0xa0, 
+0x90, 0x92, 0xa9, 0x00, 0x00, 0x02, 0x30, 0x49, 
+0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x93, 0xdf, 
+0x4b, 0x93, 0x51, 0x1c, 0xc6, 0x9f, 0xf3, 0xe3, 
+0xfd, 0xbd, 0xe9, 0xda, 0xe6, 0x74, 0x6d, 0xab, 
+0x75, 0xd1, 0x20, 0x24, 0x14, 0x42, 0x86, 0xe0, 
+0x64, 0xde, 0xd8, 0xd5, 0x20, 0xe8, 0xb6, 0xbb, 
+0x52, 0x90, 0x20, 0x61, 0x97, 0x49, 0x20, 0x84, 
+0x61, 0x10, 0x06, 0x5e, 0x14, 0x48, 0x23, 0x22, 
+0x02, 0xbd, 0x68, 0x7f, 0x40, 0x17, 0x83, 0x20, 
+0x50, 0xe8, 0xa2, 0x04, 0xc7, 0x52, 0x21, 0x6b, 
+0x4c, 0x4c, 0x97, 0xd3, 0xc2, 0xed, 0x1d, 0x7b, 
+0xdf, 0xd7, 0xb7, 0x8b, 0xb1, 0x17, 0xcb, 0x04, 
+0x21, 0xfa, 0xc2, 0x03, 0xdf, 0xf3, 0x1c, 0x9e, 
+0xcf, 0x39, 0x70, 0xbe, 0x07, 0xf8, 0xc7, 0x22, 
+0x27, 0x6d, 0xc4, 0x62, 0x31, 0xbf, 0xaa, 0xaa, 
+0x03, 0xb6, 0x6d, 0xd3, 0x46, 0xa3, 0xb1, 0x58, 
+0x28, 0x14, 0xb6, 0x4e, 0x05, 0x88, 0xf7, 0xc4, 
+0x87, 0xcf, 0xca, 0xe1, 0x97, 0x1d, 0x96, 0xdf, 
+0xeb, 0xa9, 0xfa, 0x18, 0xb1, 0x81, 0x7d, 0x6d, 
+0xcf, 0xfa, 0xce, 0xcb, 0x3f, 0x8a, 0xf5, 0xd2, 
+0xed, 0xf7, 0xcb, 0x4b, 0x0b, 0x27, 0x02, 0x06, 
+0x7b, 0x07, 0x27, 0x2f, 0x89, 0xdd, 0x13, 0x17, 
+0x36, 0x2e, 0x72, 0x62, 0x11, 0x80, 0x00, 0x36, 
+0xb5, 0x41, 0x2c, 0x02, 0x50, 0xa0, 0x18, 0xdd, 
+0xb0, 0x0a, 0xd6, 0xca, 0xf3, 0xdc, 0x87, 0xdc, 
+0x48, 0x2b, 0xc3, 0x9c, 0x93, 0xaf, 0xc4, 0x87, 
+0xba, 0xdb, 0x2e, 0x3f, 0x0b, 0x7e, 0x0e, 0x73, 
+0x93, 0x1a, 0x30, 0x58, 0x53, 0x4e, 0x4f, 0x0d, 
+0xa8, 0x3f, 0x35, 0xaa, 0x74, 0xc9, 0x3d, 0x42, 
+0x97, 0xf4, 0xa5, 0xb4, 0x59, 0x5c, 0x06, 0x00, 
+0xda, 0x02, 0x44, 0xbc, 0xe7, 0x5e, 0x79, 0x8a, 
+0x5e, 0xa6, 0x8b, 0x35, 0xfc, 0xa9, 0xc9, 0xad, 
+0x09, 0xa7, 0x77, 0x97, 0xda, 0xd9, 0x79, 0x4f, 
+0xf8, 0x71, 0x2b, 0x47, 0x01, 0x20, 0x99, 0x4c, 
+0xca, 0x6e, 0xd6, 0xe6, 0xd3, 0x99, 0x0e, 0x5d, 
+0xd2, 0xf1, 0xf0, 0xeb, 0x14, 0x74, 0x49, 0x77, 
+0x74, 0x27, 0x96, 0x76, 0xbc, 0x1a, 0xaf, 0x41, 
+0x3b, 0x74, 0xb7, 0xf7, 0xf7, 0xf7, 0x87, 0x8e, 
+0xde, 0xa0, 0x97, 0xd9, 0x8c, 0xd7, 0xc4, 0x2a, 
+0x66, 0xd7, 0x66, 0x00, 0x00, 0xb3, 0x6b, 0x33, 
+0xa8, 0x0a, 0x07, 0x8e, 0x00, 0xa0, 0x2a, 0x1c, 
+0xa0, 0x26, 0x56, 0x41, 0x4d, 0xca, 0x54, 0x55, 
+0x1d, 0x72, 0x00, 0x9c, 0x73, 0x50, 0x81, 0x82, 
+0xc8, 0x04, 0xa3, 0x7d, 0x63, 0x00, 0x80, 0xd1, 
+0xbe, 0x31, 0x30, 0x95, 0x81, 0xa9, 0x0c, 0x99, 
+0xfc, 0x1c, 0x00, 0x20, 0x93, 0x9f, 0x6b, 0x7a, 
+0x12, 0x03, 0xe7, 0x9c, 0x38, 0x00, 0xd3, 0x34, 
+0x3f, 0x0a, 0x6e, 0x6e, 0x6a, 0xaa, 0x06, 0x45, 
+0x56, 0x00, 0x00, 0x8a, 0xac, 0x38, 0x1a, 0x4f, 
+0xa4, 0x01, 0x00, 0xe3, 0x89, 0x34, 0x14, 0x59, 
+0x81, 0xe0, 0xe1, 0xa6, 0x61, 0x18, 0xb9, 0xdf, 
+0x9e, 0x71, 0xe4, 0xc6, 0x68, 0xc9, 0x5f, 0x0e, 
+0x84, 0x70, 0xd8, 0x5c, 0x3f, 0x78, 0x73, 0x1f, 
+0x77, 0x87, 0xef, 0xfd, 0x75, 0x72, 0xf6, 0x83, 
+0x95, 0xdd, 0xa7, 0x2f, 0x9e, 0xf8, 0x01, 0x80, 
+0xb7, 0xfc, 0x9d, 0xca, 0xf6, 0xf5, 0x8e, 0x68, 
+0xc7, 0x3b, 0xf5, 0x9b, 0x8b, 0x03, 0xc0, 0xd4, 
+0xb5, 0x69, 0x68, 0xaa, 0x76, 0x2c, 0x5f, 0x0f, 
+0xd4, 0xac, 0x9d, 0xf2, 0xf6, 0xad, 0x63, 0x73, 
+0xb0, 0xba, 0xbe, 0xba, 0x19, 0x8c, 0x04, 0x69, 
+0x67, 0xb4, 0x33, 0xa1, 0x19, 0x2e, 0x2a, 0x72, 
+0x11, 0xa2, 0x70, 0x44, 0x92, 0x88, 0xc3, 0x90, 
+0x69, 0xad, 0x97, 0xd7, 0x32, 0x0b, 0xd9, 0x85, 
+0x47, 0xc7, 0x00, 0x00, 0x90, 0xff, 0x94, 0x7f, 
+0xeb, 0x8d, 0x78, 0x97, 0xa4, 0x80, 0x78, 0x55, 
+0xf4, 0x09, 0x92, 0xa8, 0x89, 0x84, 0xba, 0x09, 
+0x1a, 0x67, 0xea, 0x56, 0x45, 0xda, 0xdd, 0xcb, 
+0x97, 0x56, 0x6e, 0xce, 0xbf, 0x9e, 0x9f, 0x3e, 
+0xd5, 0x67, 0x4a, 0xa5, 0x52, 0x7e, 0x97, 0xcb, 
+0x35, 0x40, 0x08, 0xa1, 0xf5, 0x7a, 0x7d, 0x31, 
+0x9b, 0xcd, 0x6e, 0xe1, 0x7f, 0xd4, 0x2f, 0x48, 
+0xf5, 0xce, 0x67, 0xed, 0xc2, 0xa9, 0xc3, 0x00, 
+0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 
+0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/act3.png b/source/bitmaps/icons/act3.png
new file mode 100644 (file)
index 0000000..a630b23
Binary files /dev/null and b/source/bitmaps/icons/act3.png differ
diff --git a/source/bitmaps/icons/act4.cpp b/source/bitmaps/icons/act4.cpp
new file mode 100644 (file)
index 0000000..7fd1ced
--- /dev/null
@@ -0,0 +1,94 @@
+#include <iostream>
+
+#ifndef ICONS_ACT4_CPP
+#define ICONS_ACT4_CPP
+
+static unsigned char icons_act4_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, 
+0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 
+0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x2a, 0x1e, 0xa0, 
+0x28, 0x2f, 0x0c, 0x00, 0x00, 0x02, 0x2f, 0x49, 
+0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x53, 0xcf, 
+0x6b, 0x13, 0x41, 0x14, 0xfe, 0xe6, 0xc7, 0xce, 
+0x6e, 0x76, 0x93, 0x36, 0x26, 0x4d, 0xdb, 0xd8, 
+0x46, 0xeb, 0xc1, 0x80, 0x14, 0x69, 0xc1, 0x43, 
+0x08, 0xb4, 0x25, 0xbd, 0xd4, 0x53, 0x41, 0xf0, 
+0x4f, 0xa8, 0x7a, 0xf1, 0x20, 0x78, 0xf0, 0x60, 
+0x28, 0xf4, 0x52, 0xa8, 0x20, 0x15, 0xaf, 0x62, 
+0xf1, 0xa0, 0x42, 0x73, 0x68, 0xfe, 0x02, 0x59, 
+0x2a, 0x0a, 0x0d, 0x7a, 0xd0, 0x42, 0x43, 0xac, 
+0x05, 0xab, 0x21, 0xa1, 0xb6, 0xd1, 0xd6, 0x0a, 
+0xcd, 0x2e, 0xfb, 0x23, 0xeb, 0x21, 0xee, 0x62, 
+0x2d, 0x85, 0x82, 0xf8, 0xe0, 0x63, 0x66, 0xbe, 
+0x79, 0xef, 0x9b, 0xf7, 0xde, 0xcc, 0x00, 0xff, 
+0x68, 0xe4, 0xb8, 0x8d, 0x74, 0x3a, 0xdd, 0xa5, 
+0xaa, 0xea, 0x88, 0xe7, 0x79, 0xd4, 0xb2, 0xac, 
+0x95, 0x4a, 0xa5, 0xb2, 0x75, 0x22, 0x81, 0xcc, 
+0x50, 0x66, 0xe2, 0xb4, 0xd2, 0xff, 0x34, 0xe1, 
+0x76, 0xc5, 0xa2, 0x07, 0x71, 0x46, 0x3c, 0xe0, 
+0x87, 0xb6, 0xe7, 0x7e, 0xe3, 0x8d, 0xfd, 0xaa, 
+0x59, 0xbb, 0xf9, 0x76, 0xb5, 0x54, 0x38, 0x56, 
+0x60, 0x6c, 0x78, 0x6c, 0xe6, 0x82, 0x18, 0xcc, 
+0x9f, 0xdb, 0x3c, 0xcf, 0x89, 0x4b, 0x00, 0x02, 
+0x78, 0xd4, 0x03, 0x71, 0x09, 0x40, 0x81, 0xea, 
+0xc0, 0xa6, 0x5b, 0x71, 0xd7, 0x9e, 0xe8, 0xef, 
+0xf4, 0xeb, 0x7e, 0x0c, 0x0b, 0x4e, 0xbe, 0x94, 
+0x19, 0x1f, 0xec, 0xb8, 0xf8, 0x38, 0xf9, 0xa9, 
+0x9f, 0x3b, 0xd4, 0x86, 0xcd, 0x6c, 0xe4, 0x77, 
+0xee, 0xe0, 0xc5, 0xbc, 0x0e, 0x9b, 0xd9, 0xb0, 
+0xa9, 0x0d, 0xf5, 0xa7, 0x46, 0x43, 0xbd, 0xca, 
+0x90, 0xd4, 0x2b, 0x7f, 0xae, 0xd5, 0xab, 0xab, 
+0x00, 0x40, 0x7d, 0x81, 0x54, 0xec, 0xcc, 0xf3, 
+0x68, 0x35, 0xc6, 0x0c, 0xd1, 0x84, 0x21, 0x9a, 
+0x98, 0xd9, 0xca, 0x03, 0x00, 0xfc, 0xb5, 0x8f, 
+0x48, 0xad, 0x93, 0x9d, 0x8d, 0xf6, 0x3f, 0xf0, 
+0xe3, 0x28, 0x00, 0xe4, 0x72, 0x39, 0x25, 0xc2, 
+0x3a, 0xe2, 0x06, 0x33, 0x60, 0xc8, 0x06, 0xee, 
+0x7d, 0x99, 0x0d, 0xca, 0x32, 0x64, 0xe3, 0x10, 
+0x9a, 0xbc, 0x09, 0xad, 0x15, 0xe9, 0xcc, 0x66, 
+0xb3, 0x7d, 0x00, 0xc0, 0x7f, 0xfb, 0x0d, 0x33, 
+0x8f, 0xf1, 0xa6, 0x38, 0x08, 0x02, 0xa7, 0x06, 
+0x6f, 0xb4, 0x27, 0x52, 0x7b, 0x58, 0x28, 0x3f, 
+0x0a, 0x38, 0xe6, 0x50, 0xa6, 0xaa, 0xea, 0x38, 
+0x80, 0x67, 0x1c, 0x00, 0x38, 0xe7, 0xa0, 0x12, 
+0x85, 0xa7, 0xb4, 0x40, 0x69, 0xbb, 0x2a, 0xa6, 
+0xb2, 0x23, 0x57, 0xe6, 0x73, 0x4c, 0xa6, 0xe0, 
+0xe0, 0x24, 0xc8, 0xc0, 0x71, 0x9c, 0xf7, 0x52, 
+0x84, 0x3b, 0x8a, 0x2a, 0x09, 0x00, 0xb8, 0x35, 
+0x7a, 0x1b, 0x21, 0x25, 0x04, 0x00, 0x78, 0xf8, 
+0x6a, 0x3e, 0x10, 0xf0, 0x39, 0x2f, 0xea, 0x3a, 
+0x76, 0xc3, 0xd6, 0x83, 0x1e, 0x2c, 0x2f, 0x2f, 
+0x9b, 0x16, 0xb3, 0x1a, 0x9a, 0xa6, 0x41, 0x0b, 
+0x1d, 0x86, 0x6f, 0x77, 0x27, 0xa6, 0xdb, 0x9c, 
+0xaa, 0xc1, 0x51, 0x9c, 0x7d, 0x5d, 0xd7, 0xeb, 
+0x7f, 0xf6, 0x00, 0x3b, 0xbb, 0xdb, 0x57, 0x13, 
+0x03, 0x89, 0xd7, 0xea, 0xd7, 0x30, 0xff, 0x3b, 
+0xf5, 0xd9, 0x2b, 0x73, 0xd0, 0xd4, 0xb6, 0x98, 
+0xd9, 0xdd, 0x74, 0x77, 0x1a, 0xdb, 0xd7, 0x8e, 
+0xbc, 0x83, 0xf5, 0x8d, 0xf5, 0x7a, 0x32, 0x95, 
+0xa4, 0x3d, 0x03, 0x3d, 0xa3, 0x9a, 0x1d, 0xa6, 
+0x82, 0x0b, 0x08, 0x49, 0xa0, 0xb4, 0xf4, 0x06, 
+0x42, 0x12, 0x10, 0xb2, 0x40, 0xab, 0xcf, 0x71, 
+0x37, 0x1a, 0x1f, 0x17, 0x0a, 0xc5, 0xc2, 0xfd, 
+0x23, 0x02, 0x00, 0x50, 0xfe, 0x50, 0x7e, 0x19, 
+0x4b, 0xc5, 0x4a, 0x72, 0xb7, 0xb8, 0x2c, 0xe2, 
+0x92, 0x2c, 0x34, 0x41, 0x68, 0x84, 0xc0, 0x3a, 
+0x65, 0xba, 0xbb, 0xf2, 0xf7, 0xbd, 0x72, 0x6d, 
+0x6d, 0x6a, 0x71, 0x69, 0x71, 0xee, 0x44, 0x9f, 
+0x69, 0x72, 0x72, 0xb2, 0x2b, 0x1c, 0x0e, 0x8f, 
+0x10, 0x42, 0xa8, 0x69, 0x9a, 0x2b, 0xc5, 0x62, 
+0x71, 0x0b, 0xff, 0xc3, 0x7e, 0x01, 0x4b, 0x89, 
+0xc3, 0x0b, 0x6e, 0x03, 0xa3, 0xa2, 0x00, 0x00, 
+0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 
+0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/act4.png b/source/bitmaps/icons/act4.png
new file mode 100644 (file)
index 0000000..fdb1f16
Binary files /dev/null and b/source/bitmaps/icons/act4.png differ
diff --git a/source/bitmaps/icons/activitywindow.cpp b/source/bitmaps/icons/activitywindow.cpp
new file mode 100644 (file)
index 0000000..bbe20fb
--- /dev/null
@@ -0,0 +1,618 @@
+#include <iostream>
+
+#ifndef ICONS_ACTIVITYWINDOW_CPP
+#define ICONS_ACTIVITYWINDOW_CPP
+
+static unsigned char icons_activitywindow_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x12, 0x7c, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xfb, 
+0x6f, 0x5c, 0xc7, 0x75, 0xc7, 0x3f, 0x33, 0x73, 
+0x5f, 0xfb, 0xe0, 0x63, 0x25, 0x52, 0x94, 0x28, 
+0x91, 0x7a, 0xd9, 0x94, 0x64, 0xc9, 0xa2, 0x64, 
+0x3d, 0xfc, 0x92, 0x6c, 0x29, 0x76, 0x1a, 0xc5, 
+0x28, 0x6a, 0xd7, 0x2d, 0xda, 0xc2, 0x30, 0x52, 
+0xb4, 0x0d, 0x9c, 0xa2, 0xbf, 0x04, 0xe8, 0xbf, 
+0x51, 0xe4, 0xa7, 0x22, 0x48, 0x0b, 0xe4, 0x97, 
+0x14, 0x76, 0x62, 0x20, 0x6d, 0xea, 0xfa, 0x51, 
+0x27, 0x91, 0x9c, 0x38, 0x6a, 0x64, 0xb9, 0xa2, 
+0x69, 0x4b, 0x8e, 0x23, 0xd9, 0x7a, 0xd1, 0x12, 
+0xa9, 0xd7, 0x8a, 0xd4, 0x8a, 0x5c, 0xee, 0xe3, 
+0xbe, 0xfb, 0xc3, 0xdd, 0xbb, 0xbc, 0xbb, 0x5c, 
+0x52, 0x4b, 0x4b, 0x4e, 0x1b, 0x74, 0x80, 0x83, 
+0xbb, 0x7b, 0x77, 0x76, 0xee, 0x9c, 0xef, 0xf9, 
+0x9e, 0x33, 0x73, 0x67, 0xce, 0x88, 0x30, 0x0c, 
+0xf9, 0x32, 0x8b, 0x10, 0x42, 0x2c, 0xf4, 0x53, 
+0x8b, 0x7b, 0xf3, 0x3a, 0x13, 0x7e, 0xc9, 0x1d, 
+0xd4, 0xbe, 0x8c, 0x46, 0x9b, 0x94, 0x16, 0x0b, 
+0x5c, 0x17, 0x2a, 0x61, 0xf2, 0xda, 0x8c, 0xdf, 
+0xbd, 0x06, 0x44, 0xdc, 0xab, 0xf6, 0x5a, 0x28, 
+0x2d, 0x9a, 0x3e, 0xcb, 0x16, 0xf7, 0x92, 0x25, 
+0xa9, 0xf8, 0x62, 0x12, 0x55, 0xba, 0x47, 0x1d, 
+0xbf, 0x6b, 0x06, 0x2c, 0xa0, 0xb8, 0x4c, 0x5c, 
+0x5b, 0x89, 0xa0, 0x11, 0x84, 0x58, 0x99, 0xa0, 
+0xf6, 0x39, 0x58, 0x40, 0xea, 0x40, 0xc4, 0x8f, 
+0xbd, 0x5b, 0x20, 0xee, 0x0a, 0x80, 0x84, 0xf2, 
+0xcd, 0x4a, 0xab, 0x84, 0x68, 0x35, 0x51, 0x4d, 
+0xd2, 0xcc, 0x82, 0xa4, 0xa2, 0x1e, 0xe0, 0xb7, 
+0xb8, 0xfa, 0x34, 0x81, 0x71, 0xb7, 0x40, 0x7c, 
+0x21, 0x17, 0x68, 0x52, 0xbc, 0x59, 0x69, 0x0d, 
+0xd0, 0x13, 0x62, 0xd4, 0x24, 0xfe, 0x1e, 0x03, 
+0x92, 0x64, 0x42, 0x6c, 0xf5, 0x58, 0x59, 0xb7, 
+0x26, 0x4e, 0xd3, 0x35, 0x96, 0x56, 0x60, 0x7c, 
+0x21, 0x10, 0x96, 0xcc, 0x80, 0x84, 0xf2, 0xb1, 
+0x02, 0x49, 0x2b, 0x1b, 0x80, 0x59, 0x13, 0xab, 
+0x26, 0xa9, 0xc4, 0xf7, 0x18, 0x8c, 0x98, 0x11, 
+0x31, 0x00, 0x49, 0xcb, 0xc7, 0x0a, 0xdb, 0x35, 
+0xa9, 0x02, 0x95, 0xda, 0xb5, 0x5a, 0xbb, 0x17, 
+0x03, 0x12, 0x33, 0x23, 0xa0, 0xc6, 0x86, 0xa5, 
+0x82, 0xb0, 0x24, 0x00, 0x6a, 0xca, 0xc7, 0x12, 
+0x5b, 0x3c, 0xb6, 0x72, 0xac, 0x70, 0x1a, 0xc8, 
+0x24, 0x24, 0x0d, 0xa4, 0x57, 0xac, 0x58, 0xb1, 
+0x7a, 0xf5, 0xea, 0xd5, 0x9b, 0x2d, 0xcb, 0x5a, 
+0x66, 0x59, 0x56, 0xb7, 0x61, 0x18, 0x9d, 0x86, 
+0x61, 0x74, 0x4a, 0x29, 0x75, 0xc7, 0x71, 0x8a, 
+0x8e, 0xe3, 0xcc, 0xd8, 0xb6, 0x7d, 0xdb, 0xb6, 
+0xed, 0xc2, 0xed, 0xdb, 0xb7, 0x27, 0x2e, 0x5c, 
+0xb8, 0x70, 0x26, 0x08, 0x82, 0x12, 0x50, 0x06, 
+0x4a, 0x09, 0x29, 0x27, 0x00, 0xb1, 0x9b, 0x81, 
+0x58, 0xaa, 0x4b, 0xb4, 0xed, 0x02, 0x09, 0xe5, 
+0x63, 0xba, 0xc7, 0x16, 0x8f, 0xad, 0x9c, 0x01, 
+0x3a, 0x6a, 0xd2, 0x09, 0x74, 0x0c, 0x0e, 0x0e, 
+0x6e, 0x1a, 0x18, 0x18, 0xd8, 0xdd, 0xd3, 0xd3, 
+0xb3, 0x35, 0x9d, 0x4e, 0xf7, 0xb5, 0xf5, 0xa0, 
+0x5a, 0xf1, 0x3c, 0xaf, 0x5c, 0x28, 0x14, 0x3e, 
+0xbb, 0x7e, 0xfd, 0xfa, 0x47, 0xe7, 0xce, 0x9d, 
+0x3b, 0x69, 0xdb, 0xf6, 0x14, 0x30, 0x03, 0x14, 
+0x6b, 0x32, 0xcb, 0x1c, 0x18, 0x31, 0x23, 0x92, 
+0x6e, 0xd1, 0x16, 0x08, 0x6d, 0x01, 0xd0, 0x42, 
+0x79, 0x9d, 0x88, 0xd6, 0x29, 0x20, 0x5b, 0x53, 
+0xba, 0x1b, 0xe8, 0x02, 0x96, 0xed, 0xd8, 0xb1, 
+0xe3, 0x89, 0x8d, 0x1b, 0x37, 0x1e, 0xb2, 0x2c, 
+0x6b, 0x79, 0xdc, 0x86, 0x72, 0x35, 0x72, 0xf9, 
+0x65, 0x58, 0xb3, 0x29, 0x8c, 0xaa, 0x81, 0x6e, 
+0x1b, 0x18, 0x55, 0x13, 0xe9, 0x4b, 0x5c, 0xcb, 
+0xc1, 0x31, 0x1d, 0x1c, 0xcb, 0xc6, 0x49, 0xd9, 
+0xdc, 0x5e, 0x51, 0xa0, 0x9a, 0xa9, 0xd4, 0x9f, 
+0x1f, 0x04, 0x81, 0x7b, 0xed, 0xda, 0xb5, 0xf7, 
+0x47, 0x47, 0x47, 0xdf, 0x28, 0x16, 0x8b, 0x57, 
+0x81, 0x02, 0x30, 0x9d, 0x00, 0xa4, 0xcc, 0x9c, 
+0x6b, 0x78, 0x4b, 0x01, 0xe1, 0x8e, 0x00, 0x34, 
+0x29, 0x1f, 0x07, 0x38, 0x8b, 0x39, 0x8b, 0x77, 
+0x01, 0xcb, 0x80, 0x65, 0x9b, 0x37, 0x6f, 0x7e, 
+0x64, 0xcb, 0x96, 0x2d, 0x7f, 0x94, 0xc9, 0x64, 
+0x56, 0x01, 0xe8, 0x55, 0x83, 0xdc, 0xf5, 0x65, 
+0xe4, 0xae, 0xf6, 0xd0, 0x39, 0xd9, 0x85, 0x08, 
+0xee, 0x34, 0x07, 0x9a, 0x2b, 0x95, 0x8e, 0x32, 
+0x85, 0xfe, 0x29, 0x0a, 0xab, 0xa6, 0x28, 0x75, 
+0xcf, 0x02, 0xe0, 0xfb, 0xbe, 0x3d, 0x3e, 0x3e, 
+0xfe, 0xcb, 0x91, 0x91, 0x91, 0xb7, 0x6c, 0xdb, 
+0xbe, 0x01, 0xdc, 0xaa, 0x81, 0x31, 0x43, 0xe4, 
+0x1e, 0x95, 0x1a, 0x10, 0x6d, 0x83, 0xb0, 0x28, 
+0x00, 0x0b, 0x28, 0x1f, 0xd3, 0xbd, 0x0b, 0xc8, 
+0x01, 0x3d, 0x5d, 0x5d, 0x5d, 0xeb, 0x9e, 0x7c, 
+0xf2, 0xc9, 0x6f, 0x76, 0x77, 0x77, 0x0f, 0x45, 
+0x8a, 0xeb, 0xac, 0x3a, 0xb3, 0x86, 0xe5, 0x97, 
+0x7b, 0x11, 0x61, 0xfb, 0x4a, 0x2f, 0x54, 0xca, 
+0x5d, 0x25, 0xae, 0x6c, 0xbb, 0x4c, 0xb1, 0x77, 
+0x06, 0x00, 0xd7, 0x75, 0x8b, 0xa7, 0x4e, 0x9d, 
+0x7a, 0xf9, 0xf4, 0xe9, 0xd3, 0xc7, 0x81, 0x49, 
+0x60, 0x8a, 0x88, 0x11, 0x49, 0x36, 0xb4, 0x05, 
+0xc2, 0x82, 0x00, 0xb4, 0xa0, 0xbd, 0xc1, 0x1c, 
+0xe5, 0xbb, 0x81, 0xe5, 0x40, 0xef, 0xe0, 0xe0, 
+0xe0, 0xf0, 0xa3, 0x8f, 0x3e, 0xfa, 0x92, 0x65, 
+0x59, 0xdd, 0xd2, 0x93, 0xf4, 0x9e, 0x5b, 0x45, 
+0xef, 0xf9, 0x3e, 0xa4, 0x2f, 0xef, 0x5a, 0xf1, 
+0xe6, 0x52, 0xec, 0x9b, 0xe6, 0xda, 0xd6, 0x09, 
+0xaa, 0x9d, 0x15, 0x80, 0xe0, 0xec, 0xd9, 0xb3, 
+0x6f, 0x1d, 0x3f, 0x7e, 0xfc, 0x35, 0x20, 0x4f, 
+0x04, 0x44, 0x81, 0xf9, 0x20, 0xf8, 0x44, 0xfa, 
+0xb7, 0x0f, 0x40, 0xd3, 0x50, 0xd7, 0x4a, 0xf9, 
+0x5e, 0x60, 0xc5, 0xf0, 0xf0, 0xf0, 0x53, 0xc3, 
+0xc3, 0xc3, 0x2f, 0x28, 0xa5, 0x8c, 0x54, 0x21, 
+0xcd, 0xc0, 0x7f, 0xaf, 0x43, 0xab, 0xea, 0xf7, 
+0x4e, 0xe3, 0x96, 0x3d, 0x86, 0x9b, 0x9b, 0xaf, 
+0x73, 0x73, 0xd3, 0x0d, 0x00, 0x6e, 0xdc, 0xb8, 
+0x31, 0x7a, 0xf8, 0xf0, 0xe1, 0xef, 0xbb, 0xae, 
+0x7b, 0x15, 0xb8, 0x49, 0xe4, 0x16, 0x33, 0xcc, 
+0x67, 0x42, 0x4b, 0x10, 0x16, 0x03, 0x20, 0x1e, 
+0xea, 0x62, 0xda, 0x67, 0xa9, 0x51, 0x1e, 0x58, 
+0xf9, 0xf8, 0xe3, 0x8f, 0x3f, 0x3f, 0x34, 0x34, 
+0xf4, 0x9c, 0x10, 0x42, 0x74, 0x8e, 0x77, 0xd3, 
+0xf7, 0x51, 0xff, 0x92, 0x7c, 0xfc, 0x6e, 0x4b, 
+0xb1, 0x7f, 0x86, 0xeb, 0xbb, 0xae, 0x10, 0xaa, 
+0x80, 0x99, 0x99, 0x99, 0xb1, 0x37, 0xde, 0x78, 
+0xe3, 0x1f, 0x6c, 0xdb, 0x9e, 0x20, 0x62, 0x43, 
+0x12, 0x84, 0x7a, 0x60, 0x6c, 0x0b, 0x80, 0x26, 
+0xea, 0xc7, 0xd1, 0x3e, 0x69, 0xf9, 0x95, 0x0f, 
+0x3e, 0xf8, 0xe0, 0xc1, 0x87, 0x1f, 0x7e, 0xf8, 
+0x9b, 0x80, 0x58, 0xfe, 0x49, 0x2f, 0x5d, 0xe7, 
+0x97, 0x7d, 0x69, 0x8a, 0x2e, 0x56, 0x9c, 0x2e, 
+0x9b, 0xeb, 0x8f, 0x4c, 0xe0, 0xa5, 0x3c, 0xf2, 
+0xf9, 0xfc, 0xa9, 0xd7, 0x5f, 0x7f, 0xfd, 0x1f, 
+0x81, 0xab, 0xcc, 0x81, 0x50, 0x24, 0x0a, 0x8c, 
+0xf5, 0x21, 0xb2, 0x19, 0x84, 0x06, 0x47, 0x6d, 
+0x9a, 0xe2, 0xc6, 0x63, 0x7d, 0x1c, 0xf1, 0xbb, 
+0x80, 0xe5, 0x03, 0x03, 0x03, 0x5b, 0xf7, 0xec, 
+0xd9, 0xf3, 0x0d, 0x21, 0x84, 0xc8, 0x7d, 0xba, 
+0x9c, 0xec, 0x85, 0x2e, 0x7c, 0xe1, 0xe3, 0x0b, 
+0x9f, 0x40, 0x05, 0xf5, 0xcf, 0x5f, 0xaa, 0xc8, 
+0xe8, 0xaa, 0x66, 0x34, 0x56, 0x1c, 0xef, 0x47, 
+0xfa, 0x8a, 0xbe, 0xbe, 0xbe, 0xe1, 0x03, 0x07, 
+0x0e, 0xfc, 0x29, 0x91, 0x91, 0x72, 0x44, 0x23, 
+0x54, 0x8a, 0xc8, 0x7d, 0xeb, 0xb3, 0xce, 0xe6, 
+0xf5, 0x89, 0x56, 0x91, 0xaa, 0x55, 0xe0, 0xeb, 
+0x00, 0x72, 0x9d, 0x9d, 0x9d, 0x03, 0x07, 0x0f, 
+0x1e, 0xfc, 0x5b, 0x5d, 0xd7, 0xcd, 0xcc, 0xb5, 
+0x2c, 0xd9, 0x73, 0x5d, 0x04, 0x32, 0xa8, 0x8b, 
+0xd6, 0xa1, 0x61, 0xe4, 0x0c, 0x02, 0x15, 0x34, 
+0xdc, 0xbf, 0x67, 0xa2, 0x02, 0xcc, 0x65, 0x26, 
+0x5a, 0x56, 0xab, 0xdf, 0x53, 0x25, 0x8d, 0xe5, 
+0x1f, 0xae, 0x40, 0x0a, 0xc9, 0xd0, 0xd0, 0xd0, 
+0xd7, 0x76, 0xee, 0xdc, 0xf9, 0x04, 0xd1, 0xb0, 
+0xdc, 0x49, 0x34, 0x0b, 0x35, 0x69, 0x7c, 0xf7, 
+0x68, 0x28, 0xad, 0xa6, 0xc2, 0xc9, 0x61, 0xcf, 
+0xac, 0x59, 0xbf, 0x13, 0x58, 0xf6, 0xd4, 0x53, 
+0x4f, 0x7d, 0x23, 0x9d, 0x4e, 0x2f, 0xd7, 0xa6, 
+0x75, 0x3a, 0x4e, 0xe6, 0xf0, 0xa5, 0x5f, 0xff, 
+0x93, 0x91, 0xd6, 0x51, 0x59, 0x89, 0x91, 0x31, 
+0xb0, 0x7a, 0x4c, 0x0a, 0x97, 0x0b, 0x04, 0xfe, 
+0xbd, 0x5b, 0xbb, 0x90, 0x9a, 0x64, 0xd9, 0xda, 
+0x1c, 0x61, 0x10, 0x62, 0xcf, 0xda, 0xc8, 0x50, 
+0xe0, 0x56, 0x3d, 0x00, 0xf4, 0xbc, 0x41, 0xc7, 
+0xa7, 0x5d, 0xcc, 0x3e, 0x30, 0x23, 0x76, 0xef, 
+0xda, 0xfd, 0xe2, 0xc5, 0x8b, 0x17, 0x3f, 0x9d, 
+0x9e, 0x9e, 0x2e, 0xd3, 0xf8, 0xee, 0x10, 0x07, 
+0x43, 0x91, 0x7c, 0x67, 0xa8, 0x33, 0xe0, 0x4e, 
+0xc3, 0xde, 0xc6, 0x8d, 0x1b, 0xb7, 0xf5, 0xf5, 
+0xf5, 0x0d, 0x8b, 0x50, 0xd0, 0xf1, 0x41, 0x37, 
+0x61, 0x10, 0x10, 0x08, 0x9f, 0x40, 0xf8, 0x08, 
+0x3d, 0x44, 0xa5, 0x25, 0x2a, 0x25, 0xd1, 0x32, 
+0x8a, 0xcc, 0xaa, 0x34, 0xab, 0x77, 0xf7, 0x23, 
+0x4d, 0xea, 0x75, 0x5a, 0x89, 0x4a, 0xcb, 0x86, 
+0xeb, 0x62, 0xf5, 0xd6, 0xec, 0xed, 0x27, 0xd5, 
+0x6b, 0xa1, 0x65, 0x14, 0x2a, 0xa3, 0x50, 0x69, 
+0x09, 0x7a, 0x58, 0xaf, 0x63, 0x9d, 0x4f, 0x63, 
+0x4c, 0x99, 0x68, 0xba, 0x66, 0xee, 0xdb, 0xb7, 
+0xef, 0x39, 0xe6, 0xdc, 0x60, 0x51, 0x16, 0x34, 
+0xbb, 0x40, 0xd2, 0xfa, 0x0d, 0x00, 0xec, 0xd9, 
+0xb3, 0xe7, 0x8f, 0x95, 0x52, 0xc2, 0xba, 0x9c, 
+0x86, 0x8a, 0xc0, 0x97, 0x41, 0x5d, 0x3c, 0x19, 
+0x20, 0x52, 0x0a, 0x95, 0xd1, 0x22, 0x49, 0x6b, 
+0x64, 0x57, 0x65, 0x19, 0x3a, 0x34, 0x84, 0xde, 
+0x65, 0x34, 0xd4, 0x8d, 0x65, 0xdd, 0xfe, 0xb5, 
+0x0c, 0x3e, 0x36, 0x88, 0x2f, 0x03, 0xee, 0xff, 
+0x83, 0xfb, 0x59, 0xb5, 0x73, 0x55, 0xcb, 0x7a, 
+0x56, 0x8f, 0xc5, 0xa6, 0x43, 0x43, 0xa4, 0x57, 
+0x64, 0xd0, 0x32, 0x1a, 0x32, 0xa3, 0x50, 0x69, 
+0x85, 0x48, 0x29, 0x7c, 0xd1, 0x54, 0xf7, 0x4c, 
+0x06, 0x29, 0x25, 0x83, 0x83, 0x83, 0x8f, 0xf4, 
+0xf7, 0xf7, 0x6f, 0x20, 0x62, 0x6e, 0xa6, 0x06, 
+0x80, 0x4e, 0x8b, 0x58, 0x20, 0x9b, 0xac, 0xdf, 
+0x4c, 0xff, 0x34, 0xd0, 0xb9, 0x7d, 0xfb, 0xf6, 
+0x5d, 0x3d, 0x3d, 0x3d, 0xf7, 0x49, 0x4f, 0xa2, 
+0x9f, 0x35, 0xe7, 0x59, 0xc8, 0xf3, 0x5d, 0x8a, 
+0xb7, 0x66, 0x10, 0x3a, 0x68, 0x69, 0x85, 0x9e, 
+0x56, 0x68, 0x19, 0x8d, 0x6c, 0x5f, 0x86, 0x87, 
+0xfe, 0x7c, 0x98, 0xec, 0xca, 0x74, 0x43, 0xfd, 
+0x8d, 0x4f, 0xae, 0xe7, 0xe1, 0xbf, 0xdc, 0x8b, 
+0xd4, 0x23, 0x86, 0x68, 0x96, 0x64, 0xff, 0xdf, 
+0x3d, 0xce, 0x9a, 0x5d, 0xfd, 0x0d, 0xf5, 0xba, 
+0xd7, 0x76, 0xb1, 0xf3, 0xcf, 0x86, 0x49, 0x2f, 
+0x4f, 0xa1, 0xa5, 0xa2, 0x36, 0xb5, 0x94, 0x02, 
+0x15, 0x52, 0xbc, 0x35, 0x83, 0x17, 0xb8, 0x0d, 
+0xf5, 0xc5, 0xb4, 0x40, 0xbf, 0x62, 0xa0, 0x94, 
+0x52, 0x8f, 0x3d, 0xf6, 0xd8, 0x73, 0x09, 0x00, 
+0x52, 0x09, 0x00, 0x1a, 0x8c, 0xde, 0xcc, 0x80, 
+0xe4, 0xcb, 0x4e, 0x7d, 0xbe, 0x3f, 0x3c, 0x3c, 
+0xfc, 0x75, 0x29, 0x25, 0xda, 0x05, 0x93, 0xc0, 
+0x0b, 0x5b, 0x5a, 0xca, 0x76, 0x1d, 0xae, 0x5d, 
+0xbc, 0x81, 0x4f, 0x80, 0xca, 0x68, 0x68, 0x69, 
+0x0d, 0x3d, 0xa3, 0x93, 0x59, 0x91, 0x61, 0xdf, 
+0xb7, 0x1e, 0xa7, 0x67, 0x73, 0x6f, 0x64, 0xed, 
+0xa7, 0xee, 0x67, 0xdf, 0x4b, 0x8f, 0x63, 0x76, 
+0x18, 0xa0, 0x47, 0x4c, 0x12, 0x86, 0xc4, 0xea, 
+0x34, 0xf9, 0xca, 0xb7, 0x0f, 0x30, 0xb0, 0x77, 
+0x00, 0x5f, 0x06, 0xf4, 0xef, 0xec, 0xe7, 0xd1, 
+0xbf, 0x7e, 0x18, 0x2b, 0x67, 0xa1, 0x65, 0x74, 
+0xb4, 0x8c, 0x86, 0x4a, 0x29, 0x5c, 0xdf, 0xe3, 
+0xda, 0xc5, 0x1b, 0x38, 0xbe, 0xdb, 0xb2, 0x1f, 
+0xea, 0x53, 0x13, 0x19, 0x4a, 0x56, 0xad, 0x5a, 
+0x35, 0xbc, 0x7a, 0xf5, 0xea, 0x75, 0x35, 0x06, 
+0xc7, 0x6b, 0x11, 0xf3, 0xdc, 0x20, 0x19, 0x04, 
+0x93, 0x93, 0x9f, 0x78, 0x61, 0x23, 0x9d, 0xcb, 
+0xe5, 0xfa, 0x96, 0x2d, 0x5b, 0xb6, 0x8e, 0x00, 
+0xc4, 0xa5, 0xc8, 0x57, 0x17, 0x2a, 0xb6, 0xed, 
+0x73, 0xe1, 0x83, 0x0b, 0x3c, 0xf0, 0x95, 0x2d, 
+0x64, 0x7b, 0x33, 0x68, 0xa9, 0x08, 0x04, 0x33, 
+0x63, 0xf2, 0xf4, 0xb7, 0x0f, 0x72, 0xe9, 0xa3, 
+0xcb, 0x6c, 0xfb, 0xea, 0x03, 0x28, 0x5d, 0x21, 
+0xa5, 0x40, 0x68, 0x11, 0x03, 0x84, 0x06, 0x66, 
+0xd6, 0x20, 0x08, 0x42, 0xbe, 0xf6, 0xf7, 0x4f, 
+0xf3, 0xdb, 0x77, 0x4e, 0xb3, 0x6e, 0xd7, 0x5a, 
+0x9c, 0xb2, 0x03, 0x12, 0xfc, 0xc0, 0x47, 0xf3, 
+0x14, 0xa5, 0x2b, 0x25, 0xc6, 0x3e, 0x1c, 0xc3, 
+0xf7, 0xfc, 0x85, 0xd7, 0x96, 0xab, 0x20, 0xf3, 
+0x8a, 0xb0, 0x3f, 0x10, 0x5b, 0xb6, 0x6c, 0xd9, 
+0x7b, 0xe5, 0xca, 0x95, 0xb3, 0x34, 0x0e, 0x87, 
+0xf5, 0x95, 0x28, 0x21, 0xc4, 0x3c, 0x00, 0x9a, 
+0x19, 0x90, 0xde, 0xbe, 0x7d, 0xfb, 0x6e, 0x29, 
+0xa5, 0x08, 0x27, 0x05, 0xbe, 0xef, 0xb7, 0x1e, 
+0x38, 0x13, 0xc5, 0x77, 0x7d, 0x3e, 0xfe, 0xc5, 
+0x6f, 0x78, 0xe8, 0x0f, 0x77, 0x90, 0x5d, 0x91, 
+0x45, 0x4f, 0x69, 0x18, 0xe9, 0x08, 0x84, 0xed, 
+0x5f, 0xdf, 0x86, 0x9e, 0xd2, 0xd1, 0x74, 0x05, 
+0x40, 0xa8, 0xc2, 0x68, 0x24, 0xd1, 0xc1, 0xc8, 
+0x18, 0x00, 0x78, 0xa6, 0xc6, 0x83, 0x5f, 0xdf, 
+0x86, 0x5d, 0xb6, 0x09, 0x09, 0xf1, 0x7d, 0x1f, 
+0xdf, 0xd7, 0x98, 0x38, 0x33, 0xc5, 0xe9, 0xff, 
+0x3a, 0x43, 0x10, 0x04, 0x77, 0xec, 0x83, 0xb8, 
+0x21, 0x90, 0x6b, 0x24, 0x03, 0x03, 0x03, 0x0f, 
+0x32, 0xe7, 0x02, 0xad, 0x19, 0xb0, 0x80, 0xff, 
+0xc7, 0x00, 0xa4, 0x06, 0x06, 0x06, 0x1e, 0x14, 
+0x42, 0x10, 0x5c, 0x0f, 0x09, 0x44, 0x7b, 0xc3, 
+0x5a, 0xe0, 0x05, 0x8c, 0xbc, 0x31, 0x8a, 0xd4, 
+0x25, 0x43, 0x8f, 0xdd, 0x8f, 0x9e, 0xd2, 0x31, 
+0xd2, 0x06, 0x66, 0xc6, 0xc0, 0x48, 0x9b, 0x28, 
+0x4d, 0x12, 0x06, 0x21, 0x28, 0x08, 0x44, 0xa4, 
+0x90, 0x91, 0x32, 0x10, 0x52, 0xa0, 0x0c, 0x1f, 
+0x21, 0x21, 0x0c, 0x43, 0x7c, 0x2f, 0x40, 0xf3, 
+0x7c, 0xc6, 0x8e, 0x7d, 0xc6, 0xc9, 0x9f, 0x9f, 
+0x22, 0x0c, 0xc3, 0x3b, 0xef, 0x2a, 0x00, 0xdc, 
+0x00, 0x3d, 0x14, 0xe4, 0x72, 0xb9, 0xc1, 0x5c, 
+0x2e, 0xd7, 0x53, 0x28, 0x14, 0x6e, 0x34, 0x01, 
+0x20, 0xa9, 0xbd, 0x1f, 0x24, 0xb1, 0x6c, 0x66, 
+0x80, 0x91, 0x4a, 0xa5, 0x3a, 0x57, 0xf4, 0xae, 
+0xd8, 0x28, 0xa5, 0xc4, 0xcb, 0x07, 0xd1, 0x0c, 
+0xac, 0x4d, 0x71, 0x43, 0x97, 0x63, 0x3f, 0x39, 
+0xce, 0x8d, 0x4b, 0x79, 0x94, 0xa5, 0x1a, 0x40, 
+0x30, 0x33, 0x26, 0x9a, 0xa9, 0x11, 0x88, 0xa8, 
+0xcd, 0x40, 0x84, 0xe8, 0x56, 0xc4, 0x12, 0x2b, 
+0x63, 0xa2, 0xa7, 0x0c, 0xf4, 0x94, 0x86, 0x9e, 
+0xd2, 0xb8, 0xf4, 0xdb, 0x4b, 0x7c, 0xf0, 0xd3, 
+0x51, 0x3c, 0xe1, 0xb5, 0xff, 0xfc, 0xc0, 0x27, 
+0xbc, 0x05, 0x52, 0x4a, 0xb1, 0x63, 0xc7, 0x8e, 
+0x87, 0x88, 0xdc, 0xb9, 0x25, 0x03, 0x64, 0x42, 
+0xf9, 0x64, 0x0c, 0xd0, 0x00, 0x63, 0xfd, 0xfa, 
+0xf5, 0x83, 0x4a, 0x53, 0x7a, 0x38, 0x1b, 0xe2, 
+0xdb, 0x3e, 0x81, 0x08, 0x96, 0x24, 0x1b, 0xf7, 
+0x6e, 0x60, 0x60, 0xeb, 0x1a, 0x34, 0x43, 0x43, 
+0x33, 0x14, 0x9a, 0xa9, 0x61, 0xa4, 0xcd, 0xba, 
+0xb5, 0xfd, 0xa0, 0xd6, 0x66, 0xe8, 0x23, 0xa4, 
+0x88, 0x7e, 0x4b, 0x1b, 0xe8, 0x96, 0x8e, 0x66, 
+0xea, 0x28, 0x43, 0x71, 0xdf, 0x9e, 0x8d, 0xac, 
+0xd9, 0xb6, 0x7a, 0xc9, 0xcf, 0xf6, 0x27, 0x03, 
+0x84, 0x10, 0xf4, 0xf6, 0xf6, 0xae, 0x65, 0x6e, 
+0x18, 0x6c, 0x5e, 0x8c, 0x6d, 0x39, 0x0a, 0xd4, 
+0xdd, 0xa0, 0xbb, 0xbb, 0xbb, 0x47, 0x4a, 0x49, 
+0x68, 0x43, 0x20, 0xfd, 0x25, 0xc9, 0x86, 0x3d, 
+0xeb, 0xd8, 0xff, 0xc2, 0xe3, 0x48, 0x5d, 0x22, 
+0xb5, 0x39, 0x11, 0x02, 0x3c, 0xc7, 0xc3, 0x73, 
+0x7d, 0xbc, 0xc0, 0x23, 0x90, 0xd1, 0xd5, 0xf3, 
+0x7c, 0x7c, 0xd7, 0x03, 0x21, 0x90, 0xaa, 0x26, 
+0x9a, 0x44, 0x33, 0x35, 0xbe, 0xf2, 0x57, 0x07, 
+0x58, 0xfd, 0xc0, 0xaa, 0xa5, 0xf5, 0xc1, 0x0e, 
+0x90, 0x52, 0x92, 0x4e, 0xa7, 0xbb, 0x16, 0x52, 
+0x1e, 0x10, 0xcd, 0x2e, 0xd0, 0xb0, 0xe8, 0xd9, 
+0xd1, 0xd1, 0x91, 0x13, 0x42, 0x10, 0x54, 0x97, 
+0xf6, 0x92, 0xb3, 0x76, 0xc7, 0x5a, 0x1e, 0x7e, 
+0x76, 0x2f, 0x42, 0x09, 0x84, 0x14, 0x20, 0x62, 
+0x9f, 0xf6, 0xb1, 0xcb, 0x36, 0xd5, 0x72, 0x15, 
+0xa7, 0x6a, 0xe3, 0x7a, 0x2e, 0xbe, 0xf0, 0x71, 
+0x5d, 0x17, 0xbb, 0x62, 0x53, 0x2d, 0x55, 0x71, 
+0x2a, 0x36, 0xbe, 0x1f, 0x10, 0x12, 0xd6, 0x7b, 
+0x23, 0x75, 0xc9, 0xbe, 0xbf, 0xd8, 0xc7, 0xca, 
+0xa1, 0xbe, 0xb6, 0xfb, 0xe0, 0xd9, 0x1e, 0x42, 
+0x08, 0x52, 0xa9, 0x54, 0x67, 0x42, 0xf9, 0xe6, 
+0x9d, 0xa9, 0xfa, 0x28, 0xd0, 0xbc, 0xc3, 0x23, 
+0x01, 0x95, 0xcd, 0x66, 0xbb, 0xa4, 0x94, 0x04, 
+0x4e, 0xf4, 0xe2, 0xd1, 0x4e, 0xe9, 0x5e, 0xd1, 
+0xcd, 0x9a, 0x2d, 0xab, 0xb9, 0x3a, 0x76, 0x0d, 
+0xc3, 0xd4, 0xd1, 0x6b, 0xa2, 0x34, 0x85, 0x90, 
+0x12, 0x08, 0xf1, 0x5c, 0x0f, 0xb7, 0xea, 0x92, 
+0xbf, 0x9a, 0x27, 0x90, 0x01, 0x57, 0xc6, 0xae, 
+0x72, 0xe2, 0xa7, 0x23, 0x18, 0xa6, 0x8e, 0xd2, 
+0x23, 0x23, 0x85, 0x41, 0x80, 0xe7, 0x7a, 0x78, 
+0x8e, 0x87, 0x63, 0xbb, 0x38, 0x55, 0x87, 0xf5, 
+0x3b, 0xd6, 0x53, 0x98, 0xba, 0xcd, 0xec, 0xed, 
+0xd9, 0x3b, 0xf6, 0xc3, 0xb3, 0x7d, 0xa4, 0x94, 
+0x31, 0x00, 0x0d, 0xc3, 0x5f, 0xb2, 0x9e, 0xd6, 
+0xa4, 0x7c, 0x83, 0x64, 0xb3, 0xd9, 0x2e, 0x21, 
+0xa2, 0x97, 0x0e, 0x7f, 0x91, 0xf1, 0x3f, 0x59, 
+0xa6, 0x6e, 0x4e, 0xf1, 0xce, 0x8f, 0x7f, 0xd1, 
+0x56, 0xdd, 0xf8, 0xa9, 0x67, 0x3f, 0x3e, 0xcb, 
+0xd9, 0x8f, 0xcf, 0x2e, 0xe9, 0x3f, 0x77, 0x2a, 
+0x81, 0x1d, 0xc5, 0x00, 0xcb, 0xb2, 0x32, 0x34, 
+0x5a, 0xbe, 0xa1, 0x2c, 0xba, 0x31, 0x22, 0x84, 
+0x40, 0x4a, 0x89, 0x94, 0x32, 0xa2, 0xf2, 0xef, 
+0x51, 0x11, 0x32, 0xea, 0xfb, 0x9d, 0x56, 0xbd, 
+0x35, 0x16, 0xd9, 0x96, 0x2e, 0x97, 0xcb, 0xd3, 
+0x42, 0x08, 0xf4, 0x8c, 0x86, 0x54, 0xed, 0x2d, 
+0x72, 0x76, 0xf7, 0x76, 0xb3, 0xe7, 0xab, 0xbb, 
+0x30, 0x53, 0x16, 0x86, 0x65, 0xa0, 0x9b, 0x3a, 
+0xa6, 0x65, 0xa0, 0x74, 0x85, 0x52, 0x8a, 0x30, 
+0x08, 0xf1, 0x3c, 0x0f, 0xa7, 0xea, 0xf2, 0xde, 
+0x9b, 0xef, 0x71, 0xe9, 0xd3, 0xcb, 0x6c, 0xda, 
+0x35, 0xc4, 0x43, 0x07, 0x1f, 0xc2, 0xb0, 0x0c, 
+0x34, 0x4d, 0x45, 0x23, 0x84, 0xe7, 0xe3, 0xb9, 
+0x11, 0xfd, 0x5d, 0xdb, 0xc5, 0xa9, 0xda, 0x94, 
+0x8b, 0x15, 0x4e, 0xfc, 0x6c, 0x84, 0xd9, 0xe9, 
+0x3b, 0xbb, 0x80, 0x96, 0x56, 0x08, 0x21, 0xb0, 
+0x6d, 0xbb, 0x44, 0xd3, 0x1e, 0x62, 0x33, 0x00, 
+0xd0, 0x08, 0x42, 0x5c, 0xd9, 0xaf, 0x03, 0x90, 
+0xd2, 0x51, 0x52, 0xb5, 0x05, 0x40, 0x71, 0xaa, 
+0xc8, 0xf9, 0x8f, 0x2e, 0xf0, 0xe4, 0x9f, 0x3c, 
+0x41, 0xba, 0x33, 0x4d, 0xba, 0x23, 0x4d, 0x2a, 
+0x9b, 0x22, 0x95, 0x4d, 0x61, 0xa5, 0x4c, 0x94, 
+0xae, 0x08, 0xfc, 0x00, 0xbb, 0x6c, 0xf3, 0xd9, 
+0x07, 0x9f, 0x31, 0x71, 0xf6, 0x0a, 0x2b, 0x07, 
+0xfa, 0x18, 0xde, 0xbf, 0x1d, 0x33, 0x65, 0x20, 
+0x95, 0xc4, 0x73, 0x3d, 0xaa, 0x25, 0x9b, 0x6a, 
+0xa9, 0x42, 0x79, 0xb6, 0x42, 0xa5, 0x58, 0xa1, 
+0x58, 0x28, 0xf2, 0xe1, 0x3b, 0x27, 0xa9, 0x14, 
+0x2b, 0x6d, 0xf5, 0x45, 0x4f, 0x1b, 0x31, 0x00, 
+0x33, 0x24, 0xf6, 0x0f, 0x9b, 0x41, 0x48, 0x9a, 
+0x35, 0xfe, 0xb1, 0xbe, 0x4b, 0x5b, 0x2c, 0x16, 
+0x6f, 0x49, 0x29, 0xd1, 0x33, 0x11, 0x00, 0xed, 
+0xca, 0x95, 0x73, 0x57, 0x39, 0xf6, 0x1f, 0xef, 
+0x11, 0xfa, 0x61, 0xbd, 0x55, 0x01, 0x48, 0x4d, 
+0x61, 0xa6, 0x4c, 0xcc, 0xda, 0x5c, 0x40, 0x37, 
+0xa2, 0x76, 0x75, 0xc3, 0xc0, 0xb4, 0x0c, 0xac, 
+0xb4, 0x85, 0x61, 0x99, 0x91, 0xcb, 0x25, 0x32, 
+0x07, 0x3c, 0xd7, 0xe3, 0x57, 0xff, 0x7a, 0x94, 
+0xc9, 0x89, 0xc9, 0xb6, 0xfb, 0x60, 0xa4, 0x75, 
+0xa4, 0x94, 0x38, 0x8e, 0x33, 0x43, 0xe3, 0x26, 
+0x6a, 0x03, 0x10, 0xcd, 0xbc, 0x6e, 0xd8, 0xa5, 
+0x2d, 0x14, 0x0a, 0x53, 0x42, 0x08, 0xb4, 0xb4, 
+0x86, 0x52, 0x6a, 0x49, 0x32, 0x71, 0xf6, 0x0a, 
+0xef, 0xfe, 0xf8, 0x57, 0x78, 0xae, 0x17, 0x2d, 
+0x9e, 0xf8, 0x91, 0x84, 0x61, 0x88, 0xa6, 0x6b, 
+0x28, 0x4d, 0xa1, 0xeb, 0x3a, 0x4a, 0xa9, 0xe8, 
+0xbb, 0xae, 0x50, 0xba, 0x46, 0x18, 0x86, 0xf5, 
+0xba, 0xbe, 0x17, 0xe0, 0x56, 0x1d, 0x8e, 0xbc, 
+0xf2, 0x0b, 0x6e, 0x8e, 0x4f, 0x2e, 0xe9, 0xf9, 
+0x7a, 0x46, 0x47, 0x08, 0x41, 0xb9, 0x5c, 0x9e, 
+0x66, 0x6e, 0x45, 0xc8, 0x6f, 0x62, 0x41, 0x98, 
+0x74, 0x81, 0x58, 0xe2, 0x3d, 0x7a, 0xe7, 0xe2, 
+0xc5, 0x8b, 0x97, 0xc3, 0x30, 0x74, 0x8d, 0x4e, 
+0x5d, 0xd7, 0xd2, 0x1a, 0x41, 0xb5, 0xbd, 0xa1, 
+0x30, 0x2e, 0xe3, 0x9f, 0x4d, 0x70, 0xf5, 0xfc, 
+0x55, 0x36, 0x6c, 0xdf, 0x10, 0x0d, 0x7d, 0xb6, 
+0x8b, 0x52, 0x12, 0xa5, 0x45, 0xb1, 0x40, 0x69, 
+0x0a, 0x29, 0xe7, 0xbe, 0x3b, 0x15, 0xbb, 0x3e, 
+0xf4, 0x79, 0xae, 0x8f, 0xef, 0xfa, 0x8c, 0xfd, 
+0xf6, 0x12, 0xf9, 0x4b, 0x79, 0xa4, 0x5c, 0xda, 
+0x46, 0x8b, 0xb5, 0x22, 0x62, 0xd2, 0xcd, 0x9b, 
+0x37, 0x2f, 0x31, 0x7f, 0x3b, 0xbd, 0x25, 0x03, 
+0x92, 0xf4, 0x77, 0x01, 0x67, 0x76, 0x76, 0x76, 
+0xe6, 0xe6, 0xcd, 0x9b, 0x17, 0x84, 0x10, 0xa4, 
+0x57, 0xa5, 0x96, 0x64, 0x01, 0xc3, 0x34, 0x78, 
+0xe2, 0xf9, 0xfd, 0xf4, 0x0e, 0xf4, 0xe2, 0x39, 
+0x1e, 0xae, 0xed, 0xe1, 0x54, 0x9d, 0x68, 0xc2, 
+0x53, 0xb6, 0x71, 0x9d, 0x68, 0xa2, 0xa2, 0x54, 
+0x14, 0xac, 0x5c, 0xc7, 0xa5, 0x5a, 0xb6, 0xb1, 
+0x2b, 0x0e, 0x4e, 0xd5, 0xc1, 0xb5, 0x5d, 0x3c, 
+0xd7, 0x63, 0x70, 0xd3, 0x00, 0x8f, 0x3c, 0xf3, 
+0x70, 0xc4, 0x92, 0x36, 0x9f, 0xad, 0x99, 0x1a, 
+0x56, 0x8f, 0x09, 0x10, 0x9c, 0x38, 0x71, 0x62, 
+0x94, 0x68, 0x6d, 0x30, 0xb9, 0x2e, 0x58, 0x8f, 
+0x03, 0xb2, 0xb6, 0x38, 0x98, 0xf4, 0xff, 0x38, 
+0x49, 0xa1, 0x0a, 0x54, 0xc6, 0xc6, 0xc6, 0x3e, 
+0x96, 0x52, 0x92, 0x5a, 0x69, 0xb5, 0xed, 0x7f, 
+0xa6, 0x65, 0xb2, 0xf7, 0xd0, 0x1e, 0x7a, 0x57, 
+0xf7, 0xe0, 0xd9, 0x91, 0xe5, 0xdd, 0xda, 0x64, 
+0xa6, 0x5a, 0xb2, 0x71, 0x2a, 0x36, 0x6e, 0xd5, 
+0x41, 0x22, 0xa3, 0x80, 0x16, 0x82, 0x53, 0x71, 
+0x70, 0x2a, 0x36, 0x76, 0xb9, 0x8a, 0x5d, 0x71, 
+0x70, 0x63, 0x10, 0x1c, 0x8f, 0xfe, 0x8d, 0xfd, 
+0xec, 0x7e, 0x7a, 0x17, 0x86, 0x61, 0xb4, 0xf5, 
+0xfc, 0x54, 0x9f, 0x85, 0x54, 0x92, 0x42, 0xa1, 
+0x30, 0x3e, 0x39, 0x39, 0x39, 0xd9, 0x02, 0x80, 
+0x3a, 0x08, 0x0b, 0x31, 0xc0, 0xa9, 0xfd, 0xa9, 
+0x3c, 0x32, 0x32, 0xf2, 0x01, 0x10, 0x98, 0x3d, 
+0x06, 0x9a, 0xa1, 0x50, 0x52, 0x2e, 0x2a, 0x56, 
+0xca, 0x64, 0xfb, 0xbe, 0x6d, 0x64, 0xbb, 0x32, 
+0x11, 0x95, 0x9d, 0x68, 0xd6, 0x57, 0x9e, 0x2e, 
+0x71, 0xe2, 0xad, 0x11, 0xaa, 0xa5, 0x2a, 0x76, 
+0xd9, 0xc6, 0xa9, 0x38, 0x10, 0x86, 0x28, 0x29, 
+0x21, 0x08, 0x71, 0x2a, 0x0e, 0x76, 0xd9, 0xa6, 
+0x3c, 0x5d, 0x66, 0xe4, 0x3f, 0x47, 0xa8, 0x96, 
+0x6c, 0xbc, 0x1a, 0x70, 0x9e, 0xe3, 0xd2, 0xdd, 
+0xd3, 0xc5, 0xd6, 0xc7, 0x1e, 0xc0, 0x34, 0x8d, 
+0x3b, 0xf6, 0x21, 0xb5, 0xd2, 0x44, 0x08, 0xc1, 
+0xe7, 0x9f, 0x7f, 0xfe, 0x31, 0xd1, 0xee, 0xd0, 
+0x82, 0x0c, 0xd0, 0x9a, 0x00, 0x88, 0x63, 0x80, 
+0x4b, 0xb4, 0x9c, 0x5c, 0xce, 0xe7, 0xf3, 0xf9, 
+0x5b, 0xb7, 0x6e, 0x7d, 0xde, 0xdb, 0xdb, 0xbb, 
+0x21, 0xb3, 0x2e, 0x4d, 0x65, 0xac, 0xba, 0xa0, 
+0xdf, 0x19, 0x96, 0xc1, 0xda, 0xad, 0x6b, 0xd1, 
+0x4d, 0x03, 0xdf, 0xf1, 0xf1, 0x74, 0x0f, 0x57, 
+0x8b, 0x94, 0x38, 0xf1, 0xe6, 0x08, 0x85, 0x1b, 
+0x05, 0x0a, 0xd7, 0x0a, 0x1c, 0x7c, 0xe1, 0x49, 
+0xa4, 0x8a, 0xa6, 0xbc, 0x4a, 0x29, 0xc2, 0x90, 
+0xc8, 0xea, 0xb6, 0xcb, 0xe1, 0x1f, 0x1c, 0xe1, 
+0xfa, 0xc5, 0xeb, 0x5c, 0x3d, 0x7f, 0x8d, 0xdd, 
+0x5f, 0x7b, 0x08, 0xdf, 0x0b, 0xa2, 0xb6, 0x5c, 
+0x8f, 0x54, 0xda, 0x62, 0xc3, 0xf6, 0xf5, 0x5c, 
+0x3a, 0x7d, 0x19, 0xcf, 0xf1, 0x5a, 0xf6, 0x41, 
+0xa6, 0x24, 0xe6, 0x4a, 0x13, 0x04, 0xe1, 0x87, 
+0x1f, 0x7e, 0x78, 0x82, 0x28, 0x91, 0x22, 0x4e, 
+0xa2, 0x68, 0x18, 0x0e, 0xc3, 0x30, 0x0c, 0x5b, 
+0x8d, 0x02, 0x31, 0x00, 0x55, 0xa2, 0x3d, 0xf7, 
+0xe2, 0xf1, 0xe3, 0xc7, 0x7f, 0x2a, 0x84, 0x20, 
+0xb5, 0xc1, 0x42, 0x59, 0x1a, 0x52, 0xaa, 0x79, 
+0x62, 0xa6, 0x2c, 0xfa, 0xd6, 0xf6, 0x21, 0x84, 
+0xa8, 0x5b, 0xde, 0x73, 0x7c, 0x8a, 0x53, 0xb3, 
+0x1c, 0xfb, 0xb7, 0xe3, 0x4c, 0xdf, 0x9c, 0x41, 
+0x4a, 0xc5, 0xf8, 0x99, 0x09, 0x7e, 0xf9, 0xc3, 
+0xa3, 0xd8, 0x25, 0x1b, 0x42, 0x90, 0x52, 0x41, 
+0x10, 0x52, 0x99, 0xa9, 0x70, 0xe4, 0x07, 0xef, 
+0x90, 0xff, 0xfc, 0x26, 0x52, 0x2a, 0x26, 0xc7, 
+0xa7, 0x38, 0xf6, 0x93, 0xf7, 0x29, 0x4d, 0x97, 
+0x71, 0xed, 0xa8, 0x2d, 0xcf, 0xf1, 0x91, 0x4a, 
+0xd1, 0xb7, 0xb6, 0x0f, 0xc3, 0x34, 0x5b, 0xf6, 
+0x23, 0x33, 0x94, 0x46, 0x2a, 0xc9, 0xe5, 0xcb, 
+0x97, 0x4f, 0x8d, 0x8d, 0x8d, 0x5d, 0x62, 0x2e, 
+0x6f, 0xa0, 0x75, 0x0c, 0x80, 0xfa, 0xde, 0x79, 
+0x73, 0x1c, 0xb0, 0x6b, 0xf4, 0x99, 0xf9, 0xf5, 
+0xaf, 0x7f, 0x3d, 0x9a, 0xcf, 0xe7, 0xcf, 0x2b, 
+0x43, 0x91, 0xb9, 0x6f, 0x7e, 0x30, 0x34, 0x4c, 
+0x9d, 0x8e, 0x5c, 0x96, 0xc0, 0x0f, 0xf1, 0x6b, 
+0xd1, 0xdb, 0x73, 0x7c, 0xa6, 0xf3, 0xd3, 0x9c, 
+0x3c, 0x72, 0x0a, 0xbb, 0x64, 0x37, 0xd4, 0xbf, 
+0x7a, 0xf6, 0x2a, 0xc7, 0x7e, 0xf2, 0x1e, 0x81, 
+0x1f, 0xa0, 0x94, 0xc2, 0xb5, 0x3d, 0x7e, 0xf5, 
+0xea, 0x51, 0x26, 0xc7, 0xa7, 0x1a, 0xea, 0x95, 
+0xa7, 0xcb, 0x9c, 0x3c, 0x72, 0x8a, 0xd2, 0xed, 
+0x52, 0x6d, 0x64, 0xf0, 0xf0, 0x5d, 0x1f, 0x42, 
+0xe8, 0xc8, 0x65, 0xd1, 0x9b, 0x02, 0xa3, 0x91, 
+0x33, 0xb0, 0xfa, 0x4d, 0x00, 0xff, 0xed, 0xb7, 
+0xdf, 0x7e, 0x8d, 0x68, 0x83, 0x74, 0xb6, 0x66, 
+0xcc, 0x64, 0x0a, 0x0d, 0x0d, 0x00, 0x34, 0xb9, 
+0x41, 0x0c, 0x80, 0x53, 0x43, 0x6e, 0x16, 0xb8, 
+0x7d, 0xf8, 0xf0, 0xe1, 0x7f, 0x07, 0x42, 0x6b, 
+0xc0, 0x44, 0xcf, 0x36, 0x4f, 0x8c, 0x34, 0x02, 
+0x37, 0x24, 0x70, 0x23, 0xba, 0xfa, 0x8e, 0xcf, 
+0xcc, 0x64, 0x91, 0x0b, 0xa3, 0x17, 0x09, 0xdc, 
+0xa0, 0x65, 0xa0, 0xba, 0x7e, 0xfe, 0x06, 0x97, 
+0x7f, 0x33, 0x8e, 0x92, 0x8a, 0xf3, 0x23, 0x17, 
+0xb8, 0x75, 0xa5, 0xd0, 0xb2, 0x9e, 0x57, 0xf5, 
+0x38, 0x37, 0x72, 0x9e, 0xd2, 0xad, 0x12, 0xbe, 
+0x13, 0xd4, 0x25, 0xf0, 0x42, 0x64, 0x53, 0xdd, 
+0xf4, 0x90, 0x85, 0x10, 0x82, 0x73, 0xe7, 0xce, 
+0xbd, 0x7f, 0xf1, 0xe2, 0xc5, 0x8b, 0x34, 0x6e, 
+0x93, 0xc7, 0x00, 0xd4, 0xe9, 0xdf, 0x00, 0x40, 
+0x82, 0x05, 0xc9, 0x40, 0x58, 0x07, 0xe0, 0xe4, 
+0xc9, 0x93, 0x9f, 0x8c, 0x8f, 0x8f, 0x9f, 0x92, 
+0x4a, 0x92, 0xdd, 0x9e, 0x42, 0x33, 0x64, 0x34, 
+0xa6, 0x2b, 0x09, 0x61, 0x48, 0xe0, 0xf9, 0x04, 
+0x5e, 0x64, 0xa1, 0xd9, 0x5b, 0xb3, 0x5c, 0xbf, 
+0x70, 0x2d, 0x5a, 0x5e, 0x52, 0x72, 0x41, 0x21, 
+0x0c, 0x1b, 0xae, 0x0b, 0xd6, 0x0b, 0x42, 0xae, 
+0x9d, 0xbf, 0x46, 0x65, 0xba, 0x44, 0xe0, 0x7a, 
+0xb5, 0x67, 0xf9, 0x48, 0x21, 0xea, 0x75, 0x52, 
+0x1b, 0x4c, 0x8c, 0xe5, 0x3a, 0x9e, 0xe7, 0x55, 
+0x5f, 0x7b, 0xed, 0xb5, 0xd7, 0x68, 0x9d, 0x2c, 
+0x31, 0xef, 0x7d, 0xa0, 0xd5, 0xec, 0xa2, 0xd9, 
+0x0d, 0x4a, 0x35, 0x24, 0x6f, 0xbd, 0xfc, 0xf2, 
+0xcb, 0xff, 0x52, 0x2a, 0x95, 0xa6, 0x54, 0xa7, 
+0x22, 0xf5, 0x40, 0xaa, 0xc1, 0xf7, 0x7c, 0x37, 
+0xc0, 0x73, 0x02, 0x2a, 0x33, 0x55, 0x66, 0x6e, 
+0x16, 0x91, 0x62, 0xbe, 0x7f, 0xde, 0x8d, 0x08, 
+0x24, 0xb7, 0xf3, 0x33, 0x54, 0x67, 0xed, 0x06, 
+0x06, 0x48, 0xa9, 0x30, 0x7a, 0x0d, 0xac, 0x8d, 
+0x26, 0x40, 0x78, 0xf8, 0xf0, 0xe1, 0x57, 0xf2, 
+0xf9, 0xfc, 0x65, 0xe0, 0x36, 0xf3, 0xb7, 0xc7, 
+0x1b, 0xac, 0x7f, 0x27, 0x00, 0x92, 0x2c, 0x28, 
+0x02, 0x85, 0xc9, 0xc9, 0xc9, 0xf1, 0x57, 0x5e, 
+0x79, 0xe5, 0x9f, 0x7c, 0xdf, 0xb7, 0x8d, 0x95, 
+0x3a, 0xd6, 0x7a, 0xb3, 0x81, 0x82, 0xbe, 0xe3, 
+0xe3, 0x55, 0xbd, 0x25, 0xbd, 0x37, 0x2c, 0x49, 
+0x84, 0xc2, 0xad, 0x44, 0x2c, 0x8b, 0xef, 0xe9, 
+0x59, 0x8d, 0xd4, 0x36, 0x13, 0xa9, 0x24, 0xa3, 
+0xa3, 0xa3, 0x3f, 0x3b, 0x7c, 0xf8, 0xf0, 0x51, 
+0x16, 0xc9, 0x12, 0x69, 0x56, 0xf6, 0x0b, 0x25, 
+0x48, 0x3c, 0xfd, 0xf4, 0xd3, 0x07, 0x9f, 0x7d, 
+0xf6, 0xd9, 0x6f, 0x0a, 0x21, 0x84, 0x7b, 0xc1, 
+0xc7, 0x9b, 0x68, 0x6f, 0xb1, 0xe4, 0x5e, 0x17, 
+0x99, 0x15, 0x18, 0xdb, 0x34, 0x84, 0x29, 0x18, 
+0x1b, 0x1b, 0x3b, 0xf5, 0x9d, 0xef, 0x7c, 0x67, 
+0xc9, 0x09, 0x12, 0xf3, 0x16, 0x44, 0xc2, 0x30, 
+0x8c, 0x13, 0x90, 0x63, 0x37, 0x10, 0xb5, 0x46, 
+0xe2, 0xd5, 0x62, 0x75, 0xe4, 0xc8, 0x91, 0xa3, 
+0xbd, 0xbd, 0xbd, 0x3d, 0xfb, 0xf6, 0xed, 0x7b, 
+0xce, 0xb8, 0x4f, 0x13, 0xaa, 0x43, 0xe2, 0x9d, 
+0xf3, 0x9b, 0xe2, 0xeb, 0x97, 0x5b, 0x64, 0x8f, 
+0x44, 0xdb, 0x24, 0x11, 0x4a, 0x90, 0xcf, 0xe7, 
+0xc7, 0xbe, 0xf7, 0xbd, 0xef, 0xfd, 0x33, 0xf3, 
+0xd3, 0x63, 0x92, 0x89, 0x52, 0xed, 0xa5, 0xc8, 
+0x40, 0xfb, 0x49, 0x52, 0xcf, 0x3c, 0xf3, 0xcc, 
+0x53, 0x87, 0x0e, 0x1d, 0x7a, 0x41, 0xd7, 0x75, 
+0x23, 0x2c, 0x86, 0x78, 0xa7, 0x7d, 0x42, 0xe7, 
+0x9e, 0xeb, 0x3a, 0xaf, 0xa8, 0xb5, 0x12, 0x35, 
+0x18, 0x79, 0xef, 0xb9, 0x73, 0xe7, 0x46, 0xbf, 
+0xfb, 0xdd, 0xef, 0x7e, 0xdf, 0xb6, 0xed, 0x7b, 
+0x97, 0x24, 0x05, 0xed, 0xa7, 0xc9, 0xed, 0xdc, 
+0xb9, 0x73, 0xfb, 0x8b, 0x2f, 0xbe, 0xf8, 0xad, 
+0x4c, 0x26, 0xd3, 0x8d, 0x0f, 0xc1, 0x44, 0x48, 
+0x70, 0x25, 0xfc, 0x52, 0xd8, 0x20, 0x72, 0x02, 
+0xb9, 0x4e, 0x20, 0x32, 0x10, 0x86, 0x61, 0x70, 
+0xec, 0xd8, 0xb1, 0xb7, 0x5e, 0x7e, 0xf9, 0xe5, 
+0x7b, 0x9f, 0x26, 0x57, 0xff, 0xb1, 0xcd, 0x44, 
+0xc9, 0x95, 0x2b, 0x57, 0xae, 0x7d, 0xe9, 0xa5, 
+0x97, 0xfe, 0x66, 0xcd, 0x9a, 0x35, 0x9b, 0x01, 
+0x70, 0x20, 0xb8, 0x1c, 0x12, 0xdc, 0xa0, 0x45, 
+0xd8, 0xf9, 0x02, 0x8a, 0x67, 0x89, 0x14, 0xef, 
+0x8e, 0xbe, 0x97, 0xcb, 0xe5, 0xe9, 0x37, 0xdf, 
+0x7c, 0xf3, 0x87, 0x47, 0x8e, 0x1c, 0x79, 0x8f, 
+0x28, 0x49, 0x72, 0x8a, 0x28, 0xea, 0xc7, 0xf9, 
+0xc3, 0x77, 0x9f, 0x28, 0x59, 0xaf, 0xb0, 0x70, 
+0xaa, 0x6c, 0x9a, 0x68, 0xff, 0xbd, 0x9e, 0x2a, 
+0x7b, 0xe0, 0xc0, 0x81, 0xdd, 0x87, 0x0e, 0x1d, 
+0x7a, 0x6e, 0xf9, 0xf2, 0xe5, 0xab, 0x01, 0x70, 
+0x21, 0xbc, 0x15, 0x75, 0x2f, 0x9c, 0x66, 0x69, 
+0x60, 0xa4, 0x41, 0x2c, 0x8b, 0x84, 0x6c, 0x74, 
+0xcb, 0x71, 0x9c, 0xea, 0xe8, 0xe8, 0xe8, 0x3b, 
+0xaf, 0xbe, 0xfa, 0xea, 0xdb, 0xe5, 0x72, 0x39, 
+0x4e, 0x95, 0xbd, 0x4d, 0xe3, 0x8c, 0xef, 0xde, 
+0xa5, 0xca, 0x2e, 0x00, 0xc2, 0x42, 0xc9, 0xd2, 
+0x5d, 0x44, 0xae, 0x91, 0x7b, 0xfe, 0xf9, 0xe7, 
+0xf7, 0xef, 0xdf, 0xbf, 0xff, 0x99, 0xce, 0xce, 
+0xce, 0x7a, 0xb2, 0x34, 0x7e, 0xad, 0xab, 0x36, 
+0x84, 0x8e, 0x98, 0x3b, 0x11, 0x10, 0x50, 0x3f, 
+0x45, 0x20, 0xcc, 0x30, 0xfa, 0xdc, 0x49, 0x04, 
+0x71, 0xad, 0x78, 0x9e, 0xe7, 0x9c, 0x3e, 0x7d, 
+0xfa, 0xfd, 0x1f, 0xfd, 0xe8, 0x47, 0xaf, 0xe7, 
+0xf3, 0xf9, 0x6b, 0xb5, 0x96, 0xa6, 0x6b, 0x92, 
+0xb4, 0xfa, 0xbd, 0x4f, 0x96, 0x5e, 0x04, 0x84, 
+0xe4, 0x01, 0x89, 0xf8, 0x8c, 0x40, 0xb6, 0xd6, 
+0xfd, 0x4e, 0xa0, 0x63, 0xef, 0xde, 0xbd, 0x9b, 
+0xf6, 0xec, 0xd9, 0xb3, 0x7b, 0xc3, 0x86, 0x0d, 
+0x5b, 0x73, 0xb9, 0xdc, 0x92, 0xd2, 0xe5, 0x6d, 
+0xdb, 0x2e, 0x5f, 0xba, 0x74, 0xe9, 0xb3, 0x4f, 
+0x3e, 0xf9, 0xe4, 0xa3, 0x77, 0xdf, 0x7d, 0xf7, 
+0xa3, 0xd9, 0xd9, 0xd9, 0x38, 0xb8, 0xc5, 0xd6, 
+0xfe, 0xdd, 0xa5, 0xcb, 0xd7, 0x2b, 0x2f, 0x7e, 
+0x60, 0x22, 0x66, 0x44, 0xcb, 0x03, 0x13, 0x9b, 
+0x37, 0x6f, 0x5e, 0xbd, 0x73, 0xe7, 0xce, 0xcd, 
+0x9d, 0x9d, 0x9d, 0xb9, 0x8e, 0x8e, 0x8e, 0xae, 
+0x74, 0x3a, 0xdd, 0x99, 0xc9, 0x64, 0x3a, 0x34, 
+0x4d, 0xd3, 0xca, 0xe5, 0xf2, 0xec, 0xec, 0xec, 
+0xec, 0x4c, 0xa9, 0x54, 0x9a, 0x29, 0x16, 0x8b, 
+0x85, 0x89, 0x89, 0x89, 0x2b, 0x47, 0x8f, 0x1e, 
+0x3d, 0xe3, 0xba, 0xee, 0x62, 0x07, 0x26, 0x92, 
+0x8a, 0x37, 0x9c, 0x1c, 0x69, 0x57, 0xf9, 0x25, 
+0x03, 0x90, 0x00, 0x01, 0xbe, 0xf8, 0x91, 0x99, 
+0xe4, 0x46, 0x65, 0x3c, 0x13, 0x8d, 0xd7, 0x21, 
+0xea, 0xcb, 0x71, 0xcc, 0x1d, 0x97, 0x69, 0x96, 
+0x05, 0x8f, 0xcc, 0xb0, 0x48, 0xb4, 0x5f, 0x50, 
+0x9f, 0xff, 0xa5, 0x43, 0x53, 0xc9, 0x93, 0x63, 
+0xd0, 0x38, 0xfd, 0x8e, 0x41, 0xf8, 0x9d, 0x1c, 
+0x9a, 0xba, 0xab, 0x83, 0x93, 0x77, 0x71, 0x6c, 
+0xae, 0x79, 0xaf, 0xae, 0xf9, 0x4d, 0x34, 0x96, 
+0x3b, 0x1e, 0x9b, 0xe3, 0x2e, 0x94, 0x87, 0xbb, 
+0x04, 0x00, 0x1a, 0x40, 0x80, 0x46, 0x46, 0x24, 
+0x77, 0x9a, 0xdb, 0x39, 0x38, 0xd9, 0xbc, 0x28, 
+0xb3, 0xe8, 0xc1, 0x49, 0xee, 0x52, 0xf1, 0x7a, 
+0x87, 0xff, 0xbf, 0x1f, 0x9d, 0xbd, 0x67, 0x00, 
+0x34, 0x34, 0x7a, 0x0f, 0x0f, 0x4f, 0x27, 0xae, 
+0xd1, 0x97, 0xff, 0xab, 0x87, 0xa7, 0x7f, 0x5f, 
+0xcb, 0xff, 0x00, 0xc6, 0x3e, 0xcf, 0xb7, 0x9c, 
+0x33, 0x99, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x49, 
+0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, 
+};
+
+#endif
+
diff --git a/source/bitmaps/icons/activitywindow.png b/source/bitmaps/icons/activitywindow.png
new file mode 100644 (file)
index 0000000..7a35534
Binary files /dev/null and b/source/bitmaps/icons/activitywindow.png differ
diff --git a/source/bitmaps/icons/actsleep.cpp b/source/bitmaps/icons/actsleep.cpp
new file mode 100644 (file)
index 0000000..62800a1
--- /dev/null
@@ -0,0 +1,92 @@
+#include <iostream>
+
+#ifndef ICONS_ACTSLEEP_CPP
+#define ICONS_ACTSLEEP_CPP
+
+static unsigned char icons_actsleep_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0x8f, 0x00, 0x58, 0x00, 0x92, 0xb6, 
+0x5b, 0x11, 0x5c, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 
+0x00, 0x0d, 0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x1d, 0x20, 0xf1, 
+0x4e, 0x92, 0x93, 0x00, 0x00, 0x02, 0x1f, 0x49, 
+0x44, 0x41, 0x54, 0x38, 0xcb, 0xb5, 0x93, 0xdf, 
+0x4b, 0x53, 0x61, 0x1c, 0xc6, 0x9f, 0xf7, 0x7d, 
+0xcf, 0xce, 0xe6, 0x79, 0xb7, 0xb2, 0x6d, 0x06, 
+0x5a, 0x32, 0x05, 0x1b, 0x84, 0xa0, 0x83, 0x88, 
+0x31, 0x30, 0x99, 0x17, 0xad, 0xab, 0x41, 0x50, 
+0xf9, 0x07, 0x64, 0x19, 0x12, 0x14, 0x78, 0x13, 
+0x28, 0xa3, 0x81, 0x4c, 0xf2, 0x46, 0xa8, 0xcb, 
+0x40, 0x82, 0xda, 0xc5, 0x22, 0xda, 0x1f, 0xb0, 
+0xe0, 0xb0, 0x28, 0x98, 0xd4, 0x45, 0x0a, 0x1b, 
+0xab, 0x88, 0xc4, 0x61, 0x0e, 0xb7, 0x9a, 0xed, 
+0xc2, 0xed, 0x70, 0x3c, 0x67, 0xa7, 0x8b, 0xd6, 
+0xa1, 0xd3, 0x12, 0x84, 0xe8, 0x0b, 0xcf, 0xc5, 
+0xf7, 0xfd, 0xf1, 0xf9, 0x3e, 0x3c, 0xbc, 0x2f, 
+0xf0, 0x8f, 0x45, 0x0e, 0xda, 0xf0, 0xfb, 0xfd, 
+0x5e, 0x49, 0x92, 0xc6, 0x0c, 0xc3, 0xa0, 0xaa, 
+0xaa, 0xe6, 0x8a, 0xc5, 0x62, 0xf9, 0x50, 0x80, 
+0xe0, 0x68, 0x30, 0xd2, 0xe7, 0x38, 0xf9, 0xa4, 
+0x47, 0xf7, 0xba, 0xbb, 0xf7, 0x3c, 0x8c, 0x18, 
+0xc0, 0x77, 0xbe, 0xab, 0x7f, 0x15, 0xaa, 0xf5, 
+0x92, 0xb2, 0x75, 0xf3, 0xed, 0xfa, 0xea, 0xd3, 
+0x03, 0x01, 0xe3, 0x81, 0xf1, 0xf8, 0x69, 0x71, 
+0x78, 0x7e, 0x70, 0xe3, 0x94, 0x40, 0x74, 0x02, 
+0x10, 0xc0, 0xa0, 0x06, 0x88, 0x4e, 0x00, 0x0a, 
+0x94, 0x06, 0x36, 0xf4, 0xa2, 0x9e, 0x7f, 0x24, 
+0xbf, 0x93, 0xaf, 0x77, 0x00, 0x82, 0x67, 0x82, 
+0x13, 0x23, 0xce, 0xc0, 0x8b, 0xbe, 0x0f, 0xfd, 
+0xec, 0xd7, 0x5a, 0xbc, 0x3c, 0x6f, 0x71, 0x17, 
+0xef, 0x4d, 0xa0, 0x32, 0x54, 0xd6, 0xd7, 0xd4, 
+0xf5, 0xab, 0xb9, 0x37, 0xaf, 0x1f, 0x5b, 0x00, 
+0x97, 0xcf, 0x5f, 0xd9, 0x1e, 0xfc, 0x34, 0xd4, 
+0x4b, 0xf4, 0xce, 0x58, 0x96, 0x36, 0x13, 0xb8, 
+0xe3, 0x6b, 0xc3, 0x28, 0x50, 0xf2, 0x7f, 0xae, 
+0xa5, 0x32, 0x29, 0x4f, 0xbb, 0x05, 0xc2, 0xe1, 
+0xb0, 0xc3, 0xc5, 0x8e, 0x78, 0x9a, 0xac, 0x89, 
+0xa6, 0xdd, 0xaa, 0xa5, 0xcd, 0x04, 0x6e, 0xf9, 
+0x67, 0xcd, 0xbe, 0x21, 0x34, 0xc0, 0x5b, 0xae, 
+0xa3, 0xa1, 0x50, 0xe8, 0x04, 0x00, 0x08, 0xed, 
+0x21, 0x01, 0x66, 0x30, 0xa1, 0x21, 0xee, 0x59, 
+0x26, 0xaf, 0x14, 0x1e, 0x02, 0x00, 0x1e, 0x7c, 
+0x5c, 0x06, 0x00, 0x4c, 0x0d, 0x4f, 0x03, 0x00, 
+0x98, 0x46, 0x99, 0x24, 0x49, 0x13, 0x00, 0x92, 
+0x02, 0x00, 0x08, 0x82, 0x00, 0x6a, 0xa3, 0x30, 
+0x1c, 0x2d, 0x50, 0x4a, 0x4d, 0xc0, 0xf4, 0xd9, 
+0x19, 0x0b, 0x90, 0x49, 0x3f, 0xe3, 0x61, 0x76, 
+0x0a, 0x01, 0x02, 0x31, 0x1d, 0x68, 0x9a, 0xb6, 
+0x66, 0x73, 0x09, 0x9a, 0x43, 0xb2, 0x89, 0x00, 
+0x70, 0xff, 0xd5, 0xb2, 0x79, 0xe9, 0xf6, 0xb9, 
+0xd9, 0x8e, 0x4c, 0x8c, 0x6e, 0x5d, 0xdb, 0xaf, 
+0xee, 0xcb, 0x66, 0x06, 0xd9, 0x6c, 0x56, 0x51, 
+0x99, 0x5a, 0xe5, 0x9c, 0x83, 0x77, 0x71, 0xcc, 
+0x45, 0x62, 0x00, 0x80, 0xb9, 0x48, 0x0c, 0xbc, 
+0x8b, 0x5b, 0x25, 0x71, 0x68, 0x0e, 0xad, 0x2e, 
+0xcb, 0xf2, 0x17, 0x13, 0x00, 0x00, 0x95, 0xda, 
+0xce, 0x25, 0x32, 0x60, 0x68, 0x5c, 0xe2, 0x58, 
+0xcc, 0x2c, 0x00, 0x00, 0x16, 0x33, 0x0b, 0xe0, 
+0x12, 0xb7, 0x88, 0xf9, 0x88, 0x5e, 0xa9, 0xef, 
+0x5c, 0xfb, 0xeb, 0x43, 0x9a, 0xbc, 0x38, 0x79, 
+0x77, 0xc4, 0x37, 0x1a, 0xe3, 0x55, 0x17, 0x43, 
+0xeb, 0x0f, 0xdf, 0x14, 0x50, 0x7a, 0x1a, 0x7a, 
+0x61, 0x3b, 0xbf, 0x92, 0x7c, 0x96, 0xbc, 0x61, 
+0xe6, 0xf2, 0xfb, 0x99, 0xc2, 0xfb, 0xc2, 0x4b, 
+0x77, 0xbf, 0x7b, 0xd5, 0x7e, 0x5c, 0xbc, 0x20, 
+0x7a, 0x6c, 0x76, 0x91, 0x8b, 0x84, 0xba, 0x08, 
+0xd4, 0x63, 0x8a, 0x5e, 0xb3, 0x7f, 0xdb, 0x2d, 
+0x6c, 0xe5, 0xa7, 0x52, 0xcf, 0x53, 0xf7, 0x0e, 
+0xf5, 0x99, 0xa2, 0xd1, 0xa8, 0xd7, 0xe9, 0x74, 
+0x8e, 0x11, 0x42, 0xa8, 0xa2, 0x28, 0xb9, 0x74, 
+0x3a, 0x5d, 0xc6, 0xff, 0xa8, 0x1f, 0x64, 0xde, 
+0xbb, 0x0a, 0xfc, 0x56, 0x4c, 0x10, 0x00, 0x00, 
+0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 
+0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/actsleep.png b/source/bitmaps/icons/actsleep.png
new file mode 100644 (file)
index 0000000..e5ec09e
Binary files /dev/null and b/source/bitmaps/icons/actsleep.png differ
diff --git a/source/bitmaps/icons/ciext.cpp b/source/bitmaps/icons/ciext.cpp
new file mode 100644 (file)
index 0000000..d771cc8
--- /dev/null
@@ -0,0 +1,159 @@
+#include <iostream>
+
+#ifndef ICONS_CIEXT_CPP
+#define ICONS_CIEXT_CPP
+
+static unsigned char icons_ciext_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, 
+0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x2c, 0x32, 0xc2, 
+0xaf, 0xb3, 0xa3, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x0e, 
+0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 
+0xc1, 0x6e, 0x14, 0x47, 0x10, 0x86, 0xbf, 0xea, 
+0x99, 0xb5, 0x21, 0x12, 0x0a, 0x51, 0x1c, 0x22, 
+0x61, 0xc1, 0xc1, 0x91, 0x85, 0x2f, 0x98, 0x07, 
+0xc8, 0x03, 0x20, 0x11, 0x4b, 0x44, 0x48, 0x7e, 
+0x10, 0x0e, 0xbc, 0x00, 0x4f, 0x40, 0xde, 0x23, 
+0x87, 0x20, 0x71, 0xcd, 0x09, 0xe5, 0x12, 0xe0, 
+0x10, 0x1b, 0xc5, 0x20, 0x84, 0xc4, 0x69, 0xd7, 
+0x76, 0x76, 0x49, 0xbc, 0xbb, 0xac, 0x77, 0x76, 
+0xbb, 0xaa, 0x72, 0xe8, 0x99, 0xd9, 0x9d, 0x35, 
+0x6b, 0x81, 0x14, 0x29, 0x25, 0x8d, 0xa6, 0xa7, 
+0x7b, 0xa6, 0xab, 0xe6, 0xaf, 0xbf, 0xfe, 0x6a, 
+0x21, 0x99, 0xf3, 0xff, 0x98, 0x08, 0x60, 0xf7, 
+0xee, 0xdd, 0x13, 0x33, 0x6b, 0xac, 0xa8, 0xea, 
+0x92, 0x2f, 0xe4, 0xa3, 0xcf, 0xee, 0x7e, 0x66, 
+0xed, 0x3c, 0x7b, 0xf0, 0xe0, 0x01, 0x9d, 0x4e, 
+0x87, 0x1c, 0x90, 0xe9, 0x74, 0xca, 0x4f, 0x8f, 
+0x1e, 0x21, 0x41, 0x10, 0x11, 0x44, 0x02, 0x21, 
+0x94, 0x97, 0x04, 0x42, 0x16, 0x08, 0x21, 0x23, 
+0xcb, 0x03, 0x59, 0x96, 0x93, 0x85, 0x40, 0x9e, 
+0xe7, 0xe4, 0x79, 0x4e, 0x96, 0x65, 0x4c, 0x63, 
+0x44, 0x63, 0x44, 0xa3, 0xa2, 0x16, 0x89, 0xaa, 
+0x98, 0x1a, 0xaa, 0x86, 0x9b, 0xa1, 0x66, 0x98, 
+0x2b, 0x6e, 0x8e, 0x9b, 0x63, 0x38, 0x9d, 0x76, 
+0x1b, 0x80, 0xbc, 0x8a, 0x5e, 0xcd, 0x11, 0x20, 
+0x08, 0x48, 0x30, 0x30, 0xe8, 0x74, 0x3a, 0x9f, 
+0x8d, 0xe9, 0xe6, 0xe6, 0x26, 0xa6, 0x8e, 0x99, 
+0xa5, 0xcb, 0xd3, 0xdd, 0xcd, 0x30, 0x77, 0xdc, 
+0x1d, 0x9f, 0x43, 0x3b, 0x07, 0x88, 0x31, 0x62, 
+0x66, 0x04, 0xc0, 0x24, 0x10, 0x5c, 0xf8, 0xeb, 
+0xef, 0x1e, 0x1b, 0x1b, 0x1b, 0x9f, 0x1d, 0xc0, 
+0xdb, 0xb7, 0x6f, 0xb9, 0x7e, 0xfd, 0xfa, 0x2c, 
+0x00, 0xd3, 0x7a, 0xec, 0xee, 0x98, 0x39, 0x3e, 
+0x47, 0xb9, 0x50, 0xe5, 0xd1, 0x5d, 0x31, 0x73, 
+0xb4, 0x84, 0x6c, 0x34, 0x1a, 0x35, 0x36, 0x5e, 
+0x5b, 0x5b, 0x03, 0xa0, 0x7f, 0xff, 0xfe, 0xb9, 
+0xf3, 0xa3, 0xd1, 0x08, 0x55, 0x43, 0x55, 0xb1, 
+0x32, 0x15, 0x75, 0x30, 0x5a, 0x21, 0xa2, 0x4d, 
+0x04, 0xaa, 0xc8, 0x04, 0x03, 0x11, 0x5c, 0x84, 
+0x7e, 0xbf, 0xcf, 0x60, 0x30, 0x68, 0x38, 0x1b, 
+0x0c, 0x06, 0xc8, 0xc3, 0x87, 0xe7, 0xce, 0xf7, 
+0xfb, 0x7d, 0xf6, 0xf6, 0xfe, 0x68, 0xac, 0xaf, 
+0xaf, 0xaf, 0xd3, 0x6a, 0xad, 0xe0, 0x9e, 0x50, 
+0x98, 0x47, 0x20, 0xaf, 0x10, 0x50, 0xd5, 0x44, 
+0x40, 0x04, 0x09, 0x42, 0xb7, 0xdb, 0x25, 0xc6, 
+0x58, 0xbf, 0xf8, 0xe6, 0xcd, 0x9b, 0xc6, 0xf3, 
+0xb2, 0xf9, 0x6e, 0xb7, 0xcb, 0xe6, 0xe6, 0x66, 
+0xe3, 0x9d, 0x97, 0x2f, 0x5f, 0xb2, 0x7d, 0xeb, 
+0x16, 0xb8, 0x63, 0x6e, 0xf8, 0x5c, 0xc1, 0xe5, 
+0xd5, 0xc0, 0x2c, 0xfd, 0xbd, 0x00, 0xc1, 0x85, 
+0x5e, 0xaf, 0xc7, 0x78, 0x3c, 0xe6, 0xe6, 0xcd, 
+0x9b, 0x00, 0xec, 0xef, 0xef, 0x7f, 0xd2, 0xb8, 
+0xd7, 0xeb, 0x71, 0xe1, 0xc2, 0x85, 0xda, 0xc1, 
+0xb5, 0x6b, 0xd7, 0xd2, 0xfe, 0x1a, 0x31, 0x07, 
+0xdc, 0xd3, 0xb5, 0x88, 0x80, 0xa9, 0x81, 0x80, 
+0x00, 0x26, 0xc2, 0xc9, 0xc9, 0x09, 0x45, 0x51, 
+0xf0, 0xfc, 0xf9, 0x73, 0x80, 0x4f, 0x1e, 0x9f, 
+0x9c, 0x9c, 0x70, 0xe7, 0xce, 0x1d, 0x4e, 0x4f, 
+0x4f, 0x79, 0xf1, 0xe2, 0x05, 0x21, 0x04, 0x06, 
+0x83, 0x01, 0x31, 0xea, 0x4c, 0xf1, 0xca, 0x00, 
+0x44, 0x64, 0x86, 0x80, 0x56, 0xc4, 0x28, 0x51, 
+0xf8, 0xf1, 0xee, 0x5d, 0x7e, 0x79, 0xfc, 0xf8, 
+0xb3, 0xab, 0x60, 0x77, 0x77, 0x97, 0xc9, 0x64, 
+0x42, 0x08, 0xa1, 0x31, 0x1f, 0xa3, 0x52, 0xe9, 
+0x94, 0x7f, 0x14, 0x81, 0xba, 0x36, 0x9d, 0x84, 
+0x03, 0xec, 0xec, 0xec, 0x2c, 0xc8, 0x20, 0xe0, 
+0x82, 0x48, 0xd2, 0xd0, 0x10, 0x72, 0xae, 0x5c, 
+0xf9, 0x86, 0xe3, 0xa3, 0xe3, 0x94, 0x5b, 0x77, 
+0x4e, 0x4f, 0x4f, 0xcb, 0xaf, 0x13, 0x91, 0x87, 
+0xc3, 0x21, 0xfd, 0x7e, 0x1f, 0xd5, 0x58, 0xcf, 
+0x57, 0xe6, 0xee, 0x73, 0x1c, 0x50, 0x6b, 0xb0, 
+0x33, 0x05, 0xe9, 0x8d, 0x68, 0xe7, 0x6d, 0x34, 
+0xfa, 0xc0, 0x70, 0xf8, 0x81, 0x67, 0xcf, 0x7e, 
+0xe7, 0xea, 0xd5, 0xab, 0x5c, 0xbc, 0x78, 0x91, 
+0x3c, 0x6f, 0x91, 0x85, 0x90, 0xca, 0x7a, 0x41, 
+0x95, 0x4d, 0x15, 0x2f, 0xd1, 0x9d, 0xb7, 0x46, 
+0x0a, 0xe6, 0xf3, 0xe3, 0xee, 0x84, 0x10, 0xb8, 
+0x71, 0xe3, 0x46, 0x5a, 0x1f, 0x8f, 0x19, 0x4d, 
+0xa7, 0xc4, 0x18, 0x19, 0x8f, 0xc7, 0x00, 0x1c, 
+0x1e, 0x1e, 0xa2, 0xaa, 0x0c, 0x07, 0x43, 0xcc, 
+0x8c, 0x95, 0x95, 0x55, 0xb2, 0x3c, 0x23, 0x0f, 
+0x01, 0x09, 0x19, 0xef, 0xde, 0xbd, 0x63, 0x7d, 
+0x7d, 0x9d, 0x6e, 0xb7, 0x5b, 0xa7, 0x38, 0x85, 
+0x20, 0x35, 0x10, 0x61, 0xbe, 0x0a, 0x4c, 0x35, 
+0x09, 0x91, 0xc6, 0x86, 0xf3, 0x79, 0xbb, 0x74, 
+0x94, 0xd2, 0xb2, 0xba, 0xba, 0xca, 0xc6, 0xc6, 
+0x77, 0x38, 0x50, 0x4c, 0x26, 0x14, 0x45, 0x41, 
+0x31, 0x19, 0x33, 0x2d, 0x26, 0x4c, 0xa6, 0x53, 
+0x8a, 0xa2, 0x38, 0xc3, 0x01, 0x55, 0x23, 0xda, 
+0x47, 0x84, 0x28, 0x75, 0x3f, 0x83, 0x52, 0x24, 
+0xdc, 0x9d, 0x3c, 0x5f, 0xc2, 0xb2, 0xcb, 0xcd, 
+0xe6, 0xfd, 0xea, 0xe0, 0x60, 0x29, 0x21, 0xb7, 
+0xb7, 0xb7, 0x6b, 0xd1, 0x52, 0x35, 0x24, 0x24, 
+0x04, 0x5c, 0x84, 0x90, 0x65, 0x8b, 0x3a, 0xa0, 
+0xb5, 0x4a, 0xb9, 0xcd, 0x3c, 0xc4, 0x57, 0xdf, 
+0xc3, 0x65, 0x90, 0xcb, 0xbf, 0x26, 0xd5, 0x5b, 
+0x7d, 0x02, 0x65, 0x0a, 0x2a, 0x27, 0xe7, 0xd9, 
+0xde, 0xde, 0x1e, 0x3f, 0xec, 0xec, 0xa0, 0x16, 
+0x11, 0x17, 0x82, 0x84, 0x46, 0xdb, 0x6e, 0x08, 
+0x51, 0xea, 0x54, 0x8e, 0xcf, 0x49, 0x55, 0xbe, 
+0xf5, 0x5b, 0xcd, 0x01, 0x80, 0x4b, 0xc5, 0x0e, 
+0x63, 0x7e, 0x6e, 0x38, 0x38, 0xcf, 0x6e, 0xdf, 
+0xbe, 0x9d, 0x08, 0x68, 0x92, 0x4a, 0x53, 0x1c, 
+0x24, 0x9c, 0x13, 0x40, 0xd9, 0x17, 0x96, 0xda, 
+0x3f, 0xc0, 0x97, 0xb3, 0xc7, 0xad, 0xad, 0x2d, 
+0x5a, 0x79, 0x4e, 0xab, 0xb5, 0x42, 0xd6, 0xca, 
+0xc8, 0xb3, 0xf2, 0x9c, 0x50, 0x9e, 0x1f, 0xaa, 
+0x7d, 0xb3, 0x90, 0xa1, 0x58, 0xaa, 0x84, 0xb0, 
+0xd0, 0x0d, 0x6b, 0x12, 0x5a, 0xd9, 0xc5, 0x5c, 
+0x79, 0xff, 0xbe, 0xc7, 0xeb, 0xd7, 0xaf, 0xcf, 
+0xf8, 0x1f, 0x7c, 0xfb, 0xa4, 0x56, 0xbd, 0xbd, 
+0xfd, 0x7d, 0xf0, 0x44, 0x09, 0x73, 0xc3, 0xab, 
+0x73, 0x80, 0x56, 0x7b, 0x19, 0x5a, 0xb6, 0x63, 
+0xb5, 0xb9, 0xce, 0xa8, 0x76, 0x16, 0x81, 0xfa, 
+0xc0, 0x60, 0x55, 0xc3, 0x30, 0x8e, 0x8e, 0x8f, 
+0x97, 0x02, 0x71, 0x70, 0xf0, 0x67, 0x4d, 0xda, 
+0x4a, 0x2f, 0x2a, 0x02, 0x9b, 0x1b, 0xe2, 0x02, 
+0x56, 0x4a, 0x7b, 0xa8, 0x44, 0xd6, 0x81, 0x40, 
+0x58, 0xe0, 0xc0, 0x07, 0x11, 0xf9, 0xc2, 0xdc, 
+0xa5, 0x3a, 0xc1, 0xcc, 0x73, 0xa1, 0xdd, 0x6e, 
+0xd7, 0x25, 0x1a, 0xcd, 0xb0, 0xa8, 0x44, 0x8b, 
+0x33, 0xa2, 0x4a, 0xd5, 0x5f, 0x92, 0xe3, 0x60, 
+0x01, 0x0b, 0x8e, 0x98, 0x95, 0xaa, 0x67, 0x84, 
+0x74, 0x23, 0x84, 0x50, 0x36, 0xbd, 0xd0, 0x10, 
+0xd7, 0xde, 0xd3, 0xa7, 0x4f, 0xbf, 0x92, 0x19, 
+0x35, 0x1d, 0x10, 0x9f, 0x49, 0xa0, 0x2c, 0x3b, 
+0x90, 0x2e, 0x9b, 0xfb, 0x54, 0x6b, 0xb7, 0xdb, 
+0xe4, 0xc0, 0xd7, 0x87, 0x87, 0x87, 0xbe, 0xa0, 
+0xf8, 0x4d, 0xd1, 0xfe, 0xef, 0x6d, 0x0a, 0x14, 
+0xbb, 0xbb, 0xbb, 0x97, 0xfe, 0x05, 0xbe, 0x89, 
+0x07, 0xb5, 0xe5, 0xbd, 0x0f, 0x37, 0x00, 0x00, 
+0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 
+0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/ciext.png b/source/bitmaps/icons/ciext.png
new file mode 100644 (file)
index 0000000..eccef79
Binary files /dev/null and b/source/bitmaps/icons/ciext.png differ
diff --git a/source/bitmaps/icons/cikey.cpp b/source/bitmaps/icons/cikey.cpp
new file mode 100644 (file)
index 0000000..5bf6eb8
--- /dev/null
@@ -0,0 +1,166 @@
+#include <iostream>
+
+#ifndef ICONS_CIKEY_CPP
+#define ICONS_CIKEY_CPP
+
+static unsigned char icons_cikey_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, 
+0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x23, 0x38, 0xa5, 
+0xe2, 0x46, 0x72, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x49, 
+0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 
+0xcf, 0x6b, 0x54, 0x57, 0x14, 0xc7, 0x3f, 0xe7, 
+0xbe, 0x09, 0x82, 0x90, 0x80, 0x26, 0x93, 0x9a, 
+0x8a, 0x45, 0xa4, 0x44, 0x51, 0xfb, 0x03, 0x9a, 
+0x06, 0x22, 0x76, 0x31, 0x05, 0x8b, 0x34, 0xd0, 
+0x45, 0x40, 0xdd, 0x55, 0xa4, 0x50, 0xfa, 0x0f, 
+0xb8, 0xee, 0x5f, 0x20, 0xa8, 0x90, 0x4d, 0x8b, 
+0x1b, 0x17, 0xd2, 0x85, 0x8b, 0xb6, 0x50, 0x28, 
+0x94, 0xae, 0x42, 0x0d, 0x04, 0xe9, 0xa2, 0x98, 
+0xa2, 0x20, 0x44, 0xfc, 0x31, 0x13, 0x53, 0x8d, 
+0xad, 0x3f, 0x48, 0xc7, 0xb9, 0xe7, 0x9c, 0x2e, 
+0xee, 0x7b, 0x6f, 0xe6, 0x25, 0x99, 0x9a, 0x4d, 
+0xe9, 0x85, 0xcb, 0x3d, 0xf3, 0xee, 0x7b, 0x73, 
+0xbf, 0xf7, 0x7b, 0xbe, 0xf7, 0x7b, 0xae, 0x90, 
+0x9a, 0xf3, 0xff, 0x34, 0x11, 0xc0, 0x66, 0x66, 
+0x66, 0xc4, 0xcc, 0x2a, 0x33, 0xaa, 0xda, 0xe7, 
+0x0b, 0xd9, 0xf4, 0xb7, 0xbb, 0x6f, 0x98, 0xfb, 
+0xb7, 0x76, 0xf6, 0xec, 0x59, 0x5a, 0xad, 0x16, 
+0x35, 0x40, 0x3a, 0x9d, 0x0e, 0x17, 0xce, 0x9f, 
+0x47, 0x82, 0x20, 0x22, 0x88, 0x04, 0x42, 0xc8, 
+0xbb, 0x04, 0x42, 0x16, 0x08, 0x21, 0x23, 0xab, 
+0x05, 0xb2, 0xac, 0x46, 0x16, 0x02, 0xb5, 0x5a, 
+0x8d, 0x5a, 0xad, 0x46, 0x96, 0x65, 0x74, 0x62, 
+0x44, 0x63, 0x44, 0xa3, 0xa2, 0x16, 0x89, 0xaa, 
+0x98, 0x1a, 0xaa, 0x86, 0x9b, 0xa1, 0x66, 0x98, 
+0x2b, 0x6e, 0x8e, 0x9b, 0x63, 0x38, 0xad, 0x66, 
+0x13, 0x80, 0x5a, 0x81, 0x5e, 0xcd, 0x11, 0x20, 
+0x08, 0x48, 0x30, 0xb0, 0x3c, 0x2f, 0xc1, 0xc1, 
+0x41, 0x5c, 0x70, 0x13, 0x5c, 0x0c, 0x17, 0xc1, 
+0xdd, 0x71, 0xc0, 0x3d, 0x65, 0xd0, 0x71, 0x0c, 
+0xc3, 0xcc, 0x31, 0x75, 0xcc, 0x2c, 0x75, 0x4f, 
+0xa3, 0x9b, 0x61, 0xee, 0xe9, 0xbb, 0x1e, 0xb6, 
+0x6b, 0x00, 0x31, 0x46, 0xcc, 0x8c, 0x00, 0x98, 
+0x04, 0x82, 0x0b, 0x16, 0xe0, 0xef, 0xab, 0x1f, 
+0x55, 0x68, 0x1b, 0xfe, 0x74, 0x0e, 0x11, 0x21, 
+0x84, 0x00, 0xf9, 0x9f, 0x89, 0x24, 0x05, 0x95, 
+0xbb, 0x33, 0xc3, 0xf3, 0x45, 0x53, 0xd7, 0x32, 
+0x76, 0x77, 0xcc, 0x12, 0xd8, 0x0a, 0x00, 0x11, 
+0xc1, 0x5d, 0x31, 0x0b, 0x90, 0xef, 0x30, 0x7e, 
+0xfb, 0x31, 0x7b, 0x1b, 0x1f, 0x56, 0x00, 0xdc, 
+0xb9, 0xfc, 0x01, 0xf5, 0xd3, 0xbf, 0xe4, 0x3b, 
+0x73, 0x32, 0xcf, 0xf7, 0xee, 0xdd, 0xc5, 0x55, 
+0x8b, 0x9e, 0xd2, 0x50, 0x65, 0x21, 0xd1, 0xef, 
+0xbe, 0x8e, 0x81, 0x02, 0x99, 0x60, 0x20, 0xc2, 
+0x93, 0xcb, 0x13, 0x1c, 0x38, 0x7e, 0x8c, 0xf6, 
+0xb3, 0x65, 0x6e, 0xfe, 0xf8, 0x13, 0x00, 0x07, 
+0x8e, 0x1f, 0x63, 0x6c, 0xe2, 0x20, 0x37, 0xcf, 
+0xed, 0xdd, 0x92, 0xc8, 0xc6, 0xbe, 0x58, 0x44, 
+0x4d, 0xd3, 0x8e, 0x2d, 0xa5, 0xc6, 0xdd, 0xf2, 
+0xd4, 0x6d, 0xc2, 0x80, 0xaa, 0x26, 0x01, 0x92, 
+0x94, 0xfc, 0xe2, 0x69, 0x8b, 0x7b, 0xd7, 0x6e, 
+0xb0, 0xe3, 0xcc, 0xaf, 0x64, 0x21, 0x70, 0xf3, 
+0xd2, 0xbb, 0xec, 0x39, 0x72, 0x98, 0x3d, 0x47, 
+0x0e, 0xbf, 0x72, 0xf1, 0x7b, 0xd7, 0x6e, 0xa0, 
+0x1a, 0x7b, 0x18, 0x70, 0xcc, 0x1d, 0xdc, 0x31, 
+0x37, 0x7a, 0x08, 0x48, 0x00, 0x00, 0xcc, 0xd2, 
+0xee, 0x05, 0x68, 0xad, 0xae, 0xb1, 0xeb, 0xf9, 
+0x03, 0x5a, 0xab, 0x6b, 0x0c, 0xc5, 0x88, 0x87, 
+0x50, 0x3e, 0xdb, 0x4a, 0x6b, 0xad, 0xae, 0xb1, 
+0x33, 0xc6, 0x24, 0xc8, 0x3c, 0xff, 0xe0, 0x58, 
+0xa1, 0x5a, 0xdf, 0x84, 0x01, 0x53, 0x03, 0x81, 
+0xe2, 0x24, 0xbf, 0x6c, 0x3f, 0xe7, 0xd0, 0xd4, 
+0x10, 0x8b, 0x17, 0xde, 0x02, 0xe0, 0xd0, 0xd4, 
+0x10, 0x2f, 0xdb, 0xcf, 0x59, 0x9c, 0x7f, 0xba, 
+0x61, 0xc1, 0x43, 0x53, 0x43, 0x00, 0x2c, 0xce, 
+0x3f, 0x2d, 0xe3, 0x4e, 0x27, 0x76, 0x69, 0x27, 
+0x69, 0xa4, 0x74, 0xbc, 0x1c, 0x80, 0x88, 0x74, 
+0x19, 0x50, 0xd3, 0xd2, 0x9b, 0xde, 0xf8, 0x7c, 
+0x81, 0xc5, 0xaf, 0x26, 0x19, 0xd9, 0xbf, 0x8d, 
+0x91, 0xfd, 0xdb, 0xd2, 0xfc, 0xe3, 0xd1, 0xa4, 
+0x85, 0xf1, 0x34, 0x0e, 0x7c, 0xf2, 0x03, 0x83, 
+0x83, 0x83, 0x5c, 0xfb, 0xf2, 0x75, 0x1e, 0xae, 
+0xb6, 0x79, 0x74, 0xab, 0x0d, 0xc0, 0xc3, 0xd5, 
+0x76, 0x0e, 0xa0, 0x93, 0xf2, 0xed, 0x9e, 0x8e, 
+0xa9, 0x4b, 0x69, 0xb8, 0xbe, 0x29, 0x03, 0xe5, 
+0xd9, 0x74, 0x40, 0xd8, 0xfd, 0xd9, 0x3c, 0x0f, 
+0x2e, 0x4d, 0x95, 0x2f, 0x8e, 0x8c, 0x53, 0x39, 
+0x15, 0x77, 0xbe, 0x9f, 0x66, 0x15, 0x38, 0x30, 
+0xfe, 0x26, 0x78, 0x9a, 0x2f, 0x3e, 0x1f, 0x19, 
+0x07, 0x7e, 0x3e, 0x55, 0xbe, 0xfb, 0xec, 0xe8, 
+0xe5, 0x64, 0xba, 0x9e, 0xfe, 0xbb, 0x68, 0xee, 
+0xde, 0xa3, 0x01, 0xb5, 0x8a, 0x3a, 0xdd, 0xe1, 
+0xb5, 0xd3, 0x73, 0x38, 0xb0, 0x73, 0xfe, 0x0c, 
+0x63, 0x13, 0x07, 0x69, 0x3f, 0x5b, 0xee, 0xaa, 
+0x7c, 0xe2, 0xe0, 0xd6, 0xf4, 0x70, 0xfd, 0x77, 
+0xa2, 0x2a, 0x02, 0xb8, 0x08, 0xeb, 0xcd, 0xba, 
+0x92, 0x82, 0xde, 0xfc, 0x78, 0xa1, 0xda, 0x7c, 
+0xfe, 0xcf, 0xe6, 0xf5, 0xbe, 0x8b, 0x2c, 0xff, 
+0xf6, 0x84, 0x5d, 0x6f, 0xef, 0xd8, 0x30, 0xae, 
+0x35, 0xb7, 0xf3, 0xc7, 0xfb, 0x5f, 0x23, 0x51, 
+0x91, 0x90, 0x67, 0x18, 0xa1, 0x57, 0x6c, 0x95, 
+0x53, 0x50, 0xd8, 0x2b, 0x6e, 0xa4, 0x8c, 0xa4, 
+0xe3, 0xf3, 0xd7, 0xa3, 0x07, 0x64, 0xc3, 0x03, 
+0xd5, 0x45, 0xf7, 0x7d, 0xd7, 0xfd, 0xb1, 0x1b, 
+0xee, 0xf6, 0x19, 0x4b, 0xa3, 0xb6, 0x7c, 0x53, 
+0x22, 0x04, 0x20, 0x64, 0xd9, 0x3a, 0x06, 0xd4, 
+0x92, 0xbd, 0xf6, 0x38, 0x9b, 0xe3, 0xa5, 0x36, 
+0x0a, 0x71, 0x95, 0x6d, 0x1f, 0xdc, 0xbe, 0x7d, 
+0x7b, 0xcb, 0xd5, 0x6f, 0x61, 0x61, 0x81, 0x93, 
+0xa7, 0x4e, 0x22, 0x08, 0x2e, 0x52, 0x02, 0x08, 
+0x5d, 0x06, 0x14, 0x2d, 0xba, 0xe6, 0x63, 0x4c, 
+0x95, 0xed, 0xf1, 0xd1, 0x6f, 0x78, 0x74, 0xab, 
+0x5d, 0xe9, 0x00, 0x8d, 0x46, 0x83, 0x95, 0x95, 
+0x95, 0x4d, 0xe3, 0x46, 0xa3, 0x01, 0xc0, 0xca, 
+0xca, 0x4a, 0x19, 0xab, 0x6a, 0x8f, 0x2f, 0xf4, 
+0x4b, 0x41, 0x7e, 0x76, 0x2d, 0x8f, 0xd5, 0x0d, 
+0x57, 0x83, 0xe3, 0x57, 0xd1, 0xa8, 0x44, 0x8d, 
+0xc4, 0x4e, 0x64, 0x18, 0xb8, 0xbb, 0xb4, 0x44, 
+0xeb, 0xfe, 0x7d, 0x46, 0x47, 0x47, 0x2b, 0xf1, 
+0xf9, 0x73, 0xe7, 0x98, 0x99, 0x99, 0x01, 0x60, 
+0x6a, 0x72, 0x92, 0xbb, 0x4b, 0x4b, 0xa5, 0xd0, 
+0x11, 0xa7, 0x14, 0xc4, 0xa6, 0x00, 0x8a, 0x8a, 
+0xd5, 0x53, 0xd1, 0x34, 0xaf, 0x6a, 0x25, 0x43, 
+0x9e, 0x3c, 0xe3, 0xe2, 0xec, 0x2c, 0x00, 0xef, 
+0xac, 0x8b, 0xef, 0xb7, 0x5a, 0x5c, 0x9c, 0x9d, 
+0x65, 0x7a, 0x7a, 0xba, 0x7c, 0x5e, 0xaf, 0xd7, 
+0x51, 0x4b, 0x85, 0x4e, 0x82, 0xf7, 0x07, 0x60, 
+0x56, 0x38, 0x57, 0x01, 0xc0, 0xbb, 0x9e, 0x6e, 
+0x86, 0xab, 0xe3, 0xea, 0x5c, 0xb9, 0x72, 0x85, 
+0x7a, 0xbd, 0x5e, 0xe6, 0xf7, 0x55, 0x71, 0xc9, 
+0x40, 0x10, 0xc4, 0x65, 0x23, 0x80, 0xf2, 0xc2, 
+0x60, 0x45, 0xc1, 0x30, 0xd4, 0x7d, 0x43, 0x4d, 
+0x37, 0x12, 0xd0, 0x89, 0x89, 0xf7, 0xe8, 0x74, 
+0x22, 0xaa, 0xca, 0xc0, 0x40, 0x8d, 0x2c, 0xeb, 
+0xde, 0x90, 0x8a, 0x1e, 0x42, 0x20, 0x0b, 0x01, 
+0xc9, 0x6f, 0x57, 0x66, 0x0a, 0x04, 0x82, 0x54, 
+0x01, 0xbc, 0x10, 0x91, 0xed, 0xe6, 0x2e, 0x45, 
+0xed, 0xee, 0xd5, 0x82, 0x97, 0xda, 0xc8, 0x01, 
+0x6a, 0xba, 0xf9, 0x14, 0xde, 0x8e, 0x14, 0xf5, 
+0x25, 0x01, 0x0f, 0x16, 0xb0, 0xe0, 0x88, 0x59, 
+0xee, 0x7a, 0x46, 0x48, 0x43, 0x0e, 0xc2, 0x2a, 
+0x1a, 0x10, 0xe0, 0xf1, 0xdc, 0xdc, 0xdc, 0x0e, 
+0xe9, 0xde, 0x28, 0x1d, 0x10, 0xef, 0x1a, 0xb6, 
+0xf4, 0xbb, 0x90, 0xf6, 0x7b, 0xb6, 0xd5, 0xd6, 
+0x6c, 0x36, 0xa9, 0x01, 0xc3, 0xcb, 0xcb, 0xcb, 
+0xbd, 0xd7, 0x72, 0x59, 0xbf, 0xf0, 0x7f, 0xd0, 
+0x3a, 0x40, 0xfb, 0xc4, 0x89, 0x13, 0x83, 0xff, 
+0x00, 0xd2, 0x81, 0x69, 0x4d, 0x17, 0x7c, 0x45, 
+0x7c, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 
+0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/cikey.png b/source/bitmaps/icons/cikey.png
new file mode 100644 (file)
index 0000000..29f177f
Binary files /dev/null and b/source/bitmaps/icons/cikey.png differ
diff --git a/source/bitmaps/icons/cilog.cpp b/source/bitmaps/icons/cilog.cpp
new file mode 100644 (file)
index 0000000..b640ff5
--- /dev/null
@@ -0,0 +1,157 @@
+#include <iostream>
+
+#ifndef ICONS_CILOG_CPP
+#define ICONS_CILOG_CPP
+
+static unsigned char icons_cilog_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, 
+0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x23, 0x0a, 0x6d, 
+0x35, 0x17, 0xf2, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x00, 
+0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 
+0xc1, 0x6b, 0x5d, 0x45, 0x14, 0xc6, 0x7f, 0x67, 
+0xee, 0x8d, 0x82, 0xd5, 0x45, 0x48, 0x79, 0x58, 
+0x5c, 0x74, 0x17, 0x71, 0x25, 0x54, 0x37, 0x11, 
+0x52, 0xb1, 0x20, 0x41, 0x2d, 0x59, 0x04, 0xb2, 
+0xaa, 0x1b, 0x11, 0xfa, 0x07, 0x14, 0xb2, 0x73, 
+0x25, 0x2e, 0x5c, 0x85, 0xba, 0x51, 0x28, 0x8a, 
+0xab, 0xea, 0xc2, 0x9d, 0x96, 0x82, 0x9b, 0x6c, 
+0xde, 0x4a, 0xd0, 0x6c, 0xe5, 0x41, 0x15, 0xde, 
+0x22, 0x2f, 0x8f, 0xe0, 0x25, 0xad, 0xad, 0x84, 
+0xf0, 0xe6, 0x9c, 0xe3, 0x62, 0x66, 0xee, 0xbb, 
+0x2f, 0x79, 0x29, 0x46, 0x10, 0x07, 0x86, 0x3b, 
+0x73, 0xe7, 0xde, 0x39, 0xdf, 0x9c, 0xf3, 0x9d, 
+0xef, 0x8c, 0x90, 0x9a, 0xf3, 0xff, 0x34, 0x11, 
+0xc0, 0x36, 0x36, 0x36, 0xc4, 0xcc, 0x66, 0x56, 
+0x54, 0xf5, 0x8c, 0x3f, 0x64, 0xee, 0xdc, 0xdd, 
+0x4f, 0xad, 0x3d, 0xad, 0x6d, 0x6d, 0x6d, 0xb1, 
+0xbf, 0xbf, 0x4f, 0x0d, 0xc8, 0x64, 0x32, 0xe1, 
+0xb3, 0xdb, 0xb7, 0x91, 0x20, 0x88, 0x08, 0x22, 
+0x81, 0x10, 0x72, 0x97, 0x40, 0xa8, 0x02, 0x21, 
+0x54, 0x54, 0x75, 0xa0, 0xaa, 0x6a, 0xaa, 0x10, 
+0xa8, 0xeb, 0x9a, 0xba, 0xae, 0xa9, 0xaa, 0x8a, 
+0x49, 0x8c, 0x68, 0x8c, 0x68, 0x54, 0xd4, 0x22, 
+0x51, 0x15, 0x53, 0x43, 0xd5, 0x70, 0x33, 0xd4, 
+0x0c, 0x73, 0xc5, 0xcd, 0x71, 0x73, 0x0c, 0x67, 
+0x7f, 0x34, 0x02, 0xa0, 0x2e, 0xe8, 0xd5, 0x1c, 
+0x01, 0x82, 0x80, 0x04, 0x03, 0xcb, 0x71, 0x09, 
+0x0e, 0x0e, 0xe2, 0x82, 0x9b, 0xe0, 0x62, 0xb8, 
+0x08, 0xee, 0x8e, 0x03, 0xee, 0x29, 0x82, 0x8e, 
+0x63, 0x18, 0x66, 0x8e, 0xa9, 0x63, 0x66, 0xa9, 
+0x7b, 0x7a, 0xba, 0x19, 0xe6, 0x9e, 0xfe, 0xeb, 
+0x78, 0xbb, 0x06, 0x88, 0x31, 0x62, 0x66, 0x04, 
+0xc0, 0x24, 0x10, 0x5c, 0xb0, 0x00, 0xe2, 0x0e, 
+0x54, 0x80, 0x21, 0x08, 0x48, 0x72, 0x79, 0x08, 
+0x01, 0xf2, 0x66, 0x22, 0x89, 0x41, 0xed, 0xe9, 
+0xcc, 0xf0, 0x6c, 0x34, 0x75, 0x6d, 0xc7, 0xee, 
+0x8e, 0x59, 0x02, 0x3b, 0x03, 0x40, 0x44, 0x70, 
+0x57, 0xcc, 0x02, 0x88, 0xf1, 0xf3, 0xee, 0xee, 
+0xbf, 0x62, 0xd4, 0xda, 0xda, 0x1a, 0x9a, 0x5d, 
+0xaf, 0x39, 0x0c, 0xb3, 0x5e, 0x48, 0xee, 0x77, 
+0x3f, 0xe1, 0x81, 0x82, 0x4c, 0x30, 0x10, 0x61, 
+0x38, 0x1c, 0xb2, 0xb2, 0xb2, 0x72, 0x2e, 0xe3, 
+0xa3, 0xd1, 0x08, 0xd5, 0x74, 0x62, 0xd5, 0xdc, 
+0x4d, 0xd3, 0x89, 0x2d, 0x85, 0xc6, 0xdd, 0x72, 
+0xe8, 0xe6, 0x78, 0x40, 0x55, 0x13, 0x01, 0x99, 
+0x32, 0x79, 0x75, 0x75, 0x95, 0x7e, 0xbf, 0xdf, 
+0x8e, 0x4b, 0xeb, 0xf7, 0xfb, 0xed, 0xbc, 0xac, 
+0xa7, 0xcc, 0x89, 0xc4, 0xa8, 0x89, 0x90, 0x16, 
+0x3b, 0x1e, 0x70, 0xcc, 0x1d, 0xdc, 0x31, 0x37, 
+0x3a, 0x0e, 0x48, 0x00, 0x00, 0xcc, 0xd2, 0xe9, 
+0x8b, 0xf9, 0xaa, 0xaa, 0x18, 0x0c, 0x06, 0x54, 
+0x55, 0x05, 0xc0, 0x60, 0x30, 0xa0, 0x69, 0x1a, 
+0x96, 0x96, 0x96, 0xda, 0xb5, 0xa6, 0x69, 0xe8, 
+0xf5, 0x7a, 0x34, 0x4d, 0x03, 0xc0, 0x64, 0x32, 
+0x21, 0xc6, 0x49, 0xce, 0x82, 0x74, 0xfa, 0x12, 
+0x7f, 0x70, 0xac, 0xb0, 0xd6, 0xe7, 0x78, 0xc0, 
+0xd4, 0xc8, 0x3c, 0x03, 0x60, 0x6f, 0x6f, 0xaf, 
+0xfd, 0xa8, 0x3b, 0x6e, 0x9a, 0xe6, 0xcc, 0x79, 
+0xfc, 0x66, 0x7d, 0xf6, 0x54, 0xb9, 0x3d, 0x5a, 
+0xfb, 0x0a, 0x77, 0x99, 0x2a, 0x5e, 0x06, 0x20, 
+0x22, 0xd3, 0x6f, 0xd5, 0xb4, 0xa3, 0x4d, 0x30, 
+0x1e, 0x8f, 0x19, 0x8f, 0xc7, 0xed, 0x26, 0xdd, 
+0xf1, 0xbc, 0x79, 0xaf, 0xd7, 0xe3, 0xf2, 0xea, 
+0xfb, 0x73, 0xf9, 0x31, 0xfc, 0xf1, 0x43, 0x9a, 
+0x6b, 0x77, 0xda, 0xbd, 0x7d, 0xae, 0x07, 0xda, 
+0xdc, 0x4c, 0x8b, 0x47, 0x47, 0x47, 0xe7, 0x22, 
+0xe1, 0x70, 0x38, 0x84, 0x0b, 0x0f, 0xd2, 0xe4, 
+0xfa, 0x1d, 0xb8, 0x77, 0xb3, 0x5d, 0xbb, 0xfc, 
+0xca, 0x6b, 0xb0, 0x73, 0x93, 0x83, 0x37, 0xbf, 
+0x80, 0x0e, 0xc7, 0xdc, 0xbd, 0xc3, 0x01, 0xb5, 
+0x96, 0x9d, 0x57, 0xaf, 0x5e, 0xed, 0x08, 0x4c, 
+0x89, 0x1b, 0x29, 0xbf, 0xdd, 0x79, 0xf0, 0xf9, 
+0x3a, 0x1f, 0xac, 0xbf, 0x31, 0x03, 0x60, 0x70, 
+0x65, 0x1b, 0x76, 0x6f, 0x31, 0xb8, 0xb2, 0xcd, 
+0xcb, 0xdf, 0xbe, 0x37, 0x17, 0x64, 0x34, 0xe3, 
+0xa4, 0x58, 0xcf, 0x84, 0xa0, 0x1b, 0x1f, 0x2f, 
+0xac, 0xcd, 0x63, 0xcf, 0x64, 0x2a, 0x35, 0xe2, 
+0xf1, 0xde, 0xaf, 0x33, 0x1b, 0x3d, 0x59, 0x7e, 
+0xc2, 0x2f, 0xcb, 0x1f, 0xb3, 0xfc, 0xc3, 0x3b, 
+0x3c, 0x9e, 0x6b, 0x7e, 0x11, 0xd3, 0x98, 0xb3, 
+0x6c, 0x4a, 0xb6, 0x99, 0x2c, 0x28, 0xf2, 0x8a, 
+0x1b, 0x29, 0x22, 0x29, 0x7d, 0x5a, 0xe3, 0x66, 
+0x68, 0x8c, 0x00, 0xfc, 0x36, 0x3a, 0x9c, 0xd9, 
+0xfe, 0xf0, 0xf0, 0x90, 0x8b, 0xf7, 0x37, 0xf9, 
+0xe9, 0xdd, 0xef, 0xb8, 0x78, 0x7f, 0xf3, 0xb4, 
+0xf9, 0x4b, 0x8b, 0xa8, 0xa6, 0x4c, 0x0b, 0x40, 
+0xc8, 0xd9, 0x35, 0xf5, 0x80, 0x5a, 0x92, 0x57, 
+0x8a, 0x5e, 0x67, 0x7d, 0x2f, 0x4a, 0xa6, 0x86, 
+0x46, 0x25, 0x6a, 0x01, 0xf0, 0x70, 0xc6, 0xc0, 
+0xf1, 0xc1, 0x01, 0x8f, 0x46, 0x0f, 0xe1, 0xcb, 
+0xb7, 0x39, 0x58, 0xbf, 0xcb, 0xb3, 0xdf, 0xdf, 
+0x98, 0x59, 0x7f, 0xfd, 0x52, 0xf2, 0xb2, 0x20, 
+0xb8, 0xc8, 0x69, 0x00, 0x66, 0xda, 0xaa, 0x94, 
+0xdb, 0xb4, 0x68, 0xa8, 0x3b, 0x6e, 0x9a, 0xe4, 
+0x35, 0xa6, 0x4a, 0xf7, 0xfc, 0xf5, 0x6d, 0xfe, 
+0xbc, 0x77, 0x8b, 0xf1, 0x1f, 0x1d, 0x10, 0x5f, 
+0xdf, 0x98, 0x3f, 0x2e, 0x00, 0x72, 0x89, 0x0f, 
+0x12, 0x66, 0xca, 0xf6, 0xe9, 0x10, 0x64, 0xc9, 
+0xb4, 0x3c, 0x56, 0x37, 0x5c, 0x0d, 0x2d, 0x20, 
+0x54, 0x89, 0xb6, 0xc0, 0x85, 0x6b, 0x1f, 0xf1, 
+0xe2, 0xce, 0x27, 0xff, 0x38, 0x4b, 0x76, 0x76, 
+0x7f, 0xe7, 0xa5, 0x57, 0x0d, 0xc4, 0x41, 0xc2, 
+0x53, 0x00, 0x94, 0x8a, 0xd5, 0xa9, 0x68, 0x9a, 
+0xab, 0x9a, 0x96, 0x8e, 0x71, 0x5c, 0x2d, 0x32, 
+0x79, 0xeb, 0x53, 0x34, 0x2a, 0x0b, 0x75, 0xcd, 
+0xc2, 0xc2, 0x33, 0x54, 0x0b, 0x15, 0x75, 0x95, 
+0xef, 0x09, 0xf9, 0xfe, 0x10, 0x42, 0x85, 0x88, 
+0x50, 0x85, 0x0a, 0xb5, 0x54, 0xca, 0x25, 0xf8, 
+0xd9, 0x00, 0xcc, 0x2c, 0x87, 0xa1, 0x00, 0xf0, 
+0xa9, 0xa6, 0x9b, 0xe1, 0xea, 0xa9, 0xbb, 0xa7, 
+0x84, 0x49, 0x19, 0x8a, 0xb9, 0x11, 0x34, 0x60, 
+0x92, 0xf8, 0x22, 0x08, 0x68, 0x5a, 0x0b, 0xf9, 
+0xc4, 0xe2, 0x01, 0x82, 0x20, 0x3e, 0x27, 0x04, 
+0xed, 0x85, 0xc1, 0x4a, 0xc1, 0x48, 0xf1, 0x3f, 
+0x59, 0xd3, 0x0d, 0xcb, 0x4a, 0xe6, 0x2d, 0x69, 
+0x29, 0xc4, 0xcd, 0x4f, 0x73, 0x4b, 0x46, 0x92, 
+0xba, 0x63, 0xa1, 0x88, 0xac, 0x03, 0x81, 0x70, 
+0x82, 0x03, 0x7f, 0x89, 0xc8, 0x73, 0xe6, 0x2e, 
+0x85, 0xf1, 0x5d, 0x2e, 0x78, 0xcb, 0x8d, 0x0c, 
+0x50, 0xd3, 0xcd, 0xc7, 0x2d, 0xbb, 0x51, 0x4a, 
+0x7d, 0x49, 0x86, 0x83, 0x05, 0x2c, 0x38, 0x62, 
+0x96, 0x55, 0xcf, 0x08, 0xe9, 0x41, 0x08, 0x21, 
+0x17, 0xbd, 0x29, 0x07, 0x04, 0x68, 0xfa, 0xfd, 
+0xfe, 0xa2, 0x4c, 0xa9, 0xe9, 0x80, 0xf8, 0x54, 
+0xb0, 0xe5, 0xac, 0x0b, 0xe9, 0x59, 0xef, 0xce, 
+0x73, 0x87, 0xa8, 0x81, 0xa5, 0xf1, 0x78, 0xdc, 
+0xbd, 0x96, 0xcb, 0x49, 0xc3, 0xff, 0x41, 0x9b, 
+0x00, 0xc7, 0x9b, 0x9b, 0x9b, 0x2f, 0xfc, 0x0d, 
+0x48, 0x1f, 0x6f, 0x41, 0x3f, 0x6c, 0xcb, 0xb1, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/cilog.png b/source/bitmaps/icons/cilog.png
new file mode 100644 (file)
index 0000000..905fe1a
Binary files /dev/null and b/source/bitmaps/icons/cilog.png differ
diff --git a/source/bitmaps/icons/cipto.cpp b/source/bitmaps/icons/cipto.cpp
new file mode 100644 (file)
index 0000000..08bd865
--- /dev/null
@@ -0,0 +1,167 @@
+#include <iostream>
+
+#ifndef ICONS_CIPTO_CPP
+#define ICONS_CIPTO_CPP
+
+static unsigned char icons_cipto_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, 
+0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x22, 0x33, 0x2b, 
+0x2b, 0xae, 0xbb, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x52, 
+0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 
+0xcf, 0x6f, 0x55, 0x45, 0x14, 0xc7, 0x3f, 0x67, 
+0xee, 0x6b, 0x42, 0x4c, 0x8a, 0xbf, 0x12, 0xa2, 
+0x16, 0x6a, 0x23, 0xa0, 0x21, 0xc4, 0x36, 0xc6, 
+0x04, 0xd9, 0x18, 0x45, 0x0d, 0xa2, 0x08, 0x36, 
+0x90, 0x26, 0xf6, 0x3f, 0x30, 0x41, 0xdc, 0x75, 
+0xc1, 0x92, 0x8d, 0x1b, 0x36, 0xb0, 0x30, 0x6e, 
+0x88, 0x1b, 0x62, 0xea, 0xc6, 0x68, 0x8c, 0x48, 
+0x53, 0x15, 0x35, 0x2c, 0x8c, 0x75, 0x41, 0x2c, 
+0x69, 0x21, 0x85, 0x47, 0x4b, 0x2d, 0xaf, 0xed, 
+0x82, 0x04, 0x6c, 0xad, 0x2d, 0xef, 0x9e, 0x73, 
+0x5c, 0xcc, 0xbd, 0xf7, 0xbd, 0xdb, 0xd7, 0x22, 
+0x9a, 0x18, 0x27, 0x99, 0xdc, 0xb9, 0x77, 0xe6, 
+0xce, 0x7c, 0xe7, 0xfb, 0x3d, 0xbf, 0x84, 0xd8, 
+0x9c, 0xff, 0xa7, 0x89, 0x00, 0x76, 0xe8, 0xd0, 
+0x21, 0x31, 0xb3, 0xd2, 0x8c, 0xaa, 0xae, 0xf3, 
+0x87, 0xac, 0xf9, 0xee, 0xee, 0x2d, 0x73, 0xf7, 
+0x6a, 0x03, 0x03, 0x03, 0xcc, 0xce, 0xce, 0x52, 
+0x01, 0xa4, 0x5e, 0xaf, 0x73, 0xea, 0xe4, 0x49, 
+0x24, 0x08, 0x22, 0x82, 0x48, 0x20, 0x84, 0xac, 
+0x4b, 0x20, 0x24, 0x81, 0x10, 0x12, 0x92, 0x4a, 
+0x20, 0x49, 0x2a, 0x24, 0x21, 0x50, 0xa9, 0x54, 
+0xa8, 0x54, 0x2a, 0x24, 0x49, 0x42, 0x3d, 0x4d, 
+0xd1, 0x34, 0x45, 0x53, 0x45, 0x2d, 0x25, 0x55, 
+0xc5, 0xd4, 0x50, 0x35, 0xdc, 0x0c, 0x35, 0xc3, 
+0x5c, 0x71, 0x73, 0xdc, 0x1c, 0xc3, 0x99, 0xad, 
+0xd5, 0x00, 0xa8, 0xe4, 0xe8, 0xd5, 0x1c, 0x01, 
+0x82, 0x80, 0x04, 0x03, 0xcb, 0x74, 0x09, 0x0e, 
+0x0e, 0xe2, 0x82, 0x9b, 0xe0, 0x62, 0xb8, 0x08, 
+0xee, 0x8e, 0x03, 0xee, 0x51, 0x41, 0xc7, 0x31, 
+0x0c, 0x33, 0xc7, 0xd4, 0x31, 0xb3, 0xd8, 0x3d, 
+0x3e, 0xdd, 0x0c, 0x73, 0x8f, 0xff, 0x35, 0xb1, 
+0x5d, 0x01, 0x48, 0xd3, 0x14, 0x33, 0x23, 0x00, 
+0x26, 0x81, 0xe0, 0xc2, 0xdc, 0x37, 0xbd, 0xff, 
+0x5a, 0xd8, 0xa7, 0x0e, 0x7f, 0xdb, 0x00, 0x60, 
+0x5a, 0x8c, 0xdd, 0x1d, 0xb3, 0x08, 0xb6, 0x04, 
+0x40, 0x44, 0x70, 0x57, 0xcc, 0x02, 0x88, 0x71, 
+0xeb, 0x7c, 0x1f, 0x00, 0xcf, 0x3e, 0x09, 0x97, 
+0x6e, 0x50, 0x8c, 0xd7, 0x6b, 0xcd, 0x6b, 0x2e, 
+0xdd, 0x80, 0xeb, 0x9f, 0xbd, 0x46, 0xc7, 0x5b, 
+0x67, 0x31, 0x5d, 0xcd, 0x42, 0xa4, 0xdf, 0x7d, 
+0x15, 0x03, 0x39, 0x32, 0xc1, 0x32, 0xbb, 0x8c, 
+0x9b, 0x7d, 0xb9, 0xef, 0xeb, 0x62, 0xe1, 0xe4, 
+0x7d, 0xdc, 0x7c, 0x12, 0x38, 0x38, 0xf4, 0x26, 
+0x97, 0x6e, 0x44, 0x23, 0x56, 0xd3, 0x78, 0x63, 
+0x8b, 0xd2, 0xb8, 0x5b, 0x26, 0xdd, 0x1a, 0x0c, 
+0xa8, 0x6a, 0x34, 0x40, 0xa4, 0xb8, 0xd5, 0x75, 
+0x96, 0x5a, 0x0e, 0x39, 0x76, 0x73, 0x08, 0x80, 
+0x91, 0xaf, 0x4e, 0xaf, 0xcd, 0x46, 0xf6, 0x9c, 
+0x3b, 0x77, 0xb0, 0xf4, 0xbd, 0xfd, 0xa5, 0x4f, 
+0xc1, 0x1d, 0x73, 0xa3, 0x89, 0x00, 0x42, 0x3e, 
+0xb0, 0xcc, 0x5a, 0xd5, 0xb4, 0x60, 0xa0, 0xca, 
+0x52, 0xa9, 0x1f, 0xbb, 0x39, 0x04, 0x8f, 0xec, 
+0x2e, 0x0e, 0xcf, 0x65, 0x69, 0x7e, 0xae, 0xf5, 
+0x0d, 0x60, 0xe1, 0xc7, 0x77, 0x0a, 0xef, 0x70, 
+0xd3, 0x56, 0x06, 0x4c, 0x0d, 0x04, 0xa4, 0x49, 
+0xd7, 0x31, 0x16, 0xd6, 0xa5, 0xbb, 0x59, 0xa2, 
+0xc9, 0x35, 0x64, 0x9a, 0x5c, 0x43, 0x16, 0x53, 
+0x8d, 0xe4, 0x47, 0xd7, 0x41, 0x44, 0x22, 0x00, 
+0xa0, 0xb8, 0x79, 0xb3, 0x0d, 0x4c, 0xb3, 0x5c, 
+0x3a, 0xb4, 0xa3, 0x63, 0x07, 0x37, 0x7f, 0x9f, 
+0x59, 0x53, 0xa2, 0x73, 0x3d, 0xaf, 0x94, 0xd6, 
+0xbe, 0xf1, 0xeb, 0xf9, 0x16, 0x23, 0xcd, 0x83, 
+0x9b, 0xbb, 0x97, 0x25, 0x10, 0x91, 0x86, 0xdb, 
+0x68, 0x5a, 0x4c, 0x26, 0x48, 0xa9, 0xef, 0x3e, 
+0xf2, 0x2a, 0x87, 0x8f, 0xf5, 0xb6, 0x48, 0xd4, 
+0x7c, 0xf8, 0x89, 0xde, 0x3d, 0x05, 0xa0, 0x7c, 
+0x3e, 0x97, 0x21, 0x0f, 0x56, 0xa6, 0x56, 0x00, 
+0x29, 0x18, 0x30, 0xb5, 0xc2, 0x3a, 0x65, 0xb1, 
+0xca, 0xe8, 0x18, 0xd4, 0x3a, 0x27, 0x8a, 0x8d, 
+0xdf, 0xfe, 0xf0, 0x5d, 0xc6, 0x2f, 0x5f, 0x8b, 
+0x2f, 0xdd, 0x65, 0x89, 0xda, 0x56, 0x1d, 0x7e, 
+0xa2, 0x77, 0x0f, 0x03, 0x5f, 0x7c, 0x5f, 0xcc, 
+0xe7, 0x0c, 0xa4, 0x66, 0xac, 0x0e, 0xd6, 0xa1, 
+0x59, 0x02, 0x35, 0x2b, 0x68, 0xea, 0xde, 0xb9, 
+0x95, 0x30, 0x3a, 0x55, 0x74, 0x80, 0xf9, 0xf9, 
+0x1a, 0xf3, 0xf3, 0xb5, 0x92, 0x44, 0x6d, 0x3d, 
+0xfd, 0xeb, 0xda, 0x49, 0x5b, 0x4f, 0x3f, 0xd3, 
+0x2c, 0x17, 0x0c, 0x98, 0xa6, 0x98, 0x36, 0x18, 
+0x68, 0xf1, 0x02, 0xd3, 0x08, 0x62, 0xf9, 0xae, 
+0x31, 0x72, 0xf1, 0x6a, 0xcb, 0x86, 0x4b, 0x0b, 
+0x93, 0x2c, 0x2d, 0x4c, 0xe2, 0x8b, 0x55, 0x46, 
+0xc7, 0xaa, 0x24, 0xfc, 0x7d, 0xf2, 0x49, 0x10, 
+0x46, 0xc7, 0xaa, 0xf8, 0x62, 0x15, 0x55, 0x23, 
+0xcd, 0xa2, 0x63, 0xc9, 0x0b, 0xa2, 0x81, 0x18, 
+0x64, 0x41, 0xe2, 0xcf, 0xbb, 0xc2, 0xcb, 0x2f, 
+0x6c, 0x83, 0xdb, 0xe5, 0xcd, 0x7c, 0xe5, 0x72, 
+0x31, 0xee, 0xde, 0xb9, 0x95, 0xda, 0xf8, 0x04, 
+0x5d, 0xd9, 0xfb, 0xd4, 0x6f, 0xcb, 0x3c, 0xf6, 
+0x5d, 0x15, 0x80, 0x17, 0xc7, 0x27, 0xe8, 0xda, 
+0xb2, 0x01, 0x80, 0xda, 0xf8, 0x04, 0xdd, 0x3b, 
+0xb7, 0x32, 0x3a, 0x56, 0x45, 0x4d, 0x11, 0x04, 
+0x17, 0x21, 0x24, 0x49, 0x19, 0x80, 0x99, 0x16, 
+0x51, 0x6a, 0xf6, 0xce, 0x06, 0x06, 0x87, 0x67, 
+0xb8, 0xb3, 0x77, 0x88, 0xc1, 0xe1, 0x68, 0xf5, 
+0xfd, 0x07, 0x86, 0xe0, 0x40, 0x5c, 0x3b, 0x72, 
+0x31, 0x32, 0x14, 0x6e, 0x4f, 0x71, 0xa6, 0xbd, 
+0x93, 0x95, 0xe9, 0x69, 0x8e, 0x74, 0x76, 0xb1, 
+0x32, 0x3d, 0x0d, 0xc0, 0x33, 0x9d, 0x5d, 0xac, 
+0xf8, 0x5c, 0xa4, 0x78, 0x74, 0x8a, 0x91, 0xc9, 
+0xab, 0x85, 0x17, 0x04, 0x09, 0xa5, 0xb4, 0x5d, 
+0x69, 0x96, 0x20, 0x66, 0x2a, 0x67, 0xf3, 0xeb, 
+0x9f, 0x70, 0xe5, 0xec, 0x7b, 0x7c, 0xf4, 0x79, 
+0xad, 0x50, 0x29, 0x8e, 0x63, 0xdb, 0xf1, 0x44, 
+0x99, 0xa1, 0xe3, 0x3d, 0xcf, 0xb3, 0x09, 0x38, 
+0xbe, 0xa5, 0x03, 0x80, 0x4d, 0xc0, 0x6f, 0xd3, 
+0x73, 0x9c, 0x69, 0xef, 0x64, 0x3b, 0xb0, 0xeb, 
+0xb9, 0xed, 0xfc, 0xf0, 0xf3, 0x35, 0x12, 0x35, 
+0x10, 0x07, 0x09, 0xf7, 0x00, 0x90, 0xe5, 0x85, 
+0x6d, 0xfb, 0x4e, 0x15, 0xae, 0xa9, 0x99, 0x6e, 
+0x9a, 0x2a, 0xa9, 0xa6, 0xcc, 0xfe, 0xf2, 0x7e, 
+0x83, 0xa1, 0x5d, 0x33, 0x9c, 0xde, 0xbb, 0xc8, 
+0xe0, 0xf0, 0x0c, 0xfd, 0x7b, 0x37, 0x03, 0xc4, 
+0xf1, 0x91, 0xcd, 0x0c, 0x0e, 0x5f, 0xe1, 0xce, 
+0x43, 0x8b, 0x19, 0x8b, 0x1b, 0x78, 0xdc, 0x62, 
+0x2a, 0x97, 0xd0, 0x88, 0x03, 0x02, 0xf8, 0xfe, 
+0xfd, 0xfb, 0x39, 0x7a, 0xf4, 0x68, 0x76, 0x78, 
+0x74, 0x47, 0x2f, 0xd2, 0xa9, 0xa3, 0x9a, 0x01, 
+0xd0, 0x0c, 0x44, 0x9a, 0x72, 0xeb, 0xa7, 0x81, 
+0x7f, 0x94, 0xa2, 0x9f, 0x3e, 0xf0, 0x71, 0x56, 
+0xe8, 0xc4, 0xa2, 0x67, 0xe3, 0xc6, 0x8d, 0xd4, 
+0x6a, 0xb5, 0x06, 0x03, 0x45, 0xc1, 0x60, 0x79, 
+0xc2, 0x30, 0xd4, 0xbd, 0x25, 0xa7, 0x1b, 0x91, 
+0xa9, 0x07, 0x77, 0x7d, 0x40, 0xbd, 0x9e, 0xa2, 
+0xaa, 0xb4, 0xb5, 0x55, 0x48, 0x92, 0x46, 0x85, 
+0x94, 0xf7, 0x10, 0x02, 0x49, 0x08, 0x48, 0x08, 
+0x98, 0x19, 0x22, 0x0e, 0x04, 0xc2, 0x2a, 0x1b, 
+0xf8, 0x43, 0x44, 0x1e, 0x30, 0x77, 0xc9, 0x73, 
+0x77, 0x6e, 0x0b, 0x9e, 0x01, 0xc9, 0xab, 0x18, 
+0x73, 0xc7, 0x35, 0x56, 0x3e, 0x6e, 0x5e, 0x70, 
+0xe8, 0x9e, 0xa5, 0x74, 0x37, 0x82, 0x05, 0x2c, 
+0x38, 0x62, 0x96, 0x11, 0x6c, 0x84, 0xf8, 0x20, 
+0x64, 0x40, 0x9a, 0x6d, 0x40, 0x80, 0x5b, 0x17, 
+0x2e, 0x5c, 0x78, 0x58, 0x1a, 0xa6, 0xe9, 0x80, 
+0x78, 0x23, 0x60, 0xcb, 0x7a, 0x05, 0xe9, 0x7a, 
+0xdf, 0xee, 0xb7, 0xe5, 0x12, 0x3c, 0x3a, 0x37, 
+0x37, 0xd7, 0x5c, 0x96, 0xcb, 0xea, 0x83, 0xff, 
+0x83, 0x56, 0x07, 0x56, 0xfa, 0xfa, 0xfa, 0xda, 
+0xff, 0x02, 0x76, 0x39, 0x10, 0xa3, 0x8b, 0xbe, 
+0xdd, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 
+0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/cipto.png b/source/bitmaps/icons/cipto.png
new file mode 100644 (file)
index 0000000..4913953
Binary files /dev/null and b/source/bitmaps/icons/cipto.png differ
diff --git a/source/bitmaps/icons/cisnd.cpp b/source/bitmaps/icons/cisnd.cpp
new file mode 100644 (file)
index 0000000..5efb634
--- /dev/null
@@ -0,0 +1,185 @@
+#include <iostream>
+
+#ifndef ICONS_CISND_CPP
+#define ICONS_CISND_CPP
+
+static unsigned char icons_cisnd_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, 
+0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x23, 0x27, 0x28, 
+0xea, 0x4b, 0x87, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0xe0, 
+0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 
+0x5d, 0x88, 0x55, 0x55, 0x14, 0xc7, 0x7f, 0x6b, 
+0x9f, 0x33, 0x63, 0x93, 0x0e, 0x39, 0x58, 0xd3, 
+0xe4, 0x47, 0x69, 0x45, 0x18, 0xf6, 0x41, 0x85, 
+0x10, 0xf4, 0x10, 0x81, 0x4f, 0x41, 0x3d, 0x08, 
+0x16, 0x48, 0xf4, 0x22, 0x41, 0x10, 0x45, 0x5a, 
+0x3e, 0x45, 0x3e, 0xd4, 0x83, 0x64, 0x0f, 0x4d, 
+0x24, 0x11, 0x84, 0x3d, 0x15, 0x11, 0x41, 0xd0, 
+0x83, 0xf5, 0x18, 0xa4, 0x0f, 0x89, 0x14, 0x64, 
+0x52, 0x26, 0x98, 0xc6, 0x38, 0x5f, 0xce, 0xdc, 
+0xc6, 0xe1, 0x3a, 0x77, 0xe6, 0xce, 0xd9, 0x6b, 
+0xad, 0x1e, 0xf6, 0x39, 0xe7, 0xce, 0xf5, 0x6a, 
+0xf4, 0x12, 0x2d, 0xd8, 0xec, 0x7b, 0xce, 0xb9, 
+0x7b, 0xaf, 0xff, 0xfa, 0xaf, 0x4f, 0x21, 0x89, 
+0xf3, 0xff, 0x88, 0x08, 0x60, 0x3b, 0x77, 0xee, 
+0x14, 0x33, 0xeb, 0xfa, 0xa2, 0xaa, 0xd7, 0x39, 
+0x21, 0xd7, 0x7c, 0x76, 0xf7, 0x9e, 0x6f, 0xff, 
+0x24, 0xfb, 0xf7, 0xef, 0x67, 0x72, 0x72, 0x92, 
+0x1c, 0x90, 0xa2, 0x28, 0x78, 0x7f, 0x74, 0x14, 
+0x09, 0x82, 0x88, 0x20, 0x12, 0x08, 0xa1, 0x5c, 
+0x12, 0x08, 0x59, 0x20, 0x84, 0x8c, 0x2c, 0x0f, 
+0x64, 0x59, 0x4e, 0x16, 0x02, 0x79, 0x9e, 0x93, 
+0xe7, 0x39, 0x59, 0x96, 0x51, 0xc4, 0x88, 0xc6, 
+0x88, 0x46, 0x45, 0x2d, 0x12, 0x55, 0x31, 0x35, 
+0x54, 0x0d, 0x37, 0x43, 0xcd, 0x30, 0x57, 0xdc, 
+0x1c, 0x37, 0xc7, 0x70, 0x26, 0x27, 0x26, 0x00, 
+0xc8, 0x2b, 0xf4, 0x6a, 0x8e, 0x00, 0x41, 0x40, 
+0x82, 0x81, 0x95, 0x7e, 0x09, 0x0e, 0x0e, 0xe2, 
+0x82, 0x9b, 0xe0, 0x62, 0xb8, 0x08, 0xee, 0x8e, 
+0x03, 0xee, 0xc9, 0x83, 0x8e, 0x63, 0x18, 0x66, 
+0x8e, 0xa9, 0x63, 0x66, 0x69, 0x79, 0xda, 0xdd, 
+0x0c, 0x73, 0x4f, 0xe7, 0x56, 0xb0, 0x9d, 0x03, 
+0xc4, 0x18, 0x31, 0x33, 0x02, 0x60, 0x12, 0x08, 
+0x2e, 0x58, 0x00, 0x71, 0x07, 0x32, 0xc0, 0x10, 
+0x04, 0x24, 0x51, 0x1e, 0x42, 0x80, 0xf2, 0x32, 
+0x91, 0x14, 0x41, 0xb5, 0x75, 0x66, 0x78, 0xa9, 
+0x34, 0x2d, 0xad, 0x7f, 0xbb, 0x3b, 0x66, 0x09, 
+0x6c, 0x17, 0x00, 0x11, 0xc1, 0x5d, 0x31, 0x0b, 
+0x50, 0x5a, 0x18, 0x1c, 0x24, 0x24, 0x9f, 0x26, 
+0x20, 0x49, 0x4c, 0x2a, 0xcb, 0x9c, 0xcc, 0x21, 
+0x6a, 0x2c, 0x2d, 0x4c, 0xca, 0x55, 0xab, 0x95, 
+0xdc, 0xd0, 0xcd, 0x42, 0xa2, 0xdf, 0xfd, 0x2a, 
+0x06, 0x2a, 0x64, 0x82, 0x81, 0x48, 0xa2, 0x38, 
+0x38, 0x82, 0x24, 0x72, 0xdd, 0x19, 0x1a, 0x7f, 
+0xa9, 0x03, 0xe2, 0xae, 0x51, 0x2c, 0x1b, 0xc6, 
+0x31, 0xf2, 0xd0, 0x87, 0x12, 0x6b, 0xe5, 0x66, 
+0xca, 0xd6, 0xc6, 0x0b, 0x9c, 0x1a, 0x3c, 0x8c, 
+0x9a, 0x26, 0x8b, 0x2d, 0xb9, 0xc6, 0xdd, 0x4a, 
+0xd7, 0x75, 0x0c, 0x0a, 0x15, 0x03, 0xaa, 0x9a, 
+0x0e, 0xa8, 0x62, 0xa6, 0xc9, 0x82, 0x68, 0xc4, 
+0xa8, 0x0c, 0x4d, 0xbd, 0x42, 0xff, 0xe6, 0xd5, 
+0xf4, 0x6f, 0x5e, 0x9d, 0x0e, 0x9d, 0x7b, 0x15, 
+0x6d, 0xfe, 0x86, 0x5b, 0xba, 0xc8, 0xd4, 0x89, 
+0xa6, 0xa8, 0x46, 0x62, 0x54, 0x4e, 0xad, 0x39, 
+0xcc, 0x03, 0xcd, 0x83, 0x3c, 0xb4, 0x70, 0x08, 
+0x8b, 0xb1, 0x73, 0xb7, 0x19, 0x6a, 0x8a, 0x46, 
+0xeb, 0x06, 0x00, 0x94, 0x1f, 0xad, 0x06, 0xa1, 
+0xaa, 0x44, 0x8d, 0xdc, 0xda, 0x78, 0x8d, 0xfe, 
+0xdb, 0x5b, 0x60, 0x33, 0x2c, 0x5f, 0x58, 0x00, 
+0x48, 0xcf, 0x7f, 0xbe, 0x4d, 0x5c, 0x9a, 0xc1, 
+0x9d, 0xf2, 0xd2, 0xc8, 0x3d, 0x33, 0x9f, 0x13, 
+0xe3, 0x32, 0x85, 0x16, 0x9c, 0xec, 0xdf, 0x0b, 
+0x6c, 0x65, 0x7b, 0xf1, 0x6d, 0x8a, 0x31, 0xed, 
+0x64, 0x87, 0x9b, 0xf6, 0x32, 0x60, 0x6a, 0xc9, 
+0x7a, 0x55, 0x62, 0x09, 0xe0, 0xe6, 0xb1, 0x9d, 
+0xdc, 0x74, 0xf7, 0x79, 0x06, 0xfa, 0xa7, 0x19, 
+0xe8, 0x9f, 0xa6, 0x3d, 0x7f, 0x36, 0x29, 0x2f, 
+0x41, 0x2c, 0xfc, 0xb0, 0x03, 0x70, 0x8a, 0x58, 
+0xd0, 0x6e, 0xb7, 0xf9, 0x69, 0xe0, 0x69, 0x1e, 
+0xbc, 0xf2, 0x0b, 0xc5, 0x72, 0x41, 0x51, 0x44, 
+0x8e, 0xfb, 0x0e, 0xe0, 0x4e, 0x1e, 0xe3, 0x0f, 
+0x62, 0x2c, 0x0d, 0x2b, 0x0d, 0xad, 0xf4, 0xd6, 
+0x0c, 0x68, 0x49, 0x7b, 0xb4, 0x14, 0x40, 0x23, 
+0x93, 0xcf, 0x30, 0xfc, 0x48, 0x5f, 0x4f, 0x01, 
+0x39, 0xf9, 0xcd, 0x04, 0x03, 0x7d, 0x67, 0x19, 
+0xe8, 0x3b, 0x9b, 0x0a, 0x90, 0x19, 0x5b, 0xc6, 
+0xcf, 0xd3, 0x6a, 0xb5, 0x68, 0x2f, 0x2d, 0x72, 
+0xdc, 0xb7, 0xf0, 0xa8, 0xb6, 0x28, 0x8a, 0x82, 
+0x18, 0x0b, 0x60, 0x03, 0xb0, 0x81, 0xc7, 0xf3, 
+0xd2, 0xad, 0xa5, 0x71, 0xbd, 0x0c, 0x54, 0x69, 
+0xa3, 0x91, 0x8d, 0x33, 0xbb, 0x19, 0x7e, 0xb8, 
+0x05, 0x3e, 0xdf, 0xbd, 0x80, 0xb5, 0x83, 0x7d, 
+0x7c, 0xff, 0xf5, 0x9a, 0xfa, 0x82, 0xa9, 0xe9, 
+0x69, 0xbe, 0x6b, 0x0b, 0xdb, 0x27, 0x97, 0x59, 
+0x68, 0xb5, 0x58, 0x5c, 0x5c, 0x84, 0xc6, 0xaa, 
+0x92, 0x85, 0x02, 0x1a, 0xab, 0xea, 0x55, 0x15, 
+0x2b, 0x53, 0xab, 0xab, 0x67, 0x27, 0x06, 0xca, 
+0xd4, 0x51, 0xed, 0x04, 0x48, 0xa3, 0xd1, 0xec, 
+0xda, 0x57, 0x4a, 0xf5, 0xee, 0xe8, 0xd1, 0xa3, 
+0x8c, 0x4f, 0x8c, 0xc3, 0x18, 0x2c, 0x2c, 0xb4, 
+0x68, 0x2f, 0xb5, 0x61, 0x0c, 0xda, 0xc5, 0x32, 
+0x31, 0x46, 0x18, 0xa3, 0x5e, 0xb1, 0x0a, 0xc2, 
+0x15, 0x31, 0x90, 0xaf, 0x74, 0x41, 0x2a, 0x6a, 
+0x4e, 0xa3, 0xd9, 0x4f, 0xd6, 0x98, 0xee, 0x01, 
+0xd1, 0x68, 0xae, 0xed, 0x06, 0xd1, 0xec, 0x47, 
+0x55, 0xb9, 0xd2, 0xbc, 0x02, 0xb3, 0xb0, 0xb8, 
+0x6e, 0x91, 0x2c, 0xcf, 0x60, 0x16, 0x8a, 0x0d, 
+0x05, 0x21, 0x00, 0xb3, 0x9d, 0xff, 0xdb, 0xe6, 
+0x98, 0x0a, 0x5a, 0x59, 0xd4, 0x7a, 0xb2, 0xa0, 
+0x0a, 0x92, 0x99, 0xe1, 0x0f, 0xb8, 0x74, 0x7a, 
+0x13, 0x7f, 0x5d, 0x4e, 0x31, 0x50, 0xed, 0x2b, 
+0xa5, 0x7a, 0xe7, 0xc0, 0x8b, 0x3f, 0xde, 0xcf, 
+0xc7, 0xeb, 0x7f, 0xa5, 0xbd, 0xbc, 0x44, 0xd1, 
+0x5e, 0x86, 0x31, 0xca, 0x18, 0xe8, 0x66, 0x40, 
+0xd5, 0x88, 0x65, 0x75, 0xec, 0x49, 0x43, 0x55, 
+0xab, 0x33, 0x41, 0xd5, 0x98, 0x1c, 0x1a, 0x25, 
+0x5e, 0x1c, 0xe9, 0x01, 0x71, 0xb9, 0x59, 0x70, 
+0xdb, 0x7d, 0x2b, 0xcc, 0x72, 0xe7, 0xbd, 0x6d, 
+0x27, 0x92, 0xc2, 0xa2, 0x60, 0xf7, 0x97, 0x77, 
+0xf0, 0xe9, 0x13, 0xe7, 0x89, 0x31, 0x52, 0x14, 
+0x31, 0x31, 0x30, 0x0b, 0x5f, 0x3d, 0x79, 0xa9, 
+0x93, 0xe2, 0x76, 0xcd, 0x3a, 0xa0, 0xb5, 0x7f, 
+0xaa, 0xc2, 0x31, 0x36, 0xf8, 0x2e, 0xf1, 0xe2, 
+0x08, 0x73, 0xf3, 0xc6, 0xdc, 0x7c, 0x3a, 0x74, 
+0xc3, 0xa6, 0x4b, 0xcc, 0xcd, 0x1b, 0xf1, 0xe2, 
+0x08, 0xc7, 0xe7, 0x5e, 0x2e, 0xcf, 0x3a, 0xaa, 
+0xca, 0x9e, 0x03, 0xf7, 0x72, 0xe4, 0xa9, 0x33, 
+0xc4, 0x18, 0x89, 0x1a, 0x79, 0x76, 0xdf, 0x46, 
+0x38, 0x09, 0x5f, 0xec, 0x1e, 0x47, 0x2d, 0x15, 
+0xa4, 0x2a, 0xd8, 0xaf, 0x59, 0x88, 0xcc, 0x0c, 
+0x8b, 0x56, 0xa7, 0x8a, 0xaa, 0x71, 0x6e, 0xe0, 
+0x20, 0x83, 0xcd, 0xf5, 0x00, 0x34, 0x07, 0x27, 
+0x18, 0x6c, 0xae, 0x67, 0xb0, 0xb9, 0x9e, 0x13, 
+0xcd, 0xbd, 0xb8, 0x7b, 0xea, 0x84, 0x96, 0xd8, 
+0xfb, 0xf0, 0x8d, 0x9f, 0x89, 0x51, 0xd1, 0xa8, 
+0xec, 0x7b, 0x6e, 0x0b, 0xb7, 0x8c, 0xc3, 0x67, 
+0x87, 0x2e, 0xa4, 0xfb, 0xca, 0xe8, 0xb7, 0xab, 
+0x02, 0x3d, 0x5f, 0x09, 0xc0, 0xcb, 0x0e, 0x57, 
+0xd5, 0xed, 0x0a, 0xd4, 0x99, 0xfc, 0x2d, 0xb6, 
+0x36, 0x0f, 0x74, 0x6a, 0xc1, 0xe2, 0xeb, 0x98, 
+0xc7, 0xb2, 0xa6, 0x4b, 0x7d, 0x4e, 0x4d, 0x11, 
+0x11, 0x3e, 0xd9, 0xb3, 0x8d, 0x77, 0x8e, 0xfc, 
+0x4e, 0x96, 0x07, 0xcc, 0x32, 0xdc, 0x9d, 0x2c, 
+0x64, 0x28, 0xa9, 0xd1, 0x49, 0xf0, 0xeb, 0x03, 
+0x30, 0xb3, 0xd4, 0x80, 0xea, 0x76, 0xea, 0x98, 
+0x1a, 0xa7, 0xfd, 0xcd, 0xc4, 0x4a, 0x54, 0x5c, 
+0x63, 0xa9, 0xb4, 0x6c, 0xc5, 0x80, 0xb9, 0x11, 
+0x34, 0x60, 0x62, 0x3c, 0xff, 0xd1, 0x69, 0xcc, 
+0x32, 0xd0, 0xf4, 0x2d, 0x48, 0x28, 0xbb, 0x6a, 
+0x80, 0x20, 0x88, 0x4b, 0x2f, 0x80, 0x7a, 0x60, 
+0x30, 0xc7, 0xbc, 0x9c, 0x64, 0xdc, 0x7b, 0x7a, 
+0xba, 0x61, 0x35, 0xf5, 0xd4, 0x9d, 0xcd, 0xeb, 
+0x2e, 0xe7, 0x9e, 0xce, 0x8b, 0x0b, 0x58, 0xca, 
+0x36, 0x0b, 0xd5, 0xf8, 0xe6, 0x40, 0x20, 0x48, 
+0x37, 0x80, 0x05, 0x11, 0xb9, 0xd1, 0xdc, 0xa5, 
+0xea, 0xdd, 0x5e, 0x02, 0xf1, 0x12, 0x48, 0x35, 
+0xc5, 0x98, 0x3b, 0xae, 0x69, 0xf2, 0xa9, 0x3a, 
+0x21, 0x92, 0xa6, 0xa2, 0x4a, 0x71, 0xb0, 0x80, 
+0x05, 0x47, 0xcc, 0x28, 0xd5, 0x13, 0xd2, 0x46, 
+0x08, 0x21, 0x05, 0xa0, 0x84, 0xce, 0x4c, 0x09, 
+0x34, 0x8e, 0x1d, 0x3b, 0x36, 0x24, 0x9d, 0x89, 
+0xd2, 0xd3, 0x0c, 0x52, 0x4f, 0x21, 0x72, 0xbd, 
+0x81, 0xf4, 0x7a, 0xef, 0xfe, 0xad, 0x4c, 0x4c, 
+0x4c, 0x90, 0x03, 0xeb, 0xa6, 0xa6, 0xa6, 0x56, 
+0x8e, 0xe5, 0x72, 0xb5, 0xe2, 0xff, 0x40, 0x0a, 
+0xa0, 0xbd, 0x6b, 0xd7, 0xae, 0xc1, 0xbf, 0x01, 
+0x6b, 0x68, 0x5f, 0x7f, 0xa2, 0xec, 0x8c, 0x1e, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/cisnd.png b/source/bitmaps/icons/cisnd.png
new file mode 100644 (file)
index 0000000..b615c72
Binary files /dev/null and b/source/bitmaps/icons/cisnd.png differ
diff --git a/source/bitmaps/icons/civen.cpp b/source/bitmaps/icons/civen.cpp
new file mode 100644 (file)
index 0000000..2dff797
--- /dev/null
@@ -0,0 +1,171 @@
+#include <iostream>
+
+#ifndef ICONS_CIVEN_CPP
+#define ICONS_CIVEN_CPP
+
+static unsigned char icons_civen_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x18, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x53, 0xff, 
+0x34, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xdd, 0x0c, 0x07, 0x0c, 0x24, 0x0b, 0x55, 
+0x73, 0xb1, 0xa3, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x04, 0x71, 
+0x49, 0x44, 0x41, 0x54, 0x48, 0xc7, 0xc5, 0x96, 
+0x4d, 0x68, 0x5c, 0x55, 0x14, 0xc7, 0x7f, 0xe7, 
+0xbe, 0x67, 0x93, 0x36, 0x89, 0x69, 0x48, 0x3f, 
+0xa6, 0x62, 0x4a, 0xa9, 0xb4, 0x31, 0x18, 0xb1, 
+0x1a, 0xf0, 0x73, 0x67, 0x41, 0x5c, 0x48, 0x0b, 
+0x81, 0xb8, 0xd1, 0xba, 0x71, 0xe3, 0xa6, 0x2e, 
+0xc4, 0xe8, 0x4e, 0x10, 0xa4, 0x22, 0x2e, 0x5a, 
+0x97, 0x2d, 0x88, 0xb8, 0x90, 0xae, 0xba, 0x71, 
+0x61, 0x41, 0x5a, 0xd2, 0x50, 0x04, 0xed, 0xa6, 
+0xa2, 0x0d, 0x95, 0x6e, 0x04, 0x53, 0x92, 0x14, 
+0xdb, 0x52, 0xe8, 0x64, 0x26, 0x33, 0xef, 0x9e, 
+0x73, 0x5c, 0xbc, 0x99, 0x37, 0x6f, 0x92, 0x8c, 
+0xb4, 0x0b, 0xf1, 0xc0, 0x70, 0xce, 0xbd, 0x77, 
+0xce, 0x3b, 0xff, 0x7b, 0x3e, 0xaf, 0x90, 0x93, 
+0xf3, 0xff, 0x90, 0x08, 0x60, 0xd3, 0xd3, 0xd3, 
+0x62, 0x66, 0x5d, 0x27, 0xaa, 0xda, 0x43, 0x43, 
+0x36, 0x5d, 0xbb, 0xfb, 0x86, 0xb3, 0x7f, 0xa3, 
+0xd9, 0xd9, 0x59, 0x96, 0x97, 0x97, 0x49, 0x01, 
+0xc9, 0xb2, 0x8c, 0xaf, 0x4e, 0x9d, 0x42, 0x82, 
+0x20, 0x22, 0x88, 0x04, 0x42, 0x68, 0xfd, 0x24, 
+0x10, 0x92, 0x40, 0x08, 0x09, 0x49, 0x1a, 0x48, 
+0x92, 0x94, 0x24, 0x04, 0xd2, 0x34, 0x25, 0x4d, 
+0x53, 0x92, 0x24, 0x21, 0x8b, 0x11, 0x8d, 0x11, 
+0x8d, 0x8a, 0x5a, 0x24, 0xaa, 0x62, 0x6a, 0xa8, 
+0x1a, 0x6e, 0x86, 0x9a, 0x61, 0xae, 0xb8, 0x39, 
+0x6e, 0x8e, 0xe1, 0x2c, 0x2f, 0x2d, 0x01, 0x90, 
+0xb6, 0xd1, 0xab, 0x39, 0x02, 0x04, 0x01, 0x09, 
+0x06, 0xd6, 0x8a, 0x4b, 0x70, 0x70, 0x10, 0x17, 
+0x4e, 0xff, 0x32, 0x0e, 0xc0, 0x85, 0x5f, 0x2f, 
+0xf6, 0xbc, 0xd9, 0x99, 0xd3, 0xf7, 0x01, 0x18, 
+0xfc, 0xf9, 0x20, 0x66, 0x86, 0xb9, 0x61, 0x96, 
+0x03, 0x31, 0x77, 0xdc, 0x1d, 0x2f, 0x79, 0x3b, 
+0x05, 0x88, 0x31, 0x62, 0x66, 0x04, 0xc0, 0x24, 
+0x10, 0x5c, 0xb0, 0x00, 0xe2, 0x0e, 0x24, 0x80, 
+0x71, 0xf6, 0xca, 0x34, 0x7d, 0x1c, 0xcc, 0xc3, 
+0xb3, 0x75, 0x47, 0x4f, 0x00, 0xf7, 0x76, 0xad, 
+0xe4, 0xfc, 0xc8, 0x55, 0x76, 0x9f, 0x7b, 0x1a, 
+0x33, 0xcd, 0x81, 0x98, 0xe1, 0xee, 0x98, 0x39, 
+0x5e, 0x4a, 0xb9, 0xb4, 0x1d, 0x47, 0x77, 0xc5, 
+0x2c, 0x80, 0x18, 0x2e, 0x42, 0x70, 0x90, 0x90, 
+0xc7, 0xf4, 0xd2, 0x5f, 0xc7, 0xd9, 0x31, 0xba, 
+0xbb, 0x50, 0x1a, 0xbf, 0x5b, 0xef, 0x09, 0x20, 
+0xdb, 0xdf, 0x91, 0x6f, 0xce, 0xfe, 0x4e, 0xe5, 
+0xc4, 0x93, 0x25, 0x2f, 0xe4, 0xee, 0x77, 0x5f, 
+0xe7, 0x81, 0x36, 0x32, 0xc1, 0x40, 0x04, 0x17, 
+0xc1, 0x83, 0x23, 0x08, 0x0b, 0xd5, 0x2f, 0x19, 
+0x19, 0xda, 0xd3, 0x65, 0xe4, 0xc0, 0x70, 0xa3, 
+0x27, 0x80, 0xd1, 0x9d, 0xdd, 0xde, 0xc9, 0x4e, 
+0xde, 0x86, 0xe3, 0xc3, 0xf9, 0xcd, 0x3d, 0xf7, 
+0xc2, 0xa6, 0x1e, 0x50, 0xd5, 0x3c, 0x01, 0x11, 
+0x24, 0x08, 0xee, 0x42, 0xb0, 0xc0, 0xf0, 0xe0, 
+0xae, 0x0d, 0x46, 0xf6, 0x6c, 0xdf, 0xd2, 0x13, 
+0xc0, 0xea, 0xc8, 0xbd, 0x0d, 0x7b, 0xfd, 0x3a, 
+0x88, 0xb9, 0x83, 0x3b, 0xe6, 0x46, 0xc9, 0x01, 
+0x39, 0x00, 0x00, 0xb3, 0xfc, 0xf6, 0x02, 0x04, 
+0x17, 0x10, 0xc1, 0xc4, 0x38, 0xff, 0xde, 0xa7, 
+0xbc, 0xf9, 0xc5, 0x55, 0x06, 0x07, 0x06, 0x08, 
+0x49, 0x42, 0x9a, 0x24, 0x9c, 0xff, 0x7c, 0x1f, 
+0x1f, 0x9e, 0xbd, 0x4d, 0xff, 0xd6, 0x6d, 0xf4, 
+0xf7, 0xf5, 0x53, 0xad, 0xde, 0xa7, 0xd1, 0x68, 
+0x70, 0xf2, 0xed, 0x5d, 0xbc, 0x72, 0xe6, 0x4f, 
+0xb2, 0x18, 0x71, 0x33, 0x9a, 0xcd, 0x8c, 0xef, 
+0x3e, 0x98, 0xe4, 0xad, 0x99, 0x6b, 0x80, 0x63, 
+0x0e, 0xb4, 0x80, 0xb4, 0x29, 0xb4, 0x3d, 0x60, 
+0x6a, 0x98, 0x2a, 0xa6, 0x4a, 0x54, 0x45, 0x55, 
+0xd1, 0x18, 0x19, 0xe8, 0x83, 0x34, 0x49, 0x68, 
+0x66, 0x91, 0x66, 0xd6, 0xa4, 0xd9, 0xcc, 0x18, 
+0xe8, 0x83, 0x66, 0xb3, 0x89, 0xc6, 0x08, 0x38, 
+0x6a, 0x4a, 0xb3, 0xd9, 0x6c, 0xed, 0x67, 0x1c, 
+0xfb, 0x71, 0x8e, 0x2c, 0x8b, 0x64, 0x59, 0xae, 
+0xaf, 0xa6, 0xc4, 0x98, 0x7f, 0x5b, 0x5b, 0x65, 
+0xd9, 0xb6, 0x1b, 0x8a, 0xc6, 0x63, 0xb9, 0xd1, 
+0x68, 0x56, 0x18, 0x8f, 0xaa, 0x0c, 0xf5, 0x41, 
+0x16, 0x73, 0xe3, 0xd9, 0x89, 0x09, 0xea, 0x9f, 
+0x1d, 0xe0, 0xc8, 0x08, 0xfc, 0xfd, 0xf1, 0x63, 
+0xd4, 0x6b, 0x75, 0xdc, 0x8c, 0xda, 0x6a, 0x9d, 
+0xd5, 0xd5, 0x55, 0x86, 0xfa, 0xe0, 0x9d, 0x0b, 
+0x97, 0x38, 0x3a, 0x35, 0xc5, 0xbb, 0xf3, 0x3f, 
+0x61, 0x96, 0xeb, 0x6b, 0x8c, 0xa8, 0xe6, 0xdf, 
+0xb5, 0xd6, 0xe5, 0x36, 0xe4, 0x40, 0xa7, 0x13, 
+0x3a, 0xd0, 0xe9, 0x68, 0xdb, 0xb6, 0x40, 0xfa, 
+0xc7, 0x73, 0xf9, 0xe2, 0x75, 0x78, 0xe4, 0xca, 
+0x58, 0x71, 0x76, 0xeb, 0xa3, 0xdd, 0x7c, 0x7d, 
+0x78, 0x5f, 0xb1, 0xfe, 0xfe, 0xd5, 0x33, 0x1c, 
+0x9d, 0x9a, 0x2a, 0xd6, 0x9f, 0x7c, 0xf3, 0x2d, 
+0x54, 0xde, 0xe7, 0xa5, 0xd8, 0x32, 0xe8, 0xdd, 
+0xdf, 0x76, 0xf7, 0x52, 0x0e, 0xa8, 0x75, 0x65, 
+0x67, 0x1e, 0x26, 0xe7, 0x85, 0x37, 0x80, 0xbb, 
+0xa5, 0xac, 0x7e, 0x7e, 0xb1, 0x0b, 0xc4, 0x8b, 
+0x87, 0x47, 0x3b, 0x87, 0x17, 0x4f, 0x00, 0xe7, 
+0x8a, 0xe5, 0xb3, 0x93, 0x4f, 0x71, 0xf5, 0xda, 
+0x02, 0x31, 0x46, 0x04, 0xf0, 0x56, 0x8e, 0x95, 
+0x29, 0x2d, 0x87, 0xc0, 0x3b, 0x96, 0xf1, 0x56, 
+0xb2, 0xdc, 0xdc, 0xfe, 0x03, 0x6c, 0x5f, 0xa7, 
+0xf5, 0x5a, 0x49, 0xfe, 0xad, 0x23, 0x1e, 0xda, 
+0x09, 0xdc, 0xb9, 0x05, 0xc0, 0x33, 0xfb, 0x1e, 
+0x07, 0xe0, 0xe5, 0xbd, 0x63, 0x68, 0x54, 0xa4, 
+0x15, 0xec, 0x1c, 0x82, 0x14, 0x8e, 0xe8, 0xaa, 
+0x82, 0xbc, 0x46, 0x01, 0x37, 0xf2, 0x88, 0x74, 
+0x0f, 0xc9, 0x89, 0x89, 0x89, 0x07, 0x1e, 0x36, 
+0xd7, 0xaf, 0x5f, 0x2f, 0xe4, 0xa8, 0x11, 0xb1, 
+0x7c, 0xce, 0xd0, 0x4a, 0xbc, 0x90, 0x24, 0x9d, 
+0x2a, 0xc8, 0xa7, 0x9f, 0x15, 0x95, 0xa0, 0x05, 
+0xef, 0x9e, 0x88, 0xf5, 0x7a, 0x9d, 0xb9, 0xb9, 
+0x39, 0xe6, 0xe6, 0xe6, 0x0a, 0xb9, 0xcc, 0xcb, 
+0xf2, 0xfa, 0xc9, 0xaa, 0x6a, 0xa8, 0x75, 0x2a, 
+0x61, 0x93, 0x3e, 0xa0, 0x45, 0x97, 0x72, 0xeb, 
+0x0c, 0x8d, 0x6a, 0xb5, 0x5a, 0xfc, 0xb9, 0x56, 
+0xab, 0x91, 0x65, 0x19, 0x53, 0x53, 0x53, 0x85, 
+0x5c, 0xe6, 0x40, 0x21, 0x97, 0xf5, 0x1e, 0x1d, 
+0x1e, 0x26, 0x04, 0x43, 0x5c, 0x08, 0x12, 0xba, 
+0xc6, 0x76, 0x28, 0x87, 0xc0, 0xcc, 0xb0, 0xd8, 
+0xb9, 0xbd, 0xaa, 0x51, 0xab, 0xd5, 0x8a, 0x5f, 
+0xa3, 0xd1, 0x60, 0x72, 0x72, 0x92, 0xf9, 0xf9, 
+0x79, 0x1a, 0x8d, 0x06, 0xd5, 0x6a, 0xb5, 0xe0, 
+0xeb, 0xf7, 0xca, 0x7a, 0xa6, 0x8a, 0x46, 0xed, 
+0xf2, 0xf0, 0xa6, 0x9d, 0xd0, 0x5b, 0xe3, 0xb2, 
+0xdd, 0xb7, 0xcd, 0xac, 0xcb, 0x9d, 0x6b, 0x6b, 
+0x6b, 0x79, 0xb2, 0x1d, 0x3a, 0xc4, 0xda, 0xda, 
+0x5a, 0x17, 0x6f, 0x9f, 0xb7, 0xf7, 0xca, 0x7a, 
+0xaa, 0x4a, 0x12, 0x12, 0x94, 0x7c, 0xd0, 0x49, 
+0xf0, 0xde, 0x00, 0xcc, 0xac, 0x15, 0x86, 0x1c, 
+0x40, 0xa5, 0x52, 0x61, 0x71, 0x71, 0x11, 0x80, 
+0x85, 0x85, 0x85, 0x87, 0x7e, 0x73, 0x8d, 0xed, 
+0x1d, 0x2b, 0x7a, 0x8c, 0x78, 0x80, 0x20, 0x88, 
+0xcb, 0x46, 0x00, 0xc5, 0x83, 0xc1, 0xda, 0x03, 
+0xc3, 0xd0, 0x16, 0xa0, 0x4a, 0xa5, 0xc2, 0x8d, 
+0x1b, 0x37, 0x1e, 0xda, 0xf8, 0xf8, 0xf8, 0x38, 
+0xae, 0x86, 0xb5, 0x4b, 0x50, 0x1c, 0x08, 0x04, 
+0xe9, 0x06, 0xb0, 0x2a, 0x22, 0xdb, 0xcc, 0x5d, 
+0xda, 0x2f, 0x18, 0xf7, 0x76, 0x22, 0xe6, 0x40, 
+0xdc, 0x9d, 0x27, 0xf6, 0xef, 0x27, 0x9a, 0x61, 
+0x51, 0x89, 0x16, 0x73, 0xae, 0x8a, 0x9a, 0x92, 
+0x26, 0xf9, 0xd3, 0x2c, 0x49, 0x13, 0xd2, 0x90, 
+0x12, 0xd2, 0x84, 0x24, 0x04, 0xcc, 0x1c, 0x30, 
+0x82, 0x00, 0x06, 0x21, 0x84, 0xd6, 0xd0, 0x0b, 
+0x9d, 0x37, 0x25, 0x70, 0xe7, 0xf2, 0xe5, 0xcb, 
+0x23, 0xd2, 0x49, 0x4d, 0x07, 0xc4, 0xbd, 0x18, 
+0x59, 0xd2, 0xeb, 0x41, 0xda, 0x6b, 0xef, 0x41, 
+0x69, 0x69, 0x69, 0x89, 0x14, 0x18, 0x5d, 0x59, 
+0x59, 0x29, 0x77, 0x1c, 0x59, 0x6f, 0xf8, 0x3f, 
+0xa0, 0x0c, 0x68, 0xcc, 0xcc, 0xcc, 0x0c, 0xfd, 
+0x03, 0xa9, 0x46, 0x3d, 0xa6, 0xb4, 0xee, 0x5d, 
+0x9f, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 
+0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/civen.png b/source/bitmaps/icons/civen.png
new file mode 100644 (file)
index 0000000..e392f24
Binary files /dev/null and b/source/bitmaps/icons/civen.png differ
diff --git a/source/bitmaps/icons/nossl.cpp b/source/bitmaps/icons/nossl.cpp
new file mode 100644 (file)
index 0000000..f2d6a19
--- /dev/null
@@ -0,0 +1,60 @@
+#include <iostream>
+
+#ifndef ICONS_NOSSL_CPP
+#define ICONS_NOSSL_CPP
+
+static unsigned char icons_nossl_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x09, 0x2d, 0xa1, 
+0x51, 0x39, 0x7b, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x00, 0xf8, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xad, 0x52, 
+0x31, 0x8a, 0x85, 0x30, 0x14, 0x9c, 0xac, 0x5b, 
+0x29, 0xd8, 0x59, 0xa6, 0xf5, 0x02, 0xa9, 0x3c, 
+0x86, 0xa7, 0x10, 0x3c, 0x90, 0xe0, 0x29, 0x3c, 
+0x82, 0xa5, 0x47, 0x10, 0x6c, 0x83, 0x84, 0x20, 
+0x04, 0x0c, 0x2a, 0x68, 0x93, 0xad, 0x94, 0x9f, 
+0xef, 0x13, 0xfe, 0xb2, 0x3b, 0x4d, 0xc8, 0xbc, 
+0x79, 0x93, 0x49, 0x5e, 0x80, 0x3f, 0x82, 0x51, 
+0xe4, 0xba, 0xae, 0x8e, 0xe2, 0xa3, 0x28, 0xba, 
+0xe9, 0xbf, 0xdf, 0x09, 0x6b, 0xad, 0xeb, 0xfb, 
+0x9e, 0x3c, 0xcd, 0x5a, 0xeb, 0xe2, 0x38, 0x66, 
+0x8f, 0x09, 0xa6, 0x69, 0x72, 0xc3, 0x30, 0x00, 
+0x00, 0xd2, 0x34, 0xf5, 0x9a, 0x5f, 0xf9, 0x24, 
+0x49, 0xd8, 0x2d, 0x81, 0x94, 0xd2, 0xb5, 0x6d, 
+0x0b, 0x00, 0xc8, 0xb2, 0xcc, 0x13, 0x9d, 0xf5, 
+0xae, 0xeb, 0x30, 0x8e, 0x23, 0xa4, 0x94, 0x8e, 
+0x73, 0xce, 0x00, 0xe0, 0xeb, 0x14, 0x1c, 0xc7, 
+0x01, 0x00, 0x10, 0x42, 0xe0, 0x2c, 0xbe, 0x82, 
+0x73, 0xce, 0x84, 0x10, 0x9e, 0xd6, 0x33, 0x30, 
+0xc6, 0x40, 0x6b, 0x0d, 0x63, 0xcc, 0xe3, 0x8b, 
+0x53, 0x9a, 0xcb, 0x60, 0xdb, 0x36, 0x6f, 0xa5, 
+0x40, 0x69, 0xae, 0xa8, 0x4d, 0xd3, 0xb8, 0xdf, 
+0xcc, 0x3f, 0xcf, 0x73, 0x76, 0x1b, 0x23, 0xe7, 
+0xfc, 0xa3, 0x66, 0x29, 0x25, 0xfd, 0x0f, 0xf6, 
+0x7d, 0xf7, 0x84, 0x45, 0x51, 0x00, 0x00, 0xea, 
+0xba, 0x7e, 0x34, 0xbb, 0x0c, 0x94, 0x52, 0x08, 
+0xc3, 0x90, 0x14, 0x2d, 0xcb, 0xe2, 0xed, 0x95, 
+0x52, 0x74, 0x82, 0x79, 0x9e, 0x49, 0x83, 0x27, 
+0xfe, 0x66, 0xa0, 0xb5, 0x26, 0xaf, 0xf0, 0xce, 
+0x07, 0x41, 0x40, 0x7f, 0xe5, 0xaa, 0xaa, 0x3e, 
+0x9a, 0x44, 0x59, 0x96, 0x0c, 0xff, 0x85, 0x1f, 
+0xd1, 0x46, 0x75, 0x8a, 0x55, 0xb0, 0xf8, 0x3b, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/nossl.png b/source/bitmaps/icons/nossl.png
new file mode 100644 (file)
index 0000000..ea6cab9
Binary files /dev/null and b/source/bitmaps/icons/nossl.png differ
diff --git a/source/bitmaps/icons/offline.cpp b/source/bitmaps/icons/offline.cpp
new file mode 100644 (file)
index 0000000..3c44d63
--- /dev/null
@@ -0,0 +1,64 @@
+#include <iostream>
+
+#ifndef ICONS_OFFLINE_CPP
+#define ICONS_OFFLINE_CPP
+
+static unsigned char icons_offline_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x0d, 0x2f, 0x2b, 
+0x33, 0x9d, 0x53, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x18, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xc5, 0x93, 
+0x31, 0x4b, 0x03, 0x41, 0x10, 0x85, 0xbf, 0x0b, 
+0xe9, 0xce, 0x80, 0x20, 0x5e, 0x23, 0xc7, 0x81, 
+0x62, 0x21, 0xdc, 0x1f, 0x10, 0xaf, 0xb3, 0x48, 
+0x63, 0x65, 0x69, 0x29, 0xd8, 0x89, 0x90, 0x14, 
+0x69, 0x52, 0x8a, 0x8d, 0xe0, 0xd9, 0x58, 0x08, 
+0x76, 0x16, 0x69, 0xd3, 0xd8, 0x44, 0xc8, 0x0f, 
+0xb0, 0xdf, 0x4e, 0x14, 0xae, 0x08, 0xa8, 0xac, 
+0x44, 0x36, 0x7b, 0x2a, 0x26, 0xba, 0x76, 0x4b, 
+0xce, 0x04, 0xef, 0x14, 0xc1, 0xe9, 0xde, 0xdb, 
+0x99, 0x37, 0x6f, 0x98, 0x1d, 0xf8, 0xef, 0x70, 
+0xf2, 0x12, 0x92, 0x24, 0x31, 0xd3, 0xf8, 0x20, 
+0x08, 0x1c, 0x80, 0x72, 0x9e, 0x80, 0x31, 0x86, 
+0xbd, 0xf3, 0x43, 0xde, 0xaf, 0x12, 0x00, 0x76, 
+0xb7, 0x96, 0x58, 0x59, 0xab, 0xdb, 0xf7, 0x52, 
+0x9e, 0x80, 0xd6, 0xda, 0x16, 0x03, 0x9c, 0xb4, 
+0x6e, 0xd0, 0x5a, 0x5b, 0x9c, 0x71, 0x20, 0x84, 
+0x98, 0x03, 0xe4, 0x18, 0x35, 0xa3, 0x94, 0x9a, 
+0x10, 0x1d, 0xe7, 0xbe, 0x8e, 0x20, 0x17, 0x67, 
+0xbb, 0x16, 0xdc, 0x3e, 0xad, 0x6b, 0xa5, 0x14, 
+0xbe, 0xef, 0x17, 0x16, 0xe0, 0xae, 0x1b, 0x73, 
+0x74, 0xfa, 0x48, 0x7b, 0xb5, 0xcd, 0xe5, 0x36, 
+0x48, 0x29, 0x89, 0xa2, 0x28, 0xdb, 0x45, 0xca, 
+0xe9, 0x5b, 0x10, 0x42, 0x98, 0x34, 0x4d, 0x2d, 
+0x76, 0x5d, 0x97, 0x30, 0x0c, 0xbf, 0xdd, 0x54, 
+0xe9, 0xcf, 0x3f, 0x46, 0x35, 0xae, 0x99, 0xc6, 
+0x7d, 0xc7, 0x54, 0xe3, 0x9a, 0x29, 0x92, 0x3f, 
+0xe1, 0xa0, 0xe2, 0x7b, 0xbc, 0xf4, 0x07, 0x54, 
+0x7c, 0x8f, 0x5f, 0x09, 0xfc, 0x34, 0xca, 0x00, 
+0x9b, 0xad, 0x7d, 0x6b, 0x77, 0x7e, 0x39, 0x60, 
+0xf4, 0xfa, 0xc6, 0xc7, 0x70, 0x54, 0xec, 0x16, 
+0x36, 0xce, 0x9a, 0xc6, 0x0b, 0x16, 0x32, 0xe4, 
+0x43, 0xd2, 0xe3, 0x62, 0xe7, 0xc0, 0x29, 0xe4, 
+0x60, 0x38, 0x78, 0x06, 0xa0, 0x27, 0xae, 0x2d, 
+0xd9, 0xa9, 0x1f, 0x3b, 0x45, 0x47, 0xf8, 0x04, 
+0xbd, 0xca, 0x61, 0xc4, 0x36, 0x02, 0xb9, 0xe9, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/offline.png b/source/bitmaps/icons/offline.png
new file mode 100644 (file)
index 0000000..31eacdf
Binary files /dev/null and b/source/bitmaps/icons/offline.png differ
diff --git a/source/bitmaps/icons/online.cpp b/source/bitmaps/icons/online.cpp
new file mode 100644 (file)
index 0000000..9e05f5b
--- /dev/null
@@ -0,0 +1,59 @@
+#include <iostream>
+
+#ifndef ICONS_ONLINE_CPP
+#define ICONS_ONLINE_CPP
+
+static unsigned char icons_online_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x0d, 0x23, 0x22, 
+0x85, 0xd1, 0x78, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x00, 0xf2, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xc5, 0x92, 
+0x4f, 0x0e, 0x01, 0x31, 0x14, 0xc6, 0xbf, 0x62, 
+0x21, 0x48, 0x70, 0x01, 0xb3, 0x9d, 0xc4, 0x0d, 
+0x9c, 0xc1, 0x11, 0xba, 0x15, 0x6b, 0x11, 0x7b, 
+0x37, 0x60, 0x6f, 0xe9, 0x10, 0x6e, 0x60, 0x6f, 
+0x21, 0x99, 0x48, 0x2c, 0x66, 0x25, 0x92, 0x49, 
+0x63, 0xaa, 0x9a, 0x61, 0x8c, 0x5a, 0xa0, 0x22, 
+0x53, 0xea, 0xcf, 0xc2, 0x4b, 0xba, 0xe8, 0xd7, 
+0xf7, 0x7e, 0x7d, 0xfd, 0xfa, 0x80, 0x7f, 0x07, 
+0xb1, 0x25, 0xf8, 0xbe, 0xaf, 0x4c, 0xba, 0xe3, 
+0x38, 0x04, 0x00, 0x32, 0x36, 0x80, 0x52, 0x0a, 
+0xed, 0x78, 0x02, 0xc6, 0x18, 0x18, 0x63, 0xa8, 
+0x89, 0x2e, 0x94, 0xba, 0x33, 0x73, 0x36, 0x80, 
+0x10, 0x02, 0xc7, 0x52, 0x1e, 0xbd, 0xea, 0xec, 
+0xaa, 0x34, 0x31, 0x14, 0x42, 0x9f, 0x5b, 0x3b, 
+0xe0, 0x9c, 0x63, 0xb7, 0x5c, 0x61, 0x57, 0x24, 
+0x97, 0xb5, 0x5c, 0x81, 0x73, 0xfe, 0x19, 0x40, 
+0xae, 0x99, 0xde, 0xcb, 0x35, 0xfb, 0x0c, 0x10, 
+0x04, 0xc1, 0xdd, 0x8f, 0x38, 0x49, 0x69, 0x56, 
+0x00, 0xa5, 0x94, 0x9c, 0xa2, 0x83, 0x2e, 0x3e, 
+0x45, 0x07, 0x50, 0x4a, 0xc9, 0xdb, 0x26, 0xea, 
+0xff, 0xde, 0xee, 0x8d, 0x7a, 0xe6, 0xd7, 0x41, 
+0x7a, 0xe8, 0xc0, 0x1d, 0xb4, 0x8c, 0x43, 0x53, 
+0xac, 0xd7, 0x2e, 0x1e, 0x6c, 0x24, 0xe2, 0x50, 
+0x9a, 0x27, 0xd1, 0x1d, 0xb4, 0x54, 0xa5, 0xe1, 
+0xbe, 0xbc, 0x6d, 0x33, 0xf5, 0xe0, 0x75, 0x46, 
+0x24, 0x05, 0xf8, 0xb6, 0x58, 0x3f, 0x21, 0x1b, 
+0x46, 0x48, 0x42, 0x89, 0x6c, 0xb9, 0x80, 0x24, 
+0x94, 0x90, 0xd3, 0x45, 0x0a, 0xe0, 0xf5, 0xc7, 
+0xc4, 0xea, 0xc1, 0xad, 0x78, 0xfe, 0x24, 0xd9, 
+0x14, 0x67, 0xc1, 0x7a, 0x73, 0x35, 0xee, 0x14, 
+0xfb, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 
+0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/online.png b/source/bitmaps/icons/online.png
new file mode 100644 (file)
index 0000000..2832c46
Binary files /dev/null and b/source/bitmaps/icons/online.png differ
diff --git a/source/bitmaps/icons/ssl.cpp b/source/bitmaps/icons/ssl.cpp
new file mode 100644 (file)
index 0000000..1b2683b
--- /dev/null
@@ -0,0 +1,62 @@
+#include <iostream>
+
+#ifndef ICONS_SSL_CPP
+#define ICONS_SSL_CPP
+
+static unsigned char icons_ssl_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x0a, 0x13, 0x4b, 
+0x1d, 0x77, 0x13, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x07, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0x63, 0x60, 
+0xa0, 0x10, 0x30, 0x62, 0x13, 0xfc, 0xf5, 0xfd, 
+0xf9, 0x7f, 0x6c, 0xe2, 0x6c, 0x9c, 0x92, 0x18, 
+0xea, 0x59, 0xd0, 0x05, 0x7e, 0x7e, 0xb9, 0xf7, 
+0xff, 0xd5, 0xcd, 0x2e, 0xac, 0xb6, 0xfd, 0xfc, 
+0x72, 0xef, 0x3f, 0x3b, 0x8f, 0x12, 0x23, 0x4e, 
+0x17, 0x7c, 0x7d, 0x7b, 0xea, 0xff, 0xeb, 0xbb, 
+0x93, 0x19, 0x18, 0x18, 0x18, 0x18, 0x44, 0x95, 
+0x73, 0x51, 0x34, 0x23, 0x8b, 0x73, 0x0b, 0x9b, 
+0x61, 0xba, 0xfc, 0xe3, 0xb3, 0x2d, 0xff, 0xcf, 
+0x6e, 0x50, 0xfb, 0x7f, 0x76, 0x83, 0xda, 0xff, 
+0x8f, 0xcf, 0xb6, 0xfc, 0x27, 0x56, 0x9e, 0x09, 
+0xc6, 0xf8, 0xf3, 0xfb, 0x03, 0x03, 0x03, 0x03, 
+0x03, 0x83, 0x82, 0x61, 0x1d, 0x03, 0xbf, 0x94, 
+0x0f, 0x86, 0x0d, 0xfc, 0x52, 0x3e, 0x8c, 0x0a, 
+0x86, 0x75, 0x28, 0x6a, 0x51, 0x0c, 0xf8, 0xf6, 
+0xee, 0x14, 0xc3, 0xe3, 0x17, 0xbf, 0x19, 0xbe, 
+0xbd, 0x3b, 0x85, 0x33, 0xc4, 0xb1, 0xa9, 0x81, 
+0x1b, 0xf0, 0xfb, 0xfb, 0x53, 0x14, 0x1a, 0x1b, 
+0xc0, 0xa6, 0x06, 0xee, 0xd4, 0x4b, 0x5b, 0xd5, 
+0xff, 0x93, 0x12, 0xff, 0x7a, 0xde, 0x37, 0x19, 
+0x31, 0xa2, 0x51, 0x48, 0xda, 0x8b, 0x28, 0xcd, 
+0xef, 0x9e, 0x6e, 0xc3, 0x9e, 0x0e, 0xfe, 0xfc, 
+0x7a, 0x83, 0xa2, 0x30, 0x3c, 0x75, 0x2d, 0x03, 
+0x03, 0x03, 0x03, 0xc3, 0xca, 0xd9, 0xc1, 0x38, 
+0x0d, 0x83, 0x1b, 0xf0, 0xe8, 0xd9, 0x2f, 0x06, 
+0x35, 0xce, 0x3b, 0x58, 0x15, 0xfd, 0xfa, 0x82, 
+0x2a, 0xfe, 0xe8, 0xd9, 0x2f, 0xec, 0x2e, 0xf8, 
+0xfc, 0xe9, 0x2d, 0x56, 0x03, 0x70, 0x89, 0x63, 
+0x18, 0xf0, 0xf8, 0xc5, 0x6f, 0x14, 0xc9, 0xca, 
+0x4c, 0x71, 0xac, 0xe2, 0x2c, 0xcc, 0x38, 0x92, 
+0xf2, 0x96, 0xd9, 0x8a, 0x44, 0xc5, 0x84, 0x4f, 
+0xea, 0x7d, 0x46, 0x06, 0x6a, 0x01, 0x00, 0x9d, 
+0x30, 0x7b, 0x4d, 0x6a, 0xf4, 0x5c, 0x16, 0x00, 
+0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 
+0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/ssl.png b/source/bitmaps/icons/ssl.png
new file mode 100644 (file)
index 0000000..6db2227
Binary files /dev/null and b/source/bitmaps/icons/ssl.png differ
diff --git a/source/bitmaps/icons/sslwarning.cpp b/source/bitmaps/icons/sslwarning.cpp
new file mode 100644 (file)
index 0000000..a255aa9
--- /dev/null
@@ -0,0 +1,71 @@
+#include <iostream>
+
+#ifndef ICONS_SSLWARNING_CPP
+#define ICONS_SSLWARNING_CPP
+
+static unsigned char icons_sslwarning_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0xf3, 0xff, 
+0x61, 0x00, 0x00, 0x00, 0x06, 0x62, 0x4b, 0x47, 
+0x44, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0xa0, 
+0xbd, 0xa7, 0x93, 0x00, 0x00, 0x00, 0x09, 0x70, 
+0x48, 0x59, 0x73, 0x00, 0x00, 0x0b, 0x13, 0x00, 
+0x00, 0x0b, 0x13, 0x01, 0x00, 0x9a, 0x9c, 0x18, 
+0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4d, 0x45, 
+0x07, 0xde, 0x0c, 0x1f, 0x10, 0x0a, 0x1b, 0x45, 
+0xc6, 0xff, 0x21, 0x00, 0x00, 0x00, 0x1d, 0x69, 
+0x54, 0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 
+0x6e, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 
+0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 
+0x69, 0x74, 0x68, 0x20, 0x47, 0x49, 0x4d, 0x50, 
+0x64, 0x2e, 0x65, 0x07, 0x00, 0x00, 0x01, 0x52, 
+0x49, 0x44, 0x41, 0x54, 0x38, 0xcb, 0xa5, 0x93, 
+0xcb, 0x4a, 0x42, 0x51, 0x14, 0x86, 0xbf, 0xdd, 
+0xc5, 0xb2, 0x02, 0xa9, 0x10, 0xd1, 0x26, 0x5a, 
+0xa0, 0x83, 0x48, 0x70, 0x60, 0x8f, 0xd0, 0x20, 
+0x1d, 0x34, 0xeb, 0x09, 0x1c, 0xf6, 0x0a, 0x3e, 
+0x40, 0xd3, 0x86, 0x3e, 0x43, 0x60, 0xa0, 0x3d, 
+0x84, 0xe2, 0x20, 0x1b, 0x19, 0x65, 0x90, 0x78, 
+0xd2, 0x4a, 0x53, 0x30, 0xe5, 0x78, 0x61, 0x35, 
+0x31, 0x69, 0x7b, 0xce, 0xa1, 0xa2, 0x35, 0xd9, 
+0x9b, 0xb5, 0xff, 0xf5, 0xff, 0x6b, 0xaf, 0x0b, 
+0xfc, 0xd3, 0x94, 0x9d, 0x73, 0x38, 0x78, 0x16, 
+0x3b, 0xbf, 0xcb, 0xed, 0xb7, 0xe0, 0x97, 0xe6, 
+0x1d, 0x66, 0xaf, 0x2a, 0x2f, 0x95, 0x73, 0x5b, 
+0x35, 0xb3, 0x57, 0x95, 0x95, 0x8d, 0x5d, 0xe5, 
+0x98, 0xc1, 0x47, 0xab, 0x20, 0xaf, 0x0f, 0x17, 
+0x00, 0x78, 0xf7, 0xce, 0xb4, 0xe0, 0xef, 0xfe, 
+0xf5, 0xed, 0x43, 0x6b, 0xe6, 0x5d, 0x23, 0x27, 
+0xa5, 0x6c, 0x58, 0x4a, 0xd9, 0xb0, 0x74, 0x8d, 
+0x9c, 0xfc, 0xf6, 0x7d, 0xe1, 0xeb, 0x32, 0x1e, 
+0x75, 0x00, 0x08, 0xc6, 0xd2, 0x78, 0x02, 0x49, 
+0x8b, 0x82, 0x27, 0x90, 0x54, 0xc1, 0x58, 0x5a, 
+0xc3, 0x6a, 0x04, 0xfd, 0x76, 0x81, 0x5a, 0x63, 
+0x44, 0xbf, 0x5d, 0x70, 0xac, 0xb8, 0x1d, 0x66, 
+0x46, 0x30, 0x1a, 0xd4, 0xb5, 0x73, 0xde, 0x04, 
+0xc4, 0x0e, 0x33, 0x4b, 0xb5, 0x9c, 0x8f, 0x88, 
+0x93, 0xf2, 0x41, 0xa2, 0x02, 0x22, 0xa0, 0x14, 
+0xb7, 0xf9, 0x08, 0x00, 0xd1, 0x44, 0x45, 0x59, 
+0xda, 0xb8, 0xb5, 0x73, 0x6c, 0x4b, 0xd0, 0xa4, 
+0x82, 0x0f, 0x68, 0x4e, 0x31, 0xed, 0xfa, 0xb5, 
+0xfd, 0x1c, 0x8c, 0x87, 0x6f, 0x5a, 0xe0, 0x69, 
+0xea, 0x92, 0xab, 0x9b, 0x3e, 0x3e, 0x11, 0x94, 
+0x52, 0x88, 0x08, 0x4d, 0xa5, 0x60, 0x9a, 0x85, 
+0x46, 0xf0, 0x64, 0x0c, 0x09, 0xbb, 0xef, 0x2d, 
+0xea, 0x2d, 0x60, 0x62, 0x18, 0x00, 0x18, 0x86, 
+0x41, 0x67, 0x8a, 0xb5, 0xd4, 0x20, 0x97, 0x09, 
+0x89, 0xdf, 0xbb, 0xac, 0x05, 0xaf, 0x9e, 0xdc, 
+0x31, 0x29, 0x97, 0x2d, 0xa4, 0x8b, 0xd1, 0x28, 
+0xfb, 0xd3, 0x58, 0xed, 0x0b, 0xb5, 0xc6, 0x48, 
+0x03, 0xae, 0x01, 0x9b, 0xa6, 0x09, 0x40, 0x3c, 
+0x1e, 0xa7, 0x58, 0x2c, 0x02, 0xf0, 0xee, 0x34, 
+0xca, 0xb9, 0x4c, 0x68, 0xd6, 0x09, 0x57, 0xea, 
+0xf1, 0xc7, 0x4d, 0x3c, 0x72, 0x58, 0xc6, 0x3f, 
+0xd9, 0x27, 0x66, 0x7e, 0x95, 0x5e, 0x15, 0x2f, 
+0x4c, 0x81, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 
+0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/icons/sslwarning.png b/source/bitmaps/icons/sslwarning.png
new file mode 100644 (file)
index 0000000..d22af5f
Binary files /dev/null and b/source/bitmaps/icons/sslwarning.png differ
diff --git a/source/bitmaps/misc.h b/source/bitmaps/misc.h
new file mode 100644 (file)
index 0000000..170f9eb
--- /dev/null
@@ -0,0 +1,24 @@
+#include <iostream>
+
+#ifndef MISC_H
+#define MISC_H
+
+// List all CPP files in the directory.
+
+#include "misc/emptyimage.cpp"
+#include "misc/activity3.cpp"
+#include "misc/activity11.cpp"
+#include "misc/activity2.cpp"
+#include "misc/activity8.cpp"
+#include "misc/activity4.cpp"
+#include "misc/activity10.cpp"
+#include "misc/activity6.cpp"
+#include "misc/activity12.cpp"
+#include "misc/activity9.cpp"
+#include "misc/activity7.cpp"
+#include "misc/activitysleep.cpp"
+#include "misc/activity5.cpp"
+#include "misc/activity1.cpp"
+
+#endif
+
diff --git a/source/bitmaps/misc/.directory b/source/bitmaps/misc/.directory
new file mode 100644 (file)
index 0000000..415dd27
--- /dev/null
@@ -0,0 +1,4 @@
+[Dolphin]
+PreviewsShown=true
+Timestamp=2013,10,2,20,18,2
+Version=3
diff --git a/source/bitmaps/misc/activity1.cpp b/source/bitmaps/misc/activity1.cpp
new file mode 100644 (file)
index 0000000..90a111d
--- /dev/null
@@ -0,0 +1,554 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY1_CPP
+#define MISC_ACTIVITY1_CPP
+
+static unsigned char misc_activity1_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x7f, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0x6b, 
+0x6c, 0x1c, 0xd7, 0x75, 0xc7, 0x7f, 0xf7, 0xce, 
+0xec, 0xec, 0x93, 0xfb, 0xe0, 0x6b, 0x49, 0x51, 
+0xa4, 0x28, 0xcb, 0x95, 0x28, 0x3f, 0x44, 0x0b, 
+0x96, 0x8c, 0xd8, 0x96, 0x63, 0x05, 0x6e, 0x6a, 
+0xd5, 0x68, 0x6c, 0xd9, 0x09, 0xd2, 0x24, 0x30, 
+0x82, 0x02, 0x6d, 0xed, 0x20, 0x9f, 0x12, 0xf4, 
+0x53, 0x80, 0x7c, 0xe8, 0xf7, 0xa2, 0x40, 0x8b, 
+0x36, 0x48, 0xdc, 0x06, 0x68, 0x91, 0xc8, 0xb5, 
+0xd3, 0x04, 0x88, 0x53, 0x5b, 0x51, 0x1b, 0xca, 
+0xb0, 0x21, 0x38, 0x55, 0x6a, 0x9b, 0x92, 0xe5, 
+0xda, 0xb2, 0x2d, 0x4a, 0x24, 0xf5, 0xa0, 0x24, 
+0x3e, 0x24, 0x8a, 0xbb, 0xdc, 0xe5, 0xce, 0xbb, 
+0x1f, 0x66, 0x67, 0x39, 0xbb, 0xdc, 0xe5, 0xee, 
+0x8a, 0x74, 0xd2, 0xa2, 0x07, 0x38, 0x98, 0x7d, 
+0xdc, 0x99, 0xb9, 0xe7, 0x7f, 0x1e, 0xf7, 0xde, 
+0x73, 0xcf, 0x15, 0xae, 0xeb, 0xf2, 0x69, 0x92, 
+0x10, 0x42, 0x34, 0xfa, 0xab, 0xce, 0x6f, 0x6b, 
+0x3a, 0xe3, 0x7e, 0xca, 0x1d, 0x54, 0x3f, 0x8d, 
+0x87, 0xd6, 0x08, 0x2d, 0x1a, 0x5c, 0x1b, 0x91, 
+0x1b, 0xbc, 0xd6, 0xe2, 0xb7, 0xd9, 0x80, 0x88, 
+0xcd, 0x7a, 0x5e, 0x1d, 0xa1, 0x45, 0xcd, 0x67, 
+0x59, 0xe7, 0xb7, 0x20, 0x05, 0x05, 0x5f, 0x8f, 
+0xbd, 0x46, 0x9b, 0xd4, 0xf1, 0x0d, 0x5b, 0x40, 
+0x03, 0xc1, 0x65, 0xe0, 0x5a, 0x8f, 0x05, 0xd5, 
+0x20, 0xf8, 0xc2, 0x38, 0xe5, 0xcf, 0x4e, 0x03, 
+0xae, 0x00, 0xe1, 0xbf, 0x76, 0xa3, 0x40, 0x6c, 
+0x08, 0x80, 0x80, 0xf0, 0xb5, 0x42, 0x2b, 0x01, 
+0x56, 0xcb, 0xac, 0xd4, 0x70, 0xad, 0x15, 0x04, 
+0x05, 0xb5, 0x00, 0xbb, 0xce, 0xd5, 0xa6, 0x06, 
+0x8c, 0x8d, 0x02, 0x71, 0x5b, 0x2e, 0x50, 0x23, 
+0x78, 0xad, 0xd0, 0x2a, 0x10, 0x0a, 0xb0, 0x56, 
+0x66, 0xff, 0xbb, 0x0f, 0x48, 0xd0, 0x12, 0x7c, 
+0xad, 0xfb, 0xc2, 0x9a, 0x65, 0x36, 0x6a, 0xae, 
+0x3e, 0xd7, 0x03, 0xe3, 0xb6, 0x40, 0x68, 0xdb, 
+0x02, 0x02, 0xc2, 0xfb, 0x02, 0x04, 0xb5, 0xac, 
+0x01, 0xe1, 0x32, 0x47, 0xca, 0x1c, 0x0d, 0x7c, 
+0xf7, 0xc1, 0xf0, 0x2d, 0xc2, 0x07, 0x20, 0xa8, 
+0x79, 0x5f, 0x60, 0xbd, 0xcc, 0x25, 0x60, 0xa5, 
+0x7c, 0x2d, 0x95, 0x7f, 0xf3, 0x01, 0xf1, 0x2d, 
+0xc3, 0xa1, 0x6c, 0x0d, 0xed, 0x82, 0xd0, 0x16, 
+0x00, 0x65, 0xe1, 0x7d, 0xf6, 0x35, 0xee, 0x6b, 
+0xd9, 0x17, 0x38, 0x06, 0xc4, 0x03, 0x1c, 0x03, 
+0x62, 0xbd, 0xbd, 0xbd, 0x03, 0x03, 0x03, 0x03, 
+0x23, 0x91, 0x48, 0xa4, 0x33, 0x12, 0x89, 0xa4, 
+0x35, 0x4d, 0x4b, 0x6a, 0x9a, 0x96, 0x94, 0x52, 
+0x86, 0x0c, 0xc3, 0xc8, 0x1b, 0x86, 0x91, 0xd3, 
+0x75, 0xfd, 0x96, 0xae, 0xeb, 0x8b, 0xb7, 0x6e, 
+0xdd, 0xba, 0x72, 0xe1, 0xc2, 0x85, 0x8f, 0x1c, 
+0xc7, 0x29, 0x00, 0x45, 0xa0, 0x10, 0xe0, 0x62, 
+0x00, 0x10, 0xbd, 0x16, 0x88, 0x76, 0x5d, 0xa2, 
+0x65, 0x17, 0x08, 0x08, 0xef, 0x9b, 0xbb, 0xaf, 
+0x71, 0x5f, 0xcb, 0x71, 0xa0, 0xa3, 0xcc, 0x49, 
+0xa0, 0x63, 0x68, 0x68, 0x68, 0xd7, 0xe0, 0xe0, 
+0xe0, 0xbe, 0xee, 0xee, 0xee, 0xbb, 0x63, 0xb1, 
+0x58, 0xb6, 0xa5, 0x17, 0x95, 0xc9, 0xb2, 0xac, 
+0xe2, 0xe2, 0xe2, 0xe2, 0x27, 0xd7, 0xaf, 0x5f, 
+0x3f, 0x3d, 0x31, 0x31, 0xf1, 0x9e, 0xae, 0xeb, 
+0x37, 0x80, 0x1c, 0x90, 0x2f, 0xf3, 0x32, 0xab, 
+0x60, 0xf8, 0x16, 0x11, 0x74, 0x8b, 0x96, 0x40, 
+0x68, 0x09, 0x80, 0x3a, 0xc2, 0x87, 0xf0, 0xcc, 
+0x3a, 0x0a, 0x24, 0xca, 0x42, 0xa7, 0x81, 0x14, 
+0xd0, 0x79, 0xdf, 0x7d, 0xf7, 0x7d, 0x76, 0xc7, 
+0x8e, 0x1d, 0x87, 0x22, 0x91, 0x48, 0x97, 0xff, 
+0x0c, 0xc5, 0x54, 0xc9, 0xcc, 0x75, 0x12, 0x59, 
+0x8e, 0xa2, 0x95, 0x34, 0x42, 0xba, 0x86, 0x56, 
+0x0a, 0x23, 0x6d, 0x89, 0x19, 0x31, 0x30, 0xc2, 
+0x06, 0x46, 0x44, 0xc7, 0x88, 0xea, 0xdc, 0xea, 
+0x5d, 0xa4, 0x14, 0x5f, 0xa9, 0xbc, 0xdf, 0x71, 
+0x1c, 0xf3, 0xda, 0xb5, 0x6b, 0xbf, 0x19, 0x1f, 
+0x1f, 0x7f, 0x35, 0x9f, 0xcf, 0x5f, 0x05, 0x16, 
+0x81, 0xa5, 0x00, 0x20, 0x45, 0x56, 0x5d, 0xc3, 
+0x6a, 0x07, 0x84, 0xa6, 0x00, 0xd4, 0x08, 0xef, 
+0x07, 0xb8, 0x08, 0xab, 0x1a, 0x4f, 0x01, 0x9d, 
+0x40, 0xe7, 0xc8, 0xc8, 0xc8, 0x67, 0x76, 0xef, 
+0xde, 0xfd, 0x64, 0x3c, 0x1e, 0xef, 0x07, 0x08, 
+0x95, 0x34, 0x32, 0xd7, 0x3b, 0xc9, 0x5c, 0xed, 
+0x26, 0xb9, 0x90, 0x42, 0x38, 0xcd, 0xe6, 0x40, 
+0xab, 0xb4, 0xd2, 0x51, 0x64, 0x71, 0xcb, 0x0d, 
+0x16, 0xfb, 0x6f, 0x50, 0x48, 0x2f, 0x03, 0x60, 
+0xdb, 0xb6, 0x7e, 0xf9, 0xf2, 0xe5, 0x37, 0xde, 
+0x79, 0xe7, 0x9d, 0xa3, 0xba, 0xae, 0xcf, 0x02, 
+0x37, 0xcb, 0x60, 0xe4, 0xf0, 0xdc, 0x63, 0xa5, 
+0x0c, 0x44, 0xcb, 0x20, 0xac, 0x0b, 0x40, 0x03, 
+0xe1, 0x7d, 0x73, 0x4f, 0x01, 0x19, 0xa0, 0x3b, 
+0x95, 0x4a, 0x0d, 0x3f, 0xfa, 0xe8, 0xa3, 0x7f, 
+0x96, 0x4e, 0xa7, 0x77, 0x7a, 0x82, 0x87, 0xe8, 
+0xff, 0x68, 0x2b, 0x5d, 0x97, 0x7a, 0x10, 0x6e, 
+0xeb, 0x42, 0x37, 0xa2, 0x62, 0xaa, 0xc0, 0xcc, 
+0x3d, 0x97, 0xc8, 0xf7, 0xe4, 0x00, 0x30, 0x4d, 
+0x33, 0x7f, 0xe6, 0xcc, 0x99, 0x23, 0x67, 0xcf, 
+0x9e, 0x3d, 0x09, 0x2c, 0x00, 0x37, 0xf0, 0x2c, 
+0x22, 0x68, 0x0d, 0x2d, 0x81, 0xd0, 0x10, 0x80, 
+0x3a, 0x66, 0xaf, 0xb1, 0x6a, 0xf2, 0x69, 0xa0, 
+0x0b, 0xe8, 0x19, 0x1a, 0x1a, 0x1a, 0x7d, 0xf0, 
+0xc1, 0x07, 0x9f, 0x8b, 0x44, 0x22, 0x69, 0x69, 
+0x49, 0x7a, 0x26, 0xfa, 0xe9, 0x39, 0x9f, 0x45, 
+0xda, 0x72, 0xc3, 0x82, 0xd7, 0x52, 0x3e, 0xbb, 
+0xc4, 0xb5, 0xbb, 0xaf, 0x50, 0x4a, 0xae, 0x00, 
+0x38, 0xe7, 0xce, 0x9d, 0x3b, 0x7a, 0xf2, 0xe4, 
+0xc9, 0x57, 0x80, 0x39, 0x3c, 0x20, 0x16, 0x59, 
+0x0b, 0x82, 0x8d, 0x27, 0x7f, 0xeb, 0x00, 0xd4, 
+0x0c, 0x75, 0xf5, 0x84, 0xef, 0x01, 0x7a, 0x47, 
+0x47, 0x47, 0x1f, 0x1b, 0x1d, 0x1d, 0xfd, 0x9a, 
+0xa2, 0x28, 0x5a, 0x74, 0x31, 0xc6, 0xe0, 0x7f, 
+0x0d, 0xa3, 0x96, 0x42, 0x2d, 0x0b, 0xa4, 0x68, 
+0x0a, 0xe1, 0x54, 0x98, 0xe2, 0x7c, 0xb1, 0xe5, 
+0x7b, 0x10, 0x30, 0x3f, 0x72, 0x9d, 0xf9, 0x5d, 
+0xb3, 0x00, 0xcc, 0xce, 0xce, 0x8e, 0x8f, 0x8d, 
+0x8d, 0xfd, 0xd0, 0x34, 0xcd, 0xab, 0xc0, 0x3c, 
+0x9e, 0x5b, 0xe4, 0x58, 0x6b, 0x09, 0x75, 0x41, 
+0x58, 0x0f, 0x00, 0x7f, 0xa8, 0xf3, 0xcd, 0x3e, 
+0x41, 0xd9, 0xe4, 0x81, 0xbe, 0x87, 0x1f, 0x7e, 
+0xf8, 0x99, 0x9d, 0x3b, 0x77, 0x1e, 0x16, 0x42, 
+0x88, 0xe4, 0xe5, 0x34, 0xd9, 0xd3, 0x5b, 0xda, 
+0xf2, 0x71, 0x00, 0x2d, 0x1e, 0xe2, 0xd0, 0xdf, 
+0xfc, 0x01, 0xc7, 0xbf, 0xf3, 0x06, 0xc5, 0x85, 
+0x36, 0x40, 0x00, 0xf2, 0x5b, 0x72, 0x5c, 0xbf, 
+0x7f, 0x06, 0x57, 0x71, 0xc8, 0xe5, 0x72, 0x53, 
+0xaf, 0xbe, 0xfa, 0xea, 0x5f, 0xe9, 0xba, 0x7e, 
+0x05, 0xcf, 0x1a, 0x82, 0x20, 0x54, 0x02, 0x63, 
+0x3d, 0x00, 0xd6, 0xd8, 0x69, 0x1d, 0xbf, 0xf7, 
+0xb5, 0xdf, 0x81, 0x07, 0x40, 0xcf, 0xbd, 0xf7, 
+0xde, 0xfb, 0xd9, 0xdd, 0xbb, 0x77, 0x1f, 0x56, 
+0x14, 0x45, 0xf4, 0x9c, 0xcd, 0xd2, 0x7b, 0xba, 
+0x1f, 0x17, 0x17, 0x47, 0x3a, 0x6d, 0x73, 0x6a, 
+0x5b, 0x92, 0x43, 0x7f, 0xfb, 0x79, 0x22, 0x3d, 
+0x91, 0xb6, 0xee, 0x8b, 0x5f, 0x4f, 0x30, 0xf8, 
+0xd6, 0x30, 0x9a, 0xae, 0x91, 0x4e, 0xa7, 0xb7, 
+0x3f, 0xfe, 0xf8, 0xe3, 0xcf, 0x03, 0xbd, 0x78, 
+0x01, 0x39, 0x89, 0x37, 0xff, 0x08, 0xb3, 0x3a, 
+0xe9, 0x92, 0xf5, 0x96, 0xe6, 0x55, 0x00, 0xd4, 
+0x4c, 0x71, 0xfd, 0xb1, 0xde, 0x8f, 0xf8, 0x29, 
+0xa0, 0x6b, 0x70, 0x70, 0xf0, 0xee, 0xfd, 0xfb, 
+0xf7, 0x7f, 0x5d, 0x08, 0x21, 0x32, 0x1f, 0x77, 
+0x91, 0xb8, 0x90, 0xc2, 0x16, 0xf6, 0x6d, 0xb2, 
+0x83, 0x12, 0x56, 0xe8, 0xdc, 0x91, 0xe6, 0x0b, 
+0x2f, 0x3c, 0x41, 0xb8, 0x3b, 0xdc, 0xd6, 0xfd, 
+0x4a, 0x4e, 0xa5, 0xf7, 0xe4, 0x16, 0xa4, 0xad, 
+0x90, 0xcd, 0x66, 0x47, 0x0f, 0x1e, 0x3c, 0xf8, 
+0x25, 0x3c, 0xf7, 0xcc, 0x94, 0x15, 0x16, 0x2d, 
+0x2b, 0xb0, 0x32, 0xeb, 0xac, 0x05, 0xa1, 0x5e, 
+0xa4, 0xaa, 0x17, 0xf8, 0x3a, 0x80, 0x4c, 0x32, 
+0x99, 0x1c, 0xfc, 0xdc, 0xe7, 0x3e, 0xf7, 0x8d, 
+0x50, 0x28, 0x14, 0x8e, 0x5f, 0x4b, 0x90, 0x98, 
+0x48, 0xdd, 0x96, 0xd6, 0x2b, 0xac, 0x38, 0x48, 
+0x4d, 0xa2, 0x44, 0x54, 0x7a, 0x76, 0x75, 0xf3, 
+0xc5, 0x7f, 0x3a, 0x4c, 0xb8, 0x2b, 0xdc, 0xd6, 
+0x33, 0x94, 0x82, 0x4a, 0xd7, 0xa9, 0x5e, 0xa4, 
+0x90, 0xec, 0xdc, 0xb9, 0xf3, 0xf1, 0xbd, 0x7b, 
+0xf7, 0x7e, 0xb6, 0x81, 0x15, 0x04, 0x97, 0xe3, 
+0x15, 0xaa, 0x37, 0x15, 0x0e, 0x9a, 0x7f, 0xb8, 
+0xac, 0xfd, 0x24, 0xd0, 0xf9, 0xd8, 0x63, 0x8f, 
+0x7d, 0x3d, 0x16, 0x8b, 0x75, 0xa9, 0x4b, 0x21, 
+0x3a, 0xde, 0xcb, 0x60, 0x4b, 0xbb, 0xce, 0xed, 
+0x8d, 0x29, 0xd6, 0x19, 0xa3, 0x6b, 0x7b, 0x27, 
+0x89, 0xde, 0x38, 0xc9, 0xbe, 0x24, 0xe9, 0xa1, 
+0x34, 0x52, 0x95, 0xc8, 0x90, 0x44, 0x8d, 0xaa, 
+0xf4, 0xdd, 0xdd, 0xcb, 0x97, 0xff, 0xf9, 0x19, 
+0x5e, 0xfa, 0x93, 0x7f, 0x65, 0x65, 0xa9, 0xd4, 
+0xf2, 0x73, 0x43, 0x73, 0x1a, 0x1d, 0x1f, 0xa7, 
+0x58, 0xbe, 0x2b, 0x27, 0xf6, 0xdd, 0xbf, 0xef, 
+0xd9, 0xc9, 0xc9, 0xc9, 0x8f, 0x97, 0x96, 0x96, 
+0x8a, 0x54, 0xaf, 0x1d, 0xfc, 0x60, 0x28, 0x82, 
+0x6b, 0x86, 0x0a, 0x00, 0xcd, 0x86, 0xbd, 0x1d, 
+0x3b, 0x76, 0xdc, 0x93, 0xcd, 0x66, 0x47, 0x85, 
+0x2b, 0xe8, 0x78, 0x37, 0x8d, 0xeb, 0x38, 0xb4, 
+0x32, 0xc4, 0x4b, 0x55, 0xd2, 0x73, 0x67, 0x37, 
+0x43, 0xfb, 0x87, 0xe8, 0xbf, 0x3b, 0x4b, 0x38, 
+0x11, 0x46, 0x4b, 0x84, 0x09, 0x27, 0x34, 0xc2, 
+0xf1, 0x30, 0x2e, 0x2e, 0x42, 0x0a, 0x14, 0x55, 
+0xa2, 0x86, 0x55, 0xb2, 0x77, 0x65, 0xf9, 0xd2, 
+0x0f, 0x9e, 0xe6, 0x27, 0xcf, 0xff, 0x94, 0x52, 
+0x5e, 0x6f, 0x19, 0x84, 0xc8, 0xf9, 0x18, 0x46, 
+0x56, 0xc7, 0xec, 0x36, 0xc2, 0x07, 0x0e, 0x1c, 
+0x38, 0x7c, 0xf4, 0xe8, 0xd1, 0x17, 0x58, 0x5d, 
+0x3b, 0xf8, 0x6b, 0x06, 0x9b, 0x9a, 0xc4, 0x4a, 
+0xad, 0x05, 0xd4, 0x0b, 0x7e, 0x09, 0x20, 0xbd, 
+0x7f, 0xff, 0xfe, 0xa7, 0x15, 0x45, 0x11, 0xda, 
+0x64, 0x04, 0x56, 0x04, 0xb6, 0x74, 0x9a, 0x76, 
+0x2a, 0x9a, 0x8a, 0x32, 0xf2, 0xf9, 0x5d, 0xa4, 
+0xb7, 0xa4, 0x08, 0x27, 0x34, 0x1c, 0x5c, 0x8f, 
+0x5d, 0x07, 0xc7, 0xf1, 0xae, 0xae, 0xe3, 0xe2, 
+0x3a, 0x0e, 0x4e, 0x99, 0xc1, 0x25, 0x33, 0x94, 
+0xa6, 0x63, 0x28, 0x49, 0xe1, 0xa3, 0xd9, 0x96, 
+0x01, 0x00, 0x88, 0x7c, 0x14, 0xc7, 0x7e, 0xd4, 
+0x62, 0x68, 0x68, 0xe8, 0x33, 0x5b, 0xb6, 0x6c, 
+0x19, 0xbb, 0x7a, 0xf5, 0x6a, 0x8e, 0xd5, 0x35, 
+0x43, 0x70, 0x48, 0xac, 0x58, 0x81, 0x04, 0x6a, 
+0x57, 0x79, 0x41, 0xf3, 0x8f, 0x01, 0xc9, 0x3d, 
+0x7b, 0xf6, 0xdc, 0xdf, 0xdd, 0xdd, 0x7d, 0xa7, 
+0xb4, 0x24, 0xa1, 0x73, 0x61, 0x1c, 0x61, 0x37, 
+0xe5, 0xd4, 0xd6, 0x0e, 0x76, 0xfd, 0xfe, 0x9d, 
+0x84, 0x93, 0x21, 0x1c, 0xd7, 0x2e, 0x0b, 0xed, 
+0xe0, 0x38, 0x36, 0x8e, 0xed, 0x60, 0x19, 0x26, 
+0xf9, 0xf9, 0x3c, 0x8e, 0x6d, 0x63, 0x99, 0x36, 
+0x96, 0x6e, 0x61, 0xae, 0x98, 0x94, 0x72, 0x25, 
+0x7e, 0xf2, 0xed, 0x9f, 0x71, 0xf5, 0xe3, 0xab, 
+0x2d, 0xbd, 0x27, 0xc8, 0x62, 0x49, 0x10, 0x9a, 
+0xd1, 0x50, 0x14, 0x45, 0x79, 0xe8, 0xa1, 0x87, 
+0x0e, 0xe3, 0xb9, 0x6e, 0xbc, 0xac, 0xc8, 0x10, 
+0xe5, 0xd1, 0x20, 0x08, 0x5a, 0xad, 0x05, 0x04, 
+0x17, 0x3b, 0x95, 0xf9, 0xfe, 0xe8, 0xe8, 0xe8, 
+0x1f, 0x4a, 0x29, 0x51, 0x2e, 0x68, 0x38, 0x96, 
+0x0b, 0x72, 0xfd, 0xf5, 0x43, 0x2c, 0x1d, 0x25, 
+0x7b, 0x4f, 0x1f, 0x8e, 0x74, 0xb1, 0x1d, 0x07, 
+0xcb, 0xb1, 0xa1, 0x64, 0x70, 0xfd, 0xfc, 0x2c, 
+0x33, 0x1f, 0x5e, 0x65, 0xf1, 0xca, 0x22, 0x7a, 
+0xc1, 0x20, 0x1c, 0xd7, 0xf8, 0xc6, 0xcb, 0x7f, 
+0x8e, 0x50, 0x04, 0x42, 0x80, 0x5e, 0x30, 0x78, 
+0xf9, 0x2f, 0x7e, 0xca, 0xf4, 0x7b, 0x17, 0xeb, 
+0x87, 0xe7, 0x16, 0x48, 0xf9, 0x38, 0x8c, 0x33, 
+0x60, 0xd3, 0xdf, 0xdf, 0x3f, 0x3a, 0x30, 0x30, 
+0x30, 0x3c, 0x33, 0x33, 0xe3, 0x2f, 0x9c, 0xb4, 
+0x80, 0x15, 0xf8, 0x49, 0x98, 0x2a, 0x00, 0x82, 
+0x93, 0x1f, 0x3f, 0xb1, 0x11, 0xcb, 0x64, 0x32, 
+0xd9, 0xce, 0xce, 0xce, 0x61, 0x1c, 0x10, 0x17, 
+0x25, 0x8e, 0x58, 0x3f, 0xf0, 0x29, 0xaa, 0x42, 
+0xf7, 0x9d, 0x5d, 0xd8, 0x8e, 0x85, 0x65, 0x2b, 
+0x28, 0xb6, 0x42, 0xee, 0x52, 0x8e, 0x4f, 0x4e, 
+0x9c, 0x43, 0x2f, 0x04, 0x7c, 0x5a, 0x80, 0x83, 
+0x8d, 0xa9, 0x9b, 0x20, 0xc0, 0xd4, 0x2d, 0x7e, 
+0xfe, 0x97, 0xbf, 0x60, 0x6a, 0x7c, 0xba, 0x79, 
+0xde, 0x78, 0x3d, 0x2a, 0x81, 0x9c, 0x53, 0x70, 
+0xb7, 0x38, 0x62, 0xf7, 0xee, 0xdd, 0x0f, 0xcc, 
+0xcc, 0xcc, 0x9c, 0xa3, 0x7a, 0x38, 0xac, 0x64, 
+0xa2, 0x84, 0x10, 0x6b, 0x00, 0xa8, 0xb5, 0x80, 
+0xd8, 0x9e, 0x3d, 0x7b, 0xf6, 0x49, 0x29, 0x85, 
+0xbb, 0x20, 0xb0, 0x6d, 0xbb, 0xa9, 0x66, 0x52, 
+0x5b, 0x52, 0xb8, 0x8a, 0x8b, 0xe5, 0x58, 0x28, 
+0x8e, 0xc2, 0x8d, 0xf3, 0x37, 0x3c, 0xa1, 0x60, 
+0xcd, 0xbd, 0x96, 0xb4, 0x31, 0x0d, 0x13, 0xdb, 
+0xb6, 0x39, 0xfa, 0xd7, 0xc7, 0x98, 0x3a, 0x35, 
+0x7d, 0xdb, 0x9a, 0x0f, 0x92, 0x98, 0x15, 0xc8, 
+0xad, 0x92, 0xc1, 0xc1, 0xc1, 0x7b, 0x59, 0x75, 
+0x01, 0x3f, 0x13, 0x55, 0x35, 0x1c, 0xaa, 0x0d, 
+0xfc, 0xdf, 0x07, 0x20, 0x3a, 0x38, 0x38, 0x78, 
+0xaf, 0x10, 0x02, 0xe7, 0xba, 0x8b, 0x23, 0xd6, 
+0x37, 0x7d, 0xa9, 0x48, 0x42, 0x31, 0x15, 0xd3, 
+0xf2, 0x84, 0x37, 0x6f, 0x99, 0x4c, 0x9d, 0x99, 
+0xc6, 0x11, 0xf5, 0x03, 0xa6, 0x83, 0x43, 0xa9, 
+0x50, 0xe2, 0xf5, 0x7f, 0x78, 0x83, 0xa9, 0xd3, 
+0xd3, 0x1b, 0xd3, 0x7c, 0x90, 0x66, 0x21, 0xe4, 
+0x0a, 0x32, 0x99, 0xcc, 0x50, 0x26, 0x93, 0xe9, 
+0x5e, 0x5c, 0x5c, 0x9c, 0xa5, 0x1a, 0x00, 0x49, 
+0x79, 0x7d, 0x10, 0xcc, 0xcb, 0x05, 0x35, 0x9f, 
+0x00, 0xd2, 0xd1, 0x68, 0x74, 0xcb, 0xc1, 0x47, 
+0x0f, 0x7e, 0x55, 0x2a, 0x52, 0x31, 0xde, 0xf7, 
+0x82, 0x97, 0x2b, 0xdc, 0x86, 0x1c, 0xee, 0x08, 
+0xa3, 0x46, 0x54, 0x44, 0x08, 0x84, 0x22, 0x98, 
+0x9d, 0x9a, 0xa5, 0x58, 0x58, 0x69, 0xd8, 0x5e, 
+0xa8, 0x82, 0xb9, 0x8b, 0xf3, 0x4c, 0x9e, 0x99, 
+0x5a, 0xf7, 0xb9, 0x6d, 0xb3, 0xeb, 0xa2, 0x74, 
+0x4b, 0x94, 0x84, 0x14, 0xae, 0xeb, 0xde, 0x9c, 
+0x9e, 0x9e, 0xfe, 0x84, 0xd5, 0x7c, 0x81, 0x41, 
+0x20, 0x8f, 0xe8, 0xbb, 0x40, 0x6d, 0xae, 0x4f, 
+0x05, 0xb4, 0xed, 0xdb, 0xb7, 0x0f, 0x29, 0xaa, 
+0x12, 0x72, 0xf2, 0x0e, 0xb6, 0x6e, 0x37, 0xd7, 
+0x90, 0x0a, 0x96, 0x6d, 0xa2, 0x58, 0x12, 0x69, 
+0x4a, 0x96, 0x16, 0x73, 0x0d, 0xb5, 0x0f, 0xa0, 
+0x1b, 0x3a, 0x93, 0xef, 0x4f, 0x6d, 0x9e, 0xe6, 
+0x03, 0x64, 0x2f, 0x38, 0xa8, 0x59, 0x85, 0x9e, 
+0x9e, 0x9e, 0x6d, 0x78, 0xf1, 0xcc, 0xcf, 0x48, 
+0x57, 0xa5, 0xe4, 0xeb, 0x8d, 0x02, 0x15, 0x37, 
+0x48, 0xa7, 0xd3, 0xdd, 0x52, 0x4a, 0x6c, 0xdd, 
+0xc1, 0x69, 0x32, 0xeb, 0x13, 0x42, 0x60, 0xb9, 
+0x26, 0x86, 0x2d, 0x11, 0xb6, 0x40, 0x5f, 0x2a, 
+0x61, 0xb9, 0xe6, 0xa6, 0xf8, 0xf4, 0xed, 0x90, 
+0xa3, 0x4b, 0xa4, 0x94, 0xc4, 0x62, 0xb1, 0x14, 
+0x0d, 0x84, 0x07, 0x44, 0xbd, 0x51, 0xa0, 0x92, 
+0xf4, 0xec, 0xe8, 0xe8, 0xc8, 0x08, 0x21, 0x70, 
+0x4a, 0x0e, 0x76, 0x93, 0xe8, 0x0f, 0x60, 0x58, 
+0x3a, 0xc2, 0x12, 0x08, 0x4b, 0x50, 0xcc, 0x15, 
+0x5b, 0xba, 0xa7, 0x55, 0x2a, 0x4f, 0x5c, 0x5a, 
+0x6e, 0x6f, 0xe9, 0x02, 0x21, 0x04, 0xd1, 0x68, 
+0x34, 0x49, 0x60, 0x45, 0x48, 0xf5, 0x7e, 0x04, 
+0x41, 0x17, 0xf0, 0xaf, 0x7e, 0x23, 0x25, 0x91, 
+0x48, 0xa4, 0xa4, 0x94, 0x38, 0x86, 0xb7, 0xf0, 
+0x68, 0x46, 0x86, 0x65, 0x22, 0x2c, 0xe9, 0x01, 
+0xb0, 0x52, 0x6c, 0xe9, 0x9e, 0x56, 0x49, 0x2a, 
+0xd2, 0x9b, 0x35, 0xb6, 0x08, 0x82, 0xa5, 0xdb, 
+0x48, 0x29, 0x7d, 0x00, 0xaa, 0x86, 0xbf, 0x60, 
+0x3b, 0x95, 0x6a, 0xe1, 0xab, 0x38, 0x91, 0x48, 
+0xa4, 0x84, 0x10, 0x98, 0x25, 0xab, 0x25, 0x6d, 
+0xda, 0xae, 0x0d, 0x16, 0x08, 0x0b, 0x2c, 0xd7, 
+0xc2, 0x6d, 0x32, 0x6a, 0xb4, 0x43, 0x4a, 0x48, 
+0x01, 0xc0, 0xd2, 0xad, 0x96, 0xda, 0x3b, 0xba, 
+0x83, 0x10, 0x82, 0x48, 0x24, 0x12, 0xa7, 0x5a, 
+0xf3, 0x55, 0xb4, 0xee, 0xc6, 0x88, 0x10, 0x02, 
+0x29, 0x3d, 0x5f, 0x12, 0xb2, 0xb5, 0x48, 0x65, 
+0xdb, 0x36, 0x96, 0xe5, 0x05, 0xcc, 0xc6, 0xa5, 
+0x01, 0xed, 0x93, 0xaa, 0xa9, 0xde, 0xe4, 0xc9, 
+0xf6, 0xd7, 0x0c, 0xeb, 0x93, 0x90, 0x5e, 0xdf, 
+0x9b, 0x59, 0x8c, 0xca, 0x3a, 0xdb, 0xd2, 0xc5, 
+0x62, 0x71, 0x49, 0x08, 0x41, 0x28, 0xae, 0x22, 
+0x95, 0xd6, 0xa3, 0x99, 0x6d, 0xd9, 0x6d, 0xb5, 
+0x6f, 0x85, 0xb4, 0xa8, 0xe6, 0x75, 0xd2, 0x75, 
+0x31, 0x4a, 0x46, 0xd3, 0xf6, 0x6a, 0x4c, 0x41, 
+0x08, 0x81, 0xae, 0xeb, 0x05, 0x6a, 0xf6, 0x10, 
+0xab, 0xda, 0x95, 0xaf, 0x41, 0x10, 0xfc, 0xc6, 
+0x76, 0x05, 0x80, 0x68, 0x08, 0x45, 0x2a, 0xad, 
+0xf7, 0xd6, 0xa1, 0xbd, 0xf6, 0x4d, 0x48, 0x08, 
+0x41, 0x22, 0x19, 0xc7, 0xd4, 0x2d, 0x70, 0xc0, 
+0xb5, 0xdc, 0xa6, 0x56, 0x10, 0x8a, 0x69, 0x3e, 
+0x00, 0x39, 0x02, 0xe3, 0x3e, 0x35, 0x20, 0x04, 
+0x5d, 0xc0, 0xff, 0xb3, 0xb2, 0x4b, 0x9b, 0xcf, 
+0xe7, 0x6f, 0x4a, 0x29, 0x09, 0xc5, 0xdb, 0x04, 
+0x60, 0x93, 0x29, 0x9a, 0x88, 0x12, 0x89, 0x46, 
+0x10, 0x18, 0xb8, 0xb6, 0x8b, 0x6d, 0xd8, 0x58, 
+0xe6, 0xfa, 0xb1, 0x40, 0x8b, 0x85, 0x90, 0x52, 
+0x62, 0x18, 0x46, 0x8e, 0xea, 0x4d, 0xd4, 0x2a, 
+0x20, 0x6a, 0x63, 0x40, 0xd5, 0x2e, 0xed, 0xe2, 
+0xe2, 0xe2, 0x0d, 0x21, 0x04, 0x6a, 0x4c, 0x45, 
+0x51, 0x7e, 0x77, 0x00, 0xa4, 0xbb, 0x53, 0x68, 
+0x61, 0x0d, 0xd7, 0x76, 0x71, 0x6d, 0x07, 0x63, 
+0x45, 0xc7, 0x75, 0xd6, 0xef, 0x4f, 0x28, 0x1e, 
+0x42, 0x08, 0x41, 0xb1, 0x58, 0x5c, 0x62, 0x35, 
+0x23, 0x54, 0x9b, 0x10, 0x71, 0x83, 0x2e, 0xe0, 
+0xb3, 0xbf, 0x47, 0x6f, 0x4c, 0x4e, 0x4e, 0x5e, 
+0x72, 0x5d, 0xd7, 0xd4, 0x92, 0xa1, 0x90, 0x1a, 
+0x53, 0x71, 0x4a, 0x9b, 0x37, 0xac, 0x01, 0x24, 
+0x52, 0x71, 0x06, 0x7e, 0x6f, 0x80, 0x4f, 0xde, 
+0x3d, 0xd7, 0xb0, 0x8d, 0x10, 0x82, 0x74, 0x4f, 
+0x1a, 0xdb, 0xb2, 0xb1, 0x2d, 0x07, 0xcb, 0xb4, 
+0x71, 0x1d, 0x90, 0x72, 0xfd, 0x18, 0x13, 0xe9, 
+0x0d, 0x23, 0xa5, 0x64, 0x7e, 0x7e, 0xfe, 0x22, 
+0x6b, 0xb7, 0xd3, 0xeb, 0x5a, 0x40, 0xd0, 0xfc, 
+0x4d, 0xc0, 0x58, 0x5e, 0x5e, 0xce, 0xcd, 0xcf, 
+0xcf, 0x5f, 0xe8, 0xef, 0xef, 0x1f, 0x89, 0xf5, 
+0x47, 0x59, 0xb9, 0xd4, 0x7a, 0x9e, 0xae, 0x19, 
+0xc5, 0x93, 0x71, 0x9e, 0xfc, 0xe6, 0x1f, 0x71, 
+0xfe, 0xf4, 0xf9, 0x75, 0xad, 0xab, 0x6f, 0x38, 
+0x4b, 0x34, 0x1e, 0x45, 0x5f, 0xd1, 0x71, 0x2c, 
+0x87, 0xc2, 0xad, 0x42, 0x53, 0xe1, 0x85, 0x2a, 
+0x88, 0x74, 0x87, 0x71, 0x71, 0x9d, 0xb7, 0xdf, 
+0x7e, 0x7b, 0x1c, 0x2f, 0x37, 0x18, 0xcc, 0x0b, 
+0xae, 0xa6, 0xc4, 0x5c, 0xd7, 0xf5, 0xcb, 0x4c, 
+0x7c, 0x00, 0xfc, 0x22, 0x85, 0x12, 0xb0, 0x32, 
+0x35, 0x35, 0xf5, 0xfe, 0xc0, 0xc0, 0xc0, 0x48, 
+0xb4, 0x2f, 0x82, 0x71, 0xc5, 0xdc, 0x98, 0xd4, 
+0x65, 0x8a, 0x25, 0x63, 0x7c, 0xf1, 0xdb, 0x4f, 
+0x93, 0xec, 0xec, 0x60, 0xfa, 0x83, 0x8b, 0x0d, 
+0xe3, 0x4b, 0xba, 0x37, 0xcd, 0xe0, 0xce, 0x41, 
+0x8c, 0x15, 0x03, 0xdb, 0x72, 0xb0, 0x55, 0x1b, 
+0xa3, 0x68, 0x34, 0x8d, 0x47, 0xe1, 0xac, 0x86, 
+0x54, 0x24, 0x0b, 0x0b, 0x0b, 0x97, 0x17, 0x16, 
+0x16, 0x16, 0x58, 0x0b, 0x40, 0x05, 0x84, 0x46, 
+0x16, 0x60, 0x94, 0x6f, 0x2a, 0xbe, 0xf3, 0xce, 
+0x3b, 0xef, 0x1e, 0x38, 0x70, 0xe0, 0x4b, 0xe1, 
+0x6e, 0x4d, 0xaa, 0x9a, 0x82, 0x6b, 0x6d, 0x6c, 
+0x72, 0x13, 0x4d, 0x44, 0xf9, 0xca, 0x77, 0xbe, 
+0x4c, 0x26, 0x9b, 0xc1, 0x34, 0x2d, 0x54, 0x55, 
+0x41, 0xa9, 0xd1, 0xa8, 0x94, 0x92, 0xe1, 0x7b, 
+0x87, 0xe9, 0xdb, 0x9e, 0xc5, 0x28, 0x19, 0x38, 
+0x96, 0x4d, 0xc8, 0x54, 0x98, 0x9f, 0xcf, 0x21, 
+0x5c, 0xd6, 0xb4, 0x5f, 0xf3, 0x8e, 0xbe, 0x30, 
+0x42, 0x08, 0xa6, 0xa7, 0xa7, 0xdf, 0xc7, 0xcb, 
+0x07, 0x36, 0xb6, 0x80, 0x1a, 0x00, 0xfc, 0x18, 
+0x60, 0xe2, 0xa5, 0x8f, 0x8a, 0x73, 0x73, 0x73, 
+0x73, 0x37, 0x6f, 0xde, 0x9c, 0xee, 0xe9, 0xe9, 
+0xb9, 0x23, 0x3e, 0x1c, 0x63, 0x65, 0xea, 0xf6, 
+0xdd, 0x20, 0x12, 0x8f, 0xf0, 0xd5, 0xef, 0x7e, 
+0x85, 0xec, 0xb6, 0x5e, 0x2c, 0xd3, 0x06, 0x21, 
+0x50, 0x43, 0x2a, 0xd1, 0x78, 0x94, 0x48, 0x22, 
+0x42, 0xac, 0x23, 0x4a, 0x76, 0x38, 0x4b, 0xcf, 
+0x60, 0x0f, 0x8e, 0xe3, 0xa0, 0x17, 0x75, 0x6c, 
+0xcb, 0x41, 0x55, 0x6d, 0x16, 0x97, 0x6e, 0xb1, 
+0x92, 0x5f, 0x69, 0x1a, 0x8c, 0x65, 0x54, 0x12, 
+0xee, 0x0b, 0x83, 0xc0, 0x3d, 0x75, 0xea, 0xd4, 
+0xdb, 0x78, 0x49, 0xd1, 0x35, 0xcb, 0x60, 0xca, 
+0x7b, 0x85, 0xf5, 0x46, 0x01, 0x1f, 0x80, 0x12, 
+0xde, 0x1a, 0x3a, 0x7f, 0xf2, 0xe4, 0xc9, 0x7f, 
+0x7f, 0xea, 0xa9, 0xa7, 0xbe, 0x19, 0xbd, 0x23, 
+0x82, 0x71, 0xcd, 0xc2, 0x35, 0xda, 0xb7, 0x02, 
+0x2d, 0xaa, 0xf1, 0xd5, 0xef, 0xfe, 0x31, 0x83, 
+0x23, 0x5b, 0xc1, 0x05, 0x21, 0x4c, 0x5c, 0xc7, 
+0x65, 0xdf, 0xa1, 0x7d, 0xec, 0x79, 0x74, 0x0f, 
+0x46, 0xc9, 0x40, 0x2f, 0xea, 0xe8, 0x2b, 0x06, 
+0x46, 0x51, 0x47, 0x5f, 0xd1, 0x51, 0x14, 0x15, 
+0x45, 0xb1, 0x59, 0x9a, 0xcf, 0x31, 0x77, 0x71, 
+0x1e, 0xd9, 0xc2, 0x50, 0x1c, 0xdf, 0x19, 0x45, 
+0x2a, 0x92, 0xe9, 0xe9, 0xe9, 0x33, 0x53, 0x53, 
+0x53, 0x17, 0xa9, 0xce, 0x03, 0xac, 0xb1, 0x00, 
+0x09, 0x95, 0xbd, 0xf3, 0xe0, 0x3c, 0xc0, 0xa2, 
+0x6c, 0x01, 0x40, 0xee, 0xad, 0xb7, 0xde, 0x1a, 
+0x9f, 0x9b, 0x9b, 0x3b, 0xaf, 0x68, 0x0a, 0xf1, 
+0x3b, 0xa3, 0x28, 0x8a, 0xd2, 0x36, 0x3f, 0xfd, 
+0xad, 0xa7, 0xd8, 0xba, 0x73, 0x80, 0x90, 0x16, 
+0x42, 0x0d, 0x87, 0x50, 0x35, 0x15, 0x45, 0x55, 
+0x3c, 0x17, 0x50, 0x15, 0xa4, 0x22, 0xcb, 0x6d, 
+0x25, 0x52, 0xf5, 0xee, 0x11, 0x42, 0x70, 0xe9, 
+0xec, 0x65, 0xae, 0x4e, 0x5c, 0x43, 0x4a, 0xd9, 
+0xf4, 0x1d, 0x5a, 0x46, 0x23, 0xb2, 0x25, 0x0c, 
+0x60, 0x1f, 0x3b, 0x76, 0xec, 0x15, 0xbc, 0x0d, 
+0xd2, 0xe5, 0xb2, 0x32, 0x83, 0x25, 0x34, 0x54, 
+0x01, 0x10, 0xa0, 0x20, 0x00, 0x46, 0x19, 0xb9, 
+0x65, 0xe0, 0xd6, 0xd8, 0xd8, 0xd8, 0xcf, 0x01, 
+0x37, 0x32, 0x18, 0x26, 0x94, 0xf0, 0x26, 0x46, 
+0xed, 0xf0, 0xe9, 0x5f, 0x9d, 0xc1, 0x36, 0xbd, 
+0x05, 0x95, 0x14, 0xa2, 0xbc, 0xce, 0x10, 0x08, 
+0x29, 0x91, 0x72, 0x75, 0xcd, 0x21, 0xa5, 0x64, 
+0xf9, 0xe6, 0x32, 0xe7, 0xc7, 0x2f, 0x30, 0x7e, 
+0xec, 0x14, 0x8b, 0x33, 0x8b, 0x2d, 0xbf, 0x23, 
+0xb6, 0x33, 0x82, 0x10, 0x82, 0x89, 0x89, 0x89, 
+0xdf, 0x4c, 0x4e, 0x4e, 0x4e, 0x52, 0xbd, 0x4d, 
+0x5e, 0xb5, 0x31, 0xb2, 0x66, 0x67, 0x28, 0x30, 
+0x1a, 0x04, 0x03, 0x61, 0x05, 0x80, 0xf7, 0xde, 
+0x7b, 0xef, 0x83, 0x83, 0x07, 0x0f, 0x9e, 0x19, 
+0x1e, 0x1e, 0xbe, 0x2f, 0xb1, 0x27, 0x4a, 0xf1, 
+0xd4, 0x0a, 0x6e, 0x1b, 0xcb, 0xfd, 0xcb, 0x1f, 
+0x5e, 0xe2, 0xb5, 0xbf, 0x3b, 0xca, 0x93, 0xdf, 
+0xfa, 0x02, 0x4a, 0x48, 0xc1, 0x71, 0x1c, 0x5c, 
+0xd7, 0x65, 0xe1, 0xf2, 0x3c, 0x17, 0x4e, 0x4d, 
+0x92, 0xbf, 0x99, 0xa7, 0x70, 0xab, 0xc0, 0xf2, 
+0xcd, 0x02, 0x85, 0xa5, 0x42, 0xe5, 0x3e, 0xa5, 
+0xc5, 0x35, 0x85, 0xb6, 0x2d, 0x84, 0xd6, 0x15, 
+0xc2, 0x30, 0x8c, 0xd2, 0x2b, 0xaf, 0xbc, 0xf2, 
+0x0a, 0xf5, 0x8b, 0x25, 0xd6, 0xac, 0x07, 0xea, 
+0x3d, 0xbd, 0xd6, 0x0d, 0x0a, 0x78, 0x48, 0xde, 
+0x3c, 0x72, 0xe4, 0xc8, 0x8f, 0x0a, 0x85, 0xc2, 
+0x0d, 0x25, 0xa9, 0x10, 0xbd, 0x2b, 0x8a, 0x94, 
+0x4a, 0x5b, 0x3c, 0x75, 0xe6, 0x22, 0x47, 0xff, 
+0xfe, 0x98, 0x37, 0xac, 0x19, 0x5e, 0x8e, 0x71, 
+0xe6, 0xe3, 0xab, 0xfc, 0xf7, 0x1b, 0x1f, 0x32, 
+0x7d, 0xe6, 0x12, 0xf3, 0x17, 0x6f, 0xb0, 0x92, 
+0x2f, 0xb5, 0xfd, 0x5c, 0xad, 0x47, 0x23, 0xb2, 
+0x23, 0x0c, 0xe0, 0x8e, 0x8d, 0x8d, 0xbd, 0x38, 
+0x37, 0x37, 0x77, 0x09, 0xb8, 0x55, 0x06, 0x60, 
+0x85, 0x06, 0xda, 0x6f, 0x06, 0x40, 0xd0, 0x0a, 
+0xf2, 0xc0, 0xe2, 0xc2, 0xc2, 0xc2, 0xe5, 0x17, 
+0x5f, 0x7c, 0xf1, 0x07, 0xb6, 0x6d, 0xeb, 0x5a, 
+0x5f, 0x88, 0xc8, 0xf6, 0x70, 0xdb, 0xae, 0x30, 
+0x75, 0x7a, 0x9a, 0x5f, 0xfd, 0xe3, 0xeb, 0x98, 
+0xba, 0x89, 0x6d, 0x3a, 0x80, 0x68, 0xfb, 0x19, 
+0x41, 0x0e, 0x25, 0x54, 0xa2, 0xf7, 0x84, 0x91, 
+0x8a, 0x64, 0x7c, 0x7c, 0xfc, 0x3f, 0xc6, 0xc6, 
+0xc6, 0x4e, 0xb0, 0x4e, 0x95, 0x48, 0xad, 0xb0, 
+0x55, 0x00, 0x04, 0x90, 0x09, 0x4e, 0x89, 0xfd, 
+0xd1, 0x60, 0x09, 0xb8, 0x71, 0xf6, 0xec, 0xd9, 
+0x0f, 0x7f, 0xf9, 0xcb, 0x5f, 0xfe, 0x08, 0x70, 
+0xc3, 0x3b, 0x42, 0x84, 0xb7, 0x69, 0x6d, 0x07, 
+0xc4, 0xe9, 0xd3, 0xd3, 0x9c, 0x78, 0xf1, 0x2d, 
+0x2c, 0xc3, 0x02, 0x97, 0xdb, 0x0a, 0xaa, 0x8a, 
+0xa2, 0x10, 0x4a, 0xa9, 0x44, 0xf7, 0x86, 0x91, 
+0x21, 0x2f, 0xea, 0xff, 0xf8, 0xc7, 0x3f, 0xfe, 
+0x19, 0x5e, 0x99, 0x8c, 0x6f, 0xfe, 0xeb, 0x6a, 
+0x1f, 0xea, 0x24, 0x44, 0x6a, 0x62, 0x81, 0xbf, 
+0x8d, 0xb4, 0xc2, 0x6a, 0xb6, 0x58, 0x39, 0x7e, 
+0xfc, 0xf8, 0x89, 0x9e, 0x9e, 0x9e, 0xee, 0x03, 
+0x07, 0x0e, 0x1c, 0xd6, 0xee, 0x54, 0x85, 0xd2, 
+0x21, 0xb1, 0x26, 0xec, 0x9a, 0xf8, 0xba, 0x3e, 
+0x4d, 0x9f, 0x9e, 0x46, 0x20, 0x88, 0xa5, 0x63, 
+0x4d, 0x27, 0x36, 0xf5, 0x48, 0x76, 0x4b, 0xd4, 
+0x5d, 0x12, 0xa1, 0x08, 0xe6, 0xe6, 0xe6, 0xa6, 
+0xbe, 0xff, 0xfd, 0xef, 0xbf, 0xc0, 0xda, 0xf2, 
+0x98, 0x60, 0xa1, 0x54, 0xdd, 0x12, 0x99, 0x0d, 
+0x15, 0x49, 0x3d, 0xf1, 0xc4, 0x13, 0x8f, 0x1d, 
+0x3a, 0x74, 0xe8, 0x6b, 0xa1, 0x50, 0x48, 0x73, 
+0xf3, 0x2e, 0xd6, 0x59, 0x1b, 0xb7, 0x79, 0xae, 
+0xa2, 0x8a, 0xc2, 0xb1, 0x30, 0x7a, 0xb1, 0xf5, 
+0x6d, 0x70, 0x00, 0x65, 0x9b, 0x44, 0x19, 0xf2, 
+0x40, 0x9b, 0x98, 0x98, 0x18, 0xff, 0xde, 0xf7, 
+0xbe, 0xf7, 0x43, 0x5d, 0xd7, 0x37, 0xaf, 0x48, 
+0x0a, 0x5a, 0x2f, 0x93, 0xdb, 0xbb, 0x77, 0xef, 
+0x9e, 0x67, 0x9f, 0x7d, 0xf6, 0xf9, 0x78, 0x3c, 
+0x9e, 0xc6, 0x06, 0xe7, 0x8a, 0x8b, 0x33, 0xe3, 
+0xb6, 0x65, 0x0d, 0xad, 0x92, 0xc8, 0x08, 0xe4, 
+0xb0, 0x40, 0xc4, 0xc1, 0x75, 0x5d, 0xe7, 0xd7, 
+0xbf, 0xfe, 0xf5, 0xd1, 0x23, 0x47, 0x8e, 0x6c, 
+0x7e, 0x99, 0x5c, 0xe5, 0xcf, 0x16, 0x0b, 0x25, 
+0xfb, 0xfa, 0xfa, 0xb6, 0x3d, 0xf7, 0xdc, 0x73, 
+0x7f, 0xba, 0x75, 0xeb, 0xd6, 0x11, 0x00, 0x0c, 
+0x70, 0x2e, 0xb9, 0x38, 0xb3, 0xd4, 0x09, 0x3b, 
+0xb7, 0x21, 0x78, 0x02, 0x4f, 0xf0, 0xb4, 0xf7, 
+0xbd, 0x58, 0x2c, 0x2e, 0xbd, 0xf6, 0xda, 0x6b, 
+0xff, 0x72, 0xfc, 0xf8, 0xf1, 0xff, 0xc4, 0x2b, 
+0x92, 0xbc, 0x81, 0x17, 0xf5, 0xeb, 0xd5, 0x02, 
+0xdc, 0x5e, 0xa1, 0x64, 0xa5, 0x41, 0xe3, 0x52, 
+0xd9, 0x18, 0xde, 0xfe, 0x7b, 0xa5, 0x54, 0xf6, 
+0xe0, 0xc1, 0x83, 0xfb, 0x0e, 0x1d, 0x3a, 0x74, 
+0xb8, 0xab, 0xab, 0x6b, 0x00, 0x00, 0x13, 0xdc, 
+0x9b, 0x5e, 0xf7, 0xdc, 0x25, 0xda, 0x03, 0x23, 
+0x06, 0xa2, 0xd3, 0x63, 0x12, 0xde, 0x4f, 0x86, 
+0x61, 0x94, 0xc6, 0xc7, 0xc7, 0x5f, 0x7f, 0xf9, 
+0xe5, 0x97, 0x8f, 0x15, 0x8b, 0x45, 0xbf, 0x54, 
+0xf6, 0x16, 0xd5, 0x33, 0xbe, 0xcd, 0x2b, 0x95, 
+0x6d, 0x00, 0x42, 0xa3, 0x62, 0xe9, 0x14, 0x9e, 
+0x6b, 0x64, 0x9e, 0x79, 0xe6, 0x99, 0x47, 0x1e, 
+0x79, 0xe4, 0x91, 0x27, 0x92, 0xc9, 0x64, 0xa5, 
+0x58, 0x1a, 0xbb, 0xdc, 0x55, 0x1d, 0x5c, 0x43, 
+0xac, 0x9e, 0x08, 0x70, 0xa8, 0x9c, 0x22, 0x10, 
+0x61, 0xd7, 0xfb, 0x9c, 0xc4, 0x83, 0xb8, 0x4c, 
+0x96, 0x65, 0x19, 0x67, 0xcf, 0x9e, 0xfd, 0xcd, 
+0x4b, 0x2f, 0xbd, 0xf4, 0x6f, 0x73, 0x73, 0x73, 
+0xd7, 0xca, 0x4f, 0x5a, 0x2a, 0x73, 0x50, 0xeb, 
+0x9b, 0x5f, 0x2c, 0xbd, 0x0e, 0x08, 0xc1, 0x03, 
+0x12, 0xfe, 0x19, 0x81, 0x44, 0xb9, 0xfb, 0x49, 
+0xa0, 0xe3, 0x81, 0x07, 0x1e, 0xd8, 0xb5, 0x7f, 
+0xff, 0xfe, 0x7d, 0x77, 0xdc, 0x71, 0xc7, 0xdd, 
+0x99, 0x4c, 0xa6, 0xad, 0x72, 0x79, 0x5d, 0xd7, 
+0x8b, 0x17, 0x2f, 0x5e, 0xfc, 0xe4, 0x83, 0x0f, 
+0x3e, 0x38, 0xfd, 0xe6, 0x9b, 0x6f, 0x9e, 0x5e, 
+0x5e, 0x5e, 0xf6, 0x83, 0x9b, 0xaf, 0xed, 0xdf, 
+0x5e, 0xb9, 0x7c, 0xa5, 0xf1, 0xfa, 0x07, 0x26, 
+0x7c, 0x8b, 0xa8, 0x7b, 0x60, 0x62, 0x64, 0x64, 
+0x64, 0x60, 0xef, 0xde, 0xbd, 0x23, 0xc9, 0x64, 
+0x32, 0xd3, 0xd1, 0xd1, 0x91, 0x8a, 0xc5, 0x62, 
+0xc9, 0x78, 0x3c, 0xde, 0xa1, 0xaa, 0xaa, 0x5a, 
+0x2c, 0x16, 0x97, 0x97, 0x97, 0x97, 0x73, 0x85, 
+0x42, 0x21, 0x97, 0xcf, 0xe7, 0x17, 0xaf, 0x5c, 
+0xb9, 0x32, 0x73, 0xe2, 0xc4, 0x89, 0x8f, 0x4c, 
+0xd3, 0x5c, 0xef, 0xc0, 0x44, 0x50, 0xf0, 0xaa, 
+0x93, 0x23, 0xad, 0x0a, 0xdf, 0x36, 0x00, 0x01, 
+0x10, 0xe0, 0xf6, 0x8f, 0xcc, 0x04, 0x37, 0x2a, 
+0xfd, 0x09, 0x80, 0x3f, 0xf1, 0xaa, 0xa4, 0xe3, 
+0x58, 0x3d, 0x2e, 0x53, 0xcb, 0x0d, 0x8f, 0xcc, 
+0xb0, 0x4e, 0xb4, 0x6f, 0x28, 0xcf, 0xef, 0xe8, 
+0xd0, 0x54, 0xf0, 0xe4, 0x18, 0x54, 0x4f, 0xbf, 
+0x7d, 0x10, 0x7e, 0x2b, 0x87, 0xa6, 0x36, 0x74, 
+0x70, 0x72, 0x03, 0xc7, 0xe6, 0x6a, 0xf7, 0xea, 
+0x6a, 0xf7, 0x24, 0x7c, 0x6e, 0x7a, 0x6c, 0x8e, 
+0x0d, 0x08, 0x0f, 0x1b, 0x04, 0x00, 0xaa, 0x40, 
+0x80, 0x6a, 0x8b, 0x08, 0xee, 0x34, 0xb7, 0x72, 
+0x70, 0xb2, 0x36, 0x29, 0xb3, 0xee, 0xc1, 0x49, 
+0x36, 0x28, 0x78, 0xa5, 0xc3, 0xff, 0xdf, 0x8f, 
+0xce, 0x6e, 0x1a, 0x00, 0x55, 0x0f, 0xdd, 0xc4, 
+0xc3, 0xd3, 0x81, 0xab, 0xf7, 0xe5, 0x7f, 0xeb, 
+0xe1, 0xe9, 0xff, 0xab, 0xf4, 0x3f, 0x43, 0x65, 
+0x12, 0xca, 0x16, 0x39, 0x6b, 0x07, 0x00, 0x00, 
+0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 
+0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity1.png b/source/bitmaps/misc/activity1.png
new file mode 100644 (file)
index 0000000..1a3ee9e
Binary files /dev/null and b/source/bitmaps/misc/activity1.png differ
diff --git a/source/bitmaps/misc/activity10.cpp b/source/bitmaps/misc/activity10.cpp
new file mode 100644 (file)
index 0000000..482280c
--- /dev/null
@@ -0,0 +1,534 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY10_CPP
+#define MISC_ACTIVITY10_CPP
+
+static unsigned char misc_activity10_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x0f, 0xe1, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xd9, 
+0x6f, 0x5c, 0x47, 0x76, 0xc6, 0x7f, 0x55, 0x77, 
+0xe9, 0x95, 0x4d, 0x36, 0x77, 0x8a, 0x22, 0xb5, 
+0x39, 0x12, 0x65, 0x2d, 0x94, 0x62, 0x49, 0xde, 
+0x6d, 0x19, 0x32, 0xc6, 0x8a, 0x06, 0x89, 0x3d, 
+0x46, 0x80, 0x00, 0x03, 0xdb, 0x03, 0x24, 0x86, 
+0x27, 0x79, 0xc9, 0x53, 0xfe, 0x8b, 0xc0, 0x4f, 
+0x03, 0xc7, 0x19, 0x60, 0x80, 0x04, 0x89, 0x1c, 
+0xf9, 0x25, 0x88, 0x62, 0x5b, 0x70, 0x62, 0xca, 
+0x23, 0x41, 0xb1, 0x23, 0x8d, 0x64, 0x6a, 0x99, 
+0x38, 0xf2, 0x42, 0x49, 0xd4, 0x46, 0x2d, 0x2d, 
+0x8a, 0x3b, 0xbb, 0xfb, 0xee, 0x79, 0xb8, 0x7d, 
+0x9b, 0xb7, 0x9b, 0xbd, 0x51, 0x24, 0xc7, 0x09, 
+0x72, 0x80, 0x83, 0xcb, 0x6e, 0xde, 0x7b, 0xbb, 
+0xce, 0x57, 0x5f, 0x9d, 0xaa, 0x3a, 0xe7, 0x94, 
+0xf0, 0x3c, 0x8f, 0xd5, 0x14, 0x21, 0x84, 0xa8, 
+0xf6, 0xaf, 0x0a, 0xdf, 0x2d, 0x6a, 0x8c, 0xb7, 
+0xca, 0x0d, 0x54, 0x57, 0xe3, 0xa5, 0x65, 0x46, 
+0x8b, 0x2a, 0xd7, 0x6a, 0xe2, 0x85, 0xaf, 0xe5, 
+0xf8, 0xad, 0x34, 0x20, 0x62, 0xa5, 0xde, 0x57, 
+0xc1, 0x68, 0x51, 0xf6, 0xb7, 0xac, 0xf0, 0x5d, 
+0x58, 0xc2, 0x86, 0xd7, 0x52, 0xff, 0xa6, 0x15, 
+0x6a, 0xf8, 0xb2, 0x19, 0x50, 0xc5, 0x70, 0x19, 
+0xba, 0x56, 0x52, 0x41, 0x29, 0x08, 0x81, 0x31, 
+0x6e, 0xe1, 0x6f, 0xb7, 0x8a, 0x16, 0x81, 0x08, 
+0x7e, 0x76, 0xb9, 0x40, 0x2c, 0x0b, 0x80, 0x90, 
+0xf1, 0xe5, 0x46, 0x2b, 0x21, 0x55, 0x0b, 0xaa, 
+0x94, 0x69, 0x39, 0x0b, 0xc2, 0x86, 0xda, 0x80, 
+0x53, 0xe1, 0xea, 0x50, 0x06, 0xc6, 0x72, 0x81, 
+0x78, 0xa4, 0x21, 0x50, 0x66, 0x78, 0xb9, 0xd1, 
+0x2a, 0xa0, 0x85, 0x54, 0x2f, 0x68, 0xf0, 0x39, 
+0x00, 0x24, 0xcc, 0x84, 0xa0, 0xd7, 0x03, 0x63, 
+0xad, 0x82, 0x9a, 0x65, 0xd7, 0x40, 0x2b, 0x81, 
+0xf1, 0x48, 0x20, 0x2c, 0x99, 0x01, 0x21, 0xe3, 
+0x03, 0x03, 0xc2, 0xbd, 0xac, 0x03, 0x91, 0x82, 
+0x46, 0x0b, 0x1a, 0x0b, 0x7d, 0x0e, 0xc0, 0x08, 
+0x18, 0x11, 0x00, 0x10, 0xee, 0xf9, 0xc0, 0x60, 
+0xa3, 0xa0, 0x79, 0x20, 0x57, 0xb8, 0xe6, 0x0b, 
+0xdf, 0x05, 0x80, 0x04, 0xcc, 0x70, 0x29, 0xb0, 
+0x61, 0xa9, 0x20, 0x2c, 0x09, 0x80, 0x82, 0xf1, 
+0x81, 0x06, 0x3d, 0x1e, 0xf4, 0x72, 0x60, 0x70, 
+0x1c, 0x48, 0x84, 0x34, 0x0e, 0xc4, 0x3b, 0x3b, 
+0x3b, 0x7b, 0x7b, 0x7b, 0x7b, 0x07, 0xa2, 0xd1, 
+0x68, 0x6b, 0x34, 0x1a, 0x6d, 0xd1, 0x75, 0x3d, 
+0xa5, 0xeb, 0x7a, 0x4a, 0x4a, 0xa9, 0x99, 0xa6, 
+0x39, 0x6b, 0x9a, 0xe6, 0x8c, 0x61, 0x18, 0x53, 
+0x86, 0x61, 0x4c, 0x4e, 0x4d, 0x4d, 0xdd, 0xbe, 
+0x7a, 0xf5, 0xea, 0x37, 0xae, 0xeb, 0xce, 0x03, 
+0x59, 0x60, 0x3e, 0xa4, 0xd9, 0x10, 0x20, 0x46, 
+0x39, 0x10, 0x4b, 0x1d, 0x12, 0x0d, 0x0f, 0x81, 
+0x90, 0xf1, 0x01, 0xdd, 0x83, 0x1e, 0x0f, 0x7a, 
+0x39, 0x01, 0x34, 0x15, 0x34, 0x05, 0x34, 0xf5, 
+0xf7, 0xf7, 0x6f, 0xe9, 0xeb, 0xeb, 0xdb, 0xd3, 
+0xde, 0xde, 0xbe, 0x2d, 0x1e, 0x8f, 0x77, 0x35, 
+0xf4, 0x43, 0x05, 0xb1, 0x6d, 0x3b, 0x3b, 0x39, 
+0x39, 0xf9, 0xdd, 0xbd, 0x7b, 0xf7, 0x2e, 0x8c, 
+0x8c, 0x8c, 0x5c, 0x34, 0x0c, 0xe3, 0x21, 0x30, 
+0x03, 0xcc, 0x16, 0x74, 0x8e, 0x05, 0x30, 0x02, 
+0x46, 0x84, 0x87, 0x45, 0x43, 0x20, 0x34, 0x04, 
+0x40, 0x05, 0xe3, 0x35, 0x7c, 0x5a, 0xc7, 0x80, 
+0x64, 0xc1, 0xe8, 0x16, 0xa0, 0x19, 0x68, 0xdd, 
+0xb5, 0x6b, 0xd7, 0x0b, 0x9b, 0x36, 0x6d, 0x3a, 
+0x18, 0x8d, 0x46, 0xdb, 0x82, 0x77, 0x28, 0x96, 
+0x4a, 0x3a, 0xd3, 0x4a, 0x74, 0x2e, 0x86, 0x9e, 
+0xd7, 0xd1, 0x0c, 0x1d, 0x3d, 0x1f, 0x41, 0x3a, 
+0x12, 0x2b, 0x6a, 0x62, 0x46, 0x4c, 0xcc, 0xa8, 
+0x81, 0x19, 0x33, 0x98, 0xea, 0x9c, 0x24, 0x9f, 
+0xc8, 0x15, 0x7f, 0xdf, 0x75, 0x5d, 0xeb, 0xee, 
+0xdd, 0xbb, 0x67, 0x86, 0x87, 0x87, 0x3f, 0x9e, 
+0x9d, 0x9d, 0xbd, 0x03, 0x4c, 0x02, 0xd3, 0x21, 
+0x40, 0xb2, 0x2c, 0x0c, 0x0d, 0x7b, 0x29, 0x20, 
+0xd4, 0x05, 0xa0, 0xcc, 0xf8, 0xc0, 0xc1, 0x45, 
+0x59, 0xe8, 0xf1, 0x66, 0xa0, 0x15, 0x68, 0x1d, 
+0x18, 0x18, 0x78, 0x6a, 0xeb, 0xd6, 0xad, 0x7f, 
+0x94, 0x48, 0x24, 0x7a, 0x00, 0xb4, 0xbc, 0x4e, 
+0xfa, 0x5e, 0x2b, 0xe9, 0x3b, 0xed, 0xa4, 0xc6, 
+0x9b, 0x11, 0x6e, 0xbd, 0x35, 0xd0, 0x82, 0xe4, 
+0x9a, 0xb2, 0x4c, 0xae, 0x79, 0xc8, 0x64, 0xcf, 
+0x43, 0xe6, 0x5b, 0xe6, 0x00, 0x70, 0x1c, 0xc7, 
+0xb8, 0x75, 0xeb, 0xd6, 0x89, 0x73, 0xe7, 0xce, 
+0x1d, 0x33, 0x0c, 0xe3, 0x3e, 0x30, 0x51, 0x00, 
+0x63, 0x06, 0x7f, 0x78, 0xe4, 0x0a, 0x40, 0x34, 
+0x0c, 0x42, 0x4d, 0x00, 0xaa, 0x18, 0x1f, 0xd0, 
+0xbd, 0x19, 0x48, 0x03, 0xed, 0xcd, 0xcd, 0xcd, 
+0xeb, 0x5f, 0x7c, 0xf1, 0xc5, 0xb7, 0x5b, 0x5a, 
+0x5a, 0x36, 0xfb, 0x86, 0x6b, 0xf4, 0x7c, 0xb3, 
+0x96, 0xb6, 0x9b, 0x1d, 0x08, 0xaf, 0x71, 0xa3, 
+0xab, 0x49, 0xb6, 0x79, 0x9e, 0xb1, 0xed, 0x37, 
+0x99, 0xed, 0x98, 0x01, 0xc0, 0xb2, 0xac, 0xd9, 
+0x4b, 0x97, 0x2e, 0x1d, 0xbe, 0x7c, 0xf9, 0xf2, 
+0x69, 0x60, 0x1c, 0x78, 0x88, 0xcf, 0x88, 0x30, 
+0x1b, 0x1a, 0x02, 0xa1, 0x2a, 0x00, 0x15, 0x68, 
+0xaf, 0xb3, 0x40, 0xf9, 0x16, 0xa0, 0x0d, 0xe8, 
+0xe8, 0xef, 0xef, 0x1f, 0x7c, 0xfa, 0xe9, 0xa7, 
+0xdf, 0x89, 0x46, 0xa3, 0x2d, 0xd2, 0x96, 0x74, 
+0x8c, 0xf4, 0xd0, 0x71, 0xa5, 0x0b, 0xe9, 0xc8, 
+0x65, 0x1b, 0x5e, 0x2e, 0xb3, 0x5d, 0xd3, 0xdc, 
+0xdd, 0x76, 0x9b, 0x7c, 0x2a, 0x07, 0xe0, 0x7e, 
+0xff, 0xfd, 0xf7, 0xc7, 0x4e, 0x9f, 0x3e, 0x7d, 
+0x14, 0xc8, 0xe0, 0x03, 0x31, 0xc9, 0x62, 0x10, 
+0x1c, 0x7c, 0xfb, 0x1b, 0x07, 0xa0, 0x6c, 0xaa, 
+0xab, 0x64, 0x7c, 0x07, 0xd0, 0x39, 0x38, 0x38, 
+0x78, 0x60, 0x70, 0x70, 0xf0, 0xa7, 0x8a, 0xa2, 
+0xe8, 0xb1, 0xc9, 0x38, 0x7d, 0xbf, 0x59, 0x8f, 
+0x9a, 0xd7, 0x56, 0xce, 0xe2, 0x8a, 0x2d, 0x86, 
+0x07, 0x03, 0xf7, 0x78, 0xb0, 0xe5, 0x3e, 0x00, 
+0xf7, 0xef, 0xdf, 0x1f, 0x1e, 0x1a, 0x1a, 0xfa, 
+0x95, 0x65, 0x59, 0x77, 0x80, 0x07, 0xf8, 0xc3, 
+0x62, 0x86, 0xc5, 0x4c, 0xa8, 0x08, 0x42, 0x2d, 
+0x00, 0x82, 0xa9, 0x2e, 0xa0, 0x7d, 0x92, 0x02, 
+0xe5, 0x81, 0xee, 0x67, 0x9f, 0x7d, 0xf6, 0xf5, 
+0xcd, 0x9b, 0x37, 0xbf, 0x26, 0x84, 0x10, 0xa9, 
+0x5b, 0x2d, 0x74, 0x5d, 0x58, 0xb3, 0xa4, 0x31, 
+0xbe, 0x5c, 0x99, 0x5d, 0x33, 0xc3, 0xbd, 0x27, 
+0xc6, 0xf0, 0x14, 0x97, 0x99, 0x99, 0x99, 0xd1, 
+0x8f, 0x3f, 0xfe, 0xf8, 0xaf, 0x0d, 0xc3, 0xb8, 
+0x8d, 0xcf, 0x86, 0x30, 0x08, 0x45, 0xc7, 0xd8, 
+0x10, 0x00, 0x65, 0xd4, 0x0f, 0xbc, 0x7d, 0xb8, 
+0xe7, 0xbb, 0x77, 0xec, 0xd8, 0xf1, 0xd2, 0x93, 
+0x4f, 0x3e, 0xf9, 0x36, 0x20, 0xda, 0xbe, 0xee, 
+0xa0, 0xf9, 0x4a, 0xeb, 0xaa, 0x19, 0x5a, 0x4b, 
+0xcc, 0x66, 0x83, 0x7b, 0x4f, 0xdd, 0xc6, 0x8e, 
+0xd9, 0x64, 0x32, 0x99, 0x4b, 0x1f, 0x7d, 0xf4, 
+0xd1, 0x2f, 0x80, 0x3b, 0x2c, 0x80, 0x30, 0x8b, 
+0xef, 0x18, 0x8b, 0x53, 0x64, 0x39, 0x08, 0x25, 
+0x03, 0xb5, 0x6c, 0x89, 0x1b, 0xcc, 0xf5, 0x81, 
+0xc7, 0x6f, 0x06, 0xda, 0xfa, 0xfa, 0xfa, 0xb6, 
+0xed, 0xdd, 0xbb, 0xf7, 0x2d, 0x21, 0x84, 0x48, 
+0x7f, 0xdb, 0x46, 0xf2, 0x6a, 0x33, 0x8e, 0x70, 
+0x7e, 0x10, 0x55, 0x66, 0x54, 0x3a, 0x4f, 0xaf, 
+0x41, 0x3a, 0x0a, 0x5d, 0x5d, 0x5d, 0x83, 0xfb, 
+0xf7, 0xef, 0xff, 0x63, 0xfc, 0x4e, 0x4a, 0xe3, 
+0xcf, 0x50, 0x31, 0xfc, 0xe1, 0x5b, 0x5c, 0x75, 
+0x96, 0xc7, 0x27, 0x2a, 0xad, 0x04, 0x2b, 0x39, 
+0xbe, 0x26, 0x20, 0x9d, 0x4a, 0xa5, 0xfa, 0x5e, 
+0x7a, 0xe9, 0xa5, 0x3f, 0xd7, 0x34, 0x2d, 0x12, 
+0x1b, 0x8b, 0x93, 0x1c, 0x69, 0xc6, 0x95, 0xee, 
+0xd2, 0xbb, 0x6e, 0x05, 0x45, 0x99, 0x57, 0x69, 
+0x3b, 0xdf, 0xc9, 0xc4, 0x93, 0x19, 0x36, 0x6f, 
+0xde, 0xfc, 0xca, 0xf4, 0xf4, 0xf4, 0xd8, 0x85, 
+0x0b, 0x17, 0x3e, 0xa3, 0xf2, 0x4a, 0xb1, 0x64, 
+0x4b, 0x0d, 0xb5, 0x01, 0x50, 0xf1, 0xe9, 0x9f, 
+0xc0, 0x5f, 0xd9, 0xb5, 0x1e, 0x38, 0x70, 0xe0, 
+0xad, 0x78, 0x3c, 0xde, 0xa6, 0x4e, 0x6b, 0x34, 
+0x5d, 0x4c, 0xe3, 0x48, 0x67, 0xf5, 0x2c, 0x5b, 
+0x82, 0x68, 0x19, 0x9d, 0xa6, 0x6f, 0x9b, 0x99, 
+0x7b, 0x7c, 0x46, 0xec, 0x79, 0x62, 0xcf, 0x1b, 
+0xd7, 0xae, 0x5d, 0xfb, 0x76, 0x7a, 0x7a, 0x3a, 
+0x4b, 0xe9, 0xde, 0x21, 0x70, 0x86, 0x22, 0xbc, 
+0x67, 0x28, 0x02, 0x50, 0x6f, 0xda, 0xdb, 0xb4, 
+0x69, 0xd3, 0xf6, 0xae, 0xae, 0xae, 0x41, 0xe1, 
+0x09, 0x9a, 0xbe, 0x6a, 0xc1, 0x73, 0x5d, 0xca, 
+0xa7, 0xf8, 0x3d, 0x6f, 0x3c, 0xc1, 0xd6, 0x57, 
+0xb6, 0xa0, 0xea, 0x2a, 0x8a, 0xae, 0xa0, 0xe8, 
+0x0a, 0x52, 0x91, 0x08, 0x21, 0x70, 0x2c, 0x07, 
+0x3b, 0x6f, 0xf3, 0xeb, 0x77, 0x4f, 0x32, 0x7a, 
+0xfa, 0xfa, 0x8a, 0x83, 0x10, 0xbd, 0x12, 0xc7, 
+0xec, 0x32, 0xb0, 0xda, 0xcd, 0xc8, 0x73, 0xcf, 
+0x3d, 0xf7, 0xda, 0xb1, 0x63, 0xc7, 0x7e, 0xc9, 
+0xc2, 0xde, 0x21, 0x60, 0xc2, 0x22, 0x16, 0x94, 
+0x33, 0x20, 0xdc, 0xfb, 0x25, 0x00, 0xec, 0xdd, 
+0xbb, 0xf7, 0x27, 0x8a, 0xa2, 0x08, 0xfd, 0x5a, 
+0x14, 0x72, 0x02, 0xa7, 0x02, 0xf5, 0xcf, 0x1e, 
+0xf9, 0x8a, 0x58, 0x5b, 0x8c, 0x1d, 0x3f, 0xde, 
+0x86, 0x1e, 0xd7, 0xd0, 0xe2, 0x3a, 0x7a, 0x4c, 
+0x43, 0x8d, 0xa8, 0xb8, 0x8e, 0x8b, 0x95, 0xb7, 
+0x89, 0xa4, 0x23, 0x15, 0x9f, 0x5d, 0x09, 0x89, 
+0x7e, 0x93, 0xc0, 0x79, 0xd1, 0xa6, 0xbf, 0xbf, 
+0xff, 0xa9, 0x35, 0x6b, 0xd6, 0x0c, 0xdd, 0xb9, 
+0x73, 0x67, 0x86, 0x85, 0x3d, 0x43, 0x78, 0x4a, 
+0x2c, 0xb2, 0x40, 0x02, 0xe5, 0xbb, 0xbc, 0x30, 
+0xfd, 0xe3, 0x40, 0x6a, 0xe7, 0xce, 0x9d, 0x4f, 
+0xb4, 0xb7, 0xb7, 0x3f, 0x26, 0x6d, 0x89, 0xf6, 
+0x7d, 0x04, 0x57, 0x38, 0x15, 0xd5, 0xc1, 0xe6, 
+0xc4, 0xdf, 0x9c, 0xe4, 0xbf, 0x3f, 0xbb, 0x8c, 
+0xeb, 0x7a, 0x78, 0xae, 0x87, 0xe7, 0x79, 0x20, 
+0x40, 0xaa, 0x12, 0xa9, 0x08, 0x50, 0xa9, 0xfa, 
+0xfc, 0x72, 0x55, 0x4c, 0x0b, 0xb4, 0x31, 0x1d, 
+0x45, 0x51, 0x94, 0x67, 0x9e, 0x79, 0xe6, 0x35, 
+0xfc, 0xa1, 0x9b, 0x28, 0x74, 0xa4, 0x86, 0xcf, 
+0xec, 0x12, 0xc7, 0x5f, 0xce, 0x80, 0xf0, 0x66, 
+0xa7, 0xb8, 0xde, 0x1f, 0x1c, 0x1c, 0xfc, 0x03, 
+0x29, 0x25, 0xca, 0x55, 0x1d, 0xd7, 0xf6, 0x40, 
+0xd6, 0xde, 0x3f, 0x7c, 0xf6, 0x8b, 0xcf, 0xe9, 
+0xd9, 0xde, 0x43, 0xf7, 0xe6, 0x2e, 0x84, 0x04, 
+0xcf, 0xf5, 0x10, 0x52, 0xe0, 0xd8, 0x0e, 0x9e, 
+0xc2, 0xaa, 0x31, 0x00, 0x40, 0xf9, 0x36, 0x82, 
+0xdb, 0xeb, 0xd0, 0xd3, 0xd3, 0x33, 0xd8, 0xdb, 
+0xdb, 0xbb, 0x7e, 0x6c, 0x6c, 0x2c, 0xd8, 0x38, 
+0xe9, 0x2c, 0xb0, 0x20, 0x08, 0xc2, 0x94, 0x00, 
+0x10, 0x5e, 0xfc, 0x04, 0x81, 0x8d, 0x78, 0x3a, 
+0x9d, 0xee, 0x6a, 0x6d, 0x6d, 0x5d, 0x8f, 0x0b, 
+0xe2, 0x86, 0xc4, 0x15, 0xf5, 0x1d, 0xdf, 0x8e, 
+0x57, 0xb6, 0x93, 0xea, 0x6a, 0xc2, 0x32, 0x4c, 
+0x3c, 0xcf, 0xc5, 0xb6, 0x1c, 0x84, 0x14, 0x3e, 
+0x23, 0x84, 0xdb, 0xd0, 0x3b, 0x14, 0x55, 0x41, 
+0x48, 0x81, 0xeb, 0xb8, 0x0b, 0x4c, 0x6a, 0x44, 
+0xf2, 0x20, 0x33, 0x0a, 0xde, 0x1a, 0x57, 0x6c, 
+0xdd, 0xba, 0x75, 0xdf, 0xd8, 0xd8, 0xd8, 0xf7, 
+0x94, 0x4e, 0x87, 0xc5, 0x48, 0x94, 0x10, 0x62, 
+0x11, 0x00, 0xe5, 0x0c, 0x88, 0xef, 0xdc, 0xb9, 
+0x73, 0x8f, 0x94, 0x52, 0x78, 0xe3, 0x02, 0xc7, 
+0x71, 0xca, 0x08, 0xb4, 0x58, 0xba, 0x7f, 0xaf, 
+0x9b, 0x7d, 0x7f, 0xb2, 0x07, 0x23, 0x67, 0xe0, 
+0xba, 0x2e, 0xb6, 0xed, 0x14, 0x8d, 0xc1, 0xf3, 
+0x70, 0x85, 0xdb, 0xd0, 0xec, 0xe1, 0xb8, 0x0e, 
+0x91, 0x58, 0x04, 0x4d, 0x55, 0x71, 0x6c, 0x17, 
+0xd7, 0x71, 0x71, 0x2c, 0x07, 0xd7, 0xa9, 0xcf, 
+0x1e, 0x71, 0x5f, 0x20, 0xd7, 0x4a, 0xfa, 0xfa, 
+0xfa, 0x76, 0xb0, 0x30, 0x04, 0x82, 0x48, 0x54, 
+0x38, 0x3a, 0x8d, 0x5a, 0x65, 0xfc, 0x07, 0x00, 
+0xc4, 0xfa, 0xfa, 0xfa, 0x76, 0x08, 0x21, 0x70, 
+0xef, 0x79, 0xb8, 0xa2, 0x76, 0x2f, 0xc4, 0x9a, 
+0xa2, 0x3c, 0xff, 0xb3, 0x67, 0xb1, 0x4d, 0x1b, 
+0x04, 0xb8, 0x8e, 0xcb, 0x6f, 0xfe, 0xf1, 0x2c, 
+0xe9, 0xde, 0x34, 0x3b, 0x0e, 0x6c, 0x03, 0xc0, 
+0xf5, 0x1c, 0x5c, 0xd1, 0xd8, 0x10, 0xc8, 0xe7, 
+0xf2, 0x24, 0xdb, 0x92, 0xe8, 0x51, 0xc5, 0x07, 
+0xc0, 0x51, 0x30, 0xb3, 0xa6, 0xff, 0xfe, 0x5a, 
+0x72, 0x1f, 0x34, 0x4f, 0x90, 0x4e, 0xa7, 0xfb, 
+0xd3, 0xe9, 0x74, 0xfb, 0xe4, 0xe4, 0xe4, 0xfd, 
+0x32, 0x00, 0x24, 0x85, 0xfd, 0x41, 0x2d, 0x06, 
+0xe8, 0xb1, 0x58, 0x2c, 0xd5, 0xd9, 0xd1, 0xb9, 
+0x49, 0x4a, 0x89, 0x91, 0xb1, 0xf0, 0xea, 0x8c, 
+0xfd, 0x8d, 0x4f, 0x6f, 0x44, 0xa8, 0x82, 0x7c, 
+0xce, 0x40, 0x75, 0x1c, 0xae, 0x5f, 0xfa, 0x8e, 
+0x33, 0x1f, 0x9f, 0x45, 0x08, 0x81, 0x65, 0x59, 
+0x3c, 0xfe, 0xc2, 0x56, 0x6c, 0xcf, 0x59, 0xd2, 
+0xfa, 0x61, 0x7e, 0x7e, 0x9e, 0xd6, 0x35, 0x69, 
+0x1c, 0xc7, 0x45, 0xda, 0x0e, 0x22, 0x22, 0x30, 
+0x1f, 0x9a, 0x78, 0x6e, 0x8d, 0xb6, 0xb8, 0xa0, 
+0x4e, 0xa8, 0x28, 0x9d, 0x52, 0xec, 0xda, 0xb5, 
+0xeb, 0xf7, 0x4f, 0x9c, 0x38, 0x71, 0x85, 0x6a, 
+0x0c, 0x08, 0x19, 0x1f, 0xf6, 0x01, 0x2a, 0xa0, 
+0x6f, 0xd8, 0xb0, 0xa1, 0x5f, 0x51, 0x15, 0xcd, 
+0x9d, 0x75, 0x71, 0x0c, 0xa7, 0x66, 0x4e, 0x47, 
+0xd5, 0x14, 0xd6, 0x3e, 0xde, 0x8b, 0x91, 0x33, 
+0x70, 0x1c, 0x87, 0xe9, 0xf1, 0x69, 0x4e, 0x1c, 
+0x3e, 0x59, 0xec, 0xed, 0xa1, 0xbf, 0xfb, 0x1c, 
+0xd3, 0x34, 0x71, 0xdc, 0xc6, 0x19, 0x00, 0x60, 
+0x98, 0x06, 0x96, 0x6d, 0x11, 0x4d, 0x46, 0x71, 
+0x1c, 0x05, 0xc5, 0x72, 0x30, 0x0c, 0x9d, 0xdc, 
+0x6c, 0xae, 0xe6, 0x73, 0xce, 0xb8, 0x8b, 0xda, 
+0xa5, 0xd0, 0xd1, 0xd1, 0xb1, 0x0e, 0xdf, 0x9f, 
+0x05, 0x11, 0xe9, 0x92, 0x90, 0x7c, 0xa5, 0x59, 
+0xa0, 0x38, 0x0c, 0x5a, 0x5a, 0x5a, 0xda, 0xa5, 
+0x94, 0x38, 0x86, 0x8b, 0x5b, 0xa7, 0xd7, 0x7a, 
+0x06, 0x7a, 0x71, 0x71, 0xc9, 0xe7, 0xf3, 0x68, 
+0xae, 0xca, 0xc5, 0x13, 0x17, 0x31, 0x1d, 0xb3, 
+0xc4, 0x67, 0x9c, 0x38, 0x72, 0x92, 0xe6, 0xce, 
+0xe6, 0xba, 0xef, 0x2a, 0x97, 0xa9, 0x89, 0x29, 
+0xfa, 0xba, 0xfb, 0x50, 0x6c, 0x07, 0xc7, 0x16, 
+0x24, 0x44, 0x9c, 0xf9, 0xf9, 0xb9, 0x9a, 0xcf, 
+0xb8, 0x86, 0x44, 0x4a, 0x49, 0x3c, 0x1e, 0x6f, 
+0xae, 0x66, 0x3c, 0x20, 0x2a, 0xcd, 0x02, 0xc5, 
+0xa0, 0x67, 0x53, 0x53, 0x53, 0x5a, 0x08, 0x81, 
+0x9b, 0x77, 0x71, 0xea, 0x78, 0xee, 0x58, 0x6b, 
+0x9c, 0x7c, 0x2e, 0x8f, 0xea, 0xa8, 0x64, 0xe7, 
+0x1c, 0x46, 0x2e, 0x5d, 0xa9, 0xd8, 0xd3, 0x0f, 
+0x33, 0x0f, 0xeb, 0x67, 0x07, 0xcb, 0x24, 0x67, 
+0xe4, 0xc8, 0xce, 0xcf, 0xd3, 0xd4, 0xda, 0x84, 
+0xb4, 0x25, 0x42, 0x97, 0x88, 0xbb, 0x02, 0xdb, 
+0xaa, 0xee, 0x0b, 0x6c, 0x43, 0x20, 0x84, 0x20, 
+0x16, 0x8b, 0xa5, 0x58, 0x30, 0xbe, 0x3c, 0x33, 
+0x55, 0x32, 0x04, 0x82, 0x6b, 0x70, 0x93, 0x92, 
+0x4c, 0x26, 0x9b, 0xa5, 0x94, 0xb8, 0xa6, 0x5b, 
+0x77, 0xd3, 0xa3, 0xe8, 0x92, 0x5c, 0x2e, 0x87, 
+0xe6, 0xa8, 0x4c, 0x3d, 0x98, 0xc6, 0xf6, 0xec, 
+0xba, 0x33, 0xc6, 0x52, 0x64, 0x7a, 0x7a, 0x86, 
+0xf6, 0x75, 0xed, 0xd8, 0x96, 0x8d, 0xb4, 0x6c, 
+0xd4, 0xb8, 0x8a, 0x39, 0x6b, 0x56, 0xbd, 0xdf, 
+0x36, 0x1c, 0xa4, 0x94, 0x01, 0x00, 0x25, 0xd3, 
+0x5f, 0xf8, 0x3e, 0x95, 0x52, 0xe3, 0x4b, 0x34, 
+0x99, 0x4c, 0x36, 0x0b, 0x21, 0xb0, 0xf2, 0x76, 
+0x5d, 0x06, 0x78, 0xd2, 0x23, 0x9f, 0xcf, 0x63, 
+0x3b, 0x0a, 0x93, 0xe3, 0x93, 0x75, 0xef, 0x5f, 
+0xaa, 0xe4, 0xf2, 0x39, 0xd4, 0x98, 0x8a, 0xd0, 
+0x04, 0xd2, 0x92, 0x68, 0x49, 0x0d, 0x67, 0xae, 
+0xfa, 0x6f, 0xb8, 0x86, 0x8b, 0x10, 0x82, 0x68, 
+0x34, 0x9a, 0xa0, 0xb4, 0xe7, 0x4b, 0xa4, 0x66, 
+0x62, 0x44, 0x08, 0x81, 0x94, 0xfe, 0x58, 0x12, 
+0xb2, 0x36, 0x6f, 0xf3, 0x39, 0x03, 0xa9, 0x48, 
+0x1c, 0x5b, 0xc5, 0xc3, 0xab, 0x7b, 0xff, 0x52, 
+0x45, 0x08, 0x41, 0x2c, 0x19, 0xc3, 0xb6, 0x6c, 
+0x6c, 0xcb, 0x46, 0xd5, 0xd5, 0x9a, 0xbf, 0x21, 
+0xa4, 0xdf, 0xf6, 0x7a, 0x0b, 0x28, 0x95, 0x1a, 
+0x69, 0xe9, 0x6c, 0x36, 0x3b, 0x2d, 0x84, 0x40, 
+0x4b, 0xa8, 0x48, 0xa5, 0x36, 0x9f, 0xb3, 0xb3, 
+0x59, 0x54, 0x5d, 0xc5, 0x71, 0x5d, 0xb4, 0x88, 
+0x56, 0xf7, 0xfe, 0xa5, 0x4a, 0xaa, 0x2d, 0x45, 
+0x34, 0x11, 0xc5, 0xb1, 0x6c, 0x2c, 0xd3, 0x07, 
+0xa1, 0xd6, 0x6f, 0xa8, 0x71, 0x05, 0x21, 0x04, 
+0x86, 0x61, 0xcc, 0x53, 0x96, 0x43, 0x2c, 0xb9, 
+0xaf, 0x70, 0x0d, 0x83, 0x10, 0xdc, 0xec, 0x14, 
+0x01, 0x88, 0x69, 0x28, 0x52, 0xa9, 0xd9, 0x40, 
+0x63, 0x3e, 0x8f, 0x15, 0x8f, 0xe1, 0xaa, 0x2e, 
+0xaa, 0xaa, 0x12, 0x4f, 0xc6, 0x31, 0xb2, 0xc6, 
+0xd2, 0x2d, 0xad, 0x22, 0x3d, 0xeb, 0xba, 0x89, 
+0x25, 0x62, 0xd8, 0xa6, 0x8d, 0xaa, 0x5a, 0x58, 
+0x79, 0xab, 0x66, 0x9b, 0xb4, 0xb8, 0x1e, 0x00, 
+0x30, 0x43, 0x28, 0x7f, 0x48, 0x8d, 0x80, 0x48, 
+0xf0, 0xcf, 0x62, 0x96, 0x76, 0x76, 0x76, 0x76, 
+0x42, 0x4a, 0x89, 0x96, 0xa8, 0x0f, 0x40, 0x6e, 
+0x26, 0x47, 0xa2, 0x29, 0x81, 0xab, 0xaa, 0xb8, 
+0xaa, 0x42, 0x7b, 0x77, 0x1b, 0xf7, 0xae, 0xdf, 
+0x5f, 0xba, 0xa1, 0x1b, 0x7a, 0xb8, 0x3b, 0x7a, 
+0xb7, 0xd4, 0x98, 0x88, 0xc6, 0xd6, 0x7d, 0x03, 
+0x48, 0x29, 0xb1, 0x35, 0x9b, 0xa9, 0xf9, 0x3c, 
+0x76, 0xde, 0xae, 0xd9, 0x26, 0x3d, 0xae, 0x21, 
+0xa5, 0xc4, 0x34, 0xcd, 0x19, 0x4a, 0x93, 0xa8, 
+0x25, 0x40, 0x94, 0xfb, 0x80, 0x92, 0x2c, 0xed, 
+0xe4, 0xe4, 0xe4, 0x43, 0x21, 0x04, 0x6a, 0x5c, 
+0x45, 0x51, 0x6a, 0x03, 0x60, 0x9b, 0x0e, 0x66, 
+0xd6, 0x44, 0x8b, 0x78, 0xb8, 0x8e, 0x4b, 0x24, 
+0x1a, 0x21, 0x96, 0x88, 0x61, 0xe6, 0xab, 0x7b, 
+0xea, 0x4a, 0x72, 0xe8, 0x4f, 0x0f, 0xf2, 0xf9, 
+0x91, 0x13, 0xdc, 0xfa, 0xee, 0x56, 0xf1, 0xbb, 
+0x5d, 0x2f, 0x0c, 0x92, 0x6a, 0x4d, 0x61, 0x9b, 
+0x36, 0x96, 0x69, 0x71, 0x7b, 0x64, 0xac, 0x6e, 
+0x7b, 0xb4, 0x84, 0x86, 0x10, 0x82, 0x6c, 0x36, 
+0x3b, 0xcd, 0x42, 0x44, 0xa8, 0x3c, 0x20, 0xe2, 
+0x05, 0x83, 0x28, 0x3c, 0xf6, 0x83, 0x1c, 0xbd, 
+0x79, 0xed, 0xda, 0xb5, 0x9b, 0x9e, 0xe7, 0x59, 
+0x7a, 0x4a, 0x43, 0x8d, 0xab, 0x45, 0x87, 0x58, 
+0x4d, 0xb3, 0xb3, 0x39, 0xcc, 0xbc, 0x4f, 0x4f, 
+0x33, 0x6f, 0x91, 0x6c, 0x49, 0xd6, 0x7d, 0xa6, 
+0x5c, 0x63, 0xc9, 0x18, 0xaf, 0xfe, 0xc5, 0x1f, 
+0xb2, 0x61, 0xdb, 0x7a, 0xa4, 0x94, 0x6c, 0xdc, 
+0xbe, 0x81, 0x3d, 0x3f, 0x7a, 0x82, 0x48, 0x2c, 
+0x42, 0x24, 0x16, 0x41, 0x08, 0xc9, 0xd8, 0x95, 
+0x3b, 0x75, 0xdf, 0x13, 0xed, 0x8c, 0x20, 0xa5, 
+0xe4, 0xc1, 0x83, 0x07, 0x37, 0x58, 0x9c, 0x4e, 
+0xaf, 0xc8, 0x80, 0x30, 0xfd, 0x2d, 0xc0, 0x9c, 
+0x9b, 0x9b, 0x9b, 0x79, 0xf0, 0xe0, 0xc1, 0xd5, 
+0x9e, 0x9e, 0x9e, 0x81, 0x78, 0x4f, 0x8c, 0xdc, 
+0xcd, 0x7c, 0x4d, 0xd4, 0x1d, 0xcb, 0xc1, 0x32, 
+0x2c, 0x5c, 0xc7, 0x45, 0x2a, 0x12, 0x45, 0x91, 
+0x4b, 0x66, 0x81, 0x1e, 0xd5, 0x89, 0x26, 0xa2, 
+0xbc, 0xfe, 0x97, 0x3f, 0xe1, 0xd4, 0x3f, 0xff, 
+0x07, 0x4f, 0xfd, 0xf8, 0x49, 0x84, 0x14, 0xd8, 
+0xa6, 0x8d, 0xa2, 0x28, 0x0c, 0x0f, 0x9d, 0x07, 
+0x97, 0x9a, 0x0c, 0x10, 0xaa, 0x20, 0xda, 0x1e, 
+0xc1, 0xc3, 0x73, 0xcf, 0x9e, 0x3d, 0x3b, 0x8c, 
+0x1f, 0x1b, 0x0c, 0xc7, 0x05, 0x17, 0x42, 0x62, 
+0x9e, 0xe7, 0x05, 0x65, 0x26, 0x01, 0x00, 0x41, 
+0x91, 0x42, 0x1e, 0xc8, 0x8d, 0x8e, 0x8e, 0xfe, 
+0xb6, 0xb7, 0xb7, 0x77, 0x20, 0xd6, 0x1d, 0xc5, 
+0xbc, 0x6d, 0xd5, 0x35, 0xc0, 0xce, 0xdb, 0x78, 
+0x9a, 0x87, 0xa2, 0x48, 0x5c, 0x29, 0xd1, 0x23, 
+0x3a, 0xb8, 0xe0, 0xd8, 0x8d, 0xad, 0x0b, 0xf4, 
+0x88, 0x5e, 0xec, 0xed, 0x57, 0x7e, 0xf6, 0x23, 
+0x1c, 0xdb, 0xc1, 0xb6, 0x6c, 0x14, 0x29, 0xb9, 
+0x72, 0xe1, 0x2a, 0x57, 0xce, 0x5f, 0xad, 0xeb, 
+0x8f, 0x22, 0x5d, 0x3a, 0x52, 0x91, 0x8c, 0x8f, 
+0x8f, 0xdf, 0x1a, 0x1f, 0x1f, 0x1f, 0xaf, 0x00, 
+0x40, 0x11, 0x84, 0xf0, 0x3c, 0x12, 0x66, 0x80, 
+0x59, 0x78, 0x28, 0x7b, 0xee, 0xdc, 0xb9, 0xaf, 
+0x00, 0x37, 0xd2, 0xae, 0xa3, 0xea, 0x0a, 0x8a, 
+0x94, 0x75, 0x15, 0xc7, 0xc3, 0x31, 0x1d, 0x1c, 
+0xc3, 0xc6, 0xce, 0x5b, 0x28, 0x52, 0xa2, 0x2a, 
+0x8d, 0x3d, 0xab, 0xea, 0x2a, 0x91, 0x58, 0x84, 
+0x68, 0xdc, 0xd7, 0x48, 0x4c, 0x27, 0x12, 0xd5, 
+0x99, 0xca, 0x4c, 0x71, 0xe6, 0x5f, 0xcf, 0x34, 
+0xf4, 0x8e, 0x58, 0x77, 0x04, 0x21, 0x04, 0xd7, 
+0xaf, 0x5f, 0xff, 0x2d, 0x7e, 0x3c, 0xb0, 0x3a, 
+0x03, 0xca, 0x00, 0x08, 0x7c, 0x80, 0x85, 0x1f, 
+0x3e, 0xca, 0x66, 0x32, 0x99, 0xcc, 0xc4, 0xc4, 
+0xc4, 0xf5, 0x8e, 0x8e, 0x8e, 0x8d, 0x89, 0xf5, 
+0x71, 0x72, 0xa3, 0xb5, 0x87, 0x41, 0x45, 0xf1, 
+0x40, 0xca, 0xc6, 0xd6, 0x05, 0xaa, 0xaa, 0x10, 
+0x89, 0xeb, 0x08, 0xfc, 0x00, 0x8c, 0x3f, 0xd7, 
+0x0b, 0x2e, 0x7f, 0xf9, 0x0d, 0x78, 0xb5, 0xa9, 
+0x0f, 0x20, 0x63, 0x92, 0x48, 0x77, 0x04, 0x04, 
+0xde, 0xf9, 0xf3, 0xe7, 0xcf, 0xe2, 0x07, 0x45, 
+0x83, 0x22, 0x8a, 0x92, 0xe9, 0xb0, 0x18, 0x14, 
+0x0d, 0x49, 0xd8, 0x07, 0xe4, 0xf1, 0xc3, 0xca, 
+0xb3, 0xa7, 0x4f, 0x9f, 0xfe, 0x37, 0x21, 0x04, 
+0xb1, 0x8d, 0x51, 0x94, 0xa8, 0x8a, 0x94, 0xca, 
+0xaa, 0x29, 0x42, 0xa0, 0xa8, 0x0a, 0x7a, 0x5c, 
+0x47, 0x8b, 0x68, 0xa8, 0x9a, 0x8a, 0xaa, 0x29, 
+0x1c, 0x78, 0xeb, 0x00, 0xfd, 0x5b, 0xd7, 0xd5, 
+0x7d, 0x3e, 0xb1, 0x39, 0x8e, 0x54, 0x24, 0x37, 
+0x6f, 0xde, 0xbc, 0x34, 0x3a, 0x3a, 0x7a, 0x83, 
+0x85, 0xba, 0x81, 0x8a, 0x0c, 0x90, 0x50, 0xcc, 
+0x9d, 0x87, 0xd7, 0x01, 0x36, 0x05, 0x06, 0x00, 
+0x33, 0x5f, 0x7c, 0xf1, 0xc5, 0x70, 0x26, 0x93, 
+0xb9, 0xa2, 0xe8, 0x0a, 0x89, 0xc7, 0x62, 0x28, 
+0x8a, 0xb2, 0x6a, 0xea, 0x3a, 0x0b, 0xe1, 0xaf, 
+0x60, 0x15, 0x2b, 0x84, 0x40, 0x8f, 0x68, 0x1c, 
+0xfa, 0xf9, 0x41, 0xfa, 0xb6, 0xac, 0xad, 0xfa, 
+0xac, 0x9e, 0xd6, 0x89, 0xae, 0x89, 0x00, 0x38, 
+0x9f, 0x7e, 0xfa, 0xe9, 0x51, 0xfc, 0x04, 0xe9, 
+0x5c, 0xa1, 0x33, 0xc3, 0x25, 0x34, 0x0b, 0x8c, 
+0x2b, 0x63, 0x40, 0x18, 0x00, 0xb3, 0x80, 0xdc, 
+0x1c, 0x30, 0x35, 0x34, 0x34, 0xf4, 0x2f, 0x6f, 
+0xbe, 0xf9, 0xe6, 0x5f, 0x45, 0xfb, 0x22, 0xc2, 
+0x1e, 0x73, 0x71, 0xb3, 0xab, 0x13, 0xd9, 0xbd, 
+0xf1, 0x5f, 0x37, 0x98, 0xb8, 0x33, 0x11, 0x8a, 
+0x23, 0xfa, 0xa1, 0x35, 0xc7, 0x76, 0x70, 0x6c, 
+0x87, 0xdd, 0x2f, 0xef, 0x66, 0x7e, 0x2a, 0xcb, 
+0xdc, 0xc4, 0xe2, 0x78, 0x40, 0x7c, 0x73, 0x14, 
+0x21, 0x04, 0x23, 0x23, 0x23, 0x67, 0xae, 0x5d, 
+0xbb, 0x76, 0x8d, 0xd2, 0x34, 0x79, 0x49, 0x62, 
+0x64, 0x51, 0x66, 0x28, 0x34, 0x1b, 0x84, 0x1d, 
+0x61, 0x11, 0x80, 0x8b, 0x17, 0x2f, 0x7e, 0xbd, 
+0x7f, 0xff, 0xfe, 0x4b, 0xeb, 0xd7, 0xaf, 0xdf, 
+0x95, 0xdc, 0x19, 0x23, 0x7b, 0x3e, 0x87, 0xb7, 
+0x0a, 0x99, 0xb1, 0xcf, 0xff, 0xfe, 0xd7, 0x0d, 
+0xdd, 0xa7, 0x94, 0xed, 0x03, 0xf4, 0x75, 0x1a, 
+0x7a, 0x9b, 0x86, 0x69, 0x9a, 0xf9, 0xa3, 0x47, 
+0x8f, 0x1e, 0xa5, 0x72, 0xb1, 0xc4, 0xa2, 0xfd, 
+0x40, 0x25, 0xcf, 0x54, 0x3e, 0x0c, 0xe6, 0xf1, 
+0x91, 0x9c, 0x38, 0x7c, 0xf8, 0xf0, 0x3f, 0xcc, 
+0xcf, 0xcf, 0x3f, 0x54, 0x52, 0x0a, 0xb1, 0xc7, 
+0x63, 0xab, 0xea, 0x0b, 0x96, 0xa2, 0x7a, 0x87, 
+0x4e, 0x74, 0x53, 0x04, 0xc0, 0x1b, 0x1a, 0x1a, 
+0xfa, 0x20, 0x93, 0xc9, 0xdc, 0x04, 0xa6, 0x58, 
+0x9c, 0x1e, 0x2f, 0xe9, 0xfd, 0x7a, 0x00, 0x84, 
+0x59, 0x30, 0x0b, 0x4c, 0x8e, 0x8f, 0x8f, 0xdf, 
+0xfa, 0xe0, 0x83, 0x0f, 0xfe, 0xd6, 0x71, 0x1c, 
+0x43, 0xef, 0xd6, 0x88, 0x6e, 0x88, 0xa0, 0x48, 
+0xe5, 0x07, 0x55, 0x2d, 0xa9, 0x12, 0xdb, 0x1e, 
+0x41, 0x2a, 0x92, 0xe1, 0xe1, 0xe1, 0x7f, 0x1f, 
+0x1a, 0x1a, 0x3a, 0x45, 0x8d, 0x2a, 0x91, 0x72, 
+0x63, 0x1f, 0xa9, 0x40, 0xe2, 0xe5, 0x97, 0x5f, 
+0x7e, 0xe9, 0xd5, 0x57, 0x5f, 0x7d, 0x5b, 0x08, 
+0x21, 0xac, 0xab, 0x0e, 0xf6, 0xed, 0x1f, 0x26, 
+0x4b, 0x2c, 0x93, 0x02, 0x7d, 0xbb, 0x8a, 0x88, 
+0x08, 0x46, 0x47, 0x47, 0x2f, 0xbd, 0xfb, 0xee, 
+0xbb, 0x4b, 0x2e, 0x90, 0x58, 0x14, 0x10, 0x29, 
+0xf3, 0x05, 0x41, 0x1a, 0x29, 0xc7, 0x42, 0xb4, 
+0x58, 0x39, 0x7e, 0xfc, 0xf8, 0xa9, 0x8e, 0x8e, 
+0x8e, 0xf6, 0xe7, 0x9e, 0x7b, 0xee, 0x35, 0xfd, 
+0x31, 0x55, 0x28, 0x4d, 0x12, 0x7b, 0xc4, 0x29, 
+0xf3, 0xaf, 0xab, 0x2b, 0xb2, 0x5d, 0xa2, 0x6e, 
+0x91, 0x08, 0x45, 0x90, 0xc9, 0x64, 0x46, 0xdf, 
+0x7f, 0xff, 0xfd, 0x5f, 0xb2, 0xb8, 0x3c, 0x26, 
+0x5c, 0x28, 0xd5, 0x58, 0x89, 0x0c, 0x34, 0x5e, 
+0x24, 0x75, 0xe8, 0xd0, 0xa1, 0x03, 0x07, 0x0f, 
+0x1e, 0xfc, 0xa9, 0xa6, 0x69, 0xba, 0x37, 0xeb, 
+0x61, 0x5f, 0x76, 0xf0, 0x96, 0xb6, 0xf9, 0x7b, 
+0x24, 0x51, 0xd6, 0x49, 0x94, 0x7e, 0x7f, 0xf4, 
+0x8e, 0x8c, 0x8c, 0x0c, 0xbf, 0xf7, 0xde, 0x7b, 
+0xbf, 0x32, 0x0c, 0x63, 0xe5, 0x8a, 0xa4, 0xa0, 
+0xf1, 0x32, 0xb9, 0xdd, 0xbb, 0x77, 0xef, 0x7c, 
+0xe3, 0x8d, 0x37, 0x7e, 0x9e, 0x48, 0x24, 0x5a, 
+0x70, 0xc0, 0xbd, 0xed, 0xe1, 0x8e, 0x79, 0xab, 
+0xc2, 0x06, 0x91, 0x16, 0xc8, 0xf5, 0x02, 0x91, 
+0x00, 0xcf, 0xf3, 0xdc, 0x2f, 0xbf, 0xfc, 0xf2, 
+0xd8, 0xe1, 0xc3, 0x87, 0x57, 0xbe, 0x4c, 0xae, 
+0xf8, 0xcf, 0x06, 0x0b, 0x25, 0xbb, 0xbb, 0xbb, 
+0xd7, 0xbd, 0xf3, 0xce, 0x3b, 0x7f, 0xb6, 0x76, 
+0xed, 0xda, 0x01, 0x00, 0x4c, 0x70, 0x6f, 0x7a, 
+0xb8, 0xf7, 0xa9, 0xe0, 0x76, 0x1e, 0xc1, 0xf0, 
+0x24, 0xbe, 0xe1, 0x2d, 0xfe, 0xe7, 0x6c, 0x36, 
+0x3b, 0xfd, 0xc9, 0x27, 0x9f, 0xfc, 0xd3, 0xf1, 
+0xe3, 0xc7, 0xff, 0x13, 0xbf, 0x48, 0xf2, 0x21, 
+0xbe, 0xd7, 0xaf, 0x54, 0x0b, 0xf0, 0x68, 0x85, 
+0x92, 0xc5, 0x1b, 0xaa, 0x97, 0xca, 0xc6, 0xf1, 
+0xf3, 0xef, 0xc5, 0x52, 0xd9, 0xfd, 0xfb, 0xf7, 
+0xef, 0x39, 0x78, 0xf0, 0xe0, 0x6b, 0x6d, 0x6d, 
+0x6d, 0xbd, 0x00, 0x58, 0xe0, 0x4d, 0xf8, 0xcd, 
+0xf3, 0xa6, 0x59, 0x1a, 0x18, 0x71, 0x10, 0xad, 
+0xbe, 0x92, 0xf4, 0xbf, 0x32, 0x4d, 0x33, 0x3f, 
+0x3c, 0x3c, 0xfc, 0xf9, 0x87, 0x1f, 0x7e, 0xf8, 
+0x69, 0x36, 0x9b, 0x0d, 0x4a, 0x65, 0xa7, 0x28, 
+0x5d, 0xf1, 0xad, 0x5c, 0xa9, 0x6c, 0x15, 0x10, 
+0xaa, 0x15, 0x4b, 0x37, 0xe3, 0x0f, 0x8d, 0xf4, 
+0xeb, 0xaf, 0xbf, 0xfe, 0xfc, 0xf3, 0xcf, 0x3f, 
+0x7f, 0x28, 0x95, 0x4a, 0x15, 0x8b, 0xa5, 0x71, 
+0x0a, 0x4d, 0x35, 0xc0, 0x33, 0xc5, 0xc2, 0x89, 
+0x00, 0x97, 0xe2, 0x29, 0x02, 0x11, 0xf1, 0xfc, 
+0xbf, 0x53, 0xf8, 0x10, 0x17, 0xc4, 0xb6, 0x6d, 
+0xf3, 0xf2, 0xe5, 0xcb, 0x67, 0x8e, 0x1c, 0x39, 
+0xf2, 0x51, 0x26, 0x93, 0xb9, 0x5b, 0x78, 0xd3, 
+0x74, 0x41, 0xc3, 0xbd, 0xbe, 0xf2, 0xc5, 0xd2, 
+0x35, 0x40, 0x08, 0x1f, 0x90, 0x08, 0xce, 0x08, 
+0x24, 0x0b, 0xcd, 0x4f, 0x01, 0x4d, 0xfb, 0xf6, 
+0xed, 0xdb, 0xb2, 0x77, 0xef, 0xde, 0x3d, 0x1b, 
+0x37, 0x6e, 0xdc, 0x96, 0x4e, 0xa7, 0x97, 0x54, 
+0x2e, 0x6f, 0x18, 0x46, 0xf6, 0xc6, 0x8d, 0x1b, 
+0xdf, 0x7d, 0xfd, 0xf5, 0xd7, 0x17, 0x4e, 0x9e, 
+0x3c, 0x79, 0x61, 0x6e, 0x6e, 0x2e, 0x70, 0x6e, 
+0x41, 0x6f, 0xff, 0xee, 0xca, 0xe5, 0x8b, 0x37, 
+0xd7, 0x3e, 0x30, 0x11, 0x30, 0xa2, 0xe2, 0x81, 
+0x89, 0x81, 0x81, 0x81, 0xde, 0xdd, 0xbb, 0x77, 
+0x0f, 0xa4, 0x52, 0xa9, 0x74, 0x53, 0x53, 0x53, 
+0x73, 0x3c, 0x1e, 0x4f, 0x25, 0x12, 0x89, 0x26, 
+0x55, 0x55, 0xd5, 0x6c, 0x36, 0x3b, 0x37, 0x37, 
+0x37, 0x37, 0x33, 0x3f, 0x3f, 0x3f, 0x33, 0x3b, 
+0x3b, 0x3b, 0x79, 0xfb, 0xf6, 0xed, 0xb1, 0x53, 
+0xa7, 0x4e, 0x7d, 0x63, 0x59, 0x56, 0xad, 0x03, 
+0x13, 0x61, 0xc3, 0x4b, 0x4e, 0x8e, 0x34, 0x6a, 
+0xfc, 0x92, 0x01, 0x08, 0x81, 0x00, 0x8f, 0x7e, 
+0x64, 0x26, 0x9c, 0xa8, 0x0c, 0xc7, 0x24, 0x83, 
+0x73, 0x40, 0xe1, 0x23, 0x33, 0xf9, 0x0a, 0x5a, 
+0xf5, 0xc8, 0x0c, 0x35, 0xbc, 0x7d, 0x55, 0x7b, 
+0x7e, 0xa0, 0x43, 0x53, 0xe1, 0x93, 0x63, 0x50, 
+0xba, 0xfc, 0x0e, 0x40, 0xf8, 0x9d, 0x1c, 0x9a, 
+0x5a, 0xd6, 0xc1, 0xc9, 0x65, 0x1c, 0x9b, 0x2b, 
+0xcf, 0xd5, 0x95, 0xe7, 0x24, 0x02, 0xad, 0x7b, 
+0x6c, 0x8e, 0x65, 0x18, 0x0f, 0xcb, 0x04, 0x00, 
+0x4a, 0x40, 0x80, 0x52, 0x46, 0x84, 0x33, 0xcd, 
+0x8d, 0x1c, 0x9c, 0x2c, 0x0f, 0xca, 0xd4, 0x3c, 
+0x38, 0xc9, 0x32, 0x0d, 0x2f, 0x36, 0xf8, 0xff, 
+0xfb, 0xd1, 0xd9, 0x15, 0x03, 0xa0, 0xe4, 0xa5, 
+0x2b, 0x78, 0x78, 0x3a, 0x74, 0xf5, 0x3f, 0xfc, 
+0x6f, 0x3d, 0x3c, 0xfd, 0x7f, 0x55, 0xfe, 0x07, 
+0xcd, 0x43, 0x6c, 0x08, 0xe0, 0x1a, 0x5c, 0x9d, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity10.png b/source/bitmaps/misc/activity10.png
new file mode 100644 (file)
index 0000000..879f7de
Binary files /dev/null and b/source/bitmaps/misc/activity10.png differ
diff --git a/source/bitmaps/misc/activity11.cpp b/source/bitmaps/misc/activity11.cpp
new file mode 100644 (file)
index 0000000..11e7eab
--- /dev/null
@@ -0,0 +1,544 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY11_CPP
+#define MISC_ACTIVITY11_CPP
+
+static unsigned char misc_activity11_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x31, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xd9, 
+0x73, 0x5c, 0x55, 0x7e, 0xc7, 0x3f, 0xe7, 0xdc, 
+0xa5, 0x6f, 0x2f, 0xea, 0x56, 0x6b, 0x5f, 0x2c, 
+0xd9, 0xb2, 0x3d, 0xc6, 0x0b, 0xb6, 0x20, 0x60, 
+0xc0, 0x60, 0x83, 0x1d, 0x98, 0x8a, 0xc3, 0x43, 
+0x00, 0x17, 0xf3, 0xc0, 0x14, 0x95, 0x97, 0x10, 
+0x32, 0x55, 0xc9, 0x0b, 0x95, 0xbc, 0x65, 0xfe, 
+0x83, 0x29, 0x9e, 0x52, 0x14, 0x35, 0x95, 0x49, 
+0x5e, 0x20, 0x81, 0x9a, 0xa9, 0x62, 0x08, 0xe0, 
+0x62, 0x0a, 0x3b, 0x19, 0x42, 0x00, 0x63, 0x1b, 
+0x63, 0x9b, 0xf1, 0x18, 0x8c, 0x6c, 0xcb, 0xd6, 
+0xe2, 0x45, 0x92, 0x2d, 0x6b, 0x6b, 0xf5, 0xdd, 
+0xf3, 0x70, 0xfb, 0xb6, 0x6e, 0xb7, 0x7a, 0x13, 
+0x92, 0x27, 0x49, 0xe5, 0xa7, 0xfa, 0xd5, 0x55, 
+0xdf, 0xbe, 0xf7, 0xf4, 0xf9, 0x7d, 0x7f, 0xcb, 
+0x39, 0xe7, 0x77, 0x7e, 0x47, 0xf8, 0xbe, 0xcf, 
+0xdd, 0x24, 0x21, 0x84, 0xa8, 0xf6, 0x55, 0x85, 
+0x7b, 0xcb, 0x3a, 0xe3, 0xdf, 0xe5, 0x0e, 0xaa, 
+0x77, 0xa3, 0xd1, 0x32, 0xa1, 0x45, 0x95, 0x6b, 
+0x35, 0xf2, 0xa3, 0xd7, 0x72, 0xfc, 0xd6, 0x1a, 
+0x10, 0xb1, 0x56, 0xed, 0x55, 0x10, 0x5a, 0x94, 
+0xfd, 0x2f, 0x2b, 0xdc, 0x8b, 0x52, 0x54, 0xf0, 
+0x5a, 0x1c, 0x3c, 0xb4, 0x46, 0x1d, 0x5f, 0xb5, 
+0x05, 0x54, 0x11, 0x5c, 0x46, 0xae, 0x95, 0x58, 
+0x50, 0x0a, 0x42, 0x28, 0x8c, 0x57, 0xf8, 0xdf, 
+0xab, 0xc2, 0x45, 0x20, 0xc2, 0x9f, 0x5d, 0x2d, 
+0x10, 0xab, 0x02, 0x20, 0x22, 0x7c, 0xb9, 0xd0, 
+0x4a, 0x84, 0xd5, 0x02, 0x2b, 0x65, 0x5c, 0x6e, 
+0x05, 0x51, 0x41, 0x1d, 0xc0, 0xad, 0x70, 0x75, 
+0x29, 0x03, 0x63, 0xb5, 0x40, 0x7c, 0x2f, 0x17, 
+0x28, 0x13, 0xbc, 0x5c, 0x68, 0x15, 0xd0, 0x22, 
+0xac, 0x17, 0x38, 0xfc, 0x1c, 0x02, 0x12, 0xb5, 
+0x84, 0x50, 0xeb, 0xa1, 0xb0, 0x76, 0x81, 0xad, 
+0xb2, 0x6b, 0xc8, 0x95, 0xc0, 0xf8, 0x5e, 0x20, 
+0xac, 0xd8, 0x02, 0x22, 0xc2, 0x87, 0x02, 0x44, 
+0xb5, 0xac, 0x03, 0xb1, 0x02, 0x1b, 0x05, 0x8e, 
+0x47, 0x3e, 0x87, 0x60, 0x84, 0x16, 0x11, 0x02, 
+0x10, 0xd5, 0x7c, 0x28, 0xb0, 0x59, 0xe0, 0x3c, 
+0xb0, 0x58, 0xb8, 0xe6, 0x0b, 0xf7, 0x42, 0x40, 
+0x42, 0xcb, 0xf0, 0x28, 0x58, 0xc3, 0x4a, 0x41, 
+0x58, 0x11, 0x00, 0x05, 0xe1, 0x43, 0x0e, 0x35, 
+0x1e, 0x6a, 0x39, 0x14, 0x38, 0x01, 0x24, 0x23, 
+0x9c, 0x00, 0x12, 0x1d, 0x1d, 0x1d, 0xbd, 0xbd, 
+0xbd, 0xbd, 0x5b, 0x0d, 0xc3, 0x68, 0x31, 0x0c, 
+0xa3, 0x59, 0xd7, 0xf5, 0xb4, 0xae, 0xeb, 0x69, 
+0x29, 0xa5, 0x66, 0x59, 0xd6, 0x9c, 0x65, 0x59, 
+0xb3, 0xa6, 0x69, 0xde, 0x31, 0x4d, 0x73, 0xfa, 
+0xce, 0x9d, 0x3b, 0x63, 0x97, 0x2e, 0x5d, 0xfa, 
+0xc6, 0xf3, 0xbc, 0x05, 0x20, 0x07, 0x2c, 0x44, 
+0x38, 0x17, 0x01, 0xc4, 0x2c, 0x07, 0x62, 0xa5, 
+0x2e, 0xd1, 0xb0, 0x0b, 0x44, 0x84, 0x0f, 0xcd, 
+0x3d, 0xd4, 0x78, 0xa8, 0xe5, 0x24, 0xd0, 0x54, 
+0xe0, 0x34, 0xd0, 0xd4, 0xdf, 0xdf, 0x7f, 0x4f, 
+0x5f, 0x5f, 0xdf, 0x83, 0x6d, 0x6d, 0x6d, 0x3b, 
+0x12, 0x89, 0x44, 0x67, 0x43, 0x3f, 0x54, 0x20, 
+0xc7, 0x71, 0x72, 0xd3, 0xd3, 0xd3, 0x17, 0x6e, 
+0xdc, 0xb8, 0x71, 0x7a, 0x68, 0x68, 0xe8, 0x8c, 
+0x69, 0x9a, 0xb7, 0x80, 0x59, 0x60, 0xae, 0xc0, 
+0xf3, 0x2c, 0x81, 0x11, 0x5a, 0x44, 0xd4, 0x2d, 
+0x1a, 0x02, 0xa1, 0x21, 0x00, 0x2a, 0x08, 0xaf, 
+0x11, 0x98, 0x75, 0x1c, 0x48, 0x15, 0x84, 0x6e, 
+0x06, 0x32, 0x40, 0xcb, 0x7d, 0xf7, 0xdd, 0xf7, 
+0xf8, 0xa6, 0x4d, 0x9b, 0x0e, 0x1a, 0x86, 0xd1, 
+0x1a, 0xb6, 0xa1, 0xd8, 0x2a, 0xd9, 0x89, 0x16, 
+0x8c, 0xf9, 0x38, 0x7a, 0x5e, 0x47, 0x33, 0x75, 
+0xf4, 0x7c, 0x0c, 0xe9, 0x4a, 0x6c, 0xc3, 0xc2, 
+0x8a, 0x59, 0x58, 0x86, 0x89, 0x15, 0x37, 0xb9, 
+0xd3, 0x31, 0x4d, 0x3e, 0xb9, 0x58, 0xfc, 0x7d, 
+0xcf, 0xf3, 0xec, 0xeb, 0xd7, 0xaf, 0x7f, 0x71, 
+0xea, 0xd4, 0xa9, 0xf7, 0xe7, 0xe6, 0xe6, 0xae, 
+0x01, 0xd3, 0xc0, 0x4c, 0x04, 0x90, 0x1c, 0x4b, 
+0xae, 0xe1, 0xac, 0x04, 0x84, 0xba, 0x00, 0x94, 
+0x09, 0x1f, 0x06, 0x38, 0x83, 0x25, 0x8d, 0x67, 
+0x80, 0x16, 0xa0, 0x65, 0xeb, 0xd6, 0xad, 0x8f, 
+0x6c, 0xdb, 0xb6, 0xed, 0xcf, 0x92, 0xc9, 0x64, 
+0x37, 0x80, 0x96, 0xd7, 0xc9, 0xde, 0x68, 0x21, 
+0x7b, 0xad, 0x8d, 0xf4, 0x54, 0x06, 0xe1, 0xd5, 
+0x9b, 0x03, 0x2d, 0xd1, 0x62, 0x53, 0x8e, 0xe9, 
+0x9e, 0x5b, 0x4c, 0x77, 0xdf, 0x62, 0xa1, 0x79, 
+0x1e, 0x00, 0xd7, 0x75, 0xcd, 0xd1, 0xd1, 0xd1, 
+0xdf, 0x9e, 0x3c, 0x79, 0xf2, 0xb0, 0x69, 0x9a, 
+0x37, 0x81, 0xdb, 0x05, 0x30, 0x66, 0x09, 0xdc, 
+0x63, 0xb1, 0x00, 0x44, 0xc3, 0x20, 0xd4, 0x04, 
+0xa0, 0x8a, 0xf0, 0xa1, 0xb9, 0x67, 0x80, 0x2c, 
+0xd0, 0x96, 0xc9, 0x64, 0x36, 0x3c, 0xf1, 0xc4, 
+0x13, 0x2f, 0x35, 0x37, 0x37, 0x6f, 0x09, 0x04, 
+0xd7, 0xe8, 0xfe, 0x66, 0x1d, 0xad, 0x23, 0xed, 
+0x08, 0xbf, 0x71, 0xa1, 0xab, 0x51, 0x2e, 0xb3, 
+0xc0, 0xf8, 0xbd, 0x23, 0xcc, 0xb5, 0xcf, 0x02, 
+0x60, 0xdb, 0xf6, 0xdc, 0xd9, 0xb3, 0x67, 0xdf, 
+0x3c, 0x7f, 0xfe, 0xfc, 0x31, 0x60, 0x0a, 0xb8, 
+0x45, 0x60, 0x11, 0x51, 0x6b, 0x68, 0x08, 0x84, 
+0xaa, 0x00, 0x54, 0x30, 0x7b, 0x9d, 0x25, 0x93, 
+0x6f, 0x06, 0x5a, 0x81, 0xf6, 0xfe, 0xfe, 0xfe, 
+0xc1, 0x3d, 0x7b, 0xf6, 0xbc, 0x6c, 0x18, 0x46, 
+0xb3, 0x74, 0x24, 0xed, 0x43, 0xdd, 0xb4, 0x5f, 
+0xec, 0x44, 0xba, 0x72, 0xd5, 0x82, 0x97, 0xd3, 
+0x5c, 0xe7, 0x0c, 0xd7, 0x77, 0x8c, 0x91, 0x4f, 
+0x2f, 0x02, 0x78, 0xdf, 0x7d, 0xf7, 0xdd, 0xe1, 
+0x63, 0xc7, 0x8e, 0xbd, 0x0b, 0x4c, 0x10, 0x00, 
+0x31, 0xcd, 0x72, 0x10, 0x5c, 0x02, 0xf9, 0x1b, 
+0x07, 0xa0, 0x6c, 0xa8, 0xab, 0x24, 0x7c, 0x3b, 
+0xd0, 0x31, 0x38, 0x38, 0xf8, 0xe4, 0xe0, 0xe0, 
+0xe0, 0x8f, 0x15, 0x45, 0xd1, 0xe3, 0xd3, 0x09, 
+0xfa, 0x8e, 0x6f, 0x40, 0xcd, 0x6b, 0x6b, 0x27, 
+0x71, 0xc5, 0x1e, 0xc3, 0xe4, 0xd6, 0x1b, 0x4c, 
+0xde, 0x73, 0x13, 0x80, 0x9b, 0x37, 0x6f, 0x9e, 
+0x3a, 0x72, 0xe4, 0xc8, 0x2f, 0x6c, 0xdb, 0xbe, 
+0x06, 0x4c, 0x12, 0xb8, 0xc5, 0x2c, 0xcb, 0x2d, 
+0xa1, 0x22, 0x08, 0xb5, 0x00, 0x08, 0x87, 0xba, 
+0xd0, 0xec, 0x53, 0x14, 0x4c, 0x1e, 0xe8, 0x7a, 
+0xec, 0xb1, 0xc7, 0x0e, 0x6d, 0xd9, 0xb2, 0xe5, 
+0x59, 0x21, 0x84, 0x48, 0x8f, 0x36, 0xd3, 0x79, 
+0xba, 0x67, 0x45, 0x3e, 0xbe, 0x5a, 0x9a, 0xeb, 
+0x99, 0xe5, 0xc6, 0x03, 0xe3, 0xf8, 0x8a, 0xc7, 
+0xec, 0xec, 0xec, 0xf0, 0xfb, 0xef, 0xbf, 0xff, 
+0x33, 0xd3, 0x34, 0xc7, 0x08, 0xac, 0x21, 0x0a, 
+0x42, 0x31, 0x30, 0x36, 0x04, 0x40, 0x99, 0xe9, 
+0x87, 0xd1, 0x3e, 0xaa, 0xf9, 0xae, 0x9d, 0x3b, 
+0x77, 0x1e, 0x78, 0xf8, 0xe1, 0x87, 0x5f, 0x02, 
+0x44, 0xeb, 0xb9, 0x76, 0x32, 0x17, 0x5b, 0xee, 
+0x9a, 0xa0, 0xb5, 0xc8, 0xca, 0x98, 0xdc, 0x78, 
+0x64, 0x0c, 0x27, 0xee, 0x30, 0x31, 0x31, 0x71, 
+0xf6, 0xbd, 0xf7, 0xde, 0xfb, 0x07, 0xe0, 0x1a, 
+0x4b, 0x20, 0xcc, 0x11, 0x04, 0xc6, 0xe2, 0x10, 
+0x59, 0x0e, 0x42, 0x89, 0xa3, 0x96, 0x4d, 0x71, 
+0xc3, 0xb1, 0x3e, 0x8c, 0xf8, 0x19, 0xa0, 0xb5, 
+0xaf, 0xaf, 0x6f, 0xc7, 0xee, 0xdd, 0xbb, 0xff, 
+0x5c, 0x08, 0x21, 0xb2, 0xdf, 0xb6, 0x92, 0xba, 
+0x94, 0xc1, 0x15, 0xee, 0x32, 0x96, 0x09, 0xc9, 
+0x9e, 0xbf, 0x7d, 0x98, 0x7b, 0x9e, 0xdb, 0x42, 
+0xd3, 0xfa, 0x54, 0xc5, 0x67, 0x56, 0xcb, 0xca, 
+0xac, 0x4a, 0xc7, 0xb1, 0x1e, 0xa4, 0xab, 0xd0, 
+0xd9, 0xd9, 0x39, 0xb8, 0x7f, 0xff, 0xfe, 0xe7, 
+0x09, 0x94, 0x94, 0x25, 0x18, 0xa1, 0xe2, 0x04, 
+0xee, 0x5b, 0x9c, 0x75, 0x96, 0xe7, 0x27, 0x2a, 
+0xcd, 0x04, 0x2b, 0x05, 0xbe, 0x26, 0x20, 0x9b, 
+0x4e, 0xa7, 0xfb, 0x0e, 0x1c, 0x38, 0xf0, 0x13, 
+0x4d, 0xd3, 0x62, 0xf1, 0xf1, 0x04, 0xa9, 0xa1, 
+0x0c, 0x9e, 0xf4, 0x2a, 0x6a, 0xc7, 0x34, 0x4d, 
+0xa6, 0x2e, 0x4d, 0xf1, 0xe8, 0x5f, 0x3f, 0x82, 
+0x16, 0xd7, 0x58, 0xbc, 0xb3, 0xc8, 0xe8, 0xc9, 
+0x71, 0xae, 0x7e, 0x3e, 0xc2, 0xc8, 0x89, 0x51, 
+0xac, 0x79, 0xab, 0x8e, 0x7e, 0x1b, 0x23, 0x65, 
+0x41, 0xa5, 0xf5, 0xab, 0x0e, 0x6e, 0x3f, 0x3c, 
+0xc1, 0x96, 0x2d, 0x5b, 0xfe, 0x64, 0x66, 0x66, 
+0x66, 0xfc, 0xf4, 0xe9, 0xd3, 0x1f, 0x51, 0x79, 
+0xa6, 0x58, 0xb2, 0xa4, 0x86, 0x32, 0x17, 0x28, 
+0xa0, 0x13, 0x0e, 0x79, 0xa1, 0xe9, 0xb7, 0x00, 
+0x1d, 0xc0, 0xba, 0xe7, 0x9e, 0x7b, 0xee, 0x95, 
+0xce, 0xce, 0xce, 0xfb, 0xd4, 0x19, 0x8d, 0xec, 
+0x7f, 0xb5, 0x23, 0xdc, 0xda, 0x3e, 0x2f, 0x55, 
+0xc9, 0x8f, 0x5e, 0x3f, 0x44, 0xc7, 0x3d, 0xed, 
+0x68, 0x09, 0x0d, 0xcd, 0x50, 0x91, 0xaa, 0xc4, 
+0x31, 0x5d, 0x46, 0xbf, 0x1c, 0xe3, 0xeb, 0x77, 
+0x7e, 0xc7, 0xf9, 0xc3, 0xdf, 0xae, 0x09, 0x10, 
+0xb9, 0x1f, 0xcc, 0x31, 0xbf, 0x7d, 0x16, 0xd7, 
+0x71, 0xcd, 0x5f, 0xfe, 0xea, 0x97, 0x3f, 0x9d, 
+0x99, 0x99, 0xf9, 0x16, 0xb8, 0x41, 0x30, 0x3a, 
+0xcc, 0xb2, 0xe4, 0x0a, 0x25, 0x01, 0xb1, 0xe8, 
+0x02, 0xf5, 0x86, 0xbd, 0x4d, 0x9b, 0x36, 0xdd, 
+0xdb, 0xd9, 0xd9, 0x39, 0x28, 0x7c, 0x41, 0xd3, 
+0x97, 0xcd, 0xf8, 0x9e, 0x87, 0x27, 0xdc, 0x9a, 
+0xec, 0xb8, 0x36, 0x9f, 0xfe, 0xfc, 0x33, 0x10, 
+0x20, 0x44, 0x00, 0x88, 0x16, 0xd7, 0x88, 0x35, 
+0xc5, 0x58, 0xff, 0x70, 0x1f, 0xad, 0x9b, 0x5b, 
+0xea, 0xb6, 0xd1, 0x28, 0x1b, 0x17, 0x13, 0xe8, 
+0xb7, 0x62, 0xa8, 0x9a, 0x1a, 0xdb, 0xbb, 0x77, 
+0xef, 0xb3, 0x2c, 0xb9, 0x41, 0xa2, 0xa0, 0xcc, 
+0xe8, 0x0a, 0x74, 0x49, 0x49, 0x65, 0x40, 0x46, 
+0x2d, 0xa0, 0x04, 0x80, 0xdd, 0xbb, 0x77, 0x3f, 
+0xa7, 0x28, 0x8a, 0x30, 0x46, 0x12, 0xb0, 0x28, 
+0x70, 0xa5, 0xd7, 0x18, 0xe3, 0x61, 0x2d, 0x5a, 
+0x78, 0xae, 0x87, 0xeb, 0x78, 0x78, 0x4e, 0xb0, 
+0x7a, 0x15, 0x52, 0x70, 0xf5, 0xf4, 0x48, 0xe3, 
+0xed, 0x34, 0xc0, 0xc6, 0x37, 0x49, 0xa4, 0x94, 
+0xf4, 0xf7, 0xf7, 0x3f, 0xd2, 0xd3, 0xd3, 0xb3, 
+0x91, 0x60, 0x4d, 0x92, 0x2c, 0x00, 0xa0, 0x51, 
+0x21, 0x16, 0xc8, 0x32, 0xed, 0x97, 0xbb, 0x40, 
+0x02, 0x48, 0xef, 0xda, 0xb5, 0xeb, 0x81, 0xb6, 
+0xb6, 0xb6, 0xcd, 0xd2, 0x91, 0x68, 0xdf, 0xc5, 
+0x1a, 0xd2, 0x08, 0xaa, 0xcf, 0x03, 0x2f, 0xdc, 
+0xc7, 0xc1, 0x9f, 0xfe, 0x10, 0x04, 0xd8, 0xa6, 
+0x83, 0x93, 0xb7, 0x31, 0x73, 0x16, 0xf6, 0xa2, 
+0x8d, 0x9d, 0xb7, 0xb9, 0x7a, 0x66, 0x64, 0xcd, 
+0x2c, 0xc0, 0x13, 0x2e, 0x62, 0x46, 0xa0, 0x8d, 
+0xeb, 0x28, 0x8a, 0xa2, 0x3c, 0xfa, 0xe8, 0xa3, 
+0xcf, 0x46, 0x00, 0x88, 0x47, 0x00, 0x28, 0x51, 
+0x7a, 0x79, 0x10, 0x8c, 0x2e, 0x76, 0x8a, 0xf3, 
+0xfd, 0xc1, 0xc1, 0xc1, 0x3f, 0x95, 0x52, 0xa2, 
+0x5c, 0xd2, 0xf1, 0x1c, 0x1f, 0x64, 0xed, 0xf5, 
+0x83, 0xd1, 0x64, 0xf0, 0xc4, 0x5f, 0xee, 0xa5, 
+0x7b, 0x5b, 0x37, 0x8e, 0xed, 0x22, 0x4d, 0x1b, 
+0x04, 0xf8, 0xf8, 0xa8, 0xae, 0x87, 0x90, 0x82, 
+0xf1, 0x73, 0xe3, 0x2c, 0xe6, 0xf3, 0xcb, 0x6d, 
+0x70, 0x95, 0xa4, 0x7c, 0x1b, 0xc3, 0xeb, 0x75, 
+0xe9, 0xee, 0xee, 0x1e, 0xec, 0xed, 0xed, 0xdd, 
+0x30, 0x3e, 0x3e, 0x1e, 0x2e, 0x9c, 0x74, 0x96, 
+0x26, 0x46, 0x61, 0x12, 0xa6, 0x04, 0x80, 0xe8, 
+0xe4, 0x27, 0x4c, 0x6c, 0x24, 0xb2, 0xd9, 0x6c, 
+0x67, 0x4b, 0x4b, 0xcb, 0x06, 0x3c, 0x10, 0x57, 
+0x65, 0xa0, 0xdd, 0x1a, 0x24, 0x15, 0xc9, 0x43, 
+0x2f, 0x3c, 0x40, 0xa6, 0x27, 0x8d, 0x6d, 0xd9, 
+0x08, 0x05, 0xc0, 0xe7, 0xbb, 0xcf, 0x86, 0x58, 
+0xff, 0x47, 0xfd, 0x34, 0xb5, 0xa6, 0x10, 0x52, 
+0x72, 0xf1, 0xf8, 0xe5, 0xba, 0x6d, 0x7d, 0x2f, 
+0xca, 0x83, 0x9c, 0x50, 0xf0, 0x7b, 0x3c, 0xb1, 
+0x6d, 0xdb, 0xb6, 0x87, 0xc6, 0xc7, 0xc7, 0xbf, 
+0xa3, 0x74, 0x38, 0x2c, 0x66, 0xa2, 0x84, 0x10, 
+0xcb, 0x00, 0x28, 0xb7, 0x80, 0xc4, 0xae, 0x5d, 
+0xbb, 0x1e, 0x94, 0x52, 0x0a, 0x7f, 0x4a, 0xe0, 
+0xba, 0x6e, 0x5d, 0x8d, 0xed, 0xf8, 0xe1, 0x36, 
+0x52, 0x1d, 0x29, 0x2c, 0xcb, 0xc6, 0x97, 0x60, 
+0x5b, 0x16, 0xc7, 0x7f, 0x75, 0x92, 0x8b, 0xc7, 
+0x2f, 0xb1, 0xe3, 0xc9, 0xed, 0x3c, 0xf5, 0x93, 
+0x3f, 0x46, 0x4a, 0xc9, 0xe5, 0xd3, 0x97, 0x71, 
+0xe5, 0x5d, 0x00, 0x00, 0x10, 0x37, 0x05, 0x72, 
+0x9d, 0xa4, 0xaf, 0xaf, 0x6f, 0x27, 0x4b, 0x2e, 
+0x10, 0x66, 0xa2, 0x4a, 0x02, 0xa1, 0x5a, 0xc5, 
+0xff, 0x43, 0x00, 0xe2, 0x7d, 0x7d, 0x7d, 0x3b, 
+0x85, 0x10, 0x78, 0x37, 0x7c, 0x3c, 0x51, 0xdb, 
+0xf4, 0x3b, 0x06, 0xda, 0xe9, 0xd8, 0xdc, 0x81, 
+0x6d, 0xd9, 0xa0, 0x80, 0x6d, 0xda, 0xfc, 0xc7, 
+0x3f, 0x7d, 0xcc, 0x9d, 0x1b, 0x77, 0x40, 0xc0, 
+0xb9, 0x8f, 0x7f, 0xcf, 0xf6, 0x03, 0xdb, 0x68, 
+0xe9, 0xcd, 0x32, 0x76, 0x61, 0x1c, 0x4f, 0x54, 
+0x9e, 0x43, 0x44, 0x49, 0x51, 0x15, 0x7c, 0xdf, 
+0xc7, 0x73, 0xeb, 0x3f, 0x5b, 0xa4, 0x9b, 0xa0, 
+0xf9, 0x82, 0x6c, 0x36, 0xdb, 0x9f, 0xcd, 0x66, 
+0xdb, 0xa6, 0xa7, 0xa7, 0x6f, 0x96, 0x01, 0x20, 
+0x29, 0x0c, 0x87, 0xd1, 0xbc, 0x5c, 0x54, 0xf3, 
+0x29, 0xa0, 0x39, 0x1e, 0x8f, 0xf7, 0xec, 0x7f, 
+0x62, 0xff, 0x0b, 0x52, 0x91, 0x8a, 0xf5, 0xb5, 
+0x8b, 0xe7, 0x7a, 0xf8, 0xc2, 0xaf, 0xca, 0x9b, 
+0x76, 0x0f, 0xa0, 0xa7, 0x74, 0x10, 0xe0, 0x79, 
+0x1e, 0xc7, 0xde, 0x39, 0xce, 0xe4, 0xd8, 0x64, 
+0xf1, 0x7b, 0x0f, 0x8f, 0x5b, 0xd7, 0x6e, 0x93, 
+0x68, 0x4e, 0x70, 0xfe, 0xf3, 0x6f, 0x6a, 0xb6, 
+0x55, 0x7c, 0x47, 0x78, 0x41, 0x9b, 0x2a, 0x78, 
+0x85, 0xbf, 0xba, 0xef, 0xf9, 0x3e, 0x4a, 0x9b, 
+0x44, 0x49, 0x49, 0xe1, 0xfb, 0xfe, 0xed, 0x2b, 
+0x57, 0xae, 0x5c, 0x60, 0x29, 0x5f, 0x60, 0x11, 
+0xc9, 0x23, 0x86, 0x2e, 0x50, 0x9e, 0xeb, 0x53, 
+0x01, 0x7d, 0x60, 0x60, 0xa0, 0x5f, 0x51, 0x15, 
+0xcd, 0x9b, 0xf3, 0x70, 0x4d, 0xb7, 0xe6, 0x9e, 
+0x4e, 0x3c, 0x1d, 0x27, 0xd6, 0x14, 0xc3, 0x32, 
+0x2d, 0x7c, 0x7c, 0x46, 0x2f, 0x8c, 0x71, 0x7d, 
+0xf8, 0xfa, 0xb2, 0x77, 0xc6, 0x86, 0xc6, 0x30, 
+0xdf, 0xc9, 0x37, 0xa4, 0x7d, 0x00, 0x7c, 0xf0, 
+0x84, 0x87, 0x9a, 0x50, 0x11, 0x9a, 0xc0, 0x36, 
+0x6d, 0x1c, 0xcb, 0xa9, 0xfb, 0x9a, 0x3b, 0xe5, 
+0xa1, 0x76, 0x2a, 0xb4, 0xb7, 0xb7, 0xaf, 0x67, 
+0x69, 0x18, 0x2c, 0x4f, 0xc6, 0x56, 0x1c, 0x05, 
+0x8a, 0x6e, 0xd0, 0xdc, 0xdc, 0xdc, 0x26, 0xa5, 
+0xc4, 0x35, 0x3d, 0xbc, 0x3a, 0xfe, 0x9a, 0x6a, 
+0x4f, 0x62, 0x5a, 0x26, 0x9e, 0x08, 0xb4, 0x74, 
+0xf1, 0xec, 0xc5, 0xaa, 0xef, 0xdc, 0x1c, 0xbb, 
+0xb9, 0xa2, 0xe8, 0x6f, 0x5a, 0x79, 0x9a, 0xb3, 
+0x19, 0x1c, 0x0b, 0x50, 0x7d, 0x3c, 0xe9, 0xd6, 
+0x05, 0xc1, 0x33, 0x25, 0x52, 0x4a, 0x12, 0x89, 
+0x44, 0x86, 0x2a, 0xc2, 0x03, 0xa2, 0xd2, 0x28, 
+0x50, 0x4c, 0x7a, 0x36, 0x35, 0x35, 0x65, 0x85, 
+0x10, 0x78, 0x79, 0x0f, 0xb7, 0x5e, 0xc4, 0x56, 
+0x7c, 0xf2, 0xa6, 0x89, 0x87, 0xc7, 0xe2, 0xe2, 
+0x22, 0xb3, 0x33, 0xb3, 0xf5, 0x77, 0x01, 0x1b, 
+0x24, 0xd7, 0x71, 0x91, 0x31, 0x05, 0x55, 0x05, 
+0x5f, 0xf1, 0xf1, 0x14, 0x0d, 0x73, 0xda, 0xac, 
+0xf9, 0x8e, 0x63, 0x0a, 0x84, 0x10, 0xc4, 0xe3, 
+0xf1, 0x34, 0x4b, 0xc2, 0x97, 0xef, 0x4c, 0x11, 
+0x75, 0x81, 0xf0, 0x1a, 0x3e, 0xa4, 0xa4, 0x52, 
+0xa9, 0x8c, 0x94, 0x12, 0xcf, 0xf2, 0xaa, 0x2e, 
+0x7a, 0x42, 0xf2, 0x55, 0x30, 0xcd, 0x3c, 0x1e, 
+0x2e, 0x66, 0xce, 0xac, 0xfb, 0xfc, 0x4a, 0xc9, 
+0xc5, 0x45, 0x4f, 0x6a, 0xc5, 0x10, 0xed, 0xcf, 
+0xf9, 0xf8, 0x5e, 0xf5, 0xa0, 0xec, 0x98, 0x2e, 
+0x52, 0xca, 0x10, 0x80, 0x92, 0xe1, 0x2f, 0xfa, 
+0x9c, 0x4a, 0xa9, 0xf0, 0x25, 0x9c, 0x4a, 0xa5, 
+0x32, 0x42, 0x08, 0xec, 0xbc, 0x53, 0xd7, 0x02, 
+0x2c, 0xdb, 0x62, 0x31, 0x9f, 0xc7, 0xf1, 0x5d, 
+0x6c, 0xdb, 0xaa, 0x6f, 0x31, 0x2b, 0x24, 0xd3, 
+0x36, 0x49, 0xb4, 0x24, 0xf0, 0x95, 0xc0, 0x0a, 
+0xd0, 0xc0, 0xb5, 0xaa, 0xff, 0x86, 0x67, 0x7a, 
+0x08, 0x21, 0x30, 0x0c, 0x23, 0x49, 0xa9, 0xe6, 
+0x4b, 0xa8, 0xe6, 0xc6, 0x88, 0x10, 0x02, 0x29, 
+0x03, 0x5f, 0x12, 0xb2, 0xb6, 0x3d, 0x9b, 0x79, 
+0x13, 0xcd, 0xd0, 0xf0, 0x7d, 0x1f, 0x55, 0x53, 
+0x90, 0x8a, 0x64, 0x2d, 0x77, 0xb2, 0x2d, 0xd3, 
+0x22, 0x96, 0xd0, 0x91, 0x8a, 0x44, 0x2a, 0x02, 
+0x4d, 0x57, 0x71, 0x9d, 0xea, 0x00, 0x08, 0x19, 
+0xf4, 0xbd, 0x5e, 0x1f, 0x54, 0x6a, 0x6c, 0x4b, 
+0xe7, 0x72, 0xb9, 0x19, 0x21, 0x04, 0x5a, 0x52, 
+0x45, 0x2a, 0xb5, 0xa3, 0x96, 0x63, 0x3b, 0x38, 
+0x96, 0x4d, 0xb0, 0xc4, 0xf0, 0x31, 0x92, 0x06, 
+0xe6, 0x62, 0x6d, 0x3f, 0x5d, 0x09, 0xe9, 0x86, 
+0x46, 0x3c, 0x19, 0x47, 0x51, 0x2c, 0xa4, 0x22, 
+0x11, 0x8a, 0xac, 0xd9, 0x27, 0x35, 0xa1, 0x20, 
+0x84, 0xc0, 0x34, 0xcd, 0x05, 0xca, 0xf6, 0x10, 
+0x4b, 0x9e, 0x2b, 0x5c, 0xa3, 0x20, 0x84, 0x0f, 
+0xbb, 0x45, 0x00, 0xe2, 0x1a, 0x8a, 0x54, 0x6a, 
+0x76, 0xd0, 0xb5, 0x5d, 0x1c, 0xb3, 0x30, 0xcd, 
+0xf6, 0xc0, 0x30, 0x62, 0x85, 0xcf, 0x6b, 0x43, 
+0xa9, 0x74, 0x0a, 0x23, 0x6e, 0x20, 0xa5, 0x44, 
+0x51, 0x14, 0x70, 0xa9, 0xd9, 0x27, 0x2d, 0xa1, 
+0x87, 0x00, 0xcc, 0x12, 0x19, 0xf7, 0x29, 0x03, 
+0x21, 0xea, 0x02, 0xe1, 0x97, 0xc5, 0x5d, 0xda, 
+0xb9, 0xb9, 0xb9, 0xdb, 0x52, 0x4a, 0xb4, 0x64, 
+0x7d, 0x00, 0x70, 0x83, 0xc0, 0x23, 0x10, 0x08, 
+0x0f, 0x34, 0xad, 0x81, 0x77, 0x56, 0x40, 0x3d, 
+0x03, 0x3d, 0x18, 0xf1, 0x18, 0x52, 0x4a, 0xf0, 
+0xc0, 0x77, 0xfd, 0x9a, 0xed, 0xeb, 0x09, 0x0d, 
+0x29, 0x25, 0x96, 0x65, 0xcd, 0x52, 0xba, 0x89, 
+0x5a, 0x02, 0x44, 0x79, 0x0c, 0x28, 0xd9, 0xa5, 
+0x9d, 0x9e, 0x9e, 0xbe, 0x25, 0x84, 0x40, 0x4d, 
+0xa8, 0x01, 0xea, 0x75, 0xc8, 0xb1, 0x9d, 0xa0, 
+0xa4, 0xc5, 0x17, 0x28, 0xaa, 0x82, 0xa6, 0x69, 
+0x78, 0x5e, 0x63, 0xa3, 0x81, 0x1e, 0xd7, 0x69, 
+0x6e, 0xcb, 0x30, 0x31, 0x3a, 0xb9, 0xec, 0xbb, 
+0x4c, 0x5b, 0x86, 0xae, 0xf5, 0x9d, 0x58, 0xa6, 
+0x8d, 0x90, 0x92, 0x5b, 0xd7, 0x6e, 0xd5, 0xed, 
+0x8f, 0x96, 0xd4, 0x10, 0x42, 0x90, 0xcb, 0xe5, 
+0x66, 0x58, 0xca, 0x0c, 0x97, 0xa7, 0xc5, 0xfc, 
+0xd0, 0x89, 0xa2, 0xbe, 0x1f, 0xee, 0xd1, 0x5b, 
+0x97, 0x2f, 0x5f, 0x1e, 0xf1, 0x7d, 0xdf, 0xd6, 
+0xd3, 0x1a, 0x6a, 0x42, 0x2d, 0x06, 0xc4, 0x6a, 
+0x2c, 0x10, 0x38, 0x96, 0x53, 0x9c, 0xad, 0xe9, 
+0x86, 0x5e, 0xf7, 0x9d, 0x90, 0xd7, 0x6d, 0x5e, 
+0xc7, 0xbe, 0x43, 0xfb, 0x50, 0x14, 0xa5, 0xe4, 
+0x7e, 0x2c, 0x1e, 0xe3, 0xa1, 0x83, 0xbb, 0xd1, 
+0x0d, 0x9d, 0x98, 0xa1, 0x13, 0x33, 0x62, 0xdc, 
+0xba, 0x76, 0xbb, 0x6e, 0x7b, 0x46, 0x47, 0x60, 
+0x2d, 0x93, 0x93, 0x93, 0x57, 0x59, 0xbe, 0x9d, 
+0x5e, 0x04, 0x21, 0x1a, 0x45, 0xa2, 0xe6, 0x6f, 
+0x03, 0xd6, 0xfc, 0xfc, 0xfc, 0xec, 0xe4, 0xe4, 
+0xe4, 0x25, 0x21, 0x04, 0x89, 0xee, 0x38, 0x8a, 
+0xa2, 0x34, 0xc4, 0xf8, 0x14, 0x67, 0x6a, 0xaa, 
+0xaa, 0x36, 0xf4, 0xce, 0xc0, 0x8e, 0xf5, 0xf4, 
+0x6d, 0x59, 0xc7, 0x8e, 0x3d, 0xdb, 0x8b, 0xf7, 
+0xf4, 0x98, 0xce, 0xfe, 0xe7, 0x1f, 0xa7, 0xb5, 
+0xbb, 0x85, 0x58, 0x3c, 0x86, 0x6e, 0xc4, 0x58, 
+0x98, 0x59, 0x20, 0x3f, 0x9f, 0xaf, 0xd9, 0x96, 
+0x1a, 0x53, 0x31, 0xda, 0x62, 0x00, 0xde, 0x89, 
+0x13, 0x27, 0x4e, 0x11, 0x24, 0x48, 0xa3, 0x1b, 
+0xa7, 0xc5, 0x38, 0xa0, 0xfa, 0xbe, 0x1f, 0x96, 
+0x99, 0x84, 0x00, 0x84, 0x45, 0x0a, 0x79, 0x60, 
+0x71, 0x78, 0x78, 0xf8, 0xeb, 0xde, 0xde, 0xde, 
+0xad, 0xf1, 0x2e, 0x03, 0x6b, 0xcc, 0xae, 0x69, 
+0x76, 0xcb, 0xc8, 0x05, 0x29, 0x64, 0x43, 0x33, 
+0xc2, 0x81, 0x9d, 0x03, 0xc4, 0xe2, 0x31, 0xf6, 
+0x1d, 0xda, 0xcb, 0x95, 0xdf, 0x5d, 0x21, 0xd5, 
+0x9c, 0xe2, 0xf1, 0x1f, 0xed, 0x23, 0xd5, 0x9c, 
+0xc2, 0xca, 0x5b, 0x08, 0x04, 0xf9, 0x05, 0x93, 
+0x0b, 0xc7, 0x2f, 0xd4, 0x8d, 0x2d, 0xb1, 0xce, 
+0x60, 0xb8, 0x9c, 0x9a, 0x9a, 0x1a, 0x9d, 0x9a, 
+0x9a, 0x9a, 0xaa, 0x00, 0x40, 0x11, 0x84, 0xf2, 
+0x20, 0x18, 0x5a, 0x80, 0x55, 0x78, 0x29, 0x77, 
+0xf2, 0xe4, 0xc9, 0x2f, 0xf7, 0xee, 0xdd, 0xfb, 
+0x7c, 0xac, 0x4d, 0x97, 0xaa, 0xae, 0xe0, 0x3b, 
+0x6b, 0x5f, 0xb6, 0x97, 0x68, 0x4a, 0xd0, 0xbb, 
+0xa9, 0x07, 0x1f, 0xd0, 0x62, 0x2a, 0xcf, 0xfe, 
+0xcd, 0x33, 0xb4, 0xf6, 0xb4, 0xe0, 0x79, 0x3e, 
+0x76, 0x3e, 0x48, 0x9f, 0x7b, 0x8e, 0xcb, 0x99, 
+0xa3, 0x67, 0x70, 0x4c, 0x07, 0x45, 0xd6, 0x1e, 
+0x92, 0xe3, 0x5d, 0x31, 0x84, 0x10, 0x5c, 0xb9, 
+0x72, 0xe5, 0x6b, 0x82, 0xdd, 0xa1, 0xea, 0x16, 
+0x10, 0x79, 0x2f, 0x1a, 0x03, 0x6c, 0x82, 0xf4, 
+0x51, 0x6e, 0x62, 0x62, 0x62, 0xe2, 0xf6, 0xed, 
+0xdb, 0x57, 0xda, 0xdb, 0xdb, 0x37, 0x26, 0x37, 
+0x24, 0x58, 0x1c, 0xce, 0xaf, 0x99, 0xe0, 0x21, 
+0x0d, 0xec, 0x1a, 0x40, 0x8f, 0xeb, 0x00, 0xb8, 
+0x8e, 0xc7, 0xc0, 0xce, 0x0d, 0xd8, 0x56, 0x90, 
+0x37, 0xc4, 0xf7, 0xc9, 0x2f, 0xe4, 0x39, 0x71, 
+0xf8, 0x24, 0x73, 0xb7, 0xe6, 0xea, 0x06, 0x3f, 
+0x19, 0x97, 0xc4, 0xba, 0x62, 0x20, 0xf0, 0xbf, 
+0xfa, 0xea, 0xab, 0x13, 0x04, 0x85, 0x14, 0xcb, 
+0x96, 0xc1, 0x14, 0x52, 0xe3, 0xe5, 0x50, 0x46, 
+0x63, 0x40, 0x9e, 0x60, 0x0d, 0x3d, 0x77, 0xec, 
+0xd8, 0xb1, 0xdf, 0x08, 0x21, 0x88, 0x6f, 0x34, 
+0x50, 0x0c, 0x15, 0x29, 0x95, 0x35, 0xe5, 0x81, 
+0x9d, 0x03, 0x41, 0x90, 0x8b, 0xc7, 0xd0, 0xe3, 
+0x3a, 0x5a, 0x4c, 0x43, 0xd3, 0x35, 0x54, 0x5d, 
+0x65, 0x72, 0x64, 0x8a, 0x0f, 0xff, 0xf1, 0x23, 
+0x26, 0xae, 0x4e, 0x35, 0xd4, 0x56, 0x72, 0x4b, 
+0x02, 0xa9, 0x48, 0x46, 0x46, 0x46, 0xce, 0x0e, 
+0x0f, 0x0f, 0x5f, 0xa5, 0x34, 0x0f, 0x50, 0xd9, 
+0x02, 0xaa, 0xc4, 0x01, 0x93, 0xc0, 0x7c, 0x66, 
+0x3f, 0xfd, 0xf4, 0xd3, 0x53, 0x7b, 0xf6, 0xec, 
+0xb9, 0xd8, 0xd5, 0xd5, 0xb5, 0x39, 0xb9, 0x39, 
+0xce, 0xe2, 0x85, 0xb5, 0x9b, 0xe1, 0x01, 0x0c, 
+0xec, 0xdc, 0x80, 0xaa, 0xa9, 0x28, 0x9a, 0x82, 
+0xb4, 0x9c, 0x20, 0x07, 0xe0, 0xf9, 0x5c, 0xfc, 
+0xec, 0x1b, 0x7e, 0xfb, 0x2f, 0xff, 0x19, 0x24, 
+0x38, 0x1a, 0x18, 0x86, 0x95, 0xb4, 0x82, 0xd1, 
+0x13, 0xc3, 0xf3, 0x3c, 0xf7, 0xc3, 0x0f, 0x3f, 
+0x7c, 0x97, 0x60, 0x43, 0x64, 0x9e, 0x40, 0x99, 
+0xd1, 0x12, 0x9a, 0x22, 0x95, 0x5b, 0x40, 0x14, 
+0x00, 0x8b, 0x00, 0xb9, 0x79, 0xe0, 0xce, 0x91, 
+0x23, 0x47, 0x7e, 0x0d, 0xf8, 0x46, 0x5f, 0x0c, 
+0x2d, 0x15, 0x4c, 0x72, 0xd6, 0x82, 0x33, 0xad, 
+0x19, 0x9a, 0x3b, 0x33, 0xc5, 0x95, 0x5d, 0x30, 
+0x8c, 0x09, 0xa4, 0x14, 0x74, 0x6f, 0xea, 0x0e, 
+0x22, 0x7b, 0x83, 0x6d, 0x25, 0xb6, 0x18, 0x08, 
+0x21, 0x18, 0x1a, 0x1a, 0xfa, 0xe2, 0xf2, 0xe5, 
+0xcb, 0x97, 0x29, 0xdd, 0x26, 0x0f, 0x01, 0x28, 
+0x9a, 0x7f, 0x09, 0x00, 0x85, 0x1b, 0xe5, 0x81, 
+0xb0, 0x08, 0xc0, 0x99, 0x33, 0x67, 0xce, 0x8d, 
+0x8e, 0x8e, 0x9e, 0x95, 0x8a, 0x24, 0xb5, 0x2b, 
+0x8e, 0xaa, 0x4b, 0x14, 0x65, 0xf5, 0x8c, 0xef, 
+0xf3, 0xc5, 0xaf, 0x8f, 0x33, 0xf6, 0xed, 0x18, 
+0x66, 0xce, 0xc4, 0xb1, 0x9d, 0xe2, 0x02, 0x26, 
+0xdb, 0xd5, 0xcc, 0xbd, 0xfb, 0xb6, 0x37, 0xd4, 
+0x4e, 0x7c, 0x63, 0x0c, 0xbd, 0x55, 0xc3, 0x71, 
+0x9c, 0xfc, 0xbb, 0xef, 0xbe, 0xfb, 0x2e, 0x95, 
+0x8b, 0x25, 0x96, 0xad, 0x07, 0x2a, 0xed, 0x0d, 
+0x96, 0xd7, 0x05, 0xa4, 0x09, 0xaa, 0x41, 0xba, 
+0xda, 0xda, 0xda, 0x7e, 0xf0, 0xca, 0x2b, 0xaf, 
+0xfc, 0x7d, 0x2a, 0x95, 0x6a, 0x75, 0x26, 0x5c, 
+0xf2, 0xbf, 0x5f, 0x9b, 0x0d, 0xce, 0x90, 0x8c, 
+0x94, 0x41, 0xdf, 0xf6, 0x75, 0xf4, 0x6f, 0xeb, 
+0xa3, 0x67, 0x4b, 0x0f, 0xba, 0xa1, 0xb1, 0x30, 
+0xb3, 0xc0, 0x3b, 0x3f, 0xfb, 0x37, 0xac, 0xc5, 
+0xea, 0xbf, 0xa5, 0xb6, 0x2a, 0x18, 0x3b, 0x75, 
+0x7c, 0x7c, 0xff, 0xf0, 0xe1, 0xc3, 0xff, 0x7c, 
+0xe4, 0xc8, 0x91, 0x8f, 0x08, 0xb6, 0xc9, 0x27, 
+0x81, 0x3b, 0x2c, 0x81, 0xb0, 0x6c, 0x8b, 0xbc, 
+0x12, 0x00, 0x50, 0xba, 0x3d, 0x16, 0x6e, 0x8d, 
+0xb7, 0x01, 0xdd, 0xdb, 0xb7, 0x6f, 0xbf, 0xef, 
+0xa5, 0x97, 0x5e, 0xfa, 0x3b, 0x4d, 0xd3, 0x62, 
+0xd6, 0x65, 0x07, 0xfb, 0xea, 0xda, 0x2d, 0x78, 
+0xca, 0x29, 0xdb, 0x9d, 0xa5, 0x7b, 0x53, 0x27, 
+0x73, 0xb7, 0xe7, 0x19, 0x3d, 0x3f, 0x56, 0xf1, 
+0x19, 0x99, 0x10, 0x18, 0x0f, 0xe8, 0x08, 0x55, 
+0x70, 0xe2, 0xc4, 0x89, 0xdf, 0xbc, 0xf1, 0xc6, 
+0x1b, 0x6f, 0xb1, 0x54, 0x23, 0x10, 0x5a, 0x41, 
+0xe8, 0x02, 0xcb, 0x2a, 0x45, 0xbe, 0x57, 0x81, 
+0xc4, 0x53, 0x4f, 0x3d, 0x75, 0xe0, 0x99, 0x67, 
+0x9e, 0x79, 0x49, 0x08, 0x21, 0xec, 0x4b, 0x2e, 
+0xce, 0xd8, 0xdd, 0xc9, 0xef, 0xd7, 0x23, 0x99, 
+0x12, 0xe8, 0xf7, 0xaa, 0x88, 0x98, 0x60, 0x78, 
+0x78, 0xf8, 0xec, 0xab, 0xaf, 0xbe, 0xba, 0xe2, 
+0x02, 0x89, 0x65, 0x09, 0x91, 0xc8, 0x88, 0x10, 
+0x06, 0x43, 0x51, 0x68, 0x24, 0xcc, 0x16, 0x2b, 
+0x47, 0x8f, 0x1e, 0xfd, 0xa4, 0xbd, 0xbd, 0xbd, 
+0x6d, 0xef, 0xde, 0xbd, 0xcf, 0xea, 0x9b, 0x55, 
+0xa1, 0x34, 0x49, 0x9c, 0x21, 0xb7, 0x2c, 0xbe, 
+0xde, 0x5d, 0x92, 0x6d, 0x12, 0xf5, 0x1e, 0x89, 
+0x50, 0x04, 0x13, 0x13, 0x13, 0xc3, 0xaf, 0xbf, 
+0xfe, 0xfa, 0xcf, 0x59, 0x5e, 0x1e, 0x13, 0x2d, 
+0x94, 0x6a, 0xac, 0x44, 0x06, 0x1a, 0x2f, 0x92, 
+0x7a, 0xfa, 0xe9, 0xa7, 0x9f, 0x3c, 0x78, 0xf0, 
+0xe0, 0x8f, 0x35, 0x4d, 0xd3, 0xfd, 0x39, 0x1f, 
+0xe7, 0xbc, 0x8b, 0xbf, 0xb6, 0x61, 0xa1, 0x22, 
+0x29, 0xeb, 0x25, 0x4a, 0x7f, 0x10, 0xbf, 0x87, 
+0x86, 0x86, 0x4e, 0xbd, 0xf6, 0xda, 0x6b, 0xbf, 
+0x30, 0x4d, 0x73, 0xed, 0x8a, 0xa4, 0xa0, 0xf1, 
+0x32, 0xb9, 0xfb, 0xef, 0xbf, 0x7f, 0xd7, 0x8b, 
+0x2f, 0xbe, 0xf8, 0x57, 0xc9, 0x64, 0xb2, 0x19, 
+0x17, 0xbc, 0x31, 0x1f, 0x6f, 0xdc, 0xbf, 0x2b, 
+0xd6, 0x20, 0xb2, 0x02, 0xb9, 0x41, 0x20, 0x92, 
+0xe0, 0xfb, 0xbe, 0xf7, 0xd9, 0x67, 0x9f, 0x1d, 
+0x7e, 0xf3, 0xcd, 0x37, 0xd7, 0xbe, 0x4c, 0xae, 
+0xf8, 0x65, 0x83, 0x85, 0x92, 0x5d, 0x5d, 0x5d, 
+0xeb, 0x5f, 0x7e, 0xf9, 0xe5, 0xbf, 0x58, 0xb7, 
+0x6e, 0xdd, 0x56, 0x00, 0x2c, 0xf0, 0x46, 0x7c, 
+0xbc, 0x9b, 0x54, 0x48, 0x42, 0x7d, 0x0f, 0xc1, 
+0x53, 0x04, 0x82, 0x37, 0x07, 0x9f, 0x73, 0xb9, 
+0xdc, 0xcc, 0x07, 0x1f, 0x7c, 0xf0, 0xaf, 0x47, 
+0x8f, 0x1e, 0xfd, 0x9c, 0xa0, 0x48, 0xf2, 0x16, 
+0x41, 0xb4, 0x0f, 0xeb, 0x87, 0x57, 0x5f, 0x28, 
+0x59, 0x7c, 0xa0, 0x7a, 0xa9, 0x6c, 0x82, 0x60, 
+0x88, 0x2c, 0x96, 0xca, 0xee, 0xdf, 0xbf, 0xff, 
+0xc1, 0x83, 0x07, 0x0f, 0x3e, 0xdb, 0xda, 0xda, 
+0xda, 0x0b, 0x80, 0x0d, 0xfe, 0xed, 0xa0, 0x7b, 
+0xfe, 0x0c, 0x2b, 0x03, 0x23, 0x01, 0xa2, 0x25, 
+0x60, 0x52, 0xc1, 0x2d, 0xcb, 0xb2, 0xf2, 0xa7, 
+0x4e, 0x9d, 0xfa, 0xf7, 0xb7, 0xdf, 0x7e, 0xfb, 
+0xc3, 0x5c, 0x2e, 0x17, 0x96, 0xca, 0xde, 0xa1, 
+0x74, 0xc6, 0xb7, 0x76, 0xa5, 0xb2, 0x55, 0x40, 
+0xa8, 0x56, 0x2c, 0x9d, 0x21, 0x70, 0x8d, 0xec, 
+0xa1, 0x43, 0x87, 0xf6, 0xed, 0xdb, 0xb7, 0xef, 
+0xe9, 0x74, 0x3a, 0x5d, 0x2c, 0x96, 0xc6, 0x2d, 
+0x74, 0xd5, 0x04, 0xdf, 0x12, 0x4b, 0x27, 0x02, 
+0x3c, 0x8a, 0xa7, 0x08, 0x44, 0xcc, 0x0f, 0xfe, 
+0x4f, 0x13, 0x40, 0x5c, 0x20, 0xc7, 0x71, 0xac, 
+0xf3, 0xe7, 0xcf, 0x7f, 0xf1, 0xd6, 0x5b, 0x6f, 
+0xbd, 0x37, 0x31, 0x31, 0x71, 0xbd, 0xd0, 0xd2, 
+0x4c, 0x81, 0xa3, 0x5a, 0x5f, 0xfb, 0x62, 0xe9, 
+0x1a, 0x20, 0x44, 0x0f, 0x48, 0x84, 0x67, 0x04, 
+0x52, 0x85, 0xee, 0xa7, 0x81, 0xa6, 0x87, 0x1e, 
+0x7a, 0xe8, 0x9e, 0xdd, 0xbb, 0x77, 0x3f, 0xb8, 
+0x71, 0xe3, 0xc6, 0x1d, 0xd9, 0x6c, 0x76, 0x45, 
+0xe5, 0xf2, 0xa6, 0x69, 0xe6, 0xae, 0x5e, 0xbd, 
+0x7a, 0xe1, 0xdc, 0xb9, 0x73, 0xa7, 0x3f, 0xfe, 
+0xf8, 0xe3, 0xd3, 0xf3, 0xf3, 0xf3, 0x61, 0x70, 
+0x0b, 0xb5, 0xfd, 0x87, 0x2b, 0x97, 0x2f, 0x3e, 
+0x5c, 0xfb, 0xc0, 0x44, 0x68, 0x11, 0x15, 0x0f, 
+0x4c, 0x6c, 0xdd, 0xba, 0xb5, 0xf7, 0xfe, 0xfb, 
+0xef, 0xdf, 0x9a, 0x4e, 0xa7, 0xb3, 0x4d, 0x4d, 
+0x4d, 0x99, 0x44, 0x22, 0x91, 0x4e, 0x26, 0x93, 
+0x4d, 0xaa, 0xaa, 0xaa, 0xb9, 0x5c, 0x6e, 0x7e, 
+0x7e, 0x7e, 0x7e, 0x76, 0x61, 0x61, 0x61, 0x76, 
+0x6e, 0x6e, 0x6e, 0x7a, 0x6c, 0x6c, 0x6c, 0xfc, 
+0x93, 0x4f, 0x3e, 0xf9, 0xc6, 0xb6, 0xed, 0x5a, 
+0x07, 0x26, 0xa2, 0x82, 0x97, 0x9c, 0x1c, 0x69, 
+0x54, 0xf8, 0x15, 0x03, 0x10, 0x01, 0x01, 0xbe, 
+0xff, 0x91, 0x99, 0xe8, 0x46, 0x65, 0x34, 0x27, 
+0x19, 0x9e, 0x03, 0x8a, 0x1e, 0x99, 0xc9, 0x57, 
+0xe0, 0xaa, 0x47, 0x66, 0xa8, 0x11, 0xed, 0xab, 
+0xca, 0xf3, 0x3f, 0x74, 0x68, 0x2a, 0x7a, 0x72, 
+0x0c, 0x4a, 0x17, 0x61, 0x21, 0x08, 0x7f, 0x90, 
+0x43, 0x53, 0xab, 0x3a, 0x38, 0xb9, 0x8a, 0x63, 
+0x73, 0xe5, 0x7b, 0x75, 0xe5, 0x2b, 0xd1, 0x90, 
+0xeb, 0x1e, 0x9b, 0x63, 0x15, 0xc2, 0xc3, 0x2a, 
+0x01, 0x80, 0x12, 0x10, 0xa0, 0xd4, 0x22, 0xa2, 
+0x3b, 0xcd, 0x8d, 0x1c, 0x9c, 0x8c, 0x72, 0xdd, 
+0x83, 0x93, 0xac, 0x52, 0xf0, 0x62, 0x87, 0xff, 
+0xbf, 0x1f, 0x9d, 0x5d, 0x33, 0x00, 0x4a, 0x1a, 
+0x5d, 0xc3, 0xc3, 0xd3, 0x91, 0x6b, 0xf0, 0xe1, 
+0x7f, 0xeb, 0xe1, 0xe9, 0xff, 0xab, 0xf4, 0xdf, 
+0x70, 0x73, 0xd1, 0x2e, 0xae, 0x9d, 0x79, 0xe3, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity11.png b/source/bitmaps/misc/activity11.png
new file mode 100644 (file)
index 0000000..3d69b64
Binary files /dev/null and b/source/bitmaps/misc/activity11.png differ
diff --git a/source/bitmaps/misc/activity12.cpp b/source/bitmaps/misc/activity12.cpp
new file mode 100644 (file)
index 0000000..ea53764
--- /dev/null
@@ -0,0 +1,547 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY12_CPP
+#define MISC_ACTIVITY12_CPP
+
+static unsigned char misc_activity12_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x46, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0x59, 
+0x70, 0x5c, 0x65, 0x76, 0xc7, 0x7f, 0xdf, 0x77, 
+0x97, 0xde, 0xa4, 0x96, 0x5a, 0xd6, 0x2e, 0x4b, 
+0x5e, 0x64, 0x64, 0x39, 0x60, 0xcb, 0x06, 0xdb, 
+0x83, 0xd9, 0x6c, 0xca, 0x50, 0x18, 0x86, 0x0c, 
+0x1e, 0xd7, 0x24, 0x29, 0x28, 0xe0, 0x21, 0xa1, 
+0x20, 0x2f, 0x79, 0xcb, 0x73, 0x5e, 0x53, 0x15, 
+0x8a, 0xca, 0xc3, 0x0c, 0x95, 0x3c, 0x4c, 0xe6, 
+0x61, 0xca, 0x04, 0x92, 0xaa, 0xa9, 0x71, 0x05, 
+0x18, 0x98, 0x88, 0x19, 0x13, 0x06, 0x62, 0x82, 
+0x11, 0xd8, 0x1e, 0x63, 0x63, 0xcb, 0xab, 0x64, 
+0xc9, 0x56, 0x4b, 0xb2, 0x6c, 0x2d, 0xad, 0xbe, 
+0x7b, 0x1e, 0x6e, 0xdf, 0xd6, 0xed, 0x56, 0xab, 
+0xbb, 0xb5, 0x30, 0x49, 0x2a, 0xa7, 0xea, 0xd4, 
+0x55, 0x77, 0xdf, 0xfb, 0xe9, 0x9e, 0xff, 0xf9, 
+0x9f, 0xf3, 0x6d, 0xe7, 0x13, 0x9e, 0xe7, 0xf1, 
+0x5d, 0x8a, 0x10, 0x42, 0x2c, 0xf5, 0x53, 0x89, 
+0xef, 0x16, 0xbd, 0x8c, 0xf7, 0x1d, 0xbf, 0xa0, 
+0xfa, 0x5d, 0x34, 0x5a, 0x64, 0xb4, 0x58, 0xe2, 
+0xba, 0x94, 0x78, 0xe1, 0x6b, 0x31, 0x7e, 0x6b, 
+0x0d, 0x88, 0x58, 0xab, 0xf6, 0x4a, 0x18, 0x2d, 
+0x8a, 0xfe, 0x96, 0x25, 0xbe, 0x0b, 0x4b, 0xd8, 
+0xf0, 0x72, 0xea, 0xdf, 0xb4, 0x46, 0x2f, 0xbe, 
+0x6a, 0x06, 0x2c, 0x61, 0xb8, 0x0c, 0x5d, 0x4b, 
+0xa9, 0xa0, 0x10, 0x84, 0xc0, 0x18, 0x37, 0xf7, 
+0xb7, 0xbb, 0x84, 0xe6, 0x81, 0x08, 0xfe, 0xed, 
+0x6a, 0x81, 0x58, 0x15, 0x00, 0x21, 0xe3, 0x8b, 
+0x8d, 0x56, 0x42, 0xaa, 0xe6, 0x54, 0x29, 0xd2, 
+0x62, 0x16, 0x84, 0x0d, 0xb5, 0x01, 0xa7, 0xc4, 
+0xd5, 0xa1, 0x08, 0x8c, 0xd5, 0x02, 0xb1, 0xa2, 
+0x10, 0x28, 0x32, 0xbc, 0xd8, 0x68, 0x15, 0xd0, 
+0x42, 0xaa, 0xe7, 0x34, 0xf8, 0x1c, 0x00, 0x12, 
+0x66, 0x42, 0xe0, 0xf5, 0xc0, 0x58, 0x2b, 0xa7, 
+0x66, 0xd1, 0x35, 0xd0, 0x52, 0x60, 0xac, 0x08, 
+0x84, 0x65, 0x33, 0x20, 0x64, 0x7c, 0x60, 0x40, 
+0xd8, 0xcb, 0x3a, 0x10, 0xc9, 0x69, 0x34, 0xa7, 
+0xb1, 0xd0, 0xe7, 0x00, 0x8c, 0x80, 0x11, 0x01, 
+0x00, 0x61, 0xcf, 0x07, 0x06, 0x1b, 0x39, 0xcd, 
+0x02, 0xf3, 0xb9, 0x6b, 0x36, 0xf7, 0x5d, 0x00, 
+0x48, 0xc0, 0x0c, 0x97, 0x1c, 0x1b, 0x96, 0x0b, 
+0xc2, 0xb2, 0x00, 0xc8, 0x19, 0x1f, 0x68, 0xe0, 
+0xf1, 0xc0, 0xcb, 0x81, 0xc1, 0x71, 0x20, 0x11, 
+0xd2, 0x38, 0x10, 0x6f, 0x6e, 0x6e, 0xee, 0xe8, 
+0xe8, 0xe8, 0xe8, 0x8d, 0x46, 0xa3, 0x0d, 0xd1, 
+0x68, 0xb4, 0x5e, 0xd7, 0xf5, 0xa4, 0xae, 0xeb, 
+0x49, 0x29, 0xa5, 0x66, 0x9a, 0xe6, 0x8c, 0x69, 
+0x9a, 0xd3, 0x86, 0x61, 0xdc, 0x31, 0x0c, 0x63, 
+0xea, 0xce, 0x9d, 0x3b, 0x37, 0x2e, 0x5f, 0xbe, 
+0x7c, 0xde, 0x75, 0xdd, 0x39, 0x20, 0x03, 0xcc, 
+0x85, 0x34, 0x13, 0x02, 0xc4, 0x28, 0x06, 0x62, 
+0xb9, 0x21, 0x51, 0x75, 0x08, 0x84, 0x8c, 0x0f, 
+0xe8, 0x1e, 0x78, 0x3c, 0xf0, 0x72, 0x02, 0xa8, 
+0xcd, 0x69, 0x12, 0xa8, 0xed, 0xea, 0xea, 0xda, 
+0xda, 0xd9, 0xd9, 0xb9, 0xbb, 0xb1, 0xb1, 0xf1, 
+0xde, 0x78, 0x3c, 0xde, 0x52, 0xd5, 0x3f, 0xca, 
+0x89, 0x6d, 0xdb, 0x99, 0xa9, 0xa9, 0xa9, 0x0b, 
+0xb7, 0x6e, 0xdd, 0xfa, 0x7a, 0x70, 0x70, 0xf0, 
+0x94, 0x61, 0x18, 0x93, 0xc0, 0x34, 0x30, 0x93, 
+0xd3, 0x59, 0x16, 0xc0, 0x08, 0x18, 0x11, 0x0e, 
+0x8b, 0xaa, 0x40, 0xa8, 0x0a, 0x80, 0x12, 0xc6, 
+0x6b, 0xf8, 0xb4, 0x8e, 0x01, 0x35, 0x39, 0xa3, 
+0xeb, 0x81, 0x3a, 0xa0, 0x61, 0xe7, 0xce, 0x9d, 
+0x8f, 0x75, 0x77, 0x77, 0x1f, 0x8a, 0x46, 0xa3, 
+0xeb, 0x82, 0x36, 0x14, 0x4b, 0x25, 0x95, 0x6e, 
+0x20, 0x3a, 0x1b, 0x43, 0xcf, 0xea, 0x68, 0x86, 
+0x8e, 0x9e, 0x8d, 0x20, 0x1d, 0x89, 0x15, 0x35, 
+0x31, 0x23, 0x26, 0x66, 0xd4, 0xc0, 0x8c, 0x19, 
+0xdc, 0x69, 0x9e, 0x22, 0x9b, 0x98, 0xcf, 0xff, 
+0x7f, 0xd7, 0x75, 0xad, 0x9b, 0x37, 0x6f, 0x7e, 
+0x3e, 0x30, 0x30, 0xf0, 0xee, 0xcc, 0xcc, 0xcc, 
+0x28, 0x30, 0x05, 0xdc, 0x0d, 0x01, 0x92, 0x61, 
+0x21, 0x34, 0xec, 0xe5, 0x80, 0x50, 0x11, 0x80, 
+0x22, 0xe3, 0x83, 0x04, 0x17, 0x65, 0xc1, 0xe3, 
+0x75, 0x40, 0x03, 0xd0, 0xd0, 0xdb, 0xdb, 0xfb, 
+0xe0, 0xb6, 0x6d, 0xdb, 0x7e, 0x90, 0x48, 0x24, 
+0xda, 0x00, 0xb4, 0xac, 0x4e, 0xea, 0x56, 0x03, 
+0xa9, 0xd1, 0x46, 0x92, 0x13, 0x75, 0x08, 0xb7, 
+0xd2, 0x18, 0x68, 0x41, 0xe6, 0x6b, 0x33, 0x4c, 
+0xb5, 0x4f, 0x32, 0xd5, 0x36, 0xc9, 0x5c, 0xfd, 
+0x2c, 0x00, 0x8e, 0xe3, 0x18, 0xc3, 0xc3, 0xc3, 
+0xc7, 0x4f, 0x9e, 0x3c, 0xf9, 0xbe, 0x61, 0x18, 
+0x63, 0xc0, 0xed, 0x1c, 0x18, 0xd3, 0xf8, 0xe1, 
+0x31, 0x9f, 0x03, 0xa2, 0x6a, 0x10, 0xca, 0x02, 
+0xb0, 0x84, 0xf1, 0x01, 0xdd, 0xeb, 0x80, 0x14, 
+0xd0, 0x58, 0x57, 0x57, 0xb7, 0x71, 0xff, 0xfe, 
+0xfd, 0xaf, 0xd4, 0xd7, 0xd7, 0xf7, 0xf8, 0x86, 
+0x6b, 0xb4, 0x9d, 0x5f, 0xcf, 0xba, 0xa1, 0x26, 
+0x84, 0x57, 0xbd, 0xd1, 0x4b, 0x49, 0xa6, 0x6e, 
+0x8e, 0x91, 0xfb, 0x86, 0x98, 0x69, 0x9a, 0x06, 
+0xc0, 0xb2, 0xac, 0x99, 0xd3, 0xa7, 0x4f, 0x1f, 
+0x3d, 0x77, 0xee, 0xdc, 0x09, 0x60, 0x02, 0x98, 
+0xc4, 0x67, 0x44, 0x98, 0x0d, 0x55, 0x81, 0xb0, 
+0x24, 0x00, 0x25, 0x68, 0xaf, 0xb3, 0x40, 0xf9, 
+0x7a, 0x60, 0x1d, 0xd0, 0xd4, 0xd5, 0xd5, 0xd5, 
+0xb7, 0x6f, 0xdf, 0xbe, 0x57, 0xa3, 0xd1, 0x68, 
+0xbd, 0xb4, 0x25, 0x4d, 0x83, 0x6d, 0x34, 0x5d, 
+0x6a, 0x41, 0x3a, 0x72, 0xd5, 0x86, 0x17, 0xcb, 
+0x4c, 0xcb, 0x5d, 0x6e, 0xde, 0x7b, 0x83, 0x6c, 
+0x72, 0x1e, 0xc0, 0xbd, 0x78, 0xf1, 0xe2, 0xfb, 
+0x27, 0x4e, 0x9c, 0x38, 0x06, 0xa4, 0xf1, 0x81, 
+0x98, 0x62, 0x31, 0x08, 0x0e, 0xbe, 0xfd, 0xd5, 
+0x03, 0x50, 0xd4, 0xd5, 0x95, 0x32, 0xbe, 0x09, 
+0x68, 0xee, 0xeb, 0xeb, 0x3b, 0xd8, 0xd7, 0xd7, 
+0xf7, 0x82, 0xa2, 0x28, 0x7a, 0x6c, 0x2a, 0x4e, 
+0xe7, 0x7f, 0x6d, 0x44, 0xcd, 0x6a, 0x6b, 0x67, 
+0x71, 0xc9, 0x37, 0x86, 0xf1, 0xde, 0x5b, 0x8c, 
+0x6f, 0x1d, 0x03, 0x60, 0x6c, 0x6c, 0x6c, 0xa0, 
+0xbf, 0xbf, 0xff, 0xa7, 0x96, 0x65, 0x8d, 0x02, 
+0xe3, 0xf8, 0x61, 0x31, 0xcd, 0x62, 0x26, 0x94, 
+0x04, 0xa1, 0x1c, 0x00, 0x41, 0x57, 0x17, 0xd0, 
+0xbe, 0x86, 0x1c, 0xe5, 0x81, 0xd6, 0x87, 0x1f, 
+0x7e, 0xf8, 0x48, 0x4f, 0x4f, 0xcf, 0x61, 0x21, 
+0x84, 0x48, 0x0e, 0xd7, 0xd3, 0xf2, 0x75, 0x7b, 
+0xc5, 0x18, 0xef, 0x7e, 0x72, 0x13, 0xa3, 0x03, 
+0x37, 0x99, 0xbf, 0x9d, 0x5d, 0xa1, 0xf5, 0x0b, 
+0x32, 0xd3, 0x3e, 0xcd, 0xad, 0x07, 0x46, 0xf0, 
+0x14, 0x97, 0xe9, 0xe9, 0xe9, 0xab, 0xef, 0xbe, 
+0xfb, 0xee, 0xeb, 0x86, 0x61, 0xdc, 0xc0, 0x67, 
+0x43, 0x18, 0x84, 0x7c, 0x62, 0x2c, 0x05, 0xc0, 
+0x22, 0x9e, 0x96, 0x88, 0xfb, 0xc0, 0xfb, 0xb5, 
+0xf8, 0x00, 0x34, 0x6d, 0xdf, 0xbe, 0xfd, 0xb1, 
+0x6d, 0xdb, 0xb6, 0x1d, 0x56, 0x14, 0x45, 0x34, 
+0x9d, 0x6b, 0xa1, 0xf9, 0xeb, 0x36, 0x3c, 0x3c, 
+0x5c, 0xe9, 0x96, 0xd5, 0x48, 0x43, 0x84, 0xe7, 
+0x7e, 0xf6, 0x2c, 0xf7, 0xbe, 0xb0, 0x0d, 0x74, 
+0x2a, 0xde, 0x5f, 0x4e, 0x13, 0xb7, 0x6a, 0xe8, 
+0xfc, 0x74, 0x23, 0xba, 0xa1, 0x53, 0x5f, 0x5f, 
+0xbf, 0xe9, 0xa9, 0xa7, 0x9e, 0x7a, 0x0d, 0x68, 
+0xc6, 0x4f, 0xc8, 0x49, 0xfc, 0xf1, 0x47, 0x84, 
+0x85, 0x41, 0x97, 0x2c, 0x35, 0x35, 0x2f, 0x00, 
+0xa0, 0x68, 0x88, 0x1b, 0xf4, 0xf5, 0x41, 0xc6, 
+0xaf, 0x03, 0xd6, 0x75, 0x76, 0x76, 0xde, 0xbb, 
+0x67, 0xcf, 0x9e, 0x97, 0x85, 0x10, 0x22, 0xf5, 
+0xed, 0x3a, 0x6a, 0x2e, 0xd7, 0xe1, 0x08, 0xa7, 
+0x2a, 0x1d, 0x39, 0x33, 0x4a, 0xa4, 0x2e, 0xc2, 
+0x83, 0x7f, 0xb5, 0x97, 0x3f, 0x79, 0xe7, 0x08, 
+0x1d, 0x0f, 0xb5, 0x57, 0xfd, 0x6c, 0x29, 0x55, 
+0xa6, 0x55, 0x9a, 0x4f, 0xb4, 0x23, 0x1d, 0x85, 
+0x96, 0x96, 0x96, 0xbe, 0x03, 0x07, 0x0e, 0xfc, 
+0x08, 0x3f, 0x3c, 0x53, 0x39, 0x87, 0xc5, 0x72, 
+0x0e, 0xcc, 0x8f, 0x3a, 0x8b, 0x41, 0x28, 0x95, 
+0xa9, 0x4a, 0x25, 0xbe, 0x5a, 0x20, 0x95, 0x4c, 
+0x26, 0x3b, 0x1f, 0x7f, 0xfc, 0xf1, 0xbf, 0xd4, 
+0x34, 0x2d, 0x92, 0xb8, 0x59, 0x43, 0xcd, 0x60, 
+0xdd, 0xb2, 0xbc, 0x36, 0x7e, 0x65, 0x02, 0x2b, 
+0x6b, 0xa1, 0xe8, 0x92, 0xa6, 0xad, 0x8d, 0xfc, 
+0xe8, 0x67, 0x87, 0xf9, 0xe3, 0x1f, 0x3f, 0x4d, 
+0xcd, 0xfa, 0x9a, 0x15, 0x33, 0x41, 0x99, 0x53, 
+0x59, 0xf7, 0x55, 0x33, 0x52, 0x48, 0x7a, 0x7a, 
+0x7a, 0x9e, 0xda, 0xb5, 0x6b, 0xd7, 0x63, 0x4b, 
+0xb0, 0x20, 0x3c, 0x1d, 0xaf, 0x0a, 0x00, 0x35, 
+0xf7, 0x70, 0x22, 0xd7, 0x58, 0xc3, 0xc1, 0x83, 
+0x07, 0x5f, 0x8e, 0xc7, 0xe3, 0xeb, 0xb4, 0x69, 
+0x9d, 0xda, 0x53, 0x29, 0x1c, 0xe9, 0x2c, 0x4b, 
+0x6d, 0x6c, 0xc6, 0x2e, 0xa4, 0x41, 0x0a, 0xa4, 
+0x26, 0x51, 0xa3, 0x2a, 0xdb, 0x9e, 0xed, 0xe5, 
+0xcf, 0xdf, 0x7f, 0x89, 0xbd, 0xaf, 0x3d, 0x80, 
+0x88, 0xb2, 0xec, 0x36, 0x1d, 0xe9, 0xa0, 0xa5, 
+0x75, 0x6a, 0xbf, 0xad, 0x43, 0x4a, 0x29, 0x76, 
+0x3f, 0xb0, 0xfb, 0xc5, 0xba, 0xba, 0xba, 0x2e, 
+0xfc, 0x64, 0x5d, 0x9b, 0x63, 0xb0, 0xb6, 0x14, 
+0x0b, 0xf2, 0x00, 0x54, 0xea, 0xf6, 0xba, 0xbb, 
+0xbb, 0xef, 0x6b, 0x69, 0x69, 0xe9, 0x13, 0x9e, 
+0xa0, 0xf6, 0xcb, 0x7a, 0x3c, 0xd7, 0xc5, 0x15, 
+0x4e, 0x55, 0xaa, 0x25, 0x55, 0x7a, 0xbf, 0xdf, 
+0xc3, 0x91, 0x9f, 0x3c, 0xc7, 0xfa, 0xdd, 0x1d, 
+0x90, 0xcb, 0x45, 0x42, 0x91, 0xa8, 0x11, 0x15, 
+0x3d, 0xa1, 0xb3, 0xfd, 0x87, 0xf7, 0xf9, 0x5e, 
+0xad, 0xb2, 0xcd, 0x62, 0x8d, 0x5e, 0x8a, 0xa3, 
+0x4f, 0x46, 0x50, 0x35, 0x35, 0xf2, 0xc8, 0x23, 
+0x8f, 0x1c, 0x0e, 0x85, 0x41, 0x59, 0x16, 0x14, 
+0x4f, 0x86, 0x4a, 0x25, 0xbf, 0x1a, 0xa0, 0x7e, 
+0xcf, 0x9e, 0x3d, 0x3f, 0x54, 0x14, 0x45, 0xe8, 
+0x57, 0xa2, 0x30, 0x2f, 0x70, 0xa4, 0x5b, 0x82, 
+0x3c, 0x85, 0xa2, 0x68, 0x0a, 0x3b, 0x9e, 0xdb, 
+0xce, 0x3d, 0x8f, 0x75, 0x13, 0x4b, 0x46, 0xd1, 
+0x6b, 0x22, 0xb8, 0xb6, 0x8b, 0xe3, 0xb8, 0x38, 
+0xb6, 0x83, 0x63, 0xda, 0x78, 0x8e, 0xc4, 0x73, 
+0x3d, 0xfe, 0xe3, 0x1f, 0x7e, 0x87, 0x61, 0x99, 
+0xa5, 0x39, 0x59, 0xa5, 0x44, 0xcf, 0x27, 0x70, 
+0xf6, 0xdb, 0x74, 0x75, 0x75, 0x3d, 0xd8, 0xde, 
+0xde, 0xde, 0x3f, 0x3a, 0x3a, 0x3a, 0xcd, 0xc2, 
+0x9c, 0x21, 0xdc, 0x25, 0x8a, 0x60, 0xe6, 0x28, 
+0x81, 0xe2, 0x59, 0x5e, 0x98, 0xfe, 0x71, 0x20, 
+0xb9, 0x63, 0xc7, 0x8e, 0x07, 0x1a, 0x1b, 0x1b, 
+0xb7, 0x48, 0x5b, 0xa2, 0x5d, 0x8c, 0x54, 0xe5, 
+0x91, 0x78, 0x53, 0x8c, 0x7d, 0xaf, 0x7c, 0x8f, 
+0xae, 0x07, 0x3a, 0xf0, 0xf0, 0xb0, 0x6d, 0x07, 
+0xc7, 0xb2, 0xb1, 0x2d, 0x1b, 0xdb, 0xb4, 0xb1, 
+0xb2, 0x16, 0x66, 0xc6, 0xc4, 0x9c, 0x37, 0x19, 
+0x3e, 0x75, 0x83, 0xdf, 0x7f, 0x78, 0x76, 0xc5, 
+0xde, 0x0f, 0x54, 0xdc, 0x15, 0x68, 0x23, 0x3a, 
+0x8a, 0xa2, 0x28, 0x0f, 0x3d, 0xf4, 0xd0, 0x61, 
+0xfc, 0xd0, 0x4d, 0xe4, 0x1c, 0x19, 0x84, 0x41, 
+0x01, 0xc4, 0xc5, 0x0c, 0x08, 0x4f, 0x76, 0xf2, 
+0xe3, 0xfd, 0xbe, 0xbe, 0xbe, 0xa7, 0xa5, 0x94, 
+0x28, 0x97, 0x75, 0x5c, 0xdb, 0x03, 0x59, 0x7e, 
+0xfe, 0x50, 0xdf, 0x5e, 0xcf, 0xce, 0x1f, 0xec, 
+0x20, 0x9a, 0x8c, 0x60, 0xdb, 0x0e, 0xd2, 0xb6, 
+0x91, 0x96, 0xc4, 0x9c, 0x34, 0xb9, 0xde, 0x3f, 
+0x44, 0xaa, 0xa3, 0x9e, 0x9e, 0xc7, 0xee, 0xc1, 
+0x75, 0x5d, 0xa4, 0x22, 0xf9, 0xf0, 0xef, 0xfb, 
+0xb1, 0x85, 0x53, 0x79, 0xb9, 0xb4, 0x0a, 0x51, 
+0xbe, 0x8d, 0xe0, 0x76, 0x38, 0xb4, 0xb5, 0xb5, 
+0xf5, 0x75, 0x74, 0x74, 0x6c, 0x1c, 0x19, 0x19, 
+0x09, 0x26, 0x4e, 0x3a, 0x0b, 0x2c, 0x08, 0x16, 
+0x61, 0x0a, 0x00, 0x08, 0x0f, 0x7e, 0x82, 0x85, 
+0x8d, 0x78, 0x2a, 0x95, 0x6a, 0x69, 0x68, 0x68, 
+0xd8, 0x88, 0x0b, 0xe2, 0xba, 0xc4, 0x15, 0x4e, 
+0xd9, 0x17, 0x88, 0xc4, 0x75, 0xb6, 0x3c, 0xb2, 
+0x09, 0xd7, 0x75, 0xb0, 0xad, 0x9c, 0xe1, 0x53, 
+0x26, 0x67, 0xdf, 0xf9, 0x86, 0xa1, 0xd3, 0xc3, 
+0xb8, 0x8e, 0xcb, 0xe6, 0xbd, 0x9b, 0xd8, 0xb4, 
+0x77, 0x03, 0xae, 0xe3, 0x72, 0xf9, 0xf3, 0xcb, 
+0x5c, 0x3f, 0x73, 0x7d, 0x4d, 0x8c, 0x07, 0x20, 
+0x0b, 0x32, 0xad, 0xe0, 0xb5, 0xbb, 0x62, 0xdb, 
+0xb6, 0x6d, 0x7b, 0x47, 0x46, 0x46, 0x2e, 0x52, 
+0xd8, 0x1d, 0xe6, 0x57, 0xa2, 0x84, 0x10, 0x8b, 
+0x00, 0x28, 0x66, 0x40, 0x7c, 0xc7, 0x8e, 0x1d, 
+0xbb, 0xa5, 0x94, 0xc2, 0x9b, 0x10, 0x38, 0x8e, 
+0x53, 0x36, 0x46, 0x85, 0x10, 0x74, 0xee, 0xee, 
+0xc4, 0x95, 0x1e, 0x96, 0x6d, 0x21, 0x2c, 0xc1, 
+0xf8, 0x85, 0x71, 0xce, 0xfc, 0xfa, 0x2c, 0x46, 
+0xc6, 0xf0, 0x6f, 0x92, 0x30, 0x74, 0x7e, 0x98, 
+0x6c, 0xc6, 0x40, 0x48, 0x93, 0xdf, 0xfc, 0xd3, 
+0x71, 0x1c, 0x59, 0x1e, 0xd4, 0xe5, 0x8a, 0x18, 
+0x13, 0xc8, 0xf5, 0x92, 0xce, 0xce, 0xce, 0xed, 
+0x2c, 0x84, 0x40, 0xb0, 0x12, 0x55, 0x90, 0x08, 
+0xd5, 0x25, 0xe2, 0x3f, 0x00, 0x20, 0xd6, 0xd9, 
+0xd9, 0xb9, 0x5d, 0x08, 0x81, 0x7b, 0xcb, 0xc3, 
+0x15, 0xe5, 0xa9, 0x5f, 0xdb, 0x58, 0x8b, 0x16, 
+0xd7, 0xb0, 0x2d, 0x0b, 0x69, 0x09, 0x66, 0x46, 
+0x66, 0xf9, 0xfa, 0x57, 0xa7, 0x70, 0x1d, 0xb7, 
+0xc0, 0xc3, 0xf3, 0x99, 0x79, 0x46, 0x2f, 0xde, 
+0xe4, 0xe6, 0xc5, 0x5b, 0x4c, 0xa5, 0xef, 0xac, 
+0x9d, 0xf7, 0x03, 0x19, 0x03, 0xcd, 0x13, 0xa4, 
+0x52, 0xa9, 0xae, 0x54, 0x2a, 0xd5, 0x38, 0x35, 
+0x35, 0x35, 0x46, 0x21, 0x00, 0x92, 0xdc, 0xfc, 
+0xa0, 0x1c, 0x03, 0xf4, 0x58, 0x2c, 0x96, 0x6c, 
+0x6e, 0x6a, 0xee, 0x96, 0x52, 0x62, 0xa4, 0x2d, 
+0xbc, 0x0a, 0xb1, 0x1f, 0x6f, 0x8c, 0x63, 0x5a, 
+0x26, 0xc2, 0x06, 0x37, 0xeb, 0x72, 0xea, 0xb7, 
+0x67, 0xb0, 0x3c, 0xab, 0x24, 0x6b, 0xbe, 0xfd, 
+0xfc, 0x02, 0x17, 0x4e, 0x5c, 0x5c, 0x73, 0xef, 
+0x03, 0xe0, 0x82, 0x7a, 0x5b, 0x45, 0x69, 0x96, 
+0x62, 0xe7, 0xce, 0x9d, 0xf7, 0x1f, 0x3f, 0x7e, 
+0xfc, 0x12, 0x4b, 0x31, 0x20, 0x77, 0x2d, 0x5e, 
+0xeb, 0x53, 0x01, 0x7d, 0xd3, 0xa6, 0x4d, 0x5d, 
+0x8a, 0xaa, 0x68, 0xee, 0x8c, 0x8b, 0x63, 0x94, 
+0x4f, 0x52, 0x52, 0x91, 0x68, 0x71, 0xd5, 0x07, 
+0xc0, 0x84, 0xc9, 0x9b, 0xb7, 0xc9, 0x66, 0xb3, 
+0x4b, 0x3e, 0x73, 0xe6, 0xe3, 0xdf, 0xe3, 0x79, 
+0x5e, 0x55, 0xde, 0x17, 0x52, 0x80, 0x07, 0xcb, 
+0x59, 0xef, 0x74, 0x26, 0x5c, 0xd4, 0x16, 0x85, 
+0xa6, 0xa6, 0xa6, 0x0d, 0xf8, 0xf9, 0x2c, 0x58, 
+0x91, 0x2e, 0x58, 0x92, 0x2f, 0xd5, 0x0b, 0xe4, 
+0xc3, 0xa0, 0xbe, 0xbe, 0xbe, 0x51, 0x4a, 0x89, 
+0x63, 0xb8, 0xb8, 0x15, 0x3c, 0xa5, 0x45, 0x15, 
+0x0c, 0xcb, 0x00, 0xd5, 0x03, 0x13, 0xd2, 0xa3, 
+0xe9, 0x8a, 0xcf, 0x54, 0x4b, 0x7d, 0x21, 0x04, 
+0x7a, 0x4c, 0xc3, 0x34, 0x2c, 0x3c, 0xb7, 0x3a, 
+0x10, 0x5c, 0x43, 0x22, 0xa5, 0x24, 0x1e, 0x8f, 
+0xd7, 0xb1, 0x84, 0xf1, 0x80, 0x28, 0xd5, 0x0b, 
+0xe4, 0x17, 0x3d, 0x6b, 0x6b, 0x6b, 0x53, 0x42, 
+0x08, 0xdc, 0xac, 0x8b, 0x53, 0x21, 0xfb, 0x7b, 
+0xaa, 0xe7, 0x03, 0xa0, 0x78, 0x78, 0x0a, 0x18, 
+0x66, 0xb6, 0xe2, 0x33, 0xcb, 0x11, 0x5d, 0xd7, 
+0x51, 0xa4, 0x82, 0x65, 0x58, 0x7e, 0x4e, 0xa9, 
+0x20, 0xb6, 0x21, 0x10, 0x42, 0x10, 0x8b, 0xc5, 
+0x92, 0x84, 0x66, 0x84, 0x14, 0xee, 0x47, 0x14, 
+0x84, 0x40, 0x70, 0x0d, 0x6e, 0x52, 0x6a, 0x6a, 
+0x6a, 0xea, 0xa4, 0x94, 0xb8, 0xa6, 0x3f, 0xf1, 
+0x28, 0x27, 0x8e, 0x70, 0x31, 0x2d, 0x03, 0x14, 
+0xf0, 0x14, 0xb0, 0x1c, 0xab, 0xe2, 0x33, 0xcb, 
+0x12, 0x15, 0x54, 0x4d, 0xc5, 0x95, 0x2e, 0x4e, 
+0xd6, 0xa9, 0xc8, 0x04, 0xdb, 0x70, 0x90, 0x52, 
+0x06, 0x00, 0x14, 0x74, 0x7f, 0x45, 0xcd, 0x2e, 
+0xda, 0xb0, 0xcc, 0x6b, 0x4d, 0x4d, 0x4d, 0x9d, 
+0x10, 0x02, 0x2b, 0x6b, 0x57, 0xf4, 0xa6, 0xe9, 
+0x98, 0x64, 0x0d, 0x05, 0x57, 0xf8, 0x60, 0x59, 
+0x5e, 0xe5, 0x67, 0x96, 0x25, 0x9a, 0x3f, 0xb4, 
+0x56, 0x84, 0x82, 0x82, 0x82, 0x31, 0x6f, 0x94, 
+0xbd, 0xdd, 0x35, 0x5c, 0x84, 0x10, 0x44, 0xa3, 
+0xd1, 0x04, 0x85, 0x9e, 0x2f, 0x90, 0xb2, 0x1b, 
+0x23, 0x42, 0x08, 0xa4, 0xf4, 0x63, 0x49, 0xc8, 
+0xf2, 0x01, 0xeb, 0x3a, 0x2e, 0x96, 0x65, 0x23, 
+0x15, 0x89, 0x50, 0x24, 0x9e, 0xe7, 0x55, 0x7c, 
+0x66, 0x39, 0xa2, 0x47, 0x75, 0x54, 0x5d, 0xcd, 
+0xbb, 0xc7, 0x32, 0xad, 0xb2, 0x49, 0x51, 0x48, 
+0xff, 0xdd, 0x2b, 0x25, 0x4e, 0x95, 0x32, 0xdb, 
+0xd2, 0x99, 0x4c, 0xe6, 0xae, 0x10, 0x02, 0x2d, 
+0xa1, 0x22, 0x95, 0xca, 0xb3, 0x14, 0xc7, 0x76, 
+0xb0, 0x2c, 0x1b, 0xa1, 0x48, 0xa4, 0x2a, 0xfd, 
+0xe5, 0xc8, 0x35, 0x92, 0x48, 0x4c, 0x47, 0x8b, 
+0x68, 0x48, 0x29, 0x10, 0x02, 0xe6, 0x67, 0xe7, 
+0xcb, 0x1a, 0xa7, 0xc6, 0x15, 0x84, 0x10, 0x18, 
+0x86, 0x31, 0x47, 0xd1, 0x1e, 0x62, 0xc1, 0x7d, 
+0xb9, 0x6b, 0x18, 0x84, 0xe0, 0x66, 0x27, 0x0f, 
+0x40, 0x4c, 0x43, 0x91, 0x4a, 0xc5, 0x97, 0xf4, 
+0x1c, 0x0f, 0xd7, 0x72, 0x71, 0xa4, 0x83, 0xae, 
+0xe9, 0xfe, 0x18, 0x60, 0x8d, 0x24, 0x1a, 0x8b, 
+0xa2, 0xea, 0x2a, 0x02, 0x81, 0xeb, 0x78, 0x48, 
+0x21, 0xcb, 0xf6, 0x22, 0x5a, 0x5c, 0x0f, 0x00, 
+0x98, 0x26, 0xb4, 0x7f, 0x48, 0x11, 0x08, 0xe1, 
+0x10, 0x08, 0x7e, 0xcc, 0xef, 0xd2, 0xce, 0xcc, 
+0xcc, 0xdc, 0x96, 0x52, 0xa2, 0x25, 0xaa, 0x03, 
+0x00, 0x16, 0x40, 0x90, 0x52, 0x56, 0xfd, 0x4c, 
+0x35, 0x92, 0xa8, 0x4d, 0x20, 0x84, 0x40, 0x20, 
+0xb1, 0xe6, 0xad, 0x8a, 0x6d, 0xeb, 0x71, 0x0d, 
+0x29, 0x25, 0xa6, 0x69, 0x4e, 0x53, 0xb8, 0x89, 
+0x5a, 0x00, 0x44, 0x71, 0x0e, 0x28, 0xd8, 0xa5, 
+0x9d, 0x9a, 0x9a, 0x9a, 0x14, 0x42, 0xa0, 0xc6, 
+0x55, 0x14, 0xa5, 0x7a, 0x63, 0x3c, 0xd7, 0xf3, 
+0x01, 0xa8, 0xf2, 0x19, 0x45, 0x55, 0x70, 0xec, 
+0xa5, 0xe3, 0xa5, 0xa6, 0x3e, 0x41, 0x6d, 0x43, 
+0x12, 0x33, 0x97, 0xf8, 0x66, 0x3c, 0x2a, 0xb6, 
+0xad, 0x25, 0x34, 0x84, 0x10, 0x64, 0x32, 0x99, 
+0xbb, 0x2c, 0xac, 0x0c, 0x3b, 0x14, 0xb2, 0xc0, 
+0x0b, 0x87, 0x40, 0xa0, 0xc1, 0x1e, 0xbd, 0x79, 
+0xe5, 0xca, 0x95, 0x21, 0xcf, 0xf3, 0x2c, 0x3d, 
+0xa9, 0x69, 0x6a, 0x5c, 0xc5, 0xcd, 0x2e, 0xaf, 
+0x5b, 0x93, 0xb2, 0xba, 0xd5, 0x8d, 0x7d, 0xcf, 
+0x3e, 0xc8, 0x97, 0xff, 0x3e, 0x80, 0x99, 0x35, 
+0x4b, 0xfe, 0xde, 0xd5, 0xbb, 0x01, 0x3d, 0xa2, 
+0x81, 0xe7, 0xe1, 0x79, 0x1e, 0xf3, 0x33, 0xf3, 
+0x15, 0xdb, 0x8e, 0x36, 0x47, 0x90, 0x52, 0x32, 
+0x3e, 0x3e, 0x7e, 0x9d, 0xc5, 0xdb, 0xe9, 0x25, 
+0x19, 0x10, 0xa6, 0xbf, 0x05, 0x98, 0xb3, 0xb3, 
+0xb3, 0xd3, 0xe3, 0xe3, 0xe3, 0x97, 0xdb, 0xda, 
+0xda, 0x7a, 0xe3, 0x6d, 0x31, 0xe6, 0x87, 0x56, 
+0xbf, 0x9e, 0x5f, 0x2c, 0x0d, 0xad, 0x0d, 0xf4, 
+0xed, 0xdf, 0xc1, 0xd8, 0xb5, 0x34, 0xd7, 0xbe, 
+0xb9, 0xb6, 0xe8, 0xf7, 0xae, 0xde, 0x4e, 0xda, 
+0x36, 0xb6, 0x60, 0x64, 0x4d, 0x70, 0x61, 0xee, 
+0x4e, 0x06, 0xd7, 0x76, 0xcb, 0x32, 0x40, 0xa8, 
+0x82, 0x68, 0x63, 0x04, 0x0f, 0xcf, 0xfd, 0xe2, 
+0x8b, 0x2f, 0x06, 0xf0, 0xb7, 0xd2, 0xc3, 0x1b, 
+0xa7, 0xf9, 0x3c, 0xa0, 0x7a, 0x9e, 0x17, 0x94, 
+0x99, 0x04, 0x00, 0x04, 0x45, 0x0a, 0x59, 0x60, 
+0xfe, 0xea, 0xd5, 0xab, 0x67, 0x3a, 0x3a, 0x3a, 
+0x7a, 0x63, 0xad, 0x51, 0xcc, 0x1b, 0x6b, 0x97, 
+0xd4, 0x02, 0x39, 0xf0, 0xa7, 0x8f, 0x11, 0x8d, 
+0x47, 0xd9, 0x78, 0xef, 0x06, 0x86, 0xcf, 0x0f, 
+0x2f, 0x18, 0x21, 0x05, 0x5b, 0x76, 0x76, 0xb3, 
+0x69, 0xfb, 0x46, 0xcc, 0xac, 0x85, 0xe7, 0x82, 
+0x67, 0x7b, 0x4c, 0x8e, 0x4c, 0x56, 0x8c, 0xff, 
+0x48, 0x8b, 0x8e, 0x54, 0x24, 0x13, 0x13, 0x13, 
+0xc3, 0x13, 0x13, 0x13, 0x13, 0x2c, 0x06, 0x20, 
+0x0f, 0x42, 0x98, 0x47, 0x61, 0x06, 0x98, 0xb9, 
+0x87, 0x32, 0x27, 0x4f, 0x9e, 0xfc, 0x12, 0x70, 
+0x23, 0x8d, 0x3a, 0xaa, 0xae, 0xa0, 0x48, 0xb9, 
+0x66, 0xda, 0xdd, 0xb7, 0x99, 0x9e, 0xfb, 0xef, 
+0x21, 0x12, 0xd3, 0xd9, 0xbc, 0x7d, 0x13, 0x8a, 
+0x94, 0xa8, 0x8a, 0x42, 0xc7, 0x96, 0x76, 0x9e, 
+0x7c, 0xf1, 0x20, 0xdb, 0x1f, 0xbd, 0x0f, 0x3d, 
+0xa2, 0xa1, 0x47, 0x34, 0x34, 0x5d, 0xe5, 0xd6, 
+0x95, 0x9b, 0x18, 0xb3, 0xd9, 0x8a, 0xed, 0xc6, 
+0x5a, 0x23, 0x08, 0x21, 0xb8, 0x76, 0xed, 0xda, 
+0x19, 0xfc, 0xf5, 0xc0, 0xa5, 0x19, 0x50, 0x04, 
+0x40, 0x90, 0x03, 0x2c, 0xfc, 0xe5, 0xa3, 0x4c, 
+0x3a, 0x9d, 0x4e, 0xdf, 0xbe, 0x7d, 0xfb, 0x5a, 
+0x53, 0x53, 0xd3, 0xe6, 0xc4, 0xc6, 0x38, 0xf3, 
+0x57, 0xd7, 0x26, 0x0c, 0xa4, 0x94, 0x3c, 0xf9, 
+0xf2, 0x13, 0xe8, 0x31, 0x1d, 0xc7, 0x76, 0x68, 
+0x5a, 0xdf, 0xc8, 0x81, 0x3f, 0xdb, 0x4f, 0x47, 
+0x4f, 0x07, 0x9a, 0xae, 0x62, 0x66, 0x2d, 0x8c, 
+0x79, 0x03, 0xd7, 0x71, 0x71, 0x1d, 0x8f, 0xd1, 
+0xc1, 0x51, 0xc6, 0x87, 0x26, 0x2a, 0x26, 0x3f, 
+0x19, 0x93, 0x44, 0x5a, 0x23, 0x20, 0xf0, 0xbe, 
+0xfa, 0xea, 0xab, 0x2f, 0xf0, 0x17, 0x45, 0x83, 
+0x22, 0x8a, 0x82, 0xee, 0x30, 0xbf, 0x28, 0x1a, 
+0x92, 0x70, 0x0e, 0xc8, 0xe2, 0xef, 0xb9, 0xcf, 
+0x9c, 0x38, 0x71, 0xe2, 0x43, 0x21, 0x04, 0xb1, 
+0xcd, 0x51, 0x94, 0xa8, 0x8a, 0x94, 0xca, 0xaa, 
+0x75, 0xd7, 0xc1, 0x9d, 0xb4, 0x77, 0xb7, 0xa1, 
+0x47, 0x75, 0xf4, 0xa8, 0x3f, 0xc8, 0xd9, 0x79, 
+0x70, 0x27, 0x75, 0x4d, 0x75, 0xa8, 0xba, 0x86, 
+0xaa, 0xa9, 0xa8, 0xba, 0x06, 0x08, 0xbe, 0xfd, 
+0xfc, 0x02, 0x97, 0xbe, 0xba, 0x52, 0x55, 0xbb, 
+0x89, 0x9e, 0x38, 0x52, 0x91, 0x0c, 0x0d, 0x0d, 
+0x9d, 0xbe, 0x7a, 0xf5, 0xea, 0x75, 0x16, 0xea, 
+0x06, 0x96, 0x66, 0xc0, 0x12, 0x79, 0xc0, 0xc0, 
+0xa7, 0xcf, 0xf4, 0xa7, 0x9f, 0x7e, 0x3a, 0xb0, 
+0x6f, 0xdf, 0xbe, 0x4b, 0xad, 0xad, 0xad, 0x5b, 
+0x12, 0x5b, 0x62, 0xcc, 0x5f, 0x28, 0x3f, 0x0e, 
+0xaf, 0x24, 0x7a, 0x4c, 0x67, 0xff, 0xf3, 0xfb, 
+0x51, 0x23, 0x7e, 0x57, 0x65, 0x9b, 0xfe, 0x34, 
+0xd7, 0x75, 0x5c, 0x1c, 0x5b, 0x41, 0x51, 0x15, 
+0xa4, 0x22, 0x49, 0x5f, 0x4b, 0x73, 0xe6, 0xf8, 
+0x19, 0xe6, 0xee, 0x66, 0xaa, 0xea, 0x52, 0x95, 
+0xa4, 0x42, 0xb4, 0x3d, 0x82, 0xeb, 0xba, 0xce, 
+0x07, 0x1f, 0x7c, 0x70, 0x0c, 0x7f, 0x83, 0x74, 
+0x36, 0xe7, 0xcc, 0x70, 0x09, 0x4d, 0x5e, 0x8a, 
+0xc7, 0x01, 0x61, 0x00, 0x4c, 0x7c, 0xe4, 0x66, 
+0x81, 0x3b, 0xfd, 0xfd, 0xfd, 0xbf, 0x7c, 0xe9, 
+0xa5, 0x97, 0xfe, 0x3a, 0xda, 0x19, 0x11, 0xf6, 
+0x88, 0x8b, 0x9b, 0x59, 0xf9, 0x4c, 0xef, 0x7b, 
+0xdf, 0xdf, 0x43, 0xbc, 0x36, 0x86, 0x94, 0x02, 
+0x55, 0x57, 0xf1, 0x1c, 0x37, 0x67, 0xb4, 0xc2, 
+0xdc, 0xd4, 0x1c, 0xe7, 0x3e, 0x3b, 0xcf, 0xe0, 
+0x97, 0x97, 0xc8, 0xce, 0xfa, 0xe1, 0x56, 0xed, 
+0x80, 0x2a, 0xde, 0x13, 0x45, 0x08, 0xc1, 0xe0, 
+0xe0, 0xe0, 0xe7, 0x57, 0xae, 0x5c, 0xb9, 0x42, 
+0xe1, 0x36, 0x79, 0x00, 0x40, 0x9e, 0xfe, 0x10, 
+0x4a, 0x82, 0xb9, 0x2f, 0x8a, 0x13, 0x61, 0x1e, 
+0x80, 0x53, 0xa7, 0x4e, 0x9d, 0x1d, 0x1e, 0x1e, 
+0x3e, 0x2d, 0x15, 0x49, 0xcd, 0x8e, 0x18, 0xaa, 
+0x2e, 0x51, 0x94, 0x95, 0xe9, 0xf9, 0xcf, 0xbe, 
+0xe5, 0xd2, 0xc0, 0x65, 0x1c, 0xcb, 0xc1, 0x32, 
+0x16, 0x26, 0x35, 0x42, 0xc0, 0x6f, 0x7f, 0x7e, 
+0x9c, 0x73, 0xbf, 0x3b, 0x87, 0x35, 0x6f, 0x2e, 
+0xab, 0xcd, 0xd8, 0xe6, 0x08, 0xfa, 0x3a, 0x0d, 
+0xdb, 0xb6, 0xb3, 0xc7, 0x8e, 0x1d, 0x3b, 0x46, 
+0xe9, 0x62, 0x89, 0x45, 0xf3, 0x81, 0x52, 0xa3, 
+0x89, 0xe2, 0x30, 0x98, 0xcb, 0x21, 0x79, 0xfb, 
+0xe8, 0xd1, 0xa3, 0x3f, 0x9f, 0x9b, 0x9b, 0x9b, 
+0x54, 0x92, 0x0a, 0xb1, 0x3f, 0x8a, 0xad, 0x38, 
+0xfe, 0x67, 0x6f, 0xcf, 0xf1, 0xfe, 0x4f, 0x3e, 
+0xe0, 0x17, 0x7f, 0xf7, 0x4b, 0xd2, 0xd7, 0xc6, 
+0xb1, 0x2d, 0x1b, 0xd7, 0x71, 0xf1, 0x3c, 0x58, 
+0xbf, 0x75, 0xfd, 0xb2, 0xdb, 0xd3, 0x9b, 0x74, 
+0xa2, 0xdd, 0x11, 0x00, 0xaf, 0xbf, 0xbf, 0xff, 
+0xad, 0x74, 0x3a, 0x3d, 0x04, 0xdc, 0xc9, 0x01, 
+0x30, 0xbf, 0x94, 0xf7, 0x2b, 0x01, 0x10, 0x66, 
+0xc1, 0x0c, 0x30, 0x35, 0x31, 0x31, 0x31, 0xfc, 
+0xd6, 0x5b, 0x6f, 0xfd, 0xa3, 0xe3, 0x38, 0x86, 
+0xde, 0xaa, 0x11, 0xdd, 0x14, 0x41, 0x91, 0xca, 
+0x8a, 0xf5, 0xc6, 0x37, 0x23, 0xbc, 0xfd, 0x37, 
+0xff, 0xc2, 0x67, 0xff, 0x7a, 0x82, 0xec, 0x9c, 
+0x81, 0xe7, 0xb8, 0xb4, 0xdf, 0xd3, 0xbe, 0xac, 
+0x36, 0xb4, 0x1a, 0x95, 0xd8, 0x7d, 0x11, 0xa4, 
+0x22, 0x19, 0x18, 0x18, 0xf8, 0x75, 0x7f, 0x7f, 
+0xff, 0x27, 0x94, 0xa9, 0x12, 0x29, 0x36, 0x76, 
+0x51, 0x85, 0x48, 0xd1, 0x26, 0x69, 0x50, 0x0e, 
+0x17, 0x2e, 0x8d, 0x69, 0x7d, 0xe2, 0x89, 0x27, 
+0x1e, 0x7f, 0xee, 0xb9, 0xe7, 0x5e, 0x11, 0x42, 
+0x08, 0xeb, 0xb2, 0x83, 0x7d, 0x63, 0xf5, 0xf3, 
+0xde, 0x78, 0x32, 0xc6, 0xfd, 0x4f, 0xef, 0xa2, 
+0xed, 0x9e, 0x56, 0x7e, 0xf1, 0xb7, 0xc7, 0xaa, 
+0x5a, 0xf6, 0x92, 0x35, 0x02, 0xfd, 0x3e, 0x15, 
+0x11, 0x11, 0x5c, 0xbd, 0x7a, 0xf5, 0xf4, 0x1b, 
+0x6f, 0xbc, 0xf1, 0x63, 0x60, 0x94, 0x85, 0x2a, 
+0x91, 0x62, 0x06, 0x2c, 0xaa, 0x12, 0x59, 0x71, 
+0x89, 0xcc, 0xf3, 0xcf, 0x3f, 0x7f, 0x24, 0xb7, 
+0x0b, 0x2b, 0x9c, 0x31, 0x17, 0x7b, 0xd0, 0x29, 
+0xca, 0xaf, 0x2b, 0x93, 0xc6, 0xae, 0x46, 0x32, 
+0x77, 0x32, 0x64, 0xa6, 0x33, 0x65, 0xef, 0x93, 
+0x8d, 0x12, 0x75, 0xab, 0x44, 0x28, 0x82, 0x74, 
+0x3a, 0x7d, 0xf5, 0xf5, 0xd7, 0x5f, 0x7f, 0x3d, 
+0x93, 0xc9, 0x2c, 0xbb, 0x44, 0x66, 0x55, 0x45, 
+0x52, 0xcf, 0x3c, 0xf3, 0xcc, 0xc1, 0x43, 0x87, 
+0x0e, 0xbd, 0xa0, 0x69, 0x9a, 0xee, 0xcd, 0x78, 
+0xd8, 0xe7, 0x1c, 0xbc, 0xd2, 0xf3, 0x99, 0x35, 
+0x15, 0x65, 0x83, 0x44, 0xe9, 0xf2, 0xa3, 0x77, 
+0x70, 0x70, 0x70, 0xe0, 0xcd, 0x37, 0xdf, 0xfc, 
+0xa9, 0x61, 0x18, 0x6b, 0x57, 0x24, 0x05, 0xd5, 
+0x97, 0xc9, 0xed, 0xda, 0xb5, 0x6b, 0xc7, 0x8b, 
+0x2f, 0xbe, 0xf8, 0x5a, 0x22, 0x91, 0xa8, 0xc7, 
+0x01, 0xf7, 0x86, 0x87, 0x3b, 0xe2, 0xad, 0x09, 
+0x1b, 0x16, 0xbd, 0x53, 0x4a, 0x20, 0x37, 0x0a, 
+0x44, 0x02, 0x3c, 0xcf, 0x73, 0x3f, 0xfb, 0xec, 
+0xb3, 0xf7, 0x8f, 0x1e, 0x3d, 0xba, 0xf6, 0x65, 
+0x72, 0xf9, 0x1f, 0xab, 0x2c, 0x94, 0x6c, 0x6d, 
+0x6d, 0xdd, 0xf0, 0xea, 0xab, 0xaf, 0xfe, 0xc5, 
+0xfa, 0xf5, 0xeb, 0x7b, 0x01, 0x30, 0xc1, 0x1d, 
+0xf2, 0x70, 0xc7, 0x28, 0x91, 0x76, 0x56, 0x60, 
+0x78, 0x0d, 0xbe, 0xe1, 0xf5, 0xfe, 0xe7, 0x4c, 
+0x26, 0x73, 0xf7, 0xbd, 0xf7, 0xde, 0xfb, 0xe7, 
+0x8f, 0x3e, 0xfa, 0xe8, 0x3f, 0xf1, 0x8b, 0x24, 
+0x27, 0xf1, 0xb3, 0x7e, 0xa9, 0x5a, 0x80, 0x95, 
+0x15, 0x4a, 0xe6, 0x6f, 0x58, 0xba, 0x54, 0x36, 
+0x8e, 0xbf, 0xff, 0x9e, 0x2f, 0x95, 0x3d, 0x70, 
+0xe0, 0xc0, 0xee, 0x43, 0x87, 0x0e, 0x1d, 0x5e, 
+0xb7, 0x6e, 0x5d, 0x07, 0x00, 0x16, 0x78, 0xb7, 
+0xfd, 0xd7, 0xf3, 0xee, 0xb2, 0x3c, 0x30, 0xe2, 
+0x20, 0x1a, 0x7c, 0xa5, 0xc6, 0xff, 0xca, 0x34, 
+0xcd, 0xec, 0xc0, 0xc0, 0xc0, 0x6f, 0xde, 0x79, 
+0xe7, 0x9d, 0x0f, 0x32, 0x99, 0x4c, 0x50, 0x2a, 
+0x7b, 0x87, 0xc2, 0x11, 0xdf, 0xda, 0x95, 0xca, 
+0x2e, 0x01, 0xc2, 0x52, 0xc5, 0xd2, 0x75, 0xf8, 
+0xa1, 0x91, 0x3a, 0x72, 0xe4, 0xc8, 0xa3, 0x8f, 
+0x3e, 0xfa, 0xe8, 0x33, 0xc9, 0x64, 0x32, 0x5f, 
+0x2c, 0x8d, 0x93, 0x7b, 0x55, 0x03, 0x3c, 0x53, 
+0x2c, 0x9c, 0x08, 0x70, 0xc9, 0x9f, 0x22, 0x10, 
+0x11, 0xcf, 0xff, 0x3b, 0x89, 0x0f, 0x71, 0x4e, 
+0x6c, 0xdb, 0x36, 0xcf, 0x9d, 0x3b, 0xf7, 0xf9, 
+0xdb, 0x6f, 0xbf, 0xfd, 0x6f, 0xe9, 0x74, 0xfa, 
+0x66, 0xae, 0xa5, 0xbb, 0x39, 0x0d, 0x7b, 0x7d, 
+0xed, 0x8b, 0xa5, 0xcb, 0x80, 0x10, 0x3e, 0x20, 
+0x11, 0x9c, 0x11, 0xa8, 0xc9, 0xbd, 0x7e, 0x12, 
+0xa8, 0xdd, 0xbb, 0x77, 0xef, 0xd6, 0x3d, 0x7b, 
+0xf6, 0xec, 0xde, 0xbc, 0x79, 0xf3, 0xbd, 0xa9, 
+0x54, 0x6a, 0x59, 0xe5, 0xf2, 0x86, 0x61, 0x64, 
+0xae, 0x5f, 0xbf, 0x7e, 0xe1, 0xec, 0xd9, 0xb3, 
+0x5f, 0x7f, 0xfc, 0xf1, 0xc7, 0x5f, 0xcf, 0xce, 
+0xce, 0x06, 0xc9, 0x2d, 0xf0, 0xf6, 0x1f, 0xae, 
+0x5c, 0x3e, 0x7f, 0x73, 0xf9, 0x03, 0x13, 0x01, 
+0x23, 0x4a, 0x1e, 0x98, 0xe8, 0xed, 0xed, 0xed, 
+0xd8, 0xb5, 0x6b, 0x57, 0x6f, 0x32, 0x99, 0x4c, 
+0xd5, 0xd6, 0xd6, 0xd6, 0xc5, 0xe3, 0xf1, 0x64, 
+0x22, 0x91, 0xa8, 0x55, 0x55, 0x55, 0xcd, 0x64, 
+0x32, 0xb3, 0xb3, 0xb3, 0xb3, 0xd3, 0x73, 0x73, 
+0x73, 0xd3, 0x33, 0x33, 0x33, 0x53, 0x37, 0x6e, 
+0xdc, 0x18, 0xf9, 0xe4, 0x93, 0x4f, 0xce, 0x5b, 
+0x96, 0x55, 0xee, 0xc0, 0x44, 0xd8, 0xf0, 0x82, 
+0x93, 0x23, 0xd5, 0x1a, 0xbf, 0x6c, 0x00, 0x42, 
+0x20, 0xc0, 0xca, 0x8f, 0xcc, 0x84, 0x37, 0x2a, 
+0x83, 0x91, 0x68, 0xb0, 0x0e, 0x91, 0x5f, 0x8e, 
+0x63, 0xe1, 0xb8, 0x4c, 0xb1, 0x2e, 0x79, 0x64, 
+0x86, 0x32, 0xd9, 0x7e, 0x49, 0x7b, 0xfe, 0x87, 
+0x0e, 0x4d, 0x85, 0x4f, 0x8e, 0x41, 0xe1, 0xf0, 
+0x3b, 0x00, 0xe1, 0x0f, 0x72, 0x68, 0x6a, 0x55, 
+0x07, 0x27, 0x57, 0x71, 0x6c, 0xae, 0x78, 0xaf, 
+0xae, 0x78, 0x26, 0x1a, 0x68, 0xc5, 0x63, 0x73, 
+0xac, 0xc2, 0x78, 0x58, 0x25, 0x00, 0x50, 0x00, 
+0x02, 0x14, 0x32, 0x22, 0xbc, 0xd3, 0x5c, 0xcd, 
+0xc1, 0xc9, 0xb0, 0x56, 0x3c, 0x38, 0xc9, 0x2a, 
+0x0d, 0xcf, 0xbf, 0xf0, 0xff, 0xf7, 0xa3, 0xb3, 
+0x6b, 0x06, 0x40, 0x41, 0xa3, 0x6b, 0x78, 0x78, 
+0x3a, 0x74, 0xf5, 0x3f, 0xfc, 0x6f, 0x3d, 0x3c, 
+0xfd, 0x7f, 0x55, 0xfe, 0x1b, 0x7d, 0x60, 0xf2, 
+0xed, 0x55, 0x31, 0x37, 0xb6, 0x00, 0x00, 0x00, 
+0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
+0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity12.png b/source/bitmaps/misc/activity12.png
new file mode 100644 (file)
index 0000000..18b6037
Binary files /dev/null and b/source/bitmaps/misc/activity12.png differ
diff --git a/source/bitmaps/misc/activity2.cpp b/source/bitmaps/misc/activity2.cpp
new file mode 100644 (file)
index 0000000..a5abf10
--- /dev/null
@@ -0,0 +1,543 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY2_CPP
+#define MISC_ACTIVITY2_CPP
+
+static unsigned char misc_activity2_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x26, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xfb, 
+0x6f, 0x5c, 0xc7, 0x75, 0xc7, 0x3f, 0x33, 0x73, 
+0xef, 0xdd, 0xf7, 0x92, 0xcb, 0xa7, 0x48, 0x8a, 
+0xd4, 0xcb, 0x91, 0x29, 0x3b, 0x12, 0xa5, 0x5a, 
+0x74, 0x12, 0x5b, 0xb6, 0xe5, 0x1a, 0xa8, 0x65, 
+0xa3, 0x48, 0x5c, 0x23, 0x69, 0xd0, 0xc0, 0xc8, 
+0x2f, 0x4d, 0x9d, 0x22, 0x3f, 0x35, 0x3f, 0xb5, 
+0x7f, 0x41, 0x7f, 0xc9, 0xcf, 0x41, 0x1a, 0x20, 
+0x68, 0x81, 0x44, 0x4e, 0x82, 0xc0, 0x48, 0x8d, 
+0x3a, 0xb6, 0x53, 0xd0, 0x81, 0x1d, 0xc5, 0x89, 
+0x12, 0x29, 0xb4, 0x2d, 0xc7, 0xa6, 0x1d, 0xd1, 
+0x22, 0x65, 0x91, 0xb4, 0xc8, 0x15, 0x29, 0x8a, 
+0x5c, 0x72, 0xb9, 0xf7, 0xdd, 0x1f, 0xee, 0xde, 
+0xe5, 0xdd, 0xd5, 0x2e, 0x77, 0x29, 0xd2, 0x49, 
+0x8b, 0x1e, 0xe0, 0x60, 0xf6, 0x31, 0xf7, 0x71, 
+0xbe, 0xe7, 0x31, 0x67, 0x66, 0xce, 0x08, 0xdf, 
+0xf7, 0xf9, 0x24, 0x49, 0x08, 0x21, 0x1a, 0xfd, 
+0x55, 0xe7, 0xb7, 0xdb, 0x5e, 0xc6, 0xff, 0x84, 
+0x5f, 0x50, 0xfb, 0x24, 0x6e, 0x5a, 0x23, 0xb4, 
+0x68, 0xd0, 0x36, 0x22, 0x3f, 0xda, 0xd6, 0xe2, 
+0xb7, 0xdb, 0x80, 0x88, 0xdd, 0xba, 0x5f, 0x1d, 
+0xa1, 0x45, 0xcd, 0x67, 0x59, 0xe7, 0xb7, 0x28, 
+0x45, 0x05, 0xdf, 0x8a, 0x83, 0x4e, 0xbb, 0xf4, 
+0xe2, 0x3b, 0xb6, 0x80, 0x06, 0x82, 0xcb, 0x48, 
+0x5b, 0x8f, 0x05, 0xd5, 0x20, 0x84, 0xc2, 0x78, 
+0xe5, 0xcf, 0x5e, 0x03, 0xae, 0x00, 0x11, 0x3e, 
+0x76, 0xa7, 0x40, 0xec, 0x08, 0x80, 0x88, 0xf0, 
+0xb5, 0x42, 0xab, 0x08, 0x6b, 0x65, 0x56, 0x35, 
+0x5c, 0x6b, 0x05, 0x51, 0x41, 0x1d, 0xc0, 0xad, 
+0xd3, 0xba, 0xd4, 0x80, 0xb1, 0x53, 0x20, 0xee, 
+0xc8, 0x05, 0x6a, 0x04, 0xaf, 0x15, 0x5a, 0x03, 
+0xf4, 0x08, 0x1b, 0x65, 0x0e, 0xbf, 0x87, 0x80, 
+0x44, 0x2d, 0x21, 0xd4, 0x7a, 0x28, 0xac, 0x5d, 
+0x66, 0xab, 0xa6, 0x0d, 0xb9, 0x1e, 0x18, 0x77, 
+0x04, 0xc2, 0xb6, 0x2d, 0x20, 0x22, 0x7c, 0x28, 
+0x40, 0x54, 0xcb, 0x06, 0x10, 0x2b, 0x73, 0xbc, 
+0xcc, 0x89, 0xc8, 0xf7, 0x10, 0x8c, 0xd0, 0x22, 
+0x42, 0x00, 0xa2, 0x9a, 0x0f, 0x05, 0x36, 0xcb, 
+0x5c, 0x02, 0x36, 0xca, 0x6d, 0xa9, 0xfc, 0x5b, 
+0x08, 0x48, 0x68, 0x19, 0x1e, 0x65, 0x6b, 0xd8, 
+0x2e, 0x08, 0xdb, 0x02, 0xa0, 0x2c, 0x7c, 0xc8, 
+0xa1, 0xc6, 0x43, 0x2d, 0x87, 0x02, 0x27, 0x81, 
+0x54, 0x84, 0x93, 0x40, 0xb2, 0xa7, 0xa7, 0x67, 
+0x60, 0x60, 0x60, 0x60, 0x38, 0x1e, 0x8f, 0x77, 
+0xc4, 0xe3, 0xf1, 0x76, 0xc3, 0x30, 0xb2, 0x86, 
+0x61, 0x64, 0xa5, 0x94, 0xba, 0x65, 0x59, 0x05, 
+0xcb, 0xb2, 0x56, 0x4d, 0xd3, 0xbc, 0x65, 0x9a, 
+0xe6, 0xf2, 0xad, 0x5b, 0xb7, 0x66, 0xaf, 0x5c, 
+0xb9, 0xf2, 0xbe, 0xe7, 0x79, 0xeb, 0x40, 0x11, 
+0x58, 0x8f, 0x70, 0x31, 0x02, 0x88, 0x59, 0x0b, 
+0xc4, 0x76, 0x5d, 0xa2, 0x65, 0x17, 0x88, 0x08, 
+0x1f, 0x9a, 0x7b, 0xa8, 0xf1, 0x50, 0xcb, 0x29, 
+0x20, 0x53, 0xe6, 0x2c, 0x90, 0x19, 0x1a, 0x1a, 
+0xba, 0x7b, 0x70, 0x70, 0xf0, 0x64, 0x57, 0x57, 
+0xd7, 0xbd, 0xc9, 0x64, 0xb2, 0xb7, 0xa5, 0x07, 
+0x95, 0xc9, 0x71, 0x9c, 0xe2, 0xf2, 0xf2, 0xf2, 
+0x1f, 0xe7, 0xe7, 0xe7, 0xdf, 0x9a, 0x9c, 0x9c, 
+0x7c, 0xdb, 0x34, 0xcd, 0x25, 0x60, 0x15, 0x28, 
+0x94, 0x79, 0x8d, 0x4d, 0x30, 0x42, 0x8b, 0x88, 
+0xba, 0x45, 0x4b, 0x20, 0xb4, 0x04, 0x40, 0x1d, 
+0xe1, 0x75, 0x02, 0xb3, 0x4e, 0x00, 0xe9, 0xb2, 
+0xd0, 0xed, 0x40, 0x1b, 0xd0, 0x71, 0xfc, 0xf8, 
+0xf1, 0x87, 0x0f, 0x1d, 0x3a, 0x74, 0x26, 0x1e, 
+0x8f, 0x77, 0x86, 0xf7, 0x50, 0xb6, 0x46, 0x2e, 
+0xdf, 0x41, 0x7c, 0x2d, 0x81, 0x51, 0x32, 0xd0, 
+0x4d, 0x03, 0xa3, 0x14, 0x43, 0xba, 0x12, 0x3b, 
+0x6e, 0x61, 0xc5, 0x2c, 0xac, 0xb8, 0x89, 0x95, 
+0x30, 0xb9, 0xd5, 0xb3, 0x4c, 0x29, 0xb5, 0x51, 
+0x79, 0xbe, 0xe7, 0x79, 0xf6, 0xf5, 0xeb, 0xd7, 
+0x7f, 0x3b, 0x3e, 0x3e, 0xfe, 0x62, 0xa1, 0x50, 
+0xf8, 0x18, 0x58, 0x06, 0x56, 0x22, 0x80, 0x14, 
+0xd9, 0x74, 0x0d, 0x67, 0x3b, 0x20, 0x34, 0x05, 
+0xa0, 0x46, 0xf8, 0x30, 0xc0, 0xc5, 0xd9, 0xd4, 
+0x78, 0x1b, 0xd0, 0x01, 0x74, 0x0c, 0x0f, 0x0f, 
+0x7f, 0xf6, 0xc8, 0x91, 0x23, 0x9f, 0x4f, 0xa5, 
+0x52, 0x7d, 0x00, 0x7a, 0xc9, 0x20, 0x37, 0xdf, 
+0x41, 0xee, 0xe3, 0x2e, 0xb2, 0x8b, 0x6d, 0x08, 
+0xaf, 0x59, 0x0e, 0xb4, 0x49, 0x1b, 0x99, 0x22, 
+0xcb, 0xfd, 0x4b, 0x2c, 0xf7, 0x2d, 0xb1, 0xde, 
+0xbe, 0x06, 0x80, 0xeb, 0xba, 0xe6, 0xcc, 0xcc, 
+0xcc, 0x6b, 0x17, 0x2f, 0x5e, 0x7c, 0xc9, 0x34, 
+0xcd, 0x05, 0xe0, 0x66, 0x19, 0x8c, 0x55, 0x02, 
+0xf7, 0xd8, 0x28, 0x03, 0xd1, 0x32, 0x08, 0x5b, 
+0x02, 0xd0, 0x40, 0xf8, 0xd0, 0xdc, 0xdb, 0x80, 
+0x1c, 0xd0, 0xd5, 0xd6, 0xd6, 0xb6, 0xff, 0x91, 
+0x47, 0x1e, 0xf9, 0x5a, 0x7b, 0x7b, 0xfb, 0xe1, 
+0x40, 0x70, 0x9d, 0xbe, 0xf7, 0xf7, 0xd2, 0x79, 
+0xad, 0x1b, 0xe1, 0xb7, 0x2e, 0x74, 0x23, 0x2a, 
+0xb6, 0xad, 0x33, 0xf7, 0xe9, 0x6b, 0x14, 0xba, 
+0x57, 0x01, 0xb0, 0x6d, 0xbb, 0x70, 0xe9, 0xd2, 
+0xa5, 0xb3, 0x13, 0x13, 0x13, 0xe7, 0x81, 0x45, 
+0x60, 0x89, 0xc0, 0x22, 0xa2, 0xd6, 0xd0, 0x12, 
+0x08, 0x0d, 0x01, 0xa8, 0x63, 0xf6, 0x06, 0x9b, 
+0x26, 0xdf, 0x0e, 0x74, 0x02, 0xdd, 0x43, 0x43, 
+0x43, 0x23, 0x9f, 0xfb, 0xdc, 0xe7, 0x9e, 0x8d, 
+0xc7, 0xe3, 0xed, 0xd2, 0x91, 0x74, 0x4f, 0xf6, 
+0xd1, 0xfd, 0x61, 0x2f, 0xd2, 0x95, 0x3b, 0x16, 
+0xbc, 0x96, 0x0a, 0xbd, 0x2b, 0x5c, 0xbf, 0x77, 
+0x96, 0x52, 0x76, 0x03, 0xc0, 0xbb, 0x7c, 0xf9, 
+0xf2, 0x4b, 0xe7, 0xcf, 0x9f, 0x7f, 0x01, 0xc8, 
+0x13, 0x00, 0xb1, 0xcc, 0xed, 0x20, 0xb8, 0x04, 
+0xf2, 0xb7, 0x0e, 0x40, 0xcd, 0x50, 0x57, 0x4f, 
+0xf8, 0x6e, 0xa0, 0x67, 0x64, 0x64, 0xe4, 0xb1, 
+0x91, 0x91, 0x91, 0xaf, 0x28, 0xa5, 0x8c, 0xc4, 
+0x72, 0x92, 0xc1, 0xdf, 0xed, 0x47, 0x2b, 0xe9, 
+0xbb, 0x27, 0x71, 0xdd, 0x37, 0x86, 0x1b, 0xc3, 
+0xf3, 0xdc, 0xb8, 0x7b, 0x01, 0x80, 0x85, 0x85, 
+0x85, 0xf1, 0xb1, 0xb1, 0xb1, 0xef, 0xd9, 0xb6, 
+0xfd, 0x31, 0x70, 0x83, 0xc0, 0x2d, 0x56, 0xb9, 
+0xdd, 0x12, 0xea, 0x82, 0xb0, 0x15, 0x00, 0xe1, 
+0x50, 0x17, 0x9a, 0x7d, 0x9a, 0xb2, 0xc9, 0x03, 
+0x7b, 0x1e, 0x7c, 0xf0, 0xc1, 0xa7, 0x0f, 0x1f, 
+0x3e, 0xfc, 0x94, 0x10, 0x42, 0x64, 0x67, 0xda, 
+0xe9, 0x7d, 0xab, 0x7f, 0x5b, 0x3e, 0xde, 0x88, 
+0x06, 0x1f, 0xdc, 0xcb, 0xc2, 0xa5, 0x3c, 0xd6, 
+0x9a, 0xb5, 0x65, 0xbf, 0x42, 0xff, 0x2a, 0xf3, 
+0xf7, 0xcd, 0xe1, 0x2b, 0x8f, 0xd5, 0xd5, 0xd5, 
+0xe9, 0x17, 0x5f, 0x7c, 0xf1, 0x5b, 0xa6, 0x69, 
+0xce, 0x12, 0x58, 0x43, 0x14, 0x84, 0x4a, 0x60, 
+0xac, 0x07, 0xc0, 0x6d, 0x76, 0x5a, 0xc7, 0xef, 
+0x43, 0xed, 0x67, 0x08, 0x00, 0xe8, 0x3e, 0x7a, 
+0xf4, 0xe8, 0xc3, 0x47, 0x8e, 0x1c, 0x79, 0x4a, 
+0x29, 0x25, 0xba, 0x27, 0x7a, 0xe9, 0x79, 0xab, 
+0x0f, 0x1f, 0x1f, 0x4f, 0x7a, 0x3b, 0xe6, 0xfd, 
+0x8f, 0x0e, 0x71, 0xf4, 0x99, 0x7b, 0x9a, 0xf6, 
+0x4b, 0xcd, 0xa7, 0x19, 0x7c, 0x63, 0x3f, 0x86, 
+0x69, 0xd0, 0xde, 0xde, 0x7e, 0xe0, 0xf1, 0xc7, 
+0x1f, 0xff, 0x3a, 0xd0, 0x43, 0x10, 0x90, 0xb3, 
+0x04, 0xf9, 0x47, 0x8c, 0xcd, 0xa4, 0x4b, 0xd6, 
+0x9b, 0x9a, 0x57, 0x01, 0x50, 0x93, 0xe2, 0x86, 
+0x63, 0x7d, 0x18, 0xf1, 0xdb, 0x80, 0xce, 0xc1, 
+0xc1, 0xc1, 0x7b, 0x47, 0x47, 0x47, 0xbf, 0x2a, 
+0x84, 0x10, 0xb9, 0x0f, 0x3a, 0x49, 0x5f, 0x69, 
+0xc3, 0x15, 0xee, 0xae, 0xb0, 0xa7, 0x3c, 0xfa, 
+0x47, 0xfb, 0xb9, 0xf7, 0x4b, 0xf7, 0x90, 0x1e, 
+0x4c, 0x35, 0xed, 0xaf, 0x56, 0x35, 0x7a, 0xce, 
+0xf7, 0x23, 0x5d, 0x45, 0x6f, 0x6f, 0xef, 0xc8, 
+0xe9, 0xd3, 0xa7, 0xbf, 0x48, 0xe0, 0x9e, 0xb9, 
+0xb2, 0xc2, 0x12, 0x65, 0x05, 0x56, 0xb2, 0xce, 
+0x5a, 0x10, 0xea, 0x45, 0xaa, 0x7a, 0x81, 0x2f, 
+0x03, 0xe4, 0xb2, 0xd9, 0xec, 0xe0, 0xa3, 0x8f, 
+0x3e, 0xfa, 0x8f, 0xba, 0xae, 0xc7, 0x52, 0xd7, 
+0xd3, 0xa4, 0x27, 0xdb, 0x76, 0x45, 0xeb, 0x21, 
+0x77, 0x0e, 0x77, 0x90, 0xec, 0x4a, 0x60, 0x64, 
+0x0c, 0x1e, 0xf8, 0xa7, 0xcf, 0xb6, 0x74, 0x8d, 
+0x5a, 0xd7, 0xe8, 0x7c, 0xb3, 0x07, 0x29, 0x24, 
+0x87, 0x0f, 0x1f, 0x7e, 0xfc, 0xc4, 0x89, 0x13, 
+0x0f, 0x37, 0xb0, 0x82, 0xe8, 0x74, 0xbc, 0x42, 
+0xf5, 0x52, 0xe1, 0xa8, 0xf9, 0xc7, 0xca, 0xda, 
+0xcf, 0x02, 0x1d, 0x8f, 0x3d, 0xf6, 0xd8, 0x57, 
+0x93, 0xc9, 0x64, 0xa7, 0xb6, 0xa2, 0x93, 0x79, 
+0x3b, 0x87, 0x2b, 0xdd, 0x3a, 0x97, 0xd7, 0x27, 
+0xa9, 0x04, 0x1d, 0xfb, 0x3b, 0xe8, 0x3c, 0xd8, 
+0x41, 0xaa, 0x2b, 0x45, 0xba, 0x27, 0x4d, 0xaa, 
+0x2b, 0x85, 0xbd, 0x61, 0x53, 0xba, 0xb5, 0xc1, 
+0xfa, 0x52, 0x91, 0xce, 0x43, 0x9d, 0x68, 0x71, 
+0x85, 0x32, 0x34, 0x3e, 0xf5, 0x57, 0x77, 0xd1, 
+0xff, 0x7c, 0x1f, 0x33, 0xbf, 0x9f, 0x6d, 0x7a, 
+0x6f, 0x3d, 0x6f, 0x90, 0xf9, 0xa0, 0x8d, 0xb5, 
+0x7b, 0x56, 0xc5, 0xc9, 0xfb, 0x4e, 0x3e, 0x33, 
+0x35, 0x35, 0xf5, 0xc1, 0xca, 0xca, 0x4a, 0x91, 
+0xea, 0xb9, 0x43, 0x18, 0x0c, 0x45, 0x74, 0xce, 
+0x50, 0x01, 0xa0, 0xd9, 0xb0, 0x77, 0xe8, 0xd0, 
+0xa1, 0x4f, 0xf7, 0xf6, 0xf6, 0x8e, 0x08, 0x5f, 
+0x90, 0xf9, 0x7d, 0x3b, 0xbe, 0xe7, 0xd1, 0xca, 
+0x10, 0x2f, 0x95, 0xa0, 0xfb, 0x53, 0xdd, 0xf4, 
+0x0e, 0xf7, 0x90, 0xec, 0x48, 0x12, 0x4b, 0xc7, 
+0xca, 0x6c, 0x60, 0xa4, 0x62, 0xb4, 0x0d, 0x64, 
+0x88, 0xa5, 0x63, 0x18, 0x69, 0x03, 0x23, 0x69, 
+0xa0, 0x74, 0x85, 0x1e, 0xd7, 0x90, 0x9a, 0xe4, 
+0xb1, 0x7f, 0x39, 0xcd, 0x7f, 0x7c, 0xf9, 0xfb, 
+0xf8, 0x5e, 0xf3, 0x6c, 0x35, 0xfe, 0x61, 0x12, 
+0xab, 0xd7, 0xc4, 0xee, 0xb2, 0x62, 0xa7, 0x4e, 
+0x9d, 0x7a, 0xea, 0xa5, 0x97, 0x5e, 0xfa, 0x2e, 
+0x9b, 0x73, 0x87, 0x70, 0xce, 0xe0, 0x52, 0xb3, 
+0xb0, 0x52, 0xeb, 0x02, 0xf5, 0x82, 0x5f, 0x1a, 
+0x68, 0x1f, 0x1d, 0x1d, 0xfd, 0x1b, 0xa5, 0x94, 
+0x88, 0x5f, 0x4b, 0xc2, 0x86, 0xc0, 0x95, 0x5e, 
+0x53, 0x16, 0x09, 0x49, 0xdf, 0x7d, 0xfd, 0x74, 
+0xdc, 0xd5, 0x81, 0x88, 0x29, 0x3c, 0xe1, 0xe3, 
+0x0b, 0x1f, 0xaf, 0xcc, 0x48, 0x1f, 0x5f, 0x12, 
+0x00, 0x29, 0x02, 0xb0, 0x84, 0x26, 0x51, 0x86, 
+0x42, 0x4f, 0xe8, 0xf4, 0x1d, 0xdd, 0xc3, 0x3d, 
+0x9f, 0xbf, 0xa7, 0xa5, 0x67, 0xb9, 0xd2, 0x23, 
+0xfe, 0x7e, 0x0a, 0x29, 0x25, 0x43, 0x43, 0x43, 
+0x9f, 0xed, 0xef, 0xef, 0x3f, 0x48, 0x60, 0xb9, 
+0x29, 0x02, 0x4b, 0xd6, 0xa9, 0x13, 0x0b, 0x64, 
+0x8d, 0xf6, 0x6b, 0xcd, 0x3f, 0x09, 0x64, 0x8f, 
+0x1d, 0x3b, 0x76, 0x5f, 0x57, 0x57, 0xd7, 0x5d, 
+0xd2, 0x91, 0xe8, 0x97, 0x63, 0x78, 0xc2, 0x6d, 
+0xca, 0x2a, 0x29, 0xe9, 0x39, 0xd2, 0x85, 0x9e, 
+0xd4, 0xf0, 0x84, 0x87, 0x5f, 0x66, 0xc7, 0x75, 
+0x58, 0xba, 0xb6, 0xc4, 0xc7, 0x13, 0x1f, 0x33, 
+0x75, 0x61, 0x9a, 0xf9, 0x3f, 0xce, 0xb3, 0xb1, 
+0x1a, 0xe4, 0xfd, 0x7e, 0x64, 0x4d, 0x34, 0x8c, 
+0x55, 0x0f, 0x7f, 0xe3, 0x41, 0x54, 0x52, 0xb6, 
+0xf4, 0x4c, 0xb1, 0x22, 0xd0, 0xe7, 0x0c, 0x94, 
+0x52, 0xea, 0x81, 0x07, 0x1e, 0x78, 0x2a, 0x02, 
+0x40, 0x22, 0x02, 0x40, 0x95, 0xd2, 0x6b, 0x63, 
+0x40, 0x74, 0xb2, 0x53, 0xc9, 0xf7, 0x47, 0x46, 
+0x46, 0x9e, 0x90, 0x52, 0xa2, 0xae, 0x18, 0x78, 
+0x4e, 0xa0, 0xb9, 0xad, 0x48, 0x2a, 0x49, 0xa6, 
+0x3f, 0x83, 0xaf, 0x08, 0x82, 0x15, 0x1e, 0xa6, 
+0x69, 0x72, 0xed, 0xdd, 0x19, 0x16, 0xa7, 0x97, 
+0x70, 0x2c, 0xe7, 0xb6, 0x6b, 0x1e, 0xf9, 0x87, 
+0x53, 0x8c, 0xfe, 0xed, 0x49, 0x3c, 0xd7, 0xc5, 
+0xb1, 0x1c, 0x7c, 0xdf, 0xc7, 0xb5, 0x5d, 0x66, 
+0xde, 0x99, 0x45, 0x26, 0x24, 0xae, 0xe9, 0x6d, 
+0xf9, 0xcc, 0x90, 0xd4, 0x07, 0x31, 0xbc, 0x01, 
+0x97, 0xbe, 0xbe, 0xbe, 0x91, 0x81, 0x81, 0x81, 
+0xfd, 0x73, 0x73, 0x73, 0xe1, 0xc4, 0xc9, 0x60, 
+0x33, 0x31, 0x0a, 0x17, 0x61, 0xaa, 0x00, 0x88, 
+0x26, 0x3f, 0xe1, 0xc2, 0x46, 0x32, 0x97, 0xcb, 
+0xf5, 0x76, 0x74, 0x74, 0xec, 0xc7, 0x03, 0xf1, 
+0x51, 0xa0, 0x89, 0x66, 0x94, 0xcc, 0x25, 0x40, 
+0xf3, 0xf1, 0x70, 0x71, 0x7d, 0x97, 0xc2, 0xcd, 
+0x02, 0x33, 0x7f, 0x98, 0xc5, 0x2e, 0xd9, 0x9b, 
+0x4f, 0xaa, 0xa1, 0xde, 0xe1, 0x5e, 0x5c, 0x27, 
+0x10, 0x5e, 0x48, 0x41, 0x7e, 0xea, 0x06, 0x2f, 
+0x7f, 0xeb, 0xe7, 0x4c, 0x5d, 0x98, 0x6e, 0x78, 
+0x4d, 0x5d, 0x2a, 0x81, 0xcc, 0x2b, 0xfc, 0x7e, 
+0x4f, 0x1c, 0x39, 0x72, 0xe4, 0xfe, 0xb9, 0xb9, 
+0xb9, 0xcb, 0x54, 0x0f, 0x87, 0x95, 0x95, 0x28, 
+0x21, 0xc4, 0x6d, 0x00, 0xd4, 0x5a, 0x40, 0xf2, 
+0xd8, 0xb1, 0x63, 0x27, 0xa5, 0x94, 0xc2, 0x5f, 
+0x14, 0xb8, 0xae, 0x5b, 0x7f, 0xe0, 0x8c, 0x90, 
+0xd2, 0x15, 0x18, 0x3e, 0x0e, 0x0e, 0x0a, 0x0d, 
+0x2c, 0x93, 0x6b, 0x97, 0x66, 0x70, 0x9d, 0xc6, 
+0xd7, 0x26, 0xb2, 0x09, 0xda, 0x07, 0xda, 0x70, 
+0x2c, 0x1b, 0xdb, 0xb4, 0x39, 0xff, 0x93, 0xdf, 
+0x71, 0xe1, 0xf9, 0x8b, 0x78, 0xae, 0xd7, 0xf4, 
+0x79, 0xf5, 0x48, 0x2c, 0x08, 0xe4, 0x5e, 0xc9, 
+0xe0, 0xe0, 0xe0, 0x51, 0x36, 0x5d, 0x20, 0x5c, 
+0x89, 0xaa, 0x1a, 0x0e, 0xb5, 0x06, 0xfe, 0x1f, 
+0x02, 0x90, 0x18, 0x1c, 0x1c, 0x3c, 0x2a, 0x84, 
+0xc0, 0x9b, 0x2f, 0x07, 0xae, 0x26, 0xa4, 0xe9, 
+0x1a, 0xae, 0xef, 0xe2, 0xfa, 0x1e, 0x9e, 0xef, 
+0x32, 0x3f, 0xbd, 0x88, 0xed, 0xda, 0x5b, 0x6a, 
+0x70, 0xcf, 0x70, 0x2f, 0x8e, 0xed, 0x70, 0xf9, 
+0xfc, 0x24, 0x6f, 0xfc, 0xf0, 0x37, 0xac, 0x2f, 
+0xaf, 0x97, 0x25, 0xd9, 0xbe, 0xf0, 0x00, 0x2c, 
+0x80, 0xee, 0x0b, 0x72, 0xb9, 0xdc, 0x50, 0x2e, 
+0x97, 0xeb, 0x5a, 0x5e, 0x5e, 0x5e, 0xa0, 0x1a, 
+0x00, 0x49, 0x79, 0x7e, 0xb0, 0x95, 0x05, 0x18, 
+0x89, 0x44, 0x22, 0xdb, 0xd3, 0xdd, 0x73, 0x48, 
+0x4a, 0x89, 0x99, 0xb7, 0xf1, 0x9b, 0xf8, 0x3e, 
+0x80, 0x83, 0x83, 0xed, 0x2b, 0x94, 0x6f, 0x53, 
+0x58, 0xb5, 0x58, 0x5d, 0x59, 0x6d, 0xaa, 0x45, 
+0x3d, 0xa5, 0xf3, 0xfc, 0xbf, 0xfe, 0x94, 0xf9, 
+0x2b, 0xc1, 0x04, 0xe7, 0x4e, 0xb4, 0x5e, 0x45, 
+0x1e, 0x68, 0x37, 0x35, 0x54, 0x8f, 0x14, 0xc7, 
+0x8f, 0x1f, 0xff, 0x8b, 0xd7, 0x5e, 0x7b, 0xed, 
+0x43, 0x1a, 0x59, 0x40, 0xb9, 0xad, 0x5d, 0xeb, 
+0xd3, 0x00, 0xe3, 0xc0, 0x81, 0x03, 0x43, 0x4a, 
+0x53, 0xba, 0x57, 0xf0, 0x70, 0x4d, 0xb7, 0x25, 
+0x8d, 0x38, 0x9e, 0x83, 0xe6, 0x29, 0x6c, 0x57, 
+0xb1, 0x92, 0x5f, 0xc1, 0x13, 0xcd, 0x83, 0xd7, 
+0x1f, 0x7e, 0xf5, 0xee, 0xe6, 0x5b, 0xec, 0x12, 
+0xb9, 0x8b, 0x1e, 0x5a, 0xaf, 0xa2, 0xbb, 0xbb, 
+0x7b, 0x1f, 0x9b, 0xc3, 0x60, 0xed, 0x62, 0x6c, 
+0xdd, 0x51, 0xa0, 0xe2, 0x06, 0xed, 0xed, 0xed, 
+0x5d, 0x52, 0x06, 0x11, 0xd8, 0x6b, 0x31, 0xeb, 
+0xf3, 0xf1, 0xb0, 0x7d, 0x89, 0x5b, 0x74, 0x70, 
+0x7c, 0x7b, 0xe7, 0xda, 0xbc, 0x43, 0xf2, 0x4c, 
+0x89, 0x94, 0x92, 0x64, 0x32, 0xd9, 0x46, 0x03, 
+0xe1, 0x01, 0x51, 0x6f, 0x14, 0xa8, 0x2c, 0x7a, 
+0x66, 0x32, 0x99, 0x9c, 0x10, 0x02, 0xaf, 0xe4, 
+0xe1, 0xb6, 0x10, 0xfd, 0x01, 0xf0, 0x41, 0x79, 
+0x0a, 0xd7, 0x71, 0x5b, 0xbf, 0xe6, 0x13, 0x20, 
+0xc7, 0x14, 0x08, 0x21, 0x48, 0x24, 0x12, 0x59, 
+0x22, 0x33, 0x42, 0xaa, 0xf7, 0x23, 0xaa, 0x5c, 
+0x20, 0x6c, 0xc3, 0x4e, 0x2a, 0x9d, 0x4e, 0xb7, 
+0x49, 0x29, 0xf1, 0xac, 0x60, 0xe2, 0xd1, 0x2a, 
+0x59, 0xae, 0xd5, 0xd2, 0x88, 0xf1, 0x49, 0x92, 
+0x63, 0xba, 0x48, 0x29, 0x43, 0x00, 0xaa, 0x86, 
+0xbf, 0x68, 0x3f, 0x8d, 0x6a, 0xe1, 0xab, 0x38, 
+0x9d, 0x4e, 0xb7, 0x09, 0x21, 0xb0, 0x4b, 0xce, 
+0xb6, 0xb4, 0xe9, 0x79, 0x1e, 0x7e, 0x0b, 0x23, 
+0xc6, 0x27, 0x49, 0x9e, 0xe9, 0x21, 0x84, 0x20, 
+0x1e, 0x8f, 0xa7, 0xa8, 0xd6, 0x7c, 0x15, 0x6d, 
+0xb9, 0x31, 0x22, 0x84, 0x40, 0xca, 0xc0, 0x97, 
+0x84, 0xdc, 0x5e, 0x84, 0x6a, 0x5c, 0x16, 0x70, 
+0x67, 0x54, 0x9e, 0xc1, 0xb5, 0xde, 0x5f, 0x06, 
+0xef, 0xde, 0xec, 0x1a, 0x8d, 0x2d, 0xb6, 0xa5, 
+0x8b, 0xc5, 0xe2, 0x8a, 0x10, 0x02, 0x3d, 0xa5, 
+0x21, 0xd5, 0x9f, 0xd1, 0x9e, 0x29, 0xe7, 0x17, 
+0x8e, 0xdb, 0x32, 0x08, 0x5a, 0x52, 0x21, 0x84, 
+0xc0, 0x34, 0xcd, 0x75, 0x6a, 0xf6, 0x10, 0xab, 
+0xfa, 0x95, 0xdb, 0x28, 0x08, 0x61, 0x67, 0xb7, 
+0x02, 0x40, 0x42, 0x47, 0x49, 0xb5, 0x63, 0x21, 
+0x76, 0x42, 0xf1, 0x78, 0x0c, 0xcb, 0xb4, 0x83, 
+0x8c, 0xb2, 0x05, 0xd2, 0x93, 0x46, 0x08, 0xc0, 
+0x2a, 0x91, 0xfd, 0x43, 0x6a, 0x40, 0x88, 0xba, 
+0x40, 0xf8, 0x67, 0x65, 0x97, 0xb6, 0x50, 0x28, 
+0xdc, 0x94, 0x52, 0xa2, 0xa7, 0xfe, 0xbc, 0x00, 
+0x68, 0xba, 0x46, 0x2c, 0x1e, 0xc3, 0x0f, 0xc5, 
+0x68, 0x81, 0x8c, 0xa4, 0x8e, 0x94, 0x12, 0xcb, 
+0xb2, 0x56, 0xa9, 0xde, 0x44, 0xad, 0x02, 0xa2, 
+0x36, 0x06, 0x54, 0xed, 0xd2, 0x2e, 0x2f, 0x2f, 
+0x2f, 0x09, 0x21, 0xd0, 0x92, 0x1a, 0x4a, 0xed, 
+0x3e, 0x00, 0xad, 0xfa, 0x75, 0xb6, 0x23, 0x83, 
+0xef, 0x83, 0x6e, 0x78, 0xc1, 0xfc, 0xa0, 0x05, 
+0xd2, 0x53, 0x3a, 0x42, 0x08, 0x8a, 0xc5, 0xe2, 
+0x0a, 0x9b, 0x2b, 0x42, 0xb5, 0x0b, 0x22, 0x7e, 
+0xd4, 0x05, 0x42, 0x0e, 0xf7, 0xe8, 0xad, 0xa9, 
+0xa9, 0xa9, 0x6b, 0xbe, 0xef, 0xdb, 0x46, 0x56, 
+0xd7, 0xb5, 0xa4, 0x86, 0x57, 0x6a, 0x7d, 0x28, 
+0xdc, 0x52, 0xa0, 0xce, 0x2c, 0x9f, 0x79, 0x62, 
+0x94, 0x5f, 0x3e, 0xff, 0x2b, 0xac, 0xd2, 0xd6, 
+0xcb, 0xdf, 0x89, 0x74, 0x82, 0x64, 0x26, 0x85, 
+0x59, 0x2c, 0xe1, 0xea, 0x0a, 0xc7, 0x56, 0xad, 
+0xad, 0x10, 0xf5, 0xc4, 0x90, 0x52, 0x72, 0xe3, 
+0xc6, 0x8d, 0x8f, 0xb8, 0x7d, 0x3b, 0xbd, 0xae, 
+0x05, 0x44, 0xcd, 0xdf, 0x06, 0xac, 0xb5, 0xb5, 
+0xb5, 0xd5, 0x1b, 0x37, 0x6e, 0x5c, 0xe9, 0xeb, 
+0xeb, 0x1b, 0x4e, 0xf6, 0x25, 0xd8, 0xb8, 0x56, 
+0xba, 0x03, 0x71, 0x37, 0x49, 0xd3, 0x35, 0x46, 
+0xcf, 0x9c, 0x64, 0xe4, 0x91, 0x63, 0xcc, 0x4f, 
+0xcf, 0xe3, 0xda, 0xee, 0x96, 0x96, 0x25, 0xa5, 
+0xa4, 0x67, 0x6f, 0x37, 0x8e, 0xe3, 0xe2, 0xea, 
+0x7a, 0xb9, 0xbf, 0xd3, 0x74, 0x88, 0x15, 0x9a, 
+0x20, 0xde, 0x15, 0xc3, 0xc7, 0xf7, 0x2e, 0x5c, 
+0xb8, 0x30, 0x4e, 0xb0, 0x36, 0x18, 0x5d, 0x17, 
+0xac, 0xdc, 0x40, 0xf3, 0x7d, 0x3f, 0x2c, 0x33, 
+0x09, 0x01, 0x08, 0x8b, 0x14, 0x4a, 0xc0, 0xc6, 
+0xf4, 0xf4, 0xf4, 0x3b, 0x03, 0x03, 0x03, 0xc3, 
+0x89, 0x3d, 0x71, 0xac, 0x59, 0xfb, 0x8e, 0x85, 
+0xbf, 0x7b, 0xf4, 0x30, 0x7f, 0xf9, 0x77, 0xa7, 
+0x49, 0x64, 0x93, 0xd8, 0x25, 0x9b, 0xf9, 0xe9, 
+0x85, 0xa6, 0x71, 0xa5, 0x77, 0x5f, 0x0f, 0xf1, 
+0x44, 0x9c, 0x52, 0xb1, 0x84, 0xab, 0x14, 0xb6, 
+0x50, 0x48, 0x64, 0xd3, 0x04, 0x2b, 0xd6, 0x6b, 
+0x20, 0x95, 0x64, 0x71, 0x71, 0x71, 0x66, 0x71, 
+0x71, 0x71, 0xb1, 0x0e, 0x00, 0x15, 0x10, 0x1a, 
+0x59, 0x80, 0x55, 0xbe, 0xa8, 0x78, 0xf1, 0xe2, 
+0xc5, 0xdf, 0x9f, 0x3a, 0x75, 0xea, 0x8b, 0xb1, 
+0x2e, 0x43, 0x6a, 0x86, 0xc2, 0x77, 0xb6, 0x97, 
+0xe0, 0x74, 0xf4, 0x75, 0xf0, 0xc4, 0xd7, 0xce, 
+0x70, 0xe0, 0xd8, 0x01, 0x5c, 0xc7, 0xc1, 0x2e, 
+0xd9, 0x78, 0xae, 0xc7, 0xf5, 0x0f, 0xaf, 0xa3, 
+0x64, 0x7d, 0x49, 0x84, 0x10, 0xf4, 0x1d, 0xea, 
+0x23, 0xdb, 0x99, 0xa1, 0x54, 0x34, 0x51, 0x4a, 
+0xa1, 0x94, 0xc2, 0xb5, 0x9c, 0x86, 0xd7, 0x44, 
+0x29, 0xb1, 0x27, 0x86, 0x10, 0x82, 0xab, 0x57, 
+0xaf, 0xbe, 0x43, 0xb0, 0x28, 0xda, 0xd8, 0x02, 
+0x6a, 0x00, 0x08, 0x63, 0x80, 0x4d, 0xb0, 0x7c, 
+0x54, 0xcc, 0xe7, 0xf3, 0xf9, 0x9b, 0x37, 0x6f, 
+0x5e, 0xed, 0xee, 0xee, 0x3e, 0x98, 0xda, 0x9f, 
+0x64, 0x63, 0xba, 0x75, 0x37, 0xf8, 0xcc, 0x5f, 
+0xdf, 0xcf, 0xa3, 0x5f, 0x39, 0x4d, 0x2c, 0x19, 
+0x03, 0xc0, 0x36, 0xc1, 0x73, 0x3d, 0xa4, 0x25, 
+0xb0, 0x4d, 0x1b, 0x4d, 0xd3, 0xaa, 0x82, 0xa0, 
+0xd2, 0x14, 0x9d, 0x03, 0x9d, 0x74, 0xed, 0xed, 
+0x42, 0x37, 0x34, 0xcc, 0xa2, 0x89, 0xa6, 0x14, 
+0x8e, 0x52, 0x94, 0xd6, 0x4a, 0xc1, 0x3c, 0xa3, 
+0x49, 0x30, 0x96, 0x09, 0x49, 0x6c, 0x4f, 0x0c, 
+0x04, 0xfe, 0x9b, 0x6f, 0xbe, 0x79, 0x81, 0xa0, 
+0x90, 0x22, 0x2c, 0xa2, 0xa8, 0x1a, 0x0e, 0x7d, 
+0xdf, 0xf7, 0xeb, 0x8d, 0x02, 0x21, 0x00, 0x25, 
+0x82, 0x65, 0xe5, 0xc2, 0xf9, 0xf3, 0xe7, 0x7f, 
+0xfe, 0x85, 0x2f, 0x7c, 0xe1, 0x1b, 0x89, 0x83, 
+0x71, 0xac, 0xeb, 0x0e, 0xbe, 0xd5, 0x9a, 0x15, 
+0xd8, 0xa6, 0x83, 0x66, 0x68, 0x68, 0xba, 0x06, 
+0x02, 0x3c, 0xc7, 0x43, 0x4a, 0x89, 0xd2, 0x34, 
+0xbe, 0xfc, 0xcf, 0x5f, 0xa2, 0x58, 0xd8, 0x60, 
+0x71, 0x76, 0x11, 0x73, 0xc3, 0x02, 0xdf, 0x07, 
+0x21, 0x70, 0x4c, 0x9b, 0x52, 0xd1, 0xc4, 0xdc, 
+0x30, 0x91, 0x52, 0x21, 0x95, 0xa2, 0xb8, 0xb2, 
+0x81, 0x5d, 0x72, 0x90, 0x2d, 0x0c, 0xc5, 0xa9, 
+0xc3, 0x09, 0xa4, 0x92, 0x5c, 0xbd, 0x7a, 0xf5, 
+0xd2, 0xf4, 0xf4, 0xf4, 0x47, 0x6c, 0xd6, 0x0d, 
+0xd4, 0xb5, 0x00, 0x09, 0x95, 0xbd, 0xf3, 0x68, 
+0x1e, 0xe0, 0x50, 0xb6, 0x00, 0x60, 0xf5, 0x8d, 
+0x37, 0xde, 0x18, 0xcf, 0xe7, 0xf3, 0x1f, 0x2a, 
+0x43, 0x91, 0xba, 0x2b, 0x51, 0x31, 0xc9, 0x66, 
+0xfc, 0xde, 0xb9, 0xf7, 0x58, 0x9c, 0x5d, 0xc2, 
+0xf7, 0x7d, 0x7c, 0x9f, 0x72, 0x26, 0x2e, 0xca, 
+0x8d, 0x40, 0xd3, 0x35, 0x72, 0x7b, 0x72, 0x74, 
+0xf4, 0xe6, 0x48, 0x66, 0x53, 0x68, 0x9a, 0x42, 
+0x48, 0x89, 0x52, 0x41, 0xfa, 0x8d, 0x0f, 0x4b, 
+0xb3, 0x4b, 0x14, 0x57, 0x8a, 0x2d, 0x3d, 0xcf, 
+0xc8, 0x19, 0xc4, 0xfb, 0x63, 0x00, 0xee, 0x2b, 
+0xaf, 0xbc, 0xf2, 0x02, 0xc1, 0x06, 0xe9, 0x5a, 
+0x59, 0x99, 0xd1, 0x12, 0x1a, 0xaa, 0x00, 0x88, 
+0x50, 0x14, 0x00, 0xab, 0x8c, 0xdc, 0x1a, 0x70, 
+0x6b, 0x6c, 0x6c, 0xec, 0x3f, 0x01, 0x3f, 0x3e, 
+0x18, 0x43, 0x4f, 0x07, 0x89, 0x51, 0x33, 0x16, 
+0x48, 0x5e, 0x7f, 0xee, 0x1c, 0x8e, 0xe5, 0xe0, 
+0x94, 0xb3, 0x38, 0xdf, 0xf3, 0xf0, 0x3d, 0x3f, 
+0x32, 0x03, 0x0b, 0x3e, 0x49, 0x21, 0x10, 0x42, 
+0x22, 0x10, 0xf8, 0x2e, 0xac, 0x2c, 0xac, 0x32, 
+0xfb, 0xfe, 0x1c, 0xa5, 0x82, 0xd9, 0xd2, 0xb3, 
+0x94, 0x54, 0x24, 0x0f, 0xc7, 0x11, 0x42, 0x30, 
+0x39, 0x39, 0xf9, 0xdb, 0xa9, 0xa9, 0xa9, 0x29, 
+0xaa, 0xb7, 0xc9, 0xab, 0x36, 0x46, 0x6e, 0xdb, 
+0x19, 0x8a, 0x8c, 0x06, 0xd1, 0x40, 0x58, 0x01, 
+0xe0, 0xed, 0xb7, 0xdf, 0x7e, 0xf7, 0xf4, 0xe9, 
+0xd3, 0x97, 0xf6, 0xef, 0xdf, 0x7f, 0x3c, 0x7d, 
+0x2c, 0x41, 0xf1, 0xcd, 0x8d, 0x20, 0x33, 0x6b, 
+0x42, 0x33, 0xef, 0x5d, 0xe3, 0xc3, 0xf1, 0x2b, 
+0xec, 0x3b, 0xba, 0x0f, 0xcf, 0x71, 0x59, 0xbf, 
+0xb5, 0xce, 0xd8, 0xbf, 0xff, 0x82, 0x4c, 0x67, 
+0x9a, 0x54, 0x5b, 0x8a, 0x44, 0x36, 0x81, 0xe7, 
+0x78, 0xac, 0xdd, 0x5a, 0xa3, 0x78, 0xab, 0x48, 
+0x61, 0x79, 0x8d, 0xa5, 0xd9, 0xa5, 0x4a, 0xca, 
+0xab, 0x5a, 0x9c, 0x83, 0x18, 0xfb, 0x74, 0x8c, 
+0x4e, 0x1d, 0xcb, 0xb2, 0x4a, 0x2f, 0xbc, 0xf0, 
+0xc2, 0x0b, 0xd4, 0x2f, 0x96, 0xb8, 0x6d, 0x3e, 
+0x50, 0x6f, 0x36, 0x58, 0xeb, 0x06, 0xeb, 0x04, 
+0x48, 0xde, 0x3c, 0x7b, 0xf6, 0xec, 0xf7, 0xbf, 
+0xf9, 0xcd, 0x6f, 0x0e, 0xa6, 0xb3, 0xe9, 0xce, 
+0xc4, 0x3d, 0x09, 0x4a, 0xef, 0x6d, 0x9d, 0xc4, 
+0x84, 0xf4, 0xc6, 0x4f, 0x7e, 0x43, 0xdf, 0x5d, 
+0x7d, 0xe0, 0xfb, 0xcc, 0xbc, 0x3f, 0xc7, 0xfc, 
+0x95, 0x85, 0xcd, 0xf5, 0xbf, 0x06, 0xd4, 0x8a, 
+0xbf, 0x57, 0x84, 0xe8, 0x54, 0xc4, 0x0f, 0x19, 
+0xf8, 0xf8, 0xfe, 0xd8, 0xd8, 0xd8, 0x73, 0xf9, 
+0x7c, 0xfe, 0x1a, 0x70, 0x8b, 0x00, 0x80, 0x0d, 
+0x1a, 0x68, 0x1f, 0xea, 0x8f, 0xa8, 0xb5, 0xc3, 
+0xe1, 0x46, 0xf9, 0x46, 0xcb, 0x8b, 0x8b, 0x8b, 
+0x33, 0xcf, 0x3d, 0xf7, 0xdc, 0xbf, 0xb9, 0xae, 
+0x6b, 0x1a, 0x7b, 0x74, 0xe2, 0x07, 0x62, 0x2d, 
+0x99, 0xe6, 0xea, 0xc2, 0x2a, 0x13, 0xe7, 0x26, 
+0x70, 0x2c, 0x87, 0x8f, 0x2f, 0x5f, 0x6f, 0xd9, 
+0xa4, 0x5b, 0x61, 0x3d, 0xad, 0x91, 0xf8, 0x74, 
+0x0c, 0xa9, 0x24, 0xe3, 0xe3, 0xe3, 0xff, 0x3d, 
+0x36, 0x36, 0x76, 0x8e, 0x2d, 0xaa, 0x44, 0x6e, 
+0x03, 0xba, 0x4a, 0xf2, 0x4d, 0x64, 0xa2, 0x29, 
+0x71, 0x38, 0x1a, 0xac, 0x00, 0x4b, 0x13, 0x13, 
+0x13, 0xef, 0xbd, 0xfc, 0xf2, 0xcb, 0xdf, 0x07, 
+0xfc, 0xd8, 0x21, 0x9d, 0xd8, 0x3e, 0xa3, 0xa5, 
+0x00, 0x75, 0x69, 0xec, 0x0f, 0x6c, 0x14, 0x4a, 
+0xe4, 0xa7, 0xf2, 0x2d, 0x07, 0xd1, 0x66, 0xac, 
+0xb7, 0x69, 0x24, 0x4e, 0xc4, 0x90, 0x7a, 0x10, 
+0xf5, 0x7f, 0xf0, 0x83, 0x1f, 0x3c, 0x4f, 0x50, 
+0x26, 0x13, 0x9a, 0xff, 0x96, 0xda, 0x87, 0x3a, 
+0x2e, 0x50, 0x13, 0x0b, 0xc2, 0x6d, 0xa4, 0x0d, 
+0x36, 0x57, 0x8b, 0xd5, 0xab, 0xaf, 0xbe, 0x7a, 
+0xae, 0xbb, 0xbb, 0xbb, 0xeb, 0xd4, 0xa9, 0x53, 
+0x4f, 0x19, 0x77, 0x69, 0x42, 0x65, 0x24, 0xce, 
+0xa4, 0xbb, 0xe5, 0x4c, 0xcd, 0xd9, 0xb0, 0xb9, 
+0xf0, 0xd3, 0x0b, 0x98, 0x85, 0x52, 0x4b, 0xc9, 
+0x4c, 0x33, 0x92, 0x5d, 0x12, 0xed, 0x6e, 0x89, 
+0x50, 0x82, 0x7c, 0x3e, 0x3f, 0xfd, 0x9d, 0xef, 
+0x7c, 0xe7, 0xbb, 0xdc, 0x5e, 0x1e, 0x13, 0x2d, 
+0x94, 0xaa, 0x5b, 0x22, 0xb3, 0xa3, 0x22, 0xa9, 
+0x27, 0x9f, 0x7c, 0xf2, 0xb1, 0x33, 0x67, 0xce, 
+0x7c, 0x45, 0xd7, 0x75, 0xc3, 0x2f, 0xf8, 0x38, 
+0x13, 0x2e, 0x7e, 0x6b, 0x61, 0x61, 0x47, 0xa4, 
+0xf6, 0x49, 0xd4, 0x50, 0x00, 0xe2, 0xe4, 0xe4, 
+0xe4, 0xf8, 0xb7, 0xbf, 0xfd, 0xed, 0xef, 0x99, 
+0xa6, 0xb9, 0x7b, 0x45, 0x52, 0xd0, 0x7a, 0x99, 
+0xdc, 0x89, 0x13, 0x27, 0x8e, 0x3d, 0xf3, 0xcc, 
+0x33, 0x5f, 0x4f, 0xa5, 0x52, 0xed, 0xb8, 0xe0, 
+0xcd, 0xfa, 0x78, 0x73, 0x7e, 0xcb, 0xf3, 0xf6, 
+0xed, 0x90, 0xc8, 0x09, 0xe4, 0x7e, 0x81, 0x48, 
+0x81, 0xef, 0xfb, 0xde, 0xaf, 0x7f, 0xfd, 0xeb, 
+0x97, 0xce, 0x9e, 0x3d, 0xbb, 0xfb, 0x65, 0x72, 
+0x95, 0x3f, 0x5b, 0x2c, 0x94, 0xdc, 0xb3, 0x67, 
+0xcf, 0xbe, 0x67, 0x9f, 0x7d, 0xf6, 0xef, 0xf7, 
+0xee, 0xdd, 0x3b, 0x0c, 0x80, 0x05, 0xde, 0x35, 
+0x1f, 0x6f, 0x81, 0x3a, 0x61, 0xe7, 0x0e, 0x04, 
+0x4f, 0x13, 0x08, 0xde, 0x1e, 0x7c, 0x2f, 0x16, 
+0x8b, 0x2b, 0x3f, 0xfb, 0xd9, 0xcf, 0x7e, 0xf8, 
+0xea, 0xab, 0xaf, 0xfe, 0x86, 0xa0, 0x48, 0x72, 
+0x89, 0x20, 0xea, 0x87, 0xf5, 0xc3, 0x3b, 0x2f, 
+0x94, 0xac, 0x74, 0x68, 0x5c, 0x2a, 0x9b, 0x24, 
+0xd8, 0x7f, 0xaf, 0x94, 0xca, 0x9e, 0x3e, 0x7d, 
+0xfa, 0xe4, 0x99, 0x33, 0x67, 0x9e, 0xea, 0xec, 
+0xec, 0x1c, 0x00, 0xc0, 0x06, 0xff, 0x66, 0xf0, 
+0x7a, 0xfe, 0x0a, 0xdb, 0x03, 0x23, 0x09, 0xa2, 
+0x23, 0x60, 0xd2, 0xc1, 0x4f, 0x96, 0x65, 0x95, 
+0xc6, 0xc7, 0xc7, 0x7f, 0xf1, 0xe3, 0x1f, 0xff, 
+0xf8, 0x95, 0x62, 0xb1, 0x18, 0x96, 0xca, 0xde, 
+0xa2, 0x3a, 0xe3, 0xdb, 0xbd, 0x52, 0xd9, 0x06, 
+0x20, 0x34, 0x2a, 0x96, 0x6e, 0x23, 0x70, 0x8d, 
+0xdc, 0xd3, 0x4f, 0x3f, 0xfd, 0xd0, 0x43, 0x0f, 
+0x3d, 0xf4, 0x64, 0x36, 0x9b, 0xad, 0x14, 0x4b, 
+0xe3, 0x96, 0x5f, 0xd5, 0x04, 0xdf, 0x12, 0x9b, 
+0x27, 0x02, 0x3c, 0x2a, 0xa7, 0x08, 0x44, 0xcc, 
+0x0f, 0x3e, 0x67, 0x09, 0x20, 0x2e, 0x93, 0xe3, 
+0x38, 0xd6, 0xc4, 0xc4, 0xc4, 0x6f, 0x7f, 0xf4, 
+0xa3, 0x1f, 0xfd, 0x57, 0x3e, 0x9f, 0xbf, 0x5e, 
+0xbe, 0xd3, 0x4a, 0x99, 0xa3, 0x5a, 0xdf, 0xfd, 
+0x62, 0xe9, 0x2d, 0x40, 0x88, 0x1e, 0x90, 0x08, 
+0xcf, 0x08, 0xa4, 0xcb, 0xaf, 0x9f, 0x05, 0x32, 
+0xf7, 0xdf, 0x7f, 0xff, 0xdd, 0xa3, 0xa3, 0xa3, 
+0x27, 0x0f, 0x1e, 0x3c, 0x78, 0x6f, 0x2e, 0x97, 
+0xdb, 0x56, 0xb9, 0xbc, 0x69, 0x9a, 0xc5, 0x8f, 
+0x3e, 0xfa, 0xe8, 0x8f, 0xef, 0xbe, 0xfb, 0xee, 
+0x5b, 0xaf, 0xbf, 0xfe, 0xfa, 0x5b, 0x6b, 0x6b, 
+0x6b, 0x61, 0x70, 0x0b, 0xb5, 0xfd, 0xa7, 0x2b, 
+0x97, 0xaf, 0x74, 0xde, 0xfa, 0xc0, 0x44, 0x68, 
+0x11, 0x75, 0x0f, 0x4c, 0x0c, 0x0f, 0x0f, 0x0f, 
+0x9c, 0x38, 0x71, 0x62, 0x38, 0x9b, 0xcd, 0xe6, 
+0x32, 0x99, 0x4c, 0x5b, 0x32, 0x99, 0xcc, 0xa6, 
+0x52, 0xa9, 0x8c, 0xa6, 0x69, 0x5a, 0xb1, 0x58, 
+0x5c, 0x5b, 0x5b, 0x5b, 0x5b, 0x5d, 0x5f, 0x5f, 
+0x5f, 0x2d, 0x14, 0x0a, 0xcb, 0xb3, 0xb3, 0xb3, 
+0x73, 0xe7, 0xce, 0x9d, 0x7b, 0xdf, 0xb6, 0xed, 
+0xad, 0x0e, 0x4c, 0x44, 0x05, 0xaf, 0x3a, 0x39, 
+0xd2, 0xaa, 0xf0, 0xdb, 0x06, 0x20, 0x02, 0x02, 
+0xdc, 0xf9, 0x91, 0x99, 0xe8, 0x46, 0x65, 0x98, 
+0x10, 0x84, 0x89, 0x57, 0x65, 0x39, 0x8e, 0xcd, 
+0xe3, 0x32, 0xb5, 0xdc, 0xf0, 0xc8, 0x0c, 0x5b, 
+0x44, 0xfb, 0x86, 0xf2, 0xfc, 0x99, 0x0e, 0x4d, 
+0x45, 0x4f, 0x8e, 0x41, 0x75, 0xfa, 0x1d, 0x82, 
+0xf0, 0x27, 0x39, 0x34, 0xb5, 0xa3, 0x83, 0x93, 
+0x3b, 0x38, 0x36, 0x57, 0xbb, 0x57, 0x57, 0xbb, 
+0x27, 0x11, 0x72, 0xd3, 0x63, 0x73, 0xec, 0x40, 
+0x78, 0xd8, 0x21, 0x00, 0x50, 0x05, 0x02, 0x54, 
+0x5b, 0x44, 0x74, 0xa7, 0xb9, 0x95, 0x83, 0x93, 
+0xb5, 0x8b, 0x32, 0x5b, 0x1e, 0x9c, 0x64, 0x87, 
+0x82, 0x57, 0x5e, 0xf8, 0xff, 0xfb, 0xd1, 0xd9, 
+0x5d, 0x03, 0xa0, 0xea, 0xa6, 0xbb, 0x78, 0x78, 
+0x3a, 0xd2, 0x06, 0x5f, 0xfe, 0xb7, 0x1e, 0x9e, 
+0xfe, 0xbf, 0x4a, 0xff, 0x03, 0x3b, 0x14, 0xaf, 
+0x44, 0x79, 0x6c, 0x56, 0x23, 0x00, 0x00, 0x00, 
+0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
+0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity2.png b/source/bitmaps/misc/activity2.png
new file mode 100644 (file)
index 0000000..bd83e8a
Binary files /dev/null and b/source/bitmaps/misc/activity2.png differ
diff --git a/source/bitmaps/misc/activity3.cpp b/source/bitmaps/misc/activity3.cpp
new file mode 100644 (file)
index 0000000..d2eec90
--- /dev/null
@@ -0,0 +1,541 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY3_CPP
+#define MISC_ACTIVITY3_CPP
+
+static unsigned char misc_activity3_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x14, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xdf, 
+0x73, 0x1c, 0x55, 0x76, 0xc7, 0x3f, 0xf7, 0xf6, 
+0x8f, 0xf9, 0x3d, 0xd2, 0xe8, 0xb7, 0x2c, 0x8f, 
+0x24, 0x6c, 0xd6, 0xc8, 0x80, 0x2d, 0x7b, 0x6d, 
+0x63, 0x7e, 0x18, 0x30, 0x81, 0xaa, 0xf5, 0xf2, 
+0x10, 0x13, 0xb2, 0x4f, 0x5b, 0xd4, 0x3e, 0xec, 
+0x12, 0x92, 0xec, 0x1b, 0xff, 0x45, 0x2a, 0x29, 
+0x9e, 0x52, 0x14, 0xd9, 0xaa, 0xcd, 0x4b, 0x62, 
+0x02, 0x0f, 0xa9, 0x5a, 0x17, 0xe0, 0x22, 0x89, 
+0xbc, 0x0b, 0xc5, 0x42, 0x0c, 0x18, 0x19, 0x4c, 
+0x8c, 0x7f, 0xc9, 0xd6, 0x0f, 0x4b, 0xb2, 0x2d, 
+0x69, 0xf4, 0xc3, 0x33, 0xd2, 0xcc, 0x74, 0xcf, 
+0x74, 0x77, 0x1e, 0x7a, 0x7a, 0xd4, 0x33, 0x9a, 
+0x91, 0x46, 0xb6, 0x0c, 0xd9, 0xca, 0x51, 0x9d, 
+0x6a, 0xcd, 0x4c, 0xcf, 0xf4, 0x3d, 0xdf, 0xfb, 
+0xbd, 0xe7, 0xdc, 0x7b, 0xee, 0xb9, 0xc2, 0x71, 
+0x1c, 0xee, 0xa7, 0x08, 0x21, 0x44, 0xbd, 0x8f, 
+0x6a, 0xbc, 0xb7, 0xa6, 0x31, 0xce, 0x7d, 0x6e, 
+0xa0, 0x7a, 0x3f, 0x7e, 0xb4, 0xca, 0x68, 0x51, 
+0xe7, 0x5a, 0x4f, 0x1c, 0xff, 0xb5, 0x1a, 0xbf, 
+0xad, 0x06, 0x44, 0x6c, 0xd5, 0xef, 0xd5, 0x30, 
+0x5a, 0x54, 0xfd, 0x2f, 0x6b, 0xbc, 0xe7, 0x17, 
+0xbf, 0xe1, 0xeb, 0xa9, 0x7b, 0xd3, 0x16, 0x35, 
+0xfc, 0x9e, 0x19, 0x50, 0xc7, 0x70, 0xe9, 0xbb, 
+0xd6, 0x52, 0x41, 0x25, 0x08, 0x9e, 0x31, 0x76, 
+0xe9, 0x7f, 0xbb, 0x8e, 0x96, 0x81, 0xf0, 0x1e, 
+0x7b, 0xaf, 0x40, 0xdc, 0x13, 0x00, 0x3e, 0xe3, 
+0xab, 0x8d, 0x56, 0x7c, 0xaa, 0x96, 0x54, 0xa9, 
+0xd2, 0x6a, 0x16, 0xf8, 0x0d, 0x2d, 0x02, 0x56, 
+0x8d, 0xab, 0x45, 0x15, 0x18, 0xf7, 0x0a, 0xc4, 
+0x5d, 0x0d, 0x81, 0x2a, 0xc3, 0xab, 0x8d, 0x56, 
+0x01, 0xcd, 0xa7, 0x7a, 0x49, 0xbd, 0xd7, 0x1e, 
+0x20, 0x7e, 0x26, 0x78, 0xbd, 0xee, 0x19, 0x5b, 
+0x28, 0xa9, 0x59, 0x75, 0xf5, 0xb4, 0x16, 0x18, 
+0x77, 0x05, 0xc2, 0xa6, 0x19, 0xe0, 0x33, 0xde, 
+0x33, 0xc0, 0xdf, 0xcb, 0x3a, 0x10, 0x28, 0x69, 
+0xb0, 0xa4, 0x21, 0xdf, 0x6b, 0x0f, 0x0c, 0x8f, 
+0x11, 0x1e, 0x00, 0xfe, 0x9e, 0xf7, 0x0c, 0x36, 
+0x4a, 0x9a, 0x07, 0x72, 0xa5, 0x6b, 0xbe, 0xf4, 
+0x9e, 0x07, 0x88, 0xc7, 0x0c, 0x9b, 0x12, 0x1b, 
+0x36, 0x0b, 0xc2, 0xa6, 0x00, 0x28, 0x19, 0xef, 
+0xa9, 0xd7, 0xe3, 0x5e, 0x2f, 0x7b, 0x06, 0x87, 
+0x81, 0x88, 0x4f, 0xc3, 0x40, 0xb8, 0xa3, 0xa3, 
+0xa3, 0xa7, 0xa7, 0xa7, 0x67, 0x20, 0x18, 0x0c, 
+0xb6, 0x04, 0x83, 0xc1, 0x66, 0x5d, 0xd7, 0xe3, 
+0xba, 0xae, 0xc7, 0xa5, 0x94, 0x9a, 0x69, 0x9a, 
+0x19, 0xd3, 0x34, 0xd3, 0x86, 0x61, 0x2c, 0x19, 
+0x86, 0xb1, 0xb8, 0xb4, 0xb4, 0x34, 0x75, 0xfd, 
+0xfa, 0xf5, 0x4b, 0xb6, 0x6d, 0xaf, 0x00, 0x59, 
+0x60, 0xc5, 0xa7, 0x59, 0x1f, 0x20, 0x46, 0x35, 
+0x10, 0x9b, 0x1d, 0x12, 0x0d, 0x0f, 0x01, 0x9f, 
+0xf1, 0x1e, 0xdd, 0xbd, 0x1e, 0xf7, 0x7a, 0x39, 
+0x02, 0xc4, 0x4a, 0x1a, 0x07, 0x62, 0xbd, 0xbd, 
+0xbd, 0x0f, 0x25, 0x93, 0xc9, 0x83, 0x6d, 0x6d, 
+0x6d, 0x8f, 0x84, 0xc3, 0xe1, 0xce, 0x86, 0x1e, 
+0x54, 0x92, 0x62, 0xb1, 0x98, 0x5d, 0x5c, 0x5c, 
+0xbc, 0x72, 0xfb, 0xf6, 0xed, 0xaf, 0x47, 0x46, 
+0x46, 0xbe, 0x31, 0x0c, 0x63, 0x1e, 0x48, 0x03, 
+0x99, 0x92, 0x2e, 0xb3, 0x0a, 0x86, 0xc7, 0x08, 
+0xff, 0xb0, 0x68, 0x08, 0x84, 0x86, 0x00, 0xa8, 
+0x61, 0xbc, 0x86, 0x4b, 0xeb, 0x10, 0x10, 0x2d, 
+0x19, 0xdd, 0x0c, 0x34, 0x01, 0x2d, 0xfb, 0xf6, 
+0xed, 0x7b, 0x66, 0xe7, 0xce, 0x9d, 0xc7, 0x82, 
+0xc1, 0x60, 0xab, 0xf7, 0x1b, 0x4a, 0x41, 0x25, 
+0x31, 0xdb, 0x42, 0x70, 0x39, 0x84, 0x9e, 0xd7, 
+0xd1, 0x0c, 0x1d, 0x3d, 0x1f, 0x40, 0x5a, 0x92, 
+0x42, 0xd0, 0xc4, 0x0c, 0x98, 0x98, 0x41, 0x03, 
+0x33, 0x64, 0xb0, 0xd4, 0xb1, 0x48, 0x3e, 0x92, 
+0x2b, 0x3f, 0xdf, 0xb6, 0xed, 0xc2, 0xad, 0x5b, 
+0xb7, 0x3e, 0x1f, 0x1e, 0x1e, 0x7e, 0x3f, 0x93, 
+0xc9, 0xdc, 0x04, 0x16, 0x81, 0x3b, 0x3e, 0x40, 
+0xb2, 0xac, 0x0e, 0x8d, 0xe2, 0x66, 0x40, 0xd8, 
+0x10, 0x80, 0x2a, 0xe3, 0x3d, 0x07, 0x17, 0x64, 
+0xb5, 0xc7, 0x9b, 0x80, 0x16, 0xa0, 0x65, 0x60, 
+0x60, 0xe0, 0xf1, 0xdd, 0xbb, 0x77, 0xff, 0x79, 
+0x24, 0x12, 0xe9, 0x06, 0xd0, 0xf2, 0x3a, 0x89, 
+0xdb, 0x2d, 0x24, 0x6e, 0xb6, 0x11, 0x4f, 0x35, 
+0x21, 0xec, 0x8d, 0xe6, 0x40, 0xab, 0x92, 0x8b, 
+0x65, 0x59, 0xdc, 0x36, 0xcf, 0x62, 0xf7, 0x3c, 
+0x2b, 0xcd, 0xcb, 0x00, 0x58, 0x96, 0x65, 0x4c, 
+0x4e, 0x4e, 0x7e, 0x74, 0xf6, 0xec, 0xd9, 0x53, 
+0x86, 0x61, 0xcc, 0x00, 0x0b, 0x25, 0x30, 0xd2, 
+0xb8, 0xc3, 0x23, 0x57, 0x02, 0xa2, 0x61, 0x10, 
+0xd6, 0x05, 0xa0, 0x8e, 0xf1, 0x1e, 0xdd, 0x9b, 
+0x80, 0x04, 0xd0, 0xd6, 0xd4, 0xd4, 0xd4, 0xff, 
+0xec, 0xb3, 0xcf, 0xbe, 0xda, 0xdc, 0xdc, 0xbc, 
+0xcb, 0x35, 0x5c, 0xa3, 0xfb, 0xd2, 0x76, 0x5a, 
+0x6f, 0xb4, 0x23, 0x9c, 0xc6, 0x8d, 0xae, 0x27, 
+0xd9, 0xa6, 0x15, 0xa6, 0x1f, 0xbd, 0x41, 0xa6, 
+0x3d, 0x0d, 0x40, 0xa1, 0x50, 0xc8, 0x9c, 0x3f, 
+0x7f, 0xfe, 0xc4, 0xc5, 0x8b, 0x17, 0xcf, 0x00, 
+0x29, 0x60, 0x1e, 0x97, 0x11, 0x7e, 0x36, 0x34, 
+0x04, 0x42, 0x5d, 0x00, 0x6a, 0xd0, 0x5e, 0x67, 
+0x95, 0xf2, 0xcd, 0x40, 0x2b, 0xd0, 0xde, 0xdb, 
+0xdb, 0x3b, 0xf8, 0xc4, 0x13, 0x4f, 0xbc, 0x16, 
+0x0c, 0x06, 0x9b, 0x65, 0x51, 0xd2, 0x3e, 0xd2, 
+0x4d, 0xfb, 0xb5, 0x4e, 0xa4, 0x25, 0xef, 0xd9, 
+0xf0, 0x6a, 0xc9, 0x74, 0xde, 0xe1, 0xd6, 0x23, 
+0x53, 0xe4, 0xe3, 0x39, 0x00, 0xfb, 0xea, 0xd5, 
+0xab, 0xa7, 0xce, 0x9c, 0x39, 0x73, 0x12, 0x98, 
+0xc5, 0x05, 0x62, 0x91, 0xb5, 0x20, 0x58, 0xb8, 
+0xf6, 0x37, 0x0e, 0x40, 0x55, 0xa8, 0xab, 0x65, 
+0x7c, 0x3b, 0xd0, 0x31, 0x38, 0x38, 0xf8, 0xfc, 
+0xe0, 0xe0, 0xe0, 0xcf, 0x15, 0x45, 0xd1, 0x43, 
+0x8b, 0x61, 0x92, 0x5f, 0xf4, 0xa3, 0xe6, 0xb5, 
+0xad, 0xb3, 0xb8, 0x66, 0x8b, 0x61, 0x6e, 0xe0, 
+0x36, 0x73, 0x0f, 0xcd, 0x00, 0x30, 0x33, 0x33, 
+0x33, 0x3c, 0x34, 0x34, 0xf4, 0xdb, 0x42, 0xa1, 
+0x70, 0x13, 0x98, 0xc3, 0x1d, 0x16, 0x69, 0xd6, 
+0x32, 0xa1, 0x26, 0x08, 0xeb, 0x01, 0xe0, 0x85, 
+0x3a, 0x8f, 0xf6, 0x51, 0x4a, 0x94, 0x07, 0xba, 
+0x9e, 0x7a, 0xea, 0xa9, 0x97, 0x77, 0xed, 0xda, 
+0xf5, 0x92, 0x10, 0x42, 0xc4, 0x27, 0x9b, 0xe9, 
+0xfc, 0x7a, 0xdb, 0xa6, 0xc6, 0xf8, 0xbd, 0x4a, 
+0x66, 0x5b, 0x9a, 0xdb, 0x07, 0xa6, 0x71, 0x14, 
+0x9b, 0x74, 0x3a, 0x3d, 0xf6, 0xfe, 0xfb, 0xef, 
+0xff, 0x83, 0x61, 0x18, 0x53, 0xb8, 0x6c, 0xf0, 
+0x83, 0x50, 0x76, 0x8c, 0x0d, 0x01, 0x50, 0x45, 
+0x7d, 0xcf, 0xdb, 0xfb, 0x7b, 0xbe, 0x6b, 0xcf, 
+0x9e, 0x3d, 0xcf, 0x1d, 0x3e, 0x7c, 0xf8, 0x55, 
+0x40, 0xb4, 0x5e, 0x68, 0xa7, 0xe9, 0x5a, 0xcb, 
+0x7d, 0x33, 0x14, 0x40, 0x28, 0x02, 0xc7, 0x5a, 
+0xdb, 0x51, 0x66, 0x93, 0xc1, 0xed, 0xc7, 0xa7, 
+0x28, 0x86, 0x8a, 0xcc, 0xce, 0xce, 0x9e, 0x7f, 
+0xef, 0xbd, 0xf7, 0xfe, 0x11, 0xb8, 0xc9, 0x2a, 
+0x08, 0x19, 0x5c, 0xc7, 0x58, 0x0e, 0x91, 0xd5, 
+0x20, 0x54, 0x0c, 0xd4, 0xaa, 0x29, 0xae, 0x17, 
+0xeb, 0x3d, 0x8f, 0xdf, 0x04, 0xb4, 0x26, 0x93, 
+0xc9, 0x47, 0x0e, 0x1d, 0x3a, 0xf4, 0x0b, 0x21, 
+0x84, 0x48, 0x5c, 0x6e, 0x25, 0x7a, 0xbd, 0x09, 
+0x4b, 0x58, 0xf7, 0x4d, 0x9b, 0x76, 0xc6, 0xe9, 
+0xff, 0xb3, 0xbe, 0x9a, 0x9f, 0x29, 0x69, 0x95, 
+0x8e, 0x33, 0xdb, 0x90, 0x96, 0x42, 0x67, 0x67, 
+0xe7, 0xe0, 0xd1, 0xa3, 0x47, 0x7f, 0x86, 0xdb, 
+0x49, 0x09, 0xdc, 0x08, 0x15, 0xc2, 0x1d, 0xbe, 
+0xe5, 0x59, 0x67, 0x75, 0x7e, 0xa2, 0x96, 0xa7, 
+0xaa, 0xe5, 0xf8, 0x62, 0x40, 0x22, 0x1e, 0x8f, 
+0x27, 0x9f, 0x7b, 0xee, 0xb9, 0xbf, 0xd1, 0x34, 
+0x2d, 0x10, 0xb9, 0x15, 0x25, 0x3a, 0xd2, 0x84, 
+0x2d, 0xed, 0xbb, 0x52, 0x02, 0x10, 0x6c, 0x0b, 
+0xa0, 0xc6, 0xd4, 0x75, 0xef, 0x3b, 0xfc, 0xb7, 
+0x87, 0xe8, 0x39, 0xd4, 0x5d, 0xf7, 0x73, 0x65, 
+0x45, 0xa5, 0xf5, 0x5c, 0x07, 0x52, 0x48, 0x76, 
+0xed, 0xda, 0xf5, 0x93, 0xfd, 0xfb, 0xf7, 0x3f, 
+0x83, 0x1b, 0x96, 0xe3, 0xb8, 0xb3, 0xd0, 0x00, 
+0x95, 0x6b, 0x8f, 0x0a, 0xa9, 0x35, 0x15, 0xf6, 
+0x87, 0xbd, 0x40, 0xa9, 0xf7, 0xe3, 0x40, 0xcb, 
+0xf3, 0xcf, 0x3f, 0xff, 0x8b, 0x70, 0x38, 0xdc, 
+0xaa, 0xde, 0xd1, 0x88, 0x7d, 0x93, 0xc0, 0x92, 
+0x56, 0x8d, 0xaf, 0xd7, 0x16, 0x21, 0x20, 0xdc, 
+0x12, 0xa6, 0xa5, 0xbf, 0x85, 0x58, 0x77, 0x8c, 
+0x70, 0x22, 0x44, 0x20, 0xaa, 0xa3, 0x87, 0x75, 
+0xa4, 0x2a, 0x31, 0x96, 0x4d, 0x16, 0xc6, 0x17, 
+0x18, 0xfd, 0xe3, 0x38, 0xf9, 0x74, 0x1e, 0x80, 
+0x9d, 0xcf, 0xec, 0x60, 0xdb, 0x81, 0x6e, 0x8c, 
+0xb4, 0x81, 0xad, 0x58, 0xd4, 0x8b, 0xd8, 0xda, 
+0xac, 0x4e, 0xec, 0x72, 0x13, 0xcb, 0x0f, 0xa7, 
+0xc5, 0xc1, 0x03, 0x07, 0x5f, 0x19, 0x1d, 0x1d, 
+0xbd, 0x7c, 0xe7, 0xce, 0x9d, 0x2c, 0x95, 0x6b, 
+0x07, 0xcf, 0x19, 0x0a, 0xff, 0x9a, 0xa1, 0x0c, 
+0xc0, 0x46, 0x61, 0x6f, 0xe7, 0xce, 0x9d, 0x8f, 
+0x76, 0x76, 0x76, 0x0e, 0x0a, 0x47, 0x10, 0xfb, 
+0xaa, 0x19, 0xc7, 0xb6, 0x69, 0x34, 0xc4, 0x07, 
+0x63, 0x01, 0x12, 0x7d, 0x09, 0xc2, 0x2d, 0x61, 
+0x02, 0xd1, 0x00, 0x6a, 0x48, 0x41, 0xa8, 0x20, 
+0x54, 0x81, 0xd0, 0x04, 0x5a, 0x44, 0x23, 0xda, 
+0x15, 0xa5, 0x7b, 0xb0, 0x8b, 0xbd, 0x3f, 0xdb, 
+0xc3, 0xe4, 0x57, 0x93, 0x5c, 0x39, 0x7d, 0x95, 
+0xa7, 0x7e, 0xfd, 0x38, 0x5a, 0x58, 0x43, 0x8f, 
+0xe8, 0x24, 0x76, 0x34, 0x93, 0x1a, 0x9d, 0xaf, 
+0xff, 0x8c, 0x6b, 0x61, 0xcc, 0x4e, 0x83, 0x42, 
+0x9b, 0x19, 0x38, 0x72, 0xe4, 0xc8, 0x4b, 0xa7, 
+0x4e, 0x9d, 0xfa, 0x0d, 0xab, 0x6b, 0x07, 0x6f, 
+0xcd, 0x60, 0x51, 0x95, 0x58, 0xa9, 0x66, 0x80, 
+0xbf, 0xf7, 0x2b, 0x00, 0x38, 0x74, 0xe8, 0xd0, 
+0x5f, 0x28, 0x8a, 0x22, 0xf4, 0xd1, 0x20, 0xe4, 
+0x04, 0x96, 0xb4, 0x37, 0x34, 0x5c, 0x08, 0x41, 
+0xb8, 0x25, 0x4c, 0xac, 0x3d, 0x8a, 0x12, 0x51, 
+0x57, 0xd7, 0x8c, 0x9a, 0x70, 0xb5, 0x04, 0x80, 
+0xd0, 0x04, 0x42, 0x15, 0x48, 0x4d, 0xa2, 0x85, 
+0x35, 0x76, 0xff, 0x74, 0x80, 0xbd, 0x7f, 0xb9, 
+0x07, 0x3d, 0xa4, 0xa1, 0xe8, 0x2a, 0x42, 0xc0, 
+0xf6, 0xc3, 0x49, 0x66, 0xc6, 0xe7, 0xd6, 0x07, 
+0xfa, 0x52, 0x04, 0xeb, 0xd9, 0x22, 0xbd, 0xbd, 
+0xbd, 0x8f, 0x6f, 0xdb, 0xb6, 0x6d, 0xe8, 0xe6, 
+0xcd, 0x9b, 0x69, 0x56, 0xd7, 0x0c, 0xfe, 0x90, 
+0x58, 0x66, 0x81, 0x04, 0xaa, 0x57, 0x79, 0x7e, 
+0xfa, 0x87, 0x81, 0xf8, 0xde, 0xbd, 0x7b, 0x0f, 
+0xb4, 0xb5, 0xb5, 0x3d, 0x28, 0x8b, 0x12, 0xed, 
+0x6a, 0x00, 0x5b, 0x58, 0x1b, 0xaa, 0x23, 0x6d, 
+0x02, 0xcd, 0x1a, 0x5a, 0x54, 0xc5, 0x51, 0x6c, 
+0x90, 0x0e, 0x8e, 0xe2, 0x60, 0x3b, 0x16, 0xf3, 
+0x93, 0x29, 0x26, 0xce, 0x4d, 0x70, 0xe9, 0x0f, 
+0x97, 0xb8, 0xfc, 0xf1, 0x15, 0xa6, 0xfe, 0x67, 
+0x9a, 0x5c, 0x3a, 0x87, 0x50, 0x40, 0x96, 0x80, 
+0x50, 0x34, 0x05, 0x35, 0xa0, 0xa2, 0x85, 0x34, 
+0xb4, 0x90, 0x46, 0xff, 0xe3, 0xbd, 0x1b, 0x3e, 
+0x53, 0xdc, 0x11, 0x68, 0xd3, 0x3a, 0x8a, 0xa2, 
+0x28, 0x4f, 0x3e, 0xf9, 0xe4, 0x4b, 0xb8, 0x43, 
+0x37, 0x52, 0xea, 0x48, 0x0d, 0x97, 0xd9, 0x15, 
+0x7e, 0xaf, 0x9a, 0x01, 0xfe, 0xc5, 0x4e, 0x79, 
+0xbe, 0x3f, 0x38, 0x38, 0xf8, 0x53, 0x29, 0x25, 
+0xca, 0x75, 0x1d, 0xbb, 0xe8, 0x80, 0xdc, 0x78, 
+0x01, 0xa5, 0xea, 0x2a, 0xe8, 0x02, 0x47, 0x75, 
+0x70, 0x14, 0xb0, 0xa5, 0xc3, 0xc2, 0xad, 0x45, 
+0x52, 0x63, 0xf3, 0x14, 0xcd, 0x62, 0xe5, 0xcd, 
+0x5f, 0x5c, 0x47, 0x48, 0x41, 0xff, 0x81, 0x3e, 
+0x0e, 0xbc, 0xbc, 0x9f, 0xe4, 0xe0, 0x76, 0xa4, 
+0x2a, 0x5d, 0x46, 0x04, 0x55, 0x84, 0x10, 0x3c, 
+0x70, 0xb8, 0x1f, 0x47, 0x03, 0xdb, 0x5a, 0x9f, 
+0x79, 0xca, 0xe5, 0x00, 0x76, 0x8f, 0x45, 0x77, 
+0x77, 0xf7, 0x60, 0x4f, 0x4f, 0x4f, 0xff, 0xf4, 
+0xf4, 0xb4, 0xb7, 0x70, 0xd2, 0x7d, 0x2c, 0xf0, 
+0x92, 0x30, 0x15, 0x68, 0xf8, 0x27, 0x3f, 0x5e, 
+0x62, 0x23, 0x9c, 0x48, 0x24, 0x3a, 0x5b, 0x5a, 
+0x5a, 0xfa, 0x85, 0x23, 0x10, 0x13, 0xb2, 0xa1, 
+0xde, 0xb7, 0x85, 0x05, 0x6a, 0xc9, 0x53, 0x0b, 
+0x1b, 0x47, 0xda, 0xa4, 0xa6, 0x52, 0xdc, 0xbc, 
+0x7a, 0x13, 0xb3, 0x60, 0xd4, 0xbc, 0xdf, 0x72, 
+0x8a, 0x5c, 0xff, 0xea, 0x3a, 0x9f, 0xfe, 0xeb, 
+0x67, 0x20, 0x40, 0x48, 0x10, 0x52, 0x94, 0xb3, 
+0xc2, 0x81, 0xa8, 0x4e, 0xfb, 0xae, 0xb6, 0x8d, 
+0x99, 0x97, 0xb7, 0x91, 0xb3, 0x0a, 0x52, 0x4a, 
+0xb1, 0x7b, 0xf7, 0xee, 0xc7, 0x7c, 0x0c, 0xf0, 
+0xc2, 0x61, 0x39, 0x13, 0x25, 0x84, 0x10, 0x6a, 
+0x15, 0x00, 0xd5, 0x0c, 0x08, 0xef, 0xdd, 0xbb, 
+0xf7, 0xa0, 0x94, 0x52, 0x38, 0x29, 0x81, 0x65, 
+0x59, 0xb5, 0x03, 0x67, 0x0d, 0xb1, 0x14, 0x05, 
+0x5b, 0xba, 0xf1, 0x3a, 0x75, 0x33, 0xc5, 0xca, 
+0x52, 0x76, 0xc3, 0xef, 0x0a, 0x21, 0x38, 0xf2, 
+0xcb, 0xa7, 0x70, 0x1c, 0x07, 0xdb, 0x71, 0xb0, 
+0x8a, 0x36, 0x05, 0xa3, 0x80, 0xe3, 0x40, 0xd1, 
+0xb4, 0xd8, 0xf6, 0x68, 0x17, 0x53, 0x57, 0xa7, 
+0x36, 0x7c, 0xb6, 0x98, 0x11, 0xc8, 0xed, 0x92, 
+0x64, 0x32, 0xb9, 0xa7, 0x0a, 0x80, 0x35, 0xe1, 
+0x50, 0xad, 0x33, 0xfe, 0x3d, 0x00, 0x42, 0xc9, 
+0x64, 0x72, 0x8f, 0x10, 0x02, 0xfb, 0xb6, 0x83, 
+0x2d, 0x1a, 0xcf, 0x36, 0xd9, 0xb8, 0xbd, 0xbf, 
+0x34, 0xb7, 0x84, 0x99, 0x33, 0x37, 0xde, 0x0d, 
+0x00, 0x76, 0x3f, 0x3d, 0x40, 0x6b, 0x6f, 0x0b, 
+0xb6, 0x6d, 0x63, 0x15, 0x2c, 0x0c, 0x3b, 0xcf, 
+0xb5, 0x2f, 0xa6, 0x18, 0xf9, 0xe2, 0x1a, 0x57, 
+0xcf, 0x5c, 0x63, 0x6e, 0x7c, 0xae, 0xa1, 0xdf, 
+0x61, 0x06, 0x34, 0x47, 0x90, 0x48, 0x24, 0x7a, 
+0x13, 0x89, 0x44, 0xdb, 0xe2, 0xe2, 0xe2, 0x4c, 
+0x15, 0x00, 0x92, 0xd2, 0xfa, 0x60, 0x3d, 0x06, 
+0xe8, 0xa1, 0x50, 0x28, 0xde, 0xd1, 0xde, 0xb1, 
+0x53, 0x4a, 0x89, 0x31, 0x5b, 0xc0, 0x69, 0x60, 
+0xec, 0x7b, 0x62, 0x49, 0x8b, 0x5c, 0x3e, 0x47, 
+0xde, 0x30, 0x1a, 0x62, 0x8d, 0x1e, 0xd2, 0x39, 
+0x70, 0x7c, 0x3f, 0xa9, 0xa9, 0x14, 0xd3, 0x57, 
+0x6e, 0x32, 0xf1, 0xed, 0x0d, 0x6e, 0x5c, 0x98, 
+0xa4, 0x60, 0x14, 0x56, 0x6f, 0x6a, 0x74, 0x81, 
+0x69, 0x83, 0xba, 0xa0, 0xa2, 0x74, 0x48, 0xb1, 
+0x6f, 0xdf, 0xbe, 0x1f, 0x7f, 0xf4, 0xd1, 0x47, 
+0xd7, 0xa8, 0xc7, 0x80, 0xd2, 0xb5, 0x3a, 0xd7, 
+0xa7, 0x02, 0xfa, 0x03, 0x0f, 0x3c, 0xd0, 0xab, 
+0xa8, 0x8a, 0x66, 0x67, 0x6c, 0x2c, 0xc3, 0x6a, 
+0x0c, 0xfd, 0x92, 0x58, 0x58, 0x18, 0xb9, 0x22, 
+0x4e, 0x83, 0xac, 0x51, 0x82, 0x0a, 0xff, 0xfe, 
+0xf7, 0xbf, 0x23, 0x33, 0x9f, 0xa9, 0xfc, 0xe0, 
+0x2e, 0xd7, 0x57, 0x56, 0xca, 0x46, 0xed, 0x54, 
+0x68, 0x6f, 0x6f, 0xef, 0xc3, 0xf5, 0x67, 0x5e, 
+0x46, 0xba, 0x22, 0x25, 0x5f, 0x2b, 0x0a, 0x94, 
+0x87, 0x41, 0x73, 0x73, 0x73, 0x9b, 0x94, 0x12, 
+0xcb, 0xb0, 0xb1, 0x37, 0x31, 0xeb, 0x03, 0x30, 
+0x8b, 0xb6, 0x6b, 0x7c, 0x83, 0x06, 0x64, 0xd2, 
+0xe9, 0xd5, 0x16, 0x6c, 0x81, 0xd8, 0x86, 0x44, 
+0x4a, 0x49, 0x38, 0x1c, 0x6e, 0xa2, 0x8e, 0xf1, 
+0xc0, 0x1a, 0x27, 0x58, 0x91, 0xf4, 0x8c, 0xc5, 
+0x62, 0x09, 0x21, 0x04, 0x76, 0xde, 0xc6, 0x12, 
+0x9b, 0x03, 0x00, 0x87, 0xbb, 0xee, 0xbd, 0xad, 
+0x90, 0xa2, 0xe1, 0x46, 0x90, 0x50, 0x28, 0x14, 
+0x67, 0xd5, 0xf8, 0xea, 0x9d, 0xa9, 0x8a, 0x21, 
+0xe0, 0x5d, 0xbd, 0x9b, 0x94, 0x68, 0x34, 0xda, 
+0x24, 0xa5, 0xc4, 0x36, 0x4b, 0x0b, 0x98, 0x3f, 
+0x21, 0x29, 0x1a, 0x16, 0x52, 0x4a, 0x0f, 0x80, 
+0x8a, 0xf0, 0xe7, 0xbf, 0x4f, 0xa5, 0xd2, 0xf8, 
+0x0a, 0x8d, 0x46, 0xa3, 0x4d, 0x42, 0x08, 0x0a, 
+0xf9, 0xe2, 0xe6, 0x19, 0xf0, 0x03, 0x8b, 0x6d, 
+0xd8, 0x08, 0x21, 0x08, 0x06, 0x83, 0x11, 0x2a, 
+0x7b, 0xbe, 0x42, 0xd6, 0xdd, 0x18, 0x11, 0x42, 
+0x20, 0xa5, 0x3b, 0x96, 0x84, 0xfc, 0x01, 0xf9, 
+0x7c, 0x17, 0x22, 0xa4, 0xdb, 0xf6, 0x8d, 0xb2, 
+0xde, 0x2a, 0xeb, 0x6c, 0x4b, 0x67, 0xb3, 0xd9, 
+0x3b, 0x42, 0x08, 0xb4, 0x88, 0x8a, 0x54, 0xb6, 
+0x3e, 0xc9, 0x79, 0x3f, 0x45, 0x0d, 0x2b, 0x08, 
+0x21, 0x30, 0x0c, 0x63, 0x85, 0xaa, 0x3d, 0xc4, 
+0x8a, 0xfb, 0x4a, 0x57, 0x3f, 0x08, 0xde, 0xcd, 
+0x56, 0x19, 0x80, 0x90, 0x86, 0x22, 0x95, 0xef, 
+0xa3, 0xdd, 0x5b, 0x26, 0x5a, 0x58, 0xf7, 0x00, 
+0x48, 0xe3, 0xdb, 0x3f, 0xa4, 0x0a, 0x04, 0xff, 
+0x10, 0xf0, 0x3e, 0x2c, 0xef, 0xd2, 0x66, 0x32, 
+0x99, 0x05, 0x29, 0x25, 0x5a, 0xe4, 0x87, 0x07, 
+0x40, 0x48, 0x81, 0x63, 0x37, 0x3e, 0x11, 0xd3, 
+0xc3, 0x1a, 0x52, 0x4a, 0x4c, 0xd3, 0x4c, 0x53, 
+0xb9, 0x89, 0x5a, 0x01, 0x44, 0xb5, 0x0f, 0xa8, 
+0xd8, 0xa5, 0x5d, 0x5c, 0x5c, 0x9c, 0x17, 0x42, 
+0xa0, 0x86, 0x55, 0x14, 0x65, 0x6b, 0x00, 0x88, 
+0x25, 0x62, 0x34, 0x77, 0x34, 0x33, 0x79, 0x65, 
+0xb2, 0xe1, 0xef, 0x68, 0x01, 0x0d, 0xab, 0x60, 
+0x61, 0x8b, 0xc6, 0x23, 0x91, 0x16, 0xd1, 0x10, 
+0x42, 0x90, 0xcd, 0x66, 0xef, 0xb0, 0x9a, 0x11, 
+0xaa, 0x4e, 0x88, 0x38, 0xfe, 0x21, 0xe0, 0xa9, 
+0xb7, 0x47, 0x6f, 0x8e, 0x8e, 0x8e, 0xde, 0x70, 
+0x1c, 0xa7, 0xa0, 0xc7, 0x35, 0x4d, 0x0d, 0xab, 
+0xd8, 0xf9, 0xcd, 0x87, 0x42, 0x4d, 0xd7, 0xe8, 
+0x1d, 0x48, 0xd2, 0xf7, 0x70, 0x2f, 0xc9, 0x87, 
+0x92, 0x84, 0xe3, 0x61, 0x4e, 0xbf, 0xfd, 0x07, 
+0xa4, 0x6c, 0xcc, 0xa7, 0x28, 0x9a, 0x42, 0x20, 
+0x18, 0x20, 0x6f, 0xe7, 0x37, 0xf5, 0xdc, 0x60, 
+0x47, 0x00, 0x29, 0x25, 0x73, 0x73, 0x73, 0x13, 
+0xac, 0xdd, 0x4e, 0xaf, 0xc9, 0x00, 0x3f, 0xfd, 
+0x0b, 0x80, 0xb9, 0xbc, 0xbc, 0x9c, 0x9e, 0x9b, 
+0x9b, 0xbb, 0xde, 0xdd, 0xdd, 0x3d, 0x10, 0xee, 
+0x0e, 0x91, 0xbb, 0xd1, 0x58, 0x23, 0xda, 0x7a, 
+0xda, 0xf8, 0xd1, 0x8f, 0x1f, 0x64, 0xd7, 0x81, 
+0x1f, 0xd1, 0x3b, 0x90, 0xc4, 0x71, 0xa0, 0x60, 
+0x98, 0x18, 0x39, 0x83, 0xa9, 0xab, 0xd3, 0x8c, 
+0x7d, 0x3b, 0xd6, 0x10, 0xa3, 0xa4, 0x22, 0x89, 
+0x25, 0xa2, 0x14, 0x8c, 0x02, 0x8a, 0xa2, 0x20, 
+0x1a, 0x9c, 0x59, 0x09, 0x55, 0x10, 0x6c, 0x0b, 
+0xe0, 0xe0, 0xd8, 0x5f, 0x7e, 0xf9, 0xe5, 0x30, 
+0x6e, 0x6e, 0xd0, 0x9f, 0x17, 0x5c, 0x4d, 0x89, 
+0x39, 0x8e, 0xe3, 0x95, 0x99, 0x78, 0x00, 0x78, 
+0x45, 0x0a, 0x79, 0x20, 0x37, 0x36, 0x36, 0xf6, 
+0x6d, 0x4f, 0x4f, 0xcf, 0x40, 0xa8, 0x2b, 0x88, 
+0x39, 0x55, 0xa8, 0x7e, 0xd6, 0xda, 0x46, 0x4b, 
+0xc9, 0x5f, 0xfd, 0xdd, 0xaf, 0x88, 0x26, 0xa2, 
+0x28, 0x8a, 0xc4, 0xb2, 0x6c, 0x0a, 0x79, 0x13, 
+0xab, 0xa8, 0x20, 0xa5, 0xc2, 0xe7, 0xef, 0x7f, 
+0x81, 0x14, 0x72, 0xc3, 0x59, 0xa2, 0xaa, 0xab, 
+0x24, 0x3a, 0x13, 0x14, 0xcd, 0x22, 0x56, 0xc1, 
+0x46, 0x91, 0x4a, 0xc3, 0xfb, 0x8c, 0x81, 0x4e, 
+0x1d, 0xa9, 0x48, 0x52, 0xa9, 0xd4, 0x64, 0x2a, 
+0x95, 0x4a, 0xd5, 0x00, 0xa0, 0x0c, 0x82, 0x9f, 
+0x87, 0x7e, 0x06, 0x98, 0xa5, 0x2f, 0x65, 0xcf, 
+0x9e, 0x3d, 0xfb, 0x15, 0x60, 0x07, 0xda, 0x74, 
+0x54, 0x5d, 0x41, 0x91, 0x72, 0x5d, 0x15, 0xc0, 
+0xf4, 0xd5, 0x69, 0x54, 0x55, 0x41, 0x0f, 0xe9, 
+0x28, 0xaa, 0x82, 0x90, 0x12, 0x21, 0x04, 0x13, 
+0xdf, 0x4d, 0x30, 0x3b, 0x3e, 0xbb, 0xe1, 0x6f, 
+0x84, 0xa3, 0x21, 0x7a, 0x76, 0x74, 0xa3, 0x69, 
+0x2a, 0x52, 0x08, 0xf7, 0x7d, 0xb1, 0xfe, 0x77, 
+0xfc, 0x1a, 0xea, 0x0a, 0x20, 0x84, 0x60, 0x7c, 
+0x7c, 0xfc, 0x5b, 0xdc, 0x7c, 0x60, 0x5d, 0x06, 
+0x54, 0x03, 0xe0, 0xf9, 0x80, 0x02, 0x6e, 0xfa, 
+0x28, 0x3b, 0x3b, 0x3b, 0x3b, 0xbb, 0xb0, 0xb0, 
+0x30, 0x2e, 0x15, 0x49, 0xa4, 0x3f, 0x8c, 0xa2, 
+0x28, 0x1b, 0xea, 0x8d, 0x8b, 0x37, 0x80, 0x52, 
+0xfa, 0xca, 0x76, 0xc0, 0x71, 0xb5, 0xef, 0x91, 
+0x3e, 0x8e, 0xfd, 0xf2, 0x27, 0x74, 0xef, 0xe8, 
+0xae, 0xf9, 0x3d, 0x4d, 0xd3, 0x68, 0xdb, 0xd6, 
+0x46, 0xef, 0x40, 0x12, 0x55, 0xd3, 0xca, 0x93, 
+0x30, 0x4f, 0x1b, 0x79, 0xb6, 0x16, 0xd5, 0x08, 
+0xb8, 0x00, 0x38, 0xe7, 0xce, 0x9d, 0xfb, 0x12, 
+0x37, 0x29, 0xea, 0x15, 0x51, 0x54, 0x84, 0x43, 
+0xc7, 0x71, 0x9c, 0x5a, 0x51, 0xc0, 0x03, 0x20, 
+0x8f, 0x9b, 0x56, 0xce, 0x9c, 0x39, 0x73, 0xe6, 
+0x3f, 0x8e, 0x1f, 0x3f, 0xfe, 0xeb, 0xd0, 0x8e, 
+0x20, 0xe6, 0xad, 0x22, 0x8e, 0xb9, 0x7e, 0x38, 
+0x9a, 0xf8, 0x6e, 0xd2, 0xf5, 0xda, 0x96, 0x8d, 
+0x55, 0xb4, 0xb0, 0x8a, 0x36, 0x76, 0x09, 0x88, 
+0xe4, 0x40, 0x92, 0x8e, 0xbe, 0x0e, 0x16, 0x67, 
+0x96, 0x48, 0x4d, 0xa5, 0x58, 0xbc, 0xbd, 0x84, 
+0xe3, 0x38, 0x28, 0x8a, 0x24, 0x18, 0x09, 0x62, 
+0x15, 0x2d, 0x8c, 0x9c, 0x41, 0xd1, 0xb4, 0x11, 
+0xa5, 0xbf, 0xa2, 0x61, 0x21, 0x84, 0xa4, 0x6e, 
+0xcd, 0xa9, 0x4f, 0x22, 0xbb, 0x42, 0x48, 0x45, 
+0x32, 0x3e, 0x3e, 0x7e, 0x7e, 0x6c, 0x6c, 0x6c, 
+0x82, 0xd5, 0xba, 0x81, 0xda, 0x3e, 0x80, 0x12, 
+0x14, 0x35, 0xfc, 0x80, 0x81, 0x4b, 0x9f, 0xf4, 
+0xa7, 0x9f, 0x7e, 0x3a, 0xfc, 0xc4, 0x13, 0x4f, 
+0x5c, 0xeb, 0xea, 0xea, 0x7a, 0x30, 0xf2, 0x60, 
+0x88, 0xdc, 0x15, 0x63, 0xdd, 0x46, 0x2c, 0x4c, 
+0xcf, 0x93, 0x59, 0x5c, 0x26, 0x14, 0x0d, 0x62, 
+0x5b, 0x36, 0x45, 0xb3, 0x80, 0x6d, 0xd9, 0xd8, 
+0x96, 0xe3, 0xc6, 0x72, 0x07, 0xc2, 0xb1, 0x10, 
+0x9d, 0x7d, 0x9d, 0x24, 0x3a, 0x9a, 0x31, 0x72, 
+0x26, 0x66, 0xce, 0xc0, 0xc8, 0x9a, 0xd8, 0x96, 
+0x67, 0x38, 0xd8, 0x45, 0x9b, 0x5c, 0x26, 0x8f, 
+0x40, 0x34, 0xe4, 0x34, 0x95, 0xb8, 0x42, 0x70, 
+0x5b, 0x00, 0xdb, 0xb6, 0xad, 0x0f, 0x3f, 0xfc, 
+0xf0, 0x24, 0xee, 0x06, 0xe9, 0x32, 0x6e, 0x67, 
+0xfa, 0x4b, 0x68, 0xca, 0x52, 0x1d, 0x8b, 0xfc, 
+0x00, 0x98, 0x25, 0xe4, 0x96, 0x81, 0xa5, 0xa1, 
+0xa1, 0xa1, 0xdf, 0x01, 0x4e, 0x30, 0x19, 0x40, 
+0x8b, 0xba, 0x13, 0xa3, 0x7a, 0x2a, 0x85, 0xc2, 
+0xc4, 0x85, 0x09, 0x0a, 0x46, 0x91, 0x82, 0x51, 
+0xe4, 0xbf, 0xfe, 0xf9, 0xf7, 0x9c, 0x7a, 0xf3, 
+0x43, 0xa6, 0x2e, 0x4f, 0x61, 0xdb, 0x36, 0xb6, 
+0x65, 0xbb, 0x40, 0x94, 0xc0, 0x28, 0x55, 0xfc, 
+0x95, 0xff, 0x77, 0x2c, 0x87, 0xec, 0x52, 0x8e, 
+0xcc, 0xfc, 0x32, 0xc2, 0x11, 0xeb, 0x3e, 0xcb, 
+0xaf, 0xe1, 0x5d, 0x41, 0x84, 0x10, 0x8c, 0x8c, 
+0x8c, 0x7c, 0x3e, 0x3a, 0x3a, 0x3a, 0x4a, 0xe5, 
+0x36, 0x79, 0xc5, 0xc6, 0xc8, 0x9a, 0x9d, 0x21, 
+0x1f, 0x0b, 0xfc, 0x8e, 0xb0, 0x0c, 0xc0, 0x37, 
+0xdf, 0x7c, 0x73, 0xe1, 0xe8, 0xd1, 0xa3, 0xe7, 
+0xfb, 0xfb, 0xfb, 0xf7, 0x45, 0xf7, 0x86, 0xc8, 
+0x9e, 0xcb, 0xe1, 0xac, 0xb3, 0x40, 0x9c, 0xba, 
+0x34, 0x45, 0xef, 0xc3, 0xbd, 0xdc, 0xba, 0x76, 
+0x8b, 0xf1, 0xf3, 0x63, 0x00, 0xcc, 0x8c, 0xde, 
+0x26, 0xde, 0x16, 0x27, 0xb9, 0x7b, 0x3b, 0xe1, 
+0x78, 0x18, 0x2d, 0xe8, 0x4e, 0x56, 0x1c, 0xcb, 
+0xc6, 0xc8, 0x1a, 0x64, 0x97, 0x56, 0x58, 0x9a, 
+0x59, 0x22, 0xb3, 0xb0, 0xec, 0x0e, 0x8b, 0x06, 
+0xe7, 0x0a, 0x00, 0x7a, 0x9f, 0x86, 0xde, 0xaa, 
+0x61, 0x9a, 0x66, 0xfe, 0xe4, 0xc9, 0x93, 0x27, 
+0xa9, 0x5d, 0x2c, 0xb1, 0x66, 0x3d, 0x50, 0x6b, 
+0x35, 0x58, 0x3d, 0x0c, 0x56, 0x4a, 0x48, 0x2e, 
+0x9c, 0x38, 0x71, 0xe2, 0x5f, 0x5e, 0x7f, 0xfd, 
+0xf5, 0x64, 0x34, 0x1e, 0x6d, 0x0d, 0x3d, 0x1c, 
+0x22, 0xff, 0x9d, 0x59, 0xb7, 0x41, 0xb7, 0xae, 
+0xcd, 0x50, 0xc8, 0x17, 0xf8, 0xfc, 0xe4, 0x97, 
+0x48, 0xdf, 0x34, 0x7a, 0x79, 0x61, 0x85, 0x4b, 
+0x9f, 0x5d, 0x29, 0xbf, 0x96, 0x8a, 0xc4, 0xb6, 
+0xed, 0x8a, 0x66, 0x35, 0x3a, 0xde, 0xcb, 0x46, 
+0xb4, 0x2a, 0x04, 0x77, 0xea, 0x38, 0x38, 0xce, 
+0xd0, 0xd0, 0xd0, 0xdb, 0xb3, 0xb3, 0xb3, 0x37, 
+0x80, 0x25, 0xd6, 0x6e, 0x8f, 0x57, 0xf4, 0x3e, 
+0xd4, 0x4e, 0x40, 0x55, 0x87, 0xc3, 0x5c, 0xe9, 
+0x87, 0x16, 0x53, 0xa9, 0xd4, 0xe4, 0xdb, 0x6f, 
+0xbf, 0xfd, 0x4f, 0x96, 0x65, 0x19, 0x7a, 0x97, 
+0x46, 0xf0, 0x81, 0x40, 0x5d, 0x3a, 0x2e, 0xa7, 
+0x96, 0x39, 0x3f, 0xf4, 0x2d, 0xe9, 0x99, 0xf4, 
+0xba, 0xb4, 0x15, 0x8e, 0x40, 0x11, 0x8d, 0x51, 
+0xbc, 0x96, 0x6a, 0x51, 0x95, 0xd0, 0xa3, 0x01, 
+0xa4, 0x22, 0x19, 0x1e, 0x1e, 0xfe, 0xcf, 0xa1, 
+0xa1, 0xa1, 0x4f, 0x58, 0xa7, 0x4a, 0xa4, 0xda, 
+0xd8, 0xbb, 0x2a, 0x90, 0x78, 0xe1, 0x85, 0x17, 
+0x9e, 0x3b, 0x7e, 0xfc, 0xf8, 0xab, 0x42, 0x08, 
+0x51, 0xb8, 0x6e, 0x51, 0x9c, 0xfa, 0x61, 0x92, 
+0x25, 0x32, 0x2a, 0xd0, 0x1f, 0x55, 0x11, 0x01, 
+0xc1, 0xd8, 0xd8, 0xd8, 0xf9, 0x37, 0xde, 0x78, 
+0x63, 0xd3, 0x05, 0x12, 0x6b, 0x86, 0x40, 0x95, 
+0x2f, 0xf0, 0xb6, 0x91, 0x72, 0xac, 0x66, 0x8b, 
+0x95, 0xd3, 0xa7, 0x4f, 0x7f, 0xd2, 0xde, 0xde, 
+0xde, 0x76, 0xe4, 0xc8, 0x91, 0x97, 0xf4, 0x07, 
+0x55, 0xa1, 0xc4, 0x24, 0xc5, 0x11, 0xab, 0xca, 
+0xbf, 0xde, 0x5f, 0x91, 0x6d, 0x12, 0xf5, 0x21, 
+0x89, 0x50, 0x04, 0xb3, 0xb3, 0xb3, 0x63, 0x6f, 
+0xbd, 0xf5, 0xd6, 0x6f, 0x58, 0x5b, 0x1e, 0xe3, 
+0x2f, 0x94, 0x6a, 0xac, 0x44, 0x06, 0x1a, 0x2f, 
+0x92, 0x7a, 0xf1, 0xc5, 0x17, 0x9f, 0x3f, 0x76, 
+0xec, 0xd8, 0xcf, 0x35, 0x4d, 0xd3, 0x9d, 0x8c, 
+0x43, 0xf1, 0xa2, 0x85, 0x53, 0xdf, 0x2d, 0x6c, 
+0x99, 0x28, 0x7d, 0x12, 0xa5, 0xd7, 0x1d, 0xbd, 
+0x23, 0x23, 0x23, 0xc3, 0x6f, 0xbe, 0xf9, 0xe6, 
+0x6f, 0x0d, 0xc3, 0xd8, 0xba, 0x22, 0x29, 0x68, 
+0xbc, 0x4c, 0x6e, 0xff, 0xfe, 0xfd, 0x7b, 0x5f, 
+0x79, 0xe5, 0x95, 0xbf, 0x8e, 0x44, 0x22, 0xcd, 
+0x58, 0x60, 0x4f, 0x39, 0xd8, 0xd3, 0xce, 0x7d, 
+0x61, 0x83, 0x48, 0x08, 0x64, 0xbf, 0x40, 0x44, 
+0xc0, 0x71, 0x1c, 0xfb, 0xb3, 0xcf, 0x3e, 0x3b, 
+0x75, 0xe2, 0xc4, 0x89, 0xad, 0x2f, 0x93, 0x2b, 
+0x7f, 0xd8, 0x60, 0xa1, 0x64, 0x57, 0x57, 0x57, 
+0xdf, 0x6b, 0xaf, 0xbd, 0xf6, 0xab, 0xed, 0xdb, 
+0xb7, 0x0f, 0x00, 0x60, 0x82, 0x7d, 0xc3, 0xc1, 
+0x9e, 0xa1, 0x86, 0xdb, 0xb9, 0x0b, 0xc3, 0xa3, 
+0xb8, 0x86, 0x37, 0xbb, 0xaf, 0xb3, 0xd9, 0xec, 
+0x9d, 0x0f, 0x3e, 0xf8, 0xe0, 0xdf, 0x4e, 0x9f, 
+0x3e, 0xfd, 0xdf, 0xb8, 0x45, 0x92, 0xf3, 0xb8, 
+0x5e, 0xbf, 0x56, 0x2d, 0xc0, 0xdd, 0x15, 0x4a, 
+0x96, 0x6f, 0xa8, 0x5f, 0x2a, 0x1b, 0xc6, 0xdd, 
+0x7f, 0x2f, 0x97, 0xca, 0x1e, 0x3d, 0x7a, 0xf4, 
+0xe0, 0xb1, 0x63, 0xc7, 0x5e, 0x6a, 0x6d, 0x6d, 
+0xed, 0x01, 0xa0, 0x00, 0xce, 0x82, 0xdb, 0x3c, 
+0xe7, 0x0e, 0x9b, 0x03, 0x23, 0x0c, 0xa2, 0xc5, 
+0x55, 0xa2, 0xee, 0x5b, 0xa6, 0x69, 0xe6, 0x87, 
+0x87, 0x87, 0x7f, 0xff, 0xee, 0xbb, 0xef, 0x7e, 
+0x98, 0xcd, 0x66, 0xbd, 0x52, 0xd9, 0x25, 0x2a, 
+0x67, 0x7c, 0x5b, 0x57, 0x2a, 0x5b, 0x07, 0x84, 
+0x7a, 0xc5, 0xd2, 0x4d, 0xb8, 0x43, 0x23, 0xf1, 
+0xf2, 0xcb, 0x2f, 0x3f, 0xfd, 0xf4, 0xd3, 0x4f, 
+0xbf, 0x18, 0x8f, 0xc7, 0xcb, 0xc5, 0xd2, 0x58, 
+0xa5, 0xa6, 0x1a, 0xe0, 0x98, 0x62, 0xf5, 0x44, 
+0x80, 0x4d, 0xf9, 0x14, 0x81, 0x08, 0x38, 0xee, 
+0xff, 0x71, 0x5c, 0x88, 0x4b, 0x52, 0x2c, 0x16, 
+0xcd, 0x8b, 0x17, 0x2f, 0x7e, 0xfe, 0xce, 0x3b, 
+0xef, 0xbc, 0x37, 0x3b, 0x3b, 0x7b, 0xab, 0xf4, 
+0x4b, 0x77, 0x4a, 0xea, 0xef, 0xf5, 0xad, 0x2f, 
+0x96, 0x5e, 0x07, 0x04, 0xff, 0x01, 0x09, 0xef, 
+0x8c, 0x40, 0xb4, 0xd4, 0xfc, 0x38, 0x10, 0x7b, 
+0xec, 0xb1, 0xc7, 0x1e, 0x3a, 0x74, 0xe8, 0xd0, 
+0xc1, 0x1d, 0x3b, 0x76, 0x3c, 0x92, 0x48, 0x24, 
+0x36, 0x55, 0x2e, 0x6f, 0x18, 0x46, 0x76, 0x62, 
+0x62, 0xe2, 0xca, 0x85, 0x0b, 0x17, 0xbe, 0xfe, 
+0xf8, 0xe3, 0x8f, 0xbf, 0x5e, 0x5e, 0x5e, 0xf6, 
+0x9c, 0x9b, 0xd7, 0xdb, 0xdf, 0x5f, 0xb9, 0x7c, 
+0xf9, 0xe6, 0xf5, 0x0f, 0x4c, 0x78, 0x8c, 0xa8, 
+0x79, 0x60, 0x62, 0x60, 0x60, 0xa0, 0x67, 0xff, 
+0xfe, 0xfd, 0x03, 0xf1, 0x78, 0x3c, 0x11, 0x8b, 
+0xc5, 0x9a, 0xc2, 0xe1, 0x70, 0x3c, 0x12, 0x89, 
+0xc4, 0x54, 0x55, 0x55, 0xb3, 0xd9, 0xec, 0xf2, 
+0xf2, 0xf2, 0x72, 0x7a, 0x65, 0x65, 0x25, 0x9d, 
+0xc9, 0x64, 0x16, 0xa7, 0xa6, 0xa6, 0xa6, 0x3f, 
+0xf9, 0xe4, 0x93, 0x4b, 0x85, 0x42, 0x61, 0xbd, 
+0x03, 0x13, 0x7e, 0xc3, 0x2b, 0x4e, 0x8e, 0x34, 
+0x6a, 0xfc, 0xa6, 0x01, 0xf0, 0x81, 0x00, 0x77, 
+0x7f, 0x64, 0xc6, 0xbf, 0x51, 0xe9, 0xcd, 0x44, 
+0xbd, 0x3c, 0x44, 0x39, 0x1d, 0xc7, 0xea, 0x71, 
+0x99, 0x6a, 0xad, 0x7b, 0x64, 0x86, 0x75, 0xbc, 
+0x7d, 0x5d, 0x7b, 0x7e, 0xa0, 0x43, 0x53, 0xfe, 
+0x93, 0x63, 0x50, 0x39, 0xfd, 0xf6, 0x40, 0xf8, 
+0x5e, 0x0e, 0x4d, 0xdd, 0xd3, 0xc1, 0xc9, 0x7b, 
+0x38, 0x36, 0x57, 0xbd, 0x57, 0x57, 0xbd, 0x27, 
+0xe1, 0xe9, 0x86, 0xc7, 0xe6, 0xb8, 0x07, 0xe3, 
+0xe1, 0x1e, 0x01, 0x80, 0x0a, 0x10, 0xa0, 0x92, 
+0x11, 0xfe, 0x9d, 0xe6, 0x46, 0x0e, 0x4e, 0xfa, 
+0x75, 0xc3, 0x83, 0x93, 0xdc, 0xa3, 0xe1, 0xe5, 
+0x06, 0xff, 0x7f, 0x3f, 0x3a, 0xbb, 0x65, 0x00, 
+0x54, 0xfc, 0xe8, 0x16, 0x1e, 0x9e, 0xf6, 0x5d, 
+0xdd, 0x17, 0xff, 0x57, 0x0f, 0x4f, 0xff, 0xa9, 
+0xca, 0xff, 0x02, 0x5b, 0x77, 0x7a, 0xf1, 0x13, 
+0x58, 0xf2, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x49, 
+0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, 
+};
+
+#endif
+
diff --git a/source/bitmaps/misc/activity3.png b/source/bitmaps/misc/activity3.png
new file mode 100644 (file)
index 0000000..b2e1838
Binary files /dev/null and b/source/bitmaps/misc/activity3.png differ
diff --git a/source/bitmaps/misc/activity4.cpp b/source/bitmaps/misc/activity4.cpp
new file mode 100644 (file)
index 0000000..101d580
--- /dev/null
@@ -0,0 +1,538 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY4_CPP
+#define MISC_ACTIVITY4_CPP
+
+static unsigned char misc_activity4_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x0f, 0xff, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0x6d, 
+0x6c, 0x5c, 0x55, 0x7a, 0xc7, 0x7f, 0xe7, 0xdc, 
+0x97, 0x79, 0xf5, 0xd8, 0xe3, 0x77, 0xc7, 0xb1, 
+0xe3, 0x24, 0x10, 0x9c, 0x25, 0x89, 0x93, 0x25, 
+0x01, 0x42, 0x02, 0x24, 0x0a, 0x5d, 0x02, 0x52, 
+0x9b, 0x14, 0x55, 0x6a, 0x85, 0xe8, 0x7e, 0xd8, 
+0x52, 0x5a, 0x55, 0xaa, 0x0a, 0xaa, 0xda, 0x2f, 
+0xd5, 0x7e, 0xec, 0xa7, 0x82, 0xb4, 0x52, 0x45, 
+0xd3, 0x6a, 0x57, 0xed, 0x17, 0x28, 0x7c, 0x40, 
+0x5d, 0x96, 0x10, 0xd8, 0xae, 0xd3, 0x2e, 0xca, 
+0xc2, 0x86, 0x92, 0x35, 0xd9, 0x2c, 0x34, 0x09, 
+0x98, 0x38, 0xaf, 0x4e, 0xe2, 0xb1, 0x13, 0x67, 
+0x3c, 0xce, 0xcc, 0xdc, 0xf7, 0x7e, 0xb8, 0x73, 
+0x67, 0xee, 0x4c, 0xc6, 0xce, 0x4c, 0xec, 0x40, 
+0xab, 0x3e, 0xd2, 0xe3, 0xeb, 0x99, 0xb9, 0x73, 
+0xe7, 0x3c, 0xff, 0xe7, 0x7f, 0x9e, 0x73, 0xce, 
+0x73, 0x9e, 0x23, 0x3c, 0xcf, 0xe3, 0x6e, 0x8a, 
+0x10, 0x42, 0x2c, 0xf4, 0x51, 0x9d, 0xf7, 0x6e, 
+0x69, 0x8c, 0x77, 0x97, 0x1b, 0xa8, 0xde, 0x8d, 
+0x87, 0xd6, 0x18, 0x2d, 0x16, 0xb8, 0x2e, 0x24, 
+0x5e, 0xf8, 0x5a, 0x8b, 0xdf, 0x72, 0x03, 0x22, 
+0x96, 0xeb, 0x79, 0x75, 0x8c, 0x16, 0x35, 0xff, 
+0xcb, 0x3a, 0xef, 0x85, 0x25, 0x6c, 0xf8, 0x62, 
+0xea, 0xdf, 0xb4, 0x4c, 0x0d, 0x5f, 0x32, 0x03, 
+0x16, 0x30, 0x5c, 0x86, 0xae, 0xf5, 0x54, 0x50, 
+0x0d, 0x42, 0x60, 0x8c, 0x5b, 0xfa, 0xdf, 0x5d, 
+0x40, 0xcb, 0x40, 0x04, 0x3f, 0xbb, 0x54, 0x20, 
+0x96, 0x04, 0x40, 0xc8, 0xf8, 0x5a, 0xa3, 0x95, 
+0x90, 0xaa, 0x25, 0x55, 0x6a, 0xb4, 0x96, 0x05, 
+0x61, 0x43, 0x6d, 0xc0, 0xa9, 0x73, 0x75, 0xa8, 
+0x01, 0x63, 0xa9, 0x40, 0xdc, 0x51, 0x17, 0xa8, 
+0x31, 0xbc, 0xd6, 0x68, 0x15, 0xd0, 0x42, 0xaa, 
+0x97, 0x34, 0x78, 0x1d, 0x00, 0x12, 0x66, 0x42, 
+0xe0, 0xf5, 0xc0, 0x58, 0xab, 0xa4, 0x66, 0xcd, 
+0x35, 0xd0, 0x7a, 0x60, 0xdc, 0x11, 0x08, 0x4d, 
+0x33, 0x20, 0x64, 0x7c, 0x60, 0x40, 0xd8, 0xcb, 
+0x3a, 0x10, 0x29, 0x69, 0xb4, 0xa4, 0xb1, 0xd0, 
+0xeb, 0x00, 0x8c, 0x80, 0x11, 0x01, 0x00, 0x61, 
+0xcf, 0x07, 0x06, 0x1b, 0x25, 0x2d, 0x02, 0x85, 
+0xd2, 0xb5, 0x58, 0x7a, 0x2f, 0x00, 0x24, 0x60, 
+0x86, 0x4b, 0x89, 0x0d, 0xcd, 0x82, 0xd0, 0x14, 
+0x00, 0x25, 0xe3, 0x03, 0x0d, 0x3c, 0x1e, 0x78, 
+0x39, 0x30, 0x38, 0x0e, 0x24, 0x42, 0x1a, 0x07, 
+0xe2, 0xdd, 0xdd, 0xdd, 0xfd, 0xfd, 0xfd, 0xfd, 
+0xc3, 0xd1, 0x68, 0xb4, 0x3d, 0x1a, 0x8d, 0xb6, 
+0xe9, 0xba, 0x9e, 0xd2, 0x75, 0x3d, 0x25, 0xa5, 
+0xd4, 0x4c, 0xd3, 0xcc, 0x99, 0xa6, 0x39, 0x67, 
+0x18, 0xc6, 0x0d, 0xc3, 0x30, 0x66, 0x6f, 0xdc, 
+0xb8, 0x71, 0xe9, 0xcc, 0x99, 0x33, 0xa7, 0x5c, 
+0xd7, 0xbd, 0x09, 0xe4, 0x81, 0x9b, 0x21, 0xcd, 
+0x87, 0x00, 0x31, 0x6a, 0x81, 0x68, 0xb6, 0x4b, 
+0x34, 0xdc, 0x05, 0x42, 0xc6, 0x07, 0x74, 0x0f, 
+0x3c, 0x1e, 0x78, 0x39, 0x01, 0xb4, 0x94, 0x34, 
+0x05, 0xb4, 0x0c, 0x0e, 0x0e, 0xde, 0x37, 0x30, 
+0x30, 0xb0, 0xb5, 0xb3, 0xb3, 0xf3, 0xfe, 0x78, 
+0x3c, 0xde, 0xd3, 0xd0, 0x0f, 0x95, 0xc4, 0xb6, 
+0xed, 0xfc, 0xec, 0xec, 0xec, 0x17, 0x57, 0xaf, 
+0x5e, 0x3d, 0x3e, 0x3e, 0x3e, 0xfe, 0x6b, 0xc3, 
+0x30, 0xae, 0x01, 0x73, 0x40, 0xae, 0xa4, 0xf3, 
+0x54, 0xc0, 0x08, 0x18, 0x11, 0xee, 0x16, 0x0d, 
+0x81, 0xd0, 0x10, 0x00, 0x75, 0x8c, 0xd7, 0xf0, 
+0x69, 0x1d, 0x03, 0x92, 0x25, 0xa3, 0xdb, 0x80, 
+0x56, 0xa0, 0x7d, 0xf3, 0xe6, 0xcd, 0x8f, 0xad, 
+0x5d, 0xbb, 0x76, 0x6f, 0x34, 0x1a, 0xed, 0x08, 
+0x9e, 0xa1, 0x58, 0x2a, 0xe9, 0x4c, 0x3b, 0xd1, 
+0xf9, 0x18, 0x7a, 0x51, 0x47, 0x33, 0x74, 0xf4, 
+0x62, 0x04, 0xe9, 0x48, 0xac, 0xa8, 0x89, 0x19, 
+0x31, 0x31, 0xa3, 0x06, 0x66, 0xcc, 0xe0, 0x46, 
+0xf7, 0x2c, 0xc5, 0x44, 0xa1, 0xfc, 0xfb, 0xae, 
+0xeb, 0x5a, 0x57, 0xae, 0x5c, 0xf9, 0x78, 0x6c, 
+0x6c, 0xec, 0x60, 0x2e, 0x97, 0xbb, 0x0c, 0xcc, 
+0x02, 0xd9, 0x10, 0x20, 0x79, 0x2a, 0x5d, 0xc3, 
+0x6e, 0x06, 0x84, 0xdb, 0x02, 0x50, 0x63, 0x7c, 
+0x10, 0xe0, 0xa2, 0x54, 0x3c, 0xde, 0x0a, 0xb4, 
+0x03, 0xed, 0xc3, 0xc3, 0xc3, 0x0f, 0xaf, 0x5f, 
+0xbf, 0xfe, 0x77, 0x12, 0x89, 0x44, 0x1f, 0x80, 
+0x56, 0xd4, 0x49, 0x5f, 0x6d, 0x27, 0x7d, 0xb9, 
+0x93, 0xd4, 0x4c, 0x2b, 0xc2, 0xbd, 0xdd, 0x1c, 
+0xa8, 0x22, 0x85, 0x96, 0x3c, 0xb3, 0x2b, 0xae, 
+0x31, 0xdb, 0x77, 0x8d, 0x9b, 0x6d, 0xf3, 0x00, 
+0x38, 0x8e, 0x63, 0x5c, 0xbc, 0x78, 0xf1, 0xe7, 
+0xc7, 0x8e, 0x1d, 0x3b, 0x64, 0x18, 0xc6, 0x14, 
+0x70, 0xbd, 0x04, 0xc6, 0x1c, 0x7e, 0xf7, 0x28, 
+0x94, 0x80, 0x68, 0x18, 0x84, 0x45, 0x01, 0x58, 
+0xc0, 0xf8, 0x80, 0xee, 0xad, 0x40, 0x1a, 0xe8, 
+0x6c, 0x6d, 0x6d, 0x1d, 0x7a, 0xfc, 0xf1, 0xc7, 
+0x9f, 0x6f, 0x6b, 0x6b, 0x5b, 0xe7, 0x1b, 0xae, 
+0xd1, 0x77, 0x6a, 0x25, 0x1d, 0x17, 0xba, 0x10, 
+0x5e, 0xe3, 0x46, 0x2f, 0x24, 0xf9, 0xd6, 0x9b, 
+0x4c, 0x6e, 0xb8, 0x40, 0xae, 0x6b, 0x0e, 0x00, 
+0xcb, 0xb2, 0x72, 0x27, 0x4e, 0x9c, 0x78, 0xed, 
+0xe4, 0xc9, 0x93, 0x47, 0x81, 0x19, 0xe0, 0x1a, 
+0x3e, 0x23, 0xc2, 0x6c, 0x68, 0x08, 0x84, 0x05, 
+0x01, 0xa8, 0x43, 0x7b, 0x9d, 0x0a, 0xe5, 0xdb, 
+0x80, 0x0e, 0xa0, 0x6b, 0x70, 0x70, 0x70, 0x64, 
+0xfb, 0xf6, 0xed, 0x2f, 0x44, 0xa3, 0xd1, 0x36, 
+0x69, 0x4b, 0xba, 0xc6, 0xfb, 0xe8, 0xfa, 0xaa, 
+0x07, 0xe9, 0xc8, 0x25, 0x1b, 0x5e, 0x2b, 0xb9, 
+0x9e, 0x2c, 0x57, 0xee, 0xbf, 0x44, 0x31, 0x55, 
+0x00, 0x70, 0xbf, 0xfc, 0xf2, 0xcb, 0x43, 0x47, 
+0x8f, 0x1e, 0x7d, 0x1b, 0xc8, 0xe0, 0x03, 0x31, 
+0xcb, 0xad, 0x20, 0x38, 0xf8, 0xf6, 0x37, 0x0e, 
+0x40, 0xcd, 0x50, 0x57, 0xcf, 0xf8, 0x2e, 0xa0, 
+0x7b, 0x64, 0x64, 0x64, 0xcf, 0xc8, 0xc8, 0xc8, 
+0xb3, 0x8a, 0xa2, 0xe8, 0xb1, 0xd9, 0x38, 0x03, 
+0xff, 0x35, 0x84, 0x5a, 0xd4, 0x96, 0xcf, 0xe2, 
+0xba, 0x2d, 0x86, 0xe9, 0xe1, 0xab, 0x4c, 0xdf, 
+0x37, 0x05, 0xc0, 0xd4, 0xd4, 0xd4, 0xd8, 0xe8, 
+0xe8, 0xe8, 0x8f, 0x2c, 0xcb, 0xba, 0x0c, 0x4c, 
+0xe3, 0x77, 0x8b, 0x39, 0x6e, 0x65, 0x42, 0x5d, 
+0x10, 0x16, 0x03, 0x20, 0x18, 0xea, 0x02, 0xda, 
+0x27, 0x29, 0x51, 0x1e, 0xe8, 0xdd, 0xb1, 0x63, 
+0xc7, 0x33, 0xeb, 0xd6, 0xad, 0xdb, 0x2f, 0x84, 
+0x10, 0xa9, 0x8b, 0x6d, 0xf4, 0x1c, 0x5f, 0xd1, 
+0x54, 0x1f, 0x5f, 0xaa, 0xe4, 0x56, 0xcc, 0x71, 
+0xf5, 0x81, 0x49, 0x3c, 0xc5, 0x65, 0x6e, 0x6e, 
+0xee, 0xec, 0xc1, 0x83, 0x07, 0xff, 0xce, 0x30, 
+0x8c, 0x4b, 0xf8, 0x6c, 0x08, 0x83, 0x50, 0x0e, 
+0x8c, 0x0d, 0x01, 0x50, 0x43, 0xfd, 0x20, 0xda, 
+0x87, 0x3d, 0xdf, 0xbb, 0x71, 0xe3, 0xc6, 0xdd, 
+0x0f, 0x3d, 0xf4, 0xd0, 0xf3, 0x80, 0xe8, 0xf8, 
+0xbc, 0x8b, 0xd6, 0xaf, 0xda, 0xef, 0x9a, 0xa1, 
+0x8b, 0x89, 0xd9, 0x6a, 0x70, 0xf5, 0xe1, 0x4b, 
+0xd8, 0x31, 0x9b, 0x4c, 0x26, 0x73, 0xe2, 0x9d, 
+0x77, 0xde, 0xf9, 0x7b, 0xe0, 0x32, 0x15, 0x10, 
+0x72, 0xf8, 0x81, 0xb1, 0x3c, 0x44, 0xd6, 0x82, 
+0x50, 0xd5, 0x51, 0x6b, 0xa6, 0xb8, 0xc1, 0x58, 
+0x1f, 0x44, 0xfc, 0x56, 0xa0, 0x63, 0x60, 0x60, 
+0xe0, 0xfe, 0x6d, 0xdb, 0xb6, 0x7d, 0x57, 0x08, 
+0x21, 0xd2, 0xa7, 0x3b, 0x48, 0x9e, 0x69, 0xc5, 
+0x11, 0xce, 0x37, 0xa2, 0xca, 0x9c, 0x4a, 0xf7, 
+0xd1, 0x15, 0x48, 0x47, 0xa1, 0xa7, 0xa7, 0x67, 
+0x64, 0xd7, 0xae, 0x5d, 0xbf, 0x87, 0xef, 0xa4, 
+0x34, 0xfe, 0x08, 0x15, 0xc3, 0xef, 0xbe, 0xe5, 
+0x59, 0x67, 0x6d, 0x7e, 0xa2, 0xde, 0x4c, 0xb0, 
+0x5e, 0xe0, 0x6b, 0x01, 0xd2, 0xa9, 0x54, 0x6a, 
+0x60, 0xf7, 0xee, 0xdd, 0x7f, 0xaa, 0x69, 0x5a, 
+0x24, 0x36, 0x19, 0x27, 0x39, 0xde, 0x8a, 0x2b, 
+0xdd, 0xe6, 0x5d, 0x07, 0x08, 0x29, 0x50, 0xa3, 
+0x2a, 0x6a, 0x44, 0xc5, 0x36, 0x6c, 0xac, 0x82, 
+0x55, 0x27, 0x1d, 0x72, 0x7b, 0x51, 0x6e, 0xaa, 
+0x74, 0x7c, 0xda, 0xcd, 0xf5, 0x87, 0x32, 0xac, 
+0x5b, 0xb7, 0xee, 0xc9, 0x6c, 0x36, 0x3b, 0x79, 
+0xfc, 0xf8, 0xf1, 0x9f, 0x51, 0x7f, 0xa6, 0x58, 
+0xb5, 0xa4, 0x86, 0xc5, 0x01, 0x50, 0xf1, 0xe9, 
+0x9f, 0xc0, 0x9f, 0xd9, 0xb5, 0xef, 0xd9, 0xb3, 
+0xe7, 0xbb, 0xf1, 0x78, 0xbc, 0x43, 0xcd, 0x6a, 
+0xb4, 0xfc, 0x3a, 0x8d, 0x23, 0x9d, 0xa6, 0x1a, 
+0x2b, 0x55, 0x49, 0xac, 0x35, 0x4a, 0xa2, 0x2b, 
+0x41, 0x3c, 0x1d, 0x47, 0x4f, 0x68, 0xe8, 0x71, 
+0x1d, 0x2d, 0xa6, 0xa1, 0xc5, 0x34, 0xac, 0x82, 
+0xc5, 0xd5, 0x93, 0x53, 0x4c, 0x9d, 0xca, 0xe0, 
+0xda, 0xf5, 0x81, 0x55, 0x34, 0x05, 0xf0, 0x70, 
+0xac, 0xca, 0xe7, 0x5a, 0x46, 0xa7, 0xe5, 0x74, 
+0x2b, 0xf3, 0xdf, 0x9a, 0x13, 0x5b, 0x1f, 0xd8, 
+0xfa, 0xdc, 0xc4, 0xc4, 0xc4, 0xe9, 0x6c, 0x36, 
+0x9b, 0xa7, 0x7a, 0xed, 0x10, 0x04, 0x43, 0x11, 
+0x5e, 0x33, 0x94, 0xbb, 0xc0, 0xed, 0x86, 0xbd, 
+0xb5, 0x6b, 0xd7, 0x6e, 0xe8, 0xe9, 0xe9, 0x19, 
+0x11, 0x9e, 0xa0, 0xe5, 0x57, 0x6d, 0x78, 0xae, 
+0x8b, 0x2b, 0x9c, 0x86, 0xd4, 0x93, 0x0e, 0x7a, 
+0xab, 0x46, 0x4b, 0x7f, 0x82, 0x78, 0x77, 0x0c, 
+0x2d, 0xa9, 0x22, 0x74, 0x90, 0xba, 0x40, 0x46, 
+0x04, 0x32, 0x22, 0x51, 0x63, 0x0a, 0xa9, 0x95, 
+0x2d, 0x6c, 0xd8, 0xff, 0x2d, 0x76, 0xff, 0xd5, 
+0x63, 0xac, 0xd9, 0x35, 0x84, 0x27, 0xab, 0x9f, 
+0x23, 0x74, 0xd8, 0xfd, 0xd7, 0x8f, 0xa1, 0xc4, 
+0x95, 0x5b, 0x7e, 0x23, 0xfa, 0x55, 0x1c, 0xfd, 
+0x5a, 0x04, 0x55, 0x53, 0x23, 0x3b, 0x77, 0xee, 
+0xdc, 0x4f, 0xa5, 0x1b, 0xc4, 0x4b, 0x8e, 0x0c, 
+0xaf, 0x40, 0x2b, 0x4e, 0x59, 0xc4, 0xfb, 0x55, 
+0x00, 0x6c, 0xdb, 0xb6, 0xed, 0x77, 0x15, 0x45, 
+0x11, 0xd1, 0x0b, 0x71, 0x28, 0x08, 0x1c, 0xe9, 
+0x36, 0xa4, 0xae, 0xe2, 0xa1, 0xb4, 0x68, 0x28, 
+0x09, 0x05, 0x74, 0x01, 0x11, 0x81, 0x88, 0x48, 
+0x5f, 0x75, 0x5f, 0x65, 0x54, 0x22, 0x23, 0x12, 
+0x19, 0x51, 0x90, 0x11, 0x49, 0xbc, 0x2b, 0xce, 
+0x96, 0x3f, 0x18, 0x61, 0xe7, 0x9f, 0xef, 0x40, 
+0xc6, 0x15, 0x1c, 0xe9, 0x42, 0x44, 0xf0, 0x9d, 
+0xef, 0x3f, 0xc1, 0xd0, 0xf6, 0x55, 0x38, 0xa2, 
+0xfe, 0x6f, 0x45, 0x4f, 0x25, 0x90, 0x52, 0x32, 
+0x38, 0x38, 0xf8, 0xf0, 0x8a, 0x15, 0x2b, 0xd6, 
+0xe0, 0x33, 0x37, 0x51, 0x02, 0x40, 0xa3, 0x4e, 
+0x2c, 0x50, 0x6b, 0xbc, 0x5f, 0x4b, 0xff, 0x38, 
+0x90, 0xda, 0xb4, 0x69, 0xd3, 0x03, 0x9d, 0x9d, 
+0x9d, 0xf7, 0x08, 0x4b, 0xa0, 0x7d, 0x19, 0xc1, 
+0x15, 0x8d, 0x53, 0x5f, 0x51, 0x15, 0x50, 0x3d, 
+0xd0, 0x40, 0x94, 0xd4, 0xf5, 0x1c, 0xae, 0x5d, 
+0x98, 0xc1, 0x36, 0x1d, 0x5c, 0xc7, 0x25, 0x91, 
+0x8e, 0xd3, 0xda, 0x97, 0x62, 0xe0, 0xdb, 0x03, 
+0x28, 0x11, 0xc5, 0x57, 0x5d, 0x61, 0xf5, 0xf6, 
+0x21, 0xba, 0xee, 0xed, 0xe4, 0xf0, 0x0f, 0x7e, 
+0xce, 0xa3, 0x7f, 0xbc, 0x83, 0xd5, 0x0f, 0xae, 
+0xc2, 0xf3, 0x28, 0x7b, 0xbd, 0x56, 0x44, 0x56, 
+0xa0, 0x4d, 0xea, 0xd8, 0x2b, 0x2d, 0xe5, 0x91, 
+0x47, 0x1e, 0xd9, 0xff, 0xd6, 0x5b, 0x6f, 0x4d, 
+0xe0, 0xcf, 0x10, 0xe7, 0xa9, 0x2c, 0x9a, 0x82, 
+0x05, 0x13, 0x65, 0x00, 0x6a, 0x18, 0x11, 0x8c, 
+0xfd, 0xe5, 0xf9, 0xfe, 0xc8, 0xc8, 0xc8, 0x53, 
+0x52, 0x4a, 0x94, 0x33, 0x3a, 0xae, 0xed, 0x81, 
+0x6c, 0x3c, 0x5a, 0x49, 0x5d, 0xc1, 0x2b, 0xa5, 
+0x42, 0x1c, 0xe9, 0x31, 0x3b, 0x75, 0x83, 0xdc, 
+0xf4, 0x3c, 0xae, 0x53, 0xe9, 0xc3, 0xd7, 0xae, 
+0x5c, 0x87, 0x93, 0x70, 0xfa, 0x97, 0xe3, 0xac, 
+0xdb, 0x79, 0x2f, 0x23, 0xbf, 0xbd, 0x11, 0x25, 
+0xaa, 0xa2, 0x44, 0x15, 0xba, 0xee, 0xe9, 0xe2, 
+0x0f, 0x7f, 0xf8, 0x2c, 0x6a, 0x44, 0x45, 0x48, 
+0x81, 0xe7, 0x7a, 0xfe, 0x28, 0xb0, 0x40, 0xf0, 
+0x55, 0x4e, 0x47, 0x70, 0xfb, 0x1d, 0xfa, 0xfa, 
+0xfa, 0x46, 0xfa, 0xfb, 0xfb, 0x87, 0x26, 0x27, 
+0x27, 0x83, 0x85, 0x93, 0x4e, 0x65, 0x62, 0x14, 
+0x24, 0x61, 0xaa, 0x00, 0x08, 0x4f, 0x7e, 0x82, 
+0xc4, 0x46, 0x3c, 0x9d, 0x4e, 0xf7, 0xb4, 0xb7, 
+0xb7, 0x0f, 0xe1, 0x82, 0x38, 0x2f, 0x9b, 0xf2, 
+0xbe, 0xdf, 0x22, 0x05, 0xa1, 0x79, 0xe4, 0xe7, 
+0x6f, 0x52, 0xb8, 0x5c, 0xac, 0x18, 0x5e, 0x67, 
+0xce, 0x64, 0x14, 0x1d, 0x3e, 0x3b, 0xfc, 0x19, 
+0x99, 0x73, 0x53, 0x3c, 0xf5, 0x97, 0x4f, 0x12, 
+0x6f, 0x8b, 0xa2, 0x46, 0x15, 0xf4, 0x98, 0x86, 
+0xaa, 0xab, 0x08, 0x45, 0xe2, 0xda, 0x0e, 0x0e, 
+0xf5, 0x19, 0x00, 0x40, 0x11, 0x64, 0x46, 0xc1, 
+0x5b, 0xe1, 0x8a, 0xf5, 0xeb, 0xd7, 0x3f, 0x38, 
+0x39, 0x39, 0xf9, 0x25, 0xd5, 0xc3, 0x61, 0x39, 
+0x13, 0x25, 0x84, 0xa8, 0x8a, 0x01, 0xb5, 0xcb, 
+0xdd, 0x28, 0x10, 0xdf, 0xb4, 0x69, 0xd3, 0x56, 
+0x29, 0xa5, 0x10, 0xd7, 0x15, 0x1c, 0xc7, 0xc1, 
+0x91, 0x8d, 0xab, 0xab, 0xba, 0xb8, 0xaa, 0x47, 
+0x6e, 0x6e, 0x9e, 0xb9, 0x6c, 0x0e, 0xcb, 0xb3, 
+0x1a, 0xfa, 0xde, 0xe5, 0x89, 0x2b, 0xfc, 0xdb, 
+0xdf, 0xbe, 0x0d, 0x52, 0xa0, 0xe8, 0xfe, 0x50, 
+0xa9, 0xc7, 0x75, 0xf4, 0xb8, 0x86, 0x1a, 0x51, 
+0x4b, 0x0c, 0x58, 0x58, 0x99, 0x12, 0x48, 0x29, 
+0x19, 0x18, 0x18, 0xd8, 0x88, 0xcf, 0xe2, 0x00, 
+0x80, 0x5b, 0x02, 0xa1, 0xba, 0x40, 0xff, 0x0f, 
+0x00, 0x88, 0x0d, 0x0c, 0x0c, 0x6c, 0x14, 0x42, 
+0xe0, 0x5e, 0xf5, 0x70, 0x45, 0x73, 0x03, 0xb5, 
+0x94, 0x92, 0x62, 0xb1, 0xe4, 0xf5, 0x26, 0x66, 
+0xc9, 0x8a, 0xa6, 0xf0, 0xd8, 0xf7, 0x1e, 0x45, 
+0xd5, 0x15, 0xa4, 0x2a, 0x51, 0x34, 0xc5, 0xef, 
+0x02, 0x42, 0xe0, 0x98, 0x01, 0x03, 0x16, 0x99, 
+0x7f, 0x4c, 0x81, 0xe6, 0x09, 0xd2, 0xe9, 0xf4, 
+0x60, 0x3a, 0x9d, 0xee, 0x9c, 0x9d, 0x9d, 0x9d, 
+0xaa, 0x01, 0x40, 0x52, 0x5a, 0x1f, 0x2c, 0xc6, 
+0x00, 0x3d, 0x16, 0x8b, 0xa5, 0xba, 0xbb, 0xba, 
+0xd7, 0x4a, 0x29, 0xb1, 0x33, 0x6e, 0x53, 0xde, 
+0x77, 0xa4, 0x83, 0x8d, 0xdd, 0xb0, 0xd7, 0xcb, 
+0xde, 0xd3, 0x61, 0xef, 0x5f, 0x7c, 0x87, 0xa1, 
+0xcd, 0xab, 0x40, 0x0a, 0x10, 0xa5, 0x8c, 0xa9, 
+0xe3, 0x62, 0x5b, 0x36, 0x8e, 0xed, 0x60, 0x0b, 
+0x7b, 0xf1, 0xe7, 0xb8, 0x0e, 0xde, 0x75, 0x90, 
+0x52, 0x8a, 0xcd, 0x9b, 0x37, 0x7f, 0x1b, 0xbf, 
+0x3b, 0xd7, 0x67, 0x40, 0xc8, 0xf8, 0x70, 0x0c, 
+0x50, 0x01, 0x7d, 0xf5, 0xea, 0xd5, 0x83, 0x8a, 
+0xaa, 0x68, 0x6e, 0xce, 0xc5, 0x31, 0x9c, 0xa6, 
+0xbc, 0x58, 0x05, 0x6b, 0x83, 0xa2, 0xa8, 0x0a, 
+0xbf, 0xf5, 0xc2, 0x1e, 0x06, 0x37, 0x0c, 0xe0, 
+0xe1, 0xe1, 0x79, 0x2e, 0xae, 0xe3, 0xe2, 0xd8, 
+0x0e, 0x66, 0xd1, 0xc3, 0x73, 0x3d, 0x2c, 0xd3, 
+0xc6, 0xf1, 0x6e, 0xc3, 0x00, 0xc0, 0x99, 0x71, 
+0x51, 0x7b, 0x14, 0xba, 0xba, 0xba, 0x56, 0x51, 
+0x19, 0x06, 0x6b, 0x93, 0xb1, 0x75, 0x47, 0x81, 
+0x72, 0x37, 0x68, 0x6b, 0x6b, 0xeb, 0x94, 0x52, 
+0xe2, 0x18, 0x2e, 0x6e, 0x93, 0xb3, 0xbe, 0x3b, 
+0x11, 0x45, 0x93, 0x1c, 0x79, 0xeb, 0x17, 0x1c, 
+0x79, 0xeb, 0x17, 0xe0, 0xe1, 0x03, 0xe0, 0x7a, 
+0x78, 0x8e, 0x8b, 0xeb, 0x95, 0xae, 0xae, 0x87, 
+0x65, 0x5b, 0xb7, 0xce, 0x60, 0x6a, 0xc4, 0x35, 
+0x24, 0x52, 0x4a, 0xe2, 0xf1, 0x78, 0x2b, 0x0b, 
+0x18, 0x0f, 0x88, 0x7a, 0xa3, 0x40, 0x39, 0xe9, 
+0xd9, 0xd2, 0xd2, 0x92, 0x16, 0x42, 0xe0, 0x16, 
+0x5d, 0x9c, 0x66, 0xa3, 0xff, 0x1d, 0x88, 0x63, 
+0x3a, 0x14, 0xaf, 0x15, 0x6f, 0x7f, 0x63, 0x03, 
+0xac, 0xb2, 0x0d, 0x81, 0x10, 0x82, 0x58, 0x2c, 
+0x96, 0xa2, 0x62, 0x7c, 0xed, 0xce, 0x54, 0x55, 
+0x17, 0x08, 0xae, 0xc1, 0x4d, 0x4a, 0x32, 0x99, 
+0x6c, 0x95, 0x52, 0xe2, 0x9a, 0xee, 0x1d, 0x2f, 
+0x7a, 0xbe, 0x29, 0xb1, 0x0d, 0x07, 0x29, 0x65, 
+0x00, 0x40, 0xd5, 0xf0, 0x17, 0xbe, 0x4f, 0xa5, 
+0xda, 0xf8, 0x2a, 0x4d, 0x26, 0x93, 0xad, 0x42, 
+0x08, 0xac, 0xa2, 0xfd, 0xb5, 0x30, 0x60, 0x39, 
+0xc5, 0x35, 0x5c, 0x84, 0x10, 0x44, 0xa3, 0xd1, 
+0x04, 0xd5, 0x9e, 0xaf, 0x92, 0x45, 0x37, 0x46, 
+0x84, 0xf0, 0xc7, 0x53, 0x29, 0x25, 0x42, 0x7e, 
+0x7d, 0xd9, 0x9e, 0xe5, 0x10, 0x21, 0xfd, 0xb6, 
+0xdf, 0x2e, 0xeb, 0xad, 0xb2, 0xc8, 0xb6, 0x74, 
+0x3e, 0x9f, 0xcf, 0x0a, 0x21, 0xd0, 0x12, 0x2a, 
+0x52, 0x59, 0xfe, 0x24, 0xe7, 0xdd, 0x14, 0x35, 
+0xae, 0x20, 0x84, 0xc0, 0x30, 0x8c, 0x9b, 0xd4, 
+0xec, 0x21, 0x56, 0xdd, 0x57, 0xba, 0x86, 0x41, 
+0x08, 0x6e, 0x76, 0xca, 0x00, 0xc4, 0x34, 0x14, 
+0xa9, 0x7c, 0x1d, 0xed, 0x5e, 0x36, 0xd1, 0xe2, 
+0x7a, 0x00, 0xc0, 0x1c, 0xa1, 0xfd, 0x43, 0x16, 
+0x49, 0x88, 0x04, 0x1f, 0x96, 0x77, 0x69, 0x73, 
+0xb9, 0xdc, 0x75, 0x29, 0x25, 0x5a, 0xa2, 0x31, 
+0x00, 0x5a, 0xd2, 0x49, 0x5a, 0xd2, 0x2d, 0x48, 
+0x45, 0x22, 0xa4, 0x24, 0x48, 0x3e, 0x79, 0x9e, 
+0xff, 0xc7, 0xf3, 0x3c, 0x8a, 0x37, 0x8b, 0xcc, 
+0x5c, 0xbe, 0xb6, 0x0c, 0x26, 0x2e, 0x2e, 0x7a, 
+0x5c, 0x43, 0x4a, 0x89, 0x69, 0x9a, 0x73, 0x54, 
+0x6f, 0xa2, 0x56, 0x01, 0x51, 0x1b, 0x03, 0xaa, 
+0x76, 0x69, 0x67, 0x67, 0x67, 0xaf, 0x09, 0x21, 
+0x50, 0xe3, 0x2a, 0x8a, 0x72, 0x7b, 0x00, 0x76, 
+0xee, 0xdb, 0xc1, 0xee, 0xdf, 0xdf, 0x85, 0xa2, 
+0x2a, 0x78, 0x9e, 0x87, 0x65, 0x58, 0x98, 0x45, 
+0x13, 0x23, 0x6f, 0x60, 0x14, 0x0c, 0x6e, 0x4c, 
+0x67, 0xf9, 0xc9, 0x81, 0x83, 0x0d, 0x3d, 0x6b, 
+0xa9, 0xa2, 0x25, 0x34, 0x84, 0x10, 0xe4, 0xf3, 
+0xf9, 0x2c, 0x95, 0x8c, 0x50, 0x6d, 0x5a, 0xcc, 
+0x0b, 0x77, 0x81, 0x40, 0x83, 0x3d, 0x7a, 0x73, 
+0x62, 0x62, 0xe2, 0x82, 0xe7, 0x79, 0x96, 0x9e, 
+0xd2, 0x34, 0x35, 0xae, 0xe2, 0x16, 0x17, 0x1f, 
+0x0a, 0x55, 0x5d, 0x43, 0x8b, 0xf8, 0x2b, 0x37, 
+0xc7, 0x72, 0x70, 0x6c, 0xc7, 0x67, 0x82, 0x14, 
+0x14, 0xe6, 0x8b, 0xbc, 0xfb, 0xc3, 0xf7, 0xc8, 
+0x4e, 0x67, 0x91, 0xf2, 0xee, 0xc7, 0x93, 0x68, 
+0x77, 0x04, 0x29, 0x25, 0xd3, 0xd3, 0xd3, 0xe7, 
+0xb9, 0x75, 0x3b, 0xbd, 0x2e, 0x03, 0xc2, 0xf4, 
+0xb7, 0x00, 0x73, 0x7e, 0x7e, 0x7e, 0x6e, 0x7a, 
+0x7a, 0xfa, 0x4c, 0x5f, 0x5f, 0xdf, 0x70, 0xbc, 
+0x2f, 0x46, 0xe1, 0xc2, 0xe2, 0x93, 0x14, 0x55, 
+0x55, 0x90, 0x8a, 0x44, 0x51, 0x15, 0x1c, 0xcb, 
+0x29, 0xcd, 0xe6, 0x3c, 0x6e, 0xce, 0xe5, 0xf9, 
+0xc9, 0x3f, 0x1c, 0x24, 0x9b, 0xc9, 0x36, 0xe5, 
+0x7d, 0x21, 0x04, 0xaa, 0xa6, 0x60, 0x99, 0x76, 
+0x13, 0xa6, 0x83, 0x50, 0x05, 0xd1, 0xce, 0x08, 
+0x1e, 0x9e, 0xfb, 0xc9, 0x27, 0x9f, 0x8c, 0xe1, 
+0xe7, 0x06, 0xc3, 0x79, 0xc1, 0x72, 0x1c, 0x50, 
+0x3d, 0xcf, 0x0b, 0xca, 0x4c, 0x02, 0x00, 0x82, 
+0x22, 0x85, 0x22, 0x50, 0x38, 0x7b, 0xf6, 0xec, 
+0x6f, 0xfa, 0xfb, 0xfb, 0x87, 0x63, 0xbd, 0x51, 
+0xcc, 0x4b, 0xd6, 0xa2, 0x3f, 0x2c, 0xa5, 0xc4, 
+0x75, 0x5c, 0xcc, 0x82, 0x89, 0x6d, 0x39, 0x38, 
+0x8e, 0x8b, 0xe7, 0xb8, 0x5c, 0x3c, 0x75, 0xd1, 
+0x37, 0xbe, 0x89, 0x40, 0x2a, 0xa5, 0x24, 0x12, 
+0x8f, 0x60, 0x99, 0x16, 0x4a, 0x13, 0x09, 0x18, 
+0x80, 0x48, 0x8f, 0x8e, 0x54, 0x24, 0x33, 0x33, 
+0x33, 0x17, 0x67, 0x66, 0x66, 0x66, 0xea, 0x00, 
+0x50, 0x06, 0x21, 0xcc, 0xc5, 0x30, 0x03, 0xcc, 
+0xd2, 0x97, 0xf2, 0xc7, 0x8e, 0x1d, 0xfb, 0x15, 
+0xe0, 0x46, 0x3a, 0x75, 0x54, 0x5d, 0x41, 0x91, 
+0x72, 0x41, 0x15, 0x08, 0x2c, 0xc3, 0xc6, 0x2c, 
+0x5a, 0x58, 0x86, 0x89, 0x6d, 0xfa, 0xab, 0xb7, 
+0xb5, 0x9b, 0xd7, 0xf2, 0xd4, 0xf7, 0x9e, 0x24, 
+0x16, 0x8f, 0x2e, 0xfa, 0x7d, 0x45, 0x4a, 0x54, 
+0x45, 0x21, 0x99, 0x4a, 0xd0, 0xd6, 0x99, 0x42, 
+0x55, 0x14, 0x24, 0xe2, 0xb6, 0xdf, 0xa9, 0xd5, 
+0x58, 0x6f, 0x04, 0x21, 0x04, 0xe7, 0xce, 0x9d, 
+0xfb, 0x0d, 0xfe, 0xee, 0xd0, 0xc2, 0x0c, 0xa8, 
+0x01, 0x20, 0x88, 0x01, 0x16, 0x7e, 0xfa, 0x28, 
+0x9f, 0xc9, 0x64, 0x32, 0xd7, 0xaf, 0x5f, 0x3f, 
+0xd7, 0xd5, 0xd5, 0xb5, 0x26, 0x31, 0x14, 0xa7, 
+0x70, 0x76, 0xf1, 0x6e, 0x60, 0x19, 0x16, 0xe0, 
+0x61, 0xe4, 0x0d, 0x84, 0x10, 0xd8, 0xa6, 0x83, 
+0x63, 0x39, 0xf4, 0xad, 0xee, 0xe5, 0xa9, 0xe7, 
+0xf7, 0xf2, 0xd9, 0x91, 0xcf, 0xb9, 0x78, 0xea, 
+0x22, 0xae, 0x7b, 0x6b, 0x3c, 0x49, 0xb6, 0x25, 
+0x48, 0xb4, 0x25, 0x71, 0x1d, 0x17, 0xa3, 0xe0, 
+0x67, 0xaf, 0x04, 0xa2, 0xa9, 0x6e, 0x23, 0x63, 
+0x92, 0x48, 0x6f, 0x04, 0x04, 0xde, 0xa7, 0x9f, 
+0x7e, 0xfa, 0x09, 0xf5, 0xf3, 0x81, 0xfe, 0xb8, 
+0xe4, 0x79, 0x5e, 0xbd, 0x51, 0x20, 0x00, 0xa0, 
+0x88, 0xbf, 0xe7, 0x9e, 0x3b, 0x7a, 0xf4, 0xe8, 
+0x4f, 0xf7, 0xed, 0xdb, 0xf7, 0x67, 0xb1, 0x35, 
+0x51, 0xcc, 0x2b, 0x36, 0x9e, 0xb9, 0x00, 0x25, 
+0x3d, 0x1f, 0x80, 0xe2, 0x7c, 0x81, 0x1f, 0xff, 
+0xe0, 0x1d, 0xda, 0x7b, 0xd3, 0x6c, 0xdf, 0xff, 
+0x70, 0x69, 0x49, 0xeb, 0x12, 0x4d, 0x44, 0x19, 
+0xd9, 0xb5, 0x89, 0xd5, 0x1b, 0x87, 0xc8, 0x9c, 
+0x9f, 0x26, 0x77, 0x3d, 0x87, 0x65, 0xda, 0xa8, 
+0x9a, 0x82, 0x1e, 0xd5, 0xf1, 0x00, 0xb3, 0x60, 
+0x60, 0x58, 0x26, 0x78, 0x02, 0x3c, 0x81, 0x10, 
+0x95, 0xe1, 0xb4, 0x11, 0x49, 0xac, 0x8b, 0x21, 
+0x15, 0xc9, 0xb9, 0x73, 0xe7, 0x4e, 0x9c, 0x3d, 
+0x7b, 0xf6, 0x3c, 0x95, 0xba, 0x81, 0x85, 0x19, 
+0xb0, 0x40, 0x1c, 0x30, 0xf0, 0xe9, 0x33, 0xf7, 
+0xe1, 0x87, 0x1f, 0x8e, 0x6d, 0xdf, 0xbe, 0xfd, 
+0xab, 0xde, 0xde, 0xde, 0x7b, 0x12, 0xf7, 0xc4, 
+0x28, 0x7c, 0x61, 0xd4, 0xb7, 0xdf, 0x83, 0xf9, 
+0xeb, 0xf3, 0xbc, 0x7b, 0xe0, 0x3d, 0x66, 0xaf, 
+0xcc, 0xfa, 0x3a, 0x75, 0x83, 0x1d, 0xcf, 0x6c, 
+0x47, 0xd3, 0x35, 0x1c, 0xdb, 0x5f, 0xdf, 0xeb, 
+0x51, 0x9d, 0xee, 0x55, 0xdd, 0xb4, 0x75, 0xb7, 
+0x61, 0x16, 0x4d, 0xcc, 0x82, 0x59, 0xbe, 0xe2, 
+0x95, 0x26, 0xec, 0x25, 0x3e, 0x36, 0xe3, 0x7d, 
+0x25, 0xa5, 0x10, 0x5d, 0x11, 0xc1, 0x75, 0x5d, 
+0xe7, 0xfd, 0xf7, 0xdf, 0x7f, 0x1b, 0x7f, 0x83, 
+0x74, 0x1e, 0xdf, 0x99, 0xe1, 0x12, 0x9a, 0xb2, 
+0xd4, 0x8e, 0x47, 0x61, 0x00, 0xcc, 0x12, 0x72, 
+0xf3, 0xc0, 0x8d, 0xd1, 0xd1, 0xd1, 0x1f, 0x03, 
+0x5e, 0x74, 0x20, 0x82, 0x96, 0xf4, 0x27, 0x46, 
+0xb5, 0x5a, 0xcc, 0x15, 0x79, 0xef, 0xc0, 0x4f, 
+0xc9, 0x5e, 0xcd, 0x96, 0xdf, 0xcb, 0x5e, 0xcd, 
+0x72, 0xf8, 0x5f, 0xfe, 0x93, 0x33, 0xc7, 0x27, 
+0xb0, 0x0a, 0x26, 0x8e, 0xe5, 0xe2, 0xda, 0x15, 
+0xf5, 0x1c, 0xaf, 0x4a, 0x71, 0xc1, 0xb5, 0x3d, 
+0x6c, 0xc3, 0x46, 0x78, 0xa2, 0xee, 0xef, 0x2c, 
+0xa4, 0xf1, 0x75, 0x51, 0x84, 0x10, 0x8c, 0x8f, 
+0x8f, 0x7f, 0x3c, 0x31, 0x31, 0x31, 0x41, 0xf5, 
+0x36, 0x79, 0x00, 0x40, 0x99, 0xfe, 0x50, 0xb3, 
+0x3b, 0x5c, 0xca, 0x0f, 0x86, 0xf7, 0x05, 0x92, 
+0xf8, 0xe5, 0x2f, 0xdd, 0xc0, 0xca, 0x17, 0x5f, 
+0x7c, 0xf1, 0xa5, 0xa1, 0xa1, 0xa1, 0xcd, 0x6e, 
+0xce, 0x25, 0xff, 0x69, 0x01, 0xaf, 0x66, 0x81, 
+0x28, 0x15, 0x59, 0x95, 0xee, 0xae, 0x15, 0x55, 
+0x57, 0xe9, 0x5b, 0xdb, 0x4b, 0x6b, 0x77, 0x1b, 
+0x8a, 0x2a, 0x71, 0x6c, 0xb7, 0xec, 0xf9, 0xfc, 
+0x5c, 0x9e, 0xc2, 0x5c, 0x9e, 0x7c, 0xae, 0xe0, 
+0x0f, 0xa1, 0x4d, 0x8a, 0xbe, 0x4a, 0x23, 0xb2, 
+0x56, 0xc7, 0x34, 0xcd, 0xe2, 0xcb, 0x2f, 0xbf, 
+0xfc, 0xfd, 0x4c, 0x26, 0x73, 0x1a, 0xb8, 0x8a, 
+0x5f, 0x38, 0x31, 0x47, 0x65, 0x97, 0xb8, 0xaa, 
+0x56, 0xa0, 0x1e, 0x00, 0xb5, 0x75, 0x01, 0x29, 
+0xfc, 0x6a, 0x90, 0xde, 0xce, 0xce, 0xce, 0x7b, 
+0x5f, 0x7a, 0xe9, 0xa5, 0xbf, 0x49, 0x26, 0x93, 
+0x1d, 0x76, 0xc6, 0xa1, 0xf8, 0xdf, 0x66, 0xd3, 
+0x0d, 0x0d, 0x8b, 0xa2, 0x2a, 0x20, 0xb8, 0x23, 
+0x83, 0xc3, 0xa2, 0x76, 0x28, 0x44, 0x37, 0xea, 
+0x78, 0x78, 0xde, 0xa1, 0x43, 0x87, 0xfe, 0x79, 
+0x74, 0x74, 0xf4, 0x67, 0xf8, 0xdb, 0xe4, 0xd3, 
+0xc0, 0x0d, 0x2a, 0x2c, 0xb8, 0x65, 0x8b, 0xbc, 
+0xde, 0x94, 0xac, 0x76, 0x38, 0x2c, 0xe0, 0xef, 
+0xb3, 0xcf, 0xce, 0xcc, 0xcc, 0x5c, 0x7c, 0xfd, 
+0xf5, 0xd7, 0xff, 0xd1, 0x71, 0x1c, 0x43, 0xef, 
+0xd5, 0x88, 0xae, 0x8e, 0x34, 0x45, 0xd1, 0x5a, 
+0x0d, 0x7e, 0x65, 0x29, 0xcf, 0xd0, 0x92, 0x2a, 
+0xb1, 0x0d, 0x11, 0xa4, 0x22, 0x19, 0x1b, 0x1b, 
+0xfb, 0xf7, 0xd1, 0xd1, 0xd1, 0x23, 0x2c, 0x52, 
+0x25, 0x52, 0x6b, 0xec, 0x1d, 0x15, 0x48, 0x3c, 
+0xf1, 0xc4, 0x13, 0xbb, 0xf7, 0xed, 0xdb, 0xf7, 
+0xbc, 0x10, 0x42, 0x58, 0x67, 0x1c, 0xec, 0x4b, 
+0xdf, 0x4c, 0xb2, 0x44, 0x26, 0x05, 0xfa, 0x06, 
+0x15, 0x11, 0x11, 0x9c, 0x3d, 0x7b, 0xf6, 0xc4, 
+0x2b, 0xaf, 0xbc, 0xd2, 0x74, 0x81, 0xc4, 0x2d, 
+0x09, 0x91, 0xd0, 0x88, 0x10, 0x04, 0x43, 0x51, 
+0x7a, 0x48, 0x90, 0x2d, 0x56, 0x0e, 0x1f, 0x3e, 
+0x7c, 0xa4, 0xab, 0xab, 0xab, 0x73, 0xe7, 0xce, 
+0x9d, 0xfb, 0xf5, 0x7b, 0x54, 0xa1, 0xb4, 0x48, 
+0xec, 0x71, 0xa7, 0x26, 0xbe, 0xde, 0x5d, 0x91, 
+0x9d, 0x12, 0xf5, 0x3e, 0x89, 0x50, 0x04, 0x99, 
+0x4c, 0xe6, 0xec, 0x81, 0x03, 0x07, 0xfe, 0x89, 
+0x5b, 0xcb, 0x63, 0xc2, 0x85, 0x52, 0x8d, 0x95, 
+0xc8, 0x40, 0xe3, 0x45, 0x52, 0x4f, 0x3f, 0xfd, 
+0xf4, 0x9e, 0xbd, 0x7b, 0xf7, 0x3e, 0xab, 0x69, 
+0x9a, 0xee, 0xe5, 0x3c, 0xec, 0x93, 0x0e, 0xde, 
+0xd2, 0xc2, 0x42, 0x43, 0xa2, 0xac, 0x92, 0x28, 
+0x83, 0x7e, 0xef, 0x1d, 0x1f, 0x1f, 0x1f, 0x7b, 
+0xf5, 0xd5, 0x57, 0x7f, 0x64, 0x18, 0xc6, 0xf2, 
+0x15, 0x49, 0x41, 0xe3, 0x65, 0x72, 0x5b, 0xb6, 
+0x6c, 0xd9, 0xf4, 0xdc, 0x73, 0xcf, 0xfd, 0x49, 
+0x22, 0x91, 0x68, 0xc3, 0x01, 0xf7, 0x92, 0x87, 
+0x3b, 0xe9, 0xdd, 0x15, 0x36, 0x88, 0xb4, 0x40, 
+0x0e, 0x09, 0x44, 0x02, 0x3c, 0xcf, 0x73, 0x3f, 
+0xfa, 0xe8, 0xa3, 0x43, 0xaf, 0xbd, 0xf6, 0xda, 
+0xf2, 0x97, 0xc9, 0x95, 0x3f, 0x6c, 0xb0, 0x50, 
+0xb2, 0xb7, 0xb7, 0x77, 0xd5, 0x0b, 0x2f, 0xbc, 
+0xf0, 0x47, 0x2b, 0x57, 0xae, 0x1c, 0x06, 0xc0, 
+0x04, 0xf7, 0x82, 0x87, 0x3b, 0xc5, 0x1d, 0x95, 
+0xbd, 0xdc, 0xd2, 0x8e, 0x24, 0xbe, 0xe1, 0x6d, 
+0xfe, 0xeb, 0x7c, 0x3e, 0x9f, 0x7d, 0xf7, 0xdd, 
+0x77, 0xff, 0xf5, 0xf0, 0xe1, 0xc3, 0xbf, 0xc4, 
+0x2f, 0x92, 0xbc, 0x86, 0x1f, 0xed, 0x83, 0xfa, 
+0xe1, 0xa5, 0x17, 0x4a, 0x96, 0x6f, 0x58, 0xb8, 
+0x54, 0x36, 0x8e, 0x3f, 0x44, 0x96, 0x4b, 0x65, 
+0x77, 0xed, 0xda, 0xb5, 0x75, 0xef, 0xde, 0xbd, 
+0xfb, 0x3b, 0x3a, 0x3a, 0xfa, 0x01, 0xb0, 0xc0, 
+0xbb, 0xee, 0x37, 0xcf, 0xcb, 0xd2, 0x1c, 0x18, 
+0x71, 0x10, 0xed, 0xbe, 0x92, 0xf4, 0xdf, 0x32, 
+0x4d, 0xb3, 0x38, 0x36, 0x36, 0xf6, 0x1f, 0x6f, 
+0xbe, 0xf9, 0xe6, 0xfb, 0xf9, 0x7c, 0x3e, 0x28, 
+0x95, 0xbd, 0x41, 0xf5, 0x8c, 0x6f, 0xf9, 0x4a, 
+0x65, 0x17, 0x00, 0x61, 0xa1, 0x62, 0xe9, 0x56, 
+0xfc, 0xae, 0x91, 0x7e, 0xe6, 0x99, 0x67, 0x1e, 
+0x7d, 0xf4, 0xd1, 0x47, 0x9f, 0x4e, 0xa5, 0x52, 
+0xe5, 0x62, 0x69, 0x9c, 0x52, 0x53, 0x0d, 0xf0, 
+0x4c, 0x51, 0x39, 0x11, 0xe0, 0x52, 0x3e, 0x45, 
+0x20, 0x22, 0x9e, 0xff, 0x7f, 0x0a, 0x1f, 0xe2, 
+0x92, 0xd8, 0xb6, 0x6d, 0x9e, 0x3c, 0x79, 0xf2, 
+0xe3, 0x37, 0xde, 0x78, 0xe3, 0x9d, 0x4c, 0x26, 
+0x73, 0xa5, 0xf4, 0xa4, 0x2c, 0x95, 0xe2, 0x87, 
+0xbb, 0x57, 0x2c, 0xbd, 0x08, 0x08, 0xe1, 0x03, 
+0x12, 0xc1, 0x19, 0x81, 0x64, 0xa9, 0xf9, 0x29, 
+0xa0, 0xe5, 0xc1, 0x07, 0x1f, 0xbc, 0x6f, 0xdb, 
+0xb6, 0x6d, 0x5b, 0xd7, 0xac, 0x59, 0x73, 0x7f, 
+0x3a, 0x9d, 0x6e, 0xaa, 0x5c, 0xde, 0x30, 0x8c, 
+0xfc, 0xf9, 0xf3, 0xe7, 0xbf, 0xf8, 0xfc, 0xf3, 
+0xcf, 0x8f, 0x7f, 0xf0, 0xc1, 0x07, 0xc7, 0xe7, 
+0xe7, 0xe7, 0x83, 0xe0, 0x16, 0x78, 0xfb, 0xeb, 
+0x2b, 0x97, 0x2f, 0xdf, 0xbc, 0xf8, 0x81, 0x89, 
+0x80, 0x11, 0x75, 0x0f, 0x4c, 0x0c, 0x0f, 0x0f, 
+0xf7, 0x6f, 0xd9, 0xb2, 0x65, 0x38, 0x95, 0x4a, 
+0xa5, 0x5b, 0x5a, 0x5a, 0x5a, 0xe3, 0xf1, 0x78, 
+0x2a, 0x91, 0x48, 0xb4, 0xa8, 0xaa, 0xaa, 0xe6, 
+0xf3, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xb9, 0x9b, 
+0x37, 0x6f, 0xce, 0xe5, 0x72, 0xb9, 0xd9, 0x4b, 
+0x97, 0x2e, 0x4d, 0x1e, 0x39, 0x72, 0xe4, 0x94, 
+0x65, 0x59, 0x8b, 0x1d, 0x98, 0x08, 0x1b, 0x5e, 
+0x75, 0x72, 0xa4, 0x51, 0xe3, 0x9b, 0x06, 0x20, 
+0x04, 0x02, 0xdc, 0xf9, 0x91, 0x99, 0xf0, 0x46, 
+0x65, 0x30, 0x13, 0x0d, 0xf2, 0x10, 0xe5, 0x74, 
+0x1c, 0x95, 0xe3, 0x32, 0xb5, 0xba, 0xe0, 0x91, 
+0x19, 0x16, 0x89, 0xf6, 0x0b, 0xda, 0xf3, 0x0d, 
+0x1d, 0x9a, 0x0a, 0x9f, 0x1c, 0x83, 0xea, 0xe9, 
+0x77, 0x00, 0xc2, 0xd7, 0x72, 0x68, 0x6a, 0x49, 
+0x07, 0x27, 0x97, 0x70, 0x6c, 0xae, 0x76, 0xaf, 
+0xae, 0x76, 0x4f, 0x22, 0xd0, 0xdb, 0x1e, 0x9b, 
+0x63, 0x09, 0xc6, 0xc3, 0x12, 0x01, 0x80, 0x2a, 
+0x10, 0xa0, 0x9a, 0x11, 0xe1, 0x9d, 0xe6, 0x46, 
+0x0e, 0x4e, 0x86, 0xf5, 0xb6, 0x07, 0x27, 0x59, 
+0xa2, 0xe1, 0xe5, 0x06, 0xff, 0x7f, 0x3f, 0x3a, 
+0xbb, 0x6c, 0x00, 0x54, 0x3d, 0x74, 0x19, 0x0f, 
+0x4f, 0x87, 0xae, 0xfe, 0x8b, 0xff, 0xad, 0x87, 
+0xa7, 0xff, 0xaf, 0xca, 0xff, 0x00, 0x5d, 0x5f, 
+0xd4, 0x5d, 0x0a, 0x17, 0x7b, 0x9f, 0x00, 0x00, 
+0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 
+0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity4.png b/source/bitmaps/misc/activity4.png
new file mode 100644 (file)
index 0000000..68d83bc
Binary files /dev/null and b/source/bitmaps/misc/activity4.png differ
diff --git a/source/bitmaps/misc/activity5.cpp b/source/bitmaps/misc/activity5.cpp
new file mode 100644 (file)
index 0000000..b461036
--- /dev/null
@@ -0,0 +1,546 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY5_CPP
+#define MISC_ACTIVITY5_CPP
+
+static unsigned char misc_activity5_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x3c, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xf9, 
+0x6f, 0x1c, 0xe7, 0x79, 0xc7, 0x3f, 0xef, 0x3b, 
+0xc7, 0xce, 0xec, 0x92, 0xbb, 0x5c, 0x1e, 0xa2, 
+0x28, 0x99, 0xd4, 0x41, 0x99, 0xba, 0x45, 0x29, 
+0x96, 0x2c, 0xc9, 0x47, 0x22, 0x55, 0x2e, 0xaa, 
+0xba, 0x6d, 0x64, 0x1b, 0xfe, 0xa5, 0x81, 0x11, 
+0xb4, 0x68, 0xea, 0x16, 0x01, 0x5a, 0x34, 0xff, 
+0x43, 0x7f, 0x28, 0x50, 0xf8, 0x87, 0x22, 0x30, 
+0xd2, 0x02, 0x01, 0x0a, 0x14, 0x72, 0xec, 0xb4, 
+0x28, 0x62, 0xf8, 0x80, 0x93, 0x50, 0x69, 0x5c, 
+0x27, 0xb6, 0x1c, 0xcb, 0xd4, 0x61, 0x39, 0xb2, 
+0x25, 0x4a, 0x24, 0x45, 0x89, 0xa2, 0xb8, 0xa4, 
+0xb4, 0x3c, 0x97, 0x3b, 0xb3, 0x73, 0xf4, 0x87, 
+0xd9, 0x59, 0xce, 0x2e, 0x97, 0xd4, 0xf2, 0x90, 
+0xd3, 0xa2, 0x0f, 0xf0, 0x60, 0xf6, 0x78, 0x67, 
+0xe6, 0x7d, 0xbe, 0xcf, 0xf1, 0x1e, 0xcf, 0xf3, 
+0x0a, 0xdf, 0xf7, 0x79, 0x98, 0x24, 0x84, 0x10, 
+0x8b, 0xfd, 0x55, 0xe5, 0xb7, 0x05, 0x9d, 0xf1, 
+0x1f, 0x72, 0x07, 0xd5, 0x87, 0xf1, 0xd0, 0x0a, 
+0xa1, 0xc5, 0x22, 0xd7, 0xc5, 0xc8, 0x8f, 0x5e, 
+0x2b, 0xf1, 0x5b, 0x6b, 0x40, 0xc4, 0x5a, 0x3d, 
+0xaf, 0x8a, 0xd0, 0xa2, 0xe2, 0xb3, 0xac, 0xf2, 
+0x5b, 0x94, 0xa2, 0x82, 0x2f, 0xc5, 0x41, 0xa3, 
+0x35, 0xea, 0xf8, 0xaa, 0x2d, 0x60, 0x11, 0xc1, 
+0x65, 0xe4, 0x5a, 0x8d, 0x05, 0xe5, 0x20, 0x84, 
+0xc2, 0x78, 0xc5, 0xcf, 0xde, 0x22, 0x5c, 0x02, 
+0x22, 0x7c, 0xed, 0x6a, 0x81, 0x58, 0x15, 0x00, 
+0x11, 0xe1, 0x2b, 0x85, 0x56, 0x22, 0xac, 0x16, 
+0x59, 0xa9, 0xe0, 0x4a, 0x2b, 0x88, 0x0a, 0xea, 
+0x00, 0x6e, 0x95, 0xab, 0x4b, 0x05, 0x18, 0xab, 
+0x05, 0x62, 0x45, 0x2e, 0x50, 0x21, 0x78, 0xa5, 
+0xd0, 0x2a, 0xa0, 0x45, 0x58, 0x2f, 0x72, 0xf8, 
+0x3d, 0x04, 0x24, 0x6a, 0x09, 0xa1, 0xd6, 0x43, 
+0x61, 0x0b, 0x45, 0xb6, 0x2b, 0xae, 0x21, 0x57, 
+0x03, 0x63, 0x45, 0x20, 0x2c, 0xdb, 0x02, 0x22, 
+0xc2, 0x87, 0x02, 0x44, 0xb5, 0xac, 0x03, 0xb1, 
+0x22, 0x1b, 0x45, 0x36, 0x23, 0xdf, 0x43, 0x30, 
+0x42, 0x8b, 0x08, 0x01, 0x88, 0x6a, 0x3e, 0x14, 
+0xd8, 0x2a, 0x72, 0x1e, 0x98, 0x2b, 0x5e, 0xf3, 
+0xc5, 0xdf, 0x42, 0x40, 0x42, 0xcb, 0xf0, 0x28, 
+0x5a, 0xc3, 0x72, 0x41, 0x58, 0x16, 0x00, 0x45, 
+0xe1, 0x43, 0x0e, 0x35, 0x1e, 0x6a, 0x39, 0x14, 
+0x38, 0x0e, 0x24, 0x22, 0x1c, 0x07, 0xe2, 0xeb, 
+0xd6, 0xad, 0xdb, 0xb8, 0x71, 0xe3, 0xc6, 0x1d, 
+0x86, 0x61, 0x34, 0x1a, 0x86, 0xd1, 0xa0, 0xeb, 
+0x7a, 0x52, 0xd7, 0xf5, 0xa4, 0x94, 0x52, 0xb3, 
+0x6d, 0x7b, 0xda, 0xb6, 0xed, 0x29, 0xcb, 0xb2, 
+0x26, 0x2c, 0xcb, 0xca, 0x4e, 0x4c, 0x4c, 0xdc, 
+0xbe, 0x71, 0xe3, 0xc6, 0x17, 0x9e, 0xe7, 0xcd, 
+0x02, 0x39, 0x60, 0x36, 0xc2, 0xb9, 0x08, 0x20, 
+0x56, 0x25, 0x10, 0xcb, 0x75, 0x89, 0x9a, 0x5d, 
+0x20, 0x22, 0x7c, 0x68, 0xee, 0xa1, 0xc6, 0x43, 
+0x2d, 0x27, 0x80, 0xfa, 0x22, 0x27, 0x81, 0xfa, 
+0x8e, 0x8e, 0x8e, 0xed, 0xed, 0xed, 0xed, 0x07, 
+0x9b, 0x9b, 0x9b, 0x77, 0xc7, 0xe3, 0xf1, 0xd6, 
+0x9a, 0x5e, 0x54, 0x24, 0xc7, 0x71, 0x72, 0xd9, 
+0x6c, 0xf6, 0xea, 0xdd, 0xbb, 0x77, 0x2f, 0xf4, 
+0xf5, 0xf5, 0x5d, 0xb4, 0x2c, 0xeb, 0x1e, 0x30, 
+0x05, 0x4c, 0x17, 0x79, 0x86, 0x79, 0x30, 0x42, 
+0x8b, 0x88, 0xba, 0x45, 0x4d, 0x20, 0xd4, 0x04, 
+0x40, 0x15, 0xe1, 0x35, 0x02, 0xb3, 0x36, 0x81, 
+0xba, 0xa2, 0xd0, 0x0d, 0x40, 0x0a, 0x68, 0xdc, 
+0xbf, 0x7f, 0xff, 0xd7, 0x3b, 0x3b, 0x3b, 0x4f, 
+0x1a, 0x86, 0xd1, 0x14, 0x3e, 0x43, 0x29, 0xa8, 
+0xa4, 0x33, 0x8d, 0x18, 0x33, 0x26, 0x7a, 0x5e, 
+0x47, 0xb3, 0x74, 0xf4, 0x7c, 0x0c, 0xe9, 0x4a, 
+0x0a, 0x86, 0x8d, 0x1d, 0xb3, 0xb1, 0x0d, 0x0b, 
+0xdb, 0xb4, 0x98, 0x58, 0x97, 0x25, 0x9f, 0x98, 
+0x2b, 0xbd, 0xdf, 0xf3, 0xbc, 0xc2, 0xc8, 0xc8, 
+0xc8, 0xc7, 0xbd, 0xbd, 0xbd, 0x6f, 0x4f, 0x4f, 
+0x4f, 0xdf, 0x01, 0xb2, 0xc0, 0x64, 0x04, 0x90, 
+0x1c, 0xf3, 0xae, 0xe1, 0x2c, 0x07, 0x84, 0x07, 
+0x02, 0x50, 0x21, 0x7c, 0x18, 0xe0, 0x0c, 0xe6, 
+0x35, 0x9e, 0x02, 0x1a, 0x81, 0xc6, 0x1d, 0x3b, 
+0x76, 0x1c, 0xd9, 0xb9, 0x73, 0xe7, 0x37, 0x13, 
+0x89, 0x44, 0x1b, 0x80, 0x96, 0xd7, 0x49, 0xdf, 
+0x6d, 0x24, 0x7d, 0xa7, 0x99, 0xe4, 0x78, 0x0a, 
+0xe1, 0x3d, 0x68, 0x0e, 0x34, 0x4f, 0x73, 0xf5, 
+0x39, 0xb2, 0x1b, 0xee, 0x91, 0x6d, 0xbb, 0xc7, 
+0x6c, 0xc3, 0x0c, 0x00, 0xae, 0xeb, 0x5a, 0xb7, 
+0x6e, 0xdd, 0xfa, 0xe5, 0xb9, 0x73, 0xe7, 0xde, 
+0xb5, 0x2c, 0x6b, 0x14, 0xb8, 0x5f, 0x04, 0x63, 
+0x8a, 0xc0, 0x3d, 0xe6, 0x8a, 0x40, 0xd4, 0x0c, 
+0xc2, 0x92, 0x00, 0x2c, 0x22, 0x7c, 0x68, 0xee, 
+0x29, 0x20, 0x0d, 0x34, 0xa7, 0x52, 0xa9, 0xcd, 
+0xdf, 0xf8, 0xc6, 0x37, 0xbe, 0xd3, 0xd0, 0xd0, 
+0xd0, 0x15, 0x08, 0xae, 0xd1, 0xf6, 0xc5, 0x23, 
+0x34, 0x0d, 0xb5, 0x20, 0xfc, 0xda, 0x85, 0x5e, 
+0x8c, 0x72, 0xa9, 0x59, 0x86, 0xf7, 0x0c, 0x31, 
+0xdd, 0x32, 0x05, 0x40, 0xa1, 0x50, 0x98, 0xbe, 
+0x74, 0xe9, 0xd2, 0xe9, 0x2b, 0x57, 0xae, 0x9c, 
+0x05, 0xc6, 0x81, 0x7b, 0x04, 0x16, 0x11, 0xb5, 
+0x86, 0x9a, 0x40, 0x58, 0x14, 0x80, 0x2a, 0x66, 
+0xaf, 0x33, 0x6f, 0xf2, 0x0d, 0x40, 0x13, 0xd0, 
+0xd2, 0xd1, 0xd1, 0xd1, 0x7d, 0xf4, 0xe8, 0xd1, 
+0x97, 0x0d, 0xc3, 0x68, 0x90, 0x8e, 0xa4, 0xa5, 
+0xaf, 0x8d, 0x96, 0xeb, 0xad, 0x48, 0x57, 0xae, 
+0x5a, 0xf0, 0x4a, 0x9a, 0x6e, 0x9d, 0x64, 0x64, 
+0xf7, 0x6d, 0xf2, 0xc9, 0x39, 0x00, 0xef, 0xda, 
+0xb5, 0x6b, 0xef, 0x9e, 0x3d, 0x7b, 0xf6, 0x4d, 
+0x20, 0x43, 0x00, 0x44, 0x96, 0x85, 0x20, 0xb8, 
+0x04, 0xf2, 0xd7, 0x0e, 0x40, 0xc5, 0x50, 0x57, 
+0x4d, 0xf8, 0x16, 0x60, 0x5d, 0x77, 0x77, 0xf7, 
+0x89, 0xee, 0xee, 0xee, 0x6f, 0x29, 0x8a, 0xa2, 
+0x9b, 0xd9, 0x38, 0xed, 0xbf, 0xd9, 0x8c, 0x9a, 
+0xd7, 0xd6, 0x4e, 0xe2, 0xaa, 0x3d, 0x86, 0xb1, 
+0x1d, 0x77, 0x19, 0xdb, 0x3e, 0x0a, 0xc0, 0xe8, 
+0xe8, 0x68, 0x6f, 0x4f, 0x4f, 0xcf, 0x0f, 0x0b, 
+0x85, 0xc2, 0x1d, 0x60, 0x8c, 0xc0, 0x2d, 0xa6, 
+0x58, 0x68, 0x09, 0x55, 0x41, 0x58, 0x0a, 0x80, 
+0x70, 0xa8, 0x0b, 0xcd, 0xbe, 0x8e, 0xa2, 0xc9, 
+0x03, 0xeb, 0x9f, 0x7c, 0xf2, 0xc9, 0x17, 0xba, 
+0xba, 0xba, 0x9e, 0x13, 0x42, 0x88, 0xe4, 0xad, 
+0x06, 0x5a, 0x2f, 0x6c, 0x58, 0x96, 0x8f, 0xaf, 
+0x96, 0xa6, 0x37, 0x4c, 0x71, 0xf7, 0xb1, 0x61, 
+0x7c, 0xc5, 0x63, 0x6a, 0x6a, 0x6a, 0xe0, 0xed, 
+0xb7, 0xdf, 0xfe, 0x47, 0xcb, 0xb2, 0x6e, 0x13, 
+0x58, 0x43, 0x14, 0x84, 0x52, 0x60, 0xac, 0x09, 
+0x80, 0x0a, 0xd3, 0x0f, 0xa3, 0x7d, 0x54, 0xf3, 
+0xeb, 0xf7, 0xee, 0xdd, 0x7b, 0xfc, 0xf0, 0xe1, 
+0xc3, 0xdf, 0x01, 0x44, 0xd3, 0xe7, 0x2d, 0xa4, 
+0xae, 0x37, 0x3e, 0x34, 0x41, 0x97, 0x22, 0x3b, 
+0x65, 0x71, 0xf7, 0xc8, 0x6d, 0x1c, 0xd3, 0x21, 
+0x93, 0xc9, 0x5c, 0x7a, 0xeb, 0xad, 0xb7, 0xbe, 
+0x0f, 0xdc, 0x61, 0x1e, 0x84, 0x69, 0x82, 0xc0, 
+0x58, 0x1a, 0x22, 0x2b, 0x41, 0x28, 0x73, 0xd4, 
+0x8a, 0x29, 0x6e, 0x38, 0xd6, 0x87, 0x11, 0x3f, 
+0x05, 0x34, 0xb5, 0xb7, 0xb7, 0xef, 0x3e, 0x74, 
+0xe8, 0xd0, 0xb7, 0x85, 0x10, 0x22, 0xfd, 0x65, 
+0x13, 0x75, 0x37, 0x52, 0xb8, 0xc2, 0xfd, 0x9d, 
+0xb0, 0x32, 0xa5, 0xb2, 0xee, 0xec, 0x06, 0xa4, 
+0xab, 0xd0, 0xda, 0xda, 0xda, 0x7d, 0xec, 0xd8, 
+0xb1, 0x17, 0x09, 0x94, 0x94, 0x26, 0x18, 0xa1, 
+0x4c, 0x02, 0xf7, 0x2d, 0xcd, 0x3a, 0x2b, 0xf7, 
+0x27, 0xaa, 0xcd, 0x04, 0xab, 0x05, 0xbe, 0x7a, 
+0x20, 0x9d, 0x4c, 0x26, 0xdb, 0x8f, 0x1f, 0x3f, 
+0xfe, 0xd7, 0x9a, 0xa6, 0xc5, 0xcc, 0xe1, 0x38, 
+0x75, 0x7d, 0x29, 0x3c, 0xe9, 0x2d, 0x5f, 0x75, 
+0xd1, 0x97, 0x29, 0xc5, 0x99, 0x9b, 0xbb, 0xb2, 
+0x45, 0x9d, 0x32, 0xab, 0xd2, 0x74, 0x7e, 0x1d, 
+0xf7, 0x0f, 0x67, 0xe8, 0xea, 0xea, 0xfa, 0x83, 
+0xc9, 0xc9, 0xc9, 0xe1, 0x0b, 0x17, 0x2e, 0xfc, 
+0x9c, 0xea, 0x33, 0xc5, 0xb2, 0x25, 0x35, 0x2c, 
+0x0d, 0x80, 0x4a, 0x60, 0xfe, 0x09, 0x82, 0x99, 
+0x5d, 0xe3, 0x89, 0x13, 0x27, 0xbe, 0x1d, 0x8f, 
+0xc7, 0x9b, 0xd4, 0x49, 0x8d, 0xfa, 0x8b, 0x69, 
+0x5c, 0xe9, 0x2e, 0xbb, 0xc3, 0x42, 0x0a, 0x34, 
+0x53, 0x43, 0x4f, 0xe8, 0xc4, 0x12, 0x3a, 0x5a, 
+0x5c, 0x43, 0x33, 0x35, 0xd4, 0x58, 0xd0, 0x95, 
+0xfc, 0x54, 0x9e, 0xec, 0xcd, 0x09, 0xf2, 0x53, 
+0xf9, 0x9a, 0x9f, 0xa9, 0x65, 0x74, 0xea, 0xbf, 
+0x4c, 0x31, 0xb3, 0x6b, 0x4a, 0x1c, 0x7c, 0xec, 
+0xe0, 0x4b, 0xfd, 0xfd, 0xfd, 0x5f, 0x4e, 0x4e, 
+0x4e, 0xe6, 0x28, 0x5f, 0x3b, 0x84, 0xc1, 0x50, 
+0x44, 0xd7, 0x0c, 0x25, 0x17, 0x78, 0xd0, 0xb0, 
+0xd7, 0xd9, 0xd9, 0xb9, 0xa7, 0xb5, 0xb5, 0xb5, 
+0x5b, 0xf8, 0x82, 0xfa, 0x4f, 0x1b, 0xf0, 0x3d, 
+0x0f, 0x4f, 0xb8, 0xcb, 0x62, 0x54, 0x0f, 0xb5, 
+0x4e, 0x41, 0xab, 0x53, 0x50, 0xe3, 0x12, 0xc5, 
+0x94, 0x28, 0x46, 0x70, 0xd5, 0x12, 0x0a, 0x66, 
+0x93, 0xc1, 0xba, 0x5d, 0x2d, 0xec, 0x79, 0x7e, 
+0x27, 0xbb, 0xfe, 0x64, 0x3b, 0xb1, 0xb4, 0x5e, 
+0xf3, 0xb3, 0x8d, 0xeb, 0x71, 0xf4, 0x7b, 0x31, 
+0x54, 0x4d, 0x8d, 0x3d, 0xf5, 0xd4, 0x53, 0xcf, 
+0x31, 0xef, 0x06, 0xf1, 0xa2, 0x22, 0xa3, 0x2b, 
+0xd0, 0x12, 0x55, 0x0e, 0xd6, 0x51, 0xed, 0x97, 
+0x01, 0x70, 0xe8, 0xd0, 0xa1, 0xe7, 0x15, 0x45, 
+0x11, 0xc6, 0x50, 0x1c, 0xe6, 0x04, 0xae, 0xf4, 
+0x96, 0xcd, 0x18, 0x12, 0x51, 0x64, 0x69, 0x2a, 
+0x08, 0x53, 0x22, 0xe3, 0x0a, 0xd2, 0x0c, 0x58, 
+0x89, 0x2b, 0x28, 0xa6, 0x82, 0x62, 0xaa, 0x34, 
+0x76, 0x36, 0x72, 0xe8, 0xcf, 0x0e, 0xd2, 0xd8, 
+0xd5, 0x58, 0xf3, 0xf3, 0x8d, 0x2f, 0x12, 0x48, 
+0x29, 0xe9, 0xe8, 0xe8, 0x38, 0xb2, 0x61, 0xc3, 
+0x86, 0xad, 0x04, 0x96, 0x9b, 0x28, 0x02, 0xa0, 
+0x51, 0x25, 0x16, 0xc8, 0x0a, 0xed, 0x57, 0x9a, 
+0x7f, 0x1c, 0x48, 0xee, 0xdb, 0xb7, 0xef, 0xb1, 
+0xe6, 0xe6, 0xe6, 0x6d, 0xd2, 0x91, 0x68, 0xd7, 
+0x62, 0xcb, 0xd6, 0xbc, 0x27, 0x5c, 0x84, 0x06, 
+0x32, 0x26, 0x90, 0x31, 0x90, 0x86, 0x00, 0xcd, 
+0xc7, 0xca, 0x5b, 0x64, 0x47, 0xb2, 0x64, 0xfa, 
+0x33, 0xdc, 0xbb, 0x7d, 0x0f, 0x2b, 0x97, 0x47, 
+0x35, 0x15, 0xd4, 0xb8, 0x82, 0x1a, 0x57, 0x31, 
+0xd3, 0x06, 0x47, 0xfe, 0xfc, 0x71, 0xb6, 0x3c, 
+0xb9, 0xa9, 0xb6, 0x77, 0x4c, 0x0a, 0xb4, 0x61, 
+0x1d, 0x45, 0x51, 0x94, 0x27, 0x9e, 0x78, 0xe2, 
+0xb9, 0x08, 0x00, 0x66, 0x04, 0x80, 0x32, 0xa5, 
+0x57, 0xc6, 0x80, 0xe8, 0x62, 0xa7, 0x34, 0xdf, 
+0xef, 0xee, 0xee, 0xfe, 0x43, 0x29, 0x25, 0xca, 
+0x0d, 0x1d, 0xcf, 0xf1, 0x41, 0x2e, 0x3f, 0x60, 
+0x29, 0x86, 0x8a, 0xa7, 0xfa, 0xe4, 0x66, 0xe7, 
+0x98, 0xca, 0xce, 0xe0, 0xd8, 0xce, 0x82, 0x36, 
+0x37, 0x2f, 0xdf, 0xa2, 0xa1, 0x2d, 0xc5, 0xce, 
+0xdf, 0xdb, 0x41, 0x4b, 0x67, 0x33, 0xaa, 0xa1, 
+0xa2, 0xc5, 0x34, 0x0e, 0xfe, 0xe9, 0x63, 0x64, 
+0x33, 0x13, 0x8c, 0xf5, 0x8f, 0x97, 0xb5, 0x6f, 
+0xd9, 0xda, 0xcc, 0xf8, 0xe0, 0x3d, 0x7c, 0x6f, 
+0xbe, 0x3f, 0xca, 0x97, 0x31, 0xbc, 0x8d, 0x2e, 
+0x6d, 0x6d, 0x6d, 0xdd, 0x1b, 0x37, 0x6e, 0xdc, 
+0x3c, 0x3c, 0x3c, 0x1c, 0x2e, 0x9c, 0x74, 0xe6, 
+0x27, 0x46, 0xe1, 0x26, 0x4c, 0x19, 0x1a, 0xd1, 
+0xc9, 0x4f, 0xb8, 0xb1, 0x11, 0x4f, 0xa7, 0xd3, 
+0xad, 0x8d, 0x8d, 0x8d, 0x9b, 0x85, 0x2f, 0x10, 
+0x37, 0xe5, 0x8a, 0xb5, 0x5f, 0x70, 0x6c, 0x66, 
+0x26, 0xa6, 0xc9, 0xcd, 0xe6, 0xb0, 0x0b, 0xd6, 
+0xa2, 0x6d, 0xef, 0xdf, 0xbd, 0xcf, 0xd9, 0x1f, 
+0x7f, 0xcc, 0xdd, 0xbe, 0xbb, 0x68, 0xa6, 0x8a, 
+0x16, 0x57, 0x89, 0xd5, 0xeb, 0x9c, 0xf8, 0xdb, 
+0xe3, 0xa8, 0x09, 0x05, 0x4f, 0xb8, 0xc4, 0x9b, 
+0x4d, 0x9e, 0xf9, 0xbb, 0xe3, 0x7c, 0xfd, 0x2f, 
+0x9f, 0xc4, 0xf5, 0x9d, 0xb2, 0xfb, 0xfd, 0xbc, 
+0x87, 0xcc, 0x28, 0x48, 0x29, 0xc5, 0xce, 0x9d, 
+0x3b, 0x1f, 0x67, 0xde, 0x02, 0xc2, 0xe1, 0xb0, 
+0xb4, 0x13, 0x25, 0x84, 0x10, 0x6a, 0x05, 0x00, 
+0x95, 0x16, 0x10, 0xdf, 0xb7, 0x6f, 0xdf, 0x41, 
+0x29, 0xa5, 0xf0, 0xc7, 0x05, 0xae, 0xeb, 0x2e, 
+0x8c, 0x1a, 0x35, 0x90, 0xeb, 0x15, 0x47, 0x8b, 
+0x1a, 0xef, 0x75, 0x7d, 0x97, 0x8f, 0xfe, 0xe3, 
+0x63, 0x62, 0xa9, 0x18, 0xdb, 0x0e, 0x77, 0xa2, 
+0x19, 0x1a, 0x66, 0x83, 0xc9, 0x89, 0xbf, 0x39, 
+0xce, 0xfd, 0xdb, 0x59, 0x0e, 0xbf, 0x78, 0x08, 
+0x45, 0x57, 0x38, 0xfb, 0xc6, 0x6f, 0xaa, 0x8e, 
+0x44, 0x62, 0x54, 0x20, 0x1f, 0x91, 0xb4, 0xb7, 
+0xb7, 0xef, 0xad, 0x00, 0x60, 0x41, 0x20, 0x54, 
+0x17, 0xf1, 0xff, 0x10, 0x00, 0xb3, 0xbd, 0xbd, 
+0x7d, 0xaf, 0x10, 0x02, 0xef, 0xae, 0x8f, 0x27, 
+0x1e, 0x6e, 0x12, 0xa5, 0x92, 0x7e, 0xf5, 0xfa, 
+0x87, 0xb4, 0xef, 0x7b, 0x84, 0x78, 0x3a, 0x8e, 
+0x16, 0xd3, 0xd8, 0xfb, 0xfb, 0x7b, 0x90, 0x6a, 
+0x80, 0xa2, 0xe7, 0x78, 0x0c, 0x7e, 0x36, 0x88, 
+0x27, 0xaa, 0xcc, 0x43, 0x46, 0x41, 0xf3, 0x05, 
+0xe9, 0x74, 0xba, 0x23, 0x9d, 0x4e, 0x37, 0x67, 
+0xb3, 0xd9, 0x51, 0xca, 0x01, 0x90, 0x14, 0xd7, 
+0x07, 0x95, 0x2e, 0x10, 0xb5, 0x00, 0xdd, 0x34, 
+0xcd, 0xe4, 0xba, 0x96, 0x75, 0x9d, 0x52, 0x4a, 
+0x9c, 0x8c, 0x87, 0x2b, 0xdd, 0xaf, 0x94, 0x73, 
+0x73, 0x39, 0x3e, 0x7d, 0xef, 0x3c, 0x9a, 0xa1, 
+0x06, 0x73, 0x87, 0xb8, 0x1e, 0xb0, 0xa9, 0xe1, 
+0x79, 0x1e, 0x43, 0x57, 0x6f, 0x55, 0xbf, 0xd7, 
+0x73, 0xf1, 0xef, 0x83, 0x94, 0x52, 0xec, 0xdf, 
+0xbf, 0xff, 0x6b, 0x04, 0xee, 0x5c, 0xdd, 0x02, 
+0x22, 0xc2, 0x47, 0x63, 0x80, 0x0a, 0xe8, 0x5b, 
+0xb6, 0x6c, 0xe9, 0x50, 0x54, 0x45, 0xf3, 0xa6, 
+0x3d, 0x5c, 0xcb, 0x7d, 0x70, 0x4e, 0x67, 0x0d, 
+0xc9, 0xac, 0x37, 0x79, 0xf2, 0xc5, 0xa3, 0x1c, 
+0xfc, 0xa3, 0xaf, 0xa1, 0xc6, 0x34, 0x34, 0x43, 
+0x43, 0x37, 0x75, 0x14, 0x55, 0xc1, 0x73, 0x5d, 
+0x06, 0x7f, 0xf5, 0x05, 0x8e, 0xe7, 0x2c, 0xda, 
+0x27, 0x77, 0xdc, 0x43, 0x6d, 0x55, 0x68, 0x69, 
+0x69, 0xd9, 0xc4, 0xfc, 0x30, 0x58, 0xb9, 0x19, 
+0x5b, 0x75, 0x14, 0x28, 0xb9, 0x41, 0x43, 0x43, 
+0x43, 0xb3, 0x94, 0x12, 0xd7, 0xf2, 0xf0, 0x56, 
+0x30, 0xeb, 0x5b, 0x09, 0x49, 0x45, 0xb2, 0xe7, 
+0xe9, 0xdd, 0x1c, 0x7d, 0xfe, 0x08, 0xa9, 0xe6, 
+0x24, 0x8a, 0xae, 0xa2, 0xa8, 0x12, 0x55, 0x53, 
+0xd0, 0x62, 0x2a, 0x9a, 0xae, 0x61, 0xe5, 0x2c, 
+0xae, 0x7e, 0x7a, 0x6d, 0xc9, 0x3e, 0x79, 0x96, 
+0x44, 0x4a, 0x49, 0x3c, 0x1e, 0x4f, 0xb1, 0x88, 
+0xf0, 0xc0, 0x82, 0x20, 0x58, 0xb6, 0xe9, 0x59, 
+0x5f, 0x5f, 0x9f, 0x16, 0x42, 0xe0, 0xe5, 0x3d, 
+0x5c, 0xf1, 0xd5, 0x00, 0x10, 0x4b, 0xc4, 0x28, 
+0xb8, 0x05, 0x86, 0xae, 0xde, 0x62, 0x5b, 0xbc, 
+0x93, 0x58, 0x9d, 0x51, 0xea, 0x99, 0xef, 0xf9, 
+0xd8, 0x96, 0x8d, 0xe3, 0xb8, 0x7c, 0x71, 0xee, 
+0xcb, 0x25, 0xfb, 0xe4, 0x58, 0x02, 0x21, 0x04, 
+0xa6, 0x69, 0x26, 0x99, 0x17, 0xbe, 0x32, 0x33, 
+0x55, 0xe6, 0x02, 0xe1, 0x35, 0x6c, 0xa4, 0xd4, 
+0xd5, 0xd5, 0xa5, 0xa4, 0x94, 0x78, 0xb6, 0xb7, 
+0xea, 0x45, 0x4f, 0xad, 0x34, 0x33, 0x3b, 0xc3, 
+0x67, 0x1f, 0x5d, 0xe6, 0xb3, 0x8f, 0x2e, 0x23, 
+0x84, 0x60, 0x5d, 0x47, 0x0b, 0xdb, 0xf6, 0x6f, 
+0xa3, 0xeb, 0xb1, 0x47, 0xe9, 0x7a, 0xac, 0x0b, 
+0xb3, 0xde, 0x64, 0x74, 0x70, 0x94, 0xb1, 0xbb, 
+0x63, 0x4b, 0x8e, 0x2a, 0x8e, 0xe5, 0x22, 0xa5, 
+0x0c, 0x01, 0x28, 0x1b, 0xfe, 0xa2, 0xed, 0x54, 
+0xca, 0x85, 0x2f, 0xe3, 0xba, 0xba, 0xba, 0x94, 
+0x10, 0x82, 0x42, 0xde, 0xf9, 0xca, 0x2c, 0xa0, 
+0x92, 0xee, 0x0c, 0x8d, 0x70, 0x67, 0x68, 0x84, 
+0x0f, 0xde, 0xfa, 0x15, 0x42, 0x0a, 0x36, 0x6c, 
+0x69, 0xc3, 0x48, 0x98, 0x0f, 0xec, 0x8f, 0x67, 
+0x79, 0x08, 0x21, 0x30, 0x0c, 0x23, 0x41, 0xb9, 
+0xe6, 0xcb, 0x68, 0xc9, 0xc4, 0x88, 0x10, 0x02, 
+0x29, 0x03, 0x5f, 0x12, 0x72, 0xe9, 0x08, 0xd8, 
+0xd8, 0x9a, 0xa6, 0xfb, 0xe9, 0x7d, 0x5c, 0xbf, 
+0xdc, 0xcf, 0x70, 0xdf, 0x30, 0x9e, 0xf7, 0x70, 
+0x2c, 0xe6, 0xce, 0xc0, 0x48, 0xd0, 0xb7, 0x07, 
+0xf4, 0x47, 0xc8, 0xa0, 0xef, 0x0f, 0xda, 0xf5, 
+0x56, 0x59, 0x22, 0x2d, 0x9d, 0xcb, 0xe5, 0x26, 
+0x85, 0x10, 0x68, 0x09, 0x15, 0xa9, 0x2c, 0x3d, 
+0x8b, 0xd9, 0xf3, 0xc4, 0x1e, 0x9e, 0xfb, 0xee, 
+0x29, 0x14, 0x45, 0x21, 0x37, 0x9d, 0xe3, 0xea, 
+0xf9, 0x6b, 0x5c, 0xed, 0xbd, 0x46, 0xff, 0xe5, 
+0x7e, 0x46, 0x87, 0x32, 0x0f, 0xec, 0xc8, 0x5a, 
+0x93, 0x1a, 0x57, 0x10, 0x42, 0x60, 0x59, 0xd6, 
+0x2c, 0x15, 0x39, 0xc4, 0xb2, 0x76, 0xc5, 0x6b, 
+0x14, 0x84, 0xb0, 0xb1, 0x5b, 0x02, 0xc0, 0xd4, 
+0x50, 0xa4, 0xb2, 0xe4, 0x0b, 0x77, 0x1f, 0xd9, 
+0x45, 0xcc, 0x8c, 0xa1, 0xa8, 0x0a, 0x52, 0x91, 
+0xec, 0x3d, 0xba, 0x87, 0x47, 0xf7, 0x3f, 0x8a, 
+0x95, 0xb3, 0x98, 0x18, 0x9b, 0xa0, 0xff, 0x72, 
+0x3f, 0xd7, 0x2e, 0x5c, 0xe7, 0xfa, 0xc5, 0xeb, 
+0x6b, 0x26, 0xe4, 0x52, 0xa4, 0xc5, 0xf5, 0x10, 
+0x80, 0x29, 0x22, 0xf9, 0x43, 0x96, 0xd8, 0x10, 
+0x09, 0xff, 0x2c, 0x65, 0x69, 0xa7, 0xa7, 0xa7, 
+0xef, 0x4b, 0x29, 0xd1, 0x12, 0x4b, 0x03, 0xa0, 
+0x6a, 0x2a, 0x5d, 0x07, 0x1e, 0x45, 0x51, 0x95, 
+0x52, 0x45, 0x87, 0xef, 0xfb, 0xe0, 0xfb, 0xf8, 
+0xbe, 0x8f, 0x11, 0x8f, 0x61, 0xe5, 0x6c, 0x46, 
+0x6e, 0x8c, 0x3c, 0x10, 0xc8, 0xb5, 0x22, 0x3d, 
+0xae, 0x21, 0xa5, 0xc4, 0xb6, 0xed, 0x29, 0xca, 
+0x93, 0xa8, 0x65, 0x40, 0x54, 0xc6, 0x80, 0xb2, 
+0x2c, 0x6d, 0x36, 0x9b, 0xbd, 0x27, 0x84, 0x40, 
+0x8d, 0xab, 0x28, 0xca, 0xe2, 0x1d, 0xdf, 0xb2, 
+0x67, 0x0b, 0xaa, 0xae, 0x96, 0x56, 0x78, 0x8e, 
+0xed, 0xe0, 0x3a, 0x2e, 0xae, 0xe3, 0x71, 0xeb, 
+0xcb, 0x5b, 0xfc, 0xe2, 0xf5, 0x5f, 0x32, 0x76, 
+0x7b, 0x0c, 0x60, 0xc9, 0xe7, 0xac, 0x25, 0x69, 
+0x09, 0x0d, 0x21, 0x04, 0xb9, 0x5c, 0x6e, 0x92, 
+0xf9, 0x1d, 0xa1, 0xca, 0x6d, 0x31, 0x3f, 0xea, 
+0x02, 0x21, 0x87, 0x39, 0x7a, 0xbb, 0xbf, 0xbf, 
+0x7f, 0xc8, 0xf7, 0xfd, 0x82, 0x9e, 0xd4, 0x34, 
+0x35, 0xae, 0xe2, 0xe5, 0xab, 0x07, 0xb6, 0x6d, 
+0xdd, 0x9d, 0x38, 0x05, 0x17, 0xcf, 0xf5, 0xf0, 
+0x3d, 0x1f, 0xc7, 0x71, 0x29, 0xd8, 0x0e, 0xd9, 
+0xd1, 0x2c, 0xff, 0xf9, 0x4f, 0x3f, 0xc1, 0x75, 
+0x82, 0x21, 0xe9, 0xab, 0x24, 0x63, 0x5d, 0x0c, 
+0x29, 0x25, 0x63, 0x63, 0x63, 0x37, 0x59, 0x98, 
+0x4e, 0xaf, 0x6a, 0x01, 0x51, 0xf3, 0x2f, 0x00, 
+0xf6, 0xcc, 0xcc, 0xcc, 0xd4, 0xd8, 0xd8, 0xd8, 
+0x8d, 0xb6, 0xb6, 0xb6, 0x1d, 0xf1, 0x36, 0x93, 
+0xb9, 0xa1, 0xea, 0xfb, 0x74, 0x9b, 0x77, 0x6f, 
+0xa2, 0x90, 0xb7, 0x11, 0x52, 0xe2, 0x7b, 0x1e, 
+0x6e, 0x11, 0x00, 0xb3, 0xce, 0xe4, 0xe8, 0x1f, 
+0x1f, 0xe1, 0xec, 0xdb, 0x1f, 0x3f, 0x3c, 0x49, 
+0xab, 0x90, 0x50, 0x05, 0x46, 0x73, 0x0c, 0x1f, 
+0xdf, 0xfb, 0xe4, 0x93, 0x4f, 0x7a, 0x09, 0xf6, 
+0x06, 0xa3, 0xfb, 0x82, 0xa5, 0x38, 0x20, 0x8b, 
+0x9b, 0x83, 0x51, 0xff, 0x0f, 0x8b, 0x14, 0xf2, 
+0xc0, 0xdc, 0xc0, 0xc0, 0xc0, 0x67, 0x52, 0x4a, 
+0xcc, 0xf5, 0x06, 0x8a, 0x54, 0x16, 0x70, 0xb2, 
+0xa1, 0x9e, 0xc6, 0xd6, 0x34, 0x76, 0xbe, 0xc0, 
+0xa5, 0x5f, 0x5e, 0xe2, 0xb5, 0xbf, 0x7f, 0x83, 
+0xd9, 0x89, 0x59, 0x0a, 0x56, 0x81, 0x82, 0x55, 
+0x60, 0xd7, 0xe1, 0x9d, 0x74, 0x6c, 0xef, 0xa8, 
+0x7a, 0xef, 0x83, 0x58, 0x55, 0xd4, 0x15, 0xdd, 
+0x67, 0xb6, 0x1a, 0x48, 0x45, 0x92, 0xcd, 0x66, 
+0x6f, 0x8d, 0x8f, 0x8f, 0x8f, 0x57, 0x01, 0xa0, 
+0x04, 0x42, 0xd4, 0x2e, 0xa3, 0x16, 0x60, 0x17, 
+0x6f, 0xca, 0x9d, 0x3b, 0x77, 0xee, 0x53, 0xc0, 
+0x8b, 0x35, 0xeb, 0xa8, 0xba, 0x82, 0x22, 0x65, 
+0x19, 0xb7, 0x6f, 0x6f, 0x67, 0xb8, 0xef, 0x0e, 
+0x3f, 0xfe, 0x87, 0x7f, 0xe7, 0xe7, 0xff, 0xda, 
+0xc3, 0xc8, 0xf5, 0x3b, 0xfc, 0xd7, 0x8f, 0xde, 
+0xa7, 0x90, 0x2f, 0xe0, 0x58, 0x05, 0x9c, 0x82, 
+0xc3, 0x13, 0xdf, 0x3c, 0xc2, 0xe6, 0x9d, 0x1d, 
+0x0b, 0xee, 0x5d, 0x8c, 0x75, 0x5d, 0x23, 0x66, 
+0xe8, 0x48, 0x21, 0x6a, 0xbe, 0x27, 0xca, 0xe6, 
+0xfa, 0x18, 0x42, 0x08, 0x06, 0x07, 0x07, 0x3f, 
+0x23, 0xc8, 0x0e, 0x2d, 0x6a, 0x01, 0xd5, 0x46, 
+0x81, 0xd0, 0x05, 0x2c, 0x20, 0x97, 0xc9, 0x64, 
+0x32, 0xf7, 0xef, 0xdf, 0x1f, 0x6c, 0x69, 0x69, 
+0xd9, 0x9a, 0xd8, 0x1c, 0x67, 0x6e, 0xa0, 0xdc, 
+0x0d, 0xc6, 0x86, 0xc6, 0x78, 0xeb, 0xfb, 0x6f, 
+0xe3, 0xfb, 0x7e, 0x29, 0xc0, 0x0d, 0x5c, 0x1a, 
+0x60, 0xfd, 0xa6, 0x56, 0xda, 0x77, 0xb5, 0xe3, 
+0xd8, 0x0e, 0x9e, 0xeb, 0xd1, 0x7d, 0x6c, 0x1f, 
+0xa9, 0xe6, 0x14, 0x83, 0x9f, 0xdf, 0x64, 0x6e, 
+0x66, 0xae, 0xec, 0x19, 0x42, 0x08, 0x54, 0x5d, 
+0x45, 0xd1, 0x14, 0x14, 0x45, 0xc1, 0x75, 0x5d, 
+0x0a, 0xf9, 0xc2, 0x8a, 0x02, 0xa6, 0x34, 0x25, 
+0xb1, 0xf5, 0x31, 0x10, 0xf8, 0xe7, 0xcf, 0x9f, 
+0xff, 0x84, 0xa0, 0x90, 0x22, 0x2c, 0xa2, 0x28, 
+0x1b, 0x0e, 0x7d, 0xdf, 0xf7, 0xab, 0x8d, 0x02, 
+0x21, 0x00, 0x79, 0x82, 0x9c, 0xfb, 0xf4, 0xd9, 
+0xb3, 0x67, 0x7f, 0x7a, 0xea, 0xd4, 0xa9, 0xef, 
+0x9a, 0x5b, 0x0d, 0xec, 0x11, 0x07, 0xdf, 0x9e, 
+0x1f, 0x4a, 0x67, 0x27, 0x72, 0x08, 0x21, 0xa9, 
+0xac, 0x07, 0xed, 0xfd, 0xd9, 0x05, 0xa4, 0xaa, 
+0xd0, 0xd4, 0xd6, 0x88, 0x63, 0x3b, 0x14, 0x6c, 
+0x97, 0xd6, 0xcd, 0xad, 0xa4, 0xd7, 0x37, 0x32, 
+0x31, 0x3a, 0xc1, 0xec, 0x54, 0x0e, 0x7b, 0xce, 
+0x0a, 0xe6, 0x0d, 0x52, 0x52, 0xb0, 0x0b, 0xd8, 
+0xf9, 0x02, 0xf6, 0x9c, 0x8d, 0x63, 0xbb, 0xf8, 
+0x1e, 0xc8, 0x15, 0x0c, 0x99, 0x89, 0x2e, 0x13, 
+0xa9, 0x48, 0x06, 0x07, 0x07, 0x2f, 0x0d, 0x0c, 
+0x0c, 0xdc, 0x64, 0xbe, 0x6e, 0xa0, 0x7a, 0x0c, 
+0x80, 0x52, 0xee, 0xbc, 0x32, 0x0e, 0x58, 0x04, 
+0xe6, 0x33, 0xf5, 0xeb, 0x5f, 0xff, 0xba, 0x37, 
+0x93, 0xc9, 0x5c, 0x57, 0x74, 0x85, 0xc4, 0x36, 
+0x13, 0x45, 0x51, 0x1e, 0xc8, 0xbe, 0xe7, 0x73, 
+0xee, 0x9d, 0x4f, 0xb9, 0xde, 0x7b, 0x03, 0xc7, 
+0x76, 0x71, 0x0b, 0x4e, 0x70, 0x75, 0x5c, 0x8c, 
+0x3a, 0x83, 0x64, 0x63, 0x3d, 0xa9, 0xe6, 0x14, 
+0x31, 0x23, 0x86, 0xef, 0xfb, 0x78, 0xae, 0x8f, 
+0x5f, 0x1c, 0x45, 0xf0, 0xfc, 0x9a, 0xde, 0x51, 
+0xc9, 0x7a, 0x5a, 0xc7, 0xd8, 0x10, 0x03, 0x70, 
+0xdf, 0x7b, 0xef, 0xbd, 0x37, 0x09, 0x12, 0xa4, 
+0x33, 0x45, 0x65, 0x46, 0x4b, 0x68, 0x28, 0x03, 
+0x20, 0x42, 0x51, 0x00, 0xec, 0x22, 0x72, 0x33, 
+0xc0, 0x44, 0x4f, 0x4f, 0xcf, 0x4f, 0x00, 0xdf, 
+0x68, 0x8f, 0xa1, 0xd5, 0x69, 0x35, 0x05, 0x23, 
+0x29, 0x24, 0xfd, 0x17, 0x06, 0xf8, 0xed, 0x7f, 
+0x5f, 0x61, 0x6a, 0x6c, 0x1a, 0xb7, 0xe0, 0xe2, 
+0xda, 0x6e, 0xb0, 0xba, 0x2c, 0x14, 0xd9, 0xf1, 
+0xf0, 0x1c, 0x1f, 0xdf, 0xf1, 0xf1, 0xdd, 0x20, 
+0x45, 0x26, 0x90, 0x2b, 0x0a, 0x7e, 0xf1, 0x2e, 
+0x03, 0x21, 0x04, 0x7d, 0x7d, 0x7d, 0x1f, 0xf7, 
+0xf7, 0xf7, 0xf7, 0x53, 0x9e, 0x26, 0x0f, 0x01, 
+0x28, 0x99, 0x3f, 0x44, 0x62, 0x80, 0xef, 0xfb, 
+0x61, 0xd1, 0x61, 0x34, 0x10, 0x96, 0x00, 0xb8, 
+0x78, 0xf1, 0xe2, 0xe7, 0xc7, 0x8e, 0x1d, 0xbb, 
+0xb4, 0x79, 0xf3, 0xe6, 0xfd, 0x75, 0xfb, 0x4c, 
+0x72, 0xe7, 0xe7, 0xf0, 0x6b, 0x5c, 0x20, 0x4e, 
+0x66, 0x26, 0x98, 0xcc, 0x4c, 0x10, 0x4f, 0xc6, 
+0xa9, 0x6f, 0xaa, 0x47, 0x51, 0x03, 0xd3, 0xf6, 
+0x3c, 0x0f, 0xc7, 0x76, 0x70, 0xc2, 0x80, 0x69, 
+0x15, 0x8a, 0xda, 0x5f, 0xfe, 0x9c, 0x41, 0xdf, 
+0xa4, 0xa1, 0x37, 0x69, 0xd8, 0xb6, 0x9d, 0x7f, 
+0xf3, 0xcd, 0x37, 0xdf, 0xa4, 0x7a, 0xb1, 0xc4, 
+0x82, 0xf5, 0x40, 0xb5, 0xd5, 0x60, 0xa5, 0x1b, 
+0xcc, 0x12, 0x20, 0x79, 0xff, 0xf4, 0xe9, 0xd3, 
+0xff, 0xf6, 0xbd, 0xef, 0x7d, 0xaf, 0xbd, 0x2e, 
+0x59, 0xd7, 0x64, 0xee, 0x32, 0xc9, 0xff, 0xd6, 
+0x5e, 0x56, 0x27, 0xf3, 0x33, 0x16, 0xf9, 0x19, 
+0x6b, 0x89, 0x16, 0x62, 0x45, 0x7e, 0xaf, 0x36, 
+0x29, 0x18, 0x9d, 0x3a, 0x3e, 0xbe, 0xdf, 0xd3, 
+0xd3, 0xf3, 0x5a, 0x26, 0x93, 0x19, 0x02, 0x26, 
+0x58, 0x98, 0x1e, 0x2f, 0xd3, 0x3e, 0x54, 0xdf, 
+0x52, 0xa8, 0x1c, 0x0e, 0xe7, 0x8a, 0x0f, 0xca, 
+0x8e, 0x8f, 0x8f, 0xdf, 0x7a, 0xed, 0xb5, 0xd7, 
+0xfe, 0xd9, 0x75, 0x5d, 0x4b, 0x5f, 0xaf, 0x61, 
+0x6c, 0x89, 0xad, 0xc8, 0x54, 0xd7, 0x92, 0xb5, 
+0x3a, 0x15, 0x73, 0x4f, 0x0c, 0xa9, 0x48, 0x7a, 
+0x7b, 0x7b, 0x7f, 0xd6, 0xd3, 0xd3, 0xf3, 0x01, 
+0x4b, 0x54, 0x89, 0x2c, 0x80, 0x7c, 0x25, 0x05, 
+0x12, 0xcf, 0x3c, 0xf3, 0xcc, 0xf1, 0x53, 0xa7, 
+0x4e, 0x7d, 0x47, 0x08, 0x21, 0x0a, 0x37, 0x5c, 
+0x9c, 0xdb, 0xbf, 0x9b, 0xcd, 0x12, 0x59, 0x27, 
+0xd0, 0xf7, 0xa8, 0x88, 0x98, 0x60, 0x60, 0x60, 
+0xe0, 0xd2, 0x2b, 0xaf, 0xbc, 0xb2, 0xec, 0x02, 
+0x89, 0x05, 0x2e, 0x50, 0x11, 0x0b, 0xc2, 0x34, 
+0xd2, 0x1c, 0xf3, 0xbb, 0xc5, 0xca, 0x99, 0x33, 
+0x67, 0x3e, 0x68, 0x69, 0x69, 0x69, 0x7e, 0xea, 
+0xa9, 0xa7, 0x9e, 0xd3, 0xb7, 0xa9, 0x42, 0xa9, 
+0x97, 0x38, 0x7d, 0x6e, 0x45, 0x7c, 0x7d, 0xb8, 
+0x24, 0x9b, 0x25, 0xea, 0x76, 0x89, 0x50, 0x04, 
+0x99, 0x4c, 0x66, 0xe0, 0x07, 0x3f, 0xf8, 0xc1, 
+0xbf, 0xb0, 0xb0, 0x3c, 0x26, 0x5a, 0x28, 0x55, 
+0x5b, 0x89, 0x0c, 0xd4, 0x5e, 0x24, 0xf5, 0xec, 
+0xb3, 0xcf, 0x9e, 0x38, 0x79, 0xf2, 0xe4, 0xb7, 
+0x34, 0x4d, 0xd3, 0xfd, 0x69, 0x1f, 0xe7, 0x8a, 
+0x8b, 0xbf, 0xbc, 0xb0, 0xb0, 0x22, 0x52, 0x36, 
+0x49, 0x94, 0x8e, 0xc0, 0x7b, 0xfb, 0xfa, 0xfa, 
+0x7a, 0x5f, 0x7d, 0xf5, 0xd5, 0x1f, 0x5a, 0x96, 
+0xb5, 0x76, 0x45, 0x52, 0x50, 0x7b, 0x99, 0xdc, 
+0x81, 0x03, 0x07, 0xf6, 0xbd, 0xf4, 0xd2, 0x4b, 
+0x7f, 0x95, 0x48, 0x24, 0x1a, 0x70, 0xc1, 0xbb, 
+0xed, 0xe3, 0x0d, 0xfb, 0x0f, 0xc5, 0x1a, 0x44, 
+0x5a, 0x20, 0x37, 0x0b, 0x44, 0x02, 0x7c, 0xdf, 
+0xf7, 0x3e, 0xfc, 0xf0, 0xc3, 0x77, 0x4f, 0x9f, 
+0x3e, 0xbd, 0xf6, 0x65, 0x72, 0xa5, 0x3f, 0x6b, 
+0x2c, 0x94, 0x5c, 0xbf, 0x7e, 0xfd, 0xa6, 0x97, 
+0x5f, 0x7e, 0xf9, 0x2f, 0x1e, 0x79, 0xe4, 0x91, 
+0x1d, 0x00, 0xd8, 0xe0, 0x0d, 0xf9, 0x78, 0xa3, 
+0x54, 0x09, 0x3b, 0x2b, 0x10, 0xbc, 0x8e, 0x40, 
+0xf0, 0x86, 0xe0, 0x7b, 0x2e, 0x97, 0x9b, 0x7c, 
+0xe7, 0x9d, 0x77, 0x7e, 0x74, 0xe6, 0xcc, 0x99, 
+0x8f, 0x08, 0x8a, 0x24, 0xef, 0x11, 0x44, 0xfd, 
+0xb0, 0x7e, 0x78, 0xf5, 0x85, 0x92, 0xa5, 0x06, 
+0x8b, 0x97, 0xca, 0xc6, 0x09, 0xf2, 0xef, 0xa5, 
+0x52, 0xd9, 0x63, 0xc7, 0x8e, 0x1d, 0x3c, 0x79, 
+0xf2, 0xe4, 0x73, 0x4d, 0x4d, 0x4d, 0x1b, 0x01, 
+0x28, 0x80, 0x7f, 0x3f, 0xe8, 0x9e, 0x3f, 0xc9, 
+0xf2, 0xc0, 0x88, 0x83, 0x68, 0x0c, 0x98, 0xba, 
+0xe0, 0x27, 0xdb, 0xb6, 0xf3, 0xbd, 0xbd, 0xbd, 
+0xbf, 0x78, 0xe3, 0x8d, 0x37, 0xde, 0xcb, 0xe5, 
+0x72, 0x61, 0xa9, 0xec, 0x04, 0xe5, 0x33, 0xbe, 
+0xb5, 0x2b, 0x95, 0x5d, 0x04, 0x84, 0xc5, 0x8a, 
+0xa5, 0x53, 0x04, 0xae, 0x91, 0x7e, 0xe1, 0x85, 
+0x17, 0x9e, 0x7e, 0xfa, 0xe9, 0xa7, 0x9f, 0x4d, 
+0x26, 0x93, 0xa5, 0x62, 0x69, 0xdc, 0x62, 0x57, 
+0x2d, 0xf0, 0x6d, 0x31, 0x7f, 0x22, 0xc0, 0xa3, 
+0x74, 0x8a, 0x40, 0xc4, 0xfc, 0xe0, 0x73, 0x92, 
+0x00, 0xe2, 0x22, 0x39, 0x8e, 0x63, 0x5f, 0xb9, 
+0x72, 0xe5, 0xe3, 0xd7, 0x5f, 0x7f, 0xfd, 0xad, 
+0x4c, 0x26, 0x33, 0x52, 0x7c, 0xd2, 0x64, 0x91, 
+0xa3, 0x5a, 0x5f, 0xfb, 0x62, 0xe9, 0x25, 0x40, 
+0x88, 0x1e, 0x90, 0x08, 0xcf, 0x08, 0xd4, 0x15, 
+0xbb, 0x9f, 0x04, 0xea, 0x1f, 0x7f, 0xfc, 0xf1, 
+0xed, 0x87, 0x0e, 0x1d, 0x3a, 0xb8, 0x75, 0xeb, 
+0xd6, 0xdd, 0xe9, 0x74, 0x7a, 0x59, 0xe5, 0xf2, 
+0x96, 0x65, 0xe5, 0x6e, 0xde, 0xbc, 0x79, 0xf5, 
+0xf3, 0xcf, 0x3f, 0xbf, 0xf0, 0xfe, 0xfb, 0xef, 
+0x5f, 0x98, 0x99, 0x99, 0x09, 0x83, 0x5b, 0xa8, 
+0xed, 0xaf, 0xae, 0x5c, 0xbe, 0xd4, 0x78, 0xe9, 
+0x03, 0x13, 0xa1, 0x45, 0x54, 0x3d, 0x30, 0xb1, 
+0x63, 0xc7, 0x8e, 0x8d, 0x07, 0x0e, 0x1c, 0xd8, 
+0x91, 0x4c, 0x26, 0xd3, 0xf5, 0xf5, 0xf5, 0xa9, 
+0x78, 0x3c, 0x9e, 0x4c, 0x24, 0x12, 0xf5, 0xaa, 
+0xaa, 0xaa, 0xb9, 0x5c, 0x6e, 0x66, 0x66, 0x66, 
+0x66, 0x6a, 0x76, 0x76, 0x76, 0x6a, 0x7a, 0x7a, 
+0x3a, 0x7b, 0xfb, 0xf6, 0xed, 0xe1, 0x0f, 0x3e, 
+0xf8, 0xe0, 0x8b, 0x42, 0xa1, 0xb0, 0xd4, 0x81, 
+0x89, 0xa8, 0xe0, 0x65, 0x27, 0x47, 0x6a, 0x15, 
+0x7e, 0xd9, 0x00, 0x44, 0x40, 0x80, 0x95, 0x1f, 
+0x99, 0x89, 0x26, 0x2a, 0xc3, 0x99, 0x68, 0xb8, 
+0x0f, 0x51, 0xda, 0x8e, 0x63, 0xfe, 0xb8, 0x4c, 
+0x25, 0x2f, 0x7a, 0x64, 0x86, 0x25, 0xa2, 0xfd, 
+0xa2, 0xf2, 0xfc, 0x8e, 0x0e, 0x4d, 0x45, 0x4f, 
+0x8e, 0x41, 0xf9, 0xf4, 0x3b, 0x04, 0xe1, 0x2b, 
+0x39, 0x34, 0xb5, 0xaa, 0x83, 0x93, 0xab, 0x38, 
+0x36, 0x57, 0x99, 0xab, 0xab, 0xcc, 0x49, 0x84, 
+0xfc, 0xc0, 0x63, 0x73, 0xac, 0x42, 0x78, 0x58, 
+0x25, 0x00, 0x50, 0x06, 0x02, 0x94, 0x5b, 0x44, 
+0x34, 0xd3, 0x5c, 0xcb, 0xc1, 0xc9, 0xca, 0x4d, 
+0x99, 0x25, 0x0f, 0x4e, 0xb2, 0x4a, 0xc1, 0x4b, 
+0x1d, 0xfe, 0xff, 0x7e, 0x74, 0x76, 0xcd, 0x00, 
+0x28, 0x7b, 0xe8, 0x1a, 0x1e, 0x9e, 0x8e, 0x5c, 
+0x83, 0x2f, 0xff, 0x5b, 0x0f, 0x4f, 0xff, 0x5f, 
+0xa5, 0xff, 0x01, 0xc3, 0x79, 0x01, 0x32, 0xa3, 
+0x62, 0x09, 0x9d, 0x00, 0x00, 0x00, 0x00, 0x49, 
+0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, 
+};
+
+#endif
+
diff --git a/source/bitmaps/misc/activity5.png b/source/bitmaps/misc/activity5.png
new file mode 100644 (file)
index 0000000..fb28341
Binary files /dev/null and b/source/bitmaps/misc/activity5.png differ
diff --git a/source/bitmaps/misc/activity6.cpp b/source/bitmaps/misc/activity6.cpp
new file mode 100644 (file)
index 0000000..37a2f2e
--- /dev/null
@@ -0,0 +1,548 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY6_CPP
+#define MISC_ACTIVITY6_CPP
+
+static unsigned char misc_activity6_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x51, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xf9, 
+0x73, 0x1c, 0xd7, 0x71, 0xc7, 0x3f, 0xef, 0xcd, 
+0xb1, 0x17, 0xb0, 0xc0, 0xe2, 0x24, 0x48, 0x02, 
+0xbc, 0x24, 0x08, 0xb0, 0x48, 0x82, 0x8c, 0x04, 
+0xea, 0xa4, 0x48, 0x9a, 0x4a, 0x99, 0x51, 0x1c, 
+0x53, 0x52, 0x52, 0x49, 0x95, 0xac, 0xb8, 0x52, 
+0xb1, 0x23, 0xc7, 0xa9, 0x24, 0x95, 0x3f, 0x21, 
+0xbf, 0xe5, 0x87, 0x94, 0x7e, 0x89, 0xe3, 0x92, 
+0x5d, 0x65, 0x57, 0xaa, 0x1c, 0x4a, 0x56, 0xe5, 
+0x17, 0xd3, 0x92, 0x68, 0xd9, 0x01, 0x65, 0x2b, 
+0x8c, 0x24, 0x52, 0xa2, 0xc0, 0x4b, 0xbc, 0x44, 
+0x88, 0x00, 0x0f, 0x80, 0x04, 0x17, 0xc7, 0x62, 
+0x71, 0x2c, 0x76, 0x66, 0xe7, 0xc8, 0x0f, 0xb3, 
+0xb3, 0x98, 0x5d, 0x2c, 0x80, 0xc5, 0x41, 0x39, 
+0xa9, 0x74, 0x55, 0xd7, 0xec, 0x31, 0xf3, 0xe6, 
+0xf5, 0xf7, 0x75, 0xf7, 0x7b, 0xaf, 0xbb, 0x9f, 
+0x70, 0x5d, 0x97, 0xfb, 0x49, 0x42, 0x08, 0xb1, 
+0xd0, 0x5f, 0x65, 0x7e, 0x9b, 0xd7, 0x19, 0xf7, 
+0x3e, 0x77, 0x50, 0xbd, 0x1f, 0x8d, 0x96, 0x08, 
+0x2d, 0x16, 0xb8, 0x2e, 0x44, 0x6e, 0xf0, 0x5a, 
+0x8a, 0xdf, 0x5a, 0x03, 0x22, 0xd6, 0xaa, 0xbd, 
+0x32, 0x42, 0x8b, 0x92, 0xcf, 0xb2, 0xcc, 0x6f, 
+0x41, 0x0a, 0x0a, 0xbe, 0x18, 0x7b, 0x37, 0xad, 
+0x51, 0xc7, 0x57, 0xad, 0x01, 0x0b, 0x08, 0x2e, 
+0x03, 0xd7, 0x72, 0x2c, 0x28, 0x06, 0xc1, 0x17, 
+0xc6, 0xc9, 0x7f, 0x76, 0x16, 0xe0, 0x02, 0x10, 
+0xfe, 0x6b, 0x57, 0x0b, 0xc4, 0xaa, 0x00, 0x08, 
+0x08, 0x5f, 0x2a, 0xb4, 0x12, 0x60, 0x35, 0xcf, 
+0x4a, 0x09, 0x97, 0x6a, 0x41, 0x50, 0x50, 0x0b, 
+0xb0, 0xcb, 0x5c, 0x6d, 0x4a, 0xc0, 0x58, 0x2d, 
+0x10, 0x2b, 0x32, 0x81, 0x12, 0xc1, 0x4b, 0x85, 
+0x56, 0x01, 0x2d, 0xc0, 0x7a, 0x9e, 0xfd, 0xef, 
+0x3e, 0x20, 0x41, 0x4d, 0xf0, 0x47, 0xdd, 0x17, 
+0x36, 0x97, 0x67, 0xb3, 0xe4, 0xea, 0x73, 0x39, 
+0x30, 0x56, 0x04, 0xc2, 0xb2, 0x35, 0x20, 0x20, 
+0xbc, 0x2f, 0x40, 0x70, 0x94, 0x75, 0x20, 0x94, 
+0xe7, 0x70, 0x9e, 0x23, 0x81, 0xef, 0x3e, 0x18, 
+0xbe, 0x46, 0xf8, 0x00, 0x04, 0x47, 0xde, 0x17, 
+0xd8, 0xc8, 0x73, 0x16, 0x98, 0xcd, 0x5f, 0xb3, 
+0xf9, 0xdf, 0x7c, 0x40, 0x7c, 0xcd, 0x70, 0xc8, 
+0x6b, 0xc3, 0x72, 0x41, 0x58, 0x16, 0x00, 0x79, 
+0xe1, 0x7d, 0xf6, 0x47, 0xdc, 0x1f, 0x65, 0x5f, 
+0xe0, 0x28, 0x10, 0x0b, 0x70, 0x14, 0x88, 0x36, 
+0x35, 0x35, 0x6d, 0xd8, 0xb0, 0x61, 0x43, 0x47, 
+0x38, 0x1c, 0xae, 0x0b, 0x87, 0xc3, 0xb5, 0xba, 
+0xae, 0xc7, 0x75, 0x5d, 0x8f, 0x4b, 0x29, 0x35, 
+0xd3, 0x34, 0xa7, 0x4c, 0xd3, 0x9c, 0x34, 0x0c, 
+0x63, 0xc2, 0x30, 0x8c, 0xd4, 0xc4, 0xc4, 0xc4, 
+0xe0, 0xf5, 0xeb, 0xd7, 0xaf, 0x38, 0x8e, 0x33, 
+0x03, 0x64, 0x80, 0x99, 0x00, 0x67, 0x02, 0x80, 
+0x18, 0xa5, 0x40, 0x2c, 0xd7, 0x24, 0x2a, 0x36, 
+0x81, 0x80, 0xf0, 0xbe, 0xba, 0xfb, 0x23, 0xee, 
+0x8f, 0x72, 0x0c, 0xa8, 0xce, 0x73, 0x1c, 0xa8, 
+0x6e, 0x6b, 0x6b, 0x7b, 0xa8, 0xb5, 0xb5, 0xf5, 
+0xd1, 0x86, 0x86, 0x86, 0x87, 0xa3, 0xd1, 0x68, 
+0x73, 0x45, 0x2f, 0xca, 0x93, 0x65, 0x59, 0x99, 
+0x54, 0x2a, 0xf5, 0xf9, 0xf0, 0xf0, 0xf0, 0xd9, 
+0xbe, 0xbe, 0xbe, 0x73, 0x86, 0x61, 0x8c, 0x01, 
+0x93, 0xc0, 0x54, 0x9e, 0xa7, 0x99, 0x03, 0xc3, 
+0xd7, 0x88, 0xa0, 0x59, 0x54, 0x04, 0x42, 0x45, 
+0x00, 0x94, 0x11, 0x5e, 0xc3, 0x53, 0xeb, 0x08, 
+0x50, 0x95, 0x17, 0xba, 0x16, 0xa8, 0x01, 0xea, 
+0x76, 0xed, 0xda, 0xf5, 0xcc, 0xb6, 0x6d, 0xdb, 
+0x0e, 0x85, 0xc3, 0xe1, 0x7a, 0xbf, 0x0d, 0x25, 
+0xa7, 0x92, 0x48, 0xd6, 0x11, 0x9e, 0x8e, 0xa0, 
+0x67, 0x75, 0x34, 0x43, 0x47, 0xcf, 0x86, 0x90, 
+0xb6, 0x24, 0x17, 0x36, 0x31, 0x43, 0x26, 0x66, 
+0xd8, 0xc0, 0x8c, 0x18, 0x4c, 0x34, 0xa5, 0xc8, 
+0xc6, 0x66, 0x0b, 0xef, 0x77, 0x1c, 0x27, 0x77, 
+0xf7, 0xee, 0xdd, 0x53, 0xbd, 0xbd, 0xbd, 0x6f, 
+0x4f, 0x4d, 0x4d, 0xdd, 0x01, 0x52, 0x40, 0x3a, 
+0x00, 0x48, 0x86, 0x39, 0xd3, 0xb0, 0x96, 0x03, 
+0xc2, 0x92, 0x00, 0x94, 0x08, 0xef, 0x3b, 0xb8, 
+0x30, 0x73, 0x23, 0x5e, 0x03, 0xd4, 0x01, 0x75, 
+0x1d, 0x1d, 0x1d, 0x8f, 0x77, 0x76, 0x76, 0x7e, 
+0x23, 0x16, 0x8b, 0xb5, 0x00, 0x68, 0x59, 0x9d, 
+0xc4, 0x70, 0x1d, 0x89, 0x3b, 0x0d, 0xc4, 0x47, 
+0x6b, 0x10, 0xce, 0x52, 0x6b, 0xa0, 0x39, 0x9a, 
+0xad, 0xce, 0x90, 0x5a, 0x3f, 0x46, 0xaa, 0x65, 
+0x8c, 0x99, 0xda, 0x69, 0x00, 0x6c, 0xdb, 0x36, 
+0x6e, 0xdf, 0xbe, 0xfd, 0xdb, 0xd3, 0xa7, 0x4f, 
+0x1f, 0x33, 0x0c, 0xe3, 0x1e, 0x30, 0x9e, 0x07, 
+0x63, 0x12, 0xcf, 0x3c, 0x66, 0xf3, 0x40, 0x54, 
+0x0c, 0xc2, 0xa2, 0x00, 0x2c, 0x20, 0xbc, 0xaf, 
+0xee, 0x35, 0x40, 0x02, 0x68, 0xa8, 0xa9, 0xa9, 
+0xd9, 0xbc, 0x6f, 0xdf, 0xbe, 0xef, 0xd4, 0xd6, 
+0xd6, 0xb6, 0x7b, 0x82, 0x6b, 0xb4, 0x5c, 0xd9, 
+0x48, 0xfd, 0xad, 0x46, 0x84, 0x5b, 0xb9, 0xd0, 
+0x0b, 0x51, 0xa6, 0x66, 0x86, 0xa1, 0xed, 0xb7, 
+0x98, 0x6a, 0x9c, 0x04, 0x20, 0x97, 0xcb, 0x4d, 
+0x9d, 0x3f, 0x7f, 0xfe, 0xc8, 0xe5, 0xcb, 0x97, 
+0x4f, 0x02, 0xa3, 0xc0, 0x18, 0x9e, 0x46, 0x04, 
+0xb5, 0xa1, 0x22, 0x10, 0x16, 0x04, 0xa0, 0x8c, 
+0xda, 0xeb, 0xcc, 0xa9, 0x7c, 0x2d, 0x50, 0x0f, 
+0x34, 0xb6, 0xb5, 0xb5, 0x75, 0x3d, 0xf1, 0xc4, 
+0x13, 0xaf, 0x84, 0xc3, 0xe1, 0x5a, 0x69, 0x49, 
+0x1a, 0xfb, 0x5a, 0x68, 0xfc, 0xa2, 0x19, 0x69, 
+0xcb, 0x55, 0x0b, 0x5e, 0x4a, 0x53, 0xcd, 0x69, 
+0xee, 0x3e, 0x3c, 0x48, 0x36, 0x3e, 0x0b, 0xe0, 
+0x5c, 0xbb, 0x76, 0xed, 0xd8, 0xc9, 0x93, 0x27, 
+0x8f, 0x02, 0x49, 0x3c, 0x20, 0x52, 0xcc, 0x07, 
+0xc1, 0xc6, 0x93, 0xbf, 0x72, 0x00, 0x4a, 0xa6, 
+0xba, 0x72, 0xc2, 0x37, 0x02, 0x4d, 0x5d, 0x5d, 
+0x5d, 0x07, 0xbb, 0xba, 0xba, 0x5e, 0x52, 0x14, 
+0x45, 0x8f, 0xa4, 0xa2, 0xb4, 0x7e, 0xbc, 0x19, 
+0x35, 0xab, 0xad, 0x9d, 0xc4, 0x65, 0x7b, 0x0c, 
+0x23, 0x1d, 0xc3, 0x8c, 0x3c, 0x74, 0x0f, 0x80, 
+0x7b, 0xf7, 0xee, 0xf5, 0xf6, 0xf4, 0xf4, 0xfc, 
+0x38, 0x97, 0xcb, 0xdd, 0x01, 0x46, 0xf0, 0xcc, 
+0x62, 0x92, 0xf9, 0x9a, 0x50, 0x16, 0x84, 0xc5, 
+0x00, 0xf0, 0xa7, 0x3a, 0x5f, 0xed, 0xab, 0xc8, 
+0xab, 0x3c, 0xb0, 0xee, 0xa9, 0xa7, 0x9e, 0x7a, 
+0xb1, 0xbd, 0xbd, 0xfd, 0x79, 0x21, 0x84, 0x88, 
+0xdf, 0xae, 0xa5, 0xf9, 0xec, 0xfa, 0x65, 0xd9, 
+0xf8, 0x6a, 0x69, 0x6a, 0xfd, 0x24, 0xc3, 0x8f, 
+0x0c, 0xe1, 0x2a, 0x0e, 0x93, 0x93, 0x93, 0x03, 
+0x6f, 0xbf, 0xfd, 0xf6, 0x3f, 0x1b, 0x86, 0x31, 
+0x88, 0xa7, 0x0d, 0x41, 0x10, 0x0a, 0x8e, 0xb1, 
+0x22, 0x00, 0x4a, 0x54, 0xdf, 0xf7, 0xf6, 0xc1, 
+0x91, 0x5f, 0xb7, 0x63, 0xc7, 0x8e, 0x03, 0x8f, 
+0x3d, 0xf6, 0xd8, 0x77, 0x00, 0x51, 0x7f, 0xb1, 
+0x91, 0x9a, 0x2f, 0xea, 0xee, 0x9b, 0xa0, 0x8b, 
+0x91, 0x59, 0x63, 0x30, 0xfc, 0xf8, 0x20, 0x56, 
+0xc4, 0x22, 0x99, 0x4c, 0x9e, 0x7f, 0xeb, 0xad, 
+0xb7, 0xbe, 0x0f, 0xdc, 0x61, 0x0e, 0x84, 0x29, 
+0x3c, 0xc7, 0x58, 0x98, 0x22, 0x4b, 0x41, 0x28, 
+0x32, 0xd4, 0x92, 0x25, 0xae, 0x3f, 0xd7, 0xfb, 
+0x1e, 0xbf, 0x06, 0xa8, 0x6f, 0x6d, 0x6d, 0x7d, 
+0xb8, 0xbb, 0xbb, 0xfb, 0x5b, 0x42, 0x08, 0x91, 
+0xb8, 0x5a, 0x4f, 0xd5, 0xf5, 0x1a, 0x6c, 0x61, 
+0xff, 0x4e, 0x58, 0x99, 0x54, 0x69, 0x3a, 0xb9, 
+0x1e, 0x69, 0x2b, 0x34, 0x37, 0x37, 0x77, 0xed, 
+0xdf, 0xbf, 0xff, 0x4f, 0xf0, 0x06, 0x29, 0x81, 
+0x37, 0x43, 0x45, 0xf0, 0xcc, 0xb7, 0xb0, 0xea, 
+0x2c, 0x8d, 0x4f, 0x94, 0x5b, 0x09, 0x96, 0x73, 
+0x7c, 0xd5, 0x40, 0x22, 0x1e, 0x8f, 0xb7, 0x1e, 
+0x38, 0x70, 0xe0, 0xaf, 0x35, 0x4d, 0x0b, 0x45, 
+0x86, 0xa2, 0x54, 0xf5, 0xd5, 0xe0, 0x48, 0x67, 
+0xf9, 0x43, 0xb7, 0x86, 0xa4, 0xcc, 0xa8, 0xd4, 
+0x9f, 0x69, 0x62, 0xfc, 0xb1, 0x24, 0xed, 0xed, 
+0xed, 0x5f, 0x4b, 0xa7, 0xd3, 0x43, 0x67, 0xcf, 
+0x9e, 0xfd, 0x4f, 0xca, 0xaf, 0x14, 0x8b, 0xb6, 
+0xd4, 0xb0, 0x38, 0x00, 0x2a, 0x9e, 0xfa, 0xc7, 
+0xf0, 0x56, 0x76, 0x75, 0x07, 0x0f, 0x1e, 0xfc, 
+0x56, 0x34, 0x1a, 0xad, 0x57, 0xd3, 0x1a, 0xd5, 
+0xe7, 0x12, 0xd8, 0xd2, 0x5e, 0x5d, 0xe7, 0x35, 
+0x05, 0x35, 0xac, 0xa2, 0xea, 0x0a, 0x52, 0xf5, 
+0x94, 0xd1, 0xb1, 0x1c, 0xb2, 0x93, 0x06, 0x76, 
+0xae, 0xf2, 0xb6, 0xb5, 0xa4, 0x4e, 0xf5, 0xd5, 
+0x1a, 0xa6, 0xbf, 0x32, 0x29, 0x1e, 0x7d, 0xe4, 
+0xd1, 0x97, 0xfb, 0xfb, 0xfb, 0xaf, 0xa6, 0xd3, 
+0xe9, 0x0c, 0xc5, 0x7b, 0x07, 0xdf, 0x19, 0x8a, 
+0xe0, 0x9e, 0xa1, 0x00, 0xc0, 0x52, 0xd3, 0xde, 
+0xb6, 0x6d, 0xdb, 0xb6, 0x37, 0x37, 0x37, 0x77, 
+0x09, 0x57, 0x50, 0xfd, 0x69, 0x2d, 0xae, 0xe3, 
+0xb0, 0x9a, 0x29, 0x5e, 0xd5, 0x15, 0x94, 0xb0, 
+0x44, 0x0d, 0x4b, 0xd4, 0xb0, 0x82, 0x16, 0xd6, 
+0x50, 0x74, 0x05, 0x35, 0xa4, 0xa2, 0xe8, 0x0a, 
+0xe6, 0xb4, 0x49, 0xea, 0xf6, 0x04, 0xb3, 0x13, 
+0xb3, 0x4b, 0x37, 0x06, 0x84, 0xbf, 0x88, 0x62, 
+0x36, 0x1b, 0xe4, 0x1a, 0xcc, 0xd0, 0xd3, 0x4f, 
+0x3f, 0xfd, 0xfc, 0xb1, 0x63, 0xc7, 0x7e, 0xc4, 
+0xdc, 0xde, 0xc1, 0xd7, 0x84, 0x79, 0x5a, 0x50, 
+0xaa, 0x01, 0xc1, 0xd1, 0x2f, 0x02, 0xa0, 0xbb, 
+0xbb, 0xfb, 0x05, 0x45, 0x51, 0x84, 0xde, 0x1f, 
+0x86, 0x59, 0x81, 0xbd, 0x0a, 0xd5, 0x57, 0x75, 
+0x15, 0x19, 0x51, 0x51, 0xc2, 0x0a, 0x32, 0xac, 
+0xa2, 0x84, 0x55, 0x64, 0xc8, 0x13, 0x5e, 0x0d, 
+0xab, 0xa8, 0x21, 0x95, 0x48, 0x7d, 0x84, 0xc4, 
+0xb6, 0x3a, 0x46, 0xbe, 0x18, 0x61, 0xf8, 0xca, 
+0x3d, 0x2a, 0x59, 0xb2, 0x87, 0xaf, 0xc4, 0xb0, 
+0xf7, 0x59, 0xb4, 0xb5, 0xb5, 0x3d, 0xbe, 0x7e, 
+0xfd, 0xfa, 0x9e, 0x3b, 0x77, 0xee, 0x4c, 0x32, 
+0xb7, 0x67, 0x08, 0x4e, 0x89, 0x05, 0x2d, 0x90, 
+0x40, 0xe9, 0x2e, 0x2f, 0xa8, 0xfe, 0x51, 0x20, 
+0xbe, 0x73, 0xe7, 0xce, 0x47, 0x1a, 0x1a, 0x1a, 
+0x1e, 0x90, 0x96, 0x44, 0xbb, 0x16, 0xc2, 0x11, 
+0xf6, 0x8a, 0x59, 0x86, 0x04, 0x4a, 0x44, 0x20, 
+0x34, 0x17, 0x47, 0x3a, 0xb8, 0xd2, 0x01, 0xc5, 
+0x05, 0xd5, 0x45, 0x86, 0x24, 0x6a, 0x54, 0x45, 
+0x8d, 0xa8, 0xa8, 0x51, 0x15, 0xbd, 0x5a, 0xa5, 
+0x6d, 0xcf, 0x46, 0x3a, 0x0e, 0xb5, 0x83, 0xea, 
+0x2e, 0xd9, 0xb6, 0x48, 0x0b, 0xb4, 0x21, 0x1d, 
+0x45, 0x51, 0x94, 0x27, 0x9f, 0x7c, 0xf2, 0x79, 
+0x3c, 0xd3, 0x8d, 0xe5, 0x07, 0x52, 0xc3, 0xd3, 
+0xec, 0x22, 0xc7, 0x5f, 0xaa, 0x01, 0xc1, 0xcd, 
+0x4e, 0x61, 0xbd, 0xdf, 0xd5, 0xd5, 0xf5, 0x07, 
+0x52, 0x4a, 0x94, 0xeb, 0x3a, 0x8e, 0xe5, 0x82, 
+0x5c, 0x59, 0x14, 0x4a, 0x48, 0x41, 0x0e, 0x0b, 
+0x33, 0x93, 0xc3, 0x75, 0xca, 0xb7, 0x51, 0xdd, 
+0x50, 0x45, 0x73, 0x7b, 0x33, 0x8d, 0x5b, 0x1b, 
+0x50, 0x75, 0x4f, 0x1b, 0x9a, 0x12, 0x4d, 0x18, 
+0x86, 0xc9, 0xe7, 0xff, 0x75, 0x6d, 0xc9, 0x77, 
+0x28, 0x57, 0x43, 0x38, 0x1b, 0x6c, 0x5a, 0x5a, 
+0x5a, 0xba, 0x36, 0x6c, 0xd8, 0xb0, 0x79, 0x68, 
+0x68, 0xc8, 0xdf, 0x38, 0xe9, 0xcc, 0x69, 0x81, 
+0x1f, 0x84, 0x29, 0x42, 0x23, 0xb8, 0xf8, 0xf1, 
+0x03, 0x1b, 0xd1, 0x44, 0x22, 0xd1, 0x5c, 0x57, 
+0x57, 0xb7, 0x59, 0xb8, 0x02, 0x71, 0x53, 0xae, 
+0x6a, 0xf4, 0x6d, 0xd7, 0xc2, 0xb2, 0x73, 0xd8, 
+0xae, 0xb5, 0xe0, 0x3d, 0xe9, 0xb1, 0x34, 0xd7, 
+0x4e, 0x5e, 0xa3, 0xff, 0xd3, 0x7e, 0x94, 0xb0, 
+0x44, 0x8b, 0xaa, 0xe8, 0x31, 0x8d, 0x07, 0xf7, 
+0x6e, 0xa3, 0xb1, 0xbd, 0x61, 0xc9, 0x77, 0xb8, 
+0x59, 0x07, 0x99, 0x54, 0x90, 0x52, 0x8a, 0xce, 
+0xce, 0xce, 0x3d, 0xcc, 0x69, 0x80, 0x3f, 0x1d, 
+0x16, 0x22, 0x51, 0x42, 0x08, 0x51, 0x0a, 0x40, 
+0xa9, 0x06, 0x44, 0x77, 0xee, 0xdc, 0xf9, 0xa8, 
+0x94, 0x52, 0x88, 0x71, 0x05, 0xdb, 0xb6, 0xb1, 
+0xe5, 0x97, 0xc3, 0x83, 0x7d, 0x43, 0x5c, 0x7c, 
+0xff, 0x32, 0x5a, 0x4c, 0xf3, 0x40, 0xa8, 0xd2, 
+0x79, 0xec, 0xa5, 0x6e, 0x5c, 0xcd, 0x5d, 0xf2, 
+0x59, 0xee, 0x09, 0xa4, 0x94, 0xb4, 0xb6, 0xb6, 
+0xee, 0x28, 0x01, 0x20, 0x18, 0x8a, 0x03, 0x40, 
+0x2e, 0x60, 0xff, 0x3e, 0x00, 0x91, 0xd6, 0xd6, 
+0xd6, 0x1d, 0x42, 0x08, 0xdc, 0x61, 0x17, 0x47, 
+0x38, 0x5f, 0x2a, 0x0f, 0x5d, 0x1b, 0xe2, 0x6e, 
+0xdf, 0x5d, 0xf4, 0x98, 0x8e, 0x1e, 0xd3, 0xa8, 
+0x59, 0x17, 0xa7, 0x6d, 0x77, 0xeb, 0x92, 0xcf, 
+0xd9, 0xf7, 0x5c, 0x84, 0x2b, 0x48, 0x24, 0x12, 
+0x6d, 0x89, 0x44, 0xa2, 0x81, 0xb9, 0x70, 0x9c, 
+0x0f, 0x40, 0x01, 0x84, 0xc5, 0x34, 0x40, 0x8f, 
+0x44, 0x22, 0xf1, 0xa6, 0xc6, 0xa6, 0x6d, 0x52, 
+0x4a, 0xac, 0xa4, 0xf3, 0xa5, 0x8d, 0x7e, 0x90, 
+0x3f, 0xfd, 0xf5, 0x19, 0x94, 0x90, 0xe2, 0x81, 
+0x10, 0xd5, 0xf9, 0xca, 0xc1, 0xce, 0x79, 0xf7, 
+0x88, 0x10, 0xc5, 0xbf, 0x39, 0x36, 0xee, 0x38, 
+0x48, 0x29, 0xc5, 0xae, 0x5d, 0xbb, 0x7e, 0x2f, 
+0x6f, 0xce, 0x65, 0x35, 0x40, 0x0d, 0x08, 0x1f, 
+0xf4, 0x01, 0x2a, 0xa0, 0x6f, 0xd9, 0xb2, 0xa5, 
+0x4d, 0x51, 0x15, 0xcd, 0x99, 0x72, 0xb0, 0x0d, 
+0x7b, 0xe9, 0x9c, 0xce, 0x7d, 0xa0, 0xcc, 0x4c, 
+0x86, 0xa1, 0xbe, 0x3b, 0x74, 0x3c, 0xf1, 0x10, 
+0x8a, 0xa6, 0xf0, 0x40, 0xf7, 0x36, 0xe2, 0xeb, 
+0xe2, 0x44, 0xe2, 0x11, 0x36, 0xef, 0x68, 0xa3, 
+0xb5, 0xb3, 0x95, 0xd4, 0x70, 0x8a, 0x9e, 0x9f, 
+0xbc, 0x57, 0xf4, 0x9c, 0x3d, 0xea, 0xa0, 0x36, 
+0x2b, 0x34, 0x36, 0x36, 0x6e, 0xc2, 0x03, 0xc0, 
+0x8f, 0x48, 0x17, 0x85, 0xe4, 0xcb, 0xcd, 0x02, 
+0x05, 0x33, 0xa8, 0xad, 0xad, 0x6d, 0x90, 0x52, 
+0x62, 0x1b, 0x0e, 0x4e, 0x05, 0xab, 0x3e, 0x21, 
+0xc5, 0x82, 0xde, 0x7d, 0x35, 0x74, 0xe5, 0xe3, 
+0xab, 0xec, 0xfc, 0xea, 0x76, 0x6f, 0xfd, 0xa0, 
+0x2a, 0xfc, 0xdd, 0x4f, 0xbe, 0x87, 0x90, 0x02, 
+0xdb, 0x72, 0x98, 0x9d, 0x9a, 0xe5, 0x9d, 0x1f, 
+0x1e, 0x9b, 0xd7, 0x3f, 0xc7, 0x90, 0x48, 0x29, 
+0x89, 0x46, 0xa3, 0x35, 0x2c, 0x20, 0x3c, 0x20, 
+0x82, 0x00, 0xcc, 0x0b, 0x7a, 0x56, 0x57, 0x57, 
+0x27, 0x84, 0x10, 0x38, 0x59, 0x07, 0x5b, 0x2c, 
+0x0e, 0x40, 0xc3, 0xc6, 0x06, 0xbe, 0xfd, 0x4f, 
+0x7f, 0xc1, 0xf1, 0x7f, 0xff, 0x0d, 0x67, 0x7a, 
+0xce, 0x56, 0xb4, 0x70, 0x59, 0x8c, 0x42, 0x91, 
+0x10, 0xad, 0x9d, 0x1b, 0xd9, 0xba, 0x73, 0x0b, 
+0x0f, 0x3e, 0xf2, 0x20, 0x7a, 0x54, 0xf7, 0xa6, 
+0x45, 0x4d, 0x05, 0x21, 0x70, 0x6c, 0x07, 0x99, 
+0xb3, 0xe8, 0xf9, 0xe9, 0x87, 0xa4, 0x27, 0xd2, 
+0xf3, 0xb4, 0xd3, 0x32, 0x04, 0x42, 0x08, 0x22, 
+0x91, 0x48, 0x3c, 0x20, 0x7c, 0x69, 0x66, 0xaa, 
+0xc8, 0x04, 0xfc, 0xab, 0x7f, 0x93, 0x52, 0x55, 
+0x55, 0x55, 0x23, 0xa5, 0xc4, 0x31, 0x9d, 0x25, 
+0x37, 0x3d, 0xcf, 0xff, 0xfd, 0x37, 0x68, 0xd9, 
+0xd6, 0xc2, 0x9f, 0xff, 0xe3, 0x37, 0x79, 0xe6, 
+0xcf, 0xf6, 0xf2, 0xf3, 0xef, 0x1f, 0xa5, 0xff, 
+0xc2, 0xc0, 0x8a, 0x84, 0xef, 0xd8, 0xd3, 0xc1, 
+0xb3, 0xdf, 0xfc, 0x2a, 0x91, 0xaa, 0x08, 0xa1, 
+0x48, 0x88, 0x50, 0x44, 0x47, 0x0b, 0x6b, 0xe8, 
+0x21, 0x0f, 0x04, 0x84, 0xc0, 0xce, 0x59, 0xdc, 
+0x19, 0x1a, 0xe1, 0xa3, 0x63, 0x27, 0xcb, 0xf6, 
+0xcd, 0x32, 0x6c, 0xa4, 0x94, 0x3e, 0x00, 0x45, 
+0xd3, 0x5f, 0xf0, 0x3e, 0xb5, 0x44, 0xf8, 0x22, 
+0xae, 0xaa, 0xaa, 0xaa, 0x11, 0x42, 0x90, 0xcb, 
+0x5a, 0x8b, 0x6a, 0xc0, 0xf6, 0x27, 0x1e, 0x66, 
+0xe7, 0xbe, 0x1d, 0xe8, 0x21, 0x1d, 0xc7, 0x75, 
+0xd8, 0xd4, 0xd9, 0xc6, 0xf7, 0x5e, 0xfd, 0x2e, 
+0x67, 0x7e, 0x7b, 0x96, 0x5f, 0xfe, 0xdb, 0xaf, 
+0x18, 0x1f, 0x1e, 0x5f, 0x16, 0x00, 0x97, 0x4e, 
+0x5f, 0xe2, 0xde, 0xd0, 0x3d, 0x7e, 0xff, 0x9b, 
+0x07, 0xe9, 0xec, 0xee, 0xf4, 0xf6, 0x08, 0xba, 
+0xea, 0x81, 0x10, 0xd6, 0x71, 0x1c, 0x07, 0xd7, 
+0x71, 0xf8, 0xf9, 0x6b, 0xbf, 0xc0, 0xb4, 0xcd, 
+0xb2, 0xbe, 0xc9, 0x31, 0x1c, 0x84, 0x10, 0x84, 
+0xc3, 0xe1, 0x18, 0x25, 0x9e, 0xbf, 0x14, 0x80, 
+0x05, 0x49, 0x08, 0x6f, 0x3e, 0x95, 0x52, 0x22, 
+0x64, 0x79, 0x0f, 0xa8, 0x6a, 0x2a, 0x2f, 0xfe, 
+0xed, 0x0b, 0xde, 0xff, 0x02, 0x1c, 0xcb, 0xc5, 
+0x71, 0x1c, 0x1c, 0xc7, 0xa5, 0xb3, 0xbb, 0x83, 
+0x4d, 0x9d, 0x9b, 0x38, 0xf5, 0xcb, 0x8f, 0xf9, 
+0xe8, 0x9d, 0x8f, 0xc8, 0x66, 0x8c, 0x8a, 0x41, 
+0x18, 0x1b, 0x1e, 0xe3, 0xcd, 0x57, 0xff, 0x83, 
+0x07, 0x77, 0x3d, 0xc0, 0x1f, 0xfd, 0xd5, 0xd7, 
+0x69, 0xeb, 0x68, 0x2b, 0xf8, 0x18, 0xc7, 0x72, 
+0x38, 0x77, 0xe2, 0x02, 0x9f, 0x9f, 0xb9, 0xb6, 
+0x60, 0xbf, 0x84, 0xf4, 0xfa, 0xbe, 0x94, 0x29, 
+0xaa, 0x2c, 0x92, 0x96, 0xce, 0x64, 0x32, 0x69, 
+0x21, 0x04, 0x5a, 0x4c, 0x45, 0x2a, 0xe5, 0x83, 
+0x9c, 0xcf, 0xbc, 0xb8, 0x97, 0xba, 0xe6, 0x04, 
+0x96, 0x69, 0xe1, 0x58, 0x0e, 0xb6, 0xed, 0x90, 
+0x33, 0x2d, 0xac, 0x9c, 0x85, 0x6d, 0x7b, 0xaa, 
+0xb9, 0x6b, 0x5f, 0x17, 0x55, 0xb5, 0x55, 0x1c, 
+0x7f, 0xf3, 0x3d, 0xb2, 0x33, 0xd9, 0x8a, 0x41, 
+0x00, 0xb8, 0xfe, 0x59, 0x3f, 0xff, 0xf2, 0x0f, 
+0xff, 0xca, 0x9e, 0xaf, 0x75, 0xf3, 0x87, 0x7f, 
+0xf9, 0x1c, 0x35, 0xf5, 0x71, 0x8c, 0x59, 0x83, 
+0xa3, 0xaf, 0xfd, 0x62, 0xc1, 0x3e, 0x01, 0xa8, 
+0x51, 0x05, 0x21, 0x04, 0x86, 0x61, 0xcc, 0x50, 
+0x92, 0x43, 0x2c, 0x05, 0x00, 0x8a, 0x41, 0xf0, 
+0x6f, 0xb6, 0x0b, 0x00, 0x44, 0x34, 0x14, 0xa9, 
+0xcc, 0x7b, 0x49, 0x75, 0x5d, 0x35, 0xfb, 0x5e, 
+0x78, 0x06, 0x2b, 0x67, 0xe1, 0xe4, 0xbd, 0xbf, 
+0xe3, 0x38, 0x58, 0xa6, 0xc5, 0xc4, 0xc8, 0x04, 
+0x97, 0x4e, 0x5d, 0xe6, 0xfa, 0x85, 0x7e, 0x6e, 
+0x7f, 0x7e, 0x1b, 0x63, 0xd6, 0x1b, 0xfd, 0x72, 
+0xed, 0x54, 0x42, 0xa7, 0x7f, 0xfd, 0x29, 0x17, 
+0x4e, 0x7c, 0xc6, 0xbe, 0x3f, 0x7e, 0x06, 0x63, 
+0xd6, 0x20, 0x3d, 0x92, 0x5e, 0xb4, 0x2d, 0x2d, 
+0xaa, 0xfb, 0x00, 0x4c, 0x12, 0xc8, 0x1f, 0x96, 
+0x82, 0x10, 0x34, 0x01, 0xff, 0xcf, 0x42, 0x96, 
+0x76, 0x6a, 0x6a, 0x6a, 0x5c, 0x4a, 0x89, 0x16, 
+0x2b, 0x0f, 0xc0, 0xc1, 0x3f, 0x3d, 0x80, 0x10, 
+0x02, 0x33, 0x9b, 0x63, 0x76, 0x3a, 0x8d, 0x1e, 
+0xd6, 0x51, 0x54, 0x05, 0x2b, 0x67, 0x33, 0x91, 
+0x9c, 0xe0, 0xf8, 0x91, 0xb9, 0xb9, 0x79, 0xa5, 
+0x82, 0x07, 0xc9, 0x32, 0x2c, 0xde, 0x7b, 0xe3, 
+0x37, 0x15, 0xb5, 0xa7, 0x47, 0x35, 0xa4, 0x94, 
+0x98, 0xa6, 0x39, 0x49, 0x71, 0x12, 0xb5, 0x08, 
+0x88, 0x52, 0x1f, 0x50, 0x94, 0xa5, 0x4d, 0xa5, 
+0x52, 0x63, 0x42, 0x08, 0xd4, 0xa8, 0x8a, 0xa2, 
+0x14, 0xbf, 0xb0, 0xa9, 0xb5, 0x11, 0x3d, 0xac, 
+0xf3, 0xde, 0x1b, 0xbf, 0xe1, 0xd6, 0xd5, 0x5b, 
+0x8c, 0x0c, 0x8e, 0x72, 0xf0, 0xa5, 0x03, 0x74, 
+0x3d, 0xb3, 0x13, 0xdb, 0xb2, 0xa9, 0x6d, 0xac, 
+0xa5, 0xa9, 0xb5, 0x89, 0xb1, 0x3b, 0x63, 0xab, 
+0x16, 0x7c, 0x25, 0xa4, 0xc5, 0x34, 0x84, 0x10, 
+0x64, 0x32, 0x99, 0x34, 0x73, 0x11, 0xa1, 0xd2, 
+0x80, 0x88, 0x1b, 0x34, 0x01, 0x9f, 0xfd, 0x1c, 
+0xbd, 0xd9, 0xdf, 0xdf, 0x7f, 0xcb, 0x75, 0xdd, 
+0x9c, 0x1e, 0xd7, 0x34, 0x35, 0xaa, 0xe2, 0x64, 
+0xe7, 0xa6, 0x9b, 0xd1, 0xa1, 0x31, 0xde, 0x7a, 
+0xed, 0x9d, 0xc2, 0x77, 0x21, 0x04, 0x9f, 0xfd, 
+0xf7, 0x45, 0x3a, 0xba, 0x3b, 0xb0, 0x2d, 0x1b, 
+0xdb, 0xb2, 0x79, 0xe8, 0x91, 0x76, 0x4e, 0x0d, 
+0x7f, 0x7c, 0xbf, 0x65, 0x2d, 0x4b, 0xe1, 0xa6, 
+0x10, 0x52, 0x4a, 0x46, 0x46, 0x46, 0x6e, 0x32, 
+0x3f, 0x9d, 0x5e, 0x56, 0x03, 0x82, 0xea, 0x9f, 
+0x03, 0xcc, 0xe9, 0xe9, 0xe9, 0xc9, 0x91, 0x91, 
+0x91, 0xeb, 0x2d, 0x2d, 0x2d, 0x1d, 0xd1, 0x96, 
+0x08, 0xb3, 0xb7, 0x16, 0x77, 0x60, 0xe3, 0x77, 
+0x53, 0xdc, 0xed, 0xbf, 0x4b, 0x6d, 0x53, 0x2d, 
+0xb6, 0xe5, 0xb0, 0x65, 0xfb, 0x16, 0xae, 0x9f, 
+0xbb, 0xce, 0xf8, 0x70, 0x6a, 0xed, 0x25, 0x5c, 
+0x84, 0x84, 0x2a, 0x08, 0x37, 0x84, 0x70, 0x71, 
+0x9d, 0x4f, 0x3e, 0xf9, 0xa4, 0x17, 0x2f, 0x36, 
+0x18, 0x8c, 0x0b, 0x16, 0xfc, 0x80, 0xcc, 0x07, 
+0x07, 0x83, 0xf6, 0xef, 0x17, 0x29, 0x64, 0x81, 
+0xd9, 0x81, 0x81, 0x81, 0x0b, 0x52, 0x4a, 0x22, 
+0xeb, 0xc2, 0x28, 0x52, 0x59, 0x92, 0x2f, 0x7f, 
+0x74, 0x85, 0x5c, 0x36, 0x47, 0x2e, 0x6b, 0x62, 
+0x9b, 0x16, 0xbb, 0x0f, 0xec, 0x26, 0x14, 0x0a, 
+0x55, 0xf4, 0xec, 0x5a, 0x71, 0xa4, 0x39, 0x8c, 
+0x54, 0x24, 0xa9, 0x54, 0xea, 0xf6, 0xe8, 0xe8, 
+0xe8, 0x68, 0x19, 0x00, 0x0a, 0x20, 0x04, 0xe7, 
+0x91, 0xa0, 0x06, 0x98, 0xf9, 0x87, 0x32, 0xa7, 
+0x4f, 0x9f, 0xfe, 0x14, 0x70, 0x42, 0x0d, 0xba, 
+0x17, 0xc8, 0x94, 0x72, 0x51, 0xbe, 0x75, 0xe9, 
+0x16, 0x83, 0x57, 0x07, 0xc9, 0x65, 0x73, 0x98, 
+0x59, 0x93, 0x50, 0x58, 0xa7, 0xfb, 0x6b, 0x8f, 
+0x50, 0x15, 0x8f, 0x2d, 0xf9, 0xec, 0x5a, 0x71, 
+0x64, 0x5d, 0x08, 0x21, 0x04, 0x37, 0x6e, 0xdc, 
+0xb8, 0x80, 0x17, 0x0f, 0x5c, 0x50, 0x03, 0xca, 
+0xcd, 0x02, 0xbe, 0x09, 0x18, 0x40, 0x26, 0x99, 
+0x4c, 0x26, 0xc7, 0xc7, 0xc7, 0x6f, 0x34, 0x36, 
+0x36, 0x6e, 0x8d, 0x6d, 0x8e, 0x32, 0x3b, 0xb0, 
+0xf4, 0x3c, 0x7e, 0xe1, 0xfd, 0xcf, 0xd8, 0xf3, 
+0xf5, 0x6e, 0x54, 0x55, 0xc5, 0xb2, 0x2c, 0xf4, 
+0x90, 0xce, 0xf6, 0xbd, 0xdb, 0x19, 0xb9, 0x95, 
+0x64, 0x74, 0x70, 0x0c, 0x63, 0xd6, 0xc0, 0x75, 
+0xdc, 0xa2, 0x45, 0x8a, 0xbf, 0xd8, 0x72, 0x5d, 
+0x17, 0xc7, 0x5e, 0x79, 0xc0, 0x55, 0x46, 0x24, 
+0xa1, 0x75, 0x21, 0x10, 0xb8, 0x67, 0xce, 0x9c, 
+0xf9, 0x04, 0x2f, 0x28, 0xea, 0x17, 0x51, 0x14, 
+0x4d, 0x87, 0xae, 0xeb, 0xba, 0xe5, 0x66, 0x01, 
+0x1f, 0x80, 0x2c, 0x5e, 0x58, 0x79, 0xea, 0xe4, 
+0xc9, 0x93, 0xbf, 0x3a, 0x7c, 0xf8, 0xf0, 0xdf, 
+0x44, 0xb6, 0x86, 0x31, 0xef, 0x5a, 0xb8, 0xe6, 
+0xe2, 0xab, 0x2b, 0xcb, 0xb4, 0xf9, 0xec, 0xfd, 
+0x4b, 0xb4, 0x77, 0x3f, 0x88, 0x54, 0x24, 0xb6, 
+0x65, 0xe3, 0xd8, 0x0e, 0x35, 0x8d, 0xb5, 0xc4, 
+0x6a, 0xaa, 0xb0, 0x4c, 0x8b, 0x9c, 0x69, 0x91, 
+0xcb, 0x9a, 0xe4, 0x8c, 0x1c, 0x39, 0x23, 0x87, 
+0x65, 0xd9, 0x9e, 0xe9, 0x18, 0x39, 0xe4, 0x2a, 
+0xa6, 0xcc, 0x58, 0x7b, 0x04, 0xa9, 0x48, 0x6e, 
+0xdc, 0xb8, 0x71, 0x7e, 0x60, 0x60, 0xe0, 0x26, 
+0x73, 0x75, 0x03, 0xe5, 0x7d, 0x00, 0x14, 0x72, 
+0xe7, 0xa5, 0x7e, 0xc0, 0xc0, 0x53, 0x9f, 0xc9, 
+0x0f, 0x3e, 0xf8, 0xa0, 0x37, 0x99, 0x4c, 0x7e, 
+0xa1, 0xe8, 0x0a, 0xb1, 0x07, 0x22, 0x28, 0x8a, 
+0xb2, 0x24, 0x67, 0xd2, 0x19, 0x2e, 0x9d, 0xb8, 
+0x44, 0x3a, 0x99, 0xc6, 0x32, 0x2c, 0x6c, 0xd3, 
+0xf6, 0x38, 0x37, 0xc7, 0x8e, 0xed, 0x7a, 0x9a, 
+0xe0, 0x80, 0x6b, 0x39, 0xb8, 0xb6, 0x53, 0x51, 
+0xdb, 0x0b, 0xb1, 0x9e, 0xd0, 0x09, 0xaf, 0x0f, 
+0x01, 0xd8, 0xef, 0xbe, 0xfb, 0xee, 0x51, 0xbc, 
+0x04, 0xe9, 0x74, 0x7e, 0x30, 0x83, 0x25, 0x34, 
+0x14, 0x01, 0x10, 0xa0, 0x20, 0x00, 0x66, 0x1e, 
+0xb9, 0x69, 0x60, 0xa2, 0xa7, 0xa7, 0xe7, 0xe7, 
+0x80, 0x1b, 0x6e, 0x0d, 0xa1, 0x55, 0x69, 0x15, 
+0x39, 0x23, 0xc7, 0x72, 0xb9, 0x71, 0xe1, 0x26, 
+0x77, 0xae, 0xdd, 0x65, 0x26, 0x35, 0x83, 0xe5, 
+0x83, 0x60, 0xda, 0xde, 0x0e, 0x33, 0xe7, 0x60, 
+0xfb, 0xd7, 0x9c, 0x83, 0x14, 0xab, 0x73, 0x7e, 
+0xd1, 0xf6, 0x30, 0x42, 0x08, 0xfa, 0xfa, 0xfa, 
+0x4e, 0xf5, 0xf7, 0xf7, 0xf7, 0x53, 0x9c, 0x26, 
+0x2f, 0x4a, 0x8c, 0xcc, 0xcb, 0x0c, 0xb9, 0xae, 
+0xeb, 0x17, 0x1d, 0x06, 0x1d, 0x61, 0x01, 0x80, 
+0x73, 0xe7, 0xce, 0x5d, 0xdc, 0xbf, 0x7f, 0xff, 
+0xf9, 0xcd, 0x9b, 0x37, 0xef, 0xaa, 0xda, 0x19, 
+0x21, 0x73, 0x66, 0x16, 0xb7, 0xc2, 0xec, 0xd5, 
+0x4c, 0x6a, 0x9a, 0x99, 0xd4, 0xb4, 0xb7, 0xa3, 
+0xd3, 0xb5, 0x22, 0x5b, 0xb7, 0x73, 0x16, 0x8e, 
+0x65, 0xa3, 0xc8, 0xd5, 0x15, 0x54, 0xe8, 0x9b, 
+0x34, 0xf4, 0x7a, 0x0d, 0xd3, 0x34, 0xb3, 0x47, 
+0x8f, 0x1e, 0x3d, 0x4a, 0xf9, 0x62, 0x89, 0x79, 
+0xfb, 0x81, 0x72, 0x6f, 0x2d, 0x35, 0x83, 0x19, 
+0x3c, 0x24, 0xc7, 0x8f, 0x1c, 0x39, 0xf2, 0xd3, 
+0x99, 0x99, 0x99, 0x31, 0x25, 0xae, 0x10, 0xf9, 
+0x4a, 0x04, 0x29, 0x95, 0x65, 0xb1, 0x63, 0xb9, 
+0x18, 0x19, 0x93, 0xec, 0xb4, 0x81, 0x31, 0x63, 
+0x92, 0xcb, 0x5a, 0xb8, 0x36, 0xcb, 0x6e, 0xa7, 
+0x94, 0xf5, 0x46, 0x9d, 0xf0, 0xb6, 0x10, 0x80, 
+0xdb, 0xd3, 0xd3, 0xf3, 0x7a, 0x32, 0x99, 0xbc, 
+0x05, 0x4c, 0x30, 0x3f, 0x3d, 0x5e, 0x34, 0xfa, 
+0x4b, 0x01, 0x10, 0xd4, 0x82, 0x29, 0x20, 0x35, 
+0x3a, 0x3a, 0x7a, 0xfb, 0xf5, 0xd7, 0x5f, 0xff, 
+0xa1, 0x6d, 0xdb, 0x86, 0xbe, 0x4e, 0x23, 0xbc, 
+0xe5, 0xcb, 0x9d, 0xdf, 0xcb, 0xb1, 0x56, 0xa5, 
+0x12, 0xd9, 0x1e, 0x42, 0x2a, 0x92, 0xde, 0xde, 
+0xde, 0x5f, 0xf7, 0xf4, 0xf4, 0x9c, 0x60, 0x91, 
+0x2a, 0x91, 0x52, 0x61, 0x57, 0x54, 0x20, 0xf1, 
+0xec, 0xb3, 0xcf, 0x1e, 0x38, 0x7c, 0xf8, 0xf0, 
+0x77, 0x84, 0x10, 0x22, 0x77, 0xdd, 0xc6, 0x1a, 
+0x5c, 0x5d, 0x96, 0x78, 0xa5, 0x24, 0xab, 0x04, 
+0xfa, 0x76, 0x15, 0x11, 0x12, 0x0c, 0x0c, 0x0c, 
+0x9c, 0x7f, 0xf5, 0xd5, 0x57, 0x97, 0x5d, 0x20, 
+0x31, 0x2f, 0x20, 0x52, 0xe2, 0x0b, 0xfc, 0x34, 
+0xd2, 0x2c, 0x73, 0xd1, 0x62, 0xe5, 0xf8, 0xf1, 
+0xe3, 0x27, 0x1a, 0x1b, 0x1b, 0x1b, 0x9e, 0x7e, 
+0xfa, 0xe9, 0xe7, 0xf5, 0x07, 0x54, 0xa1, 0x54, 
+0x4b, 0xac, 0x3e, 0xbb, 0xc4, 0xbf, 0xde, 0x5f, 
+0x92, 0x0d, 0x12, 0xf5, 0x21, 0x89, 0x50, 0x04, 
+0xc9, 0x64, 0x72, 0xe0, 0xb5, 0xd7, 0x5e, 0xfb, 
+0x11, 0xf3, 0xcb, 0x63, 0x82, 0x85, 0x52, 0x95, 
+0x95, 0xc8, 0x40, 0xe5, 0x45, 0x52, 0xcf, 0x3d, 
+0xf7, 0xdc, 0xc1, 0x43, 0x87, 0x0e, 0xbd, 0xa4, 
+0x69, 0x9a, 0xee, 0x4e, 0xb9, 0x58, 0x97, 0x6d, 
+0x5c, 0x73, 0xcd, 0x65, 0x9d, 0x47, 0xca, 0x26, 
+0x89, 0xd2, 0xe6, 0x59, 0x6f, 0x5f, 0x5f, 0x5f, 
+0xef, 0x0f, 0x7e, 0xf0, 0x83, 0x1f, 0x1b, 0x86, 
+0xb1, 0x76, 0x45, 0x52, 0x50, 0x79, 0x99, 0xdc, 
+0xee, 0xdd, 0xbb, 0x77, 0xbe, 0xfc, 0xf2, 0xcb, 
+0xdf, 0x8d, 0xc5, 0x62, 0xb5, 0xd8, 0xe0, 0x0c, 
+0xba, 0x38, 0x43, 0xee, 0x7d, 0xd1, 0x06, 0x91, 
+0x10, 0xc8, 0xcd, 0x02, 0x11, 0x03, 0xd7, 0x75, 
+0x9d, 0x0f, 0x3f, 0xfc, 0xf0, 0xd8, 0x91, 0x23, 
+0x47, 0xd6, 0xbe, 0x4c, 0xae, 0xf0, 0x67, 0x85, 
+0x85, 0x92, 0xeb, 0xd6, 0xad, 0xdb, 0xf4, 0xca, 
+0x2b, 0xaf, 0x7c, 0x7b, 0xe3, 0xc6, 0x8d, 0x1d, 
+0x00, 0x98, 0xe0, 0xdc, 0x72, 0x71, 0xee, 0x51, 
+0xc6, 0xed, 0xac, 0x40, 0xf0, 0x2a, 0x3c, 0xc1, 
+0x6b, 0xbd, 0xef, 0x99, 0x4c, 0x26, 0xfd, 0xce, 
+0x3b, 0xef, 0xbc, 0x71, 0xfc, 0xf8, 0xf1, 0x8f, 
+0xf0, 0x8a, 0x24, 0xc7, 0xf0, 0xbc, 0x7e, 0xb9, 
+0x5a, 0x80, 0x95, 0x15, 0x4a, 0x16, 0x6e, 0x58, 
+0xb8, 0x54, 0x36, 0x8a, 0x97, 0x7f, 0x2f, 0x94, 
+0xca, 0xee, 0xdf, 0xbf, 0xff, 0xd1, 0x43, 0x87, 
+0x0e, 0x3d, 0x5f, 0x5f, 0x5f, 0xbf, 0x01, 0x80, 
+0x1c, 0xb8, 0xe3, 0x5e, 0xf7, 0xdc, 0x34, 0xcb, 
+0x03, 0x23, 0x0a, 0xa2, 0xce, 0x63, 0xaa, 0xbc, 
+0x9f, 0x4c, 0xd3, 0xcc, 0xf6, 0xf6, 0xf6, 0xbe, 
+0xf7, 0xe6, 0x9b, 0x6f, 0xbe, 0x9b, 0xc9, 0x64, 
+0xfc, 0x52, 0xd9, 0x09, 0x8a, 0x57, 0x7c, 0x6b, 
+0x57, 0x2a, 0xbb, 0x00, 0x08, 0x0b, 0x15, 0x4b, 
+0xd7, 0xe0, 0x99, 0x46, 0xe2, 0xc5, 0x17, 0x5f, 
+0xdc, 0xbb, 0x77, 0xef, 0xde, 0xe7, 0xe2, 0xf1, 
+0x78, 0xa1, 0x58, 0x1a, 0x3b, 0xdf, 0x55, 0x03, 
+0x5c, 0x53, 0xcc, 0x9d, 0x08, 0x70, 0x28, 0x9c, 
+0x22, 0x10, 0x21, 0xd7, 0xfb, 0x1c, 0xc7, 0x83, 
+0x38, 0x4f, 0x96, 0x65, 0x99, 0x97, 0x2f, 0x5f, 
+0x3e, 0xf5, 0xb3, 0x9f, 0xfd, 0xec, 0xad, 0x64, 
+0x32, 0x79, 0x37, 0xdf, 0x52, 0x3a, 0xcf, 0xc1, 
+0x51, 0x5f, 0xfb, 0x62, 0xe9, 0x45, 0x40, 0x08, 
+0x1e, 0x90, 0xf0, 0xcf, 0x08, 0x54, 0xe5, 0xbb, 
+0x1f, 0x07, 0xaa, 0xf7, 0xec, 0xd9, 0xf3, 0x50, 
+0x77, 0x77, 0xf7, 0xa3, 0x5b, 0xb7, 0x6e, 0x7d, 
+0x38, 0x91, 0x48, 0x2c, 0xab, 0x5c, 0xde, 0x30, 
+0x8c, 0xcc, 0xcd, 0x9b, 0x37, 0x3f, 0xbf, 0x78, 
+0xf1, 0xe2, 0xd9, 0xf7, 0xdf, 0x7f, 0xff, 0xec, 
+0xf4, 0xf4, 0xb4, 0xef, 0xdc, 0xfc, 0xd1, 0xfe, 
+0xf2, 0xca, 0xe5, 0x0b, 0x37, 0x2f, 0x7e, 0x60, 
+0xc2, 0xd7, 0x88, 0xb2, 0x07, 0x26, 0x3a, 0x3a, 
+0x3a, 0x36, 0xec, 0xde, 0xbd, 0xbb, 0x23, 0x1e, 
+0x8f, 0x27, 0xaa, 0xab, 0xab, 0x6b, 0xa2, 0xd1, 
+0x68, 0x3c, 0x16, 0x8b, 0x55, 0xab, 0xaa, 0xaa, 
+0x66, 0x32, 0x99, 0xe9, 0xe9, 0xe9, 0xe9, 0xc9, 
+0x99, 0x99, 0x99, 0xc9, 0xa9, 0xa9, 0xa9, 0xd4, 
+0xe0, 0xe0, 0xe0, 0xd0, 0x89, 0x13, 0x27, 0xae, 
+0xe4, 0x72, 0xb9, 0xc5, 0x0e, 0x4c, 0x04, 0x05, 
+0x2f, 0x3a, 0x39, 0x52, 0xa9, 0xf0, 0xcb, 0x06, 
+0x20, 0x00, 0x02, 0xac, 0xfc, 0xc8, 0x4c, 0x30, 
+0x51, 0xe9, 0xaf, 0x44, 0xfd, 0x38, 0x44, 0x21, 
+0x1c, 0xc7, 0xdc, 0x71, 0x99, 0x52, 0x5e, 0xf0, 
+0xc8, 0x0c, 0x8b, 0x78, 0xfb, 0x05, 0xe5, 0xf9, 
+0x1d, 0x1d, 0x9a, 0x0a, 0x9e, 0x1c, 0x83, 0xe2, 
+0xe5, 0xb7, 0x0f, 0xc2, 0x97, 0x72, 0x68, 0x6a, 
+0x55, 0x07, 0x27, 0x57, 0x71, 0x6c, 0xae, 0x34, 
+0x57, 0x57, 0x9a, 0x93, 0xf0, 0x79, 0xc9, 0x63, 
+0x73, 0xac, 0x42, 0x78, 0x58, 0x25, 0x00, 0x50, 
+0x04, 0x02, 0x14, 0x6b, 0x44, 0x30, 0xd3, 0x5c, 
+0xc9, 0xc1, 0xc9, 0xd2, 0xa0, 0xcc, 0xa2, 0x07, 
+0x27, 0x59, 0xa5, 0xe0, 0x85, 0x0e, 0xff, 0x7f, 
+0x3f, 0x3a, 0xbb, 0x66, 0x00, 0x14, 0x35, 0xba, 
+0x86, 0x87, 0xa7, 0x03, 0x57, 0xef, 0xcb, 0xff, 
+0xd6, 0xc3, 0xd3, 0xff, 0x57, 0xe9, 0x7f, 0x00, 
+0x6d, 0xa9, 0x8e, 0x3e, 0xbc, 0x36, 0x76, 0x15, 
+0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 
+0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity6.png b/source/bitmaps/misc/activity6.png
new file mode 100644 (file)
index 0000000..2175587
Binary files /dev/null and b/source/bitmaps/misc/activity6.png differ
diff --git a/source/bitmaps/misc/activity7.cpp b/source/bitmaps/misc/activity7.cpp
new file mode 100644 (file)
index 0000000..8a36c83
--- /dev/null
@@ -0,0 +1,551 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY7_CPP
+#define MISC_ACTIVITY7_CPP
+
+static unsigned char misc_activity7_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x66, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0x69, 
+0x6c, 0x5c, 0xd7, 0x75, 0xc7, 0x7f, 0xf7, 0xbe, 
+0x65, 0x56, 0xce, 0x70, 0xb8, 0x4a, 0xa4, 0x49, 
+0x6b, 0xab, 0x16, 0x5b, 0x12, 0xad, 0x58, 0xf2, 
+0x22, 0x4b, 0xb1, 0x1c, 0x39, 0x88, 0xe2, 0xa2, 
+0xb1, 0xec, 0x66, 0x71, 0x0d, 0x37, 0xfd, 0x50, 
+0xc3, 0x2d, 0x50, 0x14, 0x68, 0x9b, 0x4f, 0xfd, 
+0x54, 0xa0, 0x2d, 0x8a, 0x14, 0xa9, 0x91, 0x02, 
+0x45, 0x90, 0x06, 0xc8, 0x97, 0xa4, 0x72, 0xec, 
+0x74, 0x8b, 0x63, 0x27, 0x70, 0x5b, 0x3a, 0x88, 
+0xe1, 0xc6, 0x91, 0x6d, 0x85, 0x96, 0x64, 0x38, 
+0xb2, 0x2c, 0x4a, 0xa4, 0xc5, 0xcd, 0xd2, 0x98, 
+0xe2, 0x88, 0x9c, 0xe1, 0x70, 0xde, 0xde, 0x0f, 
+0x6f, 0xde, 0xf0, 0xcd, 0x70, 0x38, 0x33, 0x12, 
+0xa9, 0xa4, 0x45, 0x0f, 0x70, 0xf0, 0x38, 0xc3, 
+0x77, 0xef, 0xdc, 0xf3, 0x3f, 0xcb, 0xbd, 0xf7, 
+0xdc, 0x73, 0x85, 0xe7, 0x79, 0xdc, 0x4a, 0x12, 
+0x42, 0x88, 0xd5, 0xfe, 0x55, 0xe7, 0xbb, 0x15, 
+0x83, 0xf1, 0x6e, 0xf1, 0x00, 0xd5, 0x5b, 0xd1, 
+0x69, 0x8d, 0xd0, 0x62, 0x95, 0xe7, 0x6a, 0xe4, 
+0x85, 0x9f, 0xb5, 0xf8, 0xad, 0x37, 0x20, 0x62, 
+0xbd, 0xfa, 0xab, 0x23, 0xb4, 0xa8, 0xf9, 0x5b, 
+0xd6, 0xf9, 0x2e, 0x4c, 0x61, 0xc1, 0x1b, 0xb1, 
+0xff, 0xd2, 0x3a, 0x0d, 0x7c, 0xcd, 0x16, 0xb0, 
+0x8a, 0xe0, 0x32, 0xf4, 0xac, 0xc7, 0x82, 0x6a, 
+0x10, 0x02, 0x61, 0xdc, 0xf2, 0xdf, 0xee, 0x2a, 
+0x5c, 0x01, 0x22, 0xf8, 0xd9, 0xb5, 0x02, 0xb1, 
+0x26, 0x00, 0x42, 0xc2, 0xd7, 0x0a, 0xad, 0x84, 
+0x58, 0x2d, 0xb3, 0x52, 0xc3, 0xb5, 0x56, 0x10, 
+0x16, 0xd4, 0x06, 0x9c, 0x3a, 0x4f, 0x87, 0x1a, 
+0x30, 0xd6, 0x0a, 0xc4, 0x4d, 0xb9, 0x40, 0x8d, 
+0xe0, 0xb5, 0x42, 0xab, 0x80, 0x16, 0x62, 0xbd, 
+0xcc, 0xc1, 0xe7, 0x00, 0x90, 0xb0, 0x25, 0x04, 
+0x5a, 0x0f, 0x84, 0xb5, 0xca, 0x6c, 0xd6, 0x3c, 
+0x03, 0xae, 0x07, 0xc6, 0x4d, 0x81, 0x70, 0xc3, 
+0x16, 0x10, 0x12, 0x3e, 0x10, 0x20, 0xac, 0x65, 
+0x1d, 0x88, 0x94, 0x39, 0x5a, 0xe6, 0x58, 0xe8, 
+0x73, 0x00, 0x46, 0x60, 0x11, 0x01, 0x00, 0x61, 
+0xcd, 0x07, 0x02, 0x1b, 0x65, 0x2e, 0x01, 0x4b, 
+0xe5, 0x67, 0xa9, 0xfc, 0x5d, 0x00, 0x48, 0x60, 
+0x19, 0x2e, 0x65, 0x6b, 0xb8, 0x51, 0x10, 0x6e, 
+0x08, 0x80, 0xb2, 0xf0, 0x01, 0x07, 0x1a, 0x0f, 
+0xb4, 0x1c, 0x08, 0x1c, 0x07, 0x12, 0x21, 0x8e, 
+0x03, 0xf1, 0x9e, 0x9e, 0x9e, 0xfe, 0xfe, 0xfe, 
+0xfe, 0x9d, 0xd1, 0x68, 0xb4, 0x23, 0x1a, 0x8d, 
+0xb6, 0xeb, 0xba, 0x9e, 0xd2, 0x75, 0x3d, 0x25, 
+0xa5, 0xd4, 0x4c, 0xd3, 0xcc, 0x9b, 0xa6, 0xb9, 
+0x60, 0x18, 0xc6, 0x75, 0xc3, 0x30, 0x72, 0xd7, 
+0xaf, 0x5f, 0x9f, 0xba, 0x74, 0xe9, 0xd2, 0xfb, 
+0xae, 0xeb, 0x2e, 0x02, 0x45, 0x60, 0x31, 0xc4, 
+0xc5, 0x10, 0x20, 0x46, 0x2d, 0x10, 0x37, 0xea, 
+0x12, 0x2d, 0xbb, 0x40, 0x48, 0xf8, 0xc0, 0xdc, 
+0x03, 0x8d, 0x07, 0x5a, 0x4e, 0x00, 0x6d, 0x65, 
+0x4e, 0x01, 0x6d, 0x83, 0x83, 0x83, 0x3b, 0x06, 
+0x06, 0x06, 0xf6, 0x77, 0x75, 0x75, 0xdd, 0x19, 
+0x8f, 0xc7, 0x7b, 0x5b, 0xfa, 0xa1, 0x32, 0xd9, 
+0xb6, 0x5d, 0xcc, 0xe5, 0x72, 0x1f, 0x5c, 0xb9, 
+0x72, 0xe5, 0xf4, 0xe8, 0xe8, 0xe8, 0x19, 0xc3, 
+0x30, 0xae, 0x01, 0x0b, 0x40, 0xbe, 0xcc, 0x05, 
+0x96, 0xc1, 0x08, 0x2c, 0x22, 0xec, 0x16, 0x2d, 
+0x81, 0xd0, 0x12, 0x00, 0x75, 0x84, 0xd7, 0xf0, 
+0xcd, 0x3a, 0x06, 0x24, 0xcb, 0x42, 0xb7, 0x03, 
+0x69, 0xa0, 0xe3, 0xae, 0xbb, 0xee, 0xfa, 0xe4, 
+0xd6, 0xad, 0x5b, 0x8f, 0x45, 0xa3, 0xd1, 0xce, 
+0xa0, 0x0f, 0xc5, 0x52, 0xc9, 0x64, 0x3b, 0x88, 
+0x16, 0x62, 0xe8, 0x25, 0x1d, 0xcd, 0xd0, 0xd1, 
+0x4b, 0x11, 0xa4, 0x23, 0xb1, 0xa2, 0x26, 0x66, 
+0xc4, 0xc4, 0x8c, 0x1a, 0x98, 0x31, 0x83, 0xeb, 
+0x3d, 0x39, 0x4a, 0x89, 0xa5, 0xca, 0xef, 0xbb, 
+0xae, 0x6b, 0x7d, 0xf4, 0xd1, 0x47, 0x6f, 0x8e, 
+0x8c, 0x8c, 0xbc, 0x9c, 0xcf, 0xe7, 0x67, 0x80, 
+0x1c, 0x30, 0x1f, 0x02, 0xa4, 0xc8, 0xb2, 0x6b, 
+0xd8, 0x37, 0x02, 0x42, 0x53, 0x00, 0x6a, 0x84, 
+0x0f, 0x02, 0x5c, 0x94, 0x65, 0x8d, 0xa7, 0x81, 
+0x0e, 0xa0, 0x63, 0xe7, 0xce, 0x9d, 0xf7, 0xed, 
+0xda, 0xb5, 0xeb, 0x73, 0x89, 0x44, 0x62, 0x23, 
+0x80, 0x56, 0xd2, 0xc9, 0x5c, 0xe9, 0x20, 0x33, 
+0xd3, 0x45, 0x6a, 0x36, 0x8d, 0x70, 0x9b, 0xad, 
+0x81, 0x96, 0x69, 0xa9, 0xad, 0x48, 0xae, 0xef, 
+0x1a, 0xb9, 0x8d, 0xd7, 0x58, 0x6c, 0x2f, 0x00, 
+0xe0, 0x38, 0x8e, 0x31, 0x39, 0x39, 0xf9, 0xd3, 
+0x53, 0xa7, 0x4e, 0xfd, 0xd8, 0x30, 0x8c, 0xab, 
+0xc0, 0x5c, 0x19, 0x8c, 0x05, 0x7c, 0xf7, 0x58, 
+0x2a, 0x03, 0xd1, 0x32, 0x08, 0x0d, 0x01, 0x58, 
+0x45, 0xf8, 0xc0, 0xdc, 0xd3, 0x40, 0x06, 0xe8, 
+0x4a, 0xa7, 0xd3, 0x9b, 0x1e, 0x7c, 0xf0, 0xc1, 
+0xa7, 0xdb, 0xdb, 0xdb, 0xb7, 0xfb, 0x82, 0x6b, 
+0x6c, 0x7c, 0xff, 0x36, 0x3a, 0x27, 0xba, 0x11, 
+0x5e, 0xeb, 0x42, 0xaf, 0x46, 0xc5, 0xf4, 0x22, 
+0xd3, 0xbb, 0x27, 0xc8, 0x77, 0x2f, 0x00, 0x60, 
+0x59, 0x56, 0xfe, 0xec, 0xd9, 0xb3, 0x27, 0xce, 
+0x9d, 0x3b, 0x77, 0x12, 0x98, 0x05, 0xae, 0xe1, 
+0x5b, 0x44, 0xd8, 0x1a, 0x5a, 0x02, 0x61, 0x55, 
+0x00, 0xea, 0x98, 0xbd, 0xce, 0xb2, 0xc9, 0xb7, 
+0x03, 0x9d, 0x40, 0xf7, 0xe0, 0xe0, 0xe0, 0xd0, 
+0xfd, 0xf7, 0xdf, 0xff, 0x4c, 0x34, 0x1a, 0x6d, 
+0x97, 0xb6, 0xa4, 0x7b, 0x74, 0x23, 0xdd, 0x17, 
+0x7b, 0x91, 0x8e, 0x5c, 0xb3, 0xe0, 0xb5, 0x94, 
+0xef, 0x9d, 0xe7, 0xa3, 0x3b, 0xa7, 0x28, 0xa5, 
+0x96, 0x00, 0xdc, 0x0b, 0x17, 0x2e, 0xfc, 0xf8, 
+0xe4, 0xc9, 0x93, 0x2f, 0x02, 0x59, 0x7c, 0x20, 
+0x72, 0xac, 0x04, 0xc1, 0xc1, 0x97, 0xbf, 0x75, 
+0x00, 0x6a, 0xa6, 0xba, 0x7a, 0xc2, 0x77, 0x03, 
+0x3d, 0x43, 0x43, 0x43, 0x47, 0x87, 0x86, 0x86, 
+0x9e, 0x54, 0x14, 0x45, 0x8f, 0xe5, 0xe2, 0x0c, 
+0xbc, 0xb5, 0x09, 0xb5, 0xa4, 0xad, 0x9f, 0xc4, 
+0x75, 0x47, 0x0c, 0x1f, 0xef, 0xbc, 0xc2, 0xc7, 
+0x3b, 0xae, 0x02, 0x70, 0xf5, 0xea, 0xd5, 0x91, 
+0xe1, 0xe1, 0xe1, 0x6f, 0x5b, 0x96, 0x35, 0x03, 
+0x7c, 0x8c, 0xef, 0x16, 0x0b, 0xac, 0xb4, 0x84, 
+0xba, 0x20, 0x34, 0x02, 0x20, 0x98, 0xea, 0x02, 
+0xb3, 0x4f, 0x52, 0x36, 0x79, 0x60, 0xc3, 0x03, 
+0x0f, 0x3c, 0xf0, 0xf8, 0xf6, 0xed, 0xdb, 0x8f, 
+0x0b, 0x21, 0x44, 0x6a, 0xb2, 0x9d, 0xde, 0xd3, 
+0x7d, 0x37, 0xe4, 0xe3, 0x6b, 0xa5, 0x7c, 0xdf, 
+0x02, 0x57, 0xee, 0x9e, 0xc6, 0x53, 0x5c, 0x16, 
+0x16, 0x16, 0xc6, 0x5f, 0x7e, 0xf9, 0xe5, 0xaf, 
+0x19, 0x86, 0x31, 0x85, 0x6f, 0x0d, 0x61, 0x10, 
+0x2a, 0x81, 0xb1, 0x25, 0x00, 0x6a, 0x4c, 0x3f, 
+0x88, 0xf6, 0x61, 0xcd, 0x6f, 0xd8, 0xb3, 0x67, 
+0xcf, 0x43, 0xf7, 0xde, 0x7b, 0xef, 0xd3, 0x80, 
+0xe8, 0x7c, 0xaf, 0x9b, 0xf4, 0xc5, 0x8e, 0x5b, 
+0x26, 0x68, 0x23, 0x32, 0xd3, 0x06, 0x57, 0xee, 
+0x9b, 0xc2, 0x8e, 0xd9, 0x64, 0xb3, 0xd9, 0xb3, 
+0x2f, 0xbd, 0xf4, 0xd2, 0x3f, 0x00, 0x33, 0x2c, 
+0x83, 0x90, 0xc7, 0x0f, 0x8c, 0x95, 0x29, 0xb2, 
+0x16, 0x84, 0x2a, 0x47, 0xad, 0x59, 0xe2, 0x06, 
+0x73, 0x7d, 0x10, 0xf1, 0xd3, 0x40, 0xe7, 0xc0, 
+0xc0, 0xc0, 0x9d, 0x07, 0x0e, 0x1c, 0xf8, 0xb2, 
+0x10, 0x42, 0x64, 0xce, 0x77, 0x92, 0xbc, 0x94, 
+0xc6, 0x11, 0xce, 0xaf, 0x85, 0x95, 0x05, 0x95, 
+0x9e, 0x93, 0x7d, 0x48, 0x47, 0xa1, 0xb7, 0xb7, 
+0x77, 0xe8, 0xc8, 0x91, 0x23, 0x9f, 0xc7, 0x57, 
+0x52, 0x06, 0x7f, 0x86, 0x8a, 0xe1, 0xbb, 0x6f, 
+0x65, 0xd5, 0x59, 0x9b, 0x9f, 0xa8, 0xb7, 0x12, 
+0xac, 0x17, 0xf8, 0xda, 0x80, 0x4c, 0x2a, 0x95, 
+0x1a, 0x78, 0xe8, 0xa1, 0x87, 0xfe, 0x50, 0xd3, 
+0xb4, 0x48, 0x6c, 0x3a, 0x4e, 0x72, 0x34, 0x8d, 
+0x2b, 0xdd, 0x1b, 0x57, 0xdd, 0x3a, 0x92, 0xb2, 
+0xa8, 0xd2, 0xf9, 0x4e, 0x0f, 0x73, 0xf7, 0x66, 
+0xd9, 0xbe, 0x7d, 0xfb, 0x67, 0xe6, 0xe7, 0xe7, 
+0xa7, 0x4f, 0x9f, 0x3e, 0xfd, 0x5f, 0xd4, 0x5f, 
+0x29, 0x56, 0x6d, 0xa9, 0xa1, 0x31, 0x00, 0x2a, 
+0xbe, 0xf9, 0x27, 0xf0, 0x57, 0x76, 0x1d, 0x47, 
+0x8f, 0x1e, 0xfd, 0x72, 0x3c, 0x1e, 0xef, 0x54, 
+0xe7, 0x35, 0xda, 0xce, 0x64, 0x70, 0xa4, 0xb3, 
+0xae, 0xc2, 0x48, 0xa5, 0xbc, 0x8c, 0x75, 0x3d, 
+0x6e, 0x64, 0x45, 0xaf, 0x65, 0x75, 0xda, 0xce, 
+0xa7, 0x29, 0xdc, 0xb1, 0x20, 0xf6, 0xdf, 0xbd, 
+0xff, 0xa9, 0xb1, 0xb1, 0xb1, 0xf3, 0xf3, 0xf3, 
+0xf3, 0x45, 0xaa, 0xf7, 0x0e, 0x41, 0x30, 0x14, 
+0xe1, 0x3d, 0x43, 0xc5, 0x05, 0x9a, 0x4d, 0x7b, 
+0x5b, 0xb7, 0x6e, 0xdd, 0xdd, 0xdb, 0xdb, 0x3b, 
+0x24, 0x3c, 0x41, 0xdb, 0x2f, 0xda, 0xf1, 0x5c, 
+0x17, 0x57, 0x38, 0xeb, 0xc2, 0x42, 0x07, 0x35, 
+0xa9, 0xa0, 0xa5, 0x34, 0xa2, 0x9d, 0x11, 0xe2, 
+0xbd, 0x71, 0x22, 0xed, 0x1a, 0xa8, 0xad, 0xff, 
+0x46, 0xf4, 0x62, 0x1c, 0xfd, 0x5a, 0x04, 0x55, 
+0x53, 0x23, 0x87, 0x0e, 0x1d, 0x3a, 0xce, 0xb2, 
+0x1b, 0xc4, 0xf1, 0x15, 0x19, 0xde, 0x81, 0x56, 
+0xa8, 0xd6, 0x02, 0xc2, 0xda, 0xaf, 0x02, 0xe0, 
+0xc0, 0x81, 0x03, 0x8f, 0x29, 0x8a, 0x22, 0xf4, 
+0xb1, 0x28, 0x2c, 0x09, 0x9c, 0x75, 0x30, 0x7d, 
+0xa9, 0x4a, 0x54, 0x5d, 0x45, 0xd1, 0x14, 0x54, 
+0x5d, 0x41, 0xd1, 0x15, 0xa4, 0xaa, 0xa0, 0x6a, 
+0x0a, 0xd1, 0xae, 0x28, 0x29, 0x25, 0x4d, 0x3e, 
+0x5b, 0x20, 0x9f, 0xcd, 0xb7, 0xd4, 0x5f, 0xf4, 
+0xfd, 0x04, 0xce, 0x83, 0x36, 0x83, 0x83, 0x83, 
+0xf7, 0xf5, 0xf5, 0xf5, 0x0d, 0xcf, 0xcc, 0xcc, 
+0x2c, 0xb0, 0xbc, 0x67, 0x08, 0x4f, 0x89, 0x15, 
+0x2b, 0x90, 0x40, 0xed, 0x2e, 0x2f, 0x6c, 0xfe, 
+0x71, 0x20, 0xb5, 0x77, 0xef, 0xde, 0xbb, 0xbb, 
+0xba, 0xba, 0xb6, 0x49, 0x5b, 0xa2, 0x5d, 0x88, 
+0xac, 0x8b, 0xd6, 0xd1, 0x3c, 0x84, 0x0e, 0xa8, 
+0x1e, 0x42, 0xf3, 0x50, 0xe2, 0x0a, 0x6a, 0x42, 
+0x45, 0x4b, 0x2a, 0xbe, 0x35, 0x24, 0x54, 0xf4, 
+0x36, 0x8d, 0xee, 0xed, 0x9d, 0x6c, 0xd8, 0xdd, 
+0x83, 0xd0, 0x68, 0x6e, 0x49, 0xf3, 0x02, 0x6d, 
+0x5a, 0x47, 0x51, 0x14, 0xe5, 0xe0, 0xc1, 0x83, 
+0xc7, 0xf1, 0x5d, 0x37, 0x51, 0x56, 0xa4, 0x86, 
+0x6f, 0xd9, 0x55, 0x81, 0xbf, 0xd6, 0x02, 0xc2, 
+0x9b, 0x9d, 0xca, 0x7a, 0x7f, 0x68, 0x68, 0xe8, 
+0xb3, 0x52, 0x4a, 0x94, 0x4b, 0x3a, 0xae, 0xed, 
+0x81, 0x5c, 0x7b, 0x3a, 0xce, 0x71, 0x5d, 0x2c, 
+0xc3, 0xf6, 0xf5, 0xb2, 0x08, 0x62, 0xbe, 0x40, 
+0x2c, 0x15, 0x25, 0xd1, 0x91, 0x20, 0x99, 0x4a, 
+0xa2, 0x46, 0x34, 0x14, 0x4d, 0xa2, 0xa8, 0x0a, 
+0xed, 0xed, 0x19, 0xf4, 0xf6, 0x08, 0x63, 0x6f, 
+0x8e, 0xd3, 0x6c, 0xef, 0xa2, 0x9c, 0x8f, 0xe0, 
+0xf6, 0x3b, 0x6c, 0xdc, 0xb8, 0x71, 0xa8, 0xbf, 
+0xbf, 0x7f, 0xd3, 0xf4, 0xf4, 0x74, 0xb0, 0x71, 
+0xd2, 0x59, 0xb6, 0x82, 0x20, 0x09, 0x53, 0x05, 
+0x40, 0x78, 0xf1, 0x13, 0x24, 0x36, 0xe2, 0x99, 
+0x4c, 0xa6, 0xb7, 0xa3, 0xa3, 0x63, 0x13, 0x2e, 
+0x88, 0xcb, 0xd2, 0xd7, 0xde, 0xad, 0x20, 0x0f, 
+0x0a, 0xf3, 0x05, 0x0a, 0xf3, 0x05, 0xb2, 0x97, 
+0xb3, 0x74, 0x0e, 0x74, 0x70, 0xdb, 0xee, 0x7e, 
+0x14, 0xcd, 0x77, 0x8b, 0x68, 0xba, 0x1d, 0x63, 
+0x69, 0x23, 0x13, 0x67, 0x27, 0x1b, 0xf7, 0x53, 
+0x02, 0x99, 0x55, 0xf0, 0xfa, 0x5c, 0xb1, 0x6b, 
+0xd7, 0xae, 0x7b, 0xa6, 0xa7, 0xa7, 0x2f, 0x50, 
+0x3d, 0x1d, 0x56, 0x32, 0x51, 0x42, 0x88, 0x15, 
+0x00, 0xd4, 0x5a, 0x40, 0x7c, 0xef, 0xde, 0xbd, 
+0xfb, 0xa5, 0x94, 0xc2, 0x9b, 0x15, 0x38, 0x8e, 
+0x53, 0x63, 0x40, 0xb7, 0x8e, 0xae, 0x4e, 0x66, 
+0x59, 0x2c, 0x16, 0xd9, 0xfd, 0xf0, 0x9d, 0xe8, 
+0x11, 0x0d, 0xa1, 0x08, 0x36, 0xdd, 0x7b, 0x3b, 
+0x73, 0xd9, 0x1c, 0xf3, 0x57, 0xe7, 0x1b, 0xb6, 
+0x15, 0x57, 0x05, 0xf2, 0x36, 0xc9, 0xc0, 0xc0, 
+0xc0, 0x1e, 0x96, 0x5d, 0x20, 0xc8, 0x44, 0x55, 
+0x05, 0x42, 0xb9, 0x8a, 0xff, 0x07, 0x00, 0xc4, 
+0x06, 0x06, 0x06, 0xf6, 0x08, 0x21, 0xf0, 0xae, 
+0x78, 0xb8, 0xc2, 0x6d, 0xca, 0xc9, 0xde, 0x64, 
+0x4b, 0xef, 0xb5, 0xc2, 0x0b, 0x73, 0x0b, 0x8c, 
+0xbd, 0x33, 0x86, 0x9e, 0xd4, 0x89, 0x24, 0x23, 
+0xe8, 0x09, 0x9d, 0xdb, 0x3f, 0x31, 0xd8, 0xb4, 
+0x9d, 0x73, 0xd5, 0x43, 0x78, 0x82, 0x4c, 0x26, 
+0x33, 0x98, 0xc9, 0x64, 0xba, 0x58, 0x4e, 0xc7, 
+0x05, 0x00, 0x54, 0x40, 0x08, 0xeb, 0xb3, 0xd6, 
+0x02, 0xf4, 0x58, 0x2c, 0x96, 0xea, 0xe9, 0xee, 
+0xd9, 0x2a, 0xa5, 0xc4, 0xce, 0xba, 0x38, 0xd2, 
+0x69, 0xc8, 0x07, 0x7e, 0xfb, 0x6e, 0xfe, 0xe4, 
+0xfb, 0x7f, 0xcc, 0x8e, 0x23, 0xdb, 0x9b, 0xbe, 
+0xdb, 0x2a, 0x4f, 0x8f, 0xcd, 0x70, 0x7d, 0xf6, 
+0x3a, 0x7a, 0x52, 0x43, 0x6f, 0xd3, 0x19, 0xdc, 
+0x37, 0x80, 0x92, 0x50, 0x1a, 0xb7, 0x73, 0x1d, 
+0xbc, 0x39, 0x90, 0x52, 0x8a, 0xbb, 0xee, 0xba, 
+0xeb, 0x13, 0xf8, 0xee, 0x5c, 0xdf, 0x02, 0x42, 
+0xc2, 0x87, 0x63, 0x80, 0x0a, 0xe8, 0x9b, 0x37, 
+0x6f, 0x1e, 0x54, 0x54, 0x45, 0xf3, 0x0a, 0x1e, 
+0x8e, 0xe1, 0x34, 0x44, 0xfd, 0xfe, 0x2f, 0xde, 
+0xc7, 0xe3, 0x7f, 0x7e, 0x9c, 0x44, 0x3a, 0xce, 
+0xef, 0x7e, 0xf5, 0x49, 0x76, 0x1f, 0xbd, 0x63, 
+0xdd, 0x2c, 0x61, 0xea, 0xc2, 0x34, 0x7a, 0x22, 
+0x42, 0x24, 0x11, 0x21, 0x96, 0x8e, 0x31, 0xb8, 
+0x77, 0xa0, 0xb9, 0x15, 0xcc, 0xba, 0x08, 0x21, 
+0xe8, 0xee, 0xee, 0xbe, 0xbd, 0x0c, 0x40, 0x90, 
+0x91, 0xae, 0x4a, 0xc9, 0xd7, 0x9b, 0x05, 0x2a, 
+0x6e, 0xd0, 0xde, 0xde, 0xde, 0x25, 0xa5, 0xc4, 
+0x31, 0x5c, 0xdc, 0x06, 0xab, 0xbe, 0xc3, 0x5f, 
+0x78, 0x80, 0xc7, 0xbe, 0xf2, 0x39, 0xf4, 0xa8, 
+0x8e, 0x54, 0x24, 0x42, 0x0a, 0x9e, 0xf8, 0x8b, 
+0x2f, 0xe1, 0x29, 0x1e, 0x67, 0x7f, 0xf2, 0xee, 
+0xaa, 0xed, 0x5a, 0xa5, 0xc9, 0x8b, 0x93, 0xe8, 
+0xf1, 0x4f, 0xa2, 0x68, 0x0a, 0x42, 0x08, 0x3a, 
+0x06, 0x33, 0xb8, 0xbf, 0x68, 0x1c, 0x8c, 0x5d, 
+0x43, 0x22, 0xa5, 0x24, 0x1e, 0x8f, 0xa7, 0x59, 
+0x45, 0x78, 0x40, 0xd4, 0x9b, 0x05, 0x2a, 0x49, 
+0xcf, 0xb6, 0xb6, 0xb6, 0x8c, 0x10, 0x02, 0xb7, 
+0xe4, 0xe2, 0xac, 0x12, 0xfd, 0x0f, 0x7f, 0xfe, 
+0x10, 0xbf, 0xf9, 0x47, 0x8f, 0xe0, 0x79, 0xe0, 
+0xba, 0x2e, 0xae, 0xeb, 0x62, 0xdb, 0x0e, 0x08, 
+0x8f, 0xc7, 0xff, 0xec, 0x38, 0xae, 0xe7, 0x72, 
+0xe6, 0xa7, 0x67, 0xd7, 0x04, 0x80, 0x63, 0x39, 
+0x58, 0x96, 0x45, 0xbc, 0x3d, 0x8e, 0x90, 0x82, 
+0x54, 0x4f, 0x6a, 0xd5, 0xf1, 0x04, 0x64, 0x1b, 
+0x02, 0x21, 0x04, 0xb1, 0x58, 0x2c, 0x15, 0x12, 
+0xbe, 0xf6, 0x64, 0xaa, 0x62, 0x01, 0xb5, 0x27, 
+0x3c, 0x12, 0x50, 0x92, 0xc9, 0x64, 0x5a, 0x4a, 
+0x89, 0x6b, 0xba, 0x75, 0x37, 0x3d, 0x87, 0x1e, 
+0x7b, 0x80, 0x4f, 0xff, 0xde, 0x51, 0x1c, 0xdb, 
+0x41, 0x08, 0x0b, 0xd7, 0x71, 0xf0, 0x3c, 0x0f, 
+0xc7, 0x76, 0xb0, 0x4d, 0x1b, 0xdb, 0x71, 0xf8, 
+0xec, 0x33, 0xc7, 0x70, 0x85, 0xcb, 0x99, 0xd7, 
+0xd6, 0x06, 0x82, 0x61, 0x98, 0x44, 0x13, 0x11, 
+0x84, 0x94, 0x74, 0xf4, 0x65, 0x9a, 0x6e, 0xc2, 
+0x6c, 0xc3, 0x41, 0x4a, 0x19, 0x00, 0x50, 0x35, 
+0xfd, 0x85, 0xdf, 0x53, 0x6b, 0x84, 0xaf, 0xe2, 
+0x64, 0x32, 0x99, 0x16, 0x42, 0x60, 0x95, 0xec, 
+0x15, 0x88, 0x3f, 0xf0, 0x5b, 0x07, 0x79, 0xf0, 
+0x0b, 0x87, 0xb1, 0x2d, 0x1b, 0x0f, 0x7c, 0x10, 
+0xa4, 0xc0, 0x73, 0x3d, 0x1c, 0xc7, 0xc5, 0xb6, 
+0x6c, 0x6c, 0xd3, 0xc6, 0xb2, 0x2c, 0x8e, 0x3c, 
+0xf1, 0x20, 0xb6, 0x6b, 0x73, 0xf6, 0xbf, 0x5b, 
+0x73, 0x87, 0xae, 0xbe, 0x2e, 0xba, 0xfa, 0xbb, 
+0x50, 0x14, 0xe9, 0xbb, 0x94, 0x10, 0xc4, 0x52, 
+0x51, 0x22, 0x89, 0x28, 0x42, 0x0a, 0x7a, 0x37, 
+0xf7, 0xb2, 0xf7, 0x53, 0x7b, 0xfc, 0x4d, 0x93, 
+0xeb, 0xe1, 0xba, 0x2e, 0x57, 0x27, 0xb2, 0x64, 
+0x27, 0xb3, 0x95, 0x3e, 0x5c, 0xc3, 0x8f, 0x01, 
+0xd1, 0x68, 0x34, 0x41, 0x4d, 0xe4, 0xaf, 0x05, 
+0x60, 0x55, 0x12, 0x42, 0x20, 0xa5, 0xef, 0x4b, 
+0x42, 0x2e, 0xb7, 0x55, 0x54, 0x85, 0x89, 0x0b, 
+0x93, 0x7c, 0xe7, 0xaf, 0x4f, 0x20, 0xa4, 0x40, 
+0x08, 0xd8, 0x36, 0xb4, 0x95, 0x4f, 0x3e, 0x76, 
+0xb8, 0x32, 0xa0, 0x1f, 0x7e, 0xeb, 0x65, 0xe6, 
+0xae, 0xe4, 0xf0, 0x3c, 0xb7, 0xf2, 0x9d, 0x54, 
+0x25, 0x9e, 0xdb, 0x7c, 0x15, 0x99, 0xcf, 0xe5, 
+0x79, 0xf8, 0x77, 0x3e, 0xc5, 0xa6, 0x3b, 0x6e, 
+0x47, 0x8b, 0xe8, 0x68, 0x11, 0x0d, 0x4d, 0x57, 
+0x51, 0x54, 0xc5, 0xd7, 0x6a, 0x22, 0xca, 0x13, 
+0x5f, 0xf9, 0x12, 0xb6, 0x65, 0x63, 0x19, 0x16, 
+0x1f, 0x9e, 0xfb, 0x90, 0xe7, 0xff, 0xee, 0xfb, 
+0x55, 0x63, 0x14, 0xd2, 0x1f, 0x7b, 0xb3, 0x95, 
+0xa3, 0x4a, 0x83, 0x63, 0xe9, 0x62, 0xb1, 0x38, 
+0x2f, 0x84, 0x40, 0x4b, 0xa8, 0x48, 0x65, 0x79, 
+0xc6, 0xf4, 0x3c, 0x8f, 0x99, 0xb1, 0x99, 0xaa, 
+0x8e, 0xa4, 0xa2, 0x70, 0xcf, 0x67, 0xee, 0xa9, 
+0x08, 0xbb, 0x70, 0x6d, 0x81, 0xa9, 0x8b, 0x53, 
+0x2b, 0x00, 0x15, 0x4a, 0xf3, 0xb4, 0x99, 0x6d, 
+0xdb, 0xfc, 0xf0, 0x5b, 0x2f, 0xf1, 0xc5, 0x3f, 
+0xfd, 0x02, 0xdb, 0xf6, 0x6e, 0x45, 0x8f, 0xfa, 
+0x20, 0xa8, 0xba, 0xea, 0x0b, 0xe5, 0x7a, 0xd8, 
+0xb6, 0x8d, 0x10, 0x82, 0xcb, 0xef, 0x5f, 0xe6, 
+0xfb, 0x5f, 0xff, 0x17, 0x6c, 0xcb, 0xae, 0x1a, 
+0xa3, 0x1a, 0xf7, 0x03, 0xa6, 0x61, 0x18, 0x8b, 
+0xd4, 0x9c, 0x21, 0x56, 0x8d, 0x3b, 0x24, 0x7c, 
+0xf0, 0x0c, 0x5e, 0x76, 0x2a, 0x00, 0xc4, 0x34, 
+0x14, 0xa9, 0x34, 0xe4, 0xc5, 0x5c, 0x01, 0xa3, 
+0x68, 0x54, 0x38, 0x96, 0x88, 0x37, 0x6d, 0xd3, 
+0x88, 0x1d, 0xcb, 0xe5, 0x5f, 0xff, 0xfe, 0xdf, 
+0x99, 0xf8, 0x60, 0x12, 0x4d, 0xd7, 0xd0, 0x23, 
+0x3a, 0x91, 0x58, 0x84, 0x68, 0x22, 0x8a, 0x16, 
+0xd5, 0x51, 0x35, 0x95, 0x89, 0xf3, 0x13, 0x7c, 
+0xef, 0x6f, 0x5f, 0xc0, 0x31, 0x9d, 0x15, 0xed, 
+0xb5, 0xb8, 0x1e, 0x00, 0xb0, 0x40, 0xe8, 0xfc, 
+0xb0, 0x16, 0x84, 0xf0, 0x42, 0xc8, 0xa3, 0xe6, 
+0x94, 0x36, 0x9f, 0xcf, 0xcf, 0x49, 0x29, 0xd1, 
+0x12, 0xcd, 0x01, 0x28, 0x2e, 0x2c, 0x61, 0x14, 
+0x0d, 0xcc, 0x25, 0x13, 0x73, 0xc9, 0xa4, 0xbd, 
+0x33, 0xbd, 0x26, 0x00, 0x14, 0xa9, 0xe0, 0xda, 
+0x2e, 0x2f, 0x7c, 0xed, 0x9f, 0x19, 0x3d, 0x73, 
+0x11, 0xa9, 0x48, 0x14, 0xc5, 0x77, 0x01, 0x01, 
+0x5c, 0x3a, 0x33, 0xc6, 0x77, 0xff, 0xea, 0x44, 
+0x5d, 0xe1, 0x15, 0xa9, 0xa0, 0xc7, 0x35, 0xa4, 
+0x94, 0x98, 0xa6, 0xb9, 0x40, 0xf5, 0x21, 0x6a, 
+0x15, 0x10, 0xb5, 0x2b, 0xfb, 0xaa, 0x53, 0xda, 
+0x5c, 0x2e, 0x77, 0x4d, 0x08, 0x81, 0x1a, 0x57, 
+0x51, 0x14, 0xa5, 0x21, 0xbb, 0xb6, 0xcb, 0xdc, 
+0x95, 0x1c, 0xa5, 0xa2, 0x81, 0xb1, 0x64, 0xd0, 
+0xbf, 0xad, 0xaf, 0x69, 0x9b, 0x56, 0xd8, 0x73, 
+0x3c, 0x9e, 0xff, 0xea, 0x0b, 0xfc, 0xf2, 0xe7, 
+0xe7, 0x30, 0x4b, 0x26, 0xa5, 0xa2, 0xc1, 0xfb, 
+0x6f, 0x9d, 0xe7, 0x3b, 0x7f, 0xf9, 0x4f, 0xb8, 
+0xb6, 0xbb, 0x6a, 0x3b, 0x2d, 0xa1, 0x21, 0x84, 
+0xa0, 0x58, 0x2c, 0xce, 0xb3, 0x9c, 0x11, 0xaa, 
+0x4d, 0x8b, 0x79, 0xc1, 0xc2, 0x20, 0x00, 0xa3, 
+0x6a, 0x23, 0xb4, 0xb8, 0xb8, 0xa8, 0x1e, 0x3c, 
+0x78, 0xf0, 0xd3, 0x5a, 0x4c, 0x55, 0x96, 0xa6, 
+0x0c, 0x70, 0xca, 0x7e, 0xbc, 0x0a, 0x2b, 0x8a, 
+0x24, 0xd3, 0xd3, 0x8e, 0x63, 0xf9, 0x53, 0xd0, 
+0xec, 0xcc, 0x35, 0x4a, 0x8b, 0xa5, 0x86, 0x6d, 
+0x5a, 0x61, 0xcf, 0x83, 0xf7, 0xde, 0xf8, 0x25, 
+0x9d, 0x7d, 0x9d, 0xcc, 0x5d, 0x99, 0xe3, 0xb9, 
+0xbf, 0x79, 0x1e, 0xdb, 0xb2, 0x1b, 0xb6, 0x69, 
+0xdb, 0x9e, 0x40, 0x4b, 0xa8, 0x7c, 0xf0, 0xc1, 
+0x07, 0x6f, 0x8c, 0x8e, 0x8e, 0xbe, 0xcb, 0xf2, 
+0xa1, 0xc9, 0x52, 0x18, 0x8c, 0xf0, 0x2c, 0x10, 
+0x36, 0x7f, 0x0b, 0x30, 0x0b, 0x85, 0xc2, 0xc2, 
+0xc7, 0x1f, 0x7f, 0x7c, 0x69, 0xe3, 0xc6, 0x8d, 
+0x3b, 0xe3, 0x1b, 0x63, 0x2c, 0x4d, 0x94, 0x6a, 
+0x63, 0x48, 0x15, 0x4d, 0x9e, 0x9f, 0x62, 0xcb, 
+0x9e, 0xcd, 0x95, 0x40, 0x78, 0xe7, 0x7d, 0xbb, 
+0x78, 0xeb, 0x95, 0x53, 0x38, 0xd6, 0xfa, 0x6c, 
+0xa1, 0xff, 0xed, 0xeb, 0x3f, 0x40, 0x28, 0x02, 
+0xd7, 0xf1, 0x35, 0xbf, 0x1a, 0x09, 0x55, 0x10, 
+0xed, 0x8a, 0xe0, 0xe1, 0xb9, 0x6f, 0xbf, 0xfd, 
+0xf6, 0x08, 0x7e, 0x6e, 0x30, 0x9c, 0x17, 0xac, 
+0xc4, 0x01, 0x59, 0x4e, 0x0e, 0x86, 0xfd, 0x3f, 
+0x28, 0x52, 0x28, 0x01, 0x4b, 0xe3, 0xe3, 0xe3, 
+0xef, 0x4a, 0x29, 0x89, 0x6d, 0x88, 0x36, 0xf5, 
+0x59, 0xb3, 0x68, 0x32, 0x73, 0xf1, 0x23, 0xcc, 
+0x25, 0x0b, 0x73, 0xc9, 0x42, 0x51, 0x54, 0x76, 
+0xde, 0xbd, 0x03, 0x5d, 0xd7, 0xd7, 0x1c, 0x0f, 
+0x14, 0xa9, 0x20, 0x10, 0xe0, 0xd0, 0xf4, 0xbd, 
+0x58, 0x6f, 0x14, 0xa9, 0x48, 0x72, 0xb9, 0xdc, 
+0xe4, 0xec, 0xec, 0xec, 0x6c, 0x1d, 0x00, 0x2a, 
+0x20, 0xd4, 0x06, 0xc1, 0xc0, 0x02, 0xcc, 0x72, 
+0xa3, 0xe2, 0xa9, 0x53, 0xa7, 0x7e, 0x01, 0xb8, 
+0x91, 0x2e, 0xdd, 0xcf, 0xdb, 0x49, 0xd9, 0x90, 
+0x2f, 0x8e, 0x5c, 0xa4, 0x90, 0xcb, 0x63, 0x95, 
+0x4c, 0xac, 0x92, 0x49, 0x22, 0x15, 0x67, 0xc7, 
+0xfe, 0xdf, 0x20, 0x95, 0x69, 0x43, 0x55, 0x9a, 
+0xb7, 0x5f, 0x0f, 0x8e, 0x6d, 0x88, 0x20, 0x84, 
+0xe0, 0xc3, 0x0f, 0x3f, 0x7c, 0x17, 0x3f, 0x1f, 
+0xb8, 0xaa, 0x05, 0xd4, 0xba, 0x80, 0xc7, 0xb2, 
+0x0b, 0x18, 0x40, 0x31, 0x9b, 0xcd, 0x66, 0xe7, 
+0xe6, 0xe6, 0x3e, 0xec, 0xee, 0xee, 0xde, 0x92, 
+0xd8, 0x14, 0x67, 0x69, 0xbc, 0xb1, 0x1b, 0x78, 
+0x8e, 0xc7, 0xd8, 0xe9, 0x31, 0x36, 0xef, 0xdd, 
+0xec, 0x23, 0xea, 0xb8, 0x48, 0x21, 0xe9, 0xdf, 
+0xd6, 0x87, 0x65, 0x58, 0x14, 0xae, 0x2f, 0xb2, 
+0x38, 0xbf, 0x88, 0xb9, 0x64, 0x36, 0x5d, 0xa4, 
+0xdc, 0x0c, 0xc9, 0x98, 0x24, 0xb2, 0x21, 0x02, 
+0x02, 0xef, 0x9d, 0x77, 0xde, 0x79, 0x1b, 0x3f, 
+0x29, 0x1a, 0x14, 0x51, 0x54, 0x4d, 0x87, 0x95, 
+0xa4, 0x68, 0x88, 0xc2, 0x31, 0xa0, 0x84, 0x7f, 
+0xe6, 0x9e, 0x3f, 0x79, 0xf2, 0xe4, 0x7f, 0x08, 
+0x21, 0x88, 0x6d, 0x89, 0xa2, 0x44, 0x55, 0xa4, 
+0x54, 0x1a, 0x72, 0x69, 0xd1, 0x64, 0xfc, 0xdd, 
+0xcb, 0x2c, 0xe5, 0x4b, 0x58, 0x25, 0x0b, 0xcb, 
+0xb0, 0xb1, 0x0c, 0x07, 0xd7, 0xf1, 0xd0, 0xa3, 
+0x11, 0x52, 0x9d, 0x69, 0xda, 0x7b, 0x32, 0xb4, 
+0x65, 0x52, 0xc4, 0x92, 0x71, 0xf4, 0x48, 0x04, 
+0x45, 0x69, 0xde, 0x6f, 0x2b, 0x9c, 0xd8, 0x1e, 
+0x47, 0x2a, 0x92, 0x89, 0x89, 0x89, 0xb3, 0xe3, 
+0xe3, 0xe3, 0x97, 0x59, 0xae, 0x1b, 0xa8, 0x1f, 
+0x03, 0xa0, 0x72, 0x76, 0x5e, 0x1b, 0x07, 0x0c, 
+0x7c, 0xf3, 0x59, 0xf8, 0xd9, 0xcf, 0x7e, 0x36, 
+0x92, 0xcd, 0x66, 0x2f, 0x2a, 0xba, 0x42, 0x62, 
+0x5b, 0xac, 0xa5, 0xe9, 0xcb, 0x2a, 0x59, 0xcc, 
+0x5c, 0x98, 0xa1, 0x30, 0x57, 0xc0, 0x32, 0xca, 
+0xfb, 0x02, 0xc3, 0xc6, 0x31, 0x7d, 0x76, 0x6d, 
+0x07, 0xd7, 0x71, 0xf1, 0x1c, 0x7f, 0x3d, 0x2f, 
+0xa5, 0x5c, 0xf3, 0x94, 0xa9, 0x67, 0x74, 0xa2, 
+0x7d, 0x11, 0x00, 0xe7, 0x95, 0x57, 0x5e, 0x79, 
+0x11, 0xff, 0x80, 0xb4, 0x50, 0x56, 0x66, 0xb8, 
+0x84, 0x86, 0x2a, 0x00, 0x42, 0x14, 0x06, 0xc0, 
+0x2c, 0x23, 0x57, 0x00, 0xae, 0x0f, 0x0f, 0x0f, 
+0xff, 0x00, 0xf0, 0xa2, 0x03, 0x11, 0xb4, 0x64, 
+0xf3, 0x85, 0x91, 0x22, 0x15, 0x84, 0x27, 0x98, 
+0xbf, 0xba, 0x40, 0x6e, 0x3a, 0xc7, 0xd2, 0xfc, 
+0x12, 0x76, 0xc9, 0xc6, 0x36, 0x9c, 0x0a, 0x3b, 
+0xa6, 0x03, 0x6e, 0xf3, 0xa0, 0xd6, 0x2a, 0xc7, 
+0xb7, 0x47, 0x11, 0x42, 0x30, 0x3a, 0x3a, 0xfa, 
+0xe6, 0xd8, 0xd8, 0xd8, 0x18, 0xd5, 0xc7, 0xe4, 
+0x01, 0x00, 0x15, 0xf3, 0xaf, 0x02, 0x20, 0x64, 
+0x05, 0xe1, 0x40, 0x58, 0x01, 0xe0, 0xcc, 0x99, 
+0x33, 0xef, 0x4d, 0x4e, 0x4e, 0x9e, 0x95, 0x8a, 
+0x24, 0xb9, 0x37, 0x86, 0xaa, 0x4b, 0x14, 0xa5, 
+0x35, 0xc6, 0xf3, 0x30, 0x8b, 0x06, 0xa5, 0xfc, 
+0x12, 0xd6, 0x92, 0x89, 0x63, 0xd9, 0xe0, 0x7a, 
+0x7e, 0xd0, 0x6a, 0xb1, 0x8f, 0x66, 0x1c, 0xdb, 
+0x12, 0x41, 0xef, 0xd4, 0xb0, 0x6d, 0xbb, 0xf4, 
+0xe2, 0x8b, 0x2f, 0xbe, 0x48, 0xfd, 0x62, 0x89, 
+0x15, 0xfb, 0x81, 0x7a, 0x39, 0xde, 0x5a, 0x37, 
+0x58, 0x2c, 0x23, 0x39, 0x77, 0xe2, 0xc4, 0x89, 
+0xef, 0x2e, 0x2e, 0x2e, 0x5e, 0x53, 0x52, 0x0a, 
+0xb1, 0x3b, 0x62, 0x37, 0xe5, 0xa3, 0x42, 0x48, 
+0xa4, 0x58, 0xbb, 0xaf, 0x87, 0x59, 0xef, 0xd6, 
+0x89, 0x6e, 0x8d, 0x00, 0x78, 0xc3, 0xc3, 0xc3, 
+0xcf, 0x65, 0xb3, 0xd9, 0x09, 0xe0, 0x3a, 0x2b, 
+0x8f, 0xc7, 0xab, 0xb4, 0xdf, 0x0c, 0x80, 0xb0, 
+0x15, 0xe4, 0x81, 0xdc, 0xec, 0xec, 0xec, 0xe4, 
+0x73, 0xcf, 0x3d, 0xf7, 0x8f, 0x8e, 0xe3, 0x18, 
+0xfa, 0x06, 0x8d, 0xe8, 0xe6, 0xc8, 0xba, 0x99, 
+0xef, 0xcd, 0xb2, 0x96, 0x54, 0x89, 0xed, 0x8e, 
+0x20, 0x15, 0xc9, 0xc8, 0xc8, 0xc8, 0x7f, 0x0e, 
+0x0f, 0x0f, 0xbf, 0x4e, 0x83, 0x2a, 0x91, 0x5a, 
+0x61, 0x6f, 0xaa, 0x40, 0xe2, 0xe1, 0x87, 0x1f, 
+0x7e, 0xe8, 0xd1, 0x47, 0x1f, 0x7d, 0x5a, 0x08, 
+0x21, 0xac, 0x4b, 0x0e, 0xf6, 0xd4, 0x2d, 0x3a, 
+0x2c, 0x69, 0x42, 0x32, 0x29, 0xd0, 0x77, 0xab, 
+0x88, 0x88, 0x60, 0x7c, 0x7c, 0xfc, 0xec, 0xb3, 
+0xcf, 0x3e, 0x7b, 0xc3, 0x05, 0x12, 0x2b, 0x12, 
+0x22, 0x9e, 0xe7, 0x05, 0x05, 0xc8, 0x81, 0x1b, 
+0x88, 0x72, 0x27, 0x41, 0xb6, 0x58, 0x79, 0xf5, 
+0xd5, 0x57, 0x5f, 0xef, 0xee, 0xee, 0xee, 0x3a, 
+0x74, 0xe8, 0xd0, 0x71, 0x7d, 0x9b, 0x2a, 0x94, 
+0x36, 0x89, 0x3d, 0xea, 0xd4, 0xc4, 0xd7, 0x5b, 
+0x4b, 0xb2, 0x4b, 0xa2, 0xee, 0x90, 0x08, 0x45, 
+0x90, 0xcd, 0x66, 0xc7, 0xbf, 0xf9, 0xcd, 0x6f, 
+0x7e, 0x8b, 0x95, 0xe5, 0x31, 0xe1, 0x42, 0xa9, 
+0xd6, 0x4a, 0x64, 0xa0, 0xf5, 0x22, 0xa9, 0x47, 
+0x1e, 0x79, 0xe4, 0xe8, 0xb1, 0x63, 0xc7, 0x9e, 
+0xd4, 0x34, 0x4d, 0xf7, 0xf2, 0x1e, 0xf6, 0x39, 
+0x07, 0xcf, 0x5c, 0x77, 0x59, 0x57, 0x90, 0x72, 
+0xbb, 0x44, 0x19, 0xf4, 0xbd, 0x77, 0x74, 0x74, 
+0x74, 0xe4, 0x1b, 0xdf, 0xf8, 0xc6, 0xb7, 0x0d, 
+0xc3, 0x58, 0xbf, 0x22, 0x29, 0x68, 0xbd, 0x4c, 
+0x6e, 0xdf, 0xbe, 0x7d, 0x7b, 0x9f, 0x7a, 0xea, 
+0xa9, 0x3f, 0x48, 0x24, 0x12, 0xed, 0x38, 0xe0, 
+0x4e, 0x79, 0xb8, 0xd3, 0xde, 0x2d, 0xb1, 0x06, 
+0x91, 0x11, 0xc8, 0x4d, 0x02, 0x91, 0x00, 0xcf, 
+0xf3, 0xdc, 0x37, 0xde, 0x78, 0xe3, 0xc7, 0x27, 
+0x4e, 0x9c, 0x58, 0xff, 0x32, 0xb9, 0xca, 0x3f, 
+0x5b, 0x2c, 0x94, 0xdc, 0xb0, 0x61, 0xc3, 0xed, 
+0xcf, 0x3c, 0xf3, 0xcc, 0xef, 0xdf, 0x76, 0xdb, 
+0x6d, 0x3b, 0x01, 0x30, 0xc1, 0x9d, 0xf0, 0x70, 
+0xaf, 0x52, 0x27, 0xec, 0xdc, 0x84, 0xe0, 0x49, 
+0x7c, 0xc1, 0xdb, 0xfd, 0xcf, 0xc5, 0x62, 0x71, 
+0xfe, 0x47, 0x3f, 0xfa, 0xd1, 0xf7, 0x5e, 0x7d, 
+0xf5, 0xd5, 0x9f, 0xe3, 0x17, 0x49, 0x5e, 0xc3, 
+0x8f, 0xfa, 0xf5, 0x6a, 0x01, 0x6e, 0xae, 0x50, 
+0xb2, 0xf2, 0xc2, 0xea, 0xa5, 0xb2, 0x71, 0xfc, 
+0xf3, 0xf7, 0x4a, 0xa9, 0xec, 0x91, 0x23, 0x47, 
+0xf6, 0x1f, 0x3b, 0x76, 0xec, 0x78, 0x67, 0x67, 
+0x67, 0x3f, 0x00, 0x16, 0x78, 0x73, 0xfe, 0xf0, 
+0xbc, 0x79, 0x6e, 0x0c, 0x8c, 0x38, 0x88, 0x0e, 
+0x9f, 0x49, 0xfa, 0x5f, 0x99, 0xa6, 0x59, 0x1a, 
+0x19, 0x19, 0xf9, 0xc9, 0x0b, 0x2f, 0xbc, 0xf0, 
+0x4a, 0xb1, 0x58, 0x0c, 0x4a, 0x65, 0xaf, 0x53, 
+0xbd, 0xe2, 0x5b, 0xbf, 0x52, 0xd9, 0x55, 0x40, 
+0x58, 0xad, 0x58, 0x3a, 0x8d, 0xef, 0x1a, 0x99, 
+0xc7, 0x1f, 0x7f, 0xfc, 0xf0, 0xe1, 0xc3, 0x87, 
+0x1f, 0x49, 0xa5, 0x52, 0x95, 0x62, 0x69, 0x9c, 
+0xf2, 0x50, 0x0d, 0xf0, 0x4c, 0xb1, 0x7c, 0x23, 
+0xc0, 0xa5, 0x72, 0x8b, 0x40, 0x44, 0x3c, 0xff, 
+0xef, 0x14, 0x3e, 0xc4, 0x65, 0xb2, 0x6d, 0xdb, 
+0x3c, 0x77, 0xee, 0xdc, 0x9b, 0xcf, 0x3f, 0xff, 
+0xfc, 0x4b, 0xd9, 0x6c, 0xf6, 0xa3, 0x72, 0x4f, 
+0xf3, 0x65, 0x0e, 0x6b, 0x7d, 0xfd, 0x8b, 0xa5, 
+0x1b, 0x80, 0x10, 0xbe, 0x20, 0x11, 0xdc, 0x11, 
+0x48, 0x96, 0x87, 0x9f, 0x02, 0xda, 0xee, 0xb9, 
+0xe7, 0x9e, 0x1d, 0x07, 0x0e, 0x1c, 0xd8, 0xbf, 
+0x65, 0xcb, 0x96, 0x3b, 0x33, 0x99, 0xcc, 0x0d, 
+0x95, 0xcb, 0x1b, 0x86, 0x51, 0xbc, 0x7c, 0xf9, 
+0xf2, 0x07, 0xef, 0xbd, 0xf7, 0xde, 0xe9, 0xd7, 
+0x5e, 0x7b, 0xed, 0x74, 0xa1, 0x50, 0x08, 0x82, 
+0x5b, 0xa0, 0xed, 0x5f, 0x5d, 0xb9, 0x7c, 0xe5, 
+0xe5, 0xc6, 0x17, 0x26, 0x02, 0x8b, 0xa8, 0x7b, 
+0x61, 0x62, 0xe7, 0xce, 0x9d, 0xfd, 0xfb, 0xf6, 
+0xed, 0xdb, 0x99, 0x4a, 0xa5, 0x32, 0x6d, 0x6d, 
+0x6d, 0xe9, 0x78, 0x3c, 0x9e, 0x4a, 0x24, 0x12, 
+0x6d, 0xaa, 0xaa, 0xaa, 0xc5, 0x62, 0xb1, 0x50, 
+0x28, 0x14, 0x16, 0x16, 0x17, 0x17, 0x17, 0xf2, 
+0xf9, 0x7c, 0x6e, 0x6a, 0x6a, 0x6a, 0xfa, 0xf5, 
+0xd7, 0x5f, 0x7f, 0xdf, 0xb2, 0xac, 0x46, 0x17, 
+0x26, 0xc2, 0x82, 0x57, 0xdd, 0x1c, 0x69, 0x55, 
+0xf8, 0x1b, 0x06, 0x20, 0x04, 0x02, 0xdc, 0xfc, 
+0x95, 0x99, 0xf0, 0x41, 0x65, 0x38, 0x2d, 0x1f, 
+0xdc, 0x03, 0x0a, 0x5f, 0x99, 0x29, 0xd5, 0xe1, 
+0x55, 0xaf, 0xcc, 0xd0, 0x20, 0xda, 0xaf, 0x2a, 
+0xcf, 0xaf, 0xe9, 0xd2, 0x54, 0xf8, 0xe6, 0x18, 
+0x54, 0x2f, 0xbf, 0x03, 0x10, 0x7e, 0x25, 0x97, 
+0xa6, 0xd6, 0x74, 0x71, 0x72, 0x0d, 0xd7, 0xe6, 
+0x6a, 0xcf, 0xea, 0x6a, 0x77, 0xa2, 0x01, 0x37, 
+0xbd, 0x36, 0xc7, 0x1a, 0x84, 0x87, 0x35, 0x02, 
+0x00, 0x55, 0x20, 0x40, 0xb5, 0x45, 0x84, 0x4f, 
+0x9a, 0x5b, 0xb9, 0x38, 0x59, 0x9b, 0x94, 0x69, 
+0x78, 0x71, 0x92, 0x35, 0x0a, 0x5e, 0x19, 0xf0, 
+0xff, 0xf7, 0xab, 0xb3, 0xeb, 0x06, 0x40, 0x55, 
+0xa7, 0x2b, 0xc1, 0xa8, 0xf7, 0x5c, 0x8d, 0xbc, 
+0x55, 0x9e, 0xfe, 0x87, 0xff, 0xad, 0x97, 0xa7, 
+0xff, 0xaf, 0xd2, 0xff, 0x00, 0x48, 0xcd, 0x74, 
+0xd3, 0xf2, 0xf1, 0xae, 0xb0, 0x00, 0x00, 0x00, 
+0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 
+0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity7.png b/source/bitmaps/misc/activity7.png
new file mode 100644 (file)
index 0000000..45771f5
Binary files /dev/null and b/source/bitmaps/misc/activity7.png differ
diff --git a/source/bitmaps/misc/activity8.cpp b/source/bitmaps/misc/activity8.cpp
new file mode 100644 (file)
index 0000000..1623961
--- /dev/null
@@ -0,0 +1,552 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY8_CPP
+#define MISC_ACTIVITY8_CPP
+
+static unsigned char misc_activity8_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x73, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xfb, 
+0x6f, 0x1c, 0xd7, 0x75, 0xc7, 0x3f, 0xf7, 0xce, 
+0x63, 0xdf, 0xbb, 0x5c, 0xbe, 0x45, 0x8a, 0x94, 
+0x2d, 0x19, 0x32, 0x65, 0x3d, 0x68, 0x21, 0xa2, 
+0x64, 0xd9, 0x52, 0x24, 0xd9, 0x6e, 0xaa, 0xba, 
+0x68, 0xac, 0x18, 0x69, 0x8b, 0xa6, 0x6e, 0x10, 
+0xa0, 0x86, 0x9b, 0xfe, 0x5e, 0xa0, 0xfd, 0x0f, 
+0xfa, 0x43, 0xe1, 0x9f, 0x0a, 0x23, 0x6d, 0x91, 
+0xb6, 0x48, 0x22, 0xc7, 0x6e, 0x01, 0xc3, 0x8e, 
+0x1f, 0x70, 0x13, 0xca, 0xa9, 0xed, 0x4a, 0x95, 
+0x1b, 0x85, 0x96, 0xe4, 0x28, 0xb2, 0x2d, 0x4a, 
+0xa4, 0x44, 0x91, 0x94, 0xb8, 0x22, 0xb5, 0x24, 
+0x97, 0xdc, 0xdd, 0x99, 0x9d, 0x47, 0x7f, 0x98, 
+0x9d, 0xe5, 0xec, 0x6a, 0xb9, 0x24, 0x25, 0x2a, 
+0x4e, 0xd1, 0x03, 0x1c, 0x0c, 0x77, 0x39, 0x33, 
+0x7b, 0xcf, 0xf7, 0x3c, 0xee, 0xbd, 0xe7, 0x9c, 
+0x2b, 0x5c, 0xd7, 0xe5, 0x7e, 0x92, 0x10, 0x42, 
+0x2c, 0xf7, 0xaf, 0x3a, 0xdf, 0xdd, 0x31, 0x18, 
+0xf7, 0x3e, 0x0f, 0x50, 0xbd, 0x1f, 0x2f, 0xad, 
+0x11, 0x5a, 0x2c, 0x73, 0x5d, 0x8e, 0xdc, 0xe0, 
+0xb5, 0x16, 0xbf, 0xf5, 0x06, 0x44, 0xac, 0xd7, 
+0xfb, 0xea, 0x08, 0x2d, 0x6a, 0xfe, 0x96, 0x75, 
+0xbe, 0x0b, 0x52, 0x50, 0xf0, 0x46, 0xec, 0xdd, 
+0xb4, 0x4e, 0x03, 0xbf, 0x67, 0x0b, 0x58, 0x46, 
+0x70, 0x19, 0xb8, 0xd6, 0x63, 0x41, 0x35, 0x08, 
+0xbe, 0x30, 0x4e, 0xf9, 0x6f, 0x67, 0x19, 0xae, 
+0x00, 0xe1, 0xff, 0xec, 0xbd, 0x02, 0x71, 0x4f, 
+0x00, 0x04, 0x84, 0xaf, 0x15, 0x5a, 0x09, 0xb0, 
+0x5a, 0x66, 0xa5, 0x86, 0x6b, 0xad, 0x20, 0x28, 
+0xa8, 0x05, 0xd8, 0x75, 0xae, 0x36, 0x35, 0x60, 
+0xdc, 0x2b, 0x10, 0x77, 0xe5, 0x02, 0x35, 0x82, 
+0xd7, 0x0a, 0xad, 0x02, 0x5a, 0x80, 0xf5, 0x32, 
+0xfb, 0x9f, 0x7d, 0x40, 0x82, 0x96, 0xe0, 0x6b, 
+0xdd, 0x17, 0xb6, 0x54, 0x66, 0xb3, 0xe6, 0xea, 
+0x73, 0x3d, 0x30, 0xee, 0x0a, 0x84, 0x35, 0x5b, 
+0x40, 0x40, 0x78, 0x5f, 0x80, 0xa0, 0x96, 0x75, 
+0x20, 0x54, 0xe6, 0x70, 0x99, 0x23, 0x81, 0xcf, 
+0x3e, 0x18, 0xbe, 0x45, 0xf8, 0x00, 0x04, 0x35, 
+0xef, 0x0b, 0x6c, 0x94, 0xb9, 0x08, 0x14, 0xca, 
+0xd7, 0x62, 0xf9, 0x3b, 0x1f, 0x10, 0xdf, 0x32, 
+0x1c, 0xca, 0xd6, 0xb0, 0x56, 0x10, 0xd6, 0x04, 
+0x40, 0x59, 0x78, 0x9f, 0x7d, 0x8d, 0xfb, 0x5a, 
+0xf6, 0x05, 0x8e, 0x02, 0xb1, 0x00, 0x47, 0x81, 
+0x68, 0x7b, 0x7b, 0x7b, 0x77, 0x77, 0x77, 0x77, 
+0x5f, 0x38, 0x1c, 0x6e, 0x0e, 0x87, 0xc3, 0x4d, 
+0xba, 0xae, 0x27, 0x75, 0x5d, 0x4f, 0x4a, 0x29, 
+0x35, 0xd3, 0x34, 0x73, 0xa6, 0x69, 0xce, 0x1b, 
+0x86, 0x31, 0x6b, 0x18, 0x46, 0x76, 0x76, 0x76, 
+0x76, 0xfc, 0xca, 0x95, 0x2b, 0x9f, 0x39, 0x8e, 
+0xb3, 0x08, 0xe4, 0x81, 0xc5, 0x00, 0xe7, 0x03, 
+0x80, 0x18, 0xb5, 0x40, 0xac, 0xd5, 0x25, 0x56, 
+0xed, 0x02, 0x01, 0xe1, 0x7d, 0x73, 0xf7, 0x35, 
+0xee, 0x6b, 0x39, 0x06, 0x24, 0xca, 0x9c, 0x04, 
+0x12, 0xbd, 0xbd, 0xbd, 0x0f, 0xf7, 0xf4, 0xf4, 
+0xec, 0x69, 0x6d, 0x6d, 0xdd, 0x1e, 0x8d, 0x46, 
+0x3b, 0x56, 0xf5, 0x43, 0x65, 0xb2, 0x2c, 0x2b, 
+0x9f, 0xcd, 0x66, 0xbf, 0xb8, 0x79, 0xf3, 0xe6, 
+0xd9, 0xe1, 0xe1, 0xe1, 0x73, 0x86, 0x61, 0xcc, 
+0x00, 0xf3, 0x40, 0xae, 0xcc, 0x0b, 0x2c, 0x81, 
+0xe1, 0x5b, 0x44, 0xd0, 0x2d, 0x56, 0x05, 0xc2, 
+0xaa, 0x00, 0xa8, 0x23, 0xbc, 0x86, 0x67, 0xd6, 
+0x11, 0x20, 0x5e, 0x16, 0xba, 0x09, 0x48, 0x01, 
+0xcd, 0x8f, 0x3e, 0xfa, 0xe8, 0x57, 0xb7, 0x6c, 
+0xd9, 0x72, 0x34, 0x1c, 0x0e, 0xb7, 0xf8, 0xef, 
+0x50, 0x4a, 0x2a, 0xe9, 0x4c, 0x33, 0xe1, 0x85, 
+0x08, 0x7a, 0x51, 0x47, 0x33, 0x74, 0xf4, 0x62, 
+0x08, 0x69, 0x4b, 0x4a, 0x61, 0x13, 0x33, 0x64, 
+0x62, 0x86, 0x0d, 0xcc, 0x88, 0xc1, 0x6c, 0x7b, 
+0x96, 0x62, 0xac, 0x50, 0xf9, 0x7d, 0xc7, 0x71, 
+0x4a, 0x37, 0x6e, 0xdc, 0xf8, 0x78, 0x68, 0x68, 
+0xe8, 0xed, 0x5c, 0x2e, 0x37, 0x09, 0x64, 0x81, 
+0xb9, 0x00, 0x20, 0x79, 0x96, 0x5c, 0xc3, 0x5a, 
+0x0b, 0x08, 0x2b, 0x02, 0x50, 0x23, 0xbc, 0x1f, 
+0xe0, 0xc2, 0x2c, 0x69, 0x3c, 0x05, 0x34, 0x03, 
+0xcd, 0x7d, 0x7d, 0x7d, 0x8f, 0x6d, 0xdb, 0xb6, 
+0xed, 0xeb, 0xb1, 0x58, 0x6c, 0x03, 0x80, 0x56, 
+0xd4, 0x49, 0xdf, 0x6c, 0x26, 0x3d, 0xd9, 0x4a, 
+0x72, 0x3a, 0x85, 0x70, 0x56, 0x5a, 0x03, 0x2d, 
+0x51, 0x21, 0x91, 0x27, 0xdb, 0x35, 0x43, 0x76, 
+0xc3, 0x0c, 0x8b, 0x4d, 0x0b, 0x00, 0xd8, 0xb6, 
+0x6d, 0x5c, 0xbf, 0x7e, 0xfd, 0x3f, 0xcf, 0x9c, 
+0x39, 0xf3, 0xae, 0x61, 0x18, 0x53, 0xc0, 0xed, 
+0x32, 0x18, 0xf3, 0x78, 0xee, 0x51, 0x28, 0x03, 
+0xb1, 0x6a, 0x10, 0x1a, 0x02, 0xb0, 0x8c, 0xf0, 
+0xbe, 0xb9, 0xa7, 0x80, 0x34, 0xd0, 0x9a, 0x4a, 
+0xa5, 0x1e, 0x38, 0x74, 0xe8, 0xd0, 0x0b, 0x4d, 
+0x4d, 0x4d, 0x5b, 0x3d, 0xc1, 0x35, 0x36, 0x7c, 
+0xb6, 0x91, 0x96, 0xb1, 0x36, 0x84, 0xbb, 0x7a, 
+0xa1, 0x97, 0xa3, 0x7c, 0x6a, 0x91, 0x89, 0x1d, 
+0x63, 0xe4, 0xda, 0xe6, 0x01, 0x28, 0x95, 0x4a, 
+0xb9, 0xf3, 0xe7, 0xcf, 0x1f, 0xbf, 0x78, 0xf1, 
+0xe2, 0x69, 0x60, 0x1a, 0x98, 0xc1, 0xb3, 0x88, 
+0xa0, 0x35, 0xac, 0x0a, 0x84, 0x65, 0x01, 0xa8, 
+0x63, 0xf6, 0x3a, 0x4b, 0x26, 0xdf, 0x04, 0xb4, 
+0x00, 0x6d, 0xbd, 0xbd, 0xbd, 0xfd, 0xfb, 0xf7, 
+0xef, 0x7f, 0x31, 0x1c, 0x0e, 0x37, 0x49, 0x4b, 
+0xd2, 0x36, 0xbc, 0x81, 0xb6, 0xcb, 0x1d, 0x48, 
+0x5b, 0xde, 0xb3, 0xe0, 0xb5, 0x94, 0xeb, 0x98, 
+0xe3, 0xc6, 0xf6, 0x71, 0x8a, 0xc9, 0x02, 0x80, 
+0x73, 0xe9, 0xd2, 0xa5, 0x77, 0x4f, 0x9f, 0x3e, 
+0xfd, 0x26, 0x90, 0xc1, 0x03, 0x22, 0xcb, 0x9d, 
+0x20, 0xd8, 0x78, 0xf2, 0xaf, 0x1e, 0x80, 0x9a, 
+0xa9, 0xae, 0x9e, 0xf0, 0x6d, 0x40, 0x7b, 0x7f, 
+0x7f, 0xff, 0x53, 0xfd, 0xfd, 0xfd, 0xdf, 0x52, 
+0x14, 0x45, 0x8f, 0x64, 0xa3, 0xf4, 0xfc, 0xcf, 
+0x03, 0xa8, 0x45, 0x6d, 0xfd, 0x24, 0xae, 0x3b, 
+0x62, 0xb8, 0xd5, 0x77, 0x93, 0x5b, 0x0f, 0x4f, 
+0x01, 0x30, 0x35, 0x35, 0x35, 0x34, 0x38, 0x38, 
+0xf8, 0xfd, 0x52, 0xa9, 0x34, 0x09, 0xdc, 0xc2, 
+0x73, 0x8b, 0x79, 0xee, 0xb4, 0x84, 0xba, 0x20, 
+0x34, 0x02, 0xc0, 0x9f, 0xea, 0x7c, 0xb3, 0x8f, 
+0x53, 0x36, 0x79, 0xa0, 0xf3, 0x89, 0x27, 0x9e, 
+0x78, 0x6e, 0xeb, 0xd6, 0xad, 0xc7, 0x84, 0x10, 
+0x22, 0x79, 0xbd, 0x89, 0x8e, 0xb3, 0x5d, 0x6b, 
+0xf2, 0xf1, 0x7b, 0xa5, 0x5c, 0xd7, 0x3c, 0x37, 
+0xbf, 0x32, 0x81, 0xab, 0x38, 0xcc, 0xcf, 0xcf, 
+0x8f, 0xbe, 0xfd, 0xf6, 0xdb, 0x7f, 0x67, 0x18, 
+0xc6, 0x38, 0x9e, 0x35, 0x04, 0x41, 0xa8, 0x04, 
+0xc6, 0x55, 0x01, 0x50, 0x63, 0xfa, 0x7e, 0xb4, 
+0x0f, 0x6a, 0xbe, 0x73, 0xe7, 0xce, 0x9d, 0x47, 
+0xf6, 0xed, 0xdb, 0xf7, 0x02, 0x20, 0x5a, 0x2e, 
+0xb4, 0x91, 0xba, 0xdc, 0x7c, 0xdf, 0x04, 0x6d, 
+0x44, 0x66, 0xca, 0xe0, 0xe6, 0x63, 0xe3, 0x58, 
+0x11, 0x8b, 0x4c, 0x26, 0x73, 0xfe, 0xad, 0xb7, 
+0xde, 0xfa, 0x7b, 0x60, 0x92, 0x25, 0x10, 0x72, 
+0x78, 0x81, 0xb1, 0x32, 0x45, 0xd6, 0x82, 0x50, 
+0xe5, 0xa8, 0x35, 0x4b, 0x5c, 0x7f, 0xae, 0xf7, 
+0x23, 0x7e, 0x0a, 0x68, 0xe9, 0xe9, 0xe9, 0xd9, 
+0x3e, 0x30, 0x30, 0xf0, 0x6d, 0x21, 0x84, 0x48, 
+0x7f, 0xde, 0x42, 0xfc, 0x4a, 0x0a, 0x5b, 0xd8, 
+0x5f, 0x0a, 0x2b, 0xf3, 0x2a, 0xed, 0xa7, 0xbb, 
+0x90, 0xb6, 0x42, 0x47, 0x47, 0x47, 0xff, 0xe1, 
+0xc3, 0x87, 0xbf, 0x89, 0xa7, 0xa4, 0x34, 0xde, 
+0x0c, 0x15, 0xc1, 0x73, 0xdf, 0xca, 0xaa, 0xb3, 
+0x36, 0x3f, 0x51, 0x6f, 0x25, 0x58, 0x2f, 0xf0, 
+0x25, 0x80, 0x74, 0x32, 0x99, 0xec, 0x39, 0x72, 
+0xe4, 0xc8, 0x77, 0x35, 0x4d, 0x0b, 0x45, 0x26, 
+0xa2, 0xc4, 0x87, 0x53, 0x38, 0xd2, 0x59, 0xbb, 
+0xea, 0xd6, 0x91, 0x94, 0x45, 0x95, 0x96, 0x4f, 
+0xda, 0xb9, 0xbd, 0x2f, 0xc3, 0xd6, 0xad, 0x5b, 
+0x7f, 0x77, 0x6e, 0x6e, 0x6e, 0xe2, 0xec, 0xd9, 
+0xb3, 0x3f, 0xa3, 0xfe, 0x4a, 0xb1, 0x6a, 0x4b, 
+0x0d, 0x8d, 0x01, 0x50, 0xf1, 0xcc, 0x3f, 0x86, 
+0xb7, 0xb2, 0x6b, 0x7e, 0xea, 0xa9, 0xa7, 0xbe, 
+0x1d, 0x8d, 0x46, 0x5b, 0xd4, 0x39, 0x8d, 0xc4, 
+0xb9, 0x34, 0xb6, 0xb4, 0xef, 0x9f, 0x64, 0x6b, 
+0x20, 0x2d, 0xa3, 0x93, 0xf8, 0x3c, 0xc5, 0xc2, 
+0x23, 0xf3, 0x62, 0xcf, 0x57, 0xf6, 0x3c, 0x3f, 
+0x32, 0x32, 0xf2, 0xf9, 0xdc, 0xdc, 0x5c, 0x9e, 
+0xea, 0xbd, 0x83, 0x1f, 0x0c, 0x45, 0x70, 0xcf, 
+0x50, 0x71, 0x81, 0x95, 0xa6, 0xbd, 0x2d, 0x5b, 
+0xb6, 0xec, 0xe8, 0xe8, 0xe8, 0xe8, 0x17, 0xae, 
+0x20, 0xf1, 0xcb, 0x26, 0x5c, 0xc7, 0xc1, 0x11, 
+0xf6, 0x6f, 0x0d, 0x87, 0x2f, 0x47, 0xd1, 0x67, 
+0x42, 0xa8, 0x9a, 0x1a, 0x3a, 0x70, 0xe0, 0xc0, 
+0x31, 0x96, 0xdc, 0x20, 0x8a, 0xa7, 0xc8, 0xe0, 
+0x0e, 0xb4, 0x42, 0xb5, 0x16, 0x10, 0xd4, 0x7e, 
+0x15, 0x00, 0x03, 0x03, 0x03, 0xdf, 0x50, 0x14, 
+0x45, 0xe8, 0x23, 0x61, 0x28, 0x08, 0xec, 0x75, 
+0x36, 0x7d, 0x21, 0x04, 0x52, 0x91, 0x08, 0xa5, 
+0x7c, 0x95, 0xde, 0x38, 0xad, 0xa2, 0x85, 0x6d, 
+0xad, 0xce, 0xd2, 0xc2, 0x9f, 0xc5, 0xb0, 0x0f, 
+0x59, 0xf4, 0xf6, 0xf6, 0x3e, 0xd6, 0xd5, 0xd5, 
+0x35, 0x38, 0x39, 0x39, 0x39, 0xcf, 0xd2, 0x9e, 
+0x21, 0x38, 0x25, 0x56, 0xac, 0x40, 0x02, 0xb5, 
+0xbb, 0xbc, 0xa0, 0xf9, 0x47, 0x81, 0xe4, 0xae, 
+0x5d, 0xbb, 0xbe, 0xd2, 0xda, 0xda, 0xfa, 0x90, 
+0xb4, 0x24, 0xda, 0xa5, 0xd0, 0xba, 0x6a, 0xce, 
+0x95, 0x0e, 0x42, 0x03, 0x25, 0x26, 0xd1, 0x12, 
+0x0a, 0x5a, 0x42, 0x45, 0x8b, 0x7b, 0x57, 0x3d, 
+0xa5, 0x11, 0xef, 0x8c, 0x12, 0x4a, 0x69, 0xab, 
+0x7a, 0x97, 0x98, 0x13, 0x68, 0x13, 0x3a, 0x8a, 
+0xa2, 0x28, 0x8f, 0x3f, 0xfe, 0xf8, 0x31, 0x3c, 
+0xd7, 0x8d, 0xe1, 0x29, 0x52, 0xc3, 0xb3, 0xec, 
+0xaa, 0xc0, 0x5f, 0x6b, 0x01, 0xc1, 0xcd, 0x4e, 
+0x65, 0xbd, 0xdf, 0xdf, 0xdf, 0xff, 0x7b, 0x52, 
+0x4a, 0x94, 0x2b, 0x3a, 0x8e, 0xe5, 0x82, 0x5c, 
+0x79, 0x03, 0xa5, 0x86, 0x54, 0x2c, 0xc3, 0x5a, 
+0x95, 0xe6, 0x70, 0x6c, 0x28, 0x94, 0x50, 0x6d, 
+0x95, 0x70, 0x22, 0x8c, 0x9e, 0xd4, 0x91, 0xd2, 
+0xb3, 0x02, 0x21, 0x05, 0x89, 0x94, 0x8e, 0x96, 
+0xd3, 0xc9, 0x4e, 0xcc, 0xae, 0xf8, 0x2a, 0xe5, 
+0xf3, 0x10, 0x4e, 0xb7, 0xcd, 0x86, 0x0d, 0x1b, 
+0xfa, 0xbb, 0xbb, 0xbb, 0x1f, 0x98, 0x98, 0x98, 
+0xf0, 0x37, 0x4e, 0x3a, 0x4b, 0x56, 0xe0, 0x27, 
+0x61, 0xaa, 0x00, 0x08, 0x2e, 0x7e, 0xfc, 0xc4, 
+0x46, 0x34, 0x9d, 0x4e, 0x77, 0x34, 0x37, 0x37, 
+0x3f, 0x80, 0x03, 0xe2, 0x9a, 0xc4, 0x11, 0x8d, 
+0xcd, 0x31, 0xd9, 0x9e, 0xe0, 0xc9, 0xef, 0x1e, 
+0x66, 0x43, 0xdf, 0x06, 0xfe, 0xe9, 0xdb, 0xff, 
+0xbc, 0x6a, 0xf3, 0x05, 0x30, 0x4b, 0x36, 0xe6, 
+0x6d, 0x03, 0xc3, 0x08, 0xd1, 0xdc, 0xd3, 0x8c, 
+0x1e, 0xd1, 0x3c, 0x10, 0x84, 0x40, 0x4f, 0x68, 
+0x38, 0xd8, 0x64, 0x27, 0x57, 0x00, 0xa1, 0x08, 
+0x32, 0xa3, 0xe0, 0x76, 0x39, 0x62, 0xdb, 0xb6, 
+0x6d, 0x7b, 0x27, 0x26, 0x26, 0x2e, 0x51, 0x3d, 
+0x1d, 0x56, 0x32, 0x51, 0x42, 0x88, 0x3b, 0x00, 
+0xa8, 0xb5, 0x80, 0xe8, 0xae, 0x5d, 0xbb, 0xf6, 
+0x48, 0x29, 0x85, 0x3b, 0x2d, 0xb0, 0x6d, 0xbb, 
+0xc6, 0x80, 0x96, 0x48, 0x0b, 0x6b, 0x1c, 0xfc, 
+0xb3, 0x27, 0xf8, 0xea, 0x77, 0x0e, 0x12, 0x8a, 
+0xea, 0x38, 0xb6, 0xc3, 0xde, 0x3f, 0x1d, 0xe0, 
+0xe4, 0x8f, 0x4e, 0xad, 0x1a, 0x00, 0x9f, 0xf2, 
+0x85, 0x3c, 0xc5, 0x2b, 0x45, 0x5a, 0x7a, 0x5b, 
+0x68, 0xd9, 0x98, 0x46, 0x08, 0x09, 0x02, 0xda, 
+0xfb, 0xda, 0x29, 0x9a, 0x06, 0x0b, 0xb7, 0x17, 
+0x1a, 0x3e, 0x2f, 0xa6, 0x04, 0x72, 0xa3, 0xa4, 
+0xa7, 0xa7, 0x67, 0x27, 0x4b, 0x2e, 0xe0, 0x67, 
+0xa2, 0xaa, 0x02, 0xa1, 0xba, 0x8c, 0xff, 0xfb, 
+0x00, 0x44, 0x7a, 0x7a, 0x7a, 0x76, 0x0a, 0x21, 
+0x70, 0x6e, 0xba, 0x38, 0xa2, 0xee, 0xb2, 0x99, 
+0x1d, 0x4f, 0x6d, 0xe7, 0x6b, 0x7f, 0xf9, 0x34, 
+0xad, 0xbd, 0x2d, 0x68, 0x61, 0x0d, 0x55, 0x57, 
+0x29, 0x19, 0x25, 0x9e, 0x7c, 0xe1, 0x10, 0xe7, 
+0x7e, 0x7a, 0x8e, 0xf9, 0x5b, 0xb9, 0x35, 0x83, 
+0xe0, 0x38, 0x0e, 0x53, 0x57, 0xa7, 0x28, 0x59, 
+0x25, 0x36, 0xed, 0xec, 0x01, 0x21, 0x10, 0x02, 
+0x36, 0xee, 0xea, 0xe6, 0xe2, 0x87, 0x9f, 0x35, 
+0x7e, 0x78, 0x0a, 0x34, 0x57, 0x90, 0x4e, 0xa7, 
+0x7b, 0xd3, 0xe9, 0x74, 0x6b, 0x36, 0x9b, 0x9d, 
+0xaa, 0x01, 0x40, 0x52, 0xde, 0x1f, 0x04, 0xf3, 
+0x72, 0x41, 0xcd, 0xc7, 0x81, 0xa6, 0x48, 0x24, 
+0xd2, 0x75, 0xf8, 0xd0, 0xe1, 0x3f, 0x91, 0x8a, 
+0x54, 0xcc, 0x4f, 0x6d, 0x1c, 0xdb, 0xc1, 0x15, 
+0x6e, 0x85, 0xbb, 0xfa, 0x36, 0x70, 0xec, 0xaf, 
+0xff, 0x80, 0xbd, 0xdf, 0x18, 0x20, 0x9a, 0x8c, 
+0x20, 0x15, 0x89, 0x54, 0x14, 0x5c, 0xc7, 0xc5, 
+0xb1, 0xbc, 0x59, 0x22, 0x92, 0x8e, 0x72, 0xe1, 
+0xbf, 0x7e, 0x5d, 0xf5, 0xdc, 0x5a, 0x38, 0x9f, 
+0xcb, 0x13, 0x4e, 0x45, 0x48, 0x75, 0xa6, 0x50, 
+0x74, 0x85, 0x50, 0x3c, 0xc4, 0xdc, 0xf4, 0x2c, 
+0x85, 0x42, 0x71, 0xf9, 0xe7, 0x5c, 0x17, 0xa5, 
+0x55, 0xa2, 0xc4, 0xa5, 0x70, 0x5d, 0xf7, 0xf6, 
+0xd5, 0xab, 0x57, 0xbf, 0x60, 0x29, 0x5f, 0x60, 
+0x12, 0xc8, 0x23, 0xfa, 0x06, 0x5d, 0x9b, 0xeb, 
+0x53, 0x01, 0xfd, 0xc1, 0x07, 0x1f, 0xec, 0x55, 
+0x54, 0x45, 0x73, 0x17, 0x5c, 0x6c, 0xc3, 0xc6, 
+0x11, 0x4e, 0x85, 0x5b, 0x36, 0x35, 0xb3, 0xff, 
+0x0f, 0x1f, 0xa3, 0xa5, 0xb7, 0x05, 0xdb, 0xb2, 
+0xb0, 0x2c, 0x9b, 0x92, 0x61, 0x61, 0xe4, 0x0d, 
+0x8a, 0x8b, 0x45, 0x8c, 0x82, 0x81, 0x69, 0x94, 
+0xe8, 0x7b, 0xe2, 0x61, 0x7a, 0x76, 0xf5, 0x54, 
+0x3d, 0xbb, 0x56, 0x1e, 0xbf, 0x74, 0x1d, 0x3d, 
+0xa6, 0x13, 0x4e, 0x84, 0x08, 0xc5, 0x75, 0xba, 
+0xb7, 0x77, 0xaf, 0xf8, 0x8c, 0x3d, 0xed, 0x20, 
+0x84, 0xa0, 0xad, 0xad, 0x6d, 0x13, 0x5e, 0x3c, 
+0xf3, 0x33, 0xd2, 0x55, 0x29, 0xf9, 0x7a, 0xb3, 
+0x40, 0xc5, 0x0d, 0x9a, 0x9a, 0x9a, 0x5a, 0xa5, 
+0x94, 0xd8, 0x86, 0x83, 0x53, 0xb3, 0xea, 0x9b, 
+0x1a, 0x9f, 0xe2, 0xb5, 0xbf, 0xfd, 0x37, 0xb4, 
+0xb0, 0x46, 0xef, 0x23, 0xbd, 0x6c, 0xdd, 0xf3, 
+0x10, 0xfb, 0xbe, 0xbe, 0x0f, 0x69, 0x4a, 0x84, 
+0x00, 0xd7, 0x71, 0xb1, 0x6d, 0x07, 0xcb, 0xb4, 
+0x78, 0xf2, 0x3b, 0x87, 0xf8, 0xd7, 0xbf, 0xf9, 
+0x01, 0x8e, 0x7d, 0x77, 0x6b, 0x87, 0x7c, 0x21, 
+0xcf, 0xc2, 0x5c, 0x8e, 0xd6, 0x9e, 0x56, 0x00, 
+0x9a, 0x7b, 0xd2, 0x77, 0x8c, 0xa7, 0x96, 0x1c, 
+0x43, 0x22, 0xa5, 0x24, 0x1a, 0x8d, 0xa6, 0x96, 
+0x13, 0x1e, 0x10, 0xf5, 0x66, 0x81, 0x4a, 0xd2, 
+0x33, 0x91, 0x48, 0xa4, 0x85, 0x10, 0x38, 0x45, 
+0x07, 0x7b, 0x99, 0xe8, 0x6f, 0x1b, 0x36, 0x97, 
+0xce, 0x5e, 0x62, 0x66, 0x6a, 0x86, 0x47, 0x7f, 
+0xa7, 0xdf, 0xab, 0xe5, 0x09, 0xc1, 0xcd, 0x91, 
+0x9b, 0x44, 0x53, 0x51, 0xc2, 0xd1, 0x10, 0x89, 
+0xd6, 0x04, 0x3b, 0x8e, 0x6c, 0xe7, 0xec, 0xfb, 
+0xe7, 0xee, 0x0a, 0x00, 0x80, 0x7c, 0x3e, 0x4f, 
+0x28, 0xa6, 0x03, 0x20, 0xb5, 0xc4, 0xb2, 0xe3, 
+0xf1, 0xc9, 0x32, 0xbc, 0xd9, 0x23, 0x12, 0x89, 
+0x24, 0x03, 0xc2, 0xd7, 0x56, 0xa6, 0x2a, 0x16, 
+0x50, 0x5b, 0xe1, 0x91, 0x80, 0x12, 0x8f, 0xc7, 
+0x53, 0x52, 0x4a, 0x1c, 0xd3, 0x59, 0x71, 0xd3, 
+0x93, 0xea, 0x4c, 0x52, 0x58, 0x2c, 0x56, 0x56, 
+0x70, 0xef, 0xfd, 0xe0, 0xa7, 0x8c, 0x7d, 0x36, 
+0x46, 0x6b, 0x77, 0x0b, 0x1b, 0xb7, 0x6e, 0xa4, 
+0xad, 0xbb, 0x15, 0x35, 0xa2, 0x60, 0x1a, 0xa5, 
+0x35, 0x0b, 0x0f, 0x60, 0x39, 0x16, 0xa1, 0x44, 
+0x18, 0x5c, 0x17, 0xdd, 0xd5, 0x51, 0x22, 0x0a, 
+0xa5, 0x06, 0xef, 0xb2, 0x0c, 0x1b, 0x29, 0xa5, 
+0x0f, 0x40, 0xd5, 0xf4, 0x17, 0xbc, 0x4f, 0xad, 
+0x11, 0xbe, 0x8a, 0xe3, 0xf1, 0x78, 0x4a, 0x08, 
+0x41, 0xa9, 0x68, 0xad, 0x88, 0x78, 0xa2, 0x2d, 
+0x41, 0x21, 0x5f, 0xa8, 0x54, 0x73, 0xa7, 0x26, 
+0xa6, 0xb0, 0x85, 0xcd, 0xd4, 0x64, 0x86, 0xa9, 
+0xc9, 0xcc, 0xd2, 0x8d, 0x77, 0x99, 0x33, 0x11, 
+0xaa, 0xf0, 0x2c, 0xc0, 0x05, 0xd7, 0x75, 0x71, 
+0x15, 0xb7, 0xe1, 0x98, 0x1c, 0xc3, 0x8b, 0x01, 
+0xe1, 0x70, 0x38, 0x46, 0xb5, 0xe6, 0xab, 0xa8, 
+0x61, 0x61, 0x44, 0x08, 0x81, 0x94, 0xb2, 0xb2, 
+0x2a, 0x6b, 0x44, 0xb1, 0x54, 0x0c, 0x23, 0x6f, 
+0x20, 0x84, 0xc0, 0x34, 0x4c, 0x0a, 0x8b, 0x85, 
+0x15, 0x9f, 0x69, 0xf4, 0xbb, 0xb5, 0x89, 0x9a, 
+0xf6, 0xde, 0x76, 0x22, 0xf1, 0x08, 0xae, 0xeb, 
+0x92, 0x9f, 0xcf, 0x63, 0x1a, 0x66, 0xc3, 0xf7, 
+0x0b, 0xe9, 0x8d, 0x7d, 0xa5, 0xac, 0xb7, 0x4a, 
+0x83, 0xb2, 0x74, 0x3e, 0x9f, 0x9f, 0x13, 0x42, 
+0xa0, 0xc5, 0x54, 0xa4, 0xd2, 0x38, 0xc9, 0x69, 
+0x14, 0x0c, 0x8c, 0x82, 0x01, 0x02, 0x1c, 0xdb, 
+0x59, 0xf1, 0xfe, 0x46, 0xb4, 0xeb, 0xc0, 0x4e, 
+0x36, 0x6d, 0xdb, 0xc4, 0xc4, 0xe5, 0x09, 0xc6, 
+0xbe, 0x18, 0x63, 0x7a, 0x72, 0x86, 0xee, 0x87, 
+0xba, 0x88, 0xc4, 0xc2, 0xb8, 0x2e, 0xdc, 0x1a, 
+0x9f, 0x5e, 0xf1, 0xfd, 0x6a, 0x54, 0x41, 0x08, 
+0x81, 0x61, 0x18, 0x8b, 0xd4, 0xd4, 0x10, 0xab, 
+0xee, 0x2b, 0x5f, 0x83, 0x20, 0xf8, 0x37, 0xdb, 
+0x15, 0x00, 0x22, 0x1a, 0x8a, 0x54, 0x1a, 0xfe, 
+0xe0, 0x42, 0x76, 0x81, 0x62, 0xde, 0xa8, 0xd8, 
+0x58, 0x28, 0x1c, 0xc2, 0x32, 0x57, 0xb9, 0x17, 
+0xa8, 0xa1, 0xcf, 0x7f, 0xf1, 0x05, 0x7b, 0xbf, 
+0x36, 0xc0, 0xf6, 0x7d, 0x8f, 0xa0, 0x6a, 0x2a, 
+0xf9, 0x5c, 0x9e, 0x78, 0x53, 0x0c, 0x45, 0xf5, 
+0xd6, 0x18, 0x0b, 0xb3, 0x0b, 0x2b, 0x8e, 0x47, 
+0x8b, 0xea, 0x3e, 0x00, 0xf3, 0x04, 0xe6, 0x7d, 
+0x1a, 0x24, 0x44, 0xfc, 0x7f, 0x56, 0xaa, 0xb4, 
+0xb9, 0x5c, 0xee, 0xb6, 0x94, 0x12, 0x2d, 0xb6, 
+0x32, 0x00, 0xf9, 0xb9, 0x02, 0x66, 0xd9, 0x05, 
+0x00, 0x5a, 0xda, 0x9b, 0x99, 0x9e, 0x9c, 0x59, 
+0x9b, 0xe4, 0x3e, 0x39, 0x70, 0xf2, 0x8d, 0x53, 
+0xfc, 0xf1, 0x5f, 0xfd, 0x11, 0xaa, 0xa6, 0x12, 
+0x4b, 0x46, 0x91, 0x52, 0x82, 0x10, 0xb8, 0xae, 
+0x43, 0xdf, 0x9e, 0x87, 0xb1, 0x8c, 0x12, 0x23, 
+0xbf, 0x1a, 0xe5, 0xfa, 0xa5, 0xf1, 0xba, 0x40, 
+0xeb, 0x51, 0x0d, 0x29, 0x25, 0xa6, 0x69, 0xce, 
+0x53, 0x5d, 0x44, 0xad, 0x02, 0xa2, 0x36, 0x06, 
+0x54, 0x55, 0x69, 0xb3, 0xd9, 0xec, 0x8c, 0x10, 
+0x02, 0x35, 0xaa, 0xa2, 0x28, 0x8d, 0x01, 0x98, 
+0x9f, 0x9e, 0xc3, 0x28, 0x98, 0x15, 0x00, 0xba, 
+0x36, 0x77, 0x91, 0x9d, 0x5a, 0x79, 0xf7, 0xb6, 
+0x1c, 0x5d, 0xbb, 0x38, 0xc6, 0xd5, 0x5f, 0x5f, 
+0x63, 0xfb, 0xfe, 0x6d, 0xa8, 0x9a, 0x8a, 0xa2, 
+0x2a, 0x15, 0xf7, 0x6a, 0xef, 0x69, 0xe7, 0xe0, 
+0x37, 0x0e, 0xf2, 0xd8, 0x33, 0xfb, 0x28, 0x2e, 
+0x16, 0x19, 0x3a, 0x71, 0x96, 0x93, 0x3f, 0x39, 
+0x85, 0xeb, 0x2c, 0x29, 0x57, 0x8b, 0x69, 0x08, 
+0x21, 0xc8, 0xe7, 0xf3, 0x73, 0x2c, 0x65, 0x84, 
+0x6a, 0xd3, 0x62, 0x6e, 0xd0, 0x05, 0x7c, 0xf6, 
+0x6b, 0xf4, 0xe6, 0xc8, 0xc8, 0xc8, 0x98, 0xeb, 
+0xba, 0x25, 0x3d, 0xa9, 0x69, 0x6a, 0x54, 0xc5, 
+0x29, 0x2e, 0x3f, 0x15, 0x9a, 0xc5, 0x12, 0x99, 
+0xb1, 0x5b, 0x34, 0xb5, 0xa7, 0x00, 0x48, 0xb6, 
+0x24, 0x49, 0x36, 0x27, 0x59, 0x98, 0x6d, 0xbc, 
+0x71, 0x69, 0x44, 0xef, 0xff, 0xf8, 0xe7, 0x6c, 
+0x7f, 0xfc, 0x11, 0xb4, 0x90, 0x86, 0x16, 0xf2, 
+0x04, 0xb2, 0x4a, 0x16, 0x60, 0xe2, 0xd8, 0x0e, 
+0xf3, 0x33, 0x45, 0x3e, 0xf8, 0xf7, 0x0f, 0xb9, 
+0x70, 0xea, 0xd7, 0x08, 0x44, 0x55, 0x50, 0x0c, 
+0xb7, 0x87, 0x90, 0x52, 0x72, 0xeb, 0xd6, 0xad, 
+0x6b, 0xdc, 0x59, 0x4e, 0xaf, 0x80, 0x10, 0x5c, 
+0x19, 0xd5, 0x66, 0x83, 0xa2, 0xa6, 0x69, 0x86, 
+0x77, 0xec, 0xd8, 0xb1, 0x3d, 0x91, 0x48, 0xb4, 
+0xba, 0x45, 0x17, 0x3b, 0xe7, 0x54, 0x66, 0x85, 
+0x7a, 0x6c, 0x97, 0x2c, 0x92, 0x2d, 0x49, 0x1c, 
+0xcb, 0xc1, 0xb1, 0x1d, 0x12, 0xe9, 0x38, 0x73, 
+0xb7, 0xe6, 0xc1, 0xa5, 0xe1, 0x73, 0xcb, 0xb1, 
+0x91, 0x37, 0xd0, 0x74, 0x95, 0xcd, 0xfd, 0x5b, 
+0x50, 0x34, 0x15, 0x29, 0x25, 0x8e, 0xe3, 0x60, 
+0x16, 0x4d, 0x4e, 0xbe, 0x71, 0x8a, 0x9f, 0xbc, 
+0xfc, 0x36, 0x37, 0xaf, 0x4e, 0x55, 0xcd, 0x56, 
+0x52, 0x4a, 0x14, 0x5d, 0x21, 0xb5, 0x23, 0x01, 
+0xe0, 0xbc, 0xfe, 0xfa, 0xeb, 0x3f, 0xca, 0xe7, 
+0xf3, 0x37, 0x80, 0x59, 0xbc, 0xec, 0x50, 0x55, 
+0xb1, 0x44, 0x75, 0x5d, 0xd7, 0x6f, 0x33, 0xf1, 
+0xfd, 0xdf, 0x6f, 0x52, 0x28, 0x02, 0x85, 0xd1, 
+0xd1, 0xd1, 0x4f, 0xbb, 0xbb, 0xbb, 0xfb, 0x22, 
+0x9d, 0x61, 0xcc, 0xf1, 0xc6, 0x8b, 0x98, 0x85, 
+0xdb, 0x8b, 0x64, 0x6f, 0x64, 0x89, 0x37, 0xc5, 
+0x71, 0x5d, 0x17, 0x81, 0xe0, 0xc1, 0x1d, 0x0f, 
+0x72, 0x6b, 0x2c, 0x43, 0x2e, 0x7b, 0x77, 0x96, 
+0x70, 0xea, 0x8d, 0xd3, 0xec, 0x7e, 0x72, 0x37, 
+0xe9, 0xce, 0x34, 0xb8, 0x2e, 0xe7, 0x3f, 0xfc, 
+0x15, 0x83, 0x3f, 0x3c, 0xc1, 0xfc, 0xb4, 0x57, 
+0x27, 0xac, 0x17, 0x9b, 0x42, 0x1d, 0x3a, 0x52, 
+0x91, 0x4c, 0x4f, 0x4f, 0x5f, 0x9f, 0x9e, 0x9e, 
+0x9e, 0x2e, 0xcb, 0x52, 0x5b, 0x39, 0xbe, 0x23, 
+0x06, 0x04, 0x03, 0xa0, 0x59, 0x7e, 0x28, 0x7f, 
+0xe6, 0xcc, 0x99, 0x5f, 0x1e, 0x38, 0x70, 0xe0, 
+0x9b, 0xa1, 0x56, 0x5d, 0xaa, 0xba, 0x82, 0x6b, 
+0x35, 0x9e, 0x57, 0xa7, 0x46, 0xa7, 0x50, 0xb6, 
+0x48, 0x14, 0x4d, 0x05, 0xd7, 0xdb, 0x99, 0xb5, 
+0x74, 0x36, 0x13, 0x89, 0x45, 0x98, 0xcd, 0xcc, 
+0xae, 0x29, 0x41, 0x02, 0xe0, 0x94, 0x6c, 0x7e, 
+0xf6, 0x2f, 0x3f, 0x63, 0xef, 0xef, 0x0f, 0xf0, 
+0xfe, 0xf1, 0x9f, 0x33, 0x31, 0x3c, 0x59, 0x16, 
+0x7c, 0xf9, 0x69, 0x30, 0xd2, 0x19, 0x42, 0x08, 
+0xc1, 0xd5, 0xab, 0x57, 0x3f, 0xc5, 0xcb, 0x07, 
+0xd6, 0x02, 0x50, 0x11, 0xa2, 0xde, 0x2c, 0x60, 
+0xe3, 0x59, 0x80, 0x01, 0xe4, 0x33, 0x99, 0x4c, 
+0xe6, 0xf6, 0xed, 0xdb, 0x57, 0xdb, 0xda, 0xda, 
+0x36, 0xc7, 0x1e, 0x88, 0x52, 0x18, 0x2d, 0xae, 
+0x38, 0xe8, 0x5b, 0xd7, 0xa7, 0x49, 0x77, 0xa4, 
+0x91, 0x8a, 0xc0, 0x75, 0xbd, 0x8d, 0x91, 0xaa, 
+0x2a, 0xa4, 0xdb, 0xd3, 0x14, 0x16, 0x0b, 0x94, 
+0x8a, 0xa5, 0x35, 0x01, 0x31, 0x3c, 0x74, 0x99, 
+0xe1, 0xa1, 0xcb, 0x9e, 0xe0, 0x2b, 0x04, 0x63, 
+0x19, 0x91, 0x84, 0x3a, 0x43, 0x20, 0x70, 0x3f, 
+0xf9, 0xe4, 0x93, 0x5f, 0xe0, 0x99, 0xfd, 0x1d, 
+0xdb, 0x60, 0xca, 0xb5, 0xc2, 0x5a, 0x18, 0x7d, 
+0x0b, 0xf0, 0x5d, 0x60, 0x11, 0xc8, 0x9d, 0x3e, 
+0x7d, 0xfa, 0x3f, 0x84, 0x10, 0x44, 0x36, 0x87, 
+0x51, 0xc2, 0x2a, 0x52, 0x2a, 0x0d, 0xd9, 0xb1, 
+0x5c, 0xb2, 0x37, 0x66, 0x29, 0xe4, 0x0c, 0x4a, 
+0x45, 0x8b, 0x52, 0xb1, 0x44, 0xa9, 0x68, 0x61, 
+0x99, 0x36, 0x8a, 0xa2, 0xa2, 0x87, 0x43, 0x84, 
+0x22, 0x61, 0x54, 0x55, 0x5b, 0xf1, 0x5d, 0x6b, 
+0xe5, 0xd8, 0xd6, 0x28, 0x52, 0x91, 0x8c, 0x8d, 
+0x8d, 0x9d, 0x1f, 0x1d, 0x1d, 0xbd, 0x46, 0x75, 
+0x1e, 0xa0, 0xbe, 0x05, 0x2c, 0x13, 0x07, 0x0c, 
+0x3c, 0xf3, 0x99, 0x3f, 0x79, 0xf2, 0xe4, 0xd0, 
+0xfe, 0xfd, 0xfb, 0x2f, 0x77, 0x76, 0x76, 0x3e, 
+0x14, 0x7b, 0x28, 0x42, 0xe1, 0x0b, 0x63, 0x55, 
+0x9a, 0x2b, 0xcc, 0x17, 0x50, 0x35, 0x05, 0xa9, 
+0x2a, 0xe0, 0xba, 0x38, 0x8e, 0xeb, 0xd5, 0x13, 
+0x6c, 0x07, 0xd7, 0xf5, 0x96, 0xbc, 0x2b, 0x69, 
+0x74, 0x2d, 0xa4, 0x24, 0x15, 0xc2, 0x5d, 0x21, 
+0x1c, 0xc7, 0xb1, 0xdf, 0x7b, 0xef, 0xbd, 0x37, 
+0xf1, 0x0a, 0xa4, 0x0b, 0x78, 0xca, 0x0c, 0xb6, 
+0xd0, 0x54, 0xa8, 0xd6, 0x02, 0x82, 0x00, 0x98, 
+0x78, 0xc8, 0x2d, 0x00, 0xb3, 0x83, 0x83, 0x83, 
+0x6f, 0x00, 0x6e, 0xb8, 0x27, 0x84, 0x16, 0xf7, 
+0x16, 0x46, 0xab, 0x61, 0xd7, 0xf6, 0xb6, 0xcc, 
+0xb6, 0xe9, 0x78, 0xf1, 0xc3, 0x11, 0x48, 0xb1, 
+0xba, 0x67, 0xd7, 0xca, 0xd1, 0xad, 0x61, 0x84, 
+0x10, 0x0c, 0x0f, 0x0f, 0x7f, 0x3c, 0x32, 0x32, 
+0x32, 0x42, 0x75, 0x99, 0xdc, 0x07, 0xa0, 0x62, 
+0xfe, 0x55, 0x00, 0x94, 0xbf, 0xa8, 0x0d, 0x84, 
+0x15, 0x00, 0xce, 0x9d, 0x3b, 0x77, 0xe1, 0xfa, 
+0xf5, 0xeb, 0xe7, 0xa5, 0x22, 0x89, 0xef, 0x8a, 
+0xa0, 0xea, 0x12, 0x45, 0xf9, 0xed, 0xe1, 0xc8, 
+0xe6, 0x10, 0x7a, 0x8b, 0x86, 0x65, 0x59, 0xc5, 
+0x37, 0xdf, 0x7c, 0xf3, 0x4d, 0xea, 0x37, 0x4b, 
+0xdc, 0xb1, 0x1f, 0xa8, 0x17, 0x4a, 0x6b, 0xdd, 
+0x60, 0xb1, 0x8c, 0xe4, 0xed, 0xe3, 0xc7, 0x8f, 
+0xff, 0x70, 0x71, 0x71, 0x71, 0x46, 0x49, 0x2a, 
+0x44, 0x1e, 0x89, 0xac, 0xbb, 0xff, 0xde, 0x2d, 
+0xeb, 0x6d, 0x3a, 0xe1, 0x2d, 0x21, 0x00, 0x77, 
+0x70, 0x70, 0xf0, 0x95, 0x4c, 0x26, 0x33, 0x86, 
+0x37, 0xef, 0xd7, 0x96, 0xc7, 0xab, 0xb4, 0xbf, 
+0x12, 0x00, 0x41, 0x2b, 0xc8, 0x01, 0xd9, 0xe9, 
+0xe9, 0xe9, 0xeb, 0xaf, 0xbc, 0xf2, 0xca, 0x3f, 
+0xd8, 0xb6, 0x6d, 0xe8, 0x9d, 0x1a, 0xe1, 0x07, 
+0x43, 0xf7, 0xc5, 0x94, 0xd7, 0xc2, 0x5a, 0x5c, 
+0x25, 0xb2, 0x23, 0x84, 0x54, 0x24, 0x43, 0x43, 
+0x43, 0x3f, 0x1d, 0x1c, 0x1c, 0xfc, 0x88, 0x06, 
+0x5d, 0x22, 0xb5, 0xc2, 0xde, 0x55, 0x83, 0xc4, 
+0xd3, 0x4f, 0x3f, 0x7d, 0xe4, 0xd9, 0x67, 0x9f, 
+0x7d, 0x41, 0x08, 0x21, 0x4a, 0x57, 0x6c, 0xac, 
+0xf1, 0x2f, 0xa7, 0x4a, 0x2c, 0xe3, 0x02, 0x7d, 
+0x87, 0x8a, 0x08, 0x09, 0x46, 0x47, 0x47, 0xcf, 
+0xbf, 0xf4, 0xd2, 0x4b, 0x6b, 0x6e, 0x90, 0xb8, 
+0x23, 0x21, 0x12, 0x98, 0x11, 0x7c, 0x37, 0x10, 
+0xe5, 0x97, 0xf8, 0xd9, 0x62, 0xe5, 0xc4, 0x89, 
+0x13, 0x1f, 0xb5, 0xb5, 0xb5, 0xb5, 0x1e, 0x38, 
+0x70, 0xe0, 0x98, 0xfe, 0x90, 0x2a, 0x94, 0x84, 
+0xc4, 0x1a, 0xb6, 0x6b, 0xe2, 0xeb, 0xfd, 0x25, 
+0xd9, 0x2a, 0x51, 0x1f, 0xf6, 0x8a, 0xa9, 0x99, 
+0x4c, 0x66, 0xf4, 0x7b, 0xdf, 0xfb, 0xde, 0x3f, 
+0x72, 0x67, 0x7b, 0x4c, 0xb0, 0x51, 0x6a, 0x75, 
+0x2d, 0x32, 0xb0, 0xfa, 0x26, 0xa9, 0x67, 0x9e, 
+0x79, 0xe6, 0xa9, 0xa3, 0x47, 0x8f, 0x7e, 0x4b, 
+0xd3, 0x34, 0xdd, 0xcd, 0xb9, 0x58, 0x17, 0x6d, 
+0x5c, 0x73, 0xdd, 0x65, 0xbd, 0x83, 0x94, 0x4d, 
+0x12, 0xa5, 0xd7, 0xf3, 0xde, 0xe1, 0xe1, 0xe1, 
+0xa1, 0x97, 0x5f, 0x7e, 0xf9, 0xfb, 0x86, 0x61, 
+0xac, 0x5f, 0x93, 0x14, 0xac, 0xbe, 0x4d, 0x6e, 
+0xf7, 0xee, 0xdd, 0xbb, 0x9e, 0x7f, 0xfe, 0xf9, 
+0xbf, 0x88, 0xc5, 0x62, 0x4d, 0xd8, 0xe0, 0x8c, 
+0xbb, 0x38, 0x13, 0xee, 0x7d, 0xb1, 0x06, 0x91, 
+0x16, 0xc8, 0x07, 0x04, 0x22, 0x06, 0xae, 0xeb, 
+0x3a, 0xa7, 0x4e, 0x9d, 0x7a, 0xf7, 0xf8, 0xf1, 
+0xe3, 0xeb, 0xdf, 0x26, 0x57, 0xf9, 0xe7, 0x2a, 
+0x1b, 0x25, 0x3b, 0x3b, 0x3b, 0x37, 0xbd, 0xf8, 
+0xe2, 0x8b, 0x7f, 0xbe, 0x71, 0xe3, 0xc6, 0x3e, 
+0x00, 0x4c, 0x70, 0xc6, 0x5c, 0x9c, 0x29, 0xea, 
+0x84, 0x9d, 0xbb, 0x10, 0x3c, 0x8e, 0x27, 0x78, 
+0x93, 0xf7, 0x39, 0x9f, 0xcf, 0xcf, 0xbd, 0xf3, 
+0xce, 0x3b, 0x3f, 0x3e, 0x71, 0xe2, 0xc4, 0x7f, 
+0xe3, 0x35, 0x49, 0xce, 0xb0, 0xb4, 0xdb, 0x5b, 
+0x9f, 0x46, 0xc9, 0xca, 0x0d, 0xcb, 0xb7, 0xca, 
+0x46, 0xf1, 0xea, 0xef, 0x95, 0x56, 0xd9, 0xc3, 
+0x87, 0x0f, 0xef, 0x39, 0x7a, 0xf4, 0xe8, 0xb1, 
+0x96, 0x96, 0x96, 0x6e, 0x00, 0x4a, 0xe0, 0xde, 
+0xf6, 0x86, 0xe7, 0xce, 0xb1, 0x36, 0x30, 0xa2, 
+0x20, 0x9a, 0x3d, 0x26, 0xee, 0x7d, 0x65, 0x9a, 
+0x66, 0x71, 0x68, 0x68, 0xe8, 0xfd, 0xd7, 0x5e, 
+0x7b, 0xed, 0xbd, 0x7c, 0x3e, 0xef, 0xb7, 0xca, 
+0xce, 0x52, 0xbd, 0xe2, 0x5b, 0xbf, 0x56, 0xd9, 
+0x65, 0x40, 0x58, 0xae, 0x59, 0x3a, 0x85, 0xe7, 
+0x1a, 0xe9, 0xe7, 0x9e, 0x7b, 0xee, 0xe0, 0xc1, 
+0x83, 0x07, 0x9f, 0x49, 0x26, 0x93, 0x95, 0x66, 
+0x69, 0xec, 0xf2, 0x50, 0x0d, 0x70, 0x4d, 0xb1, 
+0x74, 0x22, 0xc0, 0xa1, 0x72, 0x8a, 0x40, 0x84, 
+0x5c, 0xef, 0xef, 0x24, 0x1e, 0xc4, 0x65, 0xb2, 
+0x2c, 0xcb, 0xbc, 0x78, 0xf1, 0xe2, 0xc7, 0xaf, 
+0xbe, 0xfa, 0xea, 0x5b, 0x99, 0x4c, 0xc6, 0xdf, 
+0xdb, 0xcf, 0x95, 0x39, 0xa8, 0xf5, 0xf5, 0x6f, 
+0x96, 0x6e, 0x00, 0x42, 0xf0, 0x80, 0x84, 0x7f, 
+0x46, 0x20, 0x5e, 0x1e, 0x7e, 0x12, 0x48, 0xec, 
+0xdd, 0xbb, 0xf7, 0xe1, 0x81, 0x81, 0x81, 0x3d, 
+0x9b, 0x37, 0x6f, 0xde, 0x9e, 0x4e, 0xa7, 0xd7, 
+0xd4, 0x2e, 0x6f, 0x18, 0x46, 0xfe, 0xda, 0xb5, 
+0x6b, 0x5f, 0x5c, 0xb8, 0x70, 0xe1, 0xec, 0x07, 
+0x1f, 0x7c, 0x70, 0x76, 0x61, 0x61, 0xc1, 0x0f, 
+0x6e, 0xbe, 0xb6, 0x7f, 0x73, 0xed, 0xf2, 0x95, 
+0x9b, 0x1b, 0x1f, 0x98, 0xf0, 0x2d, 0xa2, 0xee, 
+0x81, 0x89, 0xbe, 0xbe, 0xbe, 0xee, 0xdd, 0xbb, 
+0x77, 0xf7, 0x25, 0x93, 0xc9, 0x74, 0x22, 0x91, 
+0x48, 0x45, 0xa3, 0xd1, 0x64, 0x2c, 0x16, 0x4b, 
+0xa8, 0xaa, 0xaa, 0xe6, 0xf3, 0xf9, 0x85, 0x85, 
+0x85, 0x85, 0xf9, 0xc5, 0xc5, 0xc5, 0xf9, 0x5c, 
+0x2e, 0x97, 0x1d, 0x1f, 0x1f, 0x9f, 0xf8, 0xe8, 
+0xa3, 0x8f, 0x3e, 0x2b, 0x95, 0x4a, 0x8d, 0x0e, 
+0x4c, 0x04, 0x05, 0xaf, 0x3a, 0x39, 0xb2, 0x5a, 
+0xe1, 0xd7, 0x0c, 0x40, 0x00, 0x04, 0xb8, 0xfb, 
+0x23, 0x33, 0xc1, 0x42, 0xa5, 0xbf, 0x12, 0xf5, 
+0xf3, 0x10, 0xfe, 0x56, 0xdc, 0x77, 0x90, 0x62, 
+0x1d, 0x5e, 0xf6, 0xc8, 0x0c, 0x0d, 0xa2, 0xfd, 
+0xb2, 0xf2, 0x7c, 0x49, 0x87, 0xa6, 0x82, 0x27, 
+0xc7, 0xa0, 0x7a, 0xf9, 0xed, 0x83, 0xf0, 0x1b, 
+0x39, 0x34, 0x75, 0x4f, 0x07, 0x27, 0xef, 0xe1, 
+0xd8, 0x5c, 0x6d, 0xad, 0xae, 0x76, 0x27, 0xea, 
+0xf3, 0x8a, 0xc7, 0xe6, 0xb8, 0x07, 0xe1, 0xe1, 
+0x1e, 0x01, 0x80, 0x2a, 0x10, 0xa0, 0xda, 0x22, 
+0x82, 0x95, 0xe6, 0xd5, 0x1c, 0x9c, 0x0c, 0xf2, 
+0x8a, 0x07, 0x27, 0xb9, 0x47, 0xc1, 0x2b, 0x03, 
+0xfe, 0xff, 0x7e, 0x74, 0x76, 0xdd, 0x00, 0xa8, 
+0x7a, 0xe9, 0x3a, 0x1e, 0x9e, 0x0e, 0x5c, 0xbd, 
+0x0f, 0xbf, 0xad, 0x87, 0xa7, 0xff, 0xaf, 0xd2, 
+0xff, 0x02, 0x4d, 0x04, 0x17, 0xe5, 0x2a, 0xd4, 
+0x8c, 0xff, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 
+0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity8.png b/source/bitmaps/misc/activity8.png
new file mode 100644 (file)
index 0000000..6d87a80
Binary files /dev/null and b/source/bitmaps/misc/activity8.png differ
diff --git a/source/bitmaps/misc/activity9.cpp b/source/bitmaps/misc/activity9.cpp
new file mode 100644 (file)
index 0000000..50b8a8a
--- /dev/null
@@ -0,0 +1,543 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITY9_CPP
+#define MISC_ACTIVITY9_CPP
+
+static unsigned char misc_activity9_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x10, 0x27, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x9b, 0xd9, 
+0x6f, 0x1c, 0x57, 0x76, 0xc6, 0x7f, 0xf7, 0xd6, 
+0xd2, 0x55, 0xbd, 0x91, 0xcd, 0x9d, 0x94, 0x48, 
+0x6d, 0x86, 0x96, 0x91, 0x2d, 0x4a, 0xb6, 0x24, 
+0x5b, 0xe3, 0x4d, 0x1a, 0x1b, 0x88, 0x62, 0x20, 
+0x63, 0xc7, 0x08, 0x32, 0x99, 0x81, 0xe1, 0x97, 
+0x18, 0x9e, 0x20, 0xff, 0x40, 0xf2, 0x12, 0x20, 
+0x0f, 0x41, 0x5e, 0x82, 0x09, 0x10, 0x04, 0x03, 
+0x67, 0x00, 0x3f, 0x05, 0x72, 0xc6, 0x48, 0x1c, 
+0x8c, 0xe3, 0x25, 0x9e, 0x89, 0x9c, 0x8c, 0xe3, 
+0x99, 0x89, 0x66, 0x6c, 0xd3, 0x92, 0x1c, 0x47, 
+0x96, 0x45, 0x8b, 0xa4, 0x24, 0xd2, 0x22, 0x5b, 
+0x5c, 0x9b, 0xcd, 0xee, 0xae, 0xea, 0xae, 0xaa, 
+0x3c, 0x54, 0x57, 0xb3, 0xba, 0xd9, 0x1b, 0x4d, 
+0xc9, 0x76, 0x90, 0x03, 0x1c, 0x54, 0x2f, 0xb7, 
+0xaa, 0xee, 0xf9, 0xee, 0x77, 0xce, 0xdd, 0xce, 
+0x15, 0x9e, 0xe7, 0x71, 0x27, 0x45, 0x08, 0x21, 
+0x1a, 0xfd, 0x55, 0xe7, 0xb7, 0x0d, 0x95, 0xf1, 
+0xee, 0x70, 0x05, 0xd5, 0x3b, 0xf1, 0xd0, 0x1a, 
+0xa3, 0x45, 0x83, 0x6b, 0x23, 0xf1, 0xc2, 0xd7, 
+0x5a, 0xfc, 0x6e, 0x37, 0x20, 0xe2, 0x76, 0x3d, 
+0xaf, 0x8e, 0xd1, 0xa2, 0xe6, 0xb3, 0xac, 0xf3, 
+0x5b, 0x58, 0xc2, 0x86, 0x37, 0x53, 0xbf, 0xd0, 
+0x6d, 0xaa, 0xf8, 0x96, 0x19, 0xd0, 0xc0, 0x70, 
+0x19, 0xba, 0xd6, 0x53, 0x41, 0x35, 0x08, 0x81, 
+0x31, 0x6e, 0xf9, 0xb3, 0xdb, 0x40, 0x2b, 0x40, 
+0x04, 0xaf, 0xdd, 0x2a, 0x10, 0x5b, 0x02, 0x20, 
+0x64, 0x7c, 0xad, 0xd1, 0x4a, 0x48, 0xd5, 0xb2, 
+0x2a, 0x35, 0x5a, 0xcb, 0x82, 0xb0, 0xa1, 0x25, 
+0xc0, 0xa9, 0x73, 0x75, 0xa8, 0x01, 0x63, 0xab, 
+0x40, 0x7c, 0x21, 0x17, 0xa8, 0x31, 0xbc, 0xd6, 
+0x68, 0x15, 0xd0, 0x42, 0xaa, 0x97, 0x35, 0xf8, 
+0x1e, 0x00, 0x12, 0x66, 0x42, 0xd0, 0xea, 0x81, 
+0xb1, 0xc5, 0xb2, 0xda, 0x35, 0xd7, 0x40, 0xeb, 
+0x81, 0xf1, 0x85, 0x40, 0xd8, 0x34, 0x03, 0x42, 
+0xc6, 0x07, 0x06, 0x84, 0x5b, 0x59, 0x07, 0x22, 
+0x65, 0x35, 0xca, 0x6a, 0x86, 0xbe, 0x07, 0x60, 
+0x04, 0x8c, 0x08, 0x00, 0x08, 0xb7, 0x7c, 0x60, 
+0xb0, 0x55, 0xd6, 0x02, 0x90, 0x2f, 0x5f, 0x0b, 
+0xe5, 0xdf, 0x02, 0x40, 0x02, 0x66, 0xb8, 0x94, 
+0xd9, 0xb0, 0x59, 0x10, 0x36, 0x05, 0x40, 0xd9, 
+0xf8, 0x40, 0x83, 0x16, 0x0f, 0x5a, 0x39, 0x30, 
+0x38, 0x0a, 0xc4, 0x42, 0x1a, 0x05, 0xa2, 0x7d, 
+0x7d, 0x7d, 0xdb, 0xb6, 0x6d, 0xdb, 0xb6, 0xdf, 
+0x30, 0x8c, 0x2e, 0xc3, 0x30, 0x3a, 0x75, 0x5d, 
+0x4f, 0xea, 0xba, 0x9e, 0x94, 0x52, 0x6a, 0xb6, 
+0x6d, 0xaf, 0xda, 0xb6, 0x9d, 0xb1, 0x2c, 0x6b, 
+0xd9, 0xb2, 0xac, 0xa5, 0xe5, 0xe5, 0xe5, 0xe9, 
+0xab, 0x57, 0xaf, 0x7e, 0xe2, 0xba, 0xee, 0x1a, 
+0x90, 0x03, 0xd6, 0x42, 0x9a, 0x0b, 0x01, 0x62, 
+0xd5, 0x02, 0xb1, 0x59, 0x97, 0x68, 0xdb, 0x05, 
+0x42, 0xc6, 0x07, 0x74, 0x0f, 0x5a, 0x3c, 0x68, 
+0xe5, 0x18, 0x90, 0x28, 0x6b, 0x12, 0x48, 0x8c, 
+0x8c, 0x8c, 0xec, 0x1b, 0x1e, 0x1e, 0x3e, 0xda, 
+0xd3, 0xd3, 0x73, 0x30, 0x1a, 0x8d, 0xf6, 0xb7, 
+0xf5, 0xa2, 0xb2, 0x94, 0x4a, 0xa5, 0xdc, 0xd2, 
+0xd2, 0xd2, 0xa7, 0xb3, 0xb3, 0xb3, 0xe7, 0xc7, 
+0xc7, 0xc7, 0x2f, 0x58, 0x96, 0xb5, 0x00, 0x64, 
+0x80, 0xd5, 0xb2, 0x66, 0x59, 0x07, 0x23, 0x60, 
+0x44, 0xd8, 0x2d, 0xda, 0x02, 0xa1, 0x2d, 0x00, 
+0xea, 0x18, 0xaf, 0xe1, 0xd3, 0xda, 0x04, 0xe2, 
+0x65, 0xa3, 0x3b, 0x81, 0x0e, 0xa0, 0xeb, 0xf0, 
+0xe1, 0xc3, 0x8f, 0xec, 0xd9, 0xb3, 0xe7, 0xb4, 
+0x61, 0x18, 0xdd, 0xc1, 0x33, 0x94, 0xa2, 0x4a, 
+0x2a, 0xdd, 0x85, 0x91, 0x35, 0xd1, 0x0b, 0x3a, 
+0x9a, 0xa5, 0xa3, 0x17, 0x22, 0x48, 0x47, 0x52, 
+0x34, 0x6c, 0xec, 0x88, 0x8d, 0x6d, 0x58, 0xd8, 
+0xa6, 0xc5, 0x72, 0xdf, 0x12, 0x85, 0x58, 0xbe, 
+0xf2, 0x7e, 0xd7, 0x75, 0x8b, 0x37, 0x6f, 0xde, 
+0xfc, 0xf5, 0xd8, 0xd8, 0xd8, 0xeb, 0xab, 0xab, 
+0xab, 0x9f, 0x03, 0x4b, 0xc0, 0x4a, 0x08, 0x90, 
+0x1c, 0xeb, 0xae, 0x51, 0xda, 0x0c, 0x08, 0x2d, 
+0x01, 0xa8, 0x31, 0x3e, 0x08, 0x70, 0x06, 0xeb, 
+0x2d, 0xde, 0x01, 0x74, 0x01, 0x5d, 0xfb, 0xf7, 
+0xef, 0x7f, 0xe0, 0xc0, 0x81, 0x03, 0xdf, 0x8e, 
+0xc5, 0x62, 0x83, 0x00, 0x5a, 0x41, 0x27, 0x35, 
+0xdb, 0x45, 0xea, 0xf3, 0x1e, 0x92, 0xf3, 0x1d, 
+0x08, 0xb7, 0xd5, 0x18, 0x68, 0x5d, 0xf2, 0x89, 
+0x1c, 0x4b, 0x43, 0x0b, 0x2c, 0x0d, 0x2e, 0xb0, 
+0xd6, 0x99, 0x05, 0xc0, 0x71, 0x1c, 0xeb, 0xc6, 
+0x8d, 0x1b, 0x3f, 0x7f, 0xff, 0xfd, 0xf7, 0xdf, 
+0xb4, 0x2c, 0x6b, 0x0e, 0x58, 0x2c, 0x83, 0x91, 
+0xc1, 0x77, 0x8f, 0x7c, 0x19, 0x88, 0xb6, 0x41, 
+0x68, 0x0a, 0x40, 0x03, 0xe3, 0x03, 0xba, 0x77, 
+0x00, 0x29, 0xa0, 0xa7, 0xa3, 0xa3, 0x63, 0xe7, 
+0xa3, 0x8f, 0x3e, 0xfa, 0x5c, 0x67, 0x67, 0xe7, 
+0x5e, 0xdf, 0x70, 0x8d, 0xc1, 0x4f, 0xb6, 0xd3, 
+0x7d, 0xbd, 0x17, 0xe1, 0xb5, 0x6f, 0x74, 0x23, 
+0xc9, 0x75, 0xac, 0x31, 0x73, 0xf7, 0x75, 0x56, 
+0x7b, 0x33, 0x00, 0x14, 0x8b, 0xc5, 0xd5, 0x8b, 
+0x17, 0x2f, 0x9e, 0xb9, 0x74, 0xe9, 0xd2, 0x39, 
+0x60, 0x1e, 0x58, 0xc0, 0x67, 0x44, 0x98, 0x0d, 
+0x6d, 0x81, 0xd0, 0x10, 0x80, 0x3a, 0xb4, 0xd7, 
+0x59, 0xa7, 0x7c, 0x27, 0xd0, 0x0d, 0xf4, 0x8e, 
+0x8c, 0x8c, 0x8c, 0x9e, 0x38, 0x71, 0xe2, 0x79, 
+0xc3, 0x30, 0x3a, 0x65, 0x49, 0xd2, 0x3b, 0x3e, 
+0x48, 0xef, 0x67, 0xfd, 0x48, 0x47, 0x6e, 0xd9, 
+0xf0, 0x5a, 0x59, 0xed, 0x5f, 0xe1, 0xe6, 0xc1, 
+0x69, 0x0a, 0xc9, 0x3c, 0x80, 0x7b, 0xe5, 0xca, 
+0x95, 0x37, 0xcf, 0x9d, 0x3b, 0xf7, 0x2a, 0x90, 
+0xc6, 0x07, 0x62, 0x89, 0x8d, 0x20, 0x38, 0xf8, 
+0xf6, 0xb7, 0x0f, 0x40, 0x4d, 0x57, 0x57, 0xcf, 
+0xf8, 0x5e, 0xa0, 0x6f, 0x74, 0x74, 0xf4, 0xb1, 
+0xd1, 0xd1, 0xd1, 0xef, 0x29, 0x8a, 0xa2, 0x9b, 
+0x4b, 0x51, 0x86, 0x7f, 0xb3, 0x13, 0xb5, 0xa0, 
+0xdd, 0x3e, 0x8b, 0xeb, 0xd6, 0x18, 0x6e, 0xed, 
+0x9f, 0xe5, 0xd6, 0xbe, 0x39, 0x00, 0xe6, 0xe6, 
+0xe6, 0xc6, 0xce, 0x9e, 0x3d, 0xfb, 0x62, 0xb1, 
+0x58, 0xfc, 0x1c, 0xb8, 0x85, 0xef, 0x16, 0x19, 
+0x36, 0x32, 0xa1, 0x2e, 0x08, 0xcd, 0x00, 0x08, 
+0xba, 0xba, 0x80, 0xf6, 0x71, 0xca, 0x94, 0x07, 
+0x06, 0x1e, 0x7c, 0xf0, 0xc1, 0xa7, 0xf7, 0xee, 
+0xdd, 0xfb, 0x94, 0x10, 0x42, 0x24, 0x6f, 0x74, 
+0xd2, 0x7f, 0x7e, 0x68, 0x53, 0x3e, 0xbe, 0x55, 
+0x59, 0x1d, 0xca, 0x30, 0x7b, 0xdf, 0x0c, 0x9e, 
+0xe2, 0x92, 0xc9, 0x64, 0x26, 0x5f, 0x7f, 0xfd, 
+0xf5, 0xbf, 0xb2, 0x2c, 0x6b, 0x1a, 0x9f, 0x0d, 
+0x61, 0x10, 0x2a, 0x81, 0xb1, 0x2d, 0x00, 0x6a, 
+0xa8, 0x1f, 0x44, 0xfb, 0x70, 0xcb, 0x0f, 0xdc, 
+0x73, 0xcf, 0x3d, 0xa7, 0xee, 0xbf, 0xff, 0xfe, 
+0xe7, 0x00, 0xd1, 0xfd, 0x71, 0x2f, 0x1d, 0x9f, 
+0x75, 0xdd, 0x31, 0x43, 0x9b, 0x89, 0xdd, 0x61, 
+0x31, 0xfb, 0xc0, 0x34, 0x25, 0xb3, 0x44, 0x3a, 
+0x9d, 0xbe, 0xf8, 0xda, 0x6b, 0xaf, 0xfd, 0x2d, 
+0xf0, 0x39, 0xeb, 0x20, 0xac, 0xe2, 0x07, 0xc6, 
+0x4a, 0x17, 0x59, 0x0b, 0x42, 0x95, 0xa3, 0xd6, 
+0x0c, 0x71, 0x83, 0xbe, 0x3e, 0x88, 0xf8, 0x1d, 
+0x40, 0xf7, 0xf0, 0xf0, 0xf0, 0xc1, 0x63, 0xc7, 
+0x8e, 0x3d, 0x2b, 0x84, 0x10, 0xa9, 0xcb, 0xdd, 
+0xc4, 0xaf, 0x76, 0xe0, 0x08, 0xe7, 0x2b, 0x51, 
+0x25, 0xa3, 0xd2, 0x77, 0x6e, 0x08, 0xe9, 0x28, 
+0xf4, 0xf7, 0xf7, 0x8f, 0x9e, 0x3c, 0x79, 0xf2, 
+0xf7, 0xf0, 0x1b, 0x29, 0x85, 0xdf, 0x43, 0x99, 
+0xf8, 0xee, 0x5b, 0x19, 0x75, 0xd6, 0xae, 0x4f, 
+0xd4, 0x1b, 0x09, 0xd6, 0x0b, 0x7c, 0x09, 0x20, 
+0x95, 0x4c, 0x26, 0x87, 0x4f, 0x9d, 0x3a, 0xf5, 
+0x47, 0x9a, 0xa6, 0x45, 0xcc, 0x99, 0x28, 0xf1, 
+0xf1, 0x0e, 0x5c, 0xe9, 0x6e, 0xbe, 0xe9, 0x6e, 
+0xa3, 0x28, 0x6b, 0x2a, 0xdd, 0x1f, 0xf6, 0xb1, 
+0x78, 0x7f, 0x9a, 0xbd, 0x7b, 0xf7, 0xfe, 0xd6, 
+0xca, 0xca, 0xca, 0xcc, 0xf9, 0xf3, 0xe7, 0xff, 
+0x8d, 0xfa, 0x23, 0xc5, 0xaa, 0x29, 0x35, 0x34, 
+0x07, 0x40, 0xc5, 0xa7, 0x7f, 0x0c, 0x7f, 0x64, 
+0xd7, 0xf5, 0xd8, 0x63, 0x8f, 0x3d, 0x1b, 0x8d, 
+0x46, 0xbb, 0xd5, 0x15, 0x8d, 0xc4, 0x85, 0x14, 
+0x8e, 0x74, 0xee, 0x9c, 0x65, 0x9b, 0x10, 0x2d, 
+0xad, 0x93, 0xb8, 0xdc, 0x41, 0xf6, 0x1b, 0x19, 
+0x71, 0xf4, 0xbe, 0xa3, 0xcf, 0x4c, 0x4c, 0x4c, 
+0x5c, 0x5e, 0x59, 0x59, 0xc9, 0x51, 0x3d, 0x77, 
+0x08, 0x82, 0xa1, 0x08, 0xcf, 0x19, 0x2a, 0x2e, 
+0xd0, 0xaa, 0xdb, 0xdb, 0xb3, 0x67, 0xcf, 0xdd, 
+0xfd, 0xfd, 0xfd, 0xa3, 0xc2, 0x13, 0x24, 0x3e, 
+0xe8, 0xc4, 0x73, 0x5d, 0x5c, 0xe1, 0x7c, 0x6d, 
+0xd4, 0xf8, 0x2c, 0x8a, 0xbe, 0x10, 0x41, 0xd5, 
+0xd4, 0xc8, 0x43, 0x0f, 0x3d, 0xf4, 0x14, 0xeb, 
+0x6e, 0x10, 0xc5, 0x6f, 0xc8, 0xf0, 0x0c, 0xb4, 
+0x22, 0xb5, 0x9d, 0x75, 0xb8, 0xf5, 0xab, 0x00, 
+0x38, 0x76, 0xec, 0xd8, 0xef, 0x2a, 0x8a, 0x22, 
+0x8c, 0xeb, 0x51, 0xc8, 0x0b, 0x1c, 0xe9, 0xb6, 
+0x54, 0x4f, 0x87, 0x81, 0xd1, 0x01, 0xf4, 0x54, 
+0xa4, 0xad, 0xf2, 0x5b, 0x55, 0xe3, 0x93, 0x18, 
+0x52, 0x4a, 0x46, 0x46, 0x46, 0x1e, 0x18, 0x1a, 
+0x1a, 0xda, 0x8d, 0xcf, 0xdc, 0x58, 0x19, 0x00, 
+0x8d, 0x3a, 0xb1, 0x40, 0xad, 0x69, 0xfd, 0x5a, 
+0xfa, 0x47, 0x81, 0xe4, 0xa1, 0x43, 0x87, 0xee, 
+0xeb, 0xe9, 0xe9, 0xb9, 0x4b, 0x14, 0x05, 0xda, 
+0x95, 0x08, 0xae, 0xa8, 0x4f, 0x7d, 0x21, 0x05, 
+0xfd, 0x7b, 0xfb, 0xd8, 0x75, 0x7c, 0x27, 0xbb, 
+0xee, 0xdf, 0xc9, 0xf0, 0x91, 0xed, 0x28, 0x9a, 
+0xca, 0x5b, 0x7f, 0xf9, 0x53, 0xce, 0xff, 0xe4, 
+0x62, 0x3b, 0x6c, 0xf6, 0xd7, 0x00, 0xc3, 0x6d, 
+0xe4, 0x41, 0xdb, 0x13, 0xb6, 0x15, 0x81, 0x36, 
+0xa3, 0x53, 0xda, 0x5e, 0x54, 0xbe, 0xf9, 0xcd, 
+0x6f, 0x3e, 0xf5, 0xca, 0x2b, 0xaf, 0x4c, 0xe0, 
+0x8f, 0x10, 0xb3, 0xac, 0x4f, 0x9a, 0x82, 0x09, 
+0x13, 0x15, 0x00, 0x42, 0x12, 0x9e, 0xec, 0x54, 
+0xc6, 0xfb, 0xa3, 0xa3, 0xa3, 0xbf, 0x2d, 0xa5, 
+0x44, 0xb9, 0xaa, 0xe3, 0x96, 0x3c, 0x90, 0xeb, 
+0x15, 0x4a, 0x6d, 0xeb, 0x64, 0x78, 0x74, 0x3b, 
+0x3b, 0xee, 0x1d, 0x61, 0xd7, 0xb1, 0x9d, 0x24, 
+0x7a, 0xe3, 0x68, 0x86, 0x86, 0x66, 0x68, 0x08, 
+0x29, 0x70, 0x8a, 0x0e, 0x7b, 0x1e, 0xd9, 0xc3, 
+0x07, 0xff, 0x72, 0xbe, 0x2d, 0x23, 0x54, 0x5d, 
+0x45, 0x8d, 0xd4, 0x54, 0xcb, 0xf3, 0x28, 0x16, 
+0x4a, 0x38, 0xa5, 0xd6, 0x31, 0x47, 0xb9, 0x1c, 
+0xc1, 0xdd, 0xe6, 0x30, 0x38, 0x38, 0x38, 0xba, 
+0x6d, 0xdb, 0xb6, 0x9d, 0x33, 0x33, 0x33, 0xc1, 
+0xc4, 0x49, 0x67, 0x7d, 0x60, 0x14, 0x2c, 0xc2, 
+0x54, 0x01, 0x10, 0x1e, 0xfc, 0x04, 0x0b, 0x1b, 
+0xd1, 0x54, 0x2a, 0xd5, 0xdf, 0xd5, 0xd5, 0xb5, 
+0x13, 0x17, 0xc4, 0x35, 0xb9, 0xa1, 0xf5, 0x85, 
+0x2e, 0xd8, 0x7d, 0x62, 0x17, 0x3b, 0x0e, 0x8f, 
+0xa0, 0x99, 0x9a, 0xdf, 0x5a, 0x3e, 0xc9, 0x90, 
+0xaa, 0xc4, 0x75, 0x3d, 0x76, 0x1f, 0xdf, 0x89, 
+0xd0, 0x68, 0xcb, 0x00, 0xbb, 0xe8, 0xe0, 0x78, 
+0x25, 0xcc, 0x0e, 0x13, 0x45, 0x53, 0xd6, 0x81, 
+0x89, 0x29, 0xe4, 0x96, 0xf3, 0x94, 0xec, 0x52, 
+0xf3, 0x07, 0x14, 0x40, 0xa6, 0x15, 0xbc, 0x21, 
+0x57, 0x1c, 0x38, 0x70, 0xe0, 0xf8, 0xcc, 0xcc, 
+0xcc, 0x15, 0xaa, 0xbb, 0xc3, 0xca, 0x4a, 0x94, 
+0x10, 0xa2, 0x2a, 0x06, 0xd4, 0x4e, 0x77, 0x0d, 
+0x20, 0x7a, 0xe8, 0xd0, 0xa1, 0xa3, 0x52, 0x4a, 
+0x21, 0x16, 0x15, 0x1c, 0xc7, 0xc1, 0x91, 0xd5, 
+0x3a, 0x77, 0x7d, 0x8e, 0x7f, 0xfa, 0xf3, 0x7f, 
+0xe6, 0x8d, 0xbf, 0xfe, 0x57, 0x56, 0xe6, 0x56, 
+0x70, 0x4a, 0x0e, 0x45, 0xab, 0x84, 0x9d, 0xb7, 
+0xb0, 0xb2, 0x16, 0xc5, 0x82, 0x8d, 0xa2, 0x2b, 
+0x0c, 0x8d, 0x0e, 0x6e, 0xb8, 0xb7, 0x91, 0xda, 
+0xae, 0x4d, 0x66, 0x39, 0x03, 0x3a, 0x68, 0x49, 
+0x0d, 0x2d, 0xa1, 0xa2, 0x25, 0x35, 0xe2, 0x83, 
+0x71, 0x3c, 0xcd, 0x6b, 0x79, 0x3f, 0x73, 0x02, 
+0x29, 0x25, 0xc3, 0xc3, 0xc3, 0xf7, 0xe0, 0xb3, 
+0x38, 0x00, 0x60, 0x43, 0x20, 0x94, 0x0d, 0xfc, 
+0x3f, 0x00, 0xc0, 0x1c, 0x1e, 0x1e, 0xbe, 0x47, 
+0x08, 0x81, 0x37, 0xeb, 0xe1, 0x0a, 0xb7, 0xa1, 
+0x5e, 0xfa, 0xc5, 0x27, 0xfc, 0xe8, 0xfb, 0x2f, 
+0xb2, 0x3c, 0xb7, 0x82, 0x9d, 0xb7, 0xb1, 0x72, 
+0x36, 0x85, 0x35, 0x0b, 0x3b, 0x67, 0x63, 0xe7, 
+0x6d, 0x76, 0xdc, 0x3b, 0xd2, 0xf4, 0xfe, 0x5a, 
+0x75, 0x70, 0x58, 0x9c, 0x5d, 0x44, 0xa8, 0xa0, 
+0xc5, 0x75, 0xf4, 0xb8, 0x8e, 0xd1, 0x11, 0xa1, 
+0x63, 0x5b, 0x47, 0xeb, 0x7b, 0xe7, 0x3c, 0x84, 
+0x27, 0x48, 0xa5, 0x52, 0x23, 0xa9, 0x54, 0xaa, 
+0x87, 0xf5, 0xe5, 0xb8, 0x00, 0x80, 0x0a, 0x08, 
+0xcd, 0x18, 0xa0, 0x9b, 0xa6, 0x99, 0xec, 0xeb, 
+0xed, 0xdb, 0x23, 0xa5, 0xa4, 0x94, 0x76, 0x5b, 
+0x22, 0xdf, 0xbd, 0xab, 0x0b, 0x45, 0x57, 0xb0, 
+0x72, 0x16, 0x85, 0xb5, 0x82, 0xaf, 0xb9, 0x02, 
+0x56, 0xde, 0x66, 0xf8, 0xd0, 0xf6, 0xb6, 0x19, 
+0x10, 0x68, 0xd1, 0x2b, 0x72, 0xf3, 0xda, 0x2c, 
+0x42, 0x17, 0x68, 0x09, 0x0d, 0x2d, 0xa1, 0x91, 
+0x18, 0x88, 0xa3, 0xc6, 0xd5, 0xe6, 0xf7, 0xba, 
+0x0e, 0xde, 0x22, 0x48, 0x29, 0xc5, 0xe1, 0xc3, 
+0x87, 0xef, 0xc5, 0x77, 0xe7, 0xfa, 0x0c, 0x08, 
+0x19, 0x1f, 0x8e, 0x01, 0x2a, 0xa0, 0xef, 0xda, 
+0xb5, 0x6b, 0x44, 0x51, 0x15, 0xcd, 0xcb, 0x7a, 
+0x38, 0x96, 0xd3, 0x12, 0xf9, 0xbb, 0x1f, 0x3b, 
+0x58, 0x65, 0xfc, 0x6b, 0x7f, 0xf3, 0x06, 0xd7, 
+0x2f, 0x4d, 0x53, 0xc8, 0x15, 0x48, 0xf6, 0x25, 
+0x31, 0x53, 0xe6, 0xa6, 0x58, 0xe0, 0x0a, 0x17, 
+0xbb, 0x68, 0x33, 0xf3, 0xd9, 0x0c, 0x7a, 0xcc, 
+0x67, 0x81, 0x1e, 0xd7, 0xe9, 0x1a, 0x4e, 0xb5, 
+0x66, 0xc1, 0xbc, 0x8b, 0x10, 0x82, 0xde, 0xde, 
+0xde, 0x1d, 0xac, 0x77, 0x83, 0xb5, 0x8b, 0xb1, 
+0x75, 0x7b, 0x81, 0x8a, 0x1b, 0x74, 0x76, 0x76, 
+0xf6, 0x48, 0x29, 0x71, 0x2c, 0x17, 0xb7, 0xc5, 
+0xa8, 0x2f, 0xd1, 0x15, 0x67, 0x68, 0xdf, 0x20, 
+0x85, 0x7c, 0x01, 0x45, 0x55, 0x98, 0xbe, 0x3c, 
+0xcd, 0xf9, 0xff, 0x38, 0xcf, 0x85, 0x9f, 0x5f, 
+0xe0, 0xe0, 0xc3, 0x07, 0x79, 0xe0, 0xdb, 0xc7, 
+0xd9, 0x7e, 0x70, 0x88, 0x4f, 0xce, 0x5d, 0x6e, 
+0xfa, 0x9c, 0x7a, 0xb2, 0xb6, 0x96, 0xa5, 0x50, 
+0xc8, 0x93, 0xe8, 0x4e, 0xe0, 0xb9, 0x1e, 0x3d, 
+0x46, 0x37, 0xd3, 0x13, 0xd3, 0x78, 0x6e, 0xe3, 
+0xee, 0xd1, 0xb5, 0x24, 0x52, 0x4a, 0xa2, 0xd1, 
+0x68, 0x47, 0x23, 0xe3, 0x01, 0x51, 0xaf, 0x17, 
+0xa8, 0x2c, 0x7a, 0x26, 0x12, 0x89, 0x94, 0x10, 
+0x02, 0xb7, 0xe0, 0xe2, 0x34, 0xe8, 0xfb, 0x03, 
+0x19, 0xdc, 0x37, 0x88, 0x55, 0xb0, 0x28, 0x95, 
+0x4a, 0x48, 0x45, 0xf2, 0x9b, 0xb7, 0xde, 0xab, 
+0xdc, 0x73, 0xf1, 0x17, 0x17, 0xb9, 0xfc, 0xc1, 
+0x65, 0x7a, 0x47, 0x7a, 0x5b, 0x3e, 0xa7, 0x91, 
+0x2c, 0xa4, 0x17, 0xe8, 0xde, 0xd1, 0x8d, 0xe7, 
+0xb8, 0x38, 0x8e, 0x82, 0x1a, 0x55, 0x29, 0xac, 
+0x15, 0x1a, 0x96, 0x2f, 0x59, 0x02, 0x21, 0x04, 
+0xa6, 0x69, 0x26, 0x43, 0xc6, 0xd7, 0xee, 0x4c, 
+0x55, 0x18, 0x50, 0xbb, 0xc3, 0x23, 0x01, 0x25, 
+0x1e, 0x8f, 0x77, 0x48, 0x29, 0x71, 0x6d, 0xb7, 
+0xe5, 0xa4, 0xc7, 0xec, 0x34, 0xc9, 0xe7, 0x0a, 
+0xa8, 0x9a, 0x82, 0xeb, 0x7a, 0xdc, 0x98, 0x98, 
+0xc6, 0x0b, 0x8d, 0x17, 0xf2, 0x56, 0x9e, 0xeb, 
+0xe3, 0xd7, 0x37, 0x8e, 0x3d, 0xdb, 0x14, 0xab, 
+0x68, 0x13, 0x89, 0x47, 0x70, 0x1d, 0x17, 0xd7, 
+0x71, 0x89, 0x24, 0x74, 0x72, 0xf9, 0x5c, 0xc3, 
+0xf2, 0x25, 0xcb, 0x41, 0x4a, 0x19, 0x00, 0x50, 
+0xd5, 0xfd, 0x85, 0xcb, 0xa9, 0x54, 0x1b, 0x5f, 
+0xa5, 0xf1, 0x78, 0xbc, 0x43, 0x08, 0xe1, 0x0f, 
+0x42, 0x5a, 0xb4, 0x9c, 0x1e, 0xd3, 0x29, 0xe4, 
+0xf3, 0x48, 0x5b, 0x61, 0x29, 0xbd, 0x44, 0xc9, 
+0x2b, 0xb5, 0xde, 0x07, 0xde, 0x84, 0xd8, 0x25, 
+0x8b, 0x48, 0x4c, 0xc7, 0x75, 0x5c, 0x1c, 0xc7, 
+0x45, 0x8b, 0x69, 0x4d, 0xeb, 0xe4, 0x5a, 0x7e, 
+0x0c, 0x30, 0x0c, 0x23, 0x46, 0x4d, 0xe4, 0x0f, 
+0x4b, 0xd3, 0x8d, 0x11, 0x21, 0xfc, 0xfe, 0x54, 
+0x4a, 0x89, 0x90, 0xcd, 0xad, 0x51, 0x75, 0x95, 
+0x42, 0xae, 0x80, 0x54, 0x14, 0x96, 0xe7, 0x97, 
+0x5b, 0x96, 0xdf, 0xac, 0x74, 0xf6, 0x76, 0x62, 
+0xc4, 0x4d, 0xdc, 0x92, 0x83, 0xe3, 0xb8, 0x14, 
+0xf2, 0x56, 0xd3, 0x77, 0x08, 0xe9, 0xd7, 0xbd, 
+0xd5, 0x30, 0x5a, 0xa5, 0xc9, 0xb6, 0x74, 0x2e, 
+0x97, 0x5b, 0x11, 0x42, 0xa0, 0xc5, 0x54, 0xa4, 
+0xd2, 0x9c, 0xbb, 0xd9, 0xe5, 0x2c, 0x9a, 0xae, 
+0x21, 0x15, 0x89, 0xa2, 0x28, 0x2d, 0xcb, 0x6f, 
+0x56, 0xfa, 0x77, 0xf4, 0x63, 0xc6, 0x4c, 0x5c, 
+0xc7, 0xc1, 0x29, 0x39, 0xe4, 0xb2, 0xb9, 0xa6, 
+0xef, 0x50, 0xa3, 0x0a, 0x42, 0x08, 0x2c, 0xcb, 
+0x5a, 0xa3, 0x66, 0x0f, 0xb1, 0xaa, 0x5c, 0xf9, 
+0x1a, 0x06, 0x21, 0x28, 0xec, 0x54, 0x00, 0x30, 
+0x35, 0x14, 0xa9, 0xd4, 0xde, 0x5b, 0x25, 0x6b, 
+0x2b, 0x39, 0x62, 0x49, 0x7f, 0x36, 0xa6, 0xe9, 
+0xad, 0xcb, 0x37, 0x12, 0x33, 0x6e, 0x32, 0xbc, 
+0x77, 0x98, 0xf1, 0xf3, 0xe3, 0x95, 0xd6, 0x13, 
+0x42, 0xb0, 0xff, 0xbe, 0x7d, 0x44, 0xe3, 0x26, 
+0xa5, 0x92, 0x43, 0x66, 0x21, 0x83, 0x57, 0xf2, 
+0x9a, 0xbe, 0x43, 0x8b, 0xea, 0x01, 0x00, 0x19, 
+0x42, 0xfb, 0x87, 0x34, 0x59, 0x10, 0x09, 0xfe, 
+0xac, 0xec, 0xd2, 0xae, 0xae, 0xae, 0x2e, 0x4a, 
+0x29, 0xd1, 0x62, 0xad, 0x0d, 0xca, 0xad, 0xe4, 
+0xb0, 0x7b, 0xec, 0x8a, 0xbb, 0x74, 0xf5, 0x75, 
+0xb1, 0x32, 0xbf, 0xb2, 0x69, 0x00, 0xec, 0x9c, 
+0xcd, 0x83, 0xbf, 0x73, 0x82, 0xa3, 0x8f, 0xdf, 
+0xcb, 0x7f, 0xbe, 0xf2, 0x0b, 0x66, 0xa7, 0x66, 
+0xd9, 0x33, 0xba, 0x9b, 0xfe, 0x91, 0x7e, 0xdf, 
+0xff, 0x4b, 0x0e, 0x97, 0xce, 0x5d, 0x6a, 0x59, 
+0x1f, 0x3d, 0xaa, 0x21, 0xa5, 0xc4, 0xb6, 0xed, 
+0x0c, 0xd5, 0x9b, 0xa8, 0x55, 0x40, 0xd4, 0xc6, 
+0x80, 0xaa, 0x5d, 0xda, 0xa5, 0xa5, 0xa5, 0x05, 
+0x21, 0x04, 0x6a, 0x54, 0x45, 0x51, 0x9a, 0xbf, 
+0x70, 0x25, 0xbd, 0x42, 0xcf, 0x50, 0x0f, 0x8a, 
+0x22, 0x11, 0x52, 0xd2, 0xb7, 0xbd, 0x97, 0xb5, 
+0xe5, 0xb5, 0xb6, 0xa7, 0xb2, 0x61, 0x99, 0x9d, 
+0x9a, 0x63, 0xf4, 0x91, 0x43, 0x3c, 0xfb, 0x67, 
+0xcf, 0x70, 0xf9, 0xbd, 0xcb, 0xa4, 0xfa, 0x53, 
+0x98, 0x31, 0x03, 0xc7, 0x71, 0x29, 0x5a, 0x45, 
+0xae, 0x7c, 0x70, 0xa5, 0x65, 0x7d, 0xb4, 0x98, 
+0x86, 0x10, 0x82, 0x5c, 0x2e, 0xb7, 0xc2, 0xfa, 
+0x8a, 0x50, 0xed, 0xb2, 0x98, 0x17, 0x76, 0x81, 
+0x40, 0x83, 0x3d, 0x7a, 0x7b, 0x62, 0x62, 0xe2, 
+0xba, 0xe7, 0x79, 0x45, 0x3d, 0xa9, 0x69, 0x6a, 
+0x54, 0xc5, 0x2d, 0x34, 0xee, 0x0a, 0x9d, 0x92, 
+0xc3, 0x72, 0x7a, 0x99, 0x44, 0x67, 0x1c, 0x21, 
+0x05, 0x9a, 0xae, 0x31, 0xb0, 0x73, 0x80, 0xb9, 
+0x6b, 0x73, 0x9b, 0x06, 0x60, 0xfa, 0xd3, 0x69, 
+0x8e, 0x9f, 0x3e, 0x86, 0xa2, 0x48, 0x8e, 0x7c, 
+0xeb, 0x08, 0x40, 0xa5, 0xf5, 0x3f, 0xbb, 0x70, 
+0x95, 0x5c, 0x26, 0x8f, 0x94, 0xcd, 0x63, 0x8c, 
+0xd1, 0x17, 0x41, 0x4a, 0xc9, 0xad, 0x5b, 0xb7, 
+0xae, 0xb1, 0x71, 0x3b, 0xbd, 0x2e, 0x03, 0xc2, 
+0xf4, 0x2f, 0x02, 0x76, 0x36, 0x9b, 0xcd, 0xdc, 
+0xba, 0x75, 0xeb, 0xea, 0xe0, 0xe0, 0xe0, 0xfe, 
+0xe8, 0xa0, 0x49, 0xfe, 0x7a, 0xe3, 0x81, 0x07, 
+0x40, 0x66, 0x3e, 0x43, 0xc4, 0xd0, 0x2b, 0x6e, 
+0x60, 0xc6, 0x4d, 0xba, 0x07, 0xba, 0x58, 0xbe, 
+0xb5, 0x39, 0x57, 0x98, 0xbe, 0x32, 0x83, 0xaa, 
+0xa9, 0x68, 0x11, 0x0d, 0x59, 0x8e, 0xf4, 0xae, 
+0xe3, 0xfa, 0xfe, 0x3f, 0x9f, 0x69, 0xd9, 0xfa, 
+0x42, 0x15, 0x18, 0x3d, 0x11, 0x3c, 0x3c, 0xf7, 
+0xbd, 0xf7, 0xde, 0x1b, 0xc3, 0x5f, 0x1b, 0x0c, 
+0xaf, 0x0b, 0x56, 0x68, 0x29, 0xcb, 0x8b, 0x83, 
+0x61, 0xff, 0x0f, 0x92, 0x14, 0x0a, 0x40, 0x7e, 
+0x72, 0x72, 0xf2, 0x23, 0x29, 0x25, 0xe6, 0x80, 
+0x81, 0x22, 0x95, 0xa6, 0xea, 0x16, 0x5d, 0x32, 
+0xb7, 0x56, 0x29, 0x16, 0x8a, 0x14, 0x0b, 0x25, 
+0x4a, 0xf9, 0x22, 0x66, 0x2c, 0x4a, 0xa2, 0x33, 
+0xd1, 0xf2, 0xde, 0xb0, 0x3a, 0xb6, 0xc3, 0xec, 
+0xe4, 0x2c, 0x11, 0x43, 0xc7, 0x88, 0x1a, 0x18, 
+0x51, 0x03, 0xdd, 0x8c, 0xa0, 0x47, 0x34, 0x4e, 
+0x7d, 0xe7, 0x51, 0xbe, 0xfb, 0x27, 0xdf, 0x61, 
+0x60, 0xc7, 0x40, 0xc3, 0xfb, 0xcd, 0x7e, 0x03, 
+0xa9, 0x48, 0x96, 0x96, 0x96, 0x6e, 0xcc, 0xcf, 
+0xcf, 0xcf, 0xd7, 0x01, 0xa0, 0x02, 0x42, 0x98, 
+0x47, 0x61, 0x06, 0xd8, 0xe5, 0x9b, 0x72, 0xef, 
+0xbf, 0xff, 0xfe, 0x07, 0x80, 0x1b, 0xe9, 0xd1, 
+0x51, 0x75, 0x05, 0x45, 0xca, 0xa6, 0x6a, 0xe7, 
+0x2c, 0x0a, 0xd9, 0x02, 0xc5, 0xbc, 0xed, 0x03, 
+0x91, 0xb7, 0x31, 0x0c, 0x9d, 0x78, 0x32, 0x86, 
+0xaa, 0xb4, 0xbe, 0x3f, 0xd0, 0xa9, 0xff, 0x9e, 
+0x42, 0x51, 0x15, 0x34, 0x43, 0x43, 0x37, 0x75, 
+0x34, 0x5d, 0x45, 0x51, 0xfd, 0x58, 0x34, 0x72, 
+0x60, 0x98, 0xef, 0xfe, 0xe9, 0xef, 0xf3, 0xad, 
+0x3f, 0x38, 0x89, 0x19, 0x33, 0x36, 0xdc, 0x6b, 
+0x0e, 0x44, 0x10, 0x42, 0x30, 0x35, 0x35, 0xf5, 
+0x11, 0xfe, 0xee, 0x50, 0x43, 0x06, 0xd4, 0xeb, 
+0x05, 0x02, 0x17, 0xb0, 0x80, 0x5c, 0x3a, 0x9d, 
+0x4e, 0x2f, 0x2e, 0x2e, 0x4e, 0xf5, 0xf6, 0xf6, 
+0xee, 0x8e, 0xed, 0x8c, 0x92, 0x9f, 0x6c, 0xee, 
+0x06, 0xe0, 0x47, 0x72, 0x57, 0x77, 0x91, 0x8a, 
+0xac, 0xe4, 0xf9, 0x09, 0x21, 0x30, 0x62, 0x06, 
+0x25, 0xab, 0x84, 0xeb, 0xb6, 0xde, 0x4b, 0x98, 
+0xfc, 0x68, 0x0a, 0xd7, 0xf5, 0x70, 0x4b, 0x2e, 
+0x42, 0x0a, 0x02, 0xa2, 0xe6, 0xb3, 0x79, 0x26, 
+0x3f, 0x9a, 0x64, 0xea, 0x7f, 0xae, 0x33, 0xfd, 
+0xe9, 0x34, 0x8e, 0xed, 0x54, 0xb9, 0x84, 0x34, 
+0x25, 0x91, 0x81, 0x08, 0x08, 0xbc, 0x0f, 0x3f, 
+0xfc, 0xf0, 0x3d, 0xea, 0xaf, 0x07, 0x7a, 0x94, 
+0xf7, 0x0a, 0xeb, 0xf5, 0x02, 0x01, 0x00, 0x05, 
+0xfc, 0x3d, 0xf7, 0xd5, 0x73, 0xe7, 0xce, 0xfd, 
+0xf4, 0xc9, 0x27, 0x9f, 0xfc, 0x63, 0x73, 0xb7, 
+0x81, 0x7d, 0xb3, 0x84, 0x67, 0xb7, 0x8e, 0xec, 
+0x6e, 0xc9, 0xc3, 0xad, 0xbb, 0x04, 0x26, 0x90, 
+0x6d, 0x8c, 0x11, 0x16, 0xa6, 0x17, 0x59, 0x4e, 
+0x2f, 0x63, 0xc4, 0x0c, 0xa6, 0x3f, 0x9d, 0x66, 
+0xf2, 0xa3, 0x29, 0xae, 0x7d, 0x7c, 0x8d, 0x5b, 
+0x37, 0xe6, 0xab, 0x7a, 0x96, 0xda, 0x67, 0xc5, 
+0xf6, 0x9a, 0x48, 0x45, 0x32, 0x35, 0x35, 0x75, 
+0x71, 0x72, 0x72, 0xf2, 0x1a, 0xeb, 0x79, 0x03, 
+0x8d, 0x19, 0xe0, 0x79, 0x5e, 0x90, 0x6e, 0x16, 
+0x8e, 0x03, 0x16, 0x3e, 0x7d, 0x32, 0xbf, 0xfc, 
+0xe5, 0x2f, 0xc7, 0x4e, 0x9c, 0x38, 0xf1, 0xd9, 
+0xc0, 0xc0, 0xc0, 0x5d, 0xb1, 0xbb, 0x4c, 0xf2, 
+0x9f, 0x5a, 0x2d, 0x0d, 0xb8, 0x1d, 0xf2, 0xf2, 
+0x5f, 0xfc, 0x23, 0xab, 0x8b, 0xab, 0xb8, 0xce, 
+0x3a, 0x63, 0x9a, 0x45, 0x7f, 0x25, 0xa9, 0x60, 
+0x0c, 0x45, 0x70, 0x5d, 0xd7, 0x79, 0xeb, 0xad, 
+0xb7, 0x5e, 0xc5, 0xdf, 0x20, 0xcd, 0xe2, 0x37, 
+0x66, 0x38, 0x85, 0x66, 0xfd, 0x79, 0x35, 0xcf, 
+0x08, 0x03, 0x60, 0xe3, 0x23, 0x97, 0x05, 0x96, 
+0xcf, 0x9e, 0x3d, 0xfb, 0x13, 0xc0, 0x33, 0x86, 
+0x23, 0x68, 0x71, 0x6d, 0x53, 0x41, 0xed, 0x8b, 
+0x6a, 0x76, 0x21, 0x8b, 0xf0, 0x44, 0xdb, 0xe5, 
+0xa3, 0x7b, 0x0d, 0x84, 0x10, 0x8c, 0x8f, 0x8f, 
+0xff, 0x7a, 0x62, 0x62, 0x62, 0x82, 0xea, 0x6d, 
+0xf2, 0x00, 0x80, 0x0a, 0xfd, 0xab, 0x00, 0x08, 
+0xf5, 0x06, 0xe1, 0x40, 0x58, 0x01, 0xe0, 0xc2, 
+0x85, 0x0b, 0x1f, 0xdf, 0xb8, 0x71, 0xe3, 0xa2, 
+0x54, 0x24, 0xf1, 0x43, 0x26, 0xaa, 0x2e, 0x51, 
+0x94, 0xaf, 0x8f, 0x9a, 0xbb, 0x23, 0xe8, 0xdd, 
+0x1a, 0xa5, 0x52, 0xa9, 0xf0, 0xea, 0xab, 0xaf, 
+0xbe, 0x4a, 0xfd, 0x64, 0x89, 0x0d, 0xf3, 0x81, 
+0x7a, 0x7c, 0xaa, 0x75, 0x83, 0xb5, 0x32, 0x92, 
+0x8b, 0x67, 0xce, 0x9c, 0xf9, 0xfb, 0xb5, 0xb5, 
+0xb5, 0x05, 0x25, 0xa9, 0x60, 0x7e, 0xc3, 0x44, 
+0x4a, 0xe5, 0x6b, 0xa1, 0x7a, 0xaf, 0x8e, 0xb1, 
+0x27, 0x02, 0xe0, 0x9d, 0x3d, 0x7b, 0xf6, 0xa5, 
+0x74, 0x3a, 0x7d, 0x1d, 0x58, 0x66, 0xe3, 0xf6, 
+0x78, 0x55, 0xeb, 0xb7, 0x02, 0x20, 0xcc, 0x82, 
+0x55, 0x60, 0x69, 0x7e, 0x7e, 0xfe, 0xc6, 0x4b, 
+0x2f, 0xbd, 0xf4, 0x77, 0x8e, 0xe3, 0x58, 0xfa, 
+0x80, 0x86, 0xb1, 0x2b, 0xf2, 0xa5, 0xb8, 0x42, 
+0x33, 0xd5, 0xe2, 0x2a, 0xe6, 0xdd, 0x11, 0xa4, 
+0x22, 0x19, 0x1b, 0x1b, 0xfb, 0xd9, 0xd9, 0xb3, 
+0x67, 0xdf, 0xa5, 0x49, 0x96, 0x48, 0xad, 0xb1, 
+0x5f, 0x28, 0x41, 0xe2, 0xf1, 0xc7, 0x1f, 0x3f, 
+0xf5, 0xe4, 0x93, 0x4f, 0x3e, 0x27, 0x84, 0x10, 
+0xc5, 0xab, 0x0e, 0xa5, 0xe9, 0xaf, 0x66, 0x97, 
+0x58, 0xc6, 0x05, 0xfa, 0xdd, 0x2a, 0x22, 0x22, 
+0x98, 0x9c, 0x9c, 0xbc, 0xf8, 0x83, 0x1f, 0xfc, 
+0x60, 0xd3, 0x09, 0x12, 0x1b, 0x16, 0x44, 0x42, 
+0x3d, 0x42, 0xe0, 0x06, 0xa2, 0xfc, 0x90, 0x60, 
+0xb5, 0x58, 0x79, 0xfb, 0xed, 0xb7, 0xdf, 0xed, 
+0xed, 0xed, 0xed, 0x79, 0xe8, 0xa1, 0x87, 0x9e, 
+0xd2, 0xef, 0x52, 0x85, 0x92, 0x90, 0x94, 0xc6, 
+0x9d, 0x9a, 0xf8, 0x7a, 0x67, 0x45, 0xf6, 0x48, 
+0xd4, 0x7d, 0x12, 0xa1, 0x08, 0xd2, 0xe9, 0xf4, 
+0xe4, 0x0b, 0x2f, 0xbc, 0xf0, 0x23, 0x36, 0xa6, 
+0xc7, 0x84, 0x13, 0xa5, 0xda, 0x4b, 0x91, 0x81, 
+0xf6, 0x93, 0xa4, 0x9e, 0x78, 0xe2, 0x89, 0xc7, 
+0x4e, 0x9f, 0x3e, 0xfd, 0x3d, 0x4d, 0xd3, 0x74, 
+0x6f, 0xd5, 0xa3, 0x74, 0xc9, 0xc1, 0xb3, 0x6f, 
+0xbb, 0xad, 0x1b, 0x44, 0xd9, 0x21, 0x51, 0x46, 
+0x7c, 0xef, 0x1d, 0x1f, 0x1f, 0x1f, 0xfb, 0xe1, 
+0x0f, 0x7f, 0xf8, 0xa2, 0x65, 0x59, 0xb7, 0x2f, 
+0x49, 0x0a, 0xda, 0x4f, 0x93, 0x3b, 0x72, 0xe4, 
+0xc8, 0xa1, 0x67, 0x9e, 0x79, 0xe6, 0xfb, 0xb1, 
+0x58, 0xac, 0x13, 0x07, 0xdc, 0x69, 0x0f, 0x77, 
+0xc6, 0xbb, 0x23, 0x6c, 0x10, 0x29, 0x81, 0xdc, 
+0x29, 0x10, 0x31, 0xf0, 0x3c, 0xcf, 0xfd, 0xd5, 
+0xaf, 0x7e, 0xf5, 0xe6, 0x99, 0x33, 0x67, 0x6e, 
+0x7f, 0x9a, 0x5c, 0xe5, 0xcf, 0x36, 0x13, 0x25, 
+0x07, 0x06, 0x06, 0x76, 0x3c, 0xff, 0xfc, 0xf3, 
+0x7f, 0xb8, 0x7d, 0xfb, 0xf6, 0xfd, 0x00, 0xd8, 
+0xe0, 0x5e, 0xf7, 0x70, 0xe7, 0xa8, 0x13, 0x76, 
+0xbe, 0x80, 0xe1, 0x71, 0x7c, 0xc3, 0x3b, 0xfd, 
+0xef, 0xb9, 0x5c, 0x6e, 0xe5, 0x8d, 0x37, 0xde, 
+0xf8, 0x87, 0xb7, 0xdf, 0x7e, 0xfb, 0xbf, 0xf0, 
+0x93, 0x24, 0x17, 0xf0, 0xa3, 0x7e, 0x90, 0x3f, 
+0xbc, 0xf5, 0x44, 0xc9, 0x4a, 0x81, 0xc6, 0xa9, 
+0xb2, 0x51, 0xfc, 0x04, 0x84, 0x4a, 0xaa, 0xec, 
+0xc9, 0x93, 0x27, 0x8f, 0x9e, 0x3e, 0x7d, 0xfa, 
+0xa9, 0xee, 0xee, 0xee, 0x6d, 0x00, 0x14, 0xc1, 
+0x5b, 0xf4, 0xab, 0xe7, 0xad, 0xb0, 0x39, 0x30, 
+0xa2, 0x20, 0xba, 0x7c, 0x25, 0xee, 0xff, 0x64, 
+0xdb, 0x76, 0x61, 0x6c, 0x6c, 0xec, 0xdf, 0x5f, 
+0x7e, 0xf9, 0xe5, 0xb7, 0x72, 0xb9, 0x5c, 0x90, 
+0x2a, 0xbb, 0x4c, 0xf5, 0x88, 0xef, 0xf6, 0xa5, 
+0xca, 0x36, 0x00, 0xa1, 0x51, 0xb2, 0x74, 0x07, 
+0xbe, 0x6b, 0xa4, 0x9e, 0x7e, 0xfa, 0xe9, 0x87, 
+0x1f, 0x7e, 0xf8, 0xe1, 0x27, 0x92, 0xc9, 0x64, 
+0x25, 0x59, 0x1a, 0xa7, 0x5c, 0x55, 0x0b, 0x3c, 
+0x5b, 0xac, 0x9f, 0x08, 0x70, 0xa9, 0x9c, 0x22, 
+0x10, 0x11, 0xcf, 0xff, 0x9c, 0xc4, 0x87, 0xb8, 
+0x2c, 0xa5, 0x52, 0xc9, 0xbe, 0x74, 0xe9, 0xd2, 
+0xaf, 0x7f, 0xfc, 0xe3, 0x1f, 0xbf, 0x96, 0x4e, 
+0xa7, 0x6f, 0x96, 0x9f, 0xb4, 0xc2, 0x7a, 0xf2, 
+0xc3, 0x9d, 0x4b, 0x96, 0x6e, 0x02, 0x42, 0xf8, 
+0x80, 0x44, 0x70, 0x46, 0x20, 0x5e, 0xae, 0x7e, 
+0x12, 0x48, 0x1c, 0x3f, 0x7e, 0x7c, 0xdf, 0xb1, 
+0x63, 0xc7, 0x8e, 0xee, 0xde, 0xbd, 0xfb, 0x60, 
+0x2a, 0x95, 0xda, 0x54, 0xba, 0xbc, 0x65, 0x59, 
+0xb9, 0x6b, 0xd7, 0xae, 0x7d, 0xfa, 0xf1, 0xc7, 
+0x1f, 0x9f, 0x7f, 0xe7, 0x9d, 0x77, 0xce, 0x67, 
+0xb3, 0xd9, 0x20, 0xb8, 0x05, 0xad, 0xfd, 0xe5, 
+0xa5, 0xcb, 0x57, 0x0a, 0x37, 0x3f, 0x30, 0x11, 
+0x30, 0xa2, 0xee, 0x81, 0x89, 0xfd, 0xfb, 0xf7, 
+0x6f, 0x3b, 0x72, 0xe4, 0xc8, 0xfe, 0x64, 0x32, 
+0x99, 0x4a, 0x24, 0x12, 0x1d, 0xd1, 0x68, 0x34, 
+0x19, 0x8b, 0xc5, 0x12, 0xaa, 0xaa, 0xaa, 0xb9, 
+0x5c, 0x2e, 0x9b, 0xcd, 0x66, 0x33, 0x6b, 0x6b, 
+0x6b, 0x99, 0xd5, 0xd5, 0xd5, 0xa5, 0xe9, 0xe9, 
+0xe9, 0x99, 0x77, 0xdf, 0x7d, 0xf7, 0x93, 0x62, 
+0xb1, 0xd8, 0xec, 0xc0, 0x44, 0xd8, 0xf0, 0xaa, 
+0x93, 0x23, 0xed, 0x1a, 0xbf, 0x69, 0x00, 0x42, 
+0x20, 0xc0, 0x17, 0x3f, 0x32, 0x13, 0xde, 0xa8, 
+0x0c, 0x46, 0xa2, 0xc1, 0x3a, 0x44, 0x65, 0x39, 
+0x8e, 0xf5, 0xe3, 0x32, 0xb5, 0xda, 0xf0, 0xc8, 
+0x0c, 0x4d, 0xa2, 0x7d, 0x43, 0x7b, 0xbe, 0xa2, 
+0x43, 0x53, 0xe1, 0x93, 0x63, 0x50, 0x3d, 0xfc, 
+0x0e, 0x40, 0xf8, 0x52, 0x0e, 0x4d, 0x6d, 0xe9, 
+0xe0, 0xe4, 0x16, 0x8e, 0xcd, 0xd5, 0xee, 0xd5, 
+0xd5, 0xce, 0x44, 0x03, 0x6d, 0x79, 0x6c, 0x8e, 
+0x2d, 0x18, 0x0f, 0x5b, 0x04, 0x00, 0xaa, 0x40, 
+0x80, 0x6a, 0x46, 0x84, 0x77, 0x9a, 0xdb, 0x39, 
+0x38, 0x59, 0xbb, 0x38, 0xdb, 0xf4, 0xe0, 0x24, 
+0x5b, 0x34, 0xbc, 0x52, 0xe1, 0xff, 0xef, 0x47, 
+0x67, 0x6f, 0x1b, 0x00, 0x55, 0x0f, 0xbd, 0x8d, 
+0x87, 0xa7, 0x43, 0x57, 0xff, 0xcb, 0xd7, 0xf5, 
+0xf0, 0xf4, 0xff, 0x55, 0xf9, 0x5f, 0xce, 0x2f, 
+0x76, 0x5f, 0xa2, 0x7d, 0xd2, 0x3f, 0x00, 0x00, 
+0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 
+0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activity9.png b/source/bitmaps/misc/activity9.png
new file mode 100644 (file)
index 0000000..c665596
Binary files /dev/null and b/source/bitmaps/misc/activity9.png differ
diff --git a/source/bitmaps/misc/activitysleep.cpp b/source/bitmaps/misc/activitysleep.cpp
new file mode 100644 (file)
index 0000000..e7b0b42
--- /dev/null
@@ -0,0 +1,531 @@
+#include <iostream>
+
+#ifndef MISC_ACTIVITYSLEEP_CPP
+#define MISC_ACTIVITYSLEEP_CPP
+
+static unsigned char misc_activitysleep_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x69, 0x71, 
+0xde, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x0d, 0xd7, 0x00, 0x00, 0x0d, 
+0xd7, 0x01, 0x42, 0x28, 0x9b, 0x78, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x0f, 0xcb, 0x49, 
+0x44, 0x41, 0x54, 0x78, 0x9c, 0xe5, 0x5b, 0x6b, 
+0x6c, 0x1b, 0x57, 0x76, 0xfe, 0xee, 0x9d, 0xe1, 
+0xf0, 0x25, 0xbe, 0x24, 0x51, 0xd4, 0x8b, 0xb4, 
+0x64, 0xd9, 0x7a, 0xf8, 0x21, 0xd9, 0xb1, 0x94, 
+0xd8, 0xb1, 0x1c, 0xdb, 0xeb, 0x05, 0xac, 0x75, 
+0x91, 0xd8, 0x31, 0x16, 0x6d, 0x91, 0xba, 0xfb, 
+0xa3, 0x5d, 0x64, 0x8b, 0x76, 0xd1, 0x22, 0x28, 
+0xda, 0xbf, 0xed, 0x8f, 0xa2, 0x3f, 0x9a, 0x5f, 
+0x45, 0x91, 0xa6, 0x2d, 0x12, 0x6c, 0xbb, 0x71, 
+0x36, 0x41, 0xeb, 0x6d, 0x0d, 0x3b, 0x89, 0xb3, 
+0x96, 0xd2, 0xb8, 0x5e, 0x3b, 0x72, 0xec, 0xc8, 
+0xb2, 0x6c, 0x59, 0xde, 0x58, 0xb2, 0x64, 0xeb, 
+0x61, 0x49, 0xa4, 0x24, 0x4a, 0x24, 0x45, 0x71, 
+0x48, 0xce, 0x4c, 0x7f, 0x0c, 0x67, 0x38, 0x43, 
+0x0d, 0x25, 0x59, 0xa4, 0xb7, 0x2d, 0x7a, 0x80, 
+0x83, 0xe1, 0xcc, 0x5c, 0xde, 0xb9, 0xe7, 0xbb, 
+0xe7, 0x9c, 0x7b, 0xef, 0xb9, 0xe7, 0x12, 0x49, 
+0x92, 0xf0, 0x3c, 0x89, 0x10, 0x42, 0xf2, 0xbd, 
+0x32, 0x78, 0xb6, 0xaa, 0x31, 0xd2, 0x73, 0x6e, 
+0x20, 0xfb, 0x3c, 0x2a, 0xcd, 0x11, 0x9a, 0xe4, 
+0xb9, 0xe6, 0x23, 0x49, 0x7b, 0xcd, 0xc5, 0xaf, 
+0xd8, 0x80, 0x90, 0x62, 0xd5, 0x67, 0x20, 0x34, 
+0xc9, 0xf9, 0x4d, 0x0d, 0x9e, 0x69, 0x49, 0x2b, 
+0xf8, 0x5a, 0x2c, 0x17, 0x2a, 0x52, 0xc3, 0x0b, 
+0xd6, 0x80, 0x3c, 0x82, 0x53, 0xcd, 0xd5, 0x88, 
+0x09, 0xf4, 0x20, 0x28, 0xc2, 0x88, 0x99, 0xdf, 
+0x62, 0x1e, 0x56, 0x81, 0x50, 0x3e, 0x5b, 0x28, 
+0x10, 0x05, 0x01, 0xa0, 0x11, 0x3e, 0x57, 0x68, 
+0x46, 0xc3, 0x6c, 0x86, 0x99, 0x1c, 0xce, 0xd5, 
+0x02, 0xad, 0xa0, 0x69, 0x00, 0x82, 0xc1, 0x55, 
+0x40, 0x0e, 0x18, 0x85, 0x02, 0xb1, 0x29, 0x13, 
+0xc8, 0x11, 0x3c, 0x57, 0x68, 0x16, 0x80, 0x49, 
+0xc3, 0x5c, 0x86, 0x95, 0x7b, 0x05, 0x10, 0xad, 
+0x26, 0x28, 0xbd, 0xae, 0x08, 0x9b, 0xca, 0x70, 
+0x32, 0xe7, 0xaa, 0xb0, 0x11, 0x18, 0x9b, 0x02, 
+0xe1, 0x99, 0x35, 0x40, 0x23, 0xbc, 0x22, 0x80, 
+0xb6, 0x97, 0x39, 0x00, 0xe6, 0x0c, 0x5b, 0x32, 
+0x6c, 0xd5, 0xdc, 0x2b, 0x60, 0x28, 0x1a, 0xa1, 
+0x00, 0xa0, 0xed, 0x79, 0x45, 0x60, 0x3e, 0xc3, 
+0x09, 0x00, 0x2b, 0x99, 0x6b, 0x22, 0xf3, 0x4c, 
+0x01, 0x44, 0xd1, 0x0c, 0x11, 0x19, 0x6d, 0x78, 
+0x56, 0x10, 0x9e, 0x09, 0x80, 0x8c, 0xf0, 0x0a, 
+0x2b, 0x3d, 0xae, 0xf4, 0xb2, 0x22, 0xb0, 0x0d, 
+0x80, 0x5d, 0xc3, 0x36, 0x00, 0xb6, 0x8a, 0x8a, 
+0x8a, 0x9a, 0x9a, 0x9a, 0x9a, 0x66, 0x8b, 0xc5, 
+0x52, 0x6a, 0xb1, 0x58, 0xdc, 0x1c, 0xc7, 0x39, 
+0x39, 0x8e, 0x73, 0x52, 0x4a, 0x4d, 0xc9, 0x64, 
+0x32, 0x9a, 0x4c, 0x26, 0x23, 0x3c, 0xcf, 0x2f, 
+0xf2, 0x3c, 0x1f, 0x5e, 0x5c, 0x5c, 0x9c, 0x7c, 
+0xf4, 0xe8, 0xd1, 0x03, 0x51, 0x14, 0x97, 0x01, 
+0xc4, 0x01, 0x2c, 0x6b, 0x38, 0xae, 0x01, 0x84, 
+0xcf, 0x05, 0xe2, 0x59, 0x4d, 0x62, 0xc3, 0x26, 
+0xa0, 0x11, 0x5e, 0x51, 0x77, 0xa5, 0xc7, 0x95, 
+0x5e, 0xb6, 0x03, 0x70, 0x64, 0xd8, 0x09, 0xc0, 
+0x11, 0x08, 0x04, 0x9a, 0xfc, 0x7e, 0x7f, 0x7b, 
+0x79, 0x79, 0xf9, 0x4e, 0x9b, 0xcd, 0xe6, 0xdb, 
+0xd0, 0x87, 0x32, 0x94, 0x4e, 0xa7, 0xe3, 0xe1, 
+0x70, 0xf8, 0xdb, 0x99, 0x99, 0x99, 0xfe, 0xe1, 
+0xe1, 0xe1, 0x3b, 0x3c, 0xcf, 0xcf, 0x03, 0x88, 
+0x00, 0x88, 0x66, 0x38, 0x86, 0x2c, 0x18, 0x8a, 
+0x46, 0x68, 0xcd, 0x62, 0x43, 0x20, 0x6c, 0x08, 
+0x00, 0x03, 0xe1, 0x4d, 0x90, 0xd5, 0xda, 0x0a, 
+0xa0, 0x24, 0x23, 0xb4, 0x1b, 0x80, 0x0b, 0x40, 
+0xe9, 0x9e, 0x3d, 0x7b, 0x5e, 0x69, 0x68, 0x68, 
+0xe8, 0xb2, 0x58, 0x2c, 0x65, 0x4a, 0x1d, 0x4c, 
+0x8a, 0x85, 0x27, 0x58, 0x0a, 0x4b, 0xcc, 0x0a, 
+0x2e, 0xc1, 0xc1, 0xc4, 0x73, 0xe0, 0x12, 0x66, 
+0x50, 0x81, 0x22, 0x65, 0x49, 0x22, 0x69, 0x4e, 
+0x22, 0x69, 0xe1, 0x91, 0xb4, 0xf2, 0x58, 0xac, 
+0x08, 0x23, 0x61, 0x5f, 0x51, 0xbf, 0x2f, 0x8a, 
+0x62, 0x6a, 0x7a, 0x7a, 0xfa, 0x46, 0x5f, 0x5f, 
+0xdf, 0xc5, 0x68, 0x34, 0xfa, 0x14, 0x40, 0x18, 
+0xc0, 0x92, 0x06, 0x90, 0x38, 0xb2, 0xa6, 0x91, 
+0x7e, 0x16, 0x10, 0xd6, 0x05, 0x20, 0x47, 0x78, 
+0xc5, 0xc1, 0x59, 0x90, 0xed, 0x71, 0x17, 0x80, 
+0x52, 0x00, 0xa5, 0xcd, 0xcd, 0xcd, 0xfb, 0x5b, 
+0x5a, 0x5a, 0x5e, 0xb3, 0xdb, 0xed, 0x55, 0x00, 
+0x60, 0x4a, 0x70, 0xf0, 0xcc, 0x94, 0xc2, 0xf3, 
+0xb4, 0x1c, 0xce, 0x39, 0x17, 0x88, 0xb8, 0xde, 
+0x1c, 0x28, 0x4b, 0x2b, 0x8e, 0x38, 0xc2, 0xd5, 
+0xf3, 0x08, 0x57, 0xcd, 0x63, 0xd9, 0x1d, 0x03, 
+0x00, 0x08, 0x82, 0xc0, 0x4f, 0x4c, 0x4c, 0x7c, 
+0x79, 0xeb, 0xd6, 0xad, 0x4f, 0x79, 0x9e, 0x9f, 
+0x05, 0xb0, 0x90, 0x01, 0x23, 0x02, 0xd9, 0x3c, 
+0x56, 0x32, 0x40, 0x6c, 0x18, 0x84, 0x35, 0x01, 
+0xc8, 0x23, 0xbc, 0xa2, 0xee, 0x2e, 0x00, 0x1e, 
+0x00, 0xe5, 0x2e, 0x97, 0xab, 0xee, 0xf0, 0xe1, 
+0xc3, 0x3f, 0x74, 0xbb, 0xdd, 0x8d, 0xb2, 0xe0, 
+0x26, 0x54, 0x3d, 0xa8, 0x45, 0xd9, 0xb8, 0x17, 
+0x44, 0xda, 0xb8, 0xd0, 0xf9, 0x28, 0xee, 0x5a, 
+0xc6, 0xd4, 0xae, 0x71, 0x44, 0xbd, 0x11, 0x00, 
+0x40, 0x2a, 0x95, 0x8a, 0x0e, 0x0c, 0x0c, 0x9c, 
+0x1d, 0x1a, 0x1a, 0xea, 0x05, 0x30, 0x07, 0x60, 
+0x1e, 0xb2, 0x46, 0x68, 0xb5, 0x61, 0x43, 0x20, 
+0xe4, 0x05, 0xc0, 0x40, 0xed, 0x39, 0x64, 0x55, 
+0xde, 0x0d, 0xa0, 0x0c, 0x80, 0x37, 0x10, 0x08, 
+0xb4, 0x1d, 0x38, 0x70, 0xe0, 0x4d, 0x8b, 0xc5, 
+0xe2, 0xa6, 0x69, 0x0a, 0xef, 0x70, 0x15, 0xbc, 
+0x23, 0x3e, 0x50, 0x81, 0x16, 0x2c, 0x78, 0x2e, 
+0x45, 0x7d, 0x4b, 0x98, 0xde, 0x39, 0x89, 0x84, 
+0x73, 0x05, 0x00, 0xc4, 0x87, 0x0f, 0x1f, 0x7e, 
+0xda, 0xdb, 0xdb, 0x7b, 0x1e, 0x40, 0x10, 0x32, 
+0x10, 0x61, 0xac, 0x06, 0x41, 0x80, 0x2c, 0xff, 
+0xc6, 0x01, 0xc8, 0x19, 0xea, 0x8c, 0x84, 0xf7, 
+0x02, 0xa8, 0x68, 0x6b, 0x6b, 0x3b, 0xd6, 0xd6, 
+0xd6, 0xf6, 0x06, 0xc3, 0x30, 0x9c, 0x35, 0x6c, 
+0x83, 0xff, 0xeb, 0x3a, 0xb0, 0x09, 0x53, 0xf1, 
+0x24, 0xce, 0x90, 0x2b, 0xe0, 0x84, 0xd9, 0x65, 
+0x46, 0xf0, 0x5e, 0x08, 0x20, 0x40, 0xa8, 0x79, 
+0x06, 0xa1, 0xa6, 0x59, 0x00, 0xc0, 0xec, 0xec, 
+0x6c, 0x5f, 0x77, 0x77, 0xf7, 0x7b, 0xa9, 0x54, 
+0xea, 0x29, 0x80, 0x10, 0x64, 0xb3, 0x88, 0x60, 
+0xb5, 0x26, 0x18, 0x82, 0xb0, 0x16, 0x00, 0xca, 
+0x50, 0xa7, 0xa8, 0x7d, 0x09, 0x32, 0x2a, 0x0f, 
+0xa0, 0xf2, 0xe0, 0xc1, 0x83, 0xa7, 0x1b, 0x1b, 
+0x1b, 0x4f, 0x11, 0x42, 0x88, 0x73, 0xc2, 0x0d, 
+0x5f, 0x7f, 0xf5, 0x33, 0xd9, 0xf8, 0x7a, 0xe4, 
+0xa9, 0x77, 0xa3, 0xe9, 0x64, 0x23, 0x9a, 0x5e, 
+0xdb, 0x8e, 0xca, 0x36, 0x1f, 0x2e, 0xfd, 0xc9, 
+0x65, 0xdc, 0x3d, 0x3b, 0xa8, 0xbe, 0x8f, 0x56, 
+0x47, 0x30, 0xb3, 0x6f, 0x0a, 0x12, 0x23, 0x22, 
+0x12, 0x89, 0x8c, 0x5d, 0xbc, 0x78, 0xf1, 0x6d, 
+0x9e, 0xe7, 0x27, 0x21, 0x6b, 0x83, 0x16, 0x04, 
+0xd5, 0x31, 0x1a, 0x01, 0xb0, 0x6a, 0x1e, 0x60, 
+0x60, 0xf7, 0x4a, 0xef, 0x3b, 0x32, 0x00, 0x78, 
+0x77, 0xef, 0xde, 0xfd, 0x4a, 0x4b, 0x4b, 0xcb, 
+0x29, 0x00, 0xa4, 0x6c, 0xd0, 0x0b, 0xd7, 0x48, 
+0x29, 0x24, 0x48, 0x90, 0x68, 0x61, 0xeb, 0x93, 
+0xb2, 0x6d, 0xa5, 0x68, 0x7a, 0xb5, 0x11, 0xcd, 
+0xaf, 0x35, 0xc2, 0xb7, 0xab, 0x42, 0xf7, 0x6e, 
+0x6e, 0x78, 0x0e, 0x22, 0x15, 0xd5, 0x7b, 0xfb, 
+0x4c, 0x09, 0xfc, 0xd7, 0xea, 0x30, 0xb3, 0x7f, 
+0x12, 0x6e, 0xb7, 0xbb, 0xfe, 0xf8, 0xf1, 0xe3, 
+0x3f, 0xba, 0x70, 0xe1, 0xc2, 0xdf, 0x65, 0x84, 
+0x55, 0x58, 0x9d, 0x24, 0x65, 0x64, 0x5b, 0x05, 
+0x82, 0x0e, 0x80, 0x9c, 0x29, 0xae, 0x32, 0xd6, 
+0x2b, 0x1e, 0xdf, 0x05, 0xa0, 0xcc, 0xef, 0xf7, 
+0xef, 0xec, 0xe8, 0xe8, 0xf8, 0x01, 0x21, 0x84, 
+0xb8, 0x1f, 0x94, 0xa2, 0xe4, 0x91, 0x0b, 0x02, 
+0x11, 0x0a, 0x12, 0x7a, 0xe7, 0xeb, 0x2d, 0x68, 
+0x79, 0xb5, 0x09, 0xde, 0x66, 0x6f, 0xde, 0x72, 
+0xb3, 0x23, 0xa1, 0x55, 0xdf, 0x61, 0x22, 0x2c, 
+0x2a, 0x7a, 0xab, 0x31, 0x73, 0x78, 0x0a, 0x3e, 
+0x9f, 0xaf, 0xed, 0xc8, 0x91, 0x23, 0xdf, 0xbf, 
+0x72, 0xe5, 0xca, 0x47, 0xc8, 0x4e, 0x99, 0xb5, 
+0x20, 0x88, 0x8a, 0x88, 0x5a, 0x10, 0x8c, 0x66, 
+0x82, 0x46, 0x8e, 0xcf, 0x01, 0xc0, 0xe3, 0x74, 
+0x3a, 0xfd, 0x47, 0x8f, 0x1e, 0xfd, 0x03, 0x93, 
+0xc9, 0x64, 0xb6, 0x4e, 0xd9, 0x50, 0x32, 0xec, 
+0xd2, 0xf5, 0xca, 0x66, 0xa8, 0xf5, 0x8d, 0xdd, 
+0x38, 0xf8, 0xe3, 0xfd, 0x6b, 0x96, 0x59, 0x0e, 
+0x2d, 0x23, 0x1e, 0x89, 0xcb, 0xad, 0xca, 0x21, 
+0x66, 0x99, 0x45, 0xd9, 0xed, 0x0a, 0x2c, 0xbc, 
+0x14, 0x44, 0x63, 0x63, 0xe3, 0xf1, 0xa5, 0xa5, 
+0xa5, 0xa9, 0xfe, 0xfe, 0xfe, 0xcb, 0x30, 0x9e, 
+0x29, 0xea, 0x96, 0xd4, 0x80, 0x61, 0x95, 0x3a, 
+0xf5, 0x37, 0x43, 0xee, 0x7d, 0x27, 0x80, 0xd2, 
+0x63, 0xc7, 0x8e, 0xfd, 0xc0, 0x66, 0xb3, 0x95, 
+0x99, 0x22, 0x1c, 0x1c, 0x77, 0x3c, 0x10, 0xa8, 
+0x50, 0x30, 0xdf, 0xbb, 0x38, 0x68, 0xd0, 0x04, 
+0x3d, 0x85, 0x86, 0xe7, 0xd6, 0xac, 0xc3, 0x14, 
+0xe4, 0xe0, 0xf8, 0x95, 0x0b, 0x94, 0x52, 0xd2, 
+0xbe, 0xaf, 0xfd, 0x8c, 0xcb, 0xe5, 0x0a, 0x40, 
+0x76, 0xd6, 0x0e, 0xc8, 0x1a, 0x6c, 0x82, 0x66, 
+0xed, 0xa1, 0x5d, 0xc2, 0xab, 0x00, 0xac, 0x37, 
+0xec, 0x35, 0x34, 0x34, 0xec, 0xf2, 0xf9, 0x7c, 
+0x6d, 0x44, 0x22, 0x70, 0x7c, 0xe3, 0x86, 0x24, 
+0x8a, 0x10, 0x89, 0x50, 0x30, 0x4f, 0x0d, 0x4e, 
+0x61, 0xe1, 0xf1, 0x82, 0x2a, 0x6c, 0x2c, 0x18, 
+0xc3, 0x17, 0x6f, 0x7f, 0x89, 0xd0, 0xf0, 0x9c, 
+0xfa, 0x2c, 0x38, 0x12, 0x5a, 0xb7, 0x1e, 0xcb, 
+0x88, 0x0d, 0xdc, 0xbc, 0x19, 0xac, 0x89, 0x35, 
+0x77, 0x76, 0x76, 0x9e, 0x82, 0xec, 0xaf, 0x1c, 
+0x90, 0xd7, 0x22, 0x66, 0xe8, 0x57, 0xa0, 0x2a, 
+0xe5, 0x9a, 0x80, 0x91, 0xf3, 0x2b, 0x01, 0xe0, 
+0xee, 0xe8, 0xe8, 0x78, 0x9d, 0x61, 0x18, 0xc2, 
+0x8d, 0x5a, 0x80, 0x15, 0x02, 0xa1, 0x40, 0xd5, 
+0xd7, 0xd2, 0xdd, 0x8b, 0x83, 0x68, 0x3c, 0xba, 
+0x1d, 0xd7, 0xdf, 0xeb, 0xc5, 0xdd, 0x0b, 0x83, 
+0x60, 0xcd, 0x2c, 0x8e, 0xbe, 0x75, 0x58, 0x7d, 
+0x3f, 0x3b, 0x12, 0xdc, 0xd0, 0xf7, 0x2c, 0x0f, 
+0xec, 0x10, 0x0e, 0xa7, 0x11, 0x08, 0x04, 0xf6, 
+0x57, 0x57, 0x57, 0x77, 0x3f, 0x7d, 0xfa, 0x34, 
+0x82, 0xec, 0x9a, 0x41, 0x3b, 0x24, 0xaa, 0xbe, 
+0x80, 0x05, 0x90, 0xbb, 0xca, 0xd3, 0xaa, 0xbf, 
+0x0d, 0x80, 0xb3, 0xb5, 0xb5, 0x75, 0x5f, 0x79, 
+0x79, 0xf9, 0x36, 0x92, 0x22, 0x30, 0x3d, 0x34, 
+0x43, 0x2c, 0xc0, 0xe9, 0x19, 0x51, 0xcf, 0xdf, 
+0xfe, 0x27, 0x3e, 0x7f, 0xfb, 0xb2, 0x7a, 0xbf, 
+0xed, 0x70, 0x3d, 0x28, 0x9b, 0xb5, 0xce, 0xd9, 
+0x91, 0xd9, 0x0d, 0x7d, 0x93, 0x2c, 0x11, 0x98, 
+0xa6, 0x38, 0xa4, 0x6b, 0x53, 0xcc, 0xcb, 0x2f, 
+0xbf, 0x7c, 0xea, 0xdc, 0xb9, 0x73, 0xa3, 0x90, 
+0x67, 0x88, 0x31, 0x64, 0x17, 0x4d, 0x8a, 0x53, 
+0x04, 0xb0, 0x5a, 0x03, 0xb4, 0x8b, 0x1d, 0x75, 
+0xbe, 0xdf, 0xd6, 0xd6, 0xf6, 0x3d, 0x4a, 0x29, 
+0x98, 0x47, 0x1c, 0xc4, 0xb4, 0x04, 0x14, 0x38, 
+0xdc, 0xe5, 0x92, 0x90, 0x4e, 0xea, 0xbc, 0xd1, 
+0xd6, 0x43, 0x0d, 0xba, 0xf7, 0x33, 0xa3, 0xb3, 
+0xaa, 0x06, 0x98, 0xac, 0x26, 0x78, 0xeb, 0xcb, 
+0xf1, 0x74, 0x68, 0xda, 0xb0, 0x2e, 0xe6, 0x57, 
+0x66, 0x88, 0x35, 0x02, 0xaa, 0xaa, 0xaa, 0xda, 
+0x6a, 0x6a, 0x6a, 0xea, 0xa6, 0xa6, 0xa6, 0x94, 
+0x85, 0x13, 0x87, 0xac, 0x16, 0x28, 0x41, 0x18, 
+0x1d, 0x00, 0xda, 0xc9, 0x8f, 0x12, 0xd8, 0xb0, 
+0x79, 0x3c, 0x1e, 0x5f, 0x69, 0x69, 0x69, 0x1d, 
+0x44, 0x80, 0x3c, 0xa1, 0x45, 0xef, 0x7d, 0x23, 
+0xda, 0xde, 0x99, 0x05, 0x20, 0x11, 0x4b, 0x20, 
+0x3c, 0x1b, 0x46, 0x60, 0x6f, 0x00, 0x2f, 0xfd, 
+0x66, 0x3b, 0xf6, 0xbc, 0xda, 0x86, 0xc9, 0xbb, 
+0x53, 0x78, 0xf7, 0x77, 0xfe, 0xc9, 0xf8, 0xcf, 
+0x09, 0x80, 0x06, 0x19, 0x48, 0xd5, 0x22, 0x69, 
+0x69, 0x69, 0x79, 0x71, 0x6a, 0x6a, 0xea, 0x21, 
+0x64, 0x53, 0xe6, 0x32, 0xb2, 0xa9, 0x91, 0x28, 
+0x42, 0xc8, 0x2a, 0x00, 0x72, 0x35, 0xc0, 0xd6, 
+0xda, 0xda, 0xda, 0x4e, 0x29, 0x25, 0xd2, 0x1c, 
+0x81, 0x20, 0x08, 0xc6, 0xe3, 0x46, 0x11, 0xc9, 
+0xe9, 0x75, 0xa0, 0xb2, 0x31, 0x1b, 0x3a, 0x90, 
+0x44, 0x09, 0x7f, 0x76, 0xf9, 0x2d, 0x54, 0x6e, 
+0xaf, 0x54, 0x9f, 0x95, 0xd7, 0x97, 0x41, 0xa0, 
+0xf9, 0x3b, 0x82, 0xcc, 0x12, 0xd0, 0x5a, 0x0a, 
+0xbf, 0xdf, 0xbf, 0x1b, 0xb2, 0x16, 0x2b, 0x00, 
+0xac, 0x72, 0x84, 0x6c, 0x1e, 0xfb, 0x57, 0x00, 
+0xb0, 0xfa, 0xfd, 0xfe, 0xdd, 0x84, 0x10, 0x88, 
+0x33, 0x12, 0x44, 0xf2, 0x7c, 0x37, 0x51, 0x00, 
+0x60, 0xdb, 0xc1, 0x6d, 0xba, 0x7b, 0xab, 0xd3, 
+0x0a, 0xab, 0xd3, 0xaa, 0x7b, 0xe6, 0xaa, 0x74, 
+0x81, 0xb1, 0x32, 0x48, 0x25, 0x52, 0xc6, 0x95, 
+0xcc, 0x02, 0x26, 0x89, 0xc0, 0xe3, 0xf1, 0x04, 
+0x3c, 0x1e, 0x4f, 0x79, 0x38, 0x1c, 0x9e, 0x85, 
+0x1e, 0x00, 0x8a, 0xcc, 0x0c, 0x51, 0xdb, 0x9f, 
+0xb9, 0x1a, 0xc0, 0x59, 0xad, 0x56, 0x67, 0x85, 
+0xb7, 0xa2, 0x81, 0x52, 0x8a, 0x74, 0x50, 0x2c, 
+0xca, 0xb8, 0xbf, 0x1e, 0x37, 0xe6, 0x00, 0x60, 
+0x44, 0x84, 0x10, 0x94, 0xd6, 0x95, 0xe6, 0xaf, 
+0x47, 0x14, 0x20, 0x2d, 0x00, 0x94, 0x52, 0xb2, 
+0x67, 0xcf, 0x9e, 0x17, 0x20, 0x9b, 0xb3, 0xb1, 
+0x06, 0x68, 0x84, 0xd7, 0xfa, 0x00, 0x16, 0x00, 
+0x57, 0x5f, 0x5f, 0x1f, 0x60, 0x58, 0xc6, 0x24, 
+0x46, 0x45, 0x08, 0xbc, 0xb0, 0xfe, 0x9e, 0x4e, 
+0x11, 0xa8, 0xe9, 0x40, 0xe3, 0xba, 0x65, 0x9e, 
+0x0c, 0x8e, 0x43, 0x80, 0x00, 0x91, 0xe4, 0x1f, 
+0x1a, 0x85, 0x39, 0x11, 0xac, 0x8f, 0x81, 0xd7, 
+0xeb, 0xdd, 0x02, 0x19, 0x00, 0x25, 0x22, 0xad, 
+0x0b, 0xc9, 0x1b, 0x8d, 0x02, 0xaa, 0x19, 0xb8, 
+0xdd, 0xee, 0x72, 0x4a, 0x29, 0x04, 0x5e, 0x84, 
+0xb8, 0x86, 0xcd, 0x6d, 0x86, 0x7c, 0xf5, 0x3e, 
+0xec, 0x3b, 0xbe, 0x17, 0x5f, 0xfd, 0x7b, 0x2f, 
+0x16, 0x83, 0x4b, 0xf2, 0xb3, 0xba, 0x0a, 0x78, 
+0xaa, 0x3c, 0xab, 0xca, 0x8a, 0x82, 0x88, 0xe1, 
+0x6f, 0x46, 0xd0, 0xdf, 0x73, 0x07, 0x77, 0x7a, 
+0x06, 0x10, 0x9e, 0x09, 0x67, 0x5b, 0x9b, 0x87, 
+0x44, 0x9e, 0x82, 0x52, 0x0a, 0x9b, 0xcd, 0xe6, 
+0x42, 0x1e, 0xe1, 0x01, 0x10, 0xa3, 0x51, 0x40, 
+0x0d, 0x7a, 0x3a, 0x1c, 0x0e, 0x0f, 0x21, 0x04, 
+0x62, 0x42, 0x2c, 0x68, 0xc1, 0xa3, 0x50, 0x65, 
+0xbd, 0x0f, 0xed, 0xc7, 0xf7, 0xa1, 0xfd, 0xf8, 
+0x3e, 0xd4, 0x36, 0xd5, 0x42, 0x12, 0x25, 0x7c, 
+0xfe, 0xcf, 0x97, 0xd5, 0xba, 0x9b, 0x5e, 0x6e, 
+0x52, 0xcb, 0x26, 0x13, 0x29, 0x0c, 0xf5, 0x0e, 
+0xa1, 0xbf, 0xe7, 0x0e, 0x06, 0xbe, 0x1c, 0x40, 
+0x6c, 0x71, 0x59, 0xdf, 0xd2, 0x75, 0x28, 0xcd, 
+0x13, 0x10, 0x42, 0x60, 0xb5, 0x5a, 0x9d, 0xc8, 
+0x0a, 0x9f, 0xbb, 0x33, 0xa5, 0x33, 0x01, 0xe5, 
+0xaa, 0x14, 0x62, 0x4a, 0x4a, 0x4a, 0x5c, 0x94, 
+0x52, 0x88, 0x49, 0x71, 0xd3, 0x8b, 0x9e, 0xca, 
+0xba, 0x4a, 0x74, 0x74, 0xb5, 0xa3, 0xe3, 0x78, 
+0x3b, 0x6a, 0xb7, 0xd7, 0xe8, 0xde, 0xcd, 0x4f, 
+0xcf, 0x83, 0x4f, 0xf1, 0x6a, 0x4f, 0x06, 0x76, 
+0xf9, 0x71, 0xe3, 0x93, 0xaf, 0xd1, 0xf7, 0xc5, 
+0x6d, 0x0c, 0x5e, 0xbb, 0x0f, 0x7e, 0x85, 0xcf, 
+0x16, 0x7e, 0xc6, 0xd1, 0x27, 0xcd, 0x0b, 0xa0, 
+0x94, 0x2a, 0x00, 0xe8, 0x86, 0x3f, 0x6d, 0x39, 
+0x16, 0x7a, 0xe1, 0x75, 0x5c, 0x52, 0x52, 0xe2, 
+0x22, 0x84, 0x20, 0x95, 0x48, 0x6f, 0x5a, 0x03, 
+0xbe, 0xfb, 0xbb, 0xdf, 0xc1, 0x77, 0x7e, 0xeb, 
+0xa8, 0xe1, 0xbb, 0xe9, 0xb1, 0x69, 0x5d, 0xbd, 
+0xef, 0xff, 0xc5, 0x4f, 0xa0, 0x5b, 0xae, 0x17, 
+0xe0, 0x73, 0x44, 0x5e, 0x04, 0x21, 0x04, 0x16, 
+0x8b, 0xc5, 0x0e, 0x7d, 0xcf, 0xeb, 0x68, 0x4d, 
+0x5c, 0x09, 0x21, 0xa0, 0x54, 0xb6, 0x25, 0x42, 
+0xc9, 0xa6, 0xf8, 0xab, 0xcf, 0x6e, 0xe8, 0xea, 
+0x0c, 0x4e, 0x04, 0xd5, 0xdf, 0xd3, 0x4f, 0x66, 
+0x75, 0x65, 0x41, 0xb0, 0xe9, 0xef, 0x18, 0xb1, 
+0xd2, 0xf6, 0xb5, 0x88, 0xc5, 0x1a, 0xdb, 0xd2, 
+0xf1, 0x78, 0x7c, 0x89, 0x10, 0x02, 0x93, 0x9d, 
+0x05, 0x65, 0x36, 0x37, 0x03, 0x1a, 0xbd, 0x37, 
+0x8a, 0xe0, 0x64, 0x08, 0xa1, 0x89, 0x20, 0x3e, 
+0x3f, 0xdb, 0x0d, 0x48, 0x12, 0xfe, 0xf4, 0xef, 
+0xdf, 0xca, 0x80, 0x31, 0xbb, 0xe9, 0x7a, 0xd7, 
+0x23, 0xd6, 0xc6, 0x80, 0x10, 0x02, 0x9e, 0xe7, 
+0x97, 0x91, 0xb3, 0x87, 0xa8, 0x2b, 0x97, 0xb9, 
+0x6a, 0x41, 0x50, 0x0a, 0x0b, 0x2a, 0x00, 0x56, 
+0x13, 0x18, 0xca, 0x6c, 0xba, 0x31, 0x7f, 0x75, 
+0xe6, 0xaf, 0xb1, 0x12, 0x93, 0x37, 0x3a, 0x5e, 
+0xff, 0xa3, 0x53, 0xea, 0xf3, 0xe0, 0x78, 0xa8, 
+0xa0, 0x7a, 0xd7, 0x22, 0x93, 0x8d, 0x53, 0x00, 
+0x88, 0x40, 0x1f, 0x1a, 0xcb, 0x1b, 0x12, 0x53, 
+0x5e, 0xaa, 0xbb, 0xb4, 0xd1, 0x68, 0x74, 0x81, 
+0x52, 0x0a, 0x93, 0xbd, 0x30, 0x00, 0x92, 0xf1, 
+0xa4, 0xfa, 0xff, 0x96, 0x8e, 0x66, 0xf5, 0x79, 
+0x68, 0x3c, 0x04, 0x96, 0x65, 0xd1, 0xd2, 0xd1, 
+0x8c, 0x8a, 0x2d, 0x15, 0xb8, 0xf2, 0xaf, 0xff, 
+0xb5, 0xe9, 0x6f, 0xe4, 0x12, 0x67, 0x33, 0x81, 
+0x52, 0x8a, 0x64, 0x32, 0x19, 0xc1, 0xea, 0xd0, 
+0x98, 0x0a, 0x44, 0xee, 0x3c, 0x40, 0xb7, 0x4b, 
+0x1b, 0x0e, 0x87, 0xe7, 0x09, 0x21, 0x60, 0x6d, 
+0x2c, 0x18, 0xa6, 0xf0, 0x9e, 0xb2, 0xd8, 0x2d, 
+0xd8, 0xb2, 0x23, 0x20, 0x7f, 0x48, 0x10, 0x71, 
+0xe8, 0xf4, 0x21, 0xec, 0xff, 0x8d, 0x97, 0x50, 
+0xea, 0xf3, 0x60, 0x7a, 0x6c, 0x06, 0xbf, 0xfc, 
+0xf9, 0xb5, 0x82, 0xbf, 0xa1, 0x90, 0xc9, 0x6e, 
+0x02, 0x21, 0x04, 0xf1, 0x78, 0x7c, 0x09, 0xd9, 
+0xc8, 0x70, 0x6e, 0x58, 0x4c, 0xd2, 0x9a, 0x80, 
+0xc2, 0xca, 0x1e, 0x7d, 0x72, 0x74, 0x74, 0x74, 
+0x5c, 0x92, 0xa4, 0x14, 0xe7, 0x34, 0x99, 0x58, 
+0x1b, 0x0b, 0x31, 0x51, 0x58, 0x10, 0xa4, 0xf1, 
+0x85, 0xed, 0xaa, 0x53, 0xa2, 0x0c, 0xc5, 0x89, 
+0xdf, 0xeb, 0x52, 0xdf, 0x55, 0xd4, 0x7a, 0xc1, 
+0x9a, 0x58, 0x88, 0x42, 0x71, 0x02, 0x2d, 0x96, 
+0x0a, 0x33, 0x28, 0xa5, 0x08, 0x85, 0x42, 0x4f, 
+0xb0, 0x7a, 0x3b, 0xdd, 0x50, 0x03, 0xb4, 0xea, 
+0x9f, 0x02, 0x90, 0x8c, 0xc5, 0x62, 0x91, 0x50, 
+0x28, 0xf4, 0xa8, 0xaa, 0xaa, 0xaa, 0xd9, 0x56, 
+0x65, 0xc5, 0xca, 0x78, 0xa2, 0xa0, 0x46, 0x35, 
+0xb5, 0x37, 0xe5, 0x7d, 0xc7, 0x98, 0x18, 0x54, 
+0xf8, 0x2b, 0x10, 0x9a, 0x08, 0x15, 0xf4, 0x0d, 
+0x00, 0x20, 0x2c, 0x81, 0xa5, 0xdc, 0x0c, 0x09, 
+0x92, 0x78, 0xf3, 0xe6, 0xcd, 0x3e, 0xc8, 0x01, 
+0x52, 0xed, 0xc6, 0x69, 0x36, 0x2a, 0x2c, 0x49, 
+0x92, 0x92, 0x66, 0xa2, 0x00, 0xa0, 0x24, 0x29, 
+0x24, 0x00, 0xac, 0x8c, 0x8d, 0x8d, 0xdd, 0xad, 
+0xa9, 0xa9, 0x69, 0xb6, 0x56, 0x5a, 0x90, 0x9c, 
+0xcc, 0xb3, 0xfa, 0xda, 0x20, 0x35, 0xee, 0xdb, 
+0xbe, 0xea, 0xd9, 0x72, 0x24, 0x8e, 0xfb, 0xd7, 
+0x87, 0x70, 0xef, 0xea, 0x3d, 0x2c, 0x05, 0x97, 
+0x8a, 0xe2, 0x14, 0xcd, 0x3e, 0x0e, 0x94, 0xa1, 
+0x98, 0x9b, 0x9b, 0x9b, 0x98, 0x9b, 0x9b, 0x9b, 
+0xc3, 0x6a, 0x00, 0x54, 0x10, 0xf2, 0x69, 0x40, 
+0x32, 0xf3, 0xa7, 0xf8, 0xad, 0x5b, 0xb7, 0xbe, 
+0xe9, 0xec, 0xec, 0xfc, 0xbe, 0xb9, 0x9c, 0xa3, 
+0x2c, 0xc7, 0x40, 0x4a, 0x6f, 0x6e, 0x49, 0x6c, 
+0x77, 0xd9, 0x51, 0xb5, 0x55, 0x5e, 0xd3, 0x47, 
+0xe6, 0xa3, 0xb8, 0x7f, 0x6d, 0x10, 0xf7, 0x7e, 
+0x79, 0x1f, 0xa3, 0x03, 0xa3, 0x3a, 0xb5, 0x67, 
+0xd6, 0x19, 0xb7, 0x37, 0x42, 0xd6, 0x4a, 0x33, 
+0x08, 0x21, 0x78, 0xfc, 0xf8, 0xf1, 0x5d, 0xc8, 
+0xf1, 0xc0, 0xfc, 0x1a, 0xa0, 0xf9, 0x9f, 0xd6, 
+0x07, 0xa4, 0x20, 0x87, 0x8f, 0xe2, 0xc1, 0x60, 
+0x30, 0xb8, 0xb0, 0xb0, 0xf0, 0xd8, 0xeb, 0xf5, 
+0x6e, 0xb5, 0xd7, 0xd9, 0xb0, 0x32, 0xb6, 0xbe, 
+0x19, 0xd8, 0x1c, 0x56, 0xec, 0x38, 0xb8, 0x03, 
+0xbb, 0x5f, 0xd9, 0x85, 0x7f, 0xfb, 0x9b, 0x73, 
+0x88, 0x2d, 0x2e, 0xc3, 0xb7, 0xc5, 0x87, 0x6b, 
+0x3f, 0xbf, 0x8e, 0xfb, 0xd7, 0xee, 0x63, 0x7c, 
+0x68, 0x42, 0x9d, 0xf1, 0x11, 0x90, 0xa2, 0x38, 
+0x58, 0x85, 0xa8, 0x95, 0xc2, 0x5c, 0x69, 0x06, 
+0x08, 0xa4, 0xdb, 0xb7, 0x6f, 0xdf, 0x84, 0x71, 
+0x3c, 0x50, 0x42, 0x66, 0xaf, 0xd0, 0x68, 0x14, 
+0x50, 0x00, 0x48, 0x40, 0xde, 0x73, 0x8f, 0xf6, 
+0xf6, 0xf6, 0x7e, 0x7e, 0xf2, 0xe4, 0xc9, 0x3f, 
+0xb4, 0x6e, 0xb5, 0x20, 0x39, 0x9d, 0x86, 0x94, 
+0x34, 0xd6, 0x82, 0x7d, 0xc7, 0x5f, 0xc0, 0xee, 
+0x57, 0x76, 0xa1, 0x61, 0xef, 0x56, 0x50, 0x86, 
+0x22, 0xb9, 0x92, 0x44, 0x3c, 0x92, 0x00, 0xa5, 
+0x0c, 0x26, 0x1e, 0x4c, 0x62, 0xe2, 0xc1, 0xa4, 
+0x2c, 0x34, 0xa1, 0xc8, 0x9b, 0x3f, 0x5a, 0x20, 
+0xd9, 0x1b, 0xad, 0xa0, 0x0c, 0xc5, 0xe3, 0xc7, 
+0x8f, 0x07, 0xc6, 0xc6, 0xc6, 0x9e, 0x20, 0x9b, 
+0x37, 0x90, 0x5f, 0x03, 0xf2, 0xf8, 0x01, 0x1e, 
+0xb2, 0xfa, 0x44, 0xae, 0x5d, 0xbb, 0xd6, 0x77, 
+0xe0, 0xc0, 0x81, 0x91, 0xca, 0xca, 0xca, 0x6d, 
+0xf6, 0x6d, 0x56, 0xac, 0x7c, 0xcb, 0xc3, 0x88, 
+0xda, 0xbb, 0xf6, 0x21, 0xb0, 0xc3, 0x0f, 0x49, 
+0x92, 0x20, 0x49, 0xc0, 0xfc, 0xd3, 0x85, 0xa2, 
+0xf6, 0xee, 0x7a, 0xc4, 0x38, 0x19, 0x58, 0xaa, 
+0xcd, 0x10, 0x45, 0x51, 0xb8, 0x74, 0xe9, 0xd2, 
+0x79, 0xc8, 0x1b, 0xa4, 0x31, 0xc8, 0x9d, 0xa9, 
+0x4d, 0xa1, 0x51, 0x29, 0xd7, 0xe0, 0xb4, 0x00, 
+0x24, 0x21, 0x23, 0x17, 0x03, 0xb0, 0xd8, 0xdd, 
+0xdd, 0xfd, 0x1f, 0x00, 0x24, 0x8b, 0xdf, 0x0c, 
+0x53, 0x89, 0x3c, 0x31, 0xca, 0xe5, 0xdb, 0xbf, 
+0xe8, 0xc7, 0xd7, 0x17, 0x6e, 0xe1, 0x27, 0x7f, 
+0xfe, 0x2f, 0x20, 0x04, 0x58, 0x78, 0xba, 0x60, 
+0x58, 0xee, 0x79, 0xb1, 0xad, 0xd1, 0x02, 0x42, 
+0x08, 0x86, 0x87, 0x87, 0x6f, 0x8c, 0x8e, 0x8e, 
+0x8e, 0x42, 0xbf, 0x4d, 0xae, 0x00, 0xa0, 0xaa, 
+0xbf, 0x0e, 0x80, 0xcc, 0x83, 0x5c, 0x47, 0xa8, 
+0x02, 0x70, 0xe7, 0xce, 0x9d, 0xc1, 0x89, 0x89, 
+0x89, 0x01, 0xca, 0x50, 0x94, 0xb4, 0x5a, 0xc1, 
+0x72, 0x14, 0x0c, 0xa3, 0xe7, 0xc1, 0x2b, 0x83, 
+0xe8, 0x7e, 0xbf, 0x1b, 0x1e, 0x9f, 0x1b, 0x80, 
+0x0c, 0x00, 0xcb, 0x32, 0xa8, 0xde, 0x56, 0xb5, 
+0xaa, 0x6c, 0xb1, 0xd9, 0xba, 0xd5, 0x0c, 0xae, 
+0xcc, 0x84, 0x74, 0x3a, 0x9d, 0x38, 0x7f, 0xfe, 
+0xfc, 0x79, 0x18, 0x27, 0x4b, 0xac, 0x5a, 0x0f, 
+0x18, 0xb9, 0xdc, 0x5c, 0x33, 0x58, 0xce, 0x20, 
+0xb9, 0x70, 0xf6, 0xec, 0xd9, 0x9f, 0x2e, 0x2f, 
+0x2f, 0xcf, 0x33, 0x4e, 0x06, 0xd6, 0x1d, 0x56, 
+0x50, 0xca, 0x18, 0x72, 0x7d, 0x5b, 0x3d, 0x00, 
+0x60, 0xcb, 0xae, 0x2d, 0xf8, 0xe3, 0xf7, 0x7f, 
+0x8c, 0x37, 0xfe, 0xf2, 0xb7, 0xf3, 0x96, 0x2d, 
+0x06, 0x73, 0x5e, 0x0e, 0x96, 0x06, 0x33, 0x00, 
+0x48, 0xdd, 0xdd, 0xdd, 0x1f, 0x06, 0x83, 0xc1, 
+0x71, 0x00, 0x8b, 0x19, 0x00, 0x56, 0xf2, 0xf5, 
+0xfe, 0x7a, 0x00, 0x68, 0xb5, 0x20, 0x0a, 0x20, 
+0x3c, 0x37, 0x37, 0x37, 0xf1, 0xe1, 0x87, 0x1f, 
+0xfe, 0x83, 0x20, 0x08, 0x3c, 0x57, 0x69, 0x82, 
+0xa5, 0xde, 0x6c, 0xa8, 0x8a, 0x75, 0xad, 0x75, 
+0x00, 0x80, 0xc0, 0x4e, 0x3f, 0x1c, 0x65, 0x0e, 
+0xd8, 0xdd, 0x76, 0xd8, 0x9d, 0xf6, 0xe7, 0xa2, 
+0xf6, 0xa6, 0x12, 0x16, 0xd6, 0x5d, 0x66, 0x50, 
+0x86, 0xa2, 0xaf, 0xaf, 0xef, 0x17, 0xdd, 0xdd, 
+0xdd, 0x57, 0xb1, 0x46, 0x96, 0x48, 0xae, 0xb0, 
+0xba, 0x51, 0x20, 0xe3, 0x0c, 0x95, 0x5d, 0x13, 
+0x65, 0x4a, 0x9c, 0x40, 0x36, 0x54, 0xce, 0x0d, 
+0x0d, 0x0d, 0xdd, 0xff, 0xec, 0xb3, 0xcf, 0x7e, 
+0x7a, 0xf2, 0xe4, 0xc9, 0x1f, 0x9a, 0x1b, 0x4c, 
+0x84, 0x82, 0x22, 0x3d, 0x99, 0x0d, 0x6a, 0x38, 
+0xbd, 0x4e, 0xb8, 0x7d, 0x2e, 0x00, 0x40, 0x62, 
+0x39, 0x81, 0x47, 0xdf, 0x8c, 0xe2, 0xe1, 0xd7, 
+0x23, 0x10, 0x92, 0x42, 0xd1, 0x1d, 0x22, 0x2d, 
+0x21, 0xe0, 0x76, 0xb1, 0x20, 0x26, 0x82, 0xb1, 
+0xb1, 0xb1, 0x81, 0x0f, 0x3e, 0xf8, 0xe0, 0x1c, 
+0xe4, 0x34, 0x19, 0x45, 0xfd, 0xd7, 0xec, 0xfd, 
+0x55, 0x00, 0x68, 0x40, 0x00, 0xb2, 0x66, 0x40, 
+0x32, 0x15, 0x29, 0xd1, 0x62, 0xa6, 0xa7, 0xa7, 
+0xe7, 0xaa, 0xd7, 0xeb, 0x2d, 0xef, 0xec, 0xec, 
+0x3c, 0xc5, 0x6d, 0x63, 0x09, 0xe3, 0xa0, 0x48, 
+0x0f, 0x0b, 0x80, 0x08, 0xf8, 0xb6, 0x78, 0x31, 
+0xd0, 0x7d, 0x17, 0x23, 0x37, 0x1f, 0x61, 0x72, 
+0x68, 0x52, 0x9d, 0xe4, 0x10, 0x14, 0x67, 0x92, 
+0xa3, 0x0a, 0x5f, 0x4e, 0xc1, 0x36, 0x51, 0x10, 
+0x86, 0x20, 0x18, 0x0c, 0x8e, 0xbd, 0xfb, 0xee, 
+0xbb, 0xff, 0x88, 0xd5, 0xe9, 0x31, 0xda, 0x44, 
+0x29, 0xc3, 0x14, 0x99, 0x82, 0x92, 0xa4, 0x4e, 
+0x9c, 0x38, 0x71, 0xac, 0xab, 0xab, 0xeb, 0x0d, 
+0x93, 0xc9, 0xc4, 0x49, 0x51, 0x09, 0xe9, 0x21, 
+0x01, 0x52, 0xb2, 0x68, 0x32, 0xe6, 0x25, 0x66, 
+0x0b, 0x05, 0x13, 0x90, 0xc1, 0x1c, 0x1e, 0x1e, 
+0xee, 0x7b, 0xe7, 0x9d, 0x77, 0xde, 0xe3, 0x79, 
+0xbe, 0x78, 0x49, 0x52, 0xc0, 0xc6, 0xd3, 0xe4, 
+0xf6, 0xee, 0xdd, 0xdb, 0x7a, 0xe6, 0xcc, 0x99, 
+0x1f, 0xd9, 0xed, 0x76, 0x37, 0x04, 0x40, 0x9c, 
+0x94, 0x20, 0x4e, 0x49, 0x39, 0xa3, 0x6d, 0x71, 
+0x88, 0x78, 0x08, 0x68, 0x1d, 0x01, 0xb1, 0x03, 
+0x92, 0x24, 0x89, 0xd7, 0xaf, 0x5f, 0xff, 0xf4, 
+0xec, 0xd9, 0xb3, 0xc5, 0x4f, 0x93, 0x53, 0x5f, 
+0x6e, 0x30, 0x51, 0xb2, 0xb2, 0xb2, 0x72, 0xcb, 
+0x9b, 0x6f, 0xbe, 0xf9, 0xfb, 0xb5, 0xb5, 0xb5, 
+0x72, 0xb4, 0x23, 0x09, 0x88, 0xe3, 0x12, 0xc4, 
+0x59, 0x18, 0xb8, 0x9d, 0x4d, 0x08, 0x5e, 0x02, 
+0x59, 0x70, 0x79, 0x74, 0x45, 0x3c, 0x1e, 0x5f, 
+0xfa, 0xe4, 0x93, 0x4f, 0x7e, 0xd6, 0xd3, 0xd3, 
+0xf3, 0x15, 0xe4, 0x24, 0xc9, 0x79, 0xc8, 0x5e, 
+0xdf, 0x28, 0x17, 0x60, 0x73, 0x89, 0x92, 0x6a, 
+0x81, 0xfc, 0xa9, 0xb2, 0x36, 0xc8, 0xa9, 0x33, 
+0x6a, 0xaa, 0xec, 0x91, 0x23, 0x47, 0xda, 0xbb, 
+0xba, 0xba, 0x4e, 0x95, 0x95, 0x95, 0xc9, 0xf1, 
+0xef, 0x14, 0x20, 0x2d, 0xc8, 0xcd, 0x93, 0x96, 
+0xf0, 0x6c, 0x60, 0xd8, 0x00, 0x52, 0x2a, 0x33, 
+0x4a, 0xe4, 0x47, 0xc9, 0x64, 0x32, 0xd1, 0xd7, 
+0xd7, 0xf7, 0xc5, 0xc7, 0x1f, 0x7f, 0x7c, 0x29, 
+0x1e, 0x8f, 0x2b, 0xa9, 0xb2, 0x8b, 0xd0, 0xcf, 
+0xf8, 0x8a, 0x97, 0x2a, 0x9b, 0x07, 0x84, 0x7c, 
+0xc9, 0xd2, 0x2e, 0xc8, 0xa6, 0xe1, 0x39, 0x7d, 
+0xfa, 0xf4, 0xa1, 0x43, 0x87, 0x0e, 0x9d, 0x70, 
+0x3a, 0x9d, 0x6a, 0xb2, 0x34, 0x84, 0x4c, 0x53, 
+0x79, 0x40, 0x4a, 0x92, 0xec, 0x89, 0x00, 0x11, 
+0xea, 0x29, 0x02, 0x62, 0x96, 0xe4, 0xdf, 0x4e, 
+0xc8, 0x10, 0x67, 0x28, 0x9d, 0x4e, 0x27, 0x87, 
+0x86, 0x86, 0x6e, 0x7c, 0xf4, 0xd1, 0x47, 0x17, 
+0x82, 0xc1, 0xe0, 0x74, 0xa6, 0xa6, 0x25, 0x64, 
+0x93, 0x1f, 0x9e, 0x5f, 0xb2, 0xf4, 0x1a, 0x20, 
+0x68, 0x0f, 0x48, 0x28, 0x67, 0x04, 0x4a, 0x32, 
+0xcd, 0x77, 0x02, 0x70, 0xbc, 0xf8, 0xe2, 0x8b, 
+0x4d, 0x1d, 0x1d, 0x1d, 0xed, 0x5b, 0xb7, 0x6e, 
+0xdd, 0xe9, 0xf1, 0x78, 0x9e, 0x29, 0x5d, 0x9e, 
+0xe7, 0xf9, 0xf8, 0x93, 0x27, 0x4f, 0xbe, 0x1d, 
+0x1c, 0x1c, 0xec, 0xbf, 0x72, 0xe5, 0x4a, 0x7f, 
+0x2c, 0x16, 0x53, 0x9c, 0x9b, 0xd2, 0xdb, 0xbf, 
+0xbe, 0x74, 0x79, 0xb5, 0xf0, 0xda, 0x07, 0x26, 
+0x14, 0x8d, 0x30, 0x3c, 0x30, 0xd1, 0xdc, 0xdc, 
+0x5c, 0xb3, 0x77, 0xef, 0xde, 0x66, 0xa7, 0xd3, 
+0xe9, 0x71, 0x38, 0x1c, 0x2e, 0x9b, 0xcd, 0xe6, 
+0xb4, 0xdb, 0xed, 0x0e, 0x96, 0x65, 0xd9, 0x78, 
+0x3c, 0x1e, 0x8b, 0xc5, 0x62, 0x91, 0xe5, 0xe5, 
+0xe5, 0x48, 0x34, 0x1a, 0x0d, 0x4f, 0x4e, 0x4e, 
+0x4e, 0x5d, 0xbd, 0x7a, 0xf5, 0x41, 0x2a, 0x95, 
+0x5a, 0xeb, 0xc0, 0x84, 0x56, 0xf0, 0x55, 0x49, 
+0x91, 0x45, 0x3f, 0x30, 0x91, 0x03, 0x02, 0xb0, 
+0xf9, 0x23, 0x33, 0xda, 0x8d, 0x4a, 0x65, 0x62, 
+0xa0, 0x4c, 0xbc, 0xd4, 0x70, 0x1c, 0xb2, 0xc7, 
+0x65, 0x72, 0x39, 0xef, 0x91, 0x19, 0xac, 0xe1, 
+0xed, 0xf3, 0xca, 0xf3, 0x3f, 0x74, 0x68, 0x4a, 
+0x7b, 0x72, 0x0c, 0xd0, 0x4f, 0xbf, 0x15, 0x10, 
+0x7e, 0x2d, 0x87, 0xa6, 0x0a, 0x3a, 0x38, 0x59, 
+0xc0, 0xb1, 0xb9, 0xdc, 0xbd, 0xba, 0xdc, 0x95, 
+0xa8, 0xc2, 0xeb, 0x1e, 0x9b, 0x43, 0x01, 0xc2, 
+0x03, 0x05, 0x02, 0x00, 0xe8, 0x40, 0x00, 0xf4, 
+0x1a, 0xa1, 0xdd, 0x69, 0xde, 0xc8, 0xc1, 0x49, 
+0x2d, 0xaf, 0x7b, 0x70, 0x12, 0x05, 0x0a, 0xae, 
+0x36, 0xf8, 0xff, 0xfb, 0xd1, 0xd9, 0xa2, 0x01, 
+0xa0, 0xab, 0xb4, 0x88, 0x87, 0xa7, 0x35, 0x57, 
+0xf9, 0xe6, 0x7f, 0xeb, 0xe1, 0xe9, 0xff, 0xab, 
+0xf4, 0xdf, 0x2a, 0xe5, 0xf7, 0xa0, 0x93, 0xbb, 
+0x74, 0xf2, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 
+0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/activitysleep.png b/source/bitmaps/misc/activitysleep.png
new file mode 100644 (file)
index 0000000..8c37ab6
Binary files /dev/null and b/source/bitmaps/misc/activitysleep.png differ
diff --git a/source/bitmaps/misc/emptyimage.cpp b/source/bitmaps/misc/emptyimage.cpp
new file mode 100644 (file)
index 0000000..7d79d8f
--- /dev/null
@@ -0,0 +1,28 @@
+#include <iostream>
+
+#ifndef MISC_EMPTYIMAGE_CPP
+#define MISC_EMPTYIMAGE_CPP
+
+static unsigned char misc_emptyimage_png[] = {
+0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
+0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52, 
+0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 
+0x08, 0x06, 0x00, 0x00, 0x00, 0x1f, 0x15, 0xc4, 
+0x89, 0x00, 0x00, 0x00, 0x04, 0x73, 0x42, 0x49, 
+0x54, 0x08, 0x08, 0x08, 0x08, 0x7c, 0x08, 0x64, 
+0x88, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 
+0x73, 0x00, 0x00, 0x03, 0x5e, 0x00, 0x00, 0x03, 
+0x5e, 0x01, 0xcb, 0x77, 0xab, 0x3d, 0x00, 0x00, 
+0x00, 0x19, 0x74, 0x45, 0x58, 0x74, 0x53, 0x6f, 
+0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x00, 0x77, 
+0x77, 0x77, 0x2e, 0x69, 0x6e, 0x6b, 0x73, 0x63, 
+0x61, 0x70, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x9b, 
+0xee, 0x3c, 0x1a, 0x00, 0x00, 0x00, 0x0d, 0x49, 
+0x44, 0x41, 0x54, 0x08, 0x99, 0x63, 0xf8, 0xff, 
+0xff, 0x3f, 0x03, 0x00, 0x08, 0xfc, 0x02, 0xfe, 
+0x85, 0xcd, 0xab, 0x34, 0x00, 0x00, 0x00, 0x00, 
+0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82, 
+0x82, };
+
+#endif
+
diff --git a/source/bitmaps/misc/emptyimage.png b/source/bitmaps/misc/emptyimage.png
new file mode 100644 (file)
index 0000000..163ac0b
Binary files /dev/null and b/source/bitmaps/misc/emptyimage.png differ
diff --git a/source/carddav/carddav.cpp b/source/carddav/carddav.cpp
new file mode 100644 (file)
index 0000000..5a07c41
--- /dev/null
@@ -0,0 +1,3636 @@
+#include "carddav.h"\r
+#include "../version.h"\r
+#include <wx/wx.h>\r
+#include <wx/tokenzr.h>\r
+#include <wx/ffile.h>\r
+#include <libxml/parser.h>\r
+#include <libxml/tree.h>\r
+#include <map>\r
+#include <thread>\r
+#include "../vcard/vcard.h"\r
+#include "../common/dirs.h"\r
+\r
+size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *stream){\r
+       \r
+       wxString Data;\r
+       wxString *PageInput;\r
+       Data = wxString::FromUTF8((char *)ptr);\r
+       \r
+       stream->Append(Data);\r
+       \r
+       return size * nmemb;\r
+\r
+}\r
+\r
+struct UploadDataStruc{\r
+       wxString *readptr;\r
+       long sizeleft;\r
+       int seek = 0;\r
+};\r
+\r
+int ProgressFunc(void *clientdata, double TTDown, double NDown, double TTUp, double NUp){\r
+\r
+       int ProgressRet;\r
+       \r
+       CardDAV *IncCardDAV = static_cast<CardDAV*>(clientdata);\r
+       ProgressRet = IncCardDAV->ProgressFuncProc(clientdata, TTDown, NDown, TTUp, NUp);\r
+       if (ProgressRet != 0){\r
+               return 1;\r
+       }\r
+       return 0;\r
+\r
+}\r
+\r
+wxString CardDAV::ServerAddress;\r
+int CardDAV::ServerPort;\r
+wxString CardDAV::ServerUser;\r
+wxString CardDAV::ServerPass;\r
+wxString CardDAV::ServerPrefix;\r
+wxString CardDAV::ServerAccount;\r
+bool CardDAV::ServerSSL;\r
+bool *CardDAV::ServerResult;\r
+bool *CardDAV::ServerMonitor;\r
+bool CardDAV::SSLStatus;\r
+bool CardDAV::SSLVerified;\r
+bool CardDAV::ValidResponse;\r
+bool CardDAV::AuthPassed;\r
+bool CardDAV::HasCalDAVSupport;\r
+bool CardDAV::AbortConnection;\r
+wxString CardDAV::ServerResponse;\r
+wxString CardDAV::ServerMethod;\r
+wxString CardDAV::ServerFilenameLocation;\r
+wxString CardDAV::ServerUploadData;\r
+wxString CardDAV::ETagData;\r
+wxString CardDAV::ETagResult;\r
+bool CardDAV::UploadMode;\r
+bool CardDAV::EditMode;\r
+long CardDAV::ItemIndex;\r
+std::map<int, int> *CardDAV::ActivityListPtr;\r
+char CardDAV::curlerrbuffer[CURL_ERROR_SIZE];\r
+SSLCertCollection CardDAV::SSLCertCol;\r
+int CardDAV::SSLErrorCode;\r
+int CardDAV::ConnectionErrorCode;\r
+wxString CardDAV::PageHeader;\r
+wxString CardDAV::PageData;\r
+CURLcode CardDAV::claconncode;\r
+int CardDAV::HTTPErrorCode;\r
+wxString CardDAV::ErrorMessage;\r
+\r
+CardDAV::CardDAV(){\r
+       ServerPort = 8080;\r
+       SSLStatus = FALSE;\r
+       SSLVerified = FALSE;\r
+       AuthPassed = FALSE;\r
+       ValidResponse = FALSE;\r
+       HasCalDAVSupport = FALSE;\r
+       SSLCertCol.SuccessCode = 0;\r
+\r
+       AbortConnection = FALSE;\r
+       UploadMode = FALSE;\r
+       EditMode = FALSE;\r
+       HTTPErrorCode = 0;\r
+}\r
+\r
+CardDAV::~CardDAV(){\r
+\r
+}\r
+\r
+size_t UploadReadFunc(void *ptr, size_t size, size_t nmemb, void *userdata){\r
+\r
+       struct UploadDataStruc *UploadPtr = (struct UploadDataStruc *)userdata;\r
+\r
+       if (UploadPtr->sizeleft){\r
+\r
+               //MeepMoop->sizeleft--;\r
+               //return 1;\r
+\r
+               UploadPtr->sizeleft--;\r
+               wxString wxSChar;\r
+\r
+               wxSChar = UploadPtr->readptr->Mid(UploadPtr->seek,1);\r
+\r
+               //*(char *)ptr = (char)wxSChar.mb_str();\r
+\r
+               strncpy((char *)ptr, (const char*)wxSChar.mb_str(wxConvUTF8), 1);\r
+\r
+               UploadPtr->seek++;\r
+\r
+               return 1;\r
+\r
+       }\r
+\r
+       return 0;\r
+\r
+}\r
+\r
+bool CardDAV::SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL){\r
+\r
+       ServerAddress = SvrAddress;\r
+       ServerPort = SvrPort;\r
+       ServerUser = SvrUser;\r
+       ServerPass = SvrPass;\r
+       ServerSSL = SvrSSL;\r
+       \r
+       return TRUE;\r
+\r
+}\r
+\r
+bool CardDAV::SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL, wxString SvrPrefix, wxString SvrAccount){\r
+\r
+       ServerAddress = SvrAddress;\r
+       ServerPort = SvrPort;\r
+       ServerUser = SvrUser;\r
+       ServerPass = SvrPass;\r
+       ServerSSL = SvrSSL;\r
+       ServerPrefix = SvrPrefix;\r
+       ServerAccount = SvrAccount;\r
+\r
+       return TRUE;\r
+\r
+}\r
+\r
+bool CardDAV::SetupResultBools(bool *SvrResult, bool *SvrMonitor){\r
+\r
+       ServerResult = SvrResult;\r
+       ServerMonitor = SvrMonitor;\r
+\r
+       return TRUE;\r
+\r
+}\r
+\r
+bool CardDAV::HasValidResponse(){\r
+\r
+       return ValidResponse;\r
+\r
+}\r
+\r
+bool CardDAV::CanDoCardDAV(){\r
+\r
+       return HasCalDAVSupport;\r
+\r
+}\r
+\r
+bool CardDAV::CanDoSSL(){\r
+\r
+       return SSLStatus;\r
+\r
+}\r
+\r
+bool CardDAV::SSLVerify(){\r
+\r
+       return SSLVerified;\r
+\r
+}\r
+\r
+bool CardDAV::AbleToLogin(){\r
+\r
+       return AuthPassed;\r
+\r
+}\r
+\r
+/*\r
+\r
+size_t CardDAV::WritebackFunc(char *ptr, size_t size, size_t nmemb, FILE *stream){\r
+\r
+       wxString Data;\r
+       Data = wxString::FromUTF8((char *)ptr);\r
+       if ((bool)stream == TRUE){\r
+               PageHeader.Append(Data);\r
+       } else {\r
+               PageData.Append(Data);\r
+       }\r
+       return size * nmemb;\r
+\r
+}\r
+\r
+*/\r
+\r
+int CardDAV::ProgressFuncProc(void *clientdata, double TTUp, double NUp, double TTDown, double NDown){\r
+\r
+       if (AbortConnection == TRUE){\r
+       \r
+               return -1;\r
+       \r
+       } else {\r
+       \r
+               return 0;\r
+       \r
+       }\r
+\r
+}\r
+\r
+void CardDAV::Abort(){\r
+\r
+       AbortConnection = TRUE;\r
+\r
+}\r
+\r
+bool CardDAV::Connect(){\r
+\r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       SSLStatus = TRUE;\r
+       AuthPassed = TRUE;\r
+       AbortConnection = FALSE;\r
+\r
+        CURL *conn;\r
+        CURLcode conncode;\r
+       wxString ServerAddressURL;\r
+       wxString ServerAuth;\r
+       wxString ServerAddressSSL;\r
+       wxString ServerAddressNormal;   \r
+\r
+        conn = curl_easy_init();\r
+       \r
+       struct CardDAVCURLPasser {\r
+       \r
+               CardDAV *Data;\r
+               bool HeaderMode = TRUE;\r
+       \r
+       } CardDAVHeader, CardDAVFooter;\r
+\r
+       CardDAVHeader.Data = this;\r
+       CardDAVHeader.HeaderMode = TRUE;\r
+       \r
+       CardDAVFooter.Data = this;\r
+       CardDAVFooter.HeaderMode = FALSE;\r
+\r
+       wxString Data1;\r
+       wxString Data2;\r
+       \r
+       ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+       ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+       ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+       \r
+       ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+       \r
+       // Try SSL first.\r
+\r
+\r
+       /*\r
+       char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)];\r
+       //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length());\r
+       strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1));\r
+       \r
+       char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)];\r
+       //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length());       \r
+       strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1));\r
+\r
+       char *ServerAuthChar = new char[(ServerAuth.Length() - 1)];\r
+       //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); \r
+       strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1));\r
+       \r
+       */\r
+       \r
+       if (ServerSSL){\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+\r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               union {\r
+                       struct curl_slist       *certdata;\r
+                       struct curl_certinfo    *certinfo;\r
+               } ptr;\r
+               \r
+               ptr.certdata = NULL;\r
+\r
+               curl_easy_getinfo(conn, CURLINFO_CERTINFO, &ptr.certdata);\r
+               \r
+               if (conncode == CURLE_OK){\r
+\r
+                       *ServerResult = TRUE;\r
+                       AuthPassed = TRUE;\r
+                       SSLStatus = TRUE;\r
+                       return TRUE;\r
+\r
+               } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                               \r
+                       ErrorMessage = wxString::Format(wxT("%s"), curl_easy_strerror(conncode));\r
+\r
+                       *ServerResult = TRUE;\r
+                       ValidResponse = FALSE;\r
+                       AuthPassed = FALSE;\r
+                       SSLStatus = TRUE;\r
+                       return TRUE;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+\r
+                       ErrorMessage = wxString::Format(wxT("%s"), curl_easy_strerror(conncode));\r
+\r
+                       *ServerResult = FALSE;\r
+                       return FALSE;                                   \r
+\r
+               }\r
+\r
+       } else {\r
+       \r
+       // No SSL.\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);    \r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+                       // Process the server header response and look for\r
+                       // 'addressbook' within the DAV header.\r
+                       \r
+                       wxStringTokenizer wxSHeaderLines(PageHeader, wxT("\r\n"));\r
+                       wxString wxSHeaderLine;\r
+                       std::map<int, wxString> DAVHeaderLines;\r
+                       \r
+                       while (wxSHeaderLines.HasMoreTokens()){\r
+                       \r
+                               wxSHeaderLine = wxSHeaderLines.GetNextToken();\r
+                               \r
+                               if (wxSHeaderLine.Mid(0, 4) == wxT("DAV:")){\r
+                               \r
+                                       // Look for address book in the line.\r
+                                       \r
+                                       if (wxSHeaderLine.Find(wxT("addressbook")) != wxNOT_FOUND){\r
+                                       \r
+                                               HasCalDAVSupport = TRUE;\r
+                                       \r
+                                       }\r
+                               \r
+                               }\r
+                       \r
+                       }\r
+\r
+                       *ServerResult = TRUE;\r
+                       ValidResponse = TRUE;                   \r
+                       AuthPassed = TRUE;\r
+                       SSLStatus = FALSE;\r
+                       return TRUE;\r
+\r
+               } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                                       \r
+                       *ServerResult = TRUE;\r
+                       ValidResponse = FALSE;\r
+                       AuthPassed = FALSE;\r
+                       SSLStatus = FALSE;\r
+                       return TRUE;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                               \r
+                       *ServerResult = FALSE;\r
+                       return FALSE;\r
+\r
+               }\r
+               \r
+               // TODO: Double check and make sure HTTP Authentication is possible.\r
+               \r
+       }               \r
+               \r
+       *ServerResult = TRUE;\r
+       return TRUE;    \r
+\r
+}\r
+\r
+void CardDAV::GetSSLResults(){\r
+\r
+       \r
+\r
+}\r
+\r
+void CardDAV::ProcessDataThread(){\r
+\r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       SSLStatus = TRUE;\r
+       AuthPassed = TRUE;\r
+       AbortConnection = FALSE;\r
+\r
+        CURL *conn;\r
+        CURLcode conncode;\r
+       wxString ServerAddressURL;\r
+       wxString ServerAuth;\r
+       wxString ServerAddressSSL;\r
+       wxString ServerAddressNormal;   \r
+\r
+        conn = curl_easy_init();\r
+       \r
+       struct CardDAVCURLPasser {\r
+       \r
+               CardDAV *Data;\r
+               bool HeaderMode = TRUE;\r
+       \r
+       } CardDAVHeader, CardDAVFooter;\r
+\r
+       CardDAVHeader.Data = this;\r
+       CardDAVHeader.HeaderMode = TRUE;\r
+       \r
+       CardDAVFooter.Data = this;\r
+       CardDAVFooter.HeaderMode = FALSE;\r
+\r
+       wxString Data1;\r
+       wxString Data2;\r
+       \r
+       wxString ETag;\r
+       wxString ETagOriginal;\r
+       wxString ETagServer;\r
+               \r
+       ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation;\r
+       ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+       ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+       \r
+       ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+       \r
+       // Try SSL first.\r
+\r
+\r
+       /*\r
+       char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)];\r
+       //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length());\r
+       strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1));\r
+       \r
+       char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)];\r
+       //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length());       \r
+       strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1));\r
+\r
+       char *ServerAuthChar = new char[(ServerAuth.Length() - 1)];\r
+       //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); \r
+       strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1));\r
+       \r
+       */\r
+\r
+       //std::string WriteDataString = std::string(ServerUploadData.mb_str());\r
+\r
+       std::map<int,int>::iterator ActIter;\r
+       struct UploadDataStruc UploadData;\r
+       \r
+       \r
+       ActIter = ActivityListPtr->find(ItemIndex);\r
+       \r
+       // Update result flag.\r
+\r
+       ActIter->second = 1;\r
+       \r
+       // Setup the request mode if it is not empty.\r
+       \r
+       if (!ServerMethod.IsEmpty()){\r
+       \r
+               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, (const char*)ServerMethod.mb_str(wxConvUTF8));\r
+\r
+       }\r
+\r
+       if (ServerSSL){\r
+\r
+               wxString ServerCertFilename;\r
+               bool MatchingCert = FALSE;\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               \r
+               if (UploadMode == TRUE){\r
+                       \r
+                       UploadData.readptr = &ServerUploadData;\r
+                       UploadData.sizeleft = ServerUploadData.Len();\r
+                       curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+                       curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               }\r
+\r
+               ServerCertFilename = GetAccountDir(ServerAccount, TRUE);\r
+\r
+               if (wxFile::Exists(ServerCertFilename) == TRUE){\r
+               \r
+                       curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);\r
+                       curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
+               \r
+               }\r
+\r
+               //UploadData.readptr = &CardDAVDataQuery;\r
+               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+               //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+               //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+               //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+               \r
+               claconncode = (curl_easy_perform(conn));\r
+\r
+               // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without\r
+               // the local certificate in use.\r
+\r
+               if (claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+                       \r
+                       curl_easy_cleanup(conn);\r
+                       conn = curl_easy_init();\r
+                       \r
+                       curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+                       if (UploadMode == TRUE){\r
+\r
+                               UploadData.readptr = &ServerUploadData;\r
+                               UploadData.sizeleft = ServerUploadData.Len();\r
+                               curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+                               curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+                               curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+                       }\r
+                       \r
+                       claconncode = (curl_easy_perform(conn));\r
+                       \r
+                       // If claconncode is CURLE_OK then delete the certificate file as that\r
+                       // is no longer needed.\r
+                       \r
+                       if (claconncode == CURLE_OK){\r
+                       \r
+                               // Delete the certificate file.\r
+                               \r
+                               wxRemoveFile(ServerCertFilename);\r
+                       \r
+                       }\r
+               \r
+               }\r
+\r
+               // Check if it fails with a CURLE_SSL_CACERT then compare\r
+               // the certificates as PEM files.\r
+               \r
+               if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){\r
+               \r
+                       //curl_easy_cleanup(conn);\r
+                       //conn = curl_easy_init();\r
+\r
+                       CURL *sslerrconn;\r
+                       sslerrconn = curl_easy_init();\r
+                       CURLcode sslerrconncode;\r
+\r
+                       //claconncode = (curl_easy_perform(conn));\r
+\r
+                       wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+               \r
+                       wxString SSLLocalData;\r
+                       wxString SSLServerData;\r
+               \r
+                       sslerrconncode = (curl_easy_perform(sslerrconn));\r
+               \r
+                       SSLCertCol = BuildSSLCollection(sslerrconn);\r
+                       std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0);\r
+                       std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));\r
+                       \r
+                       wxFFile SSLLocalFile;\r
+                       \r
+#if wxABI_VERSION < 20900\r
+                       SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r"));\r
+#else\r
+                       SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
+#endif \r
+       \r
+                       // Load the recovery database for tasks not done.\r
+       \r
+                       if (SSLLocalFile.IsOpened() == TRUE){\r
+\r
+                       // Check if we are using wxWidgets version 2.8 or less and\r
+                       // execute the required command accordingly.\r
+       \r
+                               SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
+               \r
+       \r
+                       }\r
+                       \r
+                       SSLServerData = SSLDataIter->second;\r
+                       \r
+                       if (SSLLocalData == SSLServerData){\r
+                       \r
+                               // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER\r
+                               // and CURLOPT_SSL_VERIFYHOST off.\r
+                       \r
+                               curl_easy_cleanup(conn);\r
+                               conn = curl_easy_init();\r
+                               \r
+                               PageData.clear();\r
+                               PageHeader.clear();\r
+                       \r
+                               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+                               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+                               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+                               if (UploadMode == TRUE){\r
+\r
+                                       UploadData.readptr = &ServerUploadData;\r
+                                       UploadData.sizeleft = ServerUploadData.Len();\r
+                                       curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+                                       curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+                                       curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+                               }\r
+                               \r
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0);\r
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       \r
+                               claconncode = (curl_easy_perform(conn));\r
+                               \r
+                               MatchingCert = TRUE;\r
+                       \r
+                       }\r
+                       \r
+                       if (MatchingCert == FALSE){\r
+               \r
+                               claconncode = CURLE_SSL_CACERT;\r
+                               return;\r
+               \r
+                       }\r
+                       \r
+                       curl_easy_cleanup(sslerrconn);\r
+               \r
+               }\r
+\r
+               // Sort out SSL error.\r
+               \r
+               // When SSL cert error occurs, connect again and fetch certificates.\r
+               // Display a message to the user explaining that an invalid\r
+               // certificate has been given and let the user decide what\r
+               // to do next.\r
+\r
+               if (claconncode == CURLE_OK){\r
+\r
+               } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+               \r
+                       CURL *sslerrconn;\r
+                       sslerrconn = curl_easy_init();\r
+                       CURLcode sslerrconncode;\r
+               \r
+                       wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+               \r
+                       // Replace conn with sslerrconn!\r
+               \r
+                       curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+               \r
+                       sslerrconncode = (curl_easy_perform(sslerrconn));\r
+\r
+                       SSLCertCol = BuildSSLCollection(sslerrconn);\r
+                       SSLCertCol.SuccessCode = 1;\r
+\r
+                       return;\r
+               \r
+               } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %d\n", http_code);\r
+                                       \r
+                       return;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+                       return;\r
+\r
+               }\r
+\r
+       } else {\r
+       \r
+       // No SSL.\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               \r
+               if (UploadMode == TRUE){\r
+                       \r
+                       UploadData.readptr = &ServerUploadData;\r
+                       UploadData.sizeleft = ServerUploadData.Len();\r
+                       curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+                       curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               }\r
+               \r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+                       // Process the server header response and look for\r
+                       // 'addressbook' within the DAV header.\r
+                       \r
+                       wxStringTokenizer wxSHeaderLines(PageHeader, wxT("\r\n"));\r
+                       wxString wxSHeaderLine;\r
+                       std::map<int, wxString> DAVHeaderLines;\r
+                       \r
+                       while (wxSHeaderLines.HasMoreTokens()){\r
+                       \r
+                               wxSHeaderLine = wxSHeaderLines.GetNextToken();\r
+                               \r
+                               if (wxSHeaderLine.Mid(0, 5) == wxT("ETag:")){\r
+                               \r
+                                       ETagData = wxSHeaderLine.Mid(5);\r
+                                       ETagData.Trim();\r
+                                       ETagData.Trim(FALSE);\r
+                                       \r
+                                       // Check for commas.\r
+                                       \r
+                                       if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){\r
+                                                       \r
+                                               ETagData.Remove(0, 1);\r
+                                               ETagData.RemoveLast();\r
+                                                       \r
+                                       }\r
+                               \r
+                               }\r
+                               \r
+                               if (wxSHeaderLine.Mid(0, 4) == wxT("DAV:")){\r
+                               \r
+                                       // Look for address book in the line.\r
+                                       \r
+                                       if (wxSHeaderLine.Find(wxT("addressbook")) != wxNOT_FOUND){\r
+                                       \r
+                                               HasCalDAVSupport = TRUE;\r
+                                       \r
+                                       }\r
+                               \r
+                               }\r
+                       \r
+                       }\r
+                       \r
+                       // Get the ETag from the header.\r
+                       \r
+                       if (UploadMode == TRUE){\r
+               \r
+                               wxString PageHeaderLine;\r
+               \r
+                               wxStringTokenizer PageHeaderSplit(PageHeader, wxT("\r\n"));\r
+                               \r
+                               if (PageHeaderSplit.HasMoreTokens()){\r
+                               \r
+                                       PageHeaderLine = PageHeaderSplit.GetNextToken();\r
+                               \r
+                               }\r
+               \r
+                       }\r
+\r
+                       ActIter->second = 4;\r
+                       return;\r
+\r
+               } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+\r
+                       fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+                                       GetHTTPCode());\r
+\r
+                       ActIter->second = 2;\r
+                       return;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                               \r
+                       ActIter->second = 2;\r
+                       return;\r
+\r
+               }\r
+               \r
+       }\r
+       \r
+       /*\r
+       \r
+       }\r
+       \r
+       */\r
+       \r
+       // Connection was successful \r
+               /*      \r
+       \r
+       if (conn){\r
+               \r
+               wxString ServerAddressURL;\r
+               \r
+               // Try secure connection first.\r
+               \r
+               \r
+               \r
+\r
+               ServerAddressURL = wxT("http://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+               \r
+               ServerAddressURL.Trim();\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressURL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, NULL);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, NULL);\r
+                       \r
+\r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               if (conncode == CURLE_OK){\r
+                       *ServerResult = TRUE;\r
+                       return TRUE;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                               curl_easy_strerror(conncode));                  \r
+\r
+                       *ServerResult = FALSE;\r
+                       return FALSE;           \r
+               }\r
+\r
+               // Failed. So use unsecure connection.\r
+               UseSSL = FALSE;\r
+               \r
+               ServerAddress = wxT("http://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort);\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, ServerAddress.c_str());\r
+       \r
+               conncode = (curl_easy_perform(conn));           \r
+               \r
+               if (conncode != CURLE_OK){\r
+                       *ServerResult = FALSE;\r
+                       return FALSE;\r
+               } else {\r
+                       *ServerResult = TRUE;\r
+                       return TRUE;\r
+               }\r
+       \r
+       } else {\r
+       \r
+               *ServerResult = FALSE;\r
+               return FALSE;\r
+       \r
+       }\r
+       \r
+               */\r
+       \r
+       // Catch all.\r
+       \r
+       ActIter->second = 1;\r
+       *ServerResult = TRUE;\r
+       return;\r
+\r
+}\r
+\r
+void CardDAV::ProcessData(){\r
+\r
+       std::thread ConnectThread(&CardDAV::ProcessDataThread, this);\r
+       ConnectThread.detach();\r
+\r
+}\r
+\r
+void CardDAV::SetServerFilename(wxString Filename){\r
+\r
+       ServerFilenameLocation = Filename;\r
+\r
+}\r
+\r
+void CardDAV::GetServerContactData()\r
+{\r
+\r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       SSLStatus = TRUE;\r
+       AuthPassed = TRUE;\r
+       AbortConnection = FALSE;\r
+       \r
+       wxString ServerCertFilename;\r
+       bool MatchingCert = FALSE;\r
+\r
+        CURL *conn;\r
+        CURLcode conncode;\r
+       wxString ServerAddressURL;\r
+       wxString ServerAuth;\r
+       wxString ServerAddressSSL;\r
+       wxString ServerAddressNormal;   \r
+\r
+        conn = curl_easy_init();\r
+       \r
+       struct CardDAVCURLPasser {\r
+       \r
+               CardDAV *Data;\r
+               bool HeaderMode = TRUE;\r
+       \r
+       } CardDAVHeader, CardDAVFooter;\r
+\r
+       CardDAVHeader.Data = this;\r
+       CardDAVHeader.HeaderMode = TRUE;\r
+       \r
+       CardDAVFooter.Data = this;\r
+       CardDAVFooter.HeaderMode = FALSE;\r
+\r
+       wxString Data1;\r
+       wxString Data2;\r
+       \r
+       ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation;\r
+       ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+       ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+       \r
+       ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+       \r
+       // Try SSL first.\r
+\r
+\r
+       /*\r
+       char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)];\r
+       //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length());\r
+       strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1));\r
+       \r
+       char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)];\r
+       //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length());       \r
+       strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1));\r
+\r
+       char *ServerAuthChar = new char[(ServerAuth.Length() - 1)];\r
+       //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); \r
+       strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1));\r
+       \r
+       */\r
+\r
+       //std::string WriteDataString = std::string(ServerUploadData.mb_str());\r
+\r
+       std::map<int,int>::iterator ActIter;\r
+       struct UploadDataStruc UploadData;\r
+       \r
+       \r
+       ActIter = ActivityListPtr->find(ItemIndex);\r
+\r
+       //ActIter->second = 1;\r
+\r
+       /*wxString CardDAVDataQuery = wxT("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");\r
+       CardDAVDataQuery.Append(wxT("<C:addressbook-multiget xmlns:D=\"DAV:\"\r\n"));\r
+       CardDAVDataQuery.Append(wxT("   xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\r\n"));\r
+       CardDAVDataQuery.Append(wxT("<D:prop><D:getetag/>\r\n"));\r
+       CardDAVDataQuery.Append(wxT("<C:address-data>\r\n"));\r
+       CardDAVDataQuery.Append(wxT("   <C:allprop/>\r\n"));\r
+       CardDAVDataQuery.Append(wxT("</C:address-data></D:prop>\r\n"));\r
+       CardDAVDataQuery.Append(wxT("</C:addressbook-multiget>"));*/\r
+\r
+       if (ServerSSL){\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               \r
+               //UploadData.readptr = &CardDAVDataQuery;\r
+               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+               //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+               //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+               //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+\r
+               ServerCertFilename = GetAccountDir(ServerAccount, TRUE);\r
+\r
+               if (wxFile::Exists(ServerCertFilename) == TRUE){\r
+               \r
+                       curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);\r
+                       curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
+               \r
+               }\r
+\r
+               claconncode = (curl_easy_perform(conn));\r
+\r
+               // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without\r
+               // the local certificate in use.\r
+\r
+               if (claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+                       \r
+                       curl_easy_cleanup(conn);\r
+                       conn = curl_easy_init();\r
+                       \r
+                       curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+                       curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+                       curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               \r
+                       //UploadData.readptr = &CardDAVDataQuery;\r
+                       //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+                       \r
+                       claconncode = (curl_easy_perform(conn));\r
+                       \r
+                       // If claconncode is CURLE_OK then delete the certificate file as that\r
+                       // is no longer needed.\r
+                       \r
+                       if (claconncode == CURLE_OK){\r
+                       \r
+                               // Delete the certificate file.\r
+                               \r
+                               wxRemoveFile(ServerCertFilename);\r
+                       \r
+                       }\r
+               \r
+               }\r
+\r
+               // Check if it fails with a CURLE_SSL_CACERT then compare\r
+               // the certificates as PEM files.\r
+               \r
+               if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){\r
+               \r
+                       //curl_easy_cleanup(conn);\r
+                       //conn = curl_easy_init();\r
+\r
+                       CURL *sslerrconn;\r
+                       sslerrconn = curl_easy_init();\r
+                       CURLcode sslerrconncode;\r
+\r
+                       //claconncode = (curl_easy_perform(conn));\r
+\r
+                       wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+\r
+                       curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+                       curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+                       curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               \r
+                       //UploadData.readptr = &CardDAVDataQuery;\r
+                       //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+               \r
+                       wxString SSLLocalData;\r
+                       wxString SSLServerData;\r
+               \r
+                       sslerrconncode = (curl_easy_perform(sslerrconn));\r
+               \r
+                       SSLCertCol = BuildSSLCollection(sslerrconn);\r
+                       std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0);\r
+                       std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));\r
+                       \r
+                       wxFFile SSLLocalFile;\r
+                       \r
+#if wxABI_VERSION < 20900\r
+                       SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r"));\r
+#else\r
+                       SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
+#endif \r
+       \r
+                       // Load the recovery database for tasks not done.\r
+       \r
+                       if (SSLLocalFile.IsOpened() == TRUE){\r
+\r
+                       // Check if we are using wxWidgets version 2.8 or less and\r
+                       // execute the required command accordingly.\r
+       \r
+                               SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
+               \r
+       \r
+                       }\r
+                       \r
+                       SSLServerData = SSLDataIter->second;\r
+                       \r
+                       if (SSLLocalData == SSLServerData){\r
+                       \r
+                               // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER\r
+                               // and CURLOPT_SSL_VERIFYHOST off.\r
+                       \r
+                               curl_easy_cleanup(conn);\r
+                               conn = curl_easy_init();\r
+                               \r
+                               PageData.clear();\r
+                               PageHeader.clear();\r
+                       \r
+                               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+                               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+                               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               \r
+                               //UploadData.readptr = &CardDAVDataQuery;\r
+                               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0);\r
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                                                       \r
+                               claconncode = (curl_easy_perform(conn));\r
+                               \r
+                               MatchingCert = TRUE;\r
+                       \r
+                       }\r
+                       \r
+                       if (MatchingCert == FALSE){\r
+               \r
+                               claconncode = CURLE_SSL_CACERT;\r
+                               return;\r
+               \r
+                       }\r
+                       \r
+                       curl_easy_cleanup(sslerrconn);\r
+               \r
+               }\r
+               \r
+               // Sort out SSL error.\r
+               \r
+               // When SSL cert error occurs, connect again and fetch certificates.\r
+               // Display a message to the user explaining that an invalid\r
+               // certificate has been given and let the user decide what\r
+               // to do next.\r
+\r
+               if (claconncode == CURLE_OK){\r
+\r
+               } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+               \r
+                       CURL *sslerrconn;\r
+                       sslerrconn = curl_easy_init();\r
+                       CURLcode sslerrconncode;\r
+               \r
+                       wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+               \r
+                       // Replace conn with sslerrconn!\r
+               \r
+                       curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+                                       \r
+                       sslerrconncode = (curl_easy_perform(sslerrconn));\r
+\r
+                       SSLCertCol = BuildSSLCollection(sslerrconn);\r
+                       SSLCertCol.SuccessCode = 1;\r
+\r
+                       return;\r
+               \r
+               } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %d\n", http_code);\r
+                                       \r
+                       return;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+                       return;\r
+\r
+               }\r
+       } else {\r
+       \r
+               // No SSL.\r
+               \r
+               wxString EmptyString;\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               \r
+               //UploadData.readptr = &CardDAVDataQuery;\r
+               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+               //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+               //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+               //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+\r
+               //UploadData.readptr = &CardDAVDataQuery;\r
+               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+               //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+               //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+               //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);     \r
+               \r
+               PageData.Clear();\r
+               PageHeader.Clear();\r
+               \r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+               } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                                       \r
+                       fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+                                       GetHTTPCode());\r
+                                       \r
+                       return;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                               \r
+                       return;\r
+\r
+               }\r
+               \r
+       }\r
+       \r
+       return;\r
+\r
+}\r
+\r
+wxString CardDAV::GetPageData()\r
+{\r
+\r
+       return PageData;\r
+\r
+}\r
+\r
+void CardDAV::GetServerETagValueThread()\r
+{\r
+\r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       SSLStatus = TRUE;\r
+       AuthPassed = TRUE;\r
+       AbortConnection = FALSE;\r
+\r
+        CURL *conn;\r
+        CURLcode conncode;\r
+       wxString ServerAddressURL;\r
+       wxString ServerAuth;\r
+       wxString ServerAddressSSL;\r
+       wxString ServerAddressNormal;   \r
+\r
+        conn = curl_easy_init();\r
+       \r
+       struct CardDAVCURLPasser {\r
+       \r
+               CardDAV *Data;\r
+               bool HeaderMode = TRUE;\r
+       \r
+       } CardDAVHeader, CardDAVFooter;\r
+\r
+       CardDAVHeader.Data = this;\r
+       CardDAVHeader.HeaderMode = TRUE;\r
+       \r
+       CardDAVFooter.Data = this;\r
+       CardDAVFooter.HeaderMode = FALSE;\r
+\r
+       wxString Data1;\r
+       wxString Data2;\r
+       \r
+       ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + ServerFilenameLocation;\r
+       ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+       ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+       \r
+       ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+       \r
+       // Try SSL first.\r
+\r
+\r
+       /*\r
+       char *ServerAdrSSLChar = new char[(ServerAddressSSL.Length() - 1)];\r
+       //memset(ServerAdrSSLChar, 0, ServerAddressSSL.Length());\r
+       strncpy(ServerAdrSSLChar, (const char*)ServerAddressSSL.mb_str(wxConvUTF8), (ServerAddressSSL.Length() - 1));\r
+       \r
+       char *ServerAdrNorChar = new char[(ServerAddressNormal.Length() - 1)];\r
+       //memset(ServerAdrNorChar, 0, ServerAddressSSL.Length());       \r
+       strncpy(ServerAdrNorChar, (const char*)ServerAddressNormal.mb_str(wxConvUTF8), (ServerAddressNormal.Length() - 1));\r
+\r
+       char *ServerAuthChar = new char[(ServerAuth.Length() - 1)];\r
+       //memset(ServerAuthChar, 0, ServerAddressSSL.Length()); \r
+       strncpy(ServerAuthChar, (const char*)ServerAuth.mb_str(wxConvUTF8), (ServerAuth.Length() - 1));\r
+       \r
+       */\r
+\r
+       //std::string WriteDataString = std::string(ServerUploadData.mb_str());\r
+\r
+       std::map<int,int>::iterator ActIter;\r
+       struct UploadDataStruc UploadData;\r
+       \r
+       \r
+       ActIter = ActivityListPtr->find(ItemIndex);\r
+       \r
+       static const char* query =\r
+       "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"\r
+       "<C:addressbook-query xmlns:D=\"DAV:\""\r
+       "       xmlns:C=\"urn:ietf:params:xml:ns:carddav\">"\r
+       "<D:prop><D:getetag/>"\r
+       //"<C:address-data>"\r
+       //"     <C:allprop/>"\r
+       //"</C:address-data></D:prop>"\r
+       "</D:prop>"\r
+       "<C:filter/>"\r
+       "</C:addressbook-query>";\r
+\r
+       if (ServerSSL){\r
+\r
+               wxString ServerCertFilename;\r
+               bool MatchingCert = FALSE;\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+               //UploadData.readptr = &CardDAVDataQuery;\r
+               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+               //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+               //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+               //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+\r
+               ServerCertFilename = GetAccountDir(ServerAccount, TRUE);\r
+\r
+               if (wxFile::Exists(ServerCertFilename) == TRUE){\r
+               \r
+                       curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);\r
+                       curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
+               \r
+               }\r
+\r
+               claconncode = (curl_easy_perform(conn));\r
+\r
+               // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without\r
+               // the local certificate in use.\r
+\r
+               if (claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+                       \r
+                       curl_easy_cleanup(conn);\r
+                       conn = curl_easy_init();\r
+                       \r
+                       curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+                       curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+                       curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));   \r
+                       \r
+                       claconncode = (curl_easy_perform(conn));\r
+                       \r
+                       // If claconncode is CURLE_OK then delete the certificate file as that\r
+                       // is no longer needed.\r
+                       \r
+                       if (claconncode == CURLE_OK){\r
+                       \r
+                               // Delete the certificate file.\r
+                               \r
+                               wxRemoveFile(ServerCertFilename);\r
+                       \r
+                       }\r
+               \r
+               }\r
+\r
+               // Check if it fails with a CURLE_SSL_CACERT then compare\r
+               // the certificates as PEM files.\r
+               \r
+               if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){\r
+               \r
+                       //curl_easy_cleanup(conn);\r
+                       //conn = curl_easy_init();\r
+\r
+                       CURL *sslerrconn;\r
+                       sslerrconn = curl_easy_init();\r
+                       CURLcode sslerrconncode;\r
+\r
+                       //claconncode = (curl_easy_perform(conn));\r
+\r
+                       wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+               \r
+                       wxString SSLLocalData;\r
+                       wxString SSLServerData;\r
+               \r
+                       sslerrconncode = (curl_easy_perform(sslerrconn));\r
+               \r
+                       SSLCertCol = BuildSSLCollection(sslerrconn);\r
+                       std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0);\r
+                       std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));\r
+                       \r
+                       wxFFile SSLLocalFile;\r
+                       \r
+#if wxABI_VERSION < 20900\r
+                       SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r"));\r
+#else\r
+                       SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
+#endif \r
+       \r
+                       // Load the recovery database for tasks not done.\r
+       \r
+                       if (SSLLocalFile.IsOpened() == TRUE){\r
+\r
+                       // Check if we are using wxWidgets version 2.8 or less and\r
+                       // execute the required command accordingly.\r
+       \r
+                               SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
+               \r
+       \r
+                       }\r
+                       \r
+                       SSLServerData = SSLDataIter->second;\r
+                       \r
+                       if (SSLLocalData == SSLServerData){\r
+                       \r
+                               // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER\r
+                               // and CURLOPT_SSL_VERIFYHOST off.\r
+                       \r
+                               curl_easy_cleanup(conn);\r
+                               conn = curl_easy_init();\r
+                               \r
+                               PageData.clear();\r
+                               PageHeader.clear();\r
+                       \r
+                               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+                               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+                               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+                               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+                               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+                               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));           \r
+                       \r
+                               claconncode = (curl_easy_perform(conn));\r
+                               \r
+                               MatchingCert = TRUE;\r
+                       \r
+                       }\r
+                       \r
+                       if (MatchingCert == FALSE){\r
+               \r
+                               claconncode = CURLE_SSL_CACERT;\r
+                               return;\r
+               \r
+                       }\r
+                       \r
+                       curl_easy_cleanup(sslerrconn);\r
+               \r
+               }\r
+\r
+\r
+\r
+               // Sort out SSL error.\r
+               \r
+               // When SSL cert error occurs, connect again and fetch certificates.\r
+               // Display a message to the user explaining that an invalid\r
+               // certificate has been given and let the user decide what\r
+               // to do next.\r
+\r
+               if (claconncode == CURLE_OK){\r
+\r
+               } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+               \r
+                       CURL *sslerrconn;\r
+                       sslerrconn = curl_easy_init();\r
+                       CURLcode sslerrconncode;\r
+               \r
+                       wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+               \r
+                       // Replace conn with sslerrconn!\r
+               \r
+                       curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+                                       \r
+                       sslerrconncode = (curl_easy_perform(sslerrconn));\r
+\r
+                       SSLCertCol = BuildSSLCollection(sslerrconn);\r
+                       SSLCertCol.SuccessCode = 1;\r
+\r
+                       return;\r
+               \r
+               } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %d\n", http_code);\r
+                                       \r
+                       return;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+                       return;\r
+\r
+               }\r
+\r
+       } else {\r
+       \r
+               // No SSL.\r
+       \r
+               wxString EmptyString;\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+               //UploadData.readptr = &CardDAVDataQuery;\r
+               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+               //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+               //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+               //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));           \r
+               \r
+               PageData.Clear();\r
+               PageHeader.Clear();\r
+               \r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+               } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                                       \r
+                       return;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                               \r
+                       return;\r
+\r
+               }\r
+               \r
+       }\r
+       \r
+       xmlDocPtr xmlCardDAVDoc;\r
+\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+\r
+       xmlNodePtr nodeLevel1;\r
+       xmlNodePtr nodeLevel2;\r
+       xmlNodePtr nodeLevel3;\r
+       xmlNodePtr nodeLevel4;\r
+       xmlNodePtr nodeLevel5;\r
+       xmlNodePtr nodeLevel6;\r
+\r
+       std::map<wxString,wxString> xmlDataMap;\r
+\r
+       wxString DataFilename;\r
+       wxString ETagData;\r
+\r
+       std::string xmlStringSafe;\r
+\r
+       // Tranverse through the catacombs of the response to get our ETag for the file.\r
+\r
+       for (nodeLevel1 = xmlCardDAVDoc->children;\r
+               nodeLevel1 != NULL;\r
+               nodeLevel1 = nodeLevel1->next)\r
+       {\r
+\r
+               for (nodeLevel2 = nodeLevel1->children;\r
+                       nodeLevel2 != NULL;\r
+                       nodeLevel2 = nodeLevel2->next)\r
+               {\r
+\r
+                       for (nodeLevel3 = nodeLevel2->children;\r
+                       nodeLevel3 != NULL;\r
+                       nodeLevel3 = nodeLevel3->next)\r
+                       {\r
+\r
+                               bool HREFFound = FALSE;\r
+                               bool ETagFound = FALSE;\r
+\r
+                               if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") ||\r
+                               !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") ||\r
+                               !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href")\r
+                               ){\r
+\r
+                                       // Get the filename.\r
+                                       \r
+                                       for (nodeLevel4 = nodeLevel3->children;\r
+                                       nodeLevel4 != NULL;\r
+                                       nodeLevel4 = nodeLevel4->next)\r
+                                       {\r
+                                       \r
+                                               if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") ||\r
+                                               !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") ||\r
+                                               !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text")\r
+                                               ){\r
+\r
+                                                       DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content);\r
+                                                       wxStringTokenizer wSTDFilename(DataFilename, wxT("/"));\r
+                                               \r
+                                                       while (wSTDFilename.HasMoreTokens()){\r
+                                                       \r
+                                                               DataFilename = wSTDFilename.GetNextToken();\r
+                                                       \r
+                                                       }\r
+                                                       \r
+                                                       HREFFound = TRUE;\r
+                                               \r
+                                               }\r
+                                               \r
+       \r
+                                       \r
+                                       }\r
+\r
+                               } else {\r
+\r
+                                       for (nodeLevel4 = nodeLevel3->children;\r
+                                       nodeLevel4 != NULL;\r
+                                       nodeLevel4 = nodeLevel4->next)\r
+                                       {\r
+                                                       \r
+                                                       for (nodeLevel5 = nodeLevel4->children;\r
+                                                       nodeLevel5 != NULL;\r
+                                                       nodeLevel5 = nodeLevel5->next)\r
+                                                       {\r
+\r
+                                                               if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") ||\r
+                                                               !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") ||\r
+                                                               !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag")\r
+                                                               ){\r
+\r
+                                                                       for (nodeLevel6 = nodeLevel5->children;\r
+                                                                       nodeLevel6 != NULL;\r
+                                                                       nodeLevel6 = nodeLevel6->next)\r
+                                                                       {\r
+                                                       \r
+                                                                               // Strip the quotes from the ETag.\r
+                                                       \r
+                                                                               ETagData = wxString::FromUTF8((const char*)nodeLevel6->content);\r
+                                                                               if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){\r
+                                                       \r
+                                                                                       ETagData.Remove(0, 1);\r
+                                                                                       ETagData.RemoveLast();\r
+                                                       \r
+                                                                               }\r
+                                                                       \r
+                                                                               ETagFound = TRUE;\r
+\r
+                                                                       }\r
+                                                                       \r
+                                                               }\r
+\r
+                                                       }       \r
+\r
+                                       }\r
+\r
+                               }\r
+\r
+                               if (HREFFound = TRUE && ETagFound == TRUE){\r
+                               \r
+                                       // Add to the map data.\r
+                                       \r
+                                       xmlDataMap.insert(std::make_pair(DataFilename, ETagData));\r
+                               \r
+                               }\r
+                               \r
+                               // Reset the values.\r
+                               \r
+                               HREFFound = FALSE;\r
+                               ETagFound = FALSE;\r
+\r
+                       }\r
+\r
+               }\r
+\r
+\r
+       }\r
+\r
+       xmlFreeDoc(xmlCardDAVDoc);\r
+\r
+       // Get the first result.\r
+       \r
+\r
+       for (std::map<wxString,wxString>::iterator iter = xmlDataMap.begin(); \r
+               iter != xmlDataMap.end(); ++iter){\r
+       \r
+               ETagResult = iter->second;\r
+               break;\r
+               \r
+       }\r
+       \r
+       if (ETagResult.IsEmpty()){\r
+       \r
+               return;\r
+       \r
+       }\r
+       \r
+       return;\r
+       \r
+}\r
+\r
+wxString CardDAV::ETagValueResult(){\r
+\r
+       return ETagResult;\r
+\r
+}\r
+\r
+void CardDAV::GetServerETagValue(){\r
+\r
+       std::thread ConnectThread(&CardDAV::GetServerETagValueThread, this);\r
+       ConnectThread.detach();\r
+\r
+}\r
+\r
+void CardDAV::SetupData(wxString Method, wxString FilenameLocation, wxString UploadData){\r
+\r
+       ServerMethod = Method;\r
+       ServerFilenameLocation = FilenameLocation;\r
+       ServerUploadData = UploadData;\r
+\r
+       // Check if ServerFilenameLocation has a / at \r
+       // the start and if not then append it.\r
+       \r
+       if (ServerFilenameLocation.Left(1) != wxT("/")){\r
+       \r
+               // Not there so insert.\r
+               \r
+               ServerFilenameLocation = wxT("/") + ServerFilenameLocation;\r
+       \r
+       }\r
+\r
+}\r
+\r
+void CardDAV::SetupVariables(std::map<int, int> *actlist, int actindex){\r
+\r
+       ActivityListPtr = actlist;\r
+       ItemIndex = actindex;\r
+\r
+}\r
+\r
+wxString CardDAV::GetETagData(){\r
+\r
+       return ETagData;\r
+\r
+}\r
+\r
+void CardDAV::SetUploadMode(bool IncMode){\r
+\r
+       UploadMode = IncMode;\r
+\r
+}\r
+\r
+void CardDAV::SetEditMode(bool EditModeInc){\r
+\r
+       EditMode = EditModeInc;\r
+\r
+}\r
+\r
+ContactListData CardDAV::GetContactList(wxString SyncTokenInc){\r
+\r
+       ContactListData ContactListFinal;\r
+       std::map<wxString,FileSyncData> ContactList;\r
+       \r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       SSLStatus = TRUE;\r
+       AuthPassed = TRUE;\r
+       AbortConnection = FALSE;\r
+\r
+       CURL *conn;\r
+       CURLcode conncode;\r
+       wxString ServerAddressURL;\r
+       wxString ServerAuth;\r
+       wxString ServerAddressSSL;\r
+       wxString ServerAddressNormal;   \r
+\r
+\r
+       conn = curl_easy_init();\r
+       \r
+       struct CardDAVCURLPasser {\r
+       \r
+               CardDAV *Data;\r
+               bool HeaderMode = TRUE;\r
+       \r
+       } CardDAVHeader, CardDAVFooter;\r
+\r
+       CardDAVHeader.Data = this;\r
+       CardDAVHeader.HeaderMode = TRUE;\r
+       \r
+       CardDAVFooter.Data = this;\r
+       CardDAVFooter.HeaderMode = FALSE;\r
+\r
+       wxString Data1;\r
+       wxString Data2;\r
+       \r
+       ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/") + ServerPrefix + wxT("/");\r
+       ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+       ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+       \r
+       ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+       \r
+       // Load the sync token file (if it exists).\r
+       \r
+       wxCharBuffer SyncDataBuffer;\r
+       wxString SyncData;\r
+       \r
+       SyncData.Clear();\r
+       \r
+       SyncTokenInc.Trim();\r
+       \r
+       if (!SyncTokenInc.IsEmpty()){\r
+               \r
+               SyncData = wxT("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n");\r
+               SyncData.Append(wxT("<D:sync-collection xmlns:D=\"DAV:\"\n"));\r
+               SyncData.Append(wxT(" xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n"));\r
+               SyncData.Append(wxT("<D:sync-token>"));\r
+               //SyncData.Trim();\r
+               //SyncData.Append(wxT("data:,00378c55-1f44-44a2-a255-84f6560b5cac_580"));\r
+               SyncData.Append(SyncTokenInc);\r
+               //SyncData.Trim();\r
+               SyncData.Append(wxT("</D:sync-token>\n"));\r
+               SyncData.Append(wxT("<D:sync-level>1</D:sync-level>\n"));\r
+               SyncData.Append(wxT("<D:prop>\n"));\r
+               SyncData.Append(wxT("   <D:getetag/>\n"));\r
+               SyncData.Append(wxT("</D:prop>\n"));\r
+               SyncData.Append(wxT("</D:sync-collection>"));\r
+               \r
+               SyncDataBuffer = SyncData.ToUTF8();\r
+       \r
+       } else {\r
+               \r
+               SyncData = wxT("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");\r
+               SyncData.Append(wxT("<D:sync-collection xmlns:D=\"DAV:\""));\r
+               SyncData.Append(wxT(" xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n"));\r
+               SyncData.Append(wxT("<D:sync-token/>\n"));\r
+               SyncData.Append(wxT("<D:sync-level>1</D:sync-level>\n"));\r
+               SyncData.Append(wxT("<D:prop>\n"));\r
+               SyncData.Append(wxT("   <D:getetag/>\n"));\r
+               SyncData.Append(wxT("</D:prop>\n"));\r
+               SyncData.Append(wxT("</D:sync-collection>\n"));\r
+               \r
+               SyncDataBuffer = SyncData.ToUTF8();\r
+\r
+       }\r
+       \r
+       //static const char* query = SyncData.mb_str();\r
+       \r
+       /*char *query = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\\r
+               <D:sync-collection xmlns:D=\"DAV:\"\n\\r
+                xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n\\r
+               <D:sync-token>data:,00378c55-1f44-44a2-a255-84f6560b5cac_580</D:sync-token>\n\\r
+               <D:sync-level>1</D:sync-level>\n\\r
+               <D:prop>\n\\r
+                       <D:getetag/>\n\\r
+               </D:prop>\n\\r
+       </D:sync-collection>\n";*/\r
+       const char* query = SyncDataBuffer.data();\r
+       \r
+       // Try SSL first.\r
+\r
+       std::map<int,int>::iterator ActIter;\r
+       struct UploadDataStruc UploadData;\r
+       \r
+       ActIter = ActivityListPtr->find(ItemIndex);\r
+\r
+       curl_slist *slist = NULL;       \r
+\r
+       slist = curl_slist_append(slist, "Depth: 1");\r
+\r
+       if (ServerSSL){\r
+\r
+               wxString ServerCertFilename;\r
+               bool MatchingCert = FALSE;\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist);\r
+               curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+\r
+               ServerCertFilename = GetAccountDir(ServerAccount, TRUE);\r
+\r
+               if (wxFile::Exists(ServerCertFilename) == TRUE){\r
+               \r
+                       curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);\r
+                       curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));\r
+               \r
+               }\r
+\r
+               //UploadData.readptr = &CardDAVDataQuery;\r
+               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+               //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+               //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+               //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+\r
+               claconncode = (curl_easy_perform(conn));\r
+\r
+               // If CURLE_PEER_FAILED_VERIFICATION is returned, retry without\r
+               // the local certificate in use.\r
+\r
+               if (claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+                       \r
+                       curl_easy_cleanup(conn);\r
+                       conn = curl_easy_init();\r
+                       \r
+                       curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+                       curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+                       curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist);\r
+                       curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+                       curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+                       \r
+                       claconncode = (curl_easy_perform(conn));\r
+                       \r
+                       // If claconncode is CURLE_OK then delete the certificate file as that\r
+                       // is no longer needed.\r
+                       \r
+                       if (claconncode == CURLE_OK){\r
+                       \r
+                               // Delete the certificate file.\r
+                               \r
+                               wxRemoveFile(ServerCertFilename);\r
+                       \r
+                       }\r
+               \r
+               }\r
+\r
+               // Check if it fails with a CURLE_SSL_CACERT then compare\r
+               // the certificates as PEM files.\r
+               \r
+               if (claconncode == CURLE_SSL_CACERT && wxFile::Exists(ServerCertFilename) == TRUE){\r
+               \r
+                       //curl_easy_cleanup(conn);\r
+                       //conn = curl_easy_init();\r
+\r
+                       CURL *sslerrconn;\r
+                       sslerrconn = curl_easy_init();\r
+                       CURLcode sslerrconncode;\r
+\r
+                       //claconncode = (curl_easy_perform(conn));\r
+\r
+                       wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+               \r
+                       wxString SSLLocalData;\r
+                       wxString SSLServerData;\r
+               \r
+                       sslerrconncode = (curl_easy_perform(sslerrconn));\r
+               \r
+                       SSLCertCol = BuildSSLCollection(sslerrconn);\r
+                       std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertCol.SSLCollection.find(0);\r
+                       std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));\r
+                       \r
+                       wxFFile SSLLocalFile;\r
+                       \r
+#if wxABI_VERSION < 20900\r
+                       SSLLocalFile.Open(ServerCertFilename.c_str(), wxT("r"));\r
+#else\r
+                       SSLLocalFile.Open(ServerCertFilename, wxT("r"));\r
+#endif \r
+       \r
+                       // Load the recovery database for tasks not done.\r
+       \r
+                       if (SSLLocalFile.IsOpened() == TRUE){\r
+\r
+                       // Check if we are using wxWidgets version 2.8 or less and\r
+                       // execute the required command accordingly.\r
+       \r
+                               SSLLocalFile.ReadAll(&SSLLocalData, wxConvAuto());\r
+               \r
+       \r
+                       }\r
+                       \r
+                       SSLServerData = SSLDataIter->second;\r
+                       \r
+                       if (SSLLocalData == SSLServerData){\r
+                       \r
+                               // Server key matches with local key so retry with CURLOPT_SSL_VERIFYPEER\r
+                               // and CURLOPT_SSL_VERIFYHOST off.\r
+                       \r
+                               curl_easy_cleanup(conn);\r
+                               conn = curl_easy_init();\r
+                               \r
+                               PageHeader.clear();\r
+                               PageData.clear();\r
+                               \r
+                               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+                               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+                               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+                               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+                               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+                               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+                               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+                               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+                               curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist);\r
+                               curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);\r
+                               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+                               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 0);\r
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       \r
+                               claconncode = (curl_easy_perform(conn));\r
+                               \r
+                               MatchingCert = TRUE;\r
+                       \r
+                       }\r
+                       \r
+                       if (MatchingCert == FALSE){\r
+               \r
+                               claconncode = CURLE_SSL_CACERT;\r
+                               return ContactListFinal;\r
+               \r
+                       }\r
+                       \r
+                       curl_easy_cleanup(sslerrconn);\r
+               \r
+               }\r
+\r
+               // Sort out SSL error.\r
+               \r
+               // When SSL cert error occurs, connect again and fetch certificates.\r
+               // Display a message to the user explaining that an invalid\r
+               // certificate has been given and let the user decide what\r
+               // to do next.\r
+\r
+               if (claconncode == CURLE_OK){\r
+\r
+               } else if (claconncode == CURLE_SSL_CACERT || claconncode == CURLE_PEER_FAILED_VERIFICATION){\r
+               \r
+                       CURL *sslerrconn;\r
+                       sslerrconn = curl_easy_init();\r
+                       CURLcode sslerrconncode;\r
+               \r
+                       wxString ServerAddressOnly = wxT("https://") + ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+               \r
+                       // Replace conn with sslerrconn!\r
+               \r
+                       curl_easy_setopt(sslerrconn, CURLOPT_URL, (const char*)ServerAddressOnly.mb_str(wxConvUTF8));\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOPROGRESS, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_TIMEOUT, 60);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_FAILONERROR, TRUE);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEDATA, &PageData);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_WRITEHEADER, &PageHeader);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSDATA, this);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_NOSIGNAL, 1);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_SSL_VERIFYPEER, 0);\r
+                       curl_easy_setopt(sslerrconn, CURLOPT_CERTINFO, 1);\r
+               \r
+                       sslerrconncode = (curl_easy_perform(sslerrconn));\r
+\r
+                       SSLCertCol = BuildSSLCollection(sslerrconn);\r
+                       SSLCertCol.SuccessCode = 1;\r
+\r
+                       return ContactListFinal;\r
+               \r
+               } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %d\n", http_code);\r
+                                       \r
+                       return ContactListFinal;\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %d\n", http_code);\r
+\r
+                       return ContactListFinal;\r
+\r
+               }\r
+\r
+               SSLCertCol = BuildSSLCollection(conn);\r
+\r
+       } else {\r
+       \r
+       // No SSL.\r
+               \r
+               wxString EmptyString;\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressNormal.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "REPORT");\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPHEADER, slist);\r
+\r
+               //UploadData.readptr = &CardDAVDataQuery;\r
+               //UploadData.sizeleft = CardDAVDataQuery.Len();\r
+               //curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+               //curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+               //curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               //curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, writefunc);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));           \r
+               \r
+               PageData.Clear();\r
+               PageHeader.Clear();\r
+               \r
+               claconncode = (curl_easy_perform(conn));\r
+\r
+               if (claconncode == CURLE_OK){\r
+\r
+\r
+\r
+               } else if (claconncode == CURLE_HTTP_RETURNED_ERROR){\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %l\n", http_code);\r
+                                       \r
+                       return ContactListFinal;\r
+                       \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(claconncode));\r
+                       long http_code = 0;\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &http_code);\r
+                       fprintf(stderr, "Error code was: %l\n", http_code);\r
+                               \r
+                       return ContactListFinal;\r
+\r
+               }\r
+               \r
+       }\r
+\r
+       xmlDocPtr xmlCardDAVDoc;\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+\r
+       xmlNodePtr nodeLevel1;\r
+       xmlNodePtr nodeLevel2;\r
+       xmlNodePtr nodeLevel3;\r
+       xmlNodePtr nodeLevel4;\r
+       xmlNodePtr nodeLevel5;\r
+       xmlNodePtr nodeLevel6;\r
+       \r
+       xmlNodePtr nodeStatusLv1;\r
+       xmlNodePtr nodeStatusLv2;\r
+\r
+       std::map<wxString,wxString> xmlDataMap;\r
+       std::map<wxString,wxString> ServerETagData;\r
+\r
+       wxString DataFilename;\r
+       wxString DataSyncToken;\r
+       int DataFileStatus;\r
+       wxString ETagData;\r
+       bool SyncTokenFound = FALSE;\r
+\r
+       std::string xmlStringSafe;\r
+\r
+       // Tranverse through the catacombs of the response to get our ETag for the file and\r
+       // the server syncronisation token.\r
+\r
+       // Start by getting all the server ETag data.\r
+\r
+       for (nodeLevel1 = xmlCardDAVDoc->children;\r
+               nodeLevel1 != NULL;\r
+               nodeLevel1 = nodeLevel1->next)\r
+       {\r
+\r
+               for (nodeLevel2 = nodeLevel1->children;\r
+                       nodeLevel2 != NULL;\r
+                       nodeLevel2 = nodeLevel2->next)\r
+               {\r
+\r
+                       printf("\t%s:%s\n", nodeLevel2->name, nodeLevel2->content);\r
+\r
+                       for (nodeLevel3 = nodeLevel2->children;\r
+                       nodeLevel3 != NULL;\r
+                       nodeLevel3 = nodeLevel3->next)\r
+                       {\r
+\r
+                               DataFileStatus = 0;\r
+                               bool HREFFound = FALSE;\r
+                               bool ETagFound = FALSE;\r
+                               bool HTTPStatus = FALSE;\r
+\r
+                               printf("\t\t%s:%s\n", nodeLevel3->name, nodeLevel3->content);\r
+\r
+                               if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") ||\r
+                               !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") ||\r
+                               !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href")\r
+                               ){\r
+\r
+                                       // Get the filename.\r
+                                       \r
+                                       for (nodeLevel4 = nodeLevel3->children;\r
+                                       nodeLevel4 != NULL;\r
+                                       nodeLevel4 = nodeLevel4->next)\r
+                                       {\r
+                                       \r
+                                               if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") ||\r
+                                               !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") ||\r
+                                               !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text")\r
+                                               ){\r
+                                               \r
+                                                       DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content);\r
+                                                       wxStringTokenizer wSTDFilename(DataFilename, wxT("/"));\r
+                                               \r
+                                                       while (wSTDFilename.HasMoreTokens()){\r
+                                                       \r
+                                                               DataFilename = wSTDFilename.GetNextToken();\r
+                                                       \r
+                                                       }\r
+                                                       \r
+                                                       HREFFound = TRUE;\r
+                                               \r
+                                               }\r
+                                               \r
+       \r
+                                       \r
+                                       }\r
+                                       \r
+\r
+                               } else {\r
+\r
+                                       for (nodeLevel4 = nodeLevel3->children;\r
+                                       nodeLevel4 != NULL;\r
+                                       nodeLevel4 = nodeLevel4->next)\r
+                                       {\r
+\r
+                                               for (nodeStatusLv1 = nodeLevel3->children;\r
+                                                       nodeStatusLv1 != NULL;\r
+                                                       nodeStatusLv1 = nodeStatusLv1->next)\r
+                                               {\r
+\r
+                                                       if (wxString::FromUTF8((const char*)nodeStatusLv1->content) == wxT("HTTP/1.1 404 Not Found")){\r
+               \r
+                                                               DataFileStatus = 2;\r
+                                                                               \r
+                                                               HTTPStatus = TRUE;\r
+                                                                               \r
+                                                       }\r
+                                       \r
+                                                       if ((!xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"status") ||\r
+                                                       !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"d:status") ||\r
+                                                       !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status") && HTTPStatus == FALSE)\r
+                                                       ){\r
+\r
+                                                               // Get the filename.\r
+                                       \r
+                                                               for (nodeStatusLv2 = nodeStatusLv1->children;\r
+                                                               nodeStatusLv2 != NULL;\r
+                                                               nodeStatusLv2 = nodeStatusLv2->next)\r
+                                                               {\r
+                                       \r
+                                                                       if (!xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"text") ||\r
+                                                                       !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"d:text") ||\r
+                                                                       !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"D:text")\r
+                                                                       ){\r
+\r
+                                                                               if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 200 OK")){\r
+                                                                       \r
+                                                                                       DataFileStatus = 1;\r
+                                                                                       \r
+                                                                                       HTTPStatus = TRUE;\r
+                                                                       \r
+                                                                               // This is currently in a WebDAV draft and may hopefully be enabled when this changes.\r
+                                                                       \r
+                                                                               //} else if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 201 Created")){\r
+                                                                               \r
+                                                                               //      DataFileStatus = 0;\r
+                                                                               \r
+                                                                               }\r
+                                               \r
+                                                                       }\r
+                                               \r
+       \r
+                                       \r
+                                                               }\r
+                                                       \r
+                                                       }\r
+\r
+                                       \r
+                                               }\r
+                                               \r
+                                               for (nodeLevel5 = nodeLevel4->children;\r
+                                               nodeLevel5 != NULL;\r
+                                               nodeLevel5 = nodeLevel5->next)\r
+                                               {\r
+\r
+                                                       if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") ||\r
+                                                       !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") ||\r
+                                                       !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag")\r
+                                                       ){\r
+\r
+                                                               for (nodeLevel6 = nodeLevel5->children;\r
+                                                               nodeLevel6 != NULL;\r
+                                                               nodeLevel6 = nodeLevel6->next)\r
+                                                               {\r
+\r
+                                                                       // Strip the quotes from the ETag.\r
+                                               \r
+                                                                       ETagData = wxString::FromUTF8((const char*)nodeLevel6->content);\r
+                                                                       if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){\r
+                                               \r
+                                                                               ETagData.Remove(0, 1);\r
+                                                                               ETagData.RemoveLast();\r
+                                               \r
+                                                                       }\r
+                                                               \r
+                                                                       ETagFound = TRUE;\r
+\r
+                                                               }\r
+                                                               \r
+                                                       }\r
+\r
+                                               }       \r
+\r
+                                       }\r
+\r
+                               }\r
+\r
+                               if (HREFFound == TRUE && ETagFound == TRUE && HTTPStatus == TRUE){\r
+                               \r
+                                       // Add to the map data.\r
+                                       \r
+                                       FileSyncData SData;\r
+                                       \r
+                                       SData.ETagData = ETagData;\r
+                                       SData.DataFlag = DataFileStatus;\r
+                                       \r
+                                       ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData));\r
+                               \r
+                               }\r
+                               \r
+                               // Reset the values.\r
+                               \r
+                               HREFFound = FALSE;\r
+                               ETagFound = FALSE;\r
+                               HTTPStatus = FALSE;\r
+\r
+                       }\r
+\r
+                       if ((!xmlStrcmp(nodeLevel2->name, (const xmlChar *)"sync-token") ||\r
+                       !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"d:sync-token") ||\r
+                       !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"D:sync-token")) &&\r
+                       SyncTokenFound == FALSE\r
+                       ){\r
+\r
+                               for (nodeLevel3 = nodeLevel2->children;\r
+                               nodeLevel3 != NULL;\r
+                               nodeLevel3 = nodeLevel3->next)\r
+                               {\r
+\r
+                                       if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"text") ||\r
+                                       !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:text") ||\r
+                                       !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:text")\r
+                                       ){\r
+                       \r
+                                               DataSyncToken = wxString::FromUTF8((const char*)nodeLevel3->content);\r
+\r
+                                               SyncTokenFound = TRUE;\r
+                       \r
+                                       }\r
+                       \r
+                               }\r
+       \r
+                       }\r
+\r
+               }\r
+\r
+       }\r
+       \r
+       for (nodeLevel1 = xmlCardDAVDoc->children;\r
+               nodeLevel1 != NULL;\r
+               nodeLevel1 = nodeLevel1->next)\r
+       {\r
+\r
+               for (nodeLevel2 = nodeLevel1->children;\r
+                       nodeLevel2 != NULL;\r
+                       nodeLevel2 = nodeLevel2->next)\r
+               {\r
+\r
+                       printf("\t%s:%s\n", nodeLevel2->name, nodeLevel2->content);\r
+\r
+                       DataFileStatus = 0;\r
+                       bool HREFFound = FALSE;\r
+                       bool ETagFound = FALSE;\r
+                       bool HTTPStatus = FALSE;\r
+\r
+                       for (nodeLevel3 = nodeLevel2->children;\r
+                       nodeLevel3 != NULL;\r
+                       nodeLevel3 = nodeLevel3->next)\r
+                       {\r
+\r
+                               printf("\t\t%s:%s\n", nodeLevel3->name, nodeLevel3->content);\r
+\r
+                               if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"href") ||\r
+                               !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:href") ||\r
+                               !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:href")\r
+                               ){\r
+\r
+                                       // Get the filename.\r
+                                       \r
+                                       for (nodeLevel4 = nodeLevel3->children;\r
+                                       nodeLevel4 != NULL;\r
+                                       nodeLevel4 = nodeLevel4->next)\r
+                                       {\r
+                                       \r
+                                               if (!xmlStrcmp(nodeLevel4->name, (const xmlChar *)"text") ||\r
+                                               !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"d:text") ||\r
+                                               !xmlStrcmp(nodeLevel4->name, (const xmlChar *)"D:text")\r
+                                               ){\r
+                                               \r
+                                                       DataFilename = wxString::FromUTF8((const char*)nodeLevel4->content);\r
+                                                       wxStringTokenizer wSTDFilename(DataFilename, wxT("/"));\r
+                                               \r
+                                                       while (wSTDFilename.HasMoreTokens()){\r
+                                                       \r
+                                                               DataFilename = wSTDFilename.GetNextToken();\r
+                                                       \r
+                                                       }\r
+                                                       \r
+                                                       HREFFound = TRUE;\r
+                                               \r
+                                               }\r
+                                               \r
+       \r
+                                       \r
+                                       }\r
+                                       \r
+\r
+                               } else {\r
+\r
+                                       for (nodeLevel4 = nodeLevel3->children;\r
+                                       nodeLevel4 != NULL;\r
+                                       nodeLevel4 = nodeLevel4->next)\r
+                                       {\r
+\r
+                                               for (nodeStatusLv1 = nodeLevel3->children;\r
+                                                       nodeStatusLv1 != NULL;\r
+                                                       nodeStatusLv1 = nodeStatusLv1->next)\r
+                                               {\r
+\r
+                                                       if (wxString::FromUTF8((const char*)nodeStatusLv1->content) == wxT("HTTP/1.1 404 Not Found")){\r
+               \r
+                                                               DataFileStatus = 2;\r
+\r
+                                                               HTTPStatus = TRUE;\r
+                                                                               \r
+                                                       }\r
+                                       \r
+                                                       if ((!xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"status") ||\r
+                                                       !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"d:status") ||\r
+                                                       !xmlStrcmp(nodeStatusLv1->name, (const xmlChar *)"D:status") && HTTPStatus == FALSE)\r
+                                                       ){\r
+\r
+                                                               // Get the filename.\r
+                                       \r
+                                                               for (nodeStatusLv2 = nodeStatusLv1->children;\r
+                                                               nodeStatusLv2 != NULL;\r
+                                                               nodeStatusLv2 = nodeStatusLv2->next)\r
+                                                               {\r
+                                       \r
+                                                                       if (!xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"text") ||\r
+                                                                       !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"d:text") ||\r
+                                                                       !xmlStrcmp(nodeStatusLv2->name, (const xmlChar *)"D:text")\r
+                                                                       ){\r
+\r
+                                                                               if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 200 OK")){\r
+\r
+                                                                                       DataFileStatus = 1;\r
+                                                                                       \r
+                                                                                       HTTPStatus = TRUE;\r
+                                                                       \r
+                                                                               // This is currently in a WebDAV draft and may hopefully be enabled when this changes.\r
+                                                                       \r
+                                                                               //} else if (wxString::FromUTF8((const char*)nodeStatusLv2->content) == wxT("HTTP/1.1 201 Created")){\r
+                                                                               \r
+                                                                               //      DataFileStatus = 0;\r
+                                                                               \r
+                                                                               }\r
+                                               \r
+                                                                       }\r
+                                               \r
+       \r
+                                       \r
+                                                               }\r
+                                                       \r
+                                                       }\r
+\r
+                                       \r
+                                               }\r
+                                               \r
+                                               for (nodeLevel5 = nodeLevel4->children;\r
+                                               nodeLevel5 != NULL;\r
+                                               nodeLevel5 = nodeLevel5->next)\r
+                                               {\r
+\r
+                                                       if (!xmlStrcmp(nodeLevel5->name, (const xmlChar *)"getetag") ||\r
+                                                       !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"d:getetag") ||\r
+                                                       !xmlStrcmp(nodeLevel5->name, (const xmlChar *)"D:getetag")\r
+                                                       ){\r
+\r
+                                                               for (nodeLevel6 = nodeLevel5->children;\r
+                                                               nodeLevel6 != NULL;\r
+                                                               nodeLevel6 = nodeLevel6->next)\r
+                                                               {\r
+\r
+                                                                       // Strip the quotes from the ETag.\r
+                                               \r
+                                                                       ETagData = wxString::FromUTF8((const char*)nodeLevel6->content);\r
+                                                                       if (ETagData.Mid(0, 1) == wxT("\"") && ETagData.Mid((ETagData.Len() - 1), 1) == wxT("\"")){\r
+                                               \r
+                                                                               ETagData.Remove(0, 1);\r
+                                                                               ETagData.RemoveLast();\r
+                                               \r
+                                                                       }\r
+                                                               \r
+                                                                       ETagFound = TRUE;\r
+\r
+                                                               }\r
+                                                               \r
+                                                       }\r
+\r
+                                               }       \r
+\r
+                                       }\r
+\r
+                               }\r
+\r
+                       }\r
+\r
+                       if (HREFFound == TRUE && HTTPStatus == TRUE && DataFileStatus == 2){\r
+                       \r
+                               FileSyncData SData;\r
+                                       \r
+                               SData.ETagData = wxT("");\r
+                               SData.DataFlag = DataFileStatus;\r
+                                       \r
+                               ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData));                          \r
+                       \r
+                       }\r
+\r
+                       if (HREFFound == TRUE && ETagFound == TRUE && HTTPStatus == TRUE){\r
+                               \r
+                               // Add to the map data.\r
+                                       \r
+                               FileSyncData SData;\r
+                                       \r
+                               SData.ETagData = ETagData;\r
+                               SData.DataFlag = DataFileStatus;\r
+                                       \r
+                               ContactListFinal.ListData.insert(std::make_pair(DataFilename, SData));\r
+                               \r
+                       }\r
+                               \r
+                       // Reset the values.\r
+                               \r
+                       HREFFound = FALSE;\r
+                       ETagFound = FALSE;\r
+                       HTTPStatus = FALSE;\r
+                       DataFilename.Clear();\r
+\r
+                       if ((!xmlStrcmp(nodeLevel2->name, (const xmlChar *)"sync-token") ||\r
+                       !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"d:sync-token") ||\r
+                       !xmlStrcmp(nodeLevel2->name, (const xmlChar *)"D:sync-token")) &&\r
+                       SyncTokenFound == FALSE\r
+                       ){\r
+\r
+                               for (nodeLevel3 = nodeLevel2->children;\r
+                               nodeLevel3 != NULL;\r
+                               nodeLevel3 = nodeLevel3->next)\r
+                               {\r
+\r
+                                       if (!xmlStrcmp(nodeLevel3->name, (const xmlChar *)"text") ||\r
+                                       !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"d:text") ||\r
+                                       !xmlStrcmp(nodeLevel3->name, (const xmlChar *)"D:text")\r
+                                       ){\r
+                       \r
+                                               DataSyncToken = wxString::FromUTF8((const char*)nodeLevel3->content);\r
+\r
+                                               SyncTokenFound = TRUE;\r
+                       \r
+                                       }\r
+                       \r
+                               }\r
+       \r
+                       }\r
+\r
+               }\r
+\r
+       }\r
+       \r
+       // Get the sync token.\r
+       \r
+       if (SyncTokenFound == TRUE){\r
+       \r
+               ContactListFinal.SyncToken = DataSyncToken;\r
+       \r
+       } else {\r
+       \r
+       }\r
+\r
+       SleepFor(2000000000);\r
+\r
+       /*timespec n1, n2;\r
+                                               \r
+       n1.tv_sec = 0;\r
+       n1.tv_nsec = 2000000000L;\r
+               \r
+       nanosleep(&n1, &n2);*/\r
+\r
+       xmlFreeDoc(xmlCardDAVDoc);\r
+       curl_easy_cleanup(conn);\r
+\r
+       SyncDataBuffer.reset();\r
+\r
+       // Get the first result.\r
+\r
+       return ContactListFinal;\r
+\r
+}\r
+\r
+int CardDAV::GetResultCode(){\r
+\r
+       return (int)claconncode;\r
+\r
+}\r
+\r
+int CardDAV::GetHTTPCode(){\r
+\r
+       return HTTPErrorCode;\r
+\r
+}\r
+\r
+wxString CardDAV::GetErrorBuffer(){\r
+\r
+       wxString ErrorBuffer = wxString::FromUTF8(curlerrbuffer);\r
+\r
+       return ErrorBuffer;\r
+\r
+}\r
+\r
+wxString CardDAV::GetDefaultAddressBookURL(){\r
+\r
+       // First: Get the principal UID address.\r
+       \r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       SSLStatus = TRUE;\r
+       AuthPassed = TRUE;\r
+       AbortConnection = FALSE;\r
+\r
+    CURL *conn;\r
+    CURLcode conncode;\r
+       wxString ServerAddressURL;\r
+       wxString ServerAuth;\r
+       wxString ServerAddressSSL;\r
+       wxString ServerAddressNormal;   \r
+\r
+       conn = curl_easy_init();\r
+       \r
+       struct curl_slist *connhd = NULL;\r
+       struct curl_slist *connhd2 = NULL;\r
+       struct curl_slist *connhd3 = NULL;\r
+\r
+       connhd = curl_slist_append(connhd, "Depth: 0");\r
+       connhd = curl_slist_append(connhd, "Prefer: return-minimal");\r
+       connhd = curl_slist_append(connhd, "Content-Type: application/xml; charset=utf-8");\r
+\r
+       connhd2 = curl_slist_append(connhd2, "Depth: 0");\r
+       connhd2 = curl_slist_append(connhd2, "Prefer: return-minimal");\r
+       connhd2 = curl_slist_append(connhd2, "Content-Type: application/xml; charset=utf-8");\r
+\r
+       connhd3 = curl_slist_append(connhd3, "Depth: 1");\r
+       connhd3 = curl_slist_append(connhd3, "Prefer: return-minimal");\r
+       connhd3 = curl_slist_append(connhd3, "Content-Type: application/xml; charset=utf-8");\r
+\r
+       struct CardDAVCURLPasser {\r
+       \r
+               CardDAV *Data;\r
+               bool HeaderMode = TRUE;\r
+       \r
+       } CardDAVHeader, CardDAVFooter;\r
+\r
+       CardDAVHeader.Data = this;\r
+       CardDAVHeader.HeaderMode = TRUE;\r
+       \r
+       CardDAVFooter.Data = this;\r
+       CardDAVFooter.HeaderMode = FALSE;\r
+\r
+       wxString Data1;\r
+       wxString Data2;\r
+       \r
+       wxString ETag;\r
+       wxString ETagOriginal;\r
+       wxString ETagServer;\r
+       \r
+       ServerAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort) + wxT("/");\r
+       ServerAddressSSL = wxT("https://") + ServerAddressURL;\r
+       ServerAddressNormal = wxT("http://") + ServerAddressURL;\r
+       \r
+       ServerAuth = ServerUser + wxT(":") + ServerPass;\r
+       \r
+       wxString SAURLPrincipals = ServerAddressURL + wxT("principals/");\r
+       wxString SAURLPrincipalURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort);\r
+       wxString SAURLAddressURL = ServerAddress + wxT(":") + wxString::Format(wxT("%i"), ServerPort);\r
+       wxString FinalPrefix;\r
+\r
+       struct UploadDataStruc UploadData;\r
+       \r
+       // Setup the first query finding out where the principal URL is.\r
+       \r
+       const char* query = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"\r
+               "<D:propfind xmlns:D=\"DAV:\">\n"\r
+               " <D:prop>"\r
+               "  <D:current-user-principal/>\n"\r
+               " </D:prop>"\r
+               "</D:propfind>";\r
+\r
+       // Setup the second query finding out where the address book home URL is.\r
+       \r
+       const char* query2 = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"\r
+       "<D:propfind xmlns:D=\"DAV:\""\r
+       "  xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n"\r
+       "  <D:prop>\n"\r
+       "    <C:addressbook-home-set/>\n"\r
+       "  </D:prop>\n"\r
+       "</D:propfind>";\r
+       \r
+       // Setup the third query finding out where the default address book URL is.\r
+       \r
+       const char* query3 = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n"\r
+       "<D:propfind xmlns:D=\"DAV:\""\r
+       "  xmlns:C=\"urn:ietf:params:xml:ns:carddav\">\n"\r
+       "  <D:prop>\n"\r
+       "    <C:default-addressbook-URL/>\n"    \r
+       "  </D:prop>\n"\r
+       "</D:propfind>";\r
+       \r
+       if (ServerSSL){\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipals.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+               if (UploadMode == TRUE){\r
+\r
+                       UploadData.readptr = &ServerUploadData;\r
+                       UploadData.sizeleft = ServerUploadData.Len();\r
+                       curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+                       curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               }\r
+\r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+                       *ServerResult = TRUE;\r
+                       AuthPassed = TRUE;\r
+                       SSLStatus = TRUE;\r
+                       return wxT("");\r
+\r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));                                  \r
+                                       \r
+                       *ServerResult = FALSE;\r
+                       \r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+                       \r
+                       return wxT("");                                 \r
+\r
+               }\r
+\r
+       } else {\r
+       \r
+               // No SSL.\r
+\r
+               // Do an initial connection (incase of Digest authentication).\r
+\r
+               PageData.Clear();\r
+               PageHeader.Clear();\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipals.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query));\r
+               curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd);\r
+               \r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG,\r
+               // then bring up the conflict resolution form.\r
+               \r
+               if (EditMode == TRUE){\r
+               \r
+               }\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+               } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+\r
+                       fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+                                       GetHTTPCode());\r
+\r
+                       return wxT("");\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                       return wxT("");\r
+\r
+               }\r
+\r
+       }\r
+       \r
+       // Process the XML data from the application.\r
+       \r
+       xmlDocPtr xmlCardDAVDoc;\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+\r
+       xmlNodePtr nodeLevel1;\r
+       xmlNodePtr nodeLevel2;\r
+       xmlNodePtr nodeLevel3;\r
+       xmlNodePtr nodeLevel4;\r
+       xmlNodePtr nodeLevel5;\r
+       xmlNodePtr nodeLevel6;\r
+       xmlNodePtr nodeLevel7;\r
+               \r
+       for (nodeLevel1 = xmlCardDAVDoc->children;\r
+               nodeLevel1 != NULL;\r
+               nodeLevel1 = nodeLevel1->next)\r
+       {\r
+\r
+               for (nodeLevel2 = nodeLevel1->children;\r
+                       nodeLevel2 != NULL;\r
+                       nodeLevel2 = nodeLevel2->next)\r
+               {\r
+\r
+\r
+                       for (nodeLevel3 = nodeLevel2->children;\r
+                       nodeLevel3 != NULL;\r
+                       nodeLevel3 = nodeLevel3->next)\r
+                       {\r
+                       \r
+                               for (nodeLevel4 = nodeLevel3->children;\r
+                               nodeLevel4 != NULL;\r
+                               nodeLevel4 = nodeLevel4->next)\r
+                               {\r
+                       \r
+                                       for (nodeLevel5 = nodeLevel4->children;\r
+                                       nodeLevel5 != NULL;\r
+                                       nodeLevel5 = nodeLevel5->next)\r
+                                       {\r
+                       \r
+                                               for (nodeLevel6 = nodeLevel5->children;\r
+                                               nodeLevel6 != NULL;\r
+                                               nodeLevel6 = nodeLevel6->next)\r
+                                               {\r
+                       \r
+                                                       if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") ||\r
+                                                       !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") ||\r
+                                                       !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href")\r
+                                                       ){\r
+                       \r
+                                                               // Found the <href> part so extract the principal URL address.\r
+                                                               \r
+                                                               for (nodeLevel7 = nodeLevel6->children;\r
+                                                               nodeLevel7 != NULL;\r
+                                                               nodeLevel7 = nodeLevel7->next)\r
+                                                               {\r
+                                                               \r
+                                                                       SAURLPrincipalURL.Append(wxString::FromUTF8((const char*)nodeLevel7->content));\r
+                       \r
+                                                               }\r
+                       \r
+                                                       }\r
+                       \r
+                                               }\r
+                       \r
+                                       }\r
+                       \r
+                               }\r
+                       \r
+                       }\r
+               \r
+               }\r
+               \r
+       }\r
+       \r
+       xmlFreeDoc(xmlCardDAVDoc);\r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+               \r
+       // Second: Get the addressbook-home-set \r
+\r
+       curl_easy_reset(conn);\r
+\r
+       if (ServerSSL){\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+               if (UploadMode == TRUE){\r
+\r
+                       UploadData.readptr = &ServerUploadData;\r
+                       UploadData.sizeleft = ServerUploadData.Len();\r
+                       curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+                       curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               }\r
+\r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+                       *ServerResult = TRUE;\r
+                       AuthPassed = TRUE;\r
+                       SSLStatus = TRUE;\r
+                       return wxT("");\r
+\r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));                                  \r
+                                       \r
+                       *ServerResult = FALSE;\r
+                       \r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+                       \r
+                       return wxT("");                                 \r
+\r
+               }\r
+\r
+       } else {\r
+       \r
+       // No SSL.\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLPrincipalURL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query2);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query2));\r
+               curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd2);\r
+               \r
+               conncode = (curl_easy_perform(conn));\r
+               \r
+               // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG,\r
+               // then bring up the conflict resolution form.\r
+               \r
+               if (EditMode == TRUE){\r
+               \r
+               }\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+               } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+\r
+                       fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+                                       GetHTTPCode());\r
+                       return wxT("");\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                       return wxT("");\r
+\r
+               }\r
+               \r
+       }\r
+\r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+               \r
+       for (nodeLevel1 = xmlCardDAVDoc->children;\r
+               nodeLevel1 != NULL;\r
+               nodeLevel1 = nodeLevel1->next)\r
+       {\r
+\r
+               for (nodeLevel2 = nodeLevel1->children;\r
+                       nodeLevel2 != NULL;\r
+                       nodeLevel2 = nodeLevel2->next)\r
+               {\r
+\r
+\r
+                       for (nodeLevel3 = nodeLevel2->children;\r
+                       nodeLevel3 != NULL;\r
+                       nodeLevel3 = nodeLevel3->next)\r
+                       {\r
+                       \r
+                               for (nodeLevel4 = nodeLevel3->children;\r
+                               nodeLevel4 != NULL;\r
+                               nodeLevel4 = nodeLevel4->next)\r
+                               {\r
+                       \r
+                                       for (nodeLevel5 = nodeLevel4->children;\r
+                                       nodeLevel5 != NULL;\r
+                                       nodeLevel5 = nodeLevel5->next)\r
+                                       {\r
+                       \r
+                                               for (nodeLevel6 = nodeLevel5->children;\r
+                                               nodeLevel6 != NULL;\r
+                                               nodeLevel6 = nodeLevel6->next)\r
+                                               {\r
+                       \r
+                                                       if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") ||\r
+                                                       !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") ||\r
+                                                       !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href")\r
+                                                       ){\r
+                       \r
+                                                               // Found the <href> part so extract the principal URL address.\r
+                                                               \r
+                                                               for (nodeLevel7 = nodeLevel6->children;\r
+                                                               nodeLevel7 != NULL;\r
+                                                               nodeLevel7 = nodeLevel7->next)\r
+                                                               {\r
+                                                               \r
+                                                                       SAURLAddressURL.Append(wxString::FromUTF8((const char*)nodeLevel7->content));\r
+                       \r
+                                                               }\r
+                       \r
+                                                       }\r
+                       \r
+                                               }\r
+                       \r
+                                       }\r
+                       \r
+                               }\r
+                       \r
+                       }\r
+               \r
+               }\r
+               \r
+       }\r
+\r
+       xmlFreeDoc(xmlCardDAVDoc);\r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       // Finally: Get the default-addressbook-URL from the addressbook-home-set address.\r
+               \r
+       curl_easy_reset(conn);\r
+\r
+       if (ServerSSL){\r
+\r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1L);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);             \r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+\r
+               if (UploadMode == TRUE){\r
+\r
+                       UploadData.readptr = &ServerUploadData;\r
+                       UploadData.sizeleft = ServerUploadData.Len();\r
+                       curl_easy_setopt(conn, CURLOPT_UPLOAD, 1);\r
+                       curl_easy_setopt(conn, CURLOPT_READDATA, &UploadData);\r
+                       curl_easy_setopt(conn, CURLOPT_READFUNCTION, UploadReadFunc);\r
+               \r
+               }\r
+\r
+               conncode = (curl_easy_perform(conn));\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+                       *ServerResult = TRUE;\r
+                       AuthPassed = TRUE;\r
+                       SSLStatus = TRUE;\r
+                       return wxT("");\r
+\r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));                                  \r
+                                       \r
+                       *ServerResult = FALSE;\r
+                       \r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+                       \r
+                       return wxT("");                                 \r
+\r
+               }\r
+\r
+       } else {\r
+       \r
+       // No SSL.\r
+               \r
+               curl_easy_setopt(conn, CURLOPT_URL, (const char*)SAURLAddressURL.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);\r
+               curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANYSAFE);\r
+               curl_easy_setopt(conn, CURLOPT_TIMEOUT, 60);\r
+               curl_easy_setopt(conn, CURLOPT_FAILONERROR, FALSE);\r
+               curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);\r
+               curl_easy_setopt(conn, CURLOPT_USERPWD, (const char*)ServerAuth.mb_str(wxConvUTF8));\r
+               curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);\r
+               curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSDATA, this);\r
+               curl_easy_setopt(conn, CURLOPT_PROGRESSFUNCTION, ProgressFunc);\r
+               curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);\r
+               curl_easy_setopt(conn, CURLOPT_CUSTOMREQUEST, "PROPFIND");\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDS, query3);\r
+               curl_easy_setopt(conn, CURLOPT_POSTFIELDSIZE, strlen(query3));\r
+               curl_easy_setopt(conn, CURLOPT_HTTPHEADER, connhd3);\r
+               \r
+               conncode = (curl_easy_perform(conn));\r
+               \r
+               // If the ETag is different to the non-matching X-XAB-ETAG and X-XAB-ETAG-ORIG,\r
+               // then bring up the conflict resolution form.\r
+               \r
+               if (EditMode == TRUE){\r
+               \r
+               }\r
+\r
+               if (conncode == CURLE_OK){\r
+\r
+               } else if (conncode == CURLE_HTTP_RETURNED_ERROR){\r
+\r
+                       curl_easy_getinfo(conn, CURLINFO_RESPONSE_CODE, &HTTPErrorCode);\r
+               \r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+\r
+                       fprintf(stderr, "curl_easy_perform() HTTP code was: %i\n",\r
+                                       GetHTTPCode());\r
+                       return wxT("");\r
+               \r
+               } else {\r
+\r
+                       fprintf(stderr, "curl_easy_perform() failed: %s\n",\r
+                                       curl_easy_strerror(conncode));\r
+                       return wxT("");\r
+\r
+               }\r
+               \r
+       }\r
+       \r
+       xmlCardDAVDoc = xmlReadMemory(PageData.mb_str(wxConvUTF8), PageData.Len(), "noname.xml", NULL, 0);\r
+               \r
+       for (nodeLevel1 = xmlCardDAVDoc->children;\r
+               nodeLevel1 != NULL;\r
+               nodeLevel1 = nodeLevel1->next)\r
+       {\r
+\r
+               for (nodeLevel2 = nodeLevel1->children;\r
+                       nodeLevel2 != NULL;\r
+                       nodeLevel2 = nodeLevel2->next)\r
+               {\r
+\r
+\r
+                       for (nodeLevel3 = nodeLevel2->children;\r
+                       nodeLevel3 != NULL;\r
+                       nodeLevel3 = nodeLevel3->next)\r
+                       {\r
+                       \r
+                               for (nodeLevel4 = nodeLevel3->children;\r
+                               nodeLevel4 != NULL;\r
+                               nodeLevel4 = nodeLevel4->next)\r
+                               {\r
+                       \r
+                                       for (nodeLevel5 = nodeLevel4->children;\r
+                                       nodeLevel5 != NULL;\r
+                                       nodeLevel5 = nodeLevel5->next)\r
+                                       {\r
+                       \r
+                                               for (nodeLevel6 = nodeLevel5->children;\r
+                                               nodeLevel6 != NULL;\r
+                                               nodeLevel6 = nodeLevel6->next)\r
+                                               {\r
+                       \r
+                                                       if (!xmlStrcmp(nodeLevel6->name, (const xmlChar *)"href") ||\r
+                                                       !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"d:href") ||\r
+                                                       !xmlStrcmp(nodeLevel6->name, (const xmlChar *)"D:href")\r
+                                                       ){\r
+                       \r
+                                                               // Found the <href> part so extract the principal URL address.\r
+                                                               \r
+                                                               for (nodeLevel7 = nodeLevel6->children;\r
+                                                               nodeLevel7 != NULL;\r
+                                                               nodeLevel7 = nodeLevel7->next)\r
+                                                               {\r
+                                                               \r
+                                                                       FinalPrefix = wxString::FromUTF8((const char*)nodeLevel7->content);\r
+                       \r
+                                                               }\r
+                       \r
+                                                       }\r
+                       \r
+                                               }\r
+                       \r
+                                       }\r
+                       \r
+                               }\r
+                       \r
+                       }\r
+               \r
+               }\r
+               \r
+       }\r
+\r
+       xmlFreeDoc(xmlCardDAVDoc);\r
+       PageData.Clear();\r
+       PageHeader.Clear();\r
+\r
+       return FinalPrefix;\r
+\r
+}\r
+\r
+SSLCertCollection CardDAV::BuildSSLCollection(CURL *conn){\r
+\r
+       SSLCertCollection SSLCertInfo;\r
+\r
+       // Grab the certificate data.\r
+\r
+       union {\r
+               struct curl_slist *certdata;\r
+               struct curl_certinfo *certinfo;\r
+       } certptr;\r
+\r
+       certptr.certdata = NULL;\r
+       \r
+       curl_easy_getinfo(conn, CURLINFO_CERTINFO, &certptr.certinfo);\r
+\r
+       wxString CertPropName;\r
+       wxString CertPropValue;\r
+\r
+       for (int i = 0; i < certptr.certinfo->num_of_certs; i++){\r
+\r
+               struct curl_slist *slist;\r
+               SSLCertData SSLCertDataInc;\r
+               \r
+               for (slist = certptr.certinfo->certinfo[i]; slist; slist = slist->next){\r
+                       \r
+                       wxStringTokenizer CertDataInc(wxString::FromUTF8(slist->data), ":");\r
+                       \r
+                       // Get first token as the property name.\r
+                       \r
+                       CertPropName = CertDataInc.GetNextToken();\r
+                       \r
+                       // Get remaining tokens as the property value.\r
+                       \r
+                       while(CertDataInc.HasMoreTokens()){\r
+                       \r
+                               CertPropValue.Append(CertDataInc.GetNextToken());\r
+                       \r
+                       }\r
+                       \r
+                       SSLCertDataInc.CertData.insert(std::make_pair(CertPropName, CertPropValue));\r
+                       CertPropName.clear();\r
+                       CertPropValue.clear();\r
+                       \r
+               }\r
+       \r
+               SSLCertInfo.SSLCollection.insert(std::make_pair(i, SSLCertDataInc));\r
+       \r
+       }\r
+       \r
+       return SSLCertInfo;\r
+\r
+}\r
+\r
+SSLCertCollection CardDAV::GetCertificateData(){\r
+\r
+       // Pass on the collected certificate data.\r
+\r
+       return SSLCertCol;\r
+\r
+}\r
+\r
+wxString CardDAV::GetErrorMessage(){\r
+\r
+       return ErrorMessage;\r
+\r
+}
\ No newline at end of file
diff --git a/source/carddav/carddav.h b/source/carddav/carddav.h
new file mode 100644 (file)
index 0000000..fd1068a
--- /dev/null
@@ -0,0 +1,123 @@
+#include <iostream>
+#include <map>
+#include <wx/wx.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+#include <curl/curl.h>
+#include "../vcard/vcard.h"
+#include "../frmActivityMgr.h"
+#include "../common/sslcertstructs.h"
+
+#ifndef CALDAV_CALDAV_H
+#define CALDAV_CALDAV_H
+
+struct FileSyncData{
+       unsigned int DataFlag:2;
+       wxString ETagData;
+};
+
+struct ContactListData{
+       wxString SyncToken;
+       std::map<wxString,FileSyncData> ListData;
+};
+
+/*struct CertificateData{
+       std::multimap<wxString,wxString> CertificateData;
+       bool CertValid;
+       int CertError;
+};
+
+struct CertificateCollection{
+       std::map<int,CertificateData> Certificates;
+       std::map<int,int> ParentCerticiate;
+       bool AllCertsValid;
+       std::map<int,int> CertErrors;
+};*/
+
+//size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, FILE *userdata);
+
+size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *userdata);
+int ProgressFunc(void *clientdata, double TTDown, double NDown, double TTUp, double NUp);
+
+class CardDAV
+{
+       public:
+               CardDAV();
+               ~CardDAV();
+               bool SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL);
+               bool SetupConnection(wxString SvrAddress, int SvrPort, wxString SvrUser, wxString SvrPass, bool SvrSSL, wxString SvrPrefix, wxString SvrAccount);
+               bool CanDoCardDAV();
+               bool CanDoSSL();
+               bool SSLVerify();
+               bool AbleToLogin();
+               bool HasValidResponse();
+               wxString GetResponseData();             
+               bool Connect();
+               bool ConnectThread();
+               void ProcessData();
+               void SetupData(wxString Method, wxString FilenameLocation, wxString UploadData);
+               void ProcessDataThread();
+               void SetUploadMode(bool IncMode);
+               void Abort();
+               bool SetupResultBools(bool *SvrResult, bool *SvrMonitor);
+               int ProgressFuncProc(void *clientdata, double TTUp, double NUp, double TTDown, double NDown);
+               void SetupVariables(std::map<int, int> *actlist, int actindex);
+               wxString GetETagData();
+               void GetServerETagValue();
+               void GetServerETagValueThread();
+               void GetServerContactData();
+               wxString GetPageData();
+               void SetEditMode(bool EditModeInc);
+               ContactListData GetContactList(wxString SyncTokenInc);
+               void SetServerFilename(wxString Filename);
+               int GetResultCode();
+               static int GetHTTPCode();
+               wxString GetErrorBuffer();
+               wxString GetDefaultAddressBookURL();
+               void GetSSLResults();
+               SSLCertCollection GetCertificateData();
+               static SSLCertCollection BuildSSLCollection(CURL *conn);
+               wxString ETagValueResult();
+               wxString GetErrorMessage();
+               //size_t WritebackFunc(char *ptr, size_t size, size_t nmemb, FILE *userdata);
+       private:
+               static wxString ServerAddress;
+               static int ServerPort;
+               static wxString ServerUser;
+               static wxString ServerPass;
+               static wxString ServerPrefix;
+               static wxString ServerAccount;
+               static bool ServerSSL;
+               static bool *ServerResult;
+               static bool *ServerMonitor;
+               static bool SSLStatus;
+               static bool SSLVerified;
+               static bool ValidResponse;
+               static bool AuthPassed;
+               static bool HasCalDAVSupport;
+               static bool AbortConnection;
+               static wxString ServerResponse;
+               static wxString ServerMethod;
+               static wxString ServerFilenameLocation;
+               static wxString ServerUploadData;
+               static wxString ETagData;
+               static wxString ETagResult;
+               static bool UploadMode;
+               static bool EditMode;
+               static long ItemIndex;
+               static std::map<int, int> *ActivityListPtr;
+               //frmActivityMgr *ActMgrPtr;
+               static char curlerrbuffer[CURL_ERROR_SIZE];
+               static SSLCertCollection SSLCertCol;
+               static wxString ErrorMessage;
+       protected:
+               static int SSLErrorCode;
+               static int ConnectionErrorCode;
+               static wxString PageHeader;
+               static wxString PageData;
+               static CURLcode claconncode;
+               static int HTTPErrorCode;
+                               
+};
+
+#endif
\ No newline at end of file
diff --git a/source/common/.directory b/source/common/.directory
new file mode 100644 (file)
index 0000000..3169f34
--- /dev/null
@@ -0,0 +1,4 @@
+[Dolphin]
+Timestamp=2013,9,10,19,57,41
+Version=3
+ViewMode=1
diff --git a/source/common/base64.cpp b/source/common/base64.cpp
new file mode 100644 (file)
index 0000000..2f85449
--- /dev/null
@@ -0,0 +1,124 @@
+/* 
+   base64.cpp and base64.h
+
+   Copyright (C) 2004-2008 René Nyffenegger
+
+   This source code is provided 'as-is', without any express or implied
+   warranty. In no event will the author be held liable for any damages
+   arising from the use of this software.
+
+   Permission is granted to anyone to use this software for any purpose,
+   including commercial applications, and to alter it and redistribute it
+   freely, subject to the following restrictions:
+
+   1. The origin of this source code must not be misrepresented; you must not
+      claim that you wrote the original source code. If you use this source code
+      in a product, an acknowledgment in the product documentation would be
+      appreciated but is not required.
+
+   2. Altered source versions must be plainly marked as such, and must not be
+      misrepresented as being the original source code.
+
+   3. This notice may not be removed or altered from any source distribution.
+
+   René Nyffenegger rene.nyffenegger@adp-gmbh.ch
+
+*/
+
+#include "base64.h"
+#include <iostream>
+
+static const std::string base64_chars = 
+             "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+             "abcdefghijklmnopqrstuvwxyz"
+             "0123456789+/";
+
+
+static inline bool is_base64(unsigned char c) {
+  return (isalnum(c) || (c == '+') || (c == '/'));
+}
+
+std::string base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) {
+  std::string ret;
+  int i = 0;
+  int j = 0;
+  unsigned char char_array_3[3];
+  unsigned char char_array_4[4];
+
+  while (in_len--) {
+    char_array_3[i++] = *(bytes_to_encode++);
+    if (i == 3) {
+      char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
+      char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
+      char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
+      char_array_4[3] = char_array_3[2] & 0x3f;
+
+      for(i = 0; (i <4) ; i++)
+        ret += base64_chars[char_array_4[i]];
+      i = 0;
+    }
+  }
+
+  if (i)
+  {
+    for(j = i; j < 3; j++)
+      char_array_3[j] = '\0';
+
+    char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
+    char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
+    char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
+    char_array_4[3] = char_array_3[2] & 0x3f;
+
+    for (j = 0; (j < i + 1); j++)
+      ret += base64_chars[char_array_4[j]];
+
+    while((i++ < 3))
+      ret += '=';
+
+  }
+
+  return ret;
+
+}
+
+std::string base64_decode(std::string const& encoded_string) {
+  int in_len = encoded_string.size();
+  int i = 0;
+  int j = 0;
+  int in_ = 0;
+  unsigned char char_array_4[4], char_array_3[3];
+  std::string ret;
+
+  while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) {
+    char_array_4[i++] = encoded_string[in_]; in_++;
+    if (i ==4) {
+      for (i = 0; i <4; i++)
+        char_array_4[i] = base64_chars.find(char_array_4[i]);
+
+      char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
+      char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
+      char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
+
+      for (i = 0; (i < 3); i++)
+        ret += char_array_3[i];
+      i = 0;
+    }
+  }
+
+  if (i) {
+    for (j = i; j <4; j++)
+      char_array_4[j] = 0;
+
+    for (j = 0; j <4; j++)
+      char_array_4[j] = base64_chars.find(char_array_4[j]);
+
+    char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4);
+    char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2);
+    char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3];
+
+    for (j = 0; (j < i - 1); j++) ret += char_array_3[j];
+  }
+
+  return ret;
+}
diff --git a/source/common/base64.cpp~ b/source/common/base64.cpp~
new file mode 100644 (file)
index 0000000..8d1c8b6
--- /dev/null
@@ -0,0 +1 @@
diff --git a/source/common/base64.h b/source/common/base64.h
new file mode 100644 (file)
index 0000000..ae2af7e
--- /dev/null
@@ -0,0 +1,4 @@
+#include <string>
+
+std::string base64_encode(unsigned char const* , unsigned int len);
+std::string base64_decode(std::string const& s); 
diff --git a/source/common/base64.h~ b/source/common/base64.h~
new file mode 100644 (file)
index 0000000..8d1c8b6
--- /dev/null
@@ -0,0 +1 @@
diff --git a/source/common/defaults.cpp b/source/common/defaults.cpp
new file mode 100644 (file)
index 0000000..e23f9e7
--- /dev/null
@@ -0,0 +1,172 @@
+#include <wx/wx.h>
+#include <wx/ffile.h>
+
+void SetupDefaultAddressBook(){
+
+       // Check if the 'Default.local' directory exists.
+
+       wxString DefaultLocalDir;
+
+#if defined(__HAIKU__)
+    
+    //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       DefaultLocalDir.Clear();
+       DefaultLocalDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       DefaultLocalDir.Append(wxT("\\Xestia\\Address Book\\accounts\\"));
+       DefaultLocalDir.Append(wxT("Default.local"));
+
+#else
+
+       DefaultLocalDir.Clear();
+       DefaultLocalDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultLocalDir.Append(wxT("/.xestiaab/accounts/"));
+       DefaultLocalDir.Append(wxT("Default.local"));
+
+#endif
+
+       if (wxDirExists(DefaultLocalDir) == FALSE){
+       
+               if (wxMkdir(DefaultLocalDir, 0740) == TRUE){            
+                                       
+               }
+       
+       }
+
+}
+
+void SetupDefaultSettings(){
+
+       // Setup default (non account) settings if they don't exist.
+       
+       wxString DefaultPrefDir;
+
+#if defined(__HAIKU__)
+
+       //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       DefaultPrefDir.Clear();
+       DefaultPrefDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       DefaultPrefDir.Append(wxT("\\Xestia\\Address Book\\preferences\\"));
+
+#else
+
+       DefaultPrefDir.Clear();
+       DefaultPrefDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultPrefDir.Append(wxT("/.xestiaab/preferences/"));
+
+#endif
+       
+       // Create the accounts file if it doesn't exist.
+       
+       if (wxFileExists(DefaultPrefDir + wxT("accounts")) == FALSE){
+       
+               wxString AccountsFilename;
+               wxFFile AccountsFile;
+
+               AccountsFilename = DefaultPrefDir;
+               AccountsFilename.Append(wxT("accounts"));
+
+#if wxABI_VERSION < 20900
+               AccountsFile.Open(AccountsFilename.c_str(), wxT("w"));
+#else
+               AccountsFile.Open(AccountsFilename, wxT("w"));
+#endif 
+       
+               AccountsFile.Write(wxT(""));
+       
+       }
+       
+       // Create the preferences file if it doesn't exist.
+
+       if (wxFileExists(DefaultPrefDir + wxT("settings")) == FALSE){
+
+               wxString PrefsFilename;
+               wxFFile PrefsFile;
+
+               PrefsFilename = DefaultPrefDir;
+               PrefsFilename.Append(wxT("settings"));
+       
+#if wxABI_VERSION < 20900
+               PrefsFile.Open(PrefsFilename.c_str(), wxT("w"));
+#else
+               PrefsFile.Open(PrefsFilename, wxT("w"));
+#endif 
+       
+               PrefsFile.Write(wxT("HideLocalAddressBooks=false\nSaveWindowPosition=true\n"));
+       
+       }
+
+}
+
+void SetupDirectories(){
+
+       // Create the directories if they don't exist.
+
+       wxString DefaultSettingsDir;
+
+#if defined(__HAIKU__)
+
+       //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       DefaultSettingsDir.Clear();
+       DefaultSettingsDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       DefaultSettingsDir.Append(wxT("\\Xestia\\"));
+
+       if (wxDirExists(DefaultSettingsDir) == FALSE){
+
+               // Create the directory.
+
+               if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){         
+
+               }
+
+       }
+
+       // TODO: APPEND 'Address Book' to the directory.
+
+       DefaultSettingsDir.Append(wxT("\\Address Book\\"));
+
+#else
+
+       DefaultSettingsDir.Clear();
+       DefaultSettingsDir.Append(wxString::FromUTF8(getenv("HOME")));
+       DefaultSettingsDir.Append(wxT("/.xestiaab/"));
+
+#endif
+
+       // Check if the directory exists.
+
+       if (wxDirExists(DefaultSettingsDir) == FALSE){
+       
+               // Create the directory.
+               
+               if (wxMkdir(DefaultSettingsDir, 0740) == TRUE){         
+                                       
+               }
+       
+       }
+
+       if (wxDirExists(DefaultSettingsDir + wxT("accounts")) == FALSE){
+       
+               if (wxMkdir(DefaultSettingsDir + wxT("accounts"), 0740) == TRUE){               
+                                       
+               }
+       
+       }
+       
+       if (wxDirExists(DefaultSettingsDir + wxT("preferences")) == FALSE){
+       
+               if (wxMkdir(DefaultSettingsDir + wxT("preferences"), 0740) == TRUE){            
+               
+               }
+       
+       }
+
+}
\ No newline at end of file
diff --git a/source/common/defaults.h b/source/common/defaults.h
new file mode 100644 (file)
index 0000000..9e04dc0
--- /dev/null
@@ -0,0 +1,11 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef COMMON_DEFAULTS_H
+#define COMMON_DEFAULTS_H
+
+void SetupDefaultAddressBook();
+void SetupDefaultSettings();
+void SetupDirectories();
+
+#endif
\ No newline at end of file
diff --git a/source/common/dirs.cpp b/source/common/dirs.cpp
new file mode 100644 (file)
index 0000000..0ced7ab
--- /dev/null
@@ -0,0 +1,166 @@
+#include <wx/wx.h>
+
+wxString GetUserDir()
+{
+
+       wxString UserDir;
+
+#if defined(__HAIKU__)
+
+       //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+               
+       UserDir.Clear();
+       UserDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       UserDir.Append(wxT("\\Xestia\\Address Book\\"));
+
+#else
+
+       UserDir.Clear();
+       UserDir.Append(wxString::FromUTF8(getenv("HOME")));
+       UserDir.Append(wxT("/.xestiaab/"));
+
+#endif 
+
+       return UserDir;
+
+}
+
+wxString GetUserPrefDir()
+{
+
+       wxString UserPrefDir;
+
+#if defined(__HAIKU__)
+
+       //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+       
+       UserPrefDir.Clear();
+       UserPrefDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       UserPrefDir.Append(wxT("\\Xestia\\Address Book\\preferences\\"));
+
+#else
+
+       UserPrefDir.Clear();
+       UserPrefDir.Append(wxString::FromUTF8(getenv("HOME")));
+       UserPrefDir.Append(wxT("/.xestiaab/preferences/"));
+
+#endif 
+
+       return UserPrefDir;
+
+}
+
+wxString GetRecoveryDB()
+{
+
+       wxString RecoveryDBFile;
+
+#if defined(__HAIKU__)
+
+       //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       RecoveryDBFile.Clear();
+       RecoveryDBFile.Append(wxString::FromUTF8(getenv("APPDATA")));
+       RecoveryDBFile.Append(wxT("\\Xestia\\Address Book\\recovery.db"));
+
+#else
+
+       RecoveryDBFile.Clear();
+       RecoveryDBFile.Append(wxString::FromUTF8(getenv("HOME")));
+       RecoveryDBFile.Append(wxT("/.xestiaab/.recovery.db"));
+
+#endif 
+
+       return RecoveryDBFile;
+
+}
+
+wxString GetAccountDir(wxString AccName, bool ServerCert)
+{
+
+       wxString AccountDir;
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+       AccountDir.Clear();
+       AccountDir.Append(wxString::FromUTF8(getenv("APPDATA")));
+       AccountDir.Append(wxT("\\Xestia\\Address Book\\accounts\\"));
+       AccountDir.Append(AccName);
+       AccountDir.Append(wxT("\\"));
+       if (ServerCert == TRUE){
+               AccountDir.Append(wxT("server.crt"));
+       }
+
+#else
+
+       AccountDir.Clear();
+       AccountDir.Append(wxString::FromUTF8(getenv("HOME")));
+       AccountDir.Append(wxT("/.xestiaab/accounts/"));
+       AccountDir.Append(AccName);
+       AccountDir.Append(wxT("/"));
+       if (ServerCert == TRUE){
+               AccountDir.Append(wxT("server.crt"));
+       }
+
+#endif
+
+       return AccountDir;
+
+}
+
+wxString GetAccountsFile()
+{
+
+       wxString AccountsFile;
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+       AccountsFile.Clear();
+       AccountsFile.Append(wxString::FromUTF8(getenv("APPDATA")));
+       AccountsFile.Append(wxT("\\Xestia\\Address Book\\preferences\\accounts"));
+#else
+
+       AccountsFile.Clear();
+       AccountsFile.Append(wxString::FromUTF8(getenv("HOME")));
+       AccountsFile.Append(wxT("/.xestiaab/preferences/accounts"));
+
+#endif
+
+       return AccountsFile;
+
+}
+
+wxString GetSettingsFile()
+{
+
+       wxString SettingsFile;
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+       SettingsFile.Clear();
+       SettingsFile.Append(wxString::FromUTF8(getenv("APPDATA")));
+       SettingsFile.Append(wxT("\\Xestia\\Address Book\\preferences\\settings"));
+
+#else
+
+       SettingsFile.Clear();
+       SettingsFile.Append(wxString::FromUTF8(getenv("HOME")));
+       SettingsFile.Append(wxT("/.xestiaab/preferences/settings"));
+
+#endif
+
+       return SettingsFile;
+
+}
\ No newline at end of file
diff --git a/source/common/dirs.h b/source/common/dirs.h
new file mode 100644 (file)
index 0000000..779eca9
--- /dev/null
@@ -0,0 +1,13 @@
+#include <wx/wx.h>
+
+#ifndef DIRS_H
+#define DIRS_H
+
+wxString GetUserDir();
+wxString GetUserPrefDir();
+wxString GetRecoveryDB();
+wxString GetAccountDir(wxString AccName, bool ServerCert);
+wxString GetAccountsFile();
+wxString GetSettingsFile();
+
+#endif
\ No newline at end of file
diff --git a/source/common/etag.cpp b/source/common/etag.cpp
new file mode 100644 (file)
index 0000000..12777b0
--- /dev/null
@@ -0,0 +1,430 @@
+#include "etag.h" 
+#include "../common/dirs.h"
+
+ETagDB::~ETagDB(){
+
+       // Write out the database to file.
+       
+       ProcessLock->lock();
+       
+       if (NeedsWrite == TRUE){
+               
+               WriteETagDB();
+       
+       }
+       
+       ProcessLock->unlock();
+
+}
+
+void ETagDB::SetupDB(wxString AccountDirInc){
+
+       AccountDir = AccountDirInc;
+       LoadETagDB();
+       //ProcessLock = ProcessLockInc;
+
+}
+
+void ETagDB::AddETag(wxString Filename, wxString ETag, wxString ETagOriginal){
+
+       // Lock or wait if it is already locked.
+       
+       ProcessLock->lock();
+               
+       // Process the ETag addition.
+       
+       FilenameETag.insert(std::make_pair(Filename, ETag));
+       FilenameETagOriginal.insert(std::make_pair(Filename, ETagOriginal));
+       
+       NeedsWrite = TRUE;
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+
+}
+
+void ETagDB::RemoveETag(wxString Filename){
+
+       // Lock or wait if it is already locked.
+       
+       ProcessLock->lock();
+       
+       // Remove the ETag.
+       
+       Filename.Trim();
+       
+       FilenameETag.erase(Filename);
+       FilenameETagOriginal.erase(Filename);
+       
+       NeedsWrite = TRUE;
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+
+}
+
+void ETagDB::UpdateETag(wxString Filename, wxString ETag){
+
+       // Lock or wait if it is already locked.
+       
+       ProcessLock->lock();
+       
+       // Update the ETag.
+
+       FilenameETag.erase(Filename);
+       FilenameETag.insert(std::make_pair(Filename, ETag));    
+       
+       NeedsWrite = TRUE;
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+
+}
+
+void ETagDB::UpdateETag(wxString Filename, wxString ETag, wxString ETagOriginal){
+
+       // Lock or wait if it is already locked.
+       
+       ProcessLock->lock();
+       
+       // Update the ETag.
+
+       FilenameETag.erase(Filename);
+       FilenameETagOriginal.erase(Filename);
+       FilenameETag.insert(std::make_pair(Filename, ETag));
+       FilenameETagOriginal.insert(std::make_pair(Filename, ETagOriginal));
+       
+       std::map<wxString,wxString>::iterator IterWxS;
+       IterWxS = FilenameETagOriginal.find(Filename);
+       NeedsWrite = TRUE;
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+
+}
+
+std::map<wxString,wxString>* ETagDB::GetFilenamePointer(){
+
+       return &FilenameETag;
+
+}
+
+wxString ETagDB::GetETag(wxString Filename){
+
+       // Lock or wait if it is already locked.
+       
+       wxString ETagOut;
+       std::map<wxString,wxString>::iterator IterwxS;
+       
+       ProcessLock->lock();
+       
+       // Get the ETag.
+       
+       //IterwxS = FilenameETag.find(Filename);
+       
+       if (FilenameETag.find(Filename) != FilenameETag.end()){
+       
+               IterwxS = FilenameETag.find(Filename);
+       
+               ETagOut = IterwxS->second;
+       
+       }
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+       
+       return ETagOut;
+
+}
+
+wxString ETagDB::GetETagOriginal(wxString Filename){
+
+       // Lock or wait if it is already locked.
+       
+       wxString ETagOrigOut;
+       std::map<wxString,wxString>::iterator IterwxS;
+       
+       ProcessLock->lock();
+       
+       // Get the ETag.
+       
+       //IterwxS = FilenameETag.find(Filename);
+       
+       if (FilenameETagOriginal.find(Filename) != FilenameETagOriginal.end()){
+       
+               IterwxS = FilenameETagOriginal.find(Filename);
+       
+               ETagOrigOut = IterwxS->second;
+       
+       }
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+       
+       return ETagOrigOut;
+
+}
+       
+bool ETagDB::WriteETagDB(){
+
+       // Lock or wait if it is already locked.
+       
+       ProcessLock->lock();
+       
+       // Write the ETag database.
+       
+       wxString AccountETagDB;
+       std::map<wxString,wxString>::iterator IterwxS;
+       int LineSeek = 0;
+       
+
+
+#if defined(__HAIKU__)
+    
+    //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       AccountETagDB.Clear();
+       AccountETagDB = GetAccountDir(AccountDir, FALSE);
+       AccountETagDB.Append(wxT("\\etag.db"));
+
+#else
+
+       AccountETagDB.Clear();
+       AccountETagDB = GetAccountDir(AccountDir, FALSE); 
+       AccountETagDB.Append(wxT("/etag.db"));
+
+#endif
+
+       wxTextFile ETagDBFile;
+       wxString SettingLine;
+       
+       if (wxFileExists(AccountETagDB) == FALSE){
+
+               if (ETagDBFile.Create(AccountETagDB) == FALSE){
+                       ////ProcessLock.unlock();
+                       return FALSE;
+               }
+       
+       } else {
+       
+               if (ETagDBFile.Open(AccountETagDB) == FALSE){
+                       ////ProcessLock.unlock();
+                       return FALSE;
+               }
+       
+       }
+       
+       ETagDBFile.Clear();
+       
+       for (std::map<wxString,wxString>::iterator iter = FilenameETag.begin(); 
+        iter != FilenameETag.end(); ++iter){
+       
+               // Get Original ETag as well.
+               
+               IterwxS = FilenameETagOriginal.find(iter->first);
+               
+               if (iter->first.IsEmpty()){
+                       continue;
+               }
+               
+               SettingLine = iter->first + wxT("|") + iter->second + wxT("|") + IterwxS->second;
+               
+               ETagDBFile.InsertLine(SettingLine, LineSeek);
+               
+               LineSeek++;
+       
+       }
+       
+       ETagDBFile.Write();
+       
+       NeedsWrite = FALSE;
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+       
+       return TRUE;
+
+}
+
+bool ETagDB::LoadETagDB(){
+
+       // Lock or wait if it is already locked.
+       
+       ProcessLock->lock();
+       
+       // Load the ETag database.
+       
+       wxString AccountETagDB;
+       wxString AccountDirPath;
+       
+#if defined(__HAIKU__)
+    
+    //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       AccountDirPath = GetAccountDir(AccountDir, FALSE);
+
+       AccountETagDB = AccountDirPath;
+       AccountETagDB.Append(wxT("\\etag.db"));
+
+#else
+
+       AccountDirPath = GetAccountDir(AccountDir, bool FALSE);
+       
+       AccountETagDB = AccountDirPath;
+       AccountETagDB.Append(wxT("/etag.db"));
+
+#endif
+       
+       wxTextFile ETagDBFile;
+       
+       if (wxFileExists(AccountETagDB) == FALSE){
+       
+               if (ETagDBFile.Create(AccountETagDB) == FALSE){
+                       ////ProcessLock.unlock();
+                       //ProcessLock->unlock();
+                       return FALSE;           
+               }
+       
+       } else {
+       
+               if (ETagDBFile.Open(AccountETagDB, wxConvUTF8) == FALSE){
+                       ////ProcessLock.unlock();
+                       //ProcessLock->unlock();
+                       return FALSE;
+               }
+               
+       }
+       
+       wxString wxSFilename;
+       wxString wxSValue;
+       wxString ETagContactFilename;
+       
+       for (wxStringTokenizer ETagDBLine(ETagDBFile.GetFirstLine(), wxT("|"));
+               !ETagDBFile.Eof(); ETagDBLine.SetString(ETagDBFile.GetNextLine(), wxT("|"), wxTOKEN_DEFAULT) )
+       {
+       
+               // Split the file into three.
+               
+               wxSFilename = ETagDBLine.GetNextToken();
+               
+               // Get the ETag.
+               
+               wxSValue = ETagDBLine.GetNextToken();
+               FilenameETag.insert(std::make_pair(wxSFilename, wxSValue));
+               
+               // Get the original ETag.
+       
+               wxSValue = ETagDBLine.GetNextToken();
+               wxSValue.Trim();
+               FilenameETagOriginal.insert(std::make_pair(wxSFilename, wxSValue));
+                       
+       }
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+
+       return TRUE;
+
+}
+
+void ETagDB::DeleteETagDB(){ 
+
+       // Lock or wait if it is already locked.
+       
+       ProcessLock->lock();
+       
+       wxString AccountETagDB;
+       
+       // Delete the ETagDB.
+       
+#if defined(__HAIKU__)
+    
+    //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       AccountETagDB.Clear();
+       AccountETagDB = GetAccountDir(AccountDir, FALSE);
+       AccountETagDB.Append(wxT("\\etag.db"));
+
+       wxRemoveFile(AccountETagDB);
+
+#else
+
+       AccountETagDB.Clear();
+       AccountETagDB = GetAccountDir(AccountDir, FALSE);
+       AccountETagDB.Append(wxT("/etag.db"));
+       
+       wxRemoveFile(AccountETagDB);
+
+#endif
+       
+       // Unlock.
+       
+       ProcessLock->unlock();
+
+}
+
+bool ETagDB::CheckETagExists(wxString Filename){
+
+       if (FilenameETag.find(Filename) == FilenameETag.end()){
+       
+               return FALSE;
+       
+       } else {
+       
+               return TRUE;
+       
+       }       
+
+}
+
+std::map<wxString,ETagData> ETagDB::GetETagData(){
+
+       // Lock the database.
+       
+       ProcessLock->lock();
+       
+       // Go through each of the ETags and process them accordingly.
+
+       std::map<wxString,ETagData> DataSet;
+       
+       for (std::map<wxString,wxString>::iterator iter = FilenameETag.begin(); 
+        iter != FilenameETag.end(); ++iter){
+       
+               std::map<wxString,wxString>::iterator origiter = FilenameETagOriginal.find(iter->first);
+       
+               ETagData etd;
+               
+               etd.ETagValue = iter->second;
+               etd.ETagOrigValue = origiter->second;
+               
+               DataSet.insert(std::make_pair(iter->first, etd));
+       
+       }
+       
+       // Unlock the database.
+
+       ProcessLock->unlock();
+       
+       return DataSet;
+
+}
+
+bool ETagDB::GetWriteStatus(){
+
+       return NeedsWrite;
+
+}
\ No newline at end of file
diff --git a/source/common/etag.h b/source/common/etag.h
new file mode 100644 (file)
index 0000000..a75df52
--- /dev/null
@@ -0,0 +1,92 @@
+#include <mutex>
+#include <map>
+#include <wx/wx.h>
+#include <wx/textfile.h>
+#include <wx/filefn.h>
+#include <wx/tokenzr.h>
+#include <SFML/System/Lock.hpp>
+
+#ifndef ETAG_H
+#define ETAG_H
+
+struct ETagData{
+
+       wxString ETagValue;
+       wxString ETagOrigValue;
+       int ETagStatus;
+
+};
+
+class ETagDB{
+public:
+       //ETagDB(wxString AccountDir);
+       ETagDB() {};
+       ~ETagDB();
+
+       // ETag functions.
+       
+       void AddETag(wxString Filename, wxString ETag, wxString ETagOriginal);
+       void RemoveETag(wxString Filename);
+       void UpdateETag(wxString Filename, wxString ETag);
+       void UpdateETag(wxString Filename, wxString ETag, wxString ETagOriginal);
+       std::map<wxString, wxString>* GetFilenamePointer();
+       wxString GetETag(wxString Filename);
+       wxString GetETagOriginal(wxString Filename);
+       bool CheckETagExists(wxString Filename);
+       //boost::mutex ProcessLock;
+       
+       // ETagDB functions.
+       
+       bool WriteETagDB();
+       bool LoadETagDB();
+       void DeleteETagDB();
+       void SetupDB(wxString AccountDirFilename);
+       
+       bool GetWriteStatus();
+       std::map<wxString, ETagData> GetETagData();
+       //void *ProcessLock = new std::mutex;
+
+private:
+       std::map<wxString, wxString> FilenameETag;
+       std::map<wxString, wxString> FilenameETagOriginal;
+       bool NeedsWrite = FALSE;
+       bool MarkedDeleted = FALSE;
+       wxString AccountDir;
+       std::mutex *ProcessLock = new std::mutex();     
+};
+
+/*
+class ETagDB2{
+public:
+       ETagDB2() {} ;
+       ~ETagDB2() {};
+       
+       // ETag functions.
+       
+       void AddETag(wxString Filename, wxString ETag, wxString ETagOriginal);
+       void RemoveETag(wxString Filename);
+       void UpdateETag(wxString Filename, wxString ETag);
+       void UpdateETag(wxString Filename, wxString ETag, wxString ETagOriginal);
+       wxString GetETag(wxString Filename);
+       wxString GetETagOriginal(wxString Filename);
+       
+       // ETagDB functions.
+       
+       bool WriteETagDB();
+       bool LoadETagDB();
+       void DeleteETagDB();
+       
+       bool GetWriteStatus();
+private:
+       std::map<wxString, wxString> FilenameETag;
+       std::map<wxString, wxString> FilenameETagOriginal;
+       bool NeedsWrite = FALSE;
+       bool MarkedDeleted = FALSE;
+       /*
+       std::mutex ProcessLock;
+       wxString AccountDir;
+};
+*/
+
+
+#endif
\ No newline at end of file
diff --git a/source/common/events.cpp b/source/common/events.cpp
new file mode 100644 (file)
index 0000000..6b11b84
--- /dev/null
@@ -0,0 +1,4 @@
+#include "events.h"
+
+//const wxEventType ContactConflictCmdEnv = wxNewEventType();
+//const wxEventType MyFooCommandEvent = wxNewEventType();
\ No newline at end of file
diff --git a/source/common/events.h b/source/common/events.h
new file mode 100644 (file)
index 0000000..cacbe39
--- /dev/null
@@ -0,0 +1,71 @@
+#include <wx/wx.h>
+#include <wx/event.h>
+#include "../vcard/vcard.h"
+#include "../frmMain.h"
+
+#ifndef EVENTS_H
+#define EVENTS_H
+
+/*
+
+// Could have been DECLARE_EVENT_TYPE( MyFooCommandEvent, -1 )
+// Not needed if you only use the event-type in one .cpp file
+DECLARE_EVENT_TYPE(ContactConflictCmdEnv, 7000);
+
+// A custom event that transports a whole wxString.
+class ContactConflictEvent: public wxCommandEvent
+{
+public:
+       ContactConflictEvent( wxEventType commandType = ContactConflictCmdEnv, int id = 0 )
+       :  wxCommandEvent(commandType, id) { }
+       // You *must* copy here the data to be transported
+       ContactConflictEvent( const ContactConflictEvent &event )
+       :  wxCommandEvent(event) { this->SetData( event.GetText(), event.GetLocalData(), event.GetServerData() ); }
+       // Required for sending with wxPostEvent()
+       wxEvent* Clone() const { return new ContactConflictEvent(*this); }
+       wxString GetText() const { return Filename; }
+       vCard GetLocalData() const { return LocalData; }
+       vCard GetServerData() const { return ServerData; }
+       void SetData( const wxString& text, vCard LocalDataInc, vCard ServerDataInc ) { 
+               Filename = text; 
+               LocalData = LocalDataInc; 
+               ServerData = ServerDataInc;
+               }
+private:
+       wxString Filename;
+       vCard LocalData;
+       vCard ServerData;
+};
+typedef void (wxEvtHandler::*ContactConflictEventFunction)(ContactConflictEvent &);
+// This #define simplifies the one below, and makes the syntax less
+// ugly if you want to use Connect() instead of an event table.
+#define ContactConflictEventHandler(func)                                         \
+       (wxObjectEventFunction)(wxEventFunction)(wxCommandEventFunction)\\
+       wxStaticCastEvent(ContactConflictEventFunction, &func)                    
+// Define the event table entry. Yes, it really *does* end in a comma.
+#define EVT_CONTACTCONFLICT(id, fn)                                            \
+       DECLARE_EVENT_TABLE_ENTRY( ContactConflictCmdEnv, id, wxID_ANY,  \\
+       (wxObjectEventFunction)(wxEventFunction)                     \\
+       (wxCommandEventFunction) wxStaticCastEvent(                  \\
+       ContactConflictEventFunction, &fn ), (wxObject*) NULL ),
+// Optionally, you can do a similar #define for EVT_MYFOO_RANGE.
+#define EVT_CONTACTCONFLICT_RANGE(id1,id2, fn)                                 \
+       DECLARE_EVENT_TABLE_ENTRY( ContactConflictCmdEnv, id1, id2,      \\
+       ContactConflictEventHandler(fn), (wxObject*) NULL ),
+// If you want to use the custom event to send more than one sort
+// of data, or to more than one place, make it easier by providing
+// named IDs in an enumeration.
+enum { Foo_DoFirstThing = 1, Foo_DoSecondThing, Foo_DoThirdThing };
+
+*/
+
+#endif
\ No newline at end of file
diff --git a/source/common/filename.cpp b/source/common/filename.cpp
new file mode 100644 (file)
index 0000000..b8cf4f1
--- /dev/null
@@ -0,0 +1,28 @@
+#include <iostream>
+#include <wx/wx.h>
+
+wxString CreateFilenamePath(wxString Path, wxString Filename){
+
+       wxString FinalFilename;
+       
+#if defined(__HAIKU__)
+    
+    //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       FinalFilename.Append(Path);
+       FinalFilename.Append(wxT("\\"));
+       FinalFilename.Append(Filename);
+
+#else
+
+       FinalFilename.Append(Path);
+       FinalFilename.Append(wxT("/"));
+       FinalFilename.Append(Filename);
+       
+#endif 
+       
+       return FinalFilename;
+
+}
\ No newline at end of file
diff --git a/source/common/filename.h b/source/common/filename.h
new file mode 100644 (file)
index 0000000..5afbeb9
--- /dev/null
@@ -0,0 +1,9 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef COMMON_FILENAME_H
+#define COMMON_FILENAME_H
+
+wxString CreateFilenamePath(wxString Path, wxString Filename);
+
+#endif
\ No newline at end of file
diff --git a/source/common/getcontactinfo.cpp b/source/common/getcontactinfo.cpp
new file mode 100644 (file)
index 0000000..6c56df3
--- /dev/null
@@ -0,0 +1,1692 @@
+#include <iostream>
+#include <map>
+#include <utility>
+#include <wx/wx.h>
+#include <wx/tokenzr.h>
+#include <wx/fs_mem.h>
+#include <wx/mstream.h>
+#include <wx/filesys.h>
+#include <wx/datetime.h>
+//#include <b64/decode.h>
+#include <string>
+
+#include "getcontactinfo.h"
+#include "base64.h"
+#include "textprocessing.h"
+#include "../vcard/vcard34conv.h"
+
+void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj, wxString SID, 
+       wxString OldSID, std::map<wxString, wxString> *MemoryFSList){
+
+       // Show message to user that the contact information is loading.
+
+       wxString PageData;
+       
+       wxFileSystem::AddHandler(new wxMemoryFSHandler);
+       //wxMemoryFSHandler::AddFile();
+       
+       PageData.append(wxT("<html>"));
+       PageData.append(wxT("<head>"));
+       PageData.append(wxT("<title>Page Loading</title>"));    
+       PageData.append(wxT("</head>"));
+       PageData.append(wxT("<body>"));
+       PageData.append(wxT("<h2>"));
+       PageData.append(_("Loading contact information..."));
+       PageData.append(wxT("</h2>"));
+       PageData.append(wxT("</body>"));
+       PageData.append(wxT("</html>"));
+
+       HTMLObj->SetPage(PageData);
+       
+       PageData.clear();
+       
+       // Delete the information from the old session.
+       
+       if (!OldSID.IsEmpty()){
+       
+               if (MemoryFSList->find(OldSID) == MemoryFSList->end()){
+
+
+               } else {
+
+                       std::map<wxString, wxString>::iterator striter;
+
+                       for (striter = MemoryFSList->begin(); striter != MemoryFSList->end(); striter++){
+
+                               if (OldSID == striter->second){
+
+                                       // Delete the references from the wxMemoryFSHandler
+                                       // and the entry from the map.
+
+                                       wxMemoryFSHandler::RemoveFile(striter->first);
+                                       break;
+
+                               }
+
+                       }
+
+                       MemoryFSList->erase(striter);
+
+               }
+       
+       }
+       
+       // MAke sure new session ID doesn't conflict with existing
+       // data. If there is a match, generate a new one and check again.
+       
+       bool SIDMatch = FALSE;
+       wxString SIDTemp;
+       
+       for (std::map<wxString, wxString>::iterator striter = MemoryFSList->begin();
+               striter != MemoryFSList->end(); striter++){
+       
+               SIDTemp = striter->second;
+               
+               if (SID == SIDTemp){
+               
+                       // Generate a new random number.
+                       
+                       SID = wxString::Format(wxT("%i"), rand() % 32768);
+                       
+                       // Rewind the seek process back to the start.
+                       
+                       striter = MemoryFSList->begin();
+               
+               }
+                               
+       }
+       
+       SIDTemp.clear();
+
+       // Setup the HTML document.
+
+       PageData.append(wxT("<html>"));
+       PageData.append(wxT("<head>"));
+       PageData.append(wxT("<title>Contact Information</title>"));     
+       PageData.append(wxT("</head>"));
+       PageData.append(wxT("<body>"));
+
+       // Process the data in the vCard object.
+       
+       // Name (Display As)
+       
+       PageData.append(wxT("<table>"));
+       PageData.append(wxT("<tr>"));
+       PageData.append(wxT("<td>"));
+       PageData.append(wxT("<h2>"));
+       PageData.append(vCardObj->Get(wxT("FN")));
+       PageData.append(wxT("</h2>"));
+       PageData.append(wxT("</td>"));
+       PageData.append(wxT("<td>"));
+       
+       // Define common variables for ADR.
+       
+       std::map<int,int> SplitPoints;
+       std::map<int,int> SplitLength;
+       std::map<int,int>::iterator SLiter;
+       
+       int intPropertyLen;
+       int intSplitsFound;
+       int intSplitSize;
+       int intPrevValue;
+       
+       wxString AddressPOBox;
+       wxString AddressStreet;
+       wxString AddressLocality;
+       wxString AddressRegion;
+       wxString AddressPostalCode;
+       wxString AddressCountry;
+       wxString AddressExtended;
+       
+       wxString FinalAddressLine;
+       bool AddressFirst = TRUE;
+       
+       // Define common variables for PHOTO and LOGO.
+       
+       std::string PhotoDataBin;
+       std::string PhotoDataIn;
+       wxString PhotoSplitData;
+       wxString PhotoMIMEType;
+       wxString PhotoEncType;
+       wxString PhotoEncData;
+       bool LoadPicture = FALSE;
+       bool DataDisplay = FALSE;
+       bool RectData = FALSE;
+       wxRect PhotoRectPoints;
+       wxString SIDFilename;
+       wxString OutData;
+       wxString DataLines;
+       
+       // Picture
+       
+       ArrayvCardOutData ContactData = vCardObj->GetByPartial(wxT("PHOTO"));
+       
+       if (ContactData.PropCount > 0){
+
+               // Split the data.
+
+               
+               
+               /*std::map<int,int> SplitPts;
+               std::map<int,int> SplitLen;
+               std::map<wxString,wxString> SplitData;
+               int intSize = 0;
+               
+               SplitPropertyData(&ContactData.PropData[0], 
+                       &SplitPts, 
+                       &SplitLen, 
+                       0,
+                       &SplitData);
+               
+               for (std::map<wxString, wxString>::iterator striter = SplitData.begin();
+               striter != SplitData.end(); striter++){
+               
+                       raise(SIGABRT);
+               
+               }*/
+               
+               // Look for the X-ABCROP-RECTANGLE.
+               
+               wxStringTokenizer PhotoSplit(ContactData.PropData[0], wxT(":"));
+               wxString PhotoPropertyDataString = PhotoSplit.GetNextToken();
+               wxStringTokenizer PhotoPropertyData(PhotoPropertyDataString, wxT(";"));
+               wxString PropertyLineData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               
+               wxStringTokenizer DataSplit(ContactData.PropValues[0], wxT(";"));
+               PhotoSplitData = DataSplit.GetNextToken();
+               wxStringTokenizer MIMESplit(PhotoSplitData, wxT(":"));
+               MIMESplit.GetNextToken();
+               PhotoMIMEType = MIMESplit.GetNextToken();
+               PhotoSplitData = DataSplit.GetNextToken();
+               wxStringTokenizer EncSplit(PhotoSplitData, wxT(","));
+               PhotoEncType = EncSplit.GetNextToken();
+               PhotoEncData = EncSplit.GetNextToken();
+               
+               // Convert the picture data from base64 to binary.
+       
+               PhotoDataIn = std::string(PhotoEncData.mb_str());
+               PhotoDataBin = base64_decode(PhotoDataIn);
+               wxMemoryInputStream istream(PhotoDataBin.c_str(), (size_t)PhotoDataBin.size());
+               wxImage photo;
+
+               if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){
+    
+                       // Photo failed to load so do nothing.
+    
+                       LoadPicture = FALSE;
+
+               } else {
+               
+                       while (PhotoPropertyData.HasMoreTokens()){
+               
+                               PropertyLineData = PhotoPropertyData.GetNextToken();
+                       
+                               wxStringTokenizer PhotoPropPair(PropertyLineData, wxT("="));
+                               wxString PhotoPropName = PhotoPropPair.GetNextToken();
+                               wxString PhotoPropValue = PhotoPropPair.GetNextToken();
+               
+                               if (PhotoPropName == wxT("X-ABCROP-RECTANGLE")){
+                       
+                                       wxStringTokenizer PhotoRectData(PhotoPropValue, wxT("&"));
+                               
+                                       PhotoRectData.GetNextToken();
+
+                                       //PhotoRectPoints.SetX(wxAtoi(PhotoRectData.GetNextToken()));
+                                       //PhotoRectPoints.SetY(wxAtoi(PhotoRectData.GetNextToken()) - 100);
+
+                                       int PointXBase = wxAtoi(PhotoRectData.GetNextToken());
+                                       int PointYBase = wxAtoi(PhotoRectData.GetNextToken());
+                                       int PointWBase = wxAtoi(PhotoRectData.GetNextToken());
+                                       int PointHBase = wxAtoi(PhotoRectData.GetNextToken());
+
+                                       int PointX = PointXBase;
+                                       int PointY = PointYBase;
+                                       int PointW = PointWBase;
+                                       int PointH = PointHBase;
+
+                                       // Top Right Method
+
+                                       if (PointYBase > PointHBase){
+
+                                               PointX = photo.GetWidth() - PointXBase - 140;
+                                               PointY = photo.GetHeight() - PointYBase - 140;
+                                               PointW = PointWBase;
+                                               PointH = PointHBase;
+
+                                       } else if (PointXBase > PointWBase){
+                                       
+                                               PointX = photo.GetWidth() - PointXBase;
+                                               PointY = PointYBase - 50;
+                                               PointW = PointWBase;
+                                               PointH = PointHBase;
+                                       
+                                       } else {
+                                       
+                                       }
+                                       
+                                       /*int PointX = PointXBase;
+                                       int PointY = PointYBase;
+                                       int PointW = PointWBase;
+                                       int PointH = PointHBase;*/
+
+                                       // Bottom Left Method
+                                       
+                                       /*int PointX = wxAtoi(PhotoRectData.GetNextToken());
+                                       int PointY = photo.GetHeight() - wxAtoi(PhotoRectData.GetNextToken()) - 340;
+                                       int PointW = wxAtoi(PhotoRectData.GetNextToken());
+                                       int PointH = wxAtoi(PhotoRectData.GetNextToken());*/
+                                       
+                                       // Bottom Right Method
+                                       
+                                       /*int PointXRemain = photo.GetWidth() - PointX - 140;
+                                       int PointYRemain = photo.GetHeight() - PointY - 140;*/
+                                                                               
+                                       PhotoRectPoints.SetX(PointX);
+                                       PhotoRectPoints.SetY(PointY);
+                                       PhotoRectPoints.SetWidth(PointW);
+                                       PhotoRectPoints.SetHeight(PointH);
+                                       RectData = TRUE;
+                       
+                               }
+               
+                       }
+               
+                       LoadPicture = TRUE;
+               
+                       // Resize the picture to 125x125.
+                       
+                       // Add to the wxMemnoryFSHandler.
+                       
+                       SIDFilename = SID + wxT("-photo");
+                       
+                       if (RectData == TRUE){
+                               
+                               wxImage rectphoto = photo.GetSubImage(PhotoRectPoints);
+                               rectphoto = rectphoto.Scale(75, 75, wxIMAGE_QUALITY_HIGH);
+                               wxMemoryFSHandler::AddFile(SIDFilename, rectphoto, wxBITMAP_TYPE_PNG);
+                       
+                       } else {
+                       
+                               photo = photo.Scale(50, 50, wxIMAGE_QUALITY_HIGH);
+                               wxMemoryFSHandler::AddFile(SIDFilename, photo, wxBITMAP_TYPE_PNG);
+                       
+                       }
+                       
+                       // Add the filename to the MemoryFSList map.
+
+                       MemoryFSList->insert(std::make_pair(SIDFilename, SID));
+               
+               }
+       
+       }
+       
+       if (LoadPicture == TRUE){
+
+               PageData.append(wxT("<img src=\"memory:") + SIDFilename + wxT("\">"));
+       
+       }
+       
+       LoadPicture = FALSE;
+       
+       // Logo
+       
+       ContactData = vCardObj->GetByPartial(wxT("LOGO"));
+       
+       if (ContactData.PropCount > 0){
+
+               // Split the data.
+       
+               wxStringTokenizer DataSplit(ContactData.PropValues[0], wxT(";"));
+               PhotoSplitData = DataSplit.GetNextToken();
+               wxStringTokenizer MIMESplit(PhotoSplitData, wxT(":"));
+               MIMESplit.GetNextToken();
+               PhotoMIMEType = MIMESplit.GetNextToken();
+               PhotoSplitData = DataSplit.GetNextToken();
+               wxStringTokenizer EncSplit(PhotoSplitData, wxT(","));
+               PhotoEncType = EncSplit.GetNextToken();
+               PhotoEncData = EncSplit.GetNextToken();
+               
+               // Convert the picture data from base64 to binary.
+       
+               PhotoDataIn = std::string(PhotoEncData.mb_str());
+               PhotoDataBin = base64_decode(PhotoDataIn);
+               wxMemoryInputStream istream(PhotoDataBin.c_str(), (size_t)PhotoDataBin.size());
+               wxImage photo;
+
+               if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){
+    
+                       // Photo failed to load so do nothing.
+    
+                       LoadPicture = FALSE;
+
+               } else {
+               
+                       LoadPicture = TRUE;
+               
+                       photo = photo.Scale(50, 50, wxIMAGE_QUALITY_HIGH);
+
+                       // Resize the picture to 125x125.
+                       
+                       // Add to the wxMemnoryFSHandler.
+                       
+                       SIDFilename = SID + wxT("-logo");
+                       
+                       wxMemoryFSHandler::AddFile(SIDFilename, photo, wxBITMAP_TYPE_PNG);
+                       
+                       // Add the filename to the MemoryFSList map.
+                       
+                       MemoryFSList->insert(std::make_pair(SIDFilename, SID));
+               
+               }
+       
+       }
+       
+       if (LoadPicture == TRUE){
+
+               PageData.append(wxT("<img src=\"memory:") + SIDFilename + wxT("\">"));
+       
+       }       
+
+       PageData.append(wxT("</td>"));
+       PageData.append(wxT("</tr>"));
+       PageData.append(wxT("</table>"));
+       
+       // Process LOGO, PHOTO, SOUND, KEY, VND-* and X-*
+       // lines and display icons for each accordingly.
+
+       ContactData = vCardObj->GetByPartial(wxT("PHOTO"));
+       
+       bool AddBreak = FALSE;
+       
+       if (ContactData.PropCount > 1){
+       
+               PageData.append(wxT("<img src=\"memory:cipto.png\" alt=\""));
+               PageData.append(_("This contact has multiple photos."));
+               PageData.append(wxT("\">"));
+               AddBreak = TRUE;
+       
+       }
+       
+       ContactData = vCardObj->GetByPartial(wxT("LOGO"));
+       
+       if (ContactData.PropCount > 1){
+       
+               PageData.append(wxT("<img src=\"memory:cilog.png\" alt=\""));
+               PageData.append(_("This contact has multiple logos."));
+               PageData.append(wxT("\">"));
+               AddBreak = TRUE;
+       
+       }
+       
+       ContactData = vCardObj->GetByPartial(wxT("SOUND"));
+       
+       if (ContactData.PropCount >= 1){
+       
+               PageData.append(wxT("<img src=\"memory:cisnd.png\" alt=\""));
+               PageData.append(_("This contact has audio information."));
+               PageData.append(wxT("\">"));
+               AddBreak = TRUE;
+       
+       }
+       
+       ContactData = vCardObj->GetByPartial(wxT("KEY"));
+
+       if (ContactData.PropCount >= 1){
+       
+               PageData.append(wxT("<img src=\"memory:cikey.png\" alt=\""));
+               PageData.append(_("This contact has crytographic keys."));
+               PageData.append(wxT("\">"));
+               AddBreak = TRUE;
+       
+       }
+       
+       ContactData = vCardObj->GetByPartial(wxT("VND-"));
+       
+       if (ContactData.PropCount >= 1){
+       
+               PageData.append(wxT("<img src=\"memory:civen.png\" alt=\""));
+               PageData.append(_("This contact has vendor-specific information."));
+               PageData.append(wxT("\">"));
+               AddBreak = TRUE;
+       
+       }
+       
+       ContactData = vCardObj->GetByPartial(wxT("X-"));
+       
+       if (ContactData.PropCount >= 1){
+       
+               PageData.append(wxT("<img src=\"memory:ciext.png\" alt=\""));
+               PageData.append(_("This contact has extended information."));
+               PageData.append(wxT("\">"));
+               AddBreak = TRUE;
+
+       }
+       
+       if (AddBreak == TRUE){
+       
+               PageData.append(wxT("<br><br>"));
+       
+       }
+       
+       bool MultiLogoIcon = FALSE;
+       bool MultiPhotoIcon = FALSE;
+       bool SoundIcon = FALSE;
+       bool KeyIcon = FALSE;
+       bool VendorIcon = FALSE;
+       bool XTokenIcon = FALSE;
+       
+       // Process Birthday
+       
+       ContactData = vCardObj->GetByPartial(wxT("BDAY"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString BDayLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       // Grab the first birthday only.
+
+                       BDayLine = ContactData.PropValues[i];
+               
+                       BDayLine.Trim();
+                       CaptureString(&BDayLine, FALSE);
+                       ConvertToHTML(&BDayLine);
+               
+                       DataLines.append(BDayLine);
+
+                       break;
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+       
+               DataLines.Trim();
+               PageData.append(wxT("<b>"));
+               PageData.append(_("Birthday:"));
+               PageData.append(wxT("</b> "));
+               PageData.append(DataLines);
+               PageData.append(wxT("<br>"));
+       
+       }
+       
+       // Process Anniversary
+       
+       ContactData = vCardObj->GetByPartial(wxT("ANNIVERSARY"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString AnniLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       // Grab the first anniversary only.
+
+                       AnniLine = ContactData.PropValues[i];
+               
+                       AnniLine.Trim();
+                       CaptureString(&AnniLine, FALSE);
+                       ConvertToHTML(&AnniLine);
+               
+                       DataLines.append(AnniLine);
+
+                       break;
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+       
+               DataLines.Trim();
+               PageData.append(wxT("<b>"));
+               PageData.append(_("Anniversary:"));
+               PageData.append(wxT("</b> "));
+               PageData.append(DataLines);
+               PageData.append(wxT("<br>"));
+       
+       }
+       
+       // Nickname
+       
+       ContactData = vCardObj->GetByPartial(wxT("NICKNAME"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString NicknameLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       NicknameLine = ContactData.PropValues[i];
+               
+                       NicknameLine.Trim();
+                       CaptureString(&NicknameLine, FALSE);
+                       ConvertToHTML(&NicknameLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Nickname:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(NicknameLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Nicknames"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Address
+       
+       ContactData = vCardObj->GetByPartial(wxT("ADR"));
+       
+       DataDisplay = FALSE;
+       DataLines.clear();
+               
+       if (ContactData.PropCount > 0){
+       
+               wxString AddressLine;
+       
+               for (int i = 0; i < ContactData.PropCount; i++){
+                       
+                       AddressLine = ContactData.PropValues[i];
+                       
+                       intPropertyLen = AddressLine.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       AddressPOBox.clear();
+                       AddressStreet.clear();
+                       AddressLocality.clear();
+                       AddressRegion.clear();
+                       AddressPostalCode.clear();
+                       AddressCountry.clear();
+                       AddressExtended.clear();
+                       FinalAddressLine.clear();
+                       AddressFirst = TRUE;
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (AddressLine.Mid(i, 1) == wxT(";") && AddressLine.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 6){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       } else {
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       // Split the data into several parts.                   
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               if (intiter->first == 1){
+                               
+                                       // Deal with PO Box.
+                                       
+                                       SLiter = SplitLength.find(1);
+                                                                               
+                                       //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE));
+                                       AddressPOBox = AddressLine.Mid(0, SLiter->second);
+                                       intPrevValue = intiter->second;
+                               
+                               } else if (intiter->first == 2){
+                               
+                                       // Deal with extended address.
+                                       
+                                       SLiter = SplitLength.find(2);
+                                       
+                                       AddressExtended = AddressLine.Mid(intPrevValue, SLiter->second);
+                                       //txtForename->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                               
+                               } else if (intiter->first == 3){
+                               
+                                       // Deal with street address.
+                                       
+                                       SLiter = SplitLength.find(3);
+                                                                               
+                                       AddressStreet = AddressLine.Mid(intPrevValue, SLiter->second);
+                                       //txtOtherNames->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                               
+                               } else if (intiter->first == 4){
+                               
+                                       // Deal with locality
+
+                                       SLiter = SplitLength.find(4);
+                                       
+                                       AddressLocality = AddressLine.Mid(intPrevValue, SLiter->second);
+                                       //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       
+                                       //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, wxSTRING_MAXLEN), TRUE));
+                               
+                               } else if (intiter->first == 5){
+                               
+                                       // Deal with region.
+
+                                       SLiter = SplitLength.find(5);
+                                       
+                                       AddressRegion = AddressLine.Mid(intPrevValue, SLiter->second);
+                                       //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       
+                                       //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, wxSTRING_MAXLEN), TRUE));
+                               
+                               } else if (intiter->first == 6){
+                               
+                                       // Deal with post code.
+
+                                       SLiter = SplitLength.find(6);
+                                       
+                                       AddressPostalCode = AddressLine.Mid(intPrevValue, SLiter->second);
+                                       //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       
+                                       // Deal with country.
+                                       
+                                       AddressCountry = AddressLine.Mid(intPrevValue);
+                                       //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, wxSTRING_MAXLEN), TRUE));
+                               
+                               }
+                       
+                       }
+                       
+                       if (!AddressStreet.IsEmpty()){
+                       
+                               AddressStreet.Trim();
+                               ConvertToHTML(&AddressStreet);
+                       
+                               FinalAddressLine.append(AddressStreet);
+                               AddressFirst = FALSE;
+                       
+                       }
+                       
+                       if (!AddressLocality.IsEmpty()){
+                       
+                               AddressLocality.Trim();
+                               ConvertToHTML(&AddressLocality);
+                       
+                               if (AddressFirst == FALSE){
+                               
+                                       FinalAddressLine.append(wxT(",<br>"));
+                                       FinalAddressLine.append(AddressLocality);
+
+                               } else {
+                               
+                                       FinalAddressLine.append(AddressLocality);
+                                       AddressFirst = FALSE;
+                               
+                               }
+                       
+                       }
+                       
+                       if (!AddressRegion.IsEmpty()){
+                       
+                               AddressRegion.Trim();
+                               ConvertToHTML(&AddressRegion);
+                       
+                               if (AddressFirst == FALSE){
+                               
+                                       FinalAddressLine.append(wxT(",<br>"));
+                                       FinalAddressLine.append(AddressRegion);
+
+                               } else {
+                               
+                                       FinalAddressLine.append(AddressRegion);
+                                       AddressFirst = FALSE;
+                               
+                               }
+                       
+                       }
+                       
+                       if (!AddressPostalCode.IsEmpty()){
+                       
+                               AddressPostalCode.Trim();
+                               ConvertToHTML(&AddressPostalCode);
+                       
+                               if (AddressFirst == FALSE){
+                               
+                                       FinalAddressLine.append(wxT(",<br>"));
+                                       FinalAddressLine.append(AddressPostalCode);
+
+                               } else {
+                               
+                                       FinalAddressLine.append(AddressPostalCode);
+                                       AddressFirst = FALSE;
+                               
+                               }
+                       
+                       }
+                       
+                       if (!AddressCountry.IsEmpty()){
+                       
+                               AddressCountry.Trim();
+                               ConvertToHTML(&AddressCountry);
+                       
+                               if (AddressFirst == FALSE){
+                               
+                                       FinalAddressLine.append(wxT(",<br>"));
+                                       FinalAddressLine.append(AddressCountry);
+
+                               } else {
+                               
+                                       FinalAddressLine.append(AddressCountry);
+                                       AddressFirst = FALSE;
+                               
+                               }
+                       
+                       }
+                       
+                       CaptureString(&FinalAddressLine, FALSE);
+                       
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Address:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(FinalAddressLine);
+                       DataLines.append(wxT("</td></tr>"));
+                       
+               }
+       
+               DataDisplay = TRUE;
+       
+       }
+       
+       if (DataDisplay == TRUE){
+       
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Addresses"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+
+       // Email
+       
+       ContactData = vCardObj->GetByPartial(wxT("EMAIL"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString EmailLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       EmailLine = ContactData.PropValues[i];
+               
+                       EmailLine.Trim();
+                       CaptureString(&EmailLine, FALSE);
+                       ConvertToHTML(&EmailLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("E-mail Address:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(EmailLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Email Addresses"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Telephone
+
+       ContactData = vCardObj->GetByPartial(wxT("TEL"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString TelLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       TelLine = ContactData.PropValues[i];
+               
+                       wxStringTokenizer TelSplit(TelLine, wxT(":"));
+                       
+                       TelLine = TelSplit.GetNextToken();
+                       
+                       if (TelSplit.HasMoreTokens()){
+                       
+                               TelLine = TelSplit.GetNextToken();
+                       
+                       }
+               
+                       TelLine.Trim();
+                       CaptureString(&TelLine, FALSE);
+                       ConvertToHTML(&TelLine);
+                       
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Telephone:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(TelLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Telephones"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Instant Messaging
+
+       ContactData = vCardObj->GetByPartial(wxT("IMPP"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString IMLine;
+               wxString IMTypeFriendly;
+               wxString IMType;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       IMLine = ContactData.PropValues[i];
+               
+                       wxStringTokenizer IMSplit(IMLine, wxT(":"));
+                       
+                       IMType = IMSplit.GetNextToken();
+                       IMLine = IMSplit.GetNextToken();
+               
+                       // Process skype, gg, icq, yahoo etc into
+                       // something meaningful.
+               
+                       if (IMType == wxT("aim")){
+                       
+                               // AIM
+                       
+                               IMTypeFriendly = _("AIM");
+                       
+                       } else if (IMType == wxT("xmpp")){
+                       
+                               // XMPP
+                               
+                               IMTypeFriendly = _("XMPP");
+                       
+                       } else if (IMType == wxT("icq")){
+                       
+                               // ICQ
+                               
+                               IMTypeFriendly = _("ICQ");
+                       
+                       } else if (IMType == wxT("skype")){
+                       
+                               // Skype
+                       
+                               IMTypeFriendly = _("Skype");
+                       
+                       } else if (IMType == wxT("gg")){
+                       
+                               // Gadu-Gadu
+                       
+                               IMTypeFriendly = _("Gadu-Gadu");
+                       
+                       } else if (IMType == wxT("yahoo")){
+                       
+                               // Yahoo
+                               
+                               IMTypeFriendly = _("Yahoo");
+                       
+                       } else {
+                       
+                               // Other. Use IM type that was split.
+                               
+                               IMTypeFriendly = IMType;
+                       
+                       }
+               
+                       IMLine.Trim();
+                       CaptureString(&IMLine, FALSE);
+                       ConvertToHTML(&IMLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("IM Address"));
+                       DataLines.append(_(" ("));
+                       DataLines.append(IMTypeFriendly);
+                       DataLines.append(_("):"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(IMLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+                       IMTypeFriendly.clear();
+                       IMType.clear();
+                       IMLine.clear();
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+       
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Instant Messaging Addresses"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // URL
+
+       ContactData = vCardObj->GetByPartial(wxT("URL"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString URLLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       URLLine = ContactData.PropValues[i];
+               
+                       URLLine.Trim();
+                       CaptureString(&URLLine, FALSE);
+                       ConvertToHTML(&URLLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Website:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(URLLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Website Addresses"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Languages
+       
+       ContactData = vCardObj->GetByPartial(wxT("LANG"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString NicknameLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       NicknameLine = ContactData.PropValues[i];
+               
+                       NicknameLine.Trim();
+                       CaptureString(&NicknameLine, FALSE);
+                       ConvertToHTML(&NicknameLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Language:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(NicknameLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Languages"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Timezones
+       
+       ContactData = vCardObj->GetByPartial(wxT("TZ"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString NicknameLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       NicknameLine = ContactData.PropValues[i];
+               
+                       NicknameLine.Trim();
+                       CaptureString(&NicknameLine, FALSE);
+                       ConvertToHTML(&NicknameLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Timezone:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(NicknameLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Timezones"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+
+       // Geopositioning
+       
+       ContactData = vCardObj->GetByPartial(wxT("GEO"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString GeoLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       GeoLine = ContactData.PropValues[i];
+               
+                       wxStringTokenizer GeoSplit(GeoLine, wxT(":"));
+                       
+                       GeoLine = GeoSplit.GetNextToken();
+                       
+                       if (GeoSplit.HasMoreTokens()){
+                       
+                               GeoLine = GeoSplit.GetNextToken();
+                       
+                       }
+               
+                       GeoLine.Trim();
+                       CaptureString(&GeoLine, FALSE);
+                       ConvertToHTML(&GeoLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Geoposition:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(GeoLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Geopositioning"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Titles
+       
+       ContactData = vCardObj->GetByPartial(wxT("TITLE"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString TitleLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       TitleLine = ContactData.PropValues[i];
+               
+                       TitleLine.Trim();
+                       CaptureString(&TitleLine, FALSE);
+                       ConvertToHTML(&TitleLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Title:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(TitleLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Titles"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Roles
+       
+       ContactData = vCardObj->GetByPartial(wxT("ROLE"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString RoleLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       RoleLine = ContactData.PropValues[i];
+               
+                       RoleLine.Trim();
+                       CaptureString(&RoleLine, FALSE);
+                       ConvertToHTML(&RoleLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Role:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(RoleLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Roles"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Organisations
+       
+       ContactData = vCardObj->GetByPartial(wxT("ORG"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString OrgLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       OrgLine = ContactData.PropValues[i];
+               
+                       OrgLine.Trim();
+                       CaptureString(&OrgLine, FALSE);
+                       ConvertToHTML(&OrgLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Organisation:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(OrgLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Organisations"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Categories
+       
+       ContactData = vCardObj->GetByPartial(wxT("CATEGORIES"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString CatLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       CatLine = ContactData.PropValues[i];
+               
+                       CatLine.Trim();
+                       CaptureString(&CatLine, FALSE);
+                       ConvertToHTML(&CatLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Category:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(CatLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Categories"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Groups
+       
+
+       
+       // Calendar Addresses
+       
+       ContactData = vCardObj->GetByPartial(wxT("CALURI"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString CalURILine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       CalURILine = ContactData.PropValues[i];
+               
+                       CalURILine.Trim();
+                       CaptureString(&CalURILine, FALSE);
+                       ConvertToHTML(&CalURILine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Calendar Address:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(CalURILine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Calendar Addresses"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Calendar Request Addresses
+
+       ContactData = vCardObj->GetByPartial(wxT("CALADRURI"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString CalAdrURILine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       CalAdrURILine = ContactData.PropValues[i];
+               
+                       CalAdrURILine.Trim();
+                       CaptureString(&CalAdrURILine, FALSE);
+                       ConvertToHTML(&CalAdrURILine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Calendar Request Address:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(CalAdrURILine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Calendar Request Addresses"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+
+       // Free/Busy Addresses
+       
+       ContactData = vCardObj->GetByPartial(wxT("FBURL"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString FBURLLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       FBURLLine = ContactData.PropValues[i];
+               
+                       FBURLLine.Trim();
+                       CaptureString(&FBURLLine, FALSE);
+                       ConvertToHTML(&FBURLLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Free/Busy Address:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(FBURLLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+
+               DataLines.Trim();
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Free/Busy Addresses"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+       
+       // Notes
+       
+       ContactData = vCardObj->GetByPartial(wxT("NOTE"));
+
+       DataDisplay = FALSE;
+       DataLines.clear();
+
+       if (ContactData.PropCount > 0){
+       
+               wxString NoteLine;
+               
+               for (int i = 0; i < ContactData.PropCount; i++){
+
+                       NoteLine = ContactData.PropValues[i];
+               
+                       NoteLine.Trim();
+                       CaptureString(&NoteLine, FALSE);
+                       ConvertToHTML(&NoteLine);
+               
+                       DataLines.append(wxT("<tr><td><b>"));
+                       DataLines.append(_("Note:"));
+                       DataLines.append(wxT(" </b></td><td>"));
+                       DataLines.append(NoteLine);
+                       DataLines.append(wxT("</td></tr>"));
+               
+               }
+               
+               DataDisplay = TRUE;
+               
+       }
+       
+       if (DataDisplay == TRUE){
+       
+               PageData.append(wxT("<h4>"));
+               PageData.append(_("Notes"));
+               PageData.append(wxT("</h4>"));
+               PageData.append(wxT("<br>"));
+               PageData.append(wxT("<table>"));
+               PageData.append(DataLines);
+               PageData.append(wxT("</table>"));
+       
+       }
+
+       // Display the HTML document on the screen.
+
+       PageData.append(wxT("</body>"));
+       PageData.append(wxT("</html>"));
+
+       HTMLObj->SetPage(PageData);
+
+}
+
+void SplitPropertyData(wxString *PropertyLine, 
+       std::map<int,int> *SplitPoints, 
+       std::map<int,int> *SplitLength, 
+       int intSize,
+       std::map<wxString,wxString> *SplitData){
+       
+       wxString DataStr;
+       wxStringTokenizer PropertyElement;
+       wxString PropertyName;
+       wxString PropertyValue;
+       int intPropertyLen = PropertyLine->Len();               
+       int intSplitsFound = 0;
+       int intSplitSize = 0;
+       int intSplitSeek = (intSize - 1);
+       
+       for (int i = intSize; i <= intPropertyLen; i++){
+
+               intSplitSize++;
+       
+               if (PropertyLine->Mid(i, 1) == wxT(";") &&
+                   PropertyLine->Mid((i - 1), 1) != wxT("\\")){
+          
+                   if (intSplitsFound == 0){
+           
+                       DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize));
+                       SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize)));
+         
+                   } else {
+          
+                       DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize - 1));
+                       SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                   
+                   }
+                   
+                   SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1)));
+           
+                   intSplitsFound++;
+                   intSplitSeek = (i + 1);
+                   intSplitSize = 0;
+                   
+                   if (!DataStr.IsEmpty()){
+                   
+                       PropertyElement.SetString(DataStr, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();
+                       PropertyValue = PropertyElement.GetNextToken();
+                       SplitData->insert(std::make_pair(PropertyName, PropertyValue));
+                   
+                   }
+                   
+                   DataStr.clear();
+                   PropertyName.clear();
+                   PropertyValue.clear();
+           
+               }
+
+       }
+
+       if (intSplitsFound == 0){
+
+               DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize));
+
+               SplitPoints->insert(std::make_pair(intSplitsFound, (8 + 1)));
+               SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize));
+
+       } else {
+
+               DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize - 1));
+
+               SplitPoints->insert(std::make_pair(intSplitsFound, (intSplitSeek + 1)));
+               SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize));
+
+       }
+
+       if (!DataStr.IsEmpty()){
+               
+               PropertyElement.SetString(DataStr, wxT("="));
+               PropertyName = PropertyElement.GetNextToken();
+               PropertyValue = PropertyElement.GetNextToken();
+               SplitData->insert(std::make_pair(PropertyName, PropertyValue));         
+               
+       }
+
+}
\ No newline at end of file
diff --git a/source/common/getcontactinfo.cpp~ b/source/common/getcontactinfo.cpp~
new file mode 100644 (file)
index 0000000..2764df7
--- /dev/null
@@ -0,0 +1,81 @@
+#include <iostream>
+#include "getcontactinfo.h"
+#include <wx/wx.h>
+
+void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj){
+  
+    wxString strPageHeader;
+    wxString strPageFooter;
+    wxString strPageData;
+    wxString strFinal;
+    wxString strvCardData;
+  
+    strPageHeader = wxT("<html>\n\t<body>");
+    strPageFooter = wxT("\n\t</body>\n</html>");
+    
+    // Get the full name of the contact.
+    
+    strvCardData = vCardObj->Get(wxT("FN"));
+    
+    strPageData = wxT("<h2>") + strvCardData + wxT("</h2>");
+    strPageData.Append(wxT("<br><br>"));
+        
+    // Get nickname.
+    
+    strvCardData = vCardObj->Get(wxT("NICKNAME"));
+    
+    if (!strvCardData.IsEmpty()){
+    
+       strPageData.Append(wxT("Nickname: "));
+       strPageData.Append(strvCardData);
+       strPageData.Append(wxT("<br><br>"));
+    
+    }
+    
+    strvCardData = vCardObj->Get(wxT("TITLE"));
+    
+    if (!strvCardData.IsEmpty()){
+    
+       strPageData.Append(wxT("Title: "));
+       strPageData.Append(strvCardData);
+       strPageData.Append(wxT("<br><br>"));    
+    
+    }
+    
+    strvCardData = vCardObj->Get(wxT("ROLE"));
+    
+    if (!strvCardData.IsEmpty()){
+    
+       strPageData.Append(wxT("Role: "));
+       strPageData.Append(strvCardData);
+       strPageData.Append(wxT("<br><br>"));    
+    
+    }
+    
+    strvCardData = vCardObj->Get(wxT("GENDER"));
+    
+    if (!strvCardData.IsEmpty()){
+    
+       strPageData.Append(wxT("Gender: "));
+       
+       if (strvCardData == wxT("M")){
+           strPageData.Append(wxT("Male"));
+       } else if (strvCardData == wxT("F")){
+           strPageData.Append(wxT("Female"));
+       } else if (strvCardData == wxT("O")){
+           strPageData.Append(wxT("Other"));
+       } else if (strvCardData == wxT("N")){
+           strPageData.Append(wxT("None/Not Applicable"));
+       } else if (strvCardData == wxT("U")){
+           strPageData.Append(wxT("Unknown"));
+       }
+       
+       strPageData.Append(wxT("<br><br>"));    
+    
+    }    
+    
+    strFinal = strPageHeader + strPageData + strPageFooter;
+    
+    HTMLObj->SetPage(strFinal);
+
+}
\ No newline at end of file
diff --git a/source/common/getcontactinfo.h b/source/common/getcontactinfo.h
new file mode 100644 (file)
index 0000000..303ebba
--- /dev/null
@@ -0,0 +1,19 @@
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/html/htmlwin.h>
+#include <wx/mstream.h>
+#include "../vcard/vcard.h"
+
+#ifndef GETCONTACTINFO_H
+#define GETCONTACTINFO_H
+
+void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj, wxString SID, 
+                       wxString OldSID, std::map<wxString, wxString> *MemoryFSList);
+void ProcessIMPPType(wxString *PageData, wxString *IMPPType, bool PreferredContact);
+void SplitPropertyData(wxString *PropertyLine, std::map<int,int> *SplitPoints, std::map<int,int> *SplitLength, 
+                       int intSize, std::map<wxString,wxString> *SplitData);
+
+WX_DECLARE_STRING_HASH_MAP(int, vCardOrderInt);
+WX_DECLARE_STRING_HASH_MAP(wxString, vCardOrderStr);
+
+#endif
\ No newline at end of file
diff --git a/source/common/getcontactinfo.h~ b/source/common/getcontactinfo.h~
new file mode 100644 (file)
index 0000000..b073e0c
--- /dev/null
@@ -0,0 +1,11 @@
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/html/htmlwin.h>
+#include "../vcard/vcard.h"
+
+#ifndef GETCONTACTINFO_H
+#define GETCONTACTINFO_H
+
+void LoadContactData(vCard *vCardObj, wxHtmlWindow *HTMLObj);
+
+#endif
\ No newline at end of file
diff --git a/source/common/mime.cpp b/source/common/mime.cpp
new file mode 100644 (file)
index 0000000..4dc720d
--- /dev/null
@@ -0,0 +1,45 @@
+#include <wx/wx.h>
+
+wxString GetMIME(wxString FilenameInc){
+
+       wxString MIMEResult;
+
+#ifdef __WIN32__
+
+#include <urlmon.h>
+
+       /*char *;
+       unsigned long Buffersize;
+       FindMimeFromData(NULL, NULL, , , NULL, FMFD_DEFAULT, , 0);*/
+
+#else
+
+#include <magic.h>
+
+       const char *MIMEType;
+       magic_t MagicCookie = magic_open(MAGIC_MIME);
+       magic_setflags(MagicCookie, MAGIC_MIME_TYPE);
+
+       if (!MagicCookie){
+
+               wxMessageBox(_("An error occured with the support library for getting the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR);
+               return;
+
+       }
+
+       if (magic_load(MagicCookie, NULL) != 0) {
+
+               wxMessageBox(_("An error occured whilst determining the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR);
+               return;
+
+       }
+
+       MIMEType = magic_file(MagicCookie, FilenameInc.mb_str());
+       MIMEResult = wxString::FromUTF8(MIMEType);
+       magic_close(MagicCookie);
+
+#endif
+
+       return MIMEResult;
+
+}
\ No newline at end of file
diff --git a/source/common/mime.h b/source/common/mime.h
new file mode 100644 (file)
index 0000000..60481d5
--- /dev/null
@@ -0,0 +1,8 @@
+#include <wx/wx.h>
+
+#ifndef MIME_H
+#define MIME_H
+
+wxString GetMIME(wxString FilenameInc);
+
+#endif
\ No newline at end of file
diff --git a/source/common/preferences.cpp b/source/common/preferences.cpp
new file mode 100644 (file)
index 0000000..218b7b0
--- /dev/null
@@ -0,0 +1,374 @@
+#include <iostream>
+#include <iomanip>
+#include <ios>
+#include <string>
+#include <wx/fileconf.h>
+
+#include "preferences.h"
+
+using namespace std;
+
+void SavePreferences();
+void LoadPreferences();
+
+XABPreferences::XABPreferences(wxString PreferencesFilename){
+    
+    //fstream preffile;
+    wxString fullprefpath;
+    
+    int accountnum = 0;
+    
+    bool accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid,
+        accountsslvalid, accountusernamevalid, accountpasswordvalid,
+        accountdirprefixvalid, accountdirvalid, accountrefreshvalid = FALSE;
+    
+    bool preaccountstage = FALSE;
+    bool isvalidaccount = FALSE;
+    bool isvalidsection = FALSE;
+    wxString accountname;
+    wxString accountaddress;
+    wxString accounttype;
+    long accountport = 8080;
+    long accountrefresh;
+    bool accountssl;
+    wxString accountusername;
+    wxString accountpassword;
+    wxString accountdirprefix;
+    wxString accountdir;
+    
+    wxString firstchar;
+    string s;
+
+    wxString segmentname;
+    wxString segmentvalue;
+    
+    // Load the settings.
+    
+    fullprefpath.Append(PreferencesFilename);
+    fullprefpath.Append(wxT("settings"));
+
+    wxFileConfig *settingfile = new wxFileConfig("", "", fullprefpath);
+    
+    wxString ValueInc;
+    settingfile->Read(wxT("SaveWindowPosition"), &ValueInc);
+    
+    if (ValueInc == wxT("true")){
+               
+               SaveWindowPos = TRUE;
+               wxRect WindowPosition;
+       
+               long PosX, PosY, PosH, PosW = 0;
+
+               bool PosXValid, PosYValid, PosHValid, PosWValid = FALSE;
+
+               PosXValid = settingfile->Read(wxT("WindowPositionX"), &PosX);
+               PosYValid = settingfile->Read(wxT("WindowPositionY"), &PosY);
+               PosHValid = settingfile->Read(wxT("WindowPositionHeight"), &PosH);
+               PosWValid = settingfile->Read(wxT("WindowPositionWidth"), &PosW);
+
+               if (PosXValid == TRUE && PosYValid == TRUE && PosHValid == TRUE && PosWValid == TRUE){
+
+                       WindowPosition.SetX(PosX);
+                       WindowPosition.SetY(PosY);
+                       WindowPosition.SetHeight(PosH);
+                       WindowPosition.SetWidth(PosW);
+
+               } else {
+
+                       WindowPosition.SetX(-1);
+                       WindowPosition.SetY(-1);
+                       WindowPosition.SetHeight(500);
+                       WindowPosition.SetWidth(300);
+
+               }
+
+               SetMainWindowData(WindowPosition);
+       
+    }
+
+    settingfile->Read(wxT("HideLocalAddressBooks"), &ValueInc);
+    
+    if (ValueInc == wxT("true")){
+       HideLocalABs = TRUE;
+    }
+    
+    delete settingfile;
+    settingfile = NULL;
+    
+    // Load the accounts.
+    
+    fullprefpath.Clear();
+    fullprefpath.Append(PreferencesFilename);
+    fullprefpath.Append(wxT("accounts"));
+    wxFileConfig *cfgfile = new wxFileConfig("AddressBook", "Xestia", fullprefpath);
+    
+    wxString EntryName, EntryValue;
+    wxString AccAdr, AccUsr, AccPass, AccPrefix, AccDir;
+    wxString AccSSLInc;
+    bool AccSSL = FALSE;
+    int AccRef, AccPort = 0;
+    long itemindex = 0;
+    long subitemindex = 0;
+    bool ContinueAcc = TRUE;
+    bool ContinueProc = TRUE;
+    
+    ContinueAcc = cfgfile->GetFirstGroup(accountname, itemindex);
+    
+    while (ContinueAcc){
+
+       cfgfile->SetPath(accountname);
+       //ContinueProc = cfgfile->GetFirstEntry(EntryName, subitemindex);
+       cfgfile->Read(wxT("type"), &EntryValue);
+     
+       if (EntryValue == wxT("Local")){
+       
+               // Get the account directory.
+               
+               cfgfile->Read(wxT("accountdir"), &AccDir);
+       
+               if (AccDir.Len() > 4){
+
+                       accountdirvalid = TRUE;
+               
+               } else {
+
+                       accountdirvalid = FALSE;
+
+               }
+               
+               if (accountdirvalid == TRUE){
+               
+                       accounts.AddAccount(accountname, wxT("Local"), wxT(""), 0,
+                          0, wxT(""), wxT(""), 
+                          wxT(""), AccDir, 0);
+               
+               }
+       
+       } else if (EntryValue == wxT("CardDAV")){
+
+               cfgfile->Read(wxT("accountdir"), &AccDir);
+               accountaddressvalid = cfgfile->Read(wxT("address"), &AccAdr);
+               accountportvalid = cfgfile->Read(wxT("port"), &AccPort);
+               accountsslvalid = cfgfile->Read(wxT("ssl"), &AccSSLInc);
+               if (AccSSLInc == wxT("true")){
+                       AccSSL = TRUE;
+               }
+               accountusernamevalid = cfgfile->Read(wxT("username"), &AccUsr);
+               accountpasswordvalid = cfgfile->Read(wxT("password"), &AccPass);
+               accountdirprefixvalid = cfgfile->Read(wxT("prefix"), &AccPrefix);
+               accountrefreshvalid = cfgfile->Read(wxT("refresh"), &AccRef);
+               
+               if (AccDir.Len() > 4){
+
+                       accountdirvalid = TRUE;
+               
+               }
+                       
+               // Make sure it is not bigger than 65535 or less than 1.
+               // If so, default to port 8008.
+                       
+               if (accountport < 1 || accountport > 65535){
+                  accountport = 8008;
+                  accountportvalid = TRUE;
+               }
+               
+               accounts.AddAccount(accountname, wxT("CardDAV"), AccAdr, AccPort,
+                                   AccSSL, AccUsr, AccPass, 
+                                   AccPrefix, AccDir, AccRef);
+               
+       }
+
+       // Clear up for the next account.
+    
+       accountnamevalid, accountaddressvalid, accounttypevalid, accountportvalid,
+       accountsslvalid, accountusernamevalid, accountpasswordvalid,
+       accountdirprefixvalid, accountdirvalid, accountrefreshvalid, accountssl, 
+       isvalidaccount, isvalidsection = FALSE;
+       AccAdr.Clear();
+       //AccPort.Clear();
+       AccDir.Clear();
+       AccUsr.Clear();
+       AccPass.Clear();
+       AccPrefix.Clear();
+       accountname.Clear();
+       accountaddress.Clear();
+       accounttype.Clear();
+       accountport = 0;
+       accountrefresh = 0;
+       accountusername.Clear();
+       accountpassword.Clear();
+       accountdirprefix.Clear();    
+       preaccountstage = TRUE;
+    
+       cfgfile->SetPath(wxT("/"));
+       ContinueAcc = cfgfile->GetNextGroup(accountname, itemindex);
+    }
+  
+}
+
+XABPreferences::~XABPreferences(){
+  
+}
+
+bool XABPreferences::GetBoolData(wxString SettingName){
+
+       if (SettingName == wxT("SaveWindowPosition")) { return SaveWindowPos; }
+       else if (SettingName == wxT("HideLocalAddressBooks")) { return HideLocalABs; }
+       
+       return FALSE;
+
+}
+
+wxRect XABPreferences::GetMainWindowData(){
+       
+       return MainWindowData;
+
+}
+
+void XABPreferences::SetMainWindowData(wxRect WindowData){
+
+       MainWindowData = WindowData;
+
+}
+
+// XABPrefAccounts
+
+XABPrefAccounts::XABPrefAccounts(){
+    AccountsCount = 0;
+}
+
+int XABPrefAccounts::AddAccount(wxString NewAccName,
+       wxString NewAccType,
+       wxString NewAccAddress,
+       int NewAccPort,
+       int NewAccSSL,
+       wxString NewAccUser,
+       wxString NewAccPass,
+       wxString NewAccDirPrefix,
+       wxString NewAccDir,
+       long NewAccRefresh
+){
+  
+    AccountName.Add(NewAccName, 1);
+    AccountType.Add(NewAccType, 1);
+    AccountAddress.Add(NewAccAddress, 1);
+    AccountPort.Add(NewAccPort, 1);
+    AccountSSL.Add(NewAccSSL, 1);
+    AccountUsername.Add(NewAccUser, 1);
+    AccountPassword.Add(NewAccPass, 1);
+    DirectoryPrefix.Add(NewAccDirPrefix, 1);
+    AccountDirectory.Add(NewAccDir, 1);
+    AccountRefresh.Add(NewAccRefresh, 1);
+    
+    AccountsCount++;
+    
+       return 0;
+
+}
+
+int XABPrefAccounts::GetCount(){
+  
+    return AccountsCount;
+  
+}
+
+wxString XABPrefAccounts::GetAccountName(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return wxT("");
+    }
+  
+    return AccountName[AccountNum];
+  
+}
+
+wxString XABPrefAccounts::GetAccountType(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return wxT("");
+    }
+  
+    return AccountType[AccountNum];
+  
+}
+
+wxString XABPrefAccounts::GetAccountAddress(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return wxT("");
+    }
+  
+    return AccountAddress[AccountNum];
+  
+}
+
+int XABPrefAccounts::GetAccountPort(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return 0;
+    }
+  
+    return AccountPort[AccountNum];
+  
+}
+
+bool XABPrefAccounts::GetAccountSSL(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return wxT("");
+    }
+  
+    return AccountSSL[AccountNum];
+  
+}
+
+wxString XABPrefAccounts::GetAccountUsername(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return wxT("");
+    }
+  
+    return AccountUsername[AccountNum];
+  
+}
+
+wxString XABPrefAccounts::GetAccountPassword(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return wxT("");
+    }
+  
+    return AccountPassword[AccountNum];
+  
+}
+
+wxString XABPrefAccounts::GetAccountDirectory(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return wxT("");
+    }
+  
+    return AccountDirectory[AccountNum];
+  
+}
+
+wxString XABPrefAccounts::GetAccountDirPrefix(int AccountNum){
+    if (AccountNum > AccountsCount){
+       return wxT("");
+    }
+  
+    return DirectoryPrefix[AccountNum];
+  
+}
+
+long XABPrefAccounts::GetAccountRefresh(int AccountNum){
+
+    if (AccountNum > AccountsCount){
+       return 0;
+    }
+  
+    return AccountRefresh[AccountNum];
+
+}
\ No newline at end of file
diff --git a/source/common/preferences.h b/source/common/preferences.h
new file mode 100644 (file)
index 0000000..a56c0e0
--- /dev/null
@@ -0,0 +1,105 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef PREFERENCES_H
+#define PREFERENCES_H
+
+void SavePreferences();
+void LoadPreferences();
+   
+class XABPrefThemes
+{
+private:
+
+public:
+    wxArrayString      ThemeName;
+    wxArrayString      ThemeData;  
+};
+
+class XABPrefAccounts
+{
+private:
+    wxArrayString      AccountName;
+    wxArrayString      AccountType;
+    wxArrayString      AccountAddress;
+    wxArrayInt         AccountPort;
+    wxArrayInt         AccountSSL;
+    wxArrayString      AccountUsername;
+    wxArrayString      AccountPassword;
+    wxArrayString      DirectoryPrefix;
+    wxArrayString      AccountDirectory;
+    wxArrayLong                AccountRefresh;
+    int                        AccountsCount;
+public:
+    XABPrefAccounts();
+  
+    int GetCount();
+    wxString GetAccountName(int AccountNum);
+    wxString GetAccountType(int AccountNum);
+    wxString GetAccountAddress(int AccountNum);
+    int        GetAccountPort(int AcconutNum);
+    bool GetAccountSSL(int AccountNum);
+    wxString GetAccountUsername(int AccountNum);
+    wxString GetAccountPassword(int AccountNum);
+    wxString GetAccountDirectory(int AccountNum);
+    wxString GetAccountDirPrefix(int AccountNum);
+    long GetAccountRefresh(int AccountNum);
+    int AddAccount(wxString NewAccName,
+       wxString NewAccType,
+       wxString NewAccAddress,
+       int NewAccPort,
+       int NewAccSSL,
+       wxString NewAccUser,
+       wxString NewAccPass,
+       wxString NewAccDirPrefix,
+       wxString NewAccDir,
+       long NewAccRefresh
+    );
+};
+
+//XABPreferences should emulate what is in the Preferences window.
+//Including others which aren't in the window such as main window
+//position and size.
+
+class XABPreferences
+{
+private:
+    
+    // General Tab
+    bool SaveWindowPos = FALSE;
+    wxRect MainWindowData;
+    bool HideLocalABs = FALSE;
+    
+    // Themes tab
+    bool EnableThemes = FALSE;
+    
+    // Accounts tab
+    
+    // General things.
+    wxString Filename;
+    
+public:
+    XABPreferences(wxString PreferencesFilename);
+    ~XABPreferences();
+    
+    XABPrefAccounts accounts;
+    XABPrefThemes themes;
+    
+    int WritePreferences();
+    int ReadPreferences();
+    
+    bool GetBoolData(wxString SettingName);
+    bool SetBoolData(wxString SettingName, bool SettingValue);
+    wxRect GetMainWindowData();
+    void SetMainWindowData(wxRect WindowData);
+    
+    //int AddAccount(wxString Name);
+    
+    int GetThemeCount();
+    wxString GetThemeData(wxString ThemeName);
+    
+    int ErrorFlag;
+    
+};
+
+#endif
diff --git a/source/common/preferences.h~ b/source/common/preferences.h~
new file mode 100644 (file)
index 0000000..515f34d
--- /dev/null
@@ -0,0 +1,99 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef PREFERENCES_H
+#define PREFERENCES_H
+
+void SavePreferences();
+void LoadPreferences();
+   
+class XABPrefThemes
+{
+private:
+
+public:
+    wxArrayString      ThemeName;
+    wxArrayString      ThemeData;  
+};
+
+class XABPrefAccounts
+{
+private:
+    wxArrayString      AccountName;
+    wxArrayString      AccountType;
+    wxArrayString      AccountAddress;
+    wxArrayInt         AccountPort;
+    wxArrayInt         AccountSSL;
+    wxArrayString      AccountUsername;
+    wxArrayString      AccountPassword;
+    wxArrayString      DirectoryPrefix;
+    wxArrayString      AccountDirectory;
+    int                        AccountsCount;
+public:
+    XABPrefAccounts();
+  
+    int GetCount();
+    wxString GetAccountName(int AccountNum);
+    wxString GetAccountType(int AccountNum);
+    wxString GetAccountAddress(int AccountNum);
+    int        GetAccountPort(int AcconutNum);
+    bool GetAccountSSL(int AccountNum);
+    wxString GetAccountUsername(int AccountNum);
+    wxString GetAccountPassword(int AccountNum);
+    wxString GetAccountDirectory(int AccountNum);
+    wxString GetAccountDirPrefix(int AccountNum);
+    int AddAccount(wxString NewAccName,
+       wxString NewAccType,
+       wxString NewAccAddress,
+       int NewAccPort,
+       int NewAccSSL,
+       wxString NewAccUser,
+       wxString NewAccPass,
+       wxString NewAccDirPrefix,
+       wxString NewAccDir
+    );
+};
+
+//XABPreferences should emulate what is in the Preferences window.
+//Including others which aren't in the window such as main window
+//position and size.
+
+class XABPreferences
+{
+private:
+    
+    // General Tab
+    bool savewindowpos;
+    bool hidelocalabs;
+    
+    // Themes tab
+    bool enablethemes;
+    
+    // Accounts tab
+    
+    // General things.
+    wxString Filename;
+    
+public:
+    XABPreferences(wxString PreferencesFilename);
+    ~XABPreferences();
+    
+    XABPrefAccounts accounts;
+    XABPrefThemes themes;
+    
+    int WritePreferences();
+    int ReadPreferences();
+    
+    bool GetBoolData(wxString SettingName);
+    bool SetBoolData(wxString SettingName, bool SettingValue);
+    
+    //int AddAccount(wxString Name);
+    
+    int GetThemeCount();
+    wxString GetThemeData(wxString ThemeName);
+    
+    int errorflag;
+    
+};
+
+#endif
diff --git a/source/common/sslcertstructs.h b/source/common/sslcertstructs.h
new file mode 100644 (file)
index 0000000..53fdf9e
--- /dev/null
@@ -0,0 +1,22 @@
+#include <map>
+
+#ifndef __COMMON_SSLCERTSTRUCTS_H__
+#define __COMMON_SSLCERTSTRUCTS_H__
+
+
+struct SSLCertData{
+
+       std::multimap<wxString, wxString> CertData;
+
+};
+
+struct SSLCertCollection{
+
+       int SuccessCode = 0;
+       
+       //std::map<int, int> SSLCollection;
+       std::map<int, SSLCertData> SSLCollection;
+
+};
+
+#endif
\ No newline at end of file
diff --git a/source/common/svrblist.cpp b/source/common/svrblist.cpp
new file mode 100644 (file)
index 0000000..3649a4b
--- /dev/null
@@ -0,0 +1,22 @@
+#include <wx/wx.h>
+#include <wx/tokenzr.h>
+
+bool CheckBlacklist(wxString ServerAddress){
+
+       wxString ServerBlacklist = "google.com";
+       wxString BListHostname;
+
+       wxStringTokenizer ServerBlacklistTkz(ServerBlacklist, wxT("|"));
+
+       while(ServerBlacklistTkz.HasMoreTokens()){
+       
+               BListHostname = ServerBlacklistTkz.GetNextToken();
+               if (BListHostname == ServerAddress){
+                       return TRUE;
+               }
+       
+       }
+
+       return FALSE;
+
+}
\ No newline at end of file
diff --git a/source/common/svrblist.h b/source/common/svrblist.h
new file mode 100644 (file)
index 0000000..ba0423e
--- /dev/null
@@ -0,0 +1,8 @@
+#include <wx/wx.h>
+
+#ifndef COMMON_SVRBLIST_H
+#define COMMON_SVRBLIST_H
+
+bool CheckBlacklist(wxString ServerAddress);
+
+#endif
\ No newline at end of file
diff --git a/source/common/textprocessing.cpp b/source/common/textprocessing.cpp
new file mode 100644 (file)
index 0000000..ba4f7d9
--- /dev/null
@@ -0,0 +1,105 @@
+#include <wx/wx.h>
+#include <iostream>
+#include <iomanip>
+#include <string.h>
+#include <map>
+#include "textprocessing.h"
+
+void EscapeString(wxString *ReceivedString, bool StripQuotes)
+{
+
+       ReceivedString->Replace(wxT("\\"), wxT("\\\\"), TRUE);
+       ReceivedString->Replace(wxT(","), wxT("\\,"), TRUE);
+       ReceivedString->Replace(wxT(";"), wxT("\\;"), TRUE);
+       ReceivedString->Replace(wxT("\r\n"), wxT("\\n"), TRUE);
+       ReceivedString->Replace(wxT("\n"), wxT("\\n"), TRUE);
+       
+       if (StripQuotes == TRUE){
+       
+               ReceivedString->Replace(wxT("\""), wxT(""), TRUE);
+               
+       }
+
+}
+
+void GetEscapeString(wxTextCtrl *TextCtrl, wxString *ProcessString, bool StripQuotes)
+{
+
+       *ProcessString = TextCtrl->GetValue();
+       EscapeString(ProcessString, StripQuotes);
+
+}
+
+void GetEscapeString(wxComboBox *ComboCtrl, wxString *ProcessString, bool StripQuotes)
+{
+
+       *ProcessString = ComboCtrl->GetValue();
+       EscapeString(ProcessString, StripQuotes);
+
+}
+
+void GetEscapeString(wxChoice *ChoiceCtrl, wxString *ProcessString, bool StripQuotes)
+{
+
+       *ProcessString = ChoiceCtrl->GetString(ChoiceCtrl->GetSelection());
+       EscapeString(ProcessString, StripQuotes);
+
+}
+
+void CaptureString(wxString *ProcessString, bool StripQuotes)
+{
+
+       ProcessString->Replace(wxT("\\n"), wxT("\n"), TRUE);
+       ProcessString->Replace(wxT("\\;"), wxT(";"), TRUE);
+       ProcessString->Replace(wxT("\\,"), wxT(","), TRUE);
+       ProcessString->Replace(wxT("\\\\"), wxT("\\"), TRUE);
+       
+       if (StripQuotes == TRUE){
+       
+               ProcessString->Replace(wxT("\""), wxT(""), TRUE);
+       
+       }
+
+}
+
+void ConvertToHTML(wxString *ProcessString)
+{
+
+       ProcessString->Replace(wxT("&"), wxT("&amp;"), TRUE);
+       ProcessString->Replace(wxT("<"), wxT("&lt;"), TRUE);
+       ProcessString->Replace(wxT(">"), wxT("&gt;"), TRUE);
+       ProcessString->Replace(wxT("\n"), wxT("<br>"), TRUE);
+
+}
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, std::string>* MapData){
+       MapData->erase(IndexNum);
+}
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData){
+       MapData->erase(IndexNum);
+}
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData){
+       MapData->erase(IndexNum);
+}
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData){
+       MapData->erase(IndexNum);
+}
+
+/*
+template <typename ArgMap, typename... Args>
+void DeleteMapData(ArgMap* ArgMapPtr, Args*... ArgsList){
+
+       //DeleteMapDataProcess(ArgMapPtr);
+
+       DeleteMapData(ArgsList...);
+
+}
+*/
+/*
+void test(int* x) {
+
+}
+*/
\ No newline at end of file
diff --git a/source/common/textprocessing.h b/source/common/textprocessing.h
new file mode 100644 (file)
index 0000000..eecc2c1
--- /dev/null
@@ -0,0 +1,114 @@
+#include <iostream>
+#include <wx/wx.h>
+#include <map>
+
+#ifndef TEXTPROCESSING_H
+#define TEXTPROCESSING_H
+
+void EscapeString(wxString *ReceivedString, bool StripQuotes);
+void GetEscapeString(wxTextCtrl *TextCtrl, wxString *ProcessString, bool StripQuotes);
+void GetEscapeString(wxComboBox *ComboCtrl, wxString *ProcessString, bool StripQuotes);
+void GetEscapeString(wxChoice *ChoiceCtrl, wxString *ProcessString, bool StripQuotes);
+void CaptureString(wxString *ProcessString, bool StripQuotes);
+void ConvertToHTML(wxString *ProcessString);
+
+void DeleteMapDataProcess(int IndexNum, std::map<int, std::string>* MapData);
+void DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData);
+void DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData);
+void DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData);
+
+//void DeleteMapDataB() {};
+
+//void DeleteMapData() {};
+
+
+/*
+template <typename ArgMap, typename... Args>
+void DeleteMapData(ArgMap* ArgMapPtr, Args*... ArgsList){
+
+}
+*/
+
+
+
+/*
+template<class T>
+void test(const char* s, T t) {
+  while (*s) {
+    if (*s == '%' && *(++s) != '%') {
+      if (*s == '*') {
+        //throw std::runtime_error("Not enough parameters!");
+      } else {
+        std::cout << t;
+        test(++s);
+      }
+      return;
+    }
+    std::cout << *s++;
+  }
+  //throw std::logic_error("Too many arguments!");
+}
+
+
+
+template<class T, class U, class... Args>
+void test(const char* s, T t, U u, Args... args) {
+  while (*s) {
+    if (*s == '%' && *(++s) != '%') {
+      if (*s == '*') {
+        int width = 0;
+//      width = t;                // Uncommenting this would cause a failure if the parameters aren't all int's.
+        bitcopy(&width, &t);
+        std::cout << std::setw(width) << u;
+        test(s+2, args...);
+      } else {
+        std::cout << t;
+        test(++s, u, args...);
+      }
+      return;
+    }
+    std::cout << *s++;
+  }
+  //throw std::logic_error("Too many arguments!");
+}
+*/
+/*
+
+
+template<typename... Args>
+void DeleteMapData(int IndexNum, Args*... args) {
+
+       //DeleteMapDataProcess(IndexNum, t);
+
+       intSeekSelectedData = IndexNum;
+       DeleteMapDataB(args...);
+
+  //throw std::logic_error("Too many arguments!");
+}
+
+*/
+
+//void DeleteMapDataB() { };
+
+template<typename MapData, typename... Args>
+void DeleteMapDataB(MapData* mapdata, Args*... args) {
+
+       DeleteMapDataB(args...);
+
+}
+
+template<typename... Args>
+void DeleteMapData(int IndexNum, Args*... args) {
+
+       //int intSeekSelectedData = 0;
+
+       //DeleteMapDataProcess(IndexNum, Moo);
+
+       //intSeekSelectedData = IndexNum;
+       DeleteMapDataB(args...);
+       
+}
+
+//void DeleteMapData<ArgMap, Args>(ArgMap* ArgMapPtr, Args*... ArgsList);
+
+#endif 
diff --git a/source/common/timers.cpp b/source/common/timers.cpp
new file mode 100644 (file)
index 0000000..02bc920
--- /dev/null
@@ -0,0 +1,596 @@
+#include "../frmActivityMgr.h"
+#include "../frmContact.h"
+#include "../frmMain.h"
+#include <wx/mstream.h>
+#include <wx/file.h>
+#include <wx/ffile.h>
+#include <wx/filename.h>
+#include <wx/tokenzr.h>
+#include "../bitmaps.h"
+#include "../enums.h"
+#include "../common/preferences.h"
+#include "../common/etag.h"
+#include "../common/dirs.h"
+
+void wxActTimer::Notify(){
+
+       frmMain *frmMainPtrProc = static_cast<frmMain*>(frmMainPtr);
+
+       wxCommandEvent shuffleevent(ACTMGR_SHUFFLE);
+
+       if (intActivityProgress == 0){
+
+               wxMemoryInputStream istream(misc_activity1_png, sizeof(misc_activity1_png));
+               wxImage misc_activity1_pngi(istream, wxBITMAP_TYPE_PNG);                
+               wxBitmap activityiconbmp(misc_activity1_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+                               
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 1){
+
+               wxMemoryInputStream istream(misc_activity2_png, sizeof(misc_activity2_png));
+               wxImage misc_activity2_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity2_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 2){
+
+               wxMemoryInputStream istream(misc_activity3_png, sizeof(misc_activity3_png));
+               wxImage misc_activity3_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity3_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 3){
+
+               wxMemoryInputStream istream(misc_activity4_png, sizeof(misc_activity4_png));
+               wxImage misc_activity4_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity4_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 4){
+
+               wxMemoryInputStream istream(misc_activity5_png, sizeof(misc_activity5_png));
+               wxImage misc_activity5_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity5_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 5){
+
+               wxMemoryInputStream istream(misc_activity6_png, sizeof(misc_activity6_png));
+               wxImage misc_activity6_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity6_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 6){
+
+               wxMemoryInputStream istream(misc_activity7_png, sizeof(misc_activity7_png));
+               wxImage misc_activity7_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity7_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 7){
+
+               wxMemoryInputStream istream(misc_activity8_png, sizeof(misc_activity8_png));
+               wxImage misc_activity8_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity8_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 8){
+       
+               wxMemoryInputStream istream(misc_activity9_png, sizeof(misc_activity9_png));
+               wxImage misc_activity9_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity9_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+       
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 9){
+
+               wxMemoryInputStream istream(misc_activity10_png, sizeof(misc_activity10_png));
+               wxImage misc_activity10_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity10_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+       
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 10){
+       
+               wxMemoryInputStream istream(misc_activity11_png, sizeof(misc_activity11_png));
+               wxImage misc_activity11_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity11_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+       
+               intActivityProgress++;
+       
+       } else if (intActivityProgress == 11){
+       
+               wxMemoryInputStream istream(misc_activity12_png, sizeof(misc_activity12_png));
+               wxImage misc_activity12_pngi(istream, wxBITMAP_TYPE_PNG);
+               wxBitmap activityiconbmp(misc_activity12_pngi, -1);
+               bmpActivity->SetBitmap(activityiconbmp);
+       
+               intActivityProgress = 0;
+       
+       }
+       
+       wxPostEvent(frmMainPtrProc, shuffleevent);
+
+}
+
+void wxActTimer::SetBitmap(wxStaticBitmap *bitmap)
+{
+
+       bmpActivity = bitmap;
+
+}
+
+void wxActTimer::SetSleepBitmap(wxBitmap *SleepBitmap)
+{
+
+       SleepBitmapPtr = SleepBitmap;
+
+}
+
+void wxActTimer::StopAnimation()
+{
+
+       // Stop the icon animation.
+
+       frmMain *frmMainPtrProc = static_cast<frmMain*>(frmMainPtr);
+       
+       wxCommandEvent actstop(ACTMGR_STOP);
+       wxPostEvent(frmMainPtrProc, actstop);
+       //frmMainPtrProc->ActivityIconStop();
+
+       this->Stop();
+       bmpActivity->SetBitmap(*SleepBitmapPtr);
+}
+
+void wxActTimer::StartAnimation()
+{
+
+       frmMain *frmMainPtrProc = static_cast<frmMain*>(frmMainPtr);
+       wxCommandEvent actstart(ACTMGR_START);
+       wxPostEvent(frmMainPtrProc, actstart);
+       //frmMainPtrProc->ActivityIconStart();
+       
+       this->ResetBitmap();
+       this->Start(50, FALSE);
+}
+
+void wxActTimer::ResetBitmap()
+{
+
+       intActivityProgress = 0;
+
+}
+
+void wxActTimer::SetupPointer(void *frmMainPtrIn)
+{
+
+       frmMainPtr = frmMainPtrIn;
+
+}
+
+void wxActProcessTimer::Notify()
+{
+
+       // Pause the timer whilst processing to avoid problems.
+
+       this->Stop();
+
+       // Process Tasks.
+       
+       frmActivityMgr *ActMgrPtrProc = static_cast<frmActivityMgr*>(ActMgrPtr);
+       ActMgrPtrProc->ProcessTasks();
+
+}
+
+void wxActProcessTimer::SetupPointers(void *ActMgr){
+
+       ActMgrPtr = ActMgr;
+
+}
+
+void wxActListProcTimer::Notify(){
+
+       // Setup Label and get task data (update SetupPointers subroutine).
+
+       this->Stop();
+       
+       for (std::map<int,int>::iterator iter = ActListPtr->begin(); 
+        iter != ActListPtr->end(); ++iter){
+        
+               // Check for any queued tasks and start one.
+               
+               if (iter->second > 4){
+                       continue;
+               }
+               
+               
+               // 0 = Queued.
+               // 1 = Processing.
+               // 2 = Failed.
+               // 3 = Stopped.
+               // 4 = Completed.
+               // 5 = Failed (UI Updated).
+               // 6 = Stopped (UI Updated).
+               // 7 = (Reserved) (UI Updated).
+               // 8 = Completed. (UI Updated). 
+               
+               std::map<int,long>::iterator LongIter = ActListUIPtr->find(iter->first);
+               std::map<int,wxString>::iterator DetailIter = ActListDetailPtr->find(iter->first);
+               
+               if (iter->second == 1){
+                               
+                       lstActivityPtr->SetItem(LongIter->second, 2, _("Processing..."));
+                       if (ActListDetailPtr->find(iter->first) != ActListDetailPtr->end()){
+                               lblDetailsPtr->SetLabel(_("Adding Contact '") + DetailIter->second + _("'..."));
+                       }
+                       //CardDAVIter->second.
+                       
+               } else if (iter->second == 2){
+               
+                       lstActivityPtr->SetItem(LongIter->second, 2, _("Failed"));
+                       iter->second = 5;
+               
+               } else if (iter->second == 3){
+
+                       lstActivityPtr->SetItem(LongIter->second, 2, _("Stopped"));
+                       iter->second = 6;
+               
+               } else if (iter->second == 4){
+
+                       lstActivityPtr->SetItem(LongIter->second, 2, _("Completed"));
+                       iter->second = 8;
+               
+               }
+               
+               // Insert a finish date.
+               
+               wxDateTime adt;
+               adt = adt.Now();
+               
+               ActListFinDTPtr->insert(std::make_pair(iter->first, adt));
+
+       }
+       
+       if (ClearupProcessed == TRUE){
+       
+               // Clear up processed items.
+               
+               // Delete the processed items.
+               
+               ClearupProcessed = FALSE;
+       
+       }
+       
+       if (*TasksActivePtr == FALSE){
+       
+               ActTimerPtr->StopAnimation();
+               lblDetailsPtr->SetLabel(_("No activity."));
+       
+       } else {
+       
+               this->Start();
+       
+       }
+
+}
+
+void wxActListProcTimer::SetupPointers(std::map<int,int> *ActList, std::map<int,long> *ActListUI, 
+                       std::map<int,wxString> *ActListDetail, bool *TasksActive,
+                       wxListCtrl *lstActivity, wxStaticText *lblDetails, wxGauge *GauProgress,
+                       void *ActMgr, wxActTimer *ActTimer, wxActProcessTimer *ActProcessTimer,
+                       std::map<int,wxDateTime> *ActListFinDT){
+
+       ActListPtr = ActList;
+       ActListUIPtr = ActListUI;
+       ActListDetailPtr = ActListDetail;
+       TasksActivePtr = TasksActive;
+       lstActivityPtr = lstActivity;
+       lblDetailsPtr = lblDetails;
+       GauProgressPtr = GauProgress;
+       ActMgrPtr = ActMgr;
+       ActTimerPtr = ActTimer;
+       ActProcessTimerPtr = ActProcessTimer;
+       ActListFinDTPtr = ActListFinDT;
+
+}
+
+void wxActListProcTimer::EnableClearup(){
+
+       ClearupProcessed = TRUE;
+
+}
+
+void wxETagProcessTimer::Notify(){
+
+       // Check each ETagDB and see if writing to file is required.
+       
+       //ETagDB* ETagDBPtr;
+       //ETagDB ETagDBCopy;
+       
+       std::map<wxString,ETagDB>::iterator ETagIter;
+       
+       for (ETagIter = ETagDBList.begin(); 
+        ETagIter != ETagDBList.end(); ++ETagIter){
+       
+               if (ETagIter->second.GetWriteStatus() == TRUE){
+               
+                       ETagIter->second.WriteETagDB();
+               
+               }
+        
+       }
+       
+
+}
+
+void wxETagProcessTimer::ReloadAccounts(){
+
+       // Get the account preferences file and setup each database accordingly.
+       
+       ReloadLock.lock();
+       
+       // Stop the timer.
+
+       this->Stop();
+       ETagDBList.clear();
+       
+       wxString PrefFilename = GetUserPrefDir();       
+       
+       XABPreferences PrefData(PrefFilename);
+
+       wxString AccountName;
+       wxString AccountDir;
+       wxString AccountAddress;
+       wxString AccountUsername;
+       wxString AccountPassword;
+       wxString AccountPrefix;
+       wxString AccountType;
+
+       // Look for the account and get the friendly name for the account.
+       
+       for (int i = 0; i < PrefData.accounts.GetCount(); i++){
+       
+               AccountDir = PrefData.accounts.GetAccountDirectory(i);
+               AccountType = PrefData.accounts.GetAccountType(i);
+
+               if (AccountType == wxT("Local") || AccountType == wxT("local")){
+                       continue;
+               }
+
+               AccountDir.Trim();
+               AccountDir.Append(wxT(".carddav"));
+                       
+               ETagDB AccountDB;
+               AccountDB.SetupDB(AccountDir);
+                               
+               ETagDBList.insert(std::make_pair(AccountDir, AccountDB));
+               
+               AccountDir.clear();
+       
+       }
+       
+       //raise(SIGABRT);
+       
+       /*for (int i = 0; i < PrefData.accounts.GetCount(); i++){
+       
+               AccountDir = PrefData.accounts.GetAccountDirectory(i);
+               
+               AccountDir.Trim();
+               AccountDir.Append(wxT(".carddav"));
+       
+               //AccountPrefix = PrefData.accounts.GetAccountDirPrefix(i);
+
+               //ETagDB NewETagDB (AccountDir);
+               
+               ETagDB AccountDB;
+               AccountDB.SetupDB(AccountDir);
+               
+               //ETagDBList.insert(std::make_pair(AccountDir, Moo));
+               
+               //std::pair<wxString,ETagDB> Moo2;
+               
+               //ETagDB2 Meep;
+               
+               //ETagDBListv3.insert(std::make_pair(0,Meep));
+               
+               //ETagDBListv2.insert(std::make_pair(0, Moo));
+               
+               //ETagDBList.insert(Moo2);
+               
+               ETagDBList.insert(std::make_pair(AccountDir, AccountDB));
+               
+               //Moo55.insert(std::make_pair(wxT("Meep"), wxT("Meep")));
+               
+               //ETagDBList[AccountDir] = new ETagDB (AccountDir);
+       
+       }*/
+       
+       //ETagDB Test (AccountDir);
+       
+       //ETagDBList.insert(std::make_pair(AccountDir, Test));
+       
+       ReloadLock.unlock();
+       this->Start(15000);
+
+}
+
+ETagDB* wxETagProcessTimer::GetPointer(wxString AccountName){
+
+       ETagDB *ETagDBPtr = NULL;
+
+       std::map<wxString,ETagDB>::iterator ETagIter;
+
+       ETagIter = ETagDBList.find(AccountName);
+
+       if (ETagIter != ETagDBList.end()){
+       
+               ETagDBPtr = &ETagIter->second;
+       
+       }
+
+       return ETagDBPtr;
+
+}
+
+void wxContactFileMonitorTimer::Notify(){
+
+       if (Filename.IsEmpty()){
+       
+               return;
+       
+       }
+
+       wxFileName FileCheck(Filename);
+       wxDateTime CurrentDateTime;
+       
+       CurrentDateTime = FileCheck.GetModificationTime();
+
+       if (FileDateTime != CurrentDateTime){
+       
+               // The dates & times of the file are different.
+               // Send an event to notify the user of this change.
+               
+               wxCommandEvent dateevent(wxEVT_COMMAND_BUTTON_CLICKED);
+               wxPostEvent(frmCEPtr, dateevent);
+       
+       }
+
+}
+
+void wxContactFileMonitorTimer::SetFilename(wxString FilenameInc){
+
+       Filename = FilenameInc;
+       
+       wxFileName FileCheck(Filename);
+       FileDateTime = FileCheck.GetModificationTime();
+
+}
+
+void wxContactFileMonitorTimer::SetupPointers(frmContactEditor *frmCEPtrInc){
+
+       frmCEPtr = frmCEPtrInc;
+
+}
+
+void wxContactFileMonitorTimer::UpdateTimestamp(){
+
+       wxFileName FileCheck(Filename);
+       FileDateTime = FileCheck.GetModificationTime();
+
+}
+
+void wxContactWindowMonitor::Notify(){
+
+       // Look through the list of windows and see if any have
+       // closed. IF they have closed then delete and free the
+       // memory (also delete from the map).
+       
+       /*for(std::map<wxString, void*>::iterator iter = ContactWindowListPtr->begin();
+       iter != ContactWindowListPtr->end(); iter++){
+       
+               frmContact *ContactPtr = (frmContact*)iter->second;
+               
+               // Check if open.
+               
+               if (
+               
+               // Delete the form.
+               
+               // Delete the data from the map.
+       
+       }*/
+
+}
+
+void wxContactWindowMonitor::SetupPointers(std::map<wxString, void*> *ContactWindowListPtrInc){
+
+       ContactWindowListPtr = ContactWindowListPtrInc;
+
+}
+
+void wxAccountSyncTimer::Notify(){
+
+       frmActivityMgr *ActMgrPtrProc = static_cast<frmActivityMgr*>(frmActMgrPtr);
+
+       // Disable the timer. (Don't go updating unless needed).
+       
+       this->Stop();
+       
+       if (ActMgrPtrProc->GetTaskStatus(intTaskID) < 2){
+       
+               this->Start();
+               return;
+       
+       }
+       
+       // Add task to the activity manager.
+       
+       intTaskID = ActMgrPtrProc->AddTask(3, wxT(""), AccName, 
+                       wxT(""), wxT(""), wxT(""), wxT(""));
+       
+       // Go to sleep and wait for the task to be completed.
+       
+       // Enable the timer as we are now finished syncronising.
+       
+       this->Start();
+       
+}
+
+void wxAccountSyncTimer::SetupData(wxString AccNameInc,
+       wxString AccNameFullInc){
+
+       // Set the account name.
+               
+       AccName = AccNameInc;
+       AccNameFull = AccNameFullInc;
+
+}
+
+void wxAccountSyncTimer::SetupPointers(void *frmMainPtrInc, 
+       void *frmActMgrPtrInc, ETagDB *ETagDBPtrInc){
+
+       // Set the pointers.
+       
+       frmMainPtr = frmMainPtrInc;
+       frmActMgrPtr = frmActMgrPtrInc;
+       ETagDBPtr = ETagDBPtrInc;
+
+}
+
+void SleepFor(unsigned long longSleepNanoSecs){
+
+#ifdef __WIN32__
+       ::Sleep((longSleepNanoSecs / 1000000));
+#elif __HAIKU__
+
+#else
+
+       timespec n1, n2;
+
+       n1.tv_sec = 0;
+       n1.tv_nsec = longSleepNanoSecs;
+
+       nanosleep(&n1, &n2);
+
+#endif
+
+}
\ No newline at end of file
diff --git a/source/common/timers.h b/source/common/timers.h
new file mode 100644 (file)
index 0000000..1478948
--- /dev/null
@@ -0,0 +1,154 @@
+#include <map>
+#include <wx/timer.h>
+#include <wx/wx.h>
+#include <mutex>
+#include "../frmActivityMgr.h"
+#include "../contacteditor/frmContactEditor.h"
+#include "etag.h"
+
+#ifndef TIMERS_H
+#define TIMERS_H
+
+struct ETagDB;
+struct frmContactEditor;
+
+class wxActTimer : public wxTimer
+{
+       private:
+               int intActivityProgress = 0;
+               wxStaticBitmap *bmpActivity;
+               wxBitmap *SleepBitmapPtr;
+               void *frmMainPtr;
+       public:
+    wxActTimer():wxTimer()
+    {
+    }
+    void Notify();
+    void SetBitmap(wxStaticBitmap *ActMgr);
+    void ResetBitmap();
+    void StartAnimation();
+    void StopAnimation();
+    void SetSleepBitmap(wxBitmap *SleepBitmap);
+    void SetupPointer(void *frmMainPtrIn);
+
+};
+
+class wxActProcessTimer : public wxTimer
+{
+
+       private:
+               int intActivityProgress = 0;
+               wxStaticBitmap *bmpActivity;
+               void *ActMgrPtr;
+       public:
+    wxActProcessTimer():wxTimer()
+    {
+    }
+    void Notify();
+    void SetupPointers(void *ActMgr);
+
+};
+
+class wxActListProcTimer : public wxTimer
+{
+
+       private:
+               std::map<int,int> *ActListPtr;
+               std::map<int,long> *ActListUIPtr;
+               std::map<int,wxString> *ActListDetailPtr;
+               wxListCtrl *lstActivityPtr;
+               wxStaticText *lblDetailsPtr;
+               bool *TasksActivePtr;
+               wxGauge *GauProgressPtr;
+               void *ActMgrPtr;
+               int intActivityTotal = 0;
+               int intActivityCompleted = 0;
+               wxActTimer *ActTimerPtr;
+               wxActProcessTimer *ActProcessTimerPtr;
+               std::map<int,wxDateTime> *ActListFinDTPtr;
+               bool ClearupProcessed = FALSE;
+       public:
+    wxActListProcTimer():wxTimer()
+    {
+    }
+    void Notify();
+    void SetupPointers(std::map<int,int> *ActList, std::map<int,long> *ActListUI, 
+                       std::map<int,wxString> *ActListDetail, bool *TasksActive,
+                       wxListCtrl *lstActivity, wxStaticText *lblDetails, wxGauge *GauProgress,
+                       void *ActMgr, wxActTimer *ActTimer, wxActProcessTimer *ActProcessTimer,
+                       std::map<int,wxDateTime> *ActListFinDT);
+    void EnableClearup();
+
+};
+
+class wxETagProcessTimer : public wxTimer
+{
+       private:
+               int intActivityProgress = 0;
+               std::map<wxString,ETagDB> ETagDBList;
+               //std::map<int,ETagDB2> ETagDBListv3;
+               std::mutex ReloadLock;
+       public:
+    wxETagProcessTimer():wxTimer()
+    {
+       ReloadAccounts();
+    }
+    void Notify();
+    ETagDB* GetPointer(wxString Filename);
+    void ReloadAccounts();
+    //void SetupPointers(frmActivityMgr *ActMgr);
+
+};
+
+class wxContactFileMonitorTimer : public wxTimer
+{
+       private:
+               bool FileStatus = FALSE;
+               wxString Filename;
+               frmContactEditor *frmCEPtr;
+               wxDateTime FileDateTime;
+       public:
+    wxContactFileMonitorTimer():wxTimer()
+    {
+    }
+    void Notify();
+    void SetFilename(wxString FilenameInc);
+    void SetupPointers(frmContactEditor *frmCEPtrInc);
+    void UpdateTimestamp();
+};
+
+class wxContactWindowMonitor : public wxTimer
+{
+       private:
+               std::map<wxString, void*> *ContactWindowListPtr;
+       public:
+    wxContactWindowMonitor():wxTimer()
+    {
+    }
+    void Notify();
+    void SetupPointers(std::map<wxString, void*> *ContactWindowListPtrInc);
+};
+
+class wxAccountSyncTimer : public wxTimer
+{
+       private:
+               wxString AccName;
+               wxString AccNameFull;
+               void *frmMainPtr;
+               void *frmActMgrPtr;
+               ETagDB *ETagDBPtr;
+               int intTaskID;
+       public:
+    wxAccountSyncTimer():wxTimer()
+    {
+    }
+    void Notify();
+    void SetupData(wxString AccNameInc, wxString AccNameFull);
+    void SetupPointers(void *frmMainPtrInc, 
+       void *frmACtMgrPtr, ETagDB *ETagDBPtrInc);
+       
+};
+
+void SleepFor(unsigned long longSleepNanoSecs);
+
+#endif
\ No newline at end of file
diff --git a/source/common/uuid.cpp b/source/common/uuid.cpp
new file mode 100644 (file)
index 0000000..104035e
--- /dev/null
@@ -0,0 +1,48 @@
+#include <wx/wx.h>
+
+wxString GenerateUUID()
+{
+
+#if defined(__WIN32__)
+       UUID UUIDData;
+       UuidCreate(&UUIDData);
+       wchar_t* UUIDStr = 0;
+       UuidToString(&UUIDData, (RPC_WSTR*)&UUIDStr);
+       wxString Result(UUIDStr);
+#elif defined(__HAIKU__)
+
+#else
+
+#include <ossp/uuid++.hh>
+
+       uuid_t *uuid;
+       uuid_create(&uuid);
+       char *strdata;
+       
+       //strdata = ;
+       
+       strdata = NULL;
+       
+       uuid_make(uuid, UUID_MAKE_V4);
+       uuid_export(uuid, UUID_FMT_STR, &strdata, NULL);
+       uuid_destroy(uuid);
+       
+       wxString Result = wxString::FromUTF8(strdata);
+
+       delete strdata;
+       strdata = NULL;
+       
+#endif
+
+       return Result;
+
+}
+
+bool CheckUUID(wxString UUIDInc)
+{
+
+       bool Result = FALSE;
+       
+       return Result;
+
+}
\ No newline at end of file
diff --git a/source/common/uuid.h b/source/common/uuid.h
new file mode 100644 (file)
index 0000000..312e8e8
--- /dev/null
@@ -0,0 +1,9 @@
+#include <wx/wx.h>
+
+#ifndef COMMON_UUID_H
+#define COMMON_UUID_H
+
+wxString GenerateUUID();
+bool CheckUUID(wxString UUIDInc);
+
+#endif
\ No newline at end of file
diff --git a/source/config.log b/source/config.log
new file mode 100644 (file)
index 0000000..60454ff
--- /dev/null
@@ -0,0 +1,582 @@
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Xestia Address Book configure 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ ./configure 
+
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = Mai.LasLindas
+uname -m = x86_64
+uname -r = 3.7.10-1.1-desktop
+uname -s = Linux
+uname -v = #1 SMP PREEMPT Thu Feb 28 15:06:29 UTC 2013 (82d3f21)
+
+/usr/bin/uname -p = x86_64
+/bin/uname -X     = unknown
+
+/bin/arch              = x86_64
+/usr/bin/arch -k       = unknown
+/usr/convex/getsysinfo = unknown
+/usr/bin/hostinfo      = unknown
+/bin/machine           = unknown
+/usr/bin/oslevel       = unknown
+/bin/universe          = unknown
+
+PATH: /usr/local/bin
+PATH: /usr/bin
+PATH: /bin
+PATH: /usr/bin/X11
+PATH: /usr/X11R6/bin
+PATH: /usr/games
+PATH: /opt/kde3/bin
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+configure:2028: loading site script /usr/share/site/x86_64-unknown-linux-gnu
+| #!/bin/sh
+| # Site script for configure. It is resourced via $CONFIG_SITE environment varaible.
+| 
+| # If user did not specify libdir, guess the correct target:
+| # Use lib64 for 64 bit bi-arch targets, keep the default for the rest.
+| if test "$libdir" = '${exec_prefix}/lib' ; then
+| 
+|      ac_config_site_64bit_host=NONE
+| 
+|      case "$host" in
+|      "" )
+|              # User did not specify host target.
+|              # The native platform x86_64 is a bi-arch platform.
+|              # Try to detect cross-compilation to inferior architecture.
+| 
+|              # We are trying to guess 32-bit target compilation. It's not as easy as
+|              # it sounds, as there is possible several intermediate combinations.
+|              ac_config_site_cross_to_32bit_host=NONE
+| 
+|              # User defined -m32 in CFLAGS or CXXFLAGS:
+|              # (It's sufficient for 32-bit, but alone may cause mis-behavior of some checks.)
+|              case "$CFLAGS" in
+|              *-m32*)
+|                      ac_config_site_cross_to_32bit_host=YES
+|                      ;;
+|              esac
+|              case "$CXXFLAGS" in
+|              *-m32*)
+|                      ac_config_site_cross_to_32bit_host=YES
+|                      ;;
+|              esac
+| 
+|              # Running with linux32:
+|              # (Changes detected platform, but not the toolchain target.)
+|              case "`/bin/uname -i`" in
+|              x86_64 | ppc64 | s390x )
+|                      ;;
+|              * )
+|                      ac_config_site_cross_to_32bit_host=YES
+|                      ;;
+|              esac
+| 
+|              if test "x$ac_config_site_cross_to_32bit_host" = xNONE; then
+|                      ac_config_site_64bit_host=YES
+|              fi
+| 
+|              ;;
+|      *x86_64* | *ppc64* | *s390x* )
+|              ac_config_site_64bit_host=YES
+|              ;;
+|      esac
+| 
+|      if test "x$ac_config_site_64bit_host" = xYES; then
+|              libdir='${exec_prefix}/lib64'
+|      fi
+| fi
+| 
+| # If user did not specify libexecdir, set the correct target:
+| # Nor FHS nor openSUSE allow prefix/libexec. Let's default to prefix/lib.
+| 
+| if test "$libexecdir" = '${exec_prefix}/libexec' ; then
+|      libexecdir='${exec_prefix}/lib'
+| fi
+| 
+| # Continue with the standard behavior of configure defined in AC_SITE_LOAD:
+| if test "x$prefix" != xNONE; then
+|      ac_site_file1=$prefix/share/config.site
+|      ac_site_file2=$prefix/etc/config.site
+| else
+|      ac_site_file1=$ac_default_prefix/share/config.site
+|      ac_site_file2=$ac_default_prefix/etc/config.site
+| fi
+| for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+| do
+|      test "x$ac_site_file" = xNONE && continue
+|      if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+|              { $as_echo "/usr/share/site/x86_64-unknown-linux-gnu:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+| $as_echo "/usr/share/site/x86_64-unknown-linux-gnu: loading site script $ac_site_file" >&6;}
+|              sed 's/^/| /' "$ac_site_file" >&5
+|              . "$ac_site_file" \
+|                      || { { $as_echo "/usr/share/site/x86_64-unknown-linux-gnu:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+| $as_echo "/usr/share/site/x86_64-unknown-linux-gnu: error: in \`$ac_pwd':" >&2;}
+| as_fn_error $? "failed to load site script $ac_site_file
+| See \`config.log' for more details" "$LINENO" 5; }
+|      fi
+| done
+configure:2186: checking for g++
+configure:2202: found /usr/bin/g++
+configure:2213: result: g++
+configure:2240: checking for C++ compiler version
+configure:2249: g++ --version >&5
+g++ (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]
+Copyright (C) 2012 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:2260: $? = 0
+configure:2249: g++ -v >&5
+Using built-in specs.
+COLLECT_GCC=g++
+COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.7/lto-wrapper
+Target: x86_64-suse-linux
+Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp --disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux
+Thread model: posix
+gcc version 4.7.2 20130108 [gcc-4_7-branch revision 195012] (SUSE Linux) 
+configure:2260: $? = 0
+configure:2249: g++ -V >&5
+g++: error: unrecognized command line option '-V'
+g++: fatal error: no input files
+compilation terminated.
+configure:2260: $? = 1
+configure:2249: g++ -qversion >&5
+g++: error: unrecognized command line option '-qversion'
+g++: fatal error: no input files
+compilation terminated.
+configure:2260: $? = 1
+configure:2280: checking whether the C++ compiler works
+configure:2302: g++    conftest.cpp  >&5
+configure:2306: $? = 0
+configure:2354: result: yes
+configure:2357: checking for C++ compiler default output file name
+configure:2359: result: a.out
+configure:2365: checking for suffix of executables
+configure:2372: g++ -o conftest    conftest.cpp  >&5
+configure:2376: $? = 0
+configure:2398: result: 
+configure:2420: checking whether we are cross compiling
+configure:2428: g++ -o conftest    conftest.cpp  >&5
+configure:2432: $? = 0
+configure:2439: ./conftest
+configure:2443: $? = 0
+configure:2458: result: no
+configure:2463: checking for suffix of object files
+configure:2485: g++ -c   conftest.cpp >&5
+configure:2489: $? = 0
+configure:2510: result: o
+configure:2514: checking whether we are using the GNU C++ compiler
+configure:2533: g++ -c   conftest.cpp >&5
+configure:2533: $? = 0
+configure:2542: result: yes
+configure:2551: checking whether g++ accepts -g
+configure:2571: g++ -c -g  conftest.cpp >&5
+configure:2571: $? = 0
+configure:2612: result: yes
+configure:2683: checking for gcc
+configure:2699: found /usr/bin/gcc
+configure:2710: result: gcc
+configure:2939: checking for C compiler version
+configure:2948: gcc --version >&5
+gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]
+Copyright (C) 2012 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+configure:2959: $? = 0
+configure:2948: gcc -v >&5
+Using built-in specs.
+COLLECT_GCC=gcc
+COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/4.7/lto-wrapper
+Target: x86_64-suse-linux
+Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.7 --enable-ssp --disable-libssp --disable-libitm --disable-plugin --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --disable-libmudflap --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-version-specific-runtime-libs --enable-linker-build-id --program-suffix=-4.7 --enable-linux-futex --without-system-libunwind --with-arch-32=i586 --with-tune=generic --build=x86_64-suse-linux
+Thread model: posix
+gcc version 4.7.2 20130108 [gcc-4_7-branch revision 195012] (SUSE Linux) 
+configure:2959: $? = 0
+configure:2948: gcc -V >&5
+gcc: error: unrecognized command line option '-V'
+gcc: fatal error: no input files
+compilation terminated.
+configure:2959: $? = 1
+configure:2948: gcc -qversion >&5
+gcc: error: unrecognized command line option '-qversion'
+gcc: fatal error: no input files
+compilation terminated.
+configure:2959: $? = 1
+configure:2963: checking whether we are using the GNU C compiler
+configure:2982: gcc -c   conftest.c >&5
+configure:2982: $? = 0
+configure:2991: result: yes
+configure:3000: checking whether gcc accepts -g
+configure:3020: gcc -c -g  conftest.c >&5
+configure:3020: $? = 0
+configure:3061: result: yes
+configure:3078: checking for gcc option to accept ISO C89
+configure:3142: gcc  -c -g -O2  conftest.c >&5
+configure:3142: $? = 0
+configure:3155: result: none needed
+configure:3180: checking how to run the C preprocessor
+configure:3211: gcc -E  conftest.c
+configure:3211: $? = 0
+configure:3225: gcc -E  conftest.c
+conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
+compilation terminated.
+configure:3225: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME "Xestia Address Book"
+| #define PACKAGE_TARNAME "xestia-address-book"
+| #define PACKAGE_VERSION "1.0"
+| #define PACKAGE_STRING "Xestia Address Book 1.0"
+| #define PACKAGE_BUGREPORT "bugs@xestia.co.uk"
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:3250: result: gcc -E
+configure:3270: gcc -E  conftest.c
+configure:3270: $? = 0
+configure:3284: gcc -E  conftest.c
+conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory
+compilation terminated.
+configure:3284: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME "Xestia Address Book"
+| #define PACKAGE_TARNAME "xestia-address-book"
+| #define PACKAGE_VERSION "1.0"
+| #define PACKAGE_STRING "Xestia Address Book 1.0"
+| #define PACKAGE_BUGREPORT "bugs@xestia.co.uk"
+| #define PACKAGE_URL ""
+| /* end confdefs.h.  */
+| #include <ac_nonexistent.h>
+configure:3377: checking for wx-config
+configure:3396: found /usr/bin/wx-config
+configure:3409: result: /usr/bin/wx-config
+configure:3424: checking for wxWidgets version >= 2.8.0
+configure:3471: result: yes (version 2.8.12)
+configure:3475: checking for wxWidgets static library
+configure:3479: result: no
+configure:3597: checking for main in -lboost_filesystem
+configure:3616: gcc -o conftest -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__  conftest.c -lboost_filesystem   -L/usr/lib64/wx-2.8-stl -pthread  -Wl,-rpath,/usr/lib64/wx-2.8-stl  -L/usr/lib64   -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  >&5
+configure:3616: $? = 0
+configure:3625: result: yes
+configure:3644: checking for main in -lboost_system
+configure:3663: gcc -o conftest -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__  conftest.c -lboost_system  -lboost_filesystem  -L/usr/lib64/wx-2.8-stl -pthread  -Wl,-rpath,/usr/lib64/wx-2.8-stl  -L/usr/lib64   -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  >&5
+configure:3663: $? = 0
+configure:3672: result: yes
+configure:3694: checking for grep that handles long lines and -e
+configure:3752: result: /usr/bin/grep
+configure:3757: checking for egrep
+configure:3819: result: /usr/bin/grep -E
+configure:3824: checking for ANSI C header files
+configure:3844: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3844: $? = 0
+configure:3917: gcc -o conftest -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__  conftest.c -lboost_system -lboost_filesystem  -L/usr/lib64/wx-2.8-stl -pthread  -Wl,-rpath,/usr/lib64/wx-2.8-stl  -L/usr/lib64   -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8  >&5
+configure:3917: $? = 0
+configure:3917: ./conftest
+configure:3917: $? = 0
+configure:3928: result: yes
+configure:3941: checking for sys/types.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3941: checking for sys/stat.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3941: checking for stdlib.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3941: checking for string.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3941: checking for memory.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3941: checking for strings.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3941: checking for inttypes.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3941: checking for stdint.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3941: checking for unistd.h
+configure:3941: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:3941: $? = 0
+configure:3941: result: yes
+configure:3956: checking for stdlib.h
+configure:3956: result: yes
+configure:3956: checking for string.h
+configure:3956: result: yes
+configure:3968: checking for stdbool.h that conforms to C99
+configure:4035: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:4035: $? = 0
+configure:4042: result: yes
+configure:4044: checking for _Bool
+configure:4044: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:4044: $? = 0
+configure:4044: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+conftest.c: In function 'main':
+conftest.c:59:20: error: expected expression before ')' token
+configure:4044: $? = 1
+configure: failed program was:
+| /* confdefs.h */
+| #define PACKAGE_NAME "Xestia Address Book"
+| #define PACKAGE_TARNAME "xestia-address-book"
+| #define PACKAGE_VERSION "1.0"
+| #define PACKAGE_STRING "Xestia Address Book 1.0"
+| #define PACKAGE_BUGREPORT "bugs@xestia.co.uk"
+| #define PACKAGE_URL ""
+| #define HAVE_LIBBOOST_FILESYSTEM 1
+| #define HAVE_LIBBOOST_SYSTEM 1
+| #define STDC_HEADERS 1
+| #define HAVE_SYS_TYPES_H 1
+| #define HAVE_SYS_STAT_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| #define HAVE_MEMORY_H 1
+| #define HAVE_STRINGS_H 1
+| #define HAVE_INTTYPES_H 1
+| #define HAVE_STDINT_H 1
+| #define HAVE_UNISTD_H 1
+| #define HAVE_STDLIB_H 1
+| #define HAVE_STRING_H 1
+| /* end confdefs.h.  */
+| #include <stdio.h>
+| #ifdef HAVE_SYS_TYPES_H
+| # include <sys/types.h>
+| #endif
+| #ifdef HAVE_SYS_STAT_H
+| # include <sys/stat.h>
+| #endif
+| #ifdef STDC_HEADERS
+| # include <stdlib.h>
+| # include <stddef.h>
+| #else
+| # ifdef HAVE_STDLIB_H
+| #  include <stdlib.h>
+| # endif
+| #endif
+| #ifdef HAVE_STRING_H
+| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+| #  include <memory.h>
+| # endif
+| # include <string.h>
+| #endif
+| #ifdef HAVE_STRINGS_H
+| # include <strings.h>
+| #endif
+| #ifdef HAVE_INTTYPES_H
+| # include <inttypes.h>
+| #endif
+| #ifdef HAVE_STDINT_H
+| # include <stdint.h>
+| #endif
+| #ifdef HAVE_UNISTD_H
+| # include <unistd.h>
+| #endif
+| int
+| main ()
+| {
+| if (sizeof ((_Bool)))
+|          return 0;
+|   ;
+|   return 0;
+| }
+configure:4044: result: yes
+configure:4060: checking for inline
+configure:4076: gcc -c -g -O2 -pthread  -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ conftest.c >&5
+configure:4076: $? = 0
+configure:4084: result: inline
+configure:4257: creating ./config.status
+
+## ---------------------- ##
+## Running config.status. ##
+## ---------------------- ##
+
+This file was extended by Xestia Address Book config.status 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = 
+  CONFIG_HEADERS  = 
+  CONFIG_LINKS    = 
+  CONFIG_COMMANDS = 
+  $ ./config.status 
+
+on Mai.LasLindas
+
+config.status:753: creating Makefile
+
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+
+ac_cv_c_compiler_gnu=yes
+ac_cv_c_inline=inline
+ac_cv_cxx_compiler_gnu=yes
+ac_cv_env_CCC_set=
+ac_cv_env_CCC_value=
+ac_cv_env_CC_set=
+ac_cv_env_CC_value=
+ac_cv_env_CFLAGS_set=
+ac_cv_env_CFLAGS_value=
+ac_cv_env_CPPFLAGS_set=
+ac_cv_env_CPPFLAGS_value=
+ac_cv_env_CPP_set=
+ac_cv_env_CPP_value=
+ac_cv_env_CXXFLAGS_set=
+ac_cv_env_CXXFLAGS_value=
+ac_cv_env_CXX_set=
+ac_cv_env_CXX_value=
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_LIBS_set=
+ac_cv_env_LIBS_value=
+ac_cv_env_build_alias_set=
+ac_cv_env_build_alias_value=
+ac_cv_env_host_alias_set=
+ac_cv_env_host_alias_value=
+ac_cv_env_target_alias_set=
+ac_cv_env_target_alias_value=
+ac_cv_header_inttypes_h=yes
+ac_cv_header_memory_h=yes
+ac_cv_header_stdbool_h=yes
+ac_cv_header_stdc=yes
+ac_cv_header_stdint_h=yes
+ac_cv_header_stdlib_h=yes
+ac_cv_header_string_h=yes
+ac_cv_header_strings_h=yes
+ac_cv_header_sys_stat_h=yes
+ac_cv_header_sys_types_h=yes
+ac_cv_header_unistd_h=yes
+ac_cv_lib_boost_filesystem_main=yes
+ac_cv_lib_boost_system_main=yes
+ac_cv_objext=o
+ac_cv_path_EGREP='/usr/bin/grep -E'
+ac_cv_path_GREP=/usr/bin/grep
+ac_cv_path_WX_CONFIG_PATH=/usr/bin/wx-config
+ac_cv_prog_CPP='gcc -E'
+ac_cv_prog_ac_ct_CC=gcc
+ac_cv_prog_ac_ct_CXX=g++
+ac_cv_prog_cc_c89=
+ac_cv_prog_cc_g=yes
+ac_cv_prog_cxx_g=yes
+ac_cv_type__Bool=yes
+
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+
+CC='gcc'
+CFLAGS='-g -O2 -pthread'
+CPP='gcc -E'
+CPPFLAGS=' -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__'
+CXX='g++'
+CXXFLAGS='-g -O2 '
+DEFS='-DPACKAGE_NAME=\"Xestia\ Address\ Book\" -DPACKAGE_TARNAME=\"xestia-address-book\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"Xestia\ Address\ Book\ 1.0\" -DPACKAGE_BUGREPORT=\"bugs@xestia.co.uk\" -DPACKAGE_URL=\"\" -DHAVE_LIBBOOST_FILESYSTEM=1 -DHAVE_LIBBOOST_SYSTEM=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1'
+ECHO_C=''
+ECHO_N='-n'
+ECHO_T=''
+EGREP='/usr/bin/grep -E'
+EXEEXT=''
+GREP='/usr/bin/grep'
+LDFLAGS=''
+LIBOBJS=''
+LIBS='-lboost_system -lboost_filesystem  -L/usr/lib64/wx-2.8-stl -pthread  -Wl,-rpath,/usr/lib64/wx-2.8-stl  -L/usr/lib64   -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 '
+LTLIBOBJS=''
+OBJEXT='o'
+PACKAGE_BUGREPORT='bugs@xestia.co.uk'
+PACKAGE_NAME='Xestia Address Book'
+PACKAGE_STRING='Xestia Address Book 1.0'
+PACKAGE_TARNAME='xestia-address-book'
+PACKAGE_URL=''
+PACKAGE_VERSION='1.0'
+PATH_SEPARATOR=':'
+SHELL='/bin/sh'
+WX_CFLAGS='-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread'
+WX_CFLAGS_ONLY='-pthread'
+WX_CONFIG_PATH='/usr/bin/wx-config'
+WX_CPPFLAGS='-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__'
+WX_CXXFLAGS='-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread'
+WX_CXXFLAGS_ONLY=''
+WX_LIBS='-L/usr/lib64/wx-2.8-stl -pthread  -Wl,-rpath,/usr/lib64/wx-2.8-stl  -L/usr/lib64   -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 '
+WX_LIBS_STATIC=''
+WX_RESCOMP=''
+WX_VERSION='2.8.12'
+ac_ct_CC='gcc'
+ac_ct_CXX='g++'
+bindir='${exec_prefix}/bin'
+build_alias=''
+datadir='${datarootdir}'
+datarootdir='${prefix}/share'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+dvidir='${docdir}'
+exec_prefix='${prefix}'
+host_alias=''
+htmldir='${docdir}'
+includedir='${prefix}/include'
+infodir='${datarootdir}/info'
+libdir='${exec_prefix}/lib64'
+libexecdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+localstatedir='${prefix}/var'
+mandir='${datarootdir}/man'
+oldincludedir='/usr/include'
+pdfdir='${docdir}'
+prefix='/usr/local'
+program_transform_name='s,x,x,'
+psdir='${docdir}'
+sbindir='${exec_prefix}/sbin'
+sharedstatedir='${prefix}/com'
+sysconfdir='${prefix}/etc'
+target_alias=''
+
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+
+/* confdefs.h */
+#define PACKAGE_NAME "Xestia Address Book"
+#define PACKAGE_TARNAME "xestia-address-book"
+#define PACKAGE_VERSION "1.0"
+#define PACKAGE_STRING "Xestia Address Book 1.0"
+#define PACKAGE_BUGREPORT "bugs@xestia.co.uk"
+#define PACKAGE_URL ""
+#define HAVE_LIBBOOST_FILESYSTEM 1
+#define HAVE_LIBBOOST_SYSTEM 1
+#define STDC_HEADERS 1
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_SYS_STAT_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE_MEMORY_H 1
+#define HAVE_STRINGS_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UNISTD_H 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+#define HAVE__BOOL 1
+#define HAVE_STDBOOL_H 1
+
+configure: exit 0
diff --git a/source/config.status b/source/config.status
new file mode 100644 (file)
index 0000000..abb08f6
--- /dev/null
@@ -0,0 +1,920 @@
+#! /bin/sh
+# Generated by configure.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+# Files that config.status was made for.
+config_files=" Makefile"
+
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bugs@xestia.co.uk>."
+
+ac_cs_config=""
+ac_cs_version="\
+Xestia Address Book config.status 1.0
+configured by ./configure, generated by GNU Autoconf 2.68,
+  with options \"$ac_cs_config\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='/home/kirinji/Development/XestiaAddressBook/source'
+srcdir='.'
+test -n "$AWK" || AWK=awk
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+if $ac_cs_recheck; then
+  set X '/bin/sh' './configure'  $ac_configure_extra_args --no-create --no-recursion
+  shift
+  $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6
+  CONFIG_SHELL='/bin/sh'
+  export CONFIG_SHELL
+  exec "$@"
+fi
+
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+cat >>"$ac_tmp/subs1.awk" <<\_ACAWK &&
+S["LTLIBOBJS"]=""
+S["LIBOBJS"]=""
+S["EGREP"]="/usr/bin/grep -E"
+S["GREP"]="/usr/bin/grep"
+S["WX_RESCOMP"]=""
+S["WX_VERSION"]="2.8.12"
+S["WX_LIBS_STATIC"]=""
+S["WX_LIBS"]="-L/usr/lib64/wx-2.8-stl -pthread  -Wl,-rpath,/usr/lib64/wx-2.8-stl  -L/usr/lib64   -Wl,-rpath,/usr/lib64/wx-2.8-stl -lwx_gtk2u_richtext-2.8 -lwx_gtk"\
+"2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_baseu_xml-2.8 -lwx_baseu_net-2.8 -lw"\
+"x_baseu-2.8 "
+S["WX_CXXFLAGS_ONLY"]=""
+S["WX_CFLAGS_ONLY"]="-pthread"
+S["WX_CXXFLAGS"]="-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread"
+S["WX_CFLAGS"]="-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__ -pthread"
+S["WX_CPPFLAGS"]="-I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__"
+S["WX_CONFIG_PATH"]="/usr/bin/wx-config"
+S["CPP"]="gcc -E"
+S["ac_ct_CC"]="gcc"
+S["CFLAGS"]="-g -O2 -pthread"
+S["CC"]="gcc"
+S["OBJEXT"]="o"
+S["EXEEXT"]=""
+S["ac_ct_CXX"]="g++"
+S["CPPFLAGS"]=" -I/usr/lib64/wx-2.8-stl/wx/include/gtk2-unicode-release-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D__WXGTK__"
+S["LDFLAGS"]=""
+S["CXXFLAGS"]="-g -O2 "
+S["CXX"]="g++"
+S["target_alias"]=""
+S["host_alias"]=""
+S["build_alias"]=""
+S["LIBS"]="-lboost_system -lboost_filesystem  -L/usr/lib64/wx-2.8-stl -pthread  -Wl,-rpath,/usr/lib64/wx-2.8-stl  -L/usr/lib64   -Wl,-rpath,/usr/lib64/wx-2.8-s"\
+"tl -lwx_gtk2u_richtext-2.8 -lwx_gtk2u_aui-2.8 -lwx_gtk2u_xrc-2.8 -lwx_gtk2u_qa-2.8 -lwx_gtk2u_html-2.8 -lwx_gtk2u_adv-2.8 -lwx_gtk2u_core-2.8 -lwx_b"\
+"aseu_xml-2.8 -lwx_baseu_net-2.8 -lwx_baseu-2.8 "
+S["ECHO_T"]=""
+S["ECHO_N"]="-n"
+S["ECHO_C"]=""
+S["DEFS"]="-DPACKAGE_NAME=\\\"Xestia\\ Address\\ Book\\\" -DPACKAGE_TARNAME=\\\"xestia-address-book\\\" -DPACKAGE_VERSION=\\\"1.0\\\" -DPACKAGE_STRING=\\\"Xestia\\ Address\\ Boo"\
+"k\\ 1.0\\\" -DPACKAGE_BUGREPORT=\\\"bugs@xestia.co.uk\\\" -DPACKAGE_URL=\\\"\\\" -DHAVE_LIBBOOST_FILESYSTEM=1 -DHAVE_LIBBOOST_SYSTEM=1 -DSTDC_HEADERS=1 -DHAVE_"\
+"SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DH"\
+"AVE_UNISTD_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1"
+S["mandir"]="${datarootdir}/man"
+S["localedir"]="${datarootdir}/locale"
+S["libdir"]="${exec_prefix}/lib64"
+S["psdir"]="${docdir}"
+S["pdfdir"]="${docdir}"
+S["dvidir"]="${docdir}"
+S["htmldir"]="${docdir}"
+S["infodir"]="${datarootdir}/info"
+S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}"
+S["oldincludedir"]="/usr/include"
+S["includedir"]="${prefix}/include"
+S["localstatedir"]="${prefix}/var"
+S["sharedstatedir"]="${prefix}/com"
+S["sysconfdir"]="${prefix}/etc"
+S["datadir"]="${datarootdir}"
+S["datarootdir"]="${prefix}/share"
+S["libexecdir"]="${exec_prefix}/lib"
+S["sbindir"]="${exec_prefix}/sbin"
+S["bindir"]="${exec_prefix}/bin"
+S["program_transform_name"]="s,x,x,"
+S["prefix"]="/usr/local"
+S["exec_prefix"]="${prefix}"
+S["PACKAGE_URL"]=""
+S["PACKAGE_BUGREPORT"]="bugs@xestia.co.uk"
+S["PACKAGE_STRING"]="Xestia Address Book 1.0"
+S["PACKAGE_VERSION"]="1.0"
+S["PACKAGE_TARNAME"]="xestia-address-book"
+S["PACKAGE_NAME"]="Xestia Address Book"
+S["PATH_SEPARATOR"]=":"
+S["SHELL"]="/bin/sh"
+_ACAWK
+cat >>"$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+  ac_datarootdir_hack='
+  s&@datadir@&${datarootdir}&g
+  s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g
+  s&@infodir@&${datarootdir}/info&g
+  s&@localedir@&${datarootdir}/locale&g
+  s&@mandir@&${datarootdir}/man&g
+  s&\${datarootdir}&${prefix}/share&g' ;;
+esac
+ac_sed_extra="/^[       ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[      ]*$//
+}
+
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
diff --git a/source/configure b/source/configure
new file mode 100644 (file)
index 0000000..4a81733
--- /dev/null
@@ -0,0 +1,5273 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.68 for Xestia Address Book 1.0.
+#
+# Report bugs to <bugs@xestia.co.uk>.
+#
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
+#
+#
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test "x$CONFIG_SHELL" = x; then
+  as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+"
+  as_required="as_fn_return () { (exit \$1); }
+as_fn_success () { as_fn_return 0; }
+as_fn_failure () { as_fn_return 1; }
+as_fn_ret_success () { return 0; }
+as_fn_ret_failure () { return 1; }
+
+exitcode=0
+as_fn_success || { exitcode=1; echo as_fn_success failed.; }
+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+
+else
+  exitcode=1; echo positional parameters were not saved.
+fi
+test x\$exitcode = x0 || exit 1"
+  as_suggested="  as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+  as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+  eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+  if (eval "$as_required") 2>/dev/null; then :
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+  if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  as_found=:
+  case $as_dir in #(
+        /*)
+          for as_base in sh bash ksh sh5; do
+            # Try only shells that exist, to save several forks.
+            as_shell=$as_dir/$as_base
+            if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+                   { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  CONFIG_SHELL=$as_shell as_have_required=yes
+                  if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+  break 2
+fi
+fi
+          done;;
+       esac
+  as_found=false
+done
+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+             { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
+  CONFIG_SHELL=$SHELL as_have_required=yes
+fi; }
+IFS=$as_save_IFS
+
+
+      if test "x$CONFIG_SHELL" != x; then :
+  # We cannot yet assume a decent shell, so we have to provide a
+       # neutralization value for shells without unset; and this also
+       # works around shells that cannot unset nonexistent variables.
+       # Preserve -v and -x to the replacement shell.
+       BASH_ENV=/dev/null
+       ENV=/dev/null
+       (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+       export CONFIG_SHELL
+       case $- in # ((((
+         *v*x* | *x*v* ) as_opts=-vx ;;
+         *v* ) as_opts=-v ;;
+         *x* ) as_opts=-x ;;
+         * ) as_opts= ;;
+       esac
+       exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+fi
+
+    if test x$as_have_required = xno; then :
+  $as_echo "$0: This script requires a shell more modern than all"
+  $as_echo "$0: the shells that I found on your system."
+  if test x${ZSH_VERSION+set} = xset ; then
+    $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+    $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+  else
+    $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@xestia.co.uk
+$0: about your system, including any error possibly output
+$0: before this message. Then install a modern shell, or
+$0: manually run the script under such a shell if you do
+$0: have one."
+  fi
+  exit 1
+fi
+fi
+fi
+SHELL=${CONFIG_SHELL-/bin/sh}
+export SHELL
+# Unset more variables known to interfere with behavior of common tools.
+CLICOLOR_FORCE= GREP_OPTIONS=
+unset CLICOLOR_FORCE GREP_OPTIONS
+
+## --------------------- ##
+## M4sh Shell Functions. ##
+## --------------------- ##
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+test -n "$DJDIR" || exec 7<&0 </dev/null
+exec 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+
+# Identity of this package.
+PACKAGE_NAME='Xestia Address Book'
+PACKAGE_TARNAME='xestia-address-book'
+PACKAGE_VERSION='1.0'
+PACKAGE_STRING='Xestia Address Book 1.0'
+PACKAGE_BUGREPORT='bugs@xestia.co.uk'
+PACKAGE_URL=''
+
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='LTLIBOBJS
+LIBOBJS
+EGREP
+GREP
+WX_RESCOMP
+WX_VERSION
+WX_LIBS_STATIC
+WX_LIBS
+WX_CXXFLAGS_ONLY
+WX_CFLAGS_ONLY
+WX_CXXFLAGS
+WX_CFLAGS
+WX_CPPFLAGS
+WX_CONFIG_PATH
+CPP
+ac_ct_CC
+CFLAGS
+CC
+OBJEXT
+EXEEXT
+ac_ct_CXX
+CPPFLAGS
+LDFLAGS
+CXXFLAGS
+CXX
+target_alias
+host_alias
+build_alias
+LIBS
+ECHO_T
+ECHO_N
+ECHO_C
+DEFS
+mandir
+localedir
+libdir
+psdir
+pdfdir
+dvidir
+htmldir
+infodir
+docdir
+oldincludedir
+includedir
+localstatedir
+sharedstatedir
+sysconfdir
+datadir
+datarootdir
+libexecdir
+sbindir
+bindir
+program_transform_name
+prefix
+exec_prefix
+PACKAGE_URL
+PACKAGE_BUGREPORT
+PACKAGE_STRING
+PACKAGE_VERSION
+PACKAGE_TARNAME
+PACKAGE_NAME
+PATH_SEPARATOR
+SHELL'
+ac_subst_files=''
+ac_user_opts='
+enable_option_checking
+with_wxdir
+with_wx_config
+with_wx_prefix
+with_wx_exec_prefix
+'
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CXX
+CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCC
+CC
+CFLAGS
+CPP'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+ac_unrecognized_opts=
+ac_unrecognized_sep=
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid feature name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"enable_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval enable_$ac_useropt=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
+      as_fn_error $? "invalid package name: $ac_useropt"
+    ac_useropt_orig=$ac_useropt
+    ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+    case $ac_user_opts in
+      *"
+"with_$ac_useropt"
+"*) ;;
+      *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
+        ac_unrecognized_sep=', ';;
+    esac
+    eval with_$ac_useropt=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    case $ac_envvar in #(
+      '' | [0-9]* | *[!_$as_cr_alnum]* )
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
+    esac
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  as_fn_error $? "missing argument to $ac_option"
+fi
+
+if test -n "$ac_unrecognized_opts"; then
+  case $enable_option_checking in
+    no) ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
+    *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+  esac
+fi
+
+# Check all directory arguments for consistency.
+for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
+               datadir sysconfdir sharedstatedir localstatedir includedir \
+               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+               libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  # Remove trailing slashes.
+  case $ac_val in
+    */ )
+      ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
+      eval $ac_var=\$ac_val;;
+  esac
+  # Be sure to have absolute directory names.
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val"
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used" >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  as_fn_error $? "working directory cannot be determined"
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  as_fn_error $? "pwd does not report name of working directory"
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$as_myself" ||
+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_myself" : 'X\(//\)[^/]' \| \
+        X"$as_myself" : 'X\(//\)$' \| \
+        X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_myself" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir"
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+       cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg"
+       pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures Xestia Address Book 1.0 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking ...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+                          [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+                          [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR            user executables [EPREFIX/bin]
+  --sbindir=DIR           system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR        program executables [EPREFIX/libexec]
+  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --libdir=DIR            object code libraries [EPREFIX/lib]
+  --includedir=DIR        C header files [PREFIX/include]
+  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
+  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR           info documentation [DATAROOTDIR/info]
+  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR            man documentation [DATAROOTDIR/man]
+  --docdir=DIR            documentation root
+                          [DATAROOTDIR/doc/xestia-address-book]
+  --htmldir=DIR           html documentation [DOCDIR]
+  --dvidir=DIR            dvi documentation [DOCDIR]
+  --pdfdir=DIR            pdf documentation [DOCDIR]
+  --psdir=DIR             ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of Xestia Address Book 1.0:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-wxdir=PATH       Use uninstalled version of wxWidgets in PATH
+  --with-wx-config=CONFIG wx-config script to use (optional)
+  --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)
+  --with-wx-exec-prefix=PREFIX
+                          Exec prefix where wxWidgets is installed (optional)
+
+Some influential environment variables:
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  CPP         C preprocessor
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <bugs@xestia.co.uk>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" ||
+      { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } ||
+      continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+Xestia Address Book configure 1.0
+generated by GNU Autoconf 2.68
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+
+## ------------------------ ##
+## Autoconf initialization. ##
+## ------------------------ ##
+
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
+# ac_fn_c_try_compile LINENO
+# --------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext
+  if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_compile
+
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } > conftest.i && {
+        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+    ac_retval=1
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
+# ac_fn_c_try_link LINENO
+# -----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        $as_test_x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_link
+
+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists, giving a warning if it cannot be compiled using
+# the include files in INCLUDES and setting the cache variable VAR
+# accordingly.
+ac_fn_c_check_header_mongrel ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if eval \${$3+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
+$as_echo_n "checking $2 usability... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_header_compiler=yes
+else
+  ac_header_compiler=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
+$as_echo "$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
+$as_echo_n "checking $2 presence... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <$2>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  ac_header_preproc=yes
+else
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
+$as_echo "$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
+  yes:no: )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+    ;;
+  no:yes:* )
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     check for missing prerequisite headers?" >&5
+$as_echo "$as_me: WARNING: $2:     check for missing prerequisite headers?" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&5
+$as_echo "$as_me: WARNING: $2:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## -------------------------------- ##
+## Report this to bugs@xestia.co.uk ##
+## -------------------------------- ##"
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=\$ac_header_compiler"
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+fi
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
+# that executables *can* be run.
+ac_fn_c_try_run ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: program exited with status $ac_status" >&5
+       $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=$ac_status
+fi
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
+# -------------------------------------------------------
+# Tests whether HEADER exists and can be compiled using the include files in
+# INCLUDES, setting the cache variable VAR accordingly.
+ac_fn_c_check_header_compile ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+#include <$2>
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$3=yes"
+else
+  eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_header_compile
+
+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES
+# -------------------------------------------
+# Tests whether TYPE exists after having included INCLUDES, setting cache
+# variable VAR accordingly.
+ac_fn_c_check_type ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+$as_echo_n "checking for $2... " >&6; }
+if eval \${$3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  eval "$3=no"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof ($2))
+        return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$4
+int
+main ()
+{
+if (sizeof (($2)))
+           return 0;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  eval "$3=yes"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_type
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    $as_echo "PATH: $as_dir"
+  done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
+    2)
+      as_fn_append ac_configure_args1 " '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+       ac_must_keep_next=false # Got value, back to normal.
+      else
+       case $ac_arg in
+         *=* | --config-cache | -C | -disable-* | --disable-* \
+         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+         | -with-* | --with-* | -without-* | --without-* | --x)
+           case "$ac_configure_args0 " in
+             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+           esac
+           ;;
+         -* ) ac_must_keep_next=true ;;
+       esac
+      fi
+      as_fn_append ac_configure_args " '$ac_arg'"
+      ;;
+    esac
+  done
+done
+{ ac_configure_args0=; unset ac_configure_args0;}
+{ ac_configure_args1=; unset ac_configure_args1;}
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    $as_echo "## ---------------- ##
+## Cache variables. ##
+## ---------------- ##"
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+       "s/'\''/'\''\\\\'\'''\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    $as_echo "## ----------------- ##
+## Output variables. ##
+## ----------------- ##"
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      $as_echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      $as_echo "## ------------------- ##
+## File substitutions. ##
+## ------------------- ##"
+      echo
+      for ac_var in $ac_subst_files
+      do
+       eval ac_val=\$$ac_var
+       case $ac_val in
+       *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+       esac
+       $as_echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      $as_echo "## ----------- ##
+## confdefs.h. ##
+## ----------- ##"
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      $as_echo "$as_me: caught signal $ac_signal"
+    $as_echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+$as_echo "/* confdefs.h */" > confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_URL "$PACKAGE_URL"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer an explicitly selected file to automatically selected ones.
+ac_site_file1=NONE
+ac_site_file2=NONE
+if test -n "$CONFIG_SITE"; then
+  # We do not want a PATH search for config.site.
+  case $CONFIG_SITE in #((
+    -*)  ac_site_file1=./$CONFIG_SITE;;
+    */*) ac_site_file1=$CONFIG_SITE;;
+    *)   ac_site_file1=./$CONFIG_SITE;;
+  esac
+elif test "x$prefix" != xNONE; then
+  ac_site_file1=$prefix/share/config.site
+  ac_site_file2=$prefix/etc/config.site
+else
+  ac_site_file1=$ac_default_prefix/share/config.site
+  ac_site_file2=$ac_default_prefix/etc/config.site
+fi
+for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+do
+  test "x$ac_site_file" = xNONE && continue
+  if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file" \
+      || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "failed to load site script $ac_site_file
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special files
+  # actually), so we avoid doing that.  DJGPP emulates it as a regular file.
+  if test /dev/null != "$cache_file" && test -f "$cache_file"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+$as_echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+$as_echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+       # differences in whitespace do not lead to failure.
+       ac_old_val_w=`echo x $ac_old_val`
+       ac_new_val_w=`echo x $ac_new_val`
+       if test "$ac_old_val_w" != "$ac_new_val_w"; then
+         { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+         ac_cache_corrupted=:
+       else
+         { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+         eval $ac_var=\$ac_old_val
+       fi
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   former value:  \`$ac_old_val'" >&5
+$as_echo "$as_me:   former value:  \`$ac_old_val'" >&2;}
+       { $as_echo "$as_me:${as_lineno-$LINENO}:   current value: \`$ac_new_val'" >&5
+$as_echo "$as_me:   current value: \`$ac_new_val'" >&2;}
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) as_fn_append ac_configure_args " '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+fi
+## -------------------- ##
+## Main body of script. ##
+## -------------------- ##
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+#AC_CONFIG_SRCDIR([version.h])
+#AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C++ compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GXX=yes
+else
+  GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+else
+  CXXFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+  ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+        CXXFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
+
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+$as_echo_n "checking how to run the C preprocessor... " >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if ${ac_cv_prog_CPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+$as_echo "$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+                    Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+
+else
+  # Broken: fails on valid input.
+continue
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+rm -f conftest.err conftest.i conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.i conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then :
+
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Checks for libraries.
+
+
+
+# Check whether --with-wxdir was given.
+if test "${with_wxdir+set}" = set; then :
+  withval=$with_wxdir;  wx_config_name="$withval/wx-config"
+                  wx_config_args="--inplace"
+fi
+
+
+# Check whether --with-wx-config was given.
+if test "${with_wx_config+set}" = set; then :
+  withval=$with_wx_config; wx_config_name="$withval"
+fi
+
+
+# Check whether --with-wx-prefix was given.
+if test "${with_wx_prefix+set}" = set; then :
+  withval=$with_wx_prefix; wx_config_prefix="$withval"
+else
+  wx_config_prefix=""
+fi
+
+
+# Check whether --with-wx-exec-prefix was given.
+if test "${with_wx_exec_prefix+set}" = set; then :
+  withval=$with_wx_exec_prefix; wx_config_exec_prefix="$withval"
+else
+  wx_config_exec_prefix=""
+fi
+
+
+reqwx=2.8.0
+
+    if test x${WX_CONFIG_NAME+set} != xset ; then
+     WX_CONFIG_NAME=wx-config
+  fi
+
+  if test "x$wx_config_name" != x ; then
+     WX_CONFIG_NAME="$wx_config_name"
+  fi
+
+    if test x$wx_config_exec_prefix != x ; then
+     wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix"
+     WX_LOOKUP_PATH="$wx_config_exec_prefix/bin"
+  fi
+  if test x$wx_config_prefix != x ; then
+     wx_config_args="$wx_config_args --prefix=$wx_config_prefix"
+     WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin"
+  fi
+  if test "$cross_compiling" = "yes"; then
+     wx_config_args="$wx_config_args --host=$host_alias"
+  fi
+
+    if test -x "$WX_CONFIG_NAME" ; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wx-config" >&5
+$as_echo_n "checking for wx-config... " >&6; }
+     WX_CONFIG_PATH="$WX_CONFIG_NAME"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+  else
+     # Extract the first word of "$WX_CONFIG_NAME", so it can be a program name with args.
+set dummy $WX_CONFIG_NAME; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_WX_CONFIG_PATH+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $WX_CONFIG_PATH in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_WX_CONFIG_PATH="$WX_CONFIG_PATH" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_dummy=""$WX_LOOKUP_PATH:$PATH""
+for as_dir in $as_dummy
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_WX_CONFIG_PATH="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_WX_CONFIG_PATH" && ac_cv_path_WX_CONFIG_PATH="no"
+  ;;
+esac
+fi
+WX_CONFIG_PATH=$ac_cv_path_WX_CONFIG_PATH
+if test -n "$WX_CONFIG_PATH"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WX_CONFIG_PATH" >&5
+$as_echo "$WX_CONFIG_PATH" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+
+  if test "$WX_CONFIG_PATH" != "no" ; then
+    WX_VERSION=""
+
+    min_wx_version=$reqwx
+    if test -z "" ; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version... " >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets version >= $min_wx_version ()" >&5
+$as_echo_n "checking for wxWidgets version >= $min_wx_version ()... " >&6; }
+    fi
+
+    WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args  "
+
+    WX_VERSION=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null`
+    wx_config_major_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    wx_config_minor_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    wx_config_micro_version=`echo $WX_VERSION | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+    wx_requested_major_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    wx_requested_minor_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    wx_requested_micro_version=`echo $min_wx_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+
+    wx_ver_ok=""
+    if test "x$WX_VERSION" != x ; then
+      if test $wx_config_major_version -gt $wx_requested_major_version; then
+        wx_ver_ok=yes
+      else
+        if test $wx_config_major_version -eq $wx_requested_major_version; then
+           if test $wx_config_minor_version -gt $wx_requested_minor_version; then
+              wx_ver_ok=yes
+           else
+              if test $wx_config_minor_version -eq $wx_requested_minor_version; then
+                 if test $wx_config_micro_version -ge $wx_requested_micro_version; then
+                    wx_ver_ok=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+    fi
+
+
+    if test -n "$wx_ver_ok"; then
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (version $WX_VERSION)" >&5
+$as_echo "yes (version $WX_VERSION)" >&6; }
+      WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`
+
+                              { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wxWidgets static library" >&5
+$as_echo_n "checking for wxWidgets static library... " >&6; }
+      WX_LIBS_STATIC=`$WX_CONFIG_WITH_ARGS --static --libs 2>/dev/null`
+      if test "x$WX_LIBS_STATIC" = "x"; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      fi
+
+            wx_has_cppflags=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_cppflags=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -gt 2; then
+              wx_has_cppflags=yes
+           else
+              if test $wx_config_minor_version -eq 2; then
+                 if test $wx_config_micro_version -ge 6; then
+                    wx_has_cppflags=yes
+                 fi
+              fi
+           fi
+        fi
+      fi
+
+            wx_has_rescomp=""
+      if test $wx_config_major_version -gt 2; then
+        wx_has_rescomp=yes
+      else
+        if test $wx_config_major_version -eq 2; then
+           if test $wx_config_minor_version -ge 7; then
+              wx_has_rescomp=yes
+           fi
+        fi
+      fi
+      if test "x$wx_has_rescomp" = x ; then
+                  WX_RESCOMP=
+      else
+         WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp`
+      fi
+
+      if test "x$wx_has_cppflags" = x ; then
+                  WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+         WX_CPPFLAGS=$WX_CFLAGS
+         WX_CXXFLAGS=$WX_CFLAGS
+
+         WX_CFLAGS_ONLY=$WX_CFLAGS
+         WX_CXXFLAGS_ONLY=$WX_CFLAGS
+      else
+                  WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags`
+         WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags`
+         WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags`
+
+         WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"`
+         WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"`
+      fi
+
+      wxWin=1
+
+    else
+
+       if test "x$WX_VERSION" = x; then
+                    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       else
+          { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (version $WX_VERSION is not new enough)" >&5
+$as_echo "no (version $WX_VERSION is not new enough)" >&6; }
+       fi
+
+       WX_CFLAGS=""
+       WX_CPPFLAGS=""
+       WX_CXXFLAGS=""
+       WX_LIBS=""
+       WX_LIBS_STATIC=""
+       WX_RESCOMP=""
+       :
+
+    fi
+  else
+
+    WX_CFLAGS=""
+    WX_CPPFLAGS=""
+    WX_CXXFLAGS=""
+    WX_LIBS=""
+    WX_LIBS_STATIC=""
+    WX_RESCOMP=""
+
+    :
+
+  fi
+
+
+
+
+
+
+
+
+
+
+
+if test "$wxWin" != 1; then
+       as_fn_error $? "
+wxWidgets must be installed on your system.
+
+Please check that wx-config is in path, the directory where wxWidgets libraries
+are installed (returned by 'wx-config --libs' or 'wx-config --static --libs'
+command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version
+is $reqwx or above.
+               " "$LINENO" 5
+fi
+
+CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
+CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
+CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
+LIBS="$LIBS $WX_LIBS"
+
+# FIXME: Replace `main' with a function in `-lboost_filesystem':
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_filesystem" >&5
+$as_echo_n "checking for main in -lboost_filesystem... " >&6; }
+if ${ac_cv_lib_boost_filesystem_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lboost_filesystem  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_boost_filesystem_main=yes
+else
+  ac_cv_lib_boost_filesystem_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_filesystem_main" >&5
+$as_echo "$ac_cv_lib_boost_filesystem_main" >&6; }
+if test "x$ac_cv_lib_boost_filesystem_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBBOOST_FILESYSTEM 1
+_ACEOF
+
+  LIBS="-lboost_filesystem $LIBS"
+
+else
+
+       echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed!
+Please check that this library is installed property before
+running configure again."
+       exit -1
+
+fi
+
+# FIXME: Replace `main' with a function in `-lboost_system':
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lboost_system" >&5
+$as_echo_n "checking for main in -lboost_system... " >&6; }
+if ${ac_cv_lib_boost_system_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lboost_system  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_boost_system_main=yes
+else
+  ac_cv_lib_boost_system_main=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_boost_system_main" >&5
+$as_echo "$ac_cv_lib_boost_system_main" >&6; }
+if test "x$ac_cv_lib_boost_system_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBBOOST_SYSTEM 1
+_ACEOF
+
+  LIBS="-lboost_system $LIBS"
+
+else
+
+       echo "Error! Boost System Library (libboost_system) is not installed!
+Please check that this library is installed property before
+running configure again."
+       exit -1
+
+fi
+
+#AC_CHECK_PROG([WXCONFIG], [wx-config])
+
+# Checks for header files.
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+for ac_header in stdlib.h string.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+# Checks for typedefs, structures, and compiler characteristics.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
+if ${ac_cv_header_stdbool_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdbool.h>
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+       struct s { _Bool s: 1; _Bool t; } s;
+
+       char a[true == 1 ? 1 : -1];
+       char b[false == 0 ? 1 : -1];
+       char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+       char d[(bool) 0.5 == true ? 1 : -1];
+       /* See body of main program for 'e'.  */
+       char f[(_Bool) 0.0 == false ? 1 : -1];
+       char g[true];
+       char h[sizeof (_Bool)];
+       char i[sizeof s.t];
+       enum { j = false, k = true, l = false * true, m = true * 256 };
+       /* The following fails for
+          HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */
+       _Bool n[m];
+       char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+       char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+       /* Catch a bug in an HP-UX C compiler.  See
+          http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+          http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+        */
+       _Bool q = true;
+       _Bool *pq = &q;
+
+int
+main ()
+{
+
+       bool e = &s;
+       *pq |= q;
+       *pq |= ! q;
+       /* Refer to every declared value, to avoid compiler optimizations.  */
+       return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+               + !m + !n + !o + !p + !q + !pq);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdbool_h=yes
+else
+  ac_cv_header_stdbool_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+$as_echo "$ac_cv_header_stdbool_h" >&6; }
+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+$as_echo_n "checking for inline... " >&6; }
+if ${ac_cv_c_inline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __cplusplus
+typedef int foo_t;
+static $ac_kw foo_t static_foo () {return 0; }
+$ac_kw foo_t foo () {return 0; }
+#endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_inline=$ac_kw
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+$as_echo "$ac_cv_c_inline" >&6; }
+
+case $ac_cv_c_inline in
+  inline | yes) ;;
+  *)
+    case $ac_cv_c_inline in
+      no) ac_val=;;
+      *) ac_val=$ac_cv_c_inline;;
+    esac
+    cat >>confdefs.h <<_ACEOF
+#ifndef __cplusplus
+#define inline $ac_val
+#endif
+_ACEOF
+    ;;
+esac
+
+
+# Checks for library functions.
+
+ac_config_files="$ac_config_files Makefile"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #(
+      *) { eval $ac_var=; unset $ac_var;} ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes: double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \.
+      sed -n \
+       "s/'/'\\\\''/g;
+         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    if test "x$cache_file" != "x/dev/null"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+$as_echo "$as_me: updating cache $cache_file" >&6;}
+      if test ! -f "$cache_file" || test -h "$cache_file"; then
+       cat confcache >"$cache_file"
+      else
+        case $cache_file in #(
+        */* | ?:*)
+         mv -f confcache "$cache_file"$$ &&
+         mv -f "$cache_file"$$ "$cache_file" ;; #(
+        *)
+         mv -f confcache "$cache_file" ;;
+       esac
+      fi
+    fi
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section.  Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+:mline
+/\\$/{
+ N
+ s,\\\n,,
+ b mline
+}
+t clear
+:clear
+s/^[    ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[    ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[     `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+       g
+       s/^\n//
+       s/\n/ /g
+       p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+U=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: "${CONFIG_STATUS=./config.status}"
+ac_write_fail=0
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+as_write_fail=0
+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
+## -------------------- ##
+## M4sh Initialization. ##
+## -------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+  emulate sh
+  NULLCMD=:
+  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in #(
+  *posix*) :
+    set -o posix ;; #(
+  *) :
+     ;;
+esac
+fi
+
+
+as_nl='
+'
+export as_nl
+# Printing a long string crashes Solaris 7 /usr/bin/printf.
+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
+# Prefer a ksh shell builtin over an external printf program on Solaris,
+# but without wasting forks for bash or zsh.
+if test -z "$BASH_VERSION$ZSH_VERSION" \
+    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='print -r --'
+  as_echo_n='print -rn --'
+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
+  as_echo='printf %s\n'
+  as_echo_n='printf %s'
+else
+  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
+    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
+    as_echo_n='/usr/ucb/echo -n'
+  else
+    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
+    as_echo_n_body='eval
+      arg=$1;
+      case $arg in #(
+      *"$as_nl"*)
+       expr "X$arg" : "X\\(.*\\)$as_nl";
+       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
+      esac;
+      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
+    '
+    export as_echo_n_body
+    as_echo_n='sh -c $as_echo_n_body as_echo'
+  fi
+  export as_echo_body
+  as_echo='sh -c $as_echo_body as_echo'
+fi
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  PATH_SEPARATOR=:
+  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
+    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
+      PATH_SEPARATOR=';'
+  }
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+IFS=" ""       $as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+as_myself=
+case $0 in #((
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+  done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  exit 1
+fi
+
+# Unset variables that we do not need and which cause bugs (e.g. in
+# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
+# suppresses any "Segmentation fault" message there.  '((' could
+# trigger a bug in pdksh 5.2.14.
+for as_var in BASH_ENV ENV MAIL MAILPATH
+do eval test x\${$as_var+set} = xset \
+  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# CDPATH.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+
+# as_fn_error STATUS ERROR [LINENO LOG_FD]
+# ----------------------------------------
+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
+# script with STATUS, using 1 if that was 0.
+as_fn_error ()
+{
+  as_status=$1; test $as_status -eq 0 && as_status=1
+  if test "$4"; then
+    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+  fi
+  $as_echo "$as_me: error: $2" >&2
+  as_fn_exit $as_status
+} # as_fn_error
+
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+
+# as_fn_unset VAR
+# ---------------
+# Portably unset VAR.
+as_fn_unset ()
+{
+  { eval $1=; unset $1;}
+}
+as_unset=as_fn_unset
+# as_fn_append VAR VALUE
+# ----------------------
+# Append the text in VALUE to the end of the definition contained in VAR. Take
+# advantage of any shell optimizations that allow amortized linear growth over
+# repeated appends, instead of the typical quadratic growth present in naive
+# implementations.
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+  eval 'as_fn_append ()
+  {
+    eval $1+=\$2
+  }'
+else
+  as_fn_append ()
+  {
+    eval $1=\$$1\$2
+  }
+fi # as_fn_append
+
+# as_fn_arith ARG...
+# ------------------
+# Perform arithmetic evaluation on the ARGs, and store the result in the
+# global $as_val. Take advantage of shells that can avoid forks. The arguments
+# must be portable across $(()) and expr.
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+  eval 'as_fn_arith ()
+  {
+    as_val=$(( $* ))
+  }'
+else
+  as_fn_arith ()
+  {
+    as_val=`expr "$@" || test $? -eq 1`
+  }
+fi # as_fn_arith
+
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$0" : 'X\(//\)$' \| \
+        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\/\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in #(((((
+-n*)
+  case `echo 'xy\c'` in
+  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
+  xy)  ECHO_C='\c';;
+  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
+       ECHO_T='        ';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir 2>/dev/null
+fi
+if (echo >conf$$.file) 2>/dev/null; then
+  if ln -s conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s='ln -s'
+    # ... but there are two gotchas:
+    # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+    # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+    # In both cases, we have to default to `cp -p'.
+    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+      as_ln_s='cp -p'
+  elif ln conf$$.file conf$$ 2>/dev/null; then
+    as_ln_s=ln
+  else
+    as_ln_s='cp -p'
+  fi
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+
+# as_fn_mkdir_p
+# -------------
+# Create "$as_dir" as a directory, including parents if necessary.
+as_fn_mkdir_p ()
+{
+
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || eval $as_mkdir_p || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$as_dir" : 'X\(//\)[^/]' \| \
+        X"$as_dir" : 'X\(//\)$' \| \
+        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
+
+
+} # as_fn_mkdir_p
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p='mkdir -p "$as_dir"'
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+       test -d "$1/.";
+      else
+       case $1 in #(
+       -*)set "./$1";;
+       esac;
+       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+       ???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+## ----------------------------------- ##
+## Main body of $CONFIG_STATUS script. ##
+## ----------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# Save the log message, to keep $0 and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by Xestia Address Book $as_me 1.0, which was
+generated by GNU Autoconf 2.68.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+case $ac_config_files in *"
+"*) set x $ac_config_files; shift; ac_config_files=$*;;
+esac
+
+
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+# Files that config.status was made for.
+config_files="$ac_config_files"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+ac_cs_usage="\
+\`$as_me' instantiates files and other configuration actions
+from templates according to the current configuration.  Unless the files
+and actions are specified as TAGs, all are instantiated by default.
+
+Usage: $0 [OPTION]... [TAG]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+      --config     print configuration, then exit
+  -q, --quiet, --silent
+                   do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+      --file=FILE[:TEMPLATE]
+                   instantiate the configuration file FILE
+
+Configuration files:
+$config_files
+
+Report bugs to <bugs@xestia.co.uk>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_version="\\
+Xestia Address Book config.status 1.0
+configured by $0, generated by GNU Autoconf 2.68,
+  with options \\"\$ac_cs_config\\"
+
+Copyright (C) 2010 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+test -n "\$AWK" || AWK=awk
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# The default lists apply if the user does not specify any file.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=?*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  --*=)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    $as_echo "$ac_cs_version"; exit ;;
+  --config | --confi | --conf | --con | --co | --c )
+    $as_echo "$ac_cs_config"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    case $ac_optarg in
+    *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    '') as_fn_error $? "missing file argument" ;;
+    esac
+    as_fn_append CONFIG_FILES " '$ac_optarg'"
+    ac_need_defaults=false;;
+  --he | --h |  --help | --hel | -h )
+    $as_echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) as_fn_error $? "unrecognized option: \`$1'
+Try \`$0 --help' for more information." ;;
+
+  *) as_fn_append ac_config_targets " $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+if \$ac_cs_recheck; then
+  set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+  shift
+  \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+  CONFIG_SHELL='$SHELL'
+  export CONFIG_SHELL
+  exec "\$@"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  $as_echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp= ac_tmp=
+  trap 'exit_status=$?
+  : "${ac_tmp:=$tmp}"
+  { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
+' 0
+  trap 'as_fn_exit 1' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
+
+# Set up the scripts for CONFIG_FILES section.
+# No need to generate them if there are no CONFIG_FILES.
+# This happens for instance with `./config.status config.h'.
+if test -n "$CONFIG_FILES"; then
+
+
+ac_cr=`echo X | tr X '\015'`
+# On cygwin, bash can eat \r inside `` if the user requested igncr.
+# But we know of no other shell where ac_cr would be empty at this
+# point, so we can use a bashism as a fallback.
+if test "x$ac_cr" = x; then
+  eval ac_cr=\$\'\\r\'
+fi
+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
+  ac_cs_awk_cr='\\r'
+else
+  ac_cs_awk_cr=$ac_cr
+fi
+
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
+_ACEOF
+
+
+{
+  echo "cat >conf$$subs.awk <<_ACEOF" &&
+  echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' &&
+  echo "_ACEOF"
+} >conf$$subs.sh ||
+  as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'`
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  . ./conf$$subs.sh ||
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+
+  ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X`
+  if test $ac_delim_n = $ac_delim_num; then
+    break
+  elif $ac_last_try; then
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+rm -f conf$$subs.sh
+
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
+_ACEOF
+sed -n '
+h
+s/^/S["/; s/!.*/"]=/
+p
+g
+s/^[^!]*!//
+:repl
+t repl
+s/'"$ac_delim"'$//
+t delim
+:nl
+h
+s/\(.\{148\}\)..*/\1/
+t more1
+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/
+p
+n
+b repl
+:more1
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t nl
+:delim
+h
+s/\(.\{148\}\)..*/\1/
+t more2
+s/["\\]/\\&/g; s/^/"/; s/$/"/
+p
+b
+:more2
+s/["\\]/\\&/g; s/^/"/; s/$/"\\/
+p
+g
+s/.\{148\}//
+t delim
+' <conf$$subs.awk | sed '
+/^[^""]/{
+  N
+  s/\n//
+}
+' >>$CONFIG_STATUS || ac_write_fail=1
+rm -f conf$$subs.awk
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+_ACAWK
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
+  for (key in S) S_is_set[key] = 1
+  FS = "\a"
+
+}
+{
+  line = $ 0
+  nfields = split(line, field, "@")
+  substed = 0
+  len = length(field[1])
+  for (i = 2; i < nfields; i++) {
+    key = field[i]
+    keylen = length(key)
+    if (S_is_set[key]) {
+      value = S[key]
+      line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3)
+      len += length(value) + length(field[++i])
+      substed = 1
+    } else
+      len += 1 + keylen
+  }
+
+  print line
+}
+
+_ACAWK
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
+  sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
+else
+  cat
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
+_ACEOF
+
+# VPATH may cause trouble with some makes, so we remove sole $(srcdir),
+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[         ]*VPATH[        ]*=[    ]*/{
+h
+s///
+s/^/:/
+s/[     ]*$/:/
+s/:\$(srcdir):/:/g
+s/:\${srcdir}:/:/g
+s/:@srcdir@:/:/g
+s/^:*//
+s/:*$//
+x
+s/\(=[  ]*\).*/\1/
+G
+s/\n//
+s/^[^=]*=[      ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+fi # test -n "$CONFIG_FILES"
+
+
+eval set X "  :F $CONFIG_FILES      "
+shift
+for ac_tag
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$ac_tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+        # (if the path is not absolute).  The absolute path cannot be DOS-style,
+        # because $ac_f cannot contain `:'.
+        test -f "$ac_f" ||
+          case $ac_f in
+          [\\/$]*) false;;
+          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+          esac ||
+          as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+      esac
+      case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+      as_fn_append ac_file_inputs " '$ac_f'"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input='Generated from '`
+         $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+       `' by configure.'
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+$as_echo "$as_me: creating $ac_file" >&6;}
+    fi
+    # Neutralize special characters interpreted by sed in replacement strings.
+    case $configure_input in #(
+    *\&* | *\|* | *\\* )
+       ac_sed_conf_input=`$as_echo "$configure_input" |
+       sed 's/[\\\\&|]/\\\\&/g'`;; #(
+    *) ac_sed_conf_input=$configure_input;;
+    esac
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$ac_tmp/stdin" \
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$ac_file" : 'X\(//\)[^/]' \| \
+        X"$ac_file" : 'X\(//\)$' \| \
+        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)[^/].*/{
+           s//\1/
+           q
+         }
+         /^X\(\/\/\)$/{
+           s//\1/
+           q
+         }
+         /^X\(\/\).*/{
+           s//\1/
+           q
+         }
+         s/.*/./; q'`
+  as_dir="$ac_dir"; as_fn_mkdir_p
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+ac_sed_dataroot='
+/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p'
+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+  s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ac_sed_extra="$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s|@configure_input@|$ac_sed_conf_input|;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@top_build_prefix@&$ac_top_build_prefix&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+$ac_datarootdir_hack
+"
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+  >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' \
+      "$ac_tmp/out"`; test -z "$ac_out"; } &&
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&5
+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined" >&2;}
+
+  rm -f "$ac_tmp/stdin"
+  case $ac_file in
+  -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+  *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
+  esac \
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+ ;;
+
+
+
+  esac
+
+done # for ac_tag
+
+
+as_fn_exit 0
+_ACEOF
+ac_clean_files=$ac_clean_files_save
+
+test $ac_write_fail = 0 ||
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || as_fn_exit 1
+fi
+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+fi
+
diff --git a/source/configure.ac b/source/configure.ac
new file mode 100644 (file)
index 0000000..e16c523
--- /dev/null
@@ -0,0 +1,61 @@
+#                                               -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.68])
+AC_INIT([Xestia Address Book], [1.0], [bugs@xestia.co.uk])
+#AC_CONFIG_SRCDIR([version.h])
+#AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+AC_PROG_CXX
+AC_PROG_CC
+AC_PROG_CPP
+
+# Checks for libraries.
+
+AM_OPTIONS_WXCONFIG
+reqwx=2.8.0
+AM_PATH_WXCONFIG($reqwx, wxWin=1)
+if test "$wxWin" != 1; then
+       AC_MSG_ERROR([
+wxWidgets must be installed on your system.
+Please check that wx-config is in path, the directory where wxWidgets libraries 
+are installed (returned by 'wx-config --libs' or 'wx-config --static --libs' 
+command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version 
+is $reqwx or above.
+               ])
+fi
+CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS"
+CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY"
+CFLAGS="$CFLAGS $WX_CFLAGS_ONLY"
+LIBS="$LIBS $WX_LIBS"
+
+# FIXME: Replace `main' with a function in `-lboost_filesystem':
+AC_CHECK_LIB([boost_filesystem], [main], [], [
+       echo "Error! Boost Filesystem Library (libboost_filesystem) is not installed!
+Please check that this library is installed property before 
+running configure again."
+       exit -1
+       ])
+# FIXME: Replace `main' with a function in `-lboost_system':
+AC_CHECK_LIB([boost_system], [main], [], [
+       echo "Error! Boost System Library (libboost_system) is not installed!
+Please check that this library is installed property before 
+running configure again."
+       exit -1
+       ])
+#AC_CHECK_PROG([WXCONFIG], [wx-config])
+
+# Checks for header files.
+AC_CHECK_HEADERS([stdlib.h string.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+AC_HEADER_STDBOOL
+AC_C_INLINE
+
+# Checks for library functions.
+
+AC_CONFIG_FILES([Makefile])
+AC_OUTPUT
diff --git a/source/contacteditor/frmContactEditor-Load.cpp b/source/contacteditor/frmContactEditor-Load.cpp
new file mode 100644 (file)
index 0000000..183e632
--- /dev/null
@@ -0,0 +1,7356 @@
+#include <map>
+
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <wx/datetime.h>
+#include <wx/dir.h>
+
+#include "frmContactEditor.h"
+
+#include "../enums.h"
+#include "../version.h"
+#include "../vcard/vcard.h"
+#include "../common/textprocessing.h"
+#include "../common/dirs.h"
+
+bool frmContactEditor::LoadContact(wxString Filename){
+
+       // Load the contact into the contact editor.
+       
+       wxFFile ContactFile;
+       wxString wxSContactString;
+       wxString ContactLine;
+       vCard ContactData;
+       XABViewMode XVMData = MainPtr->GetViewMode();
+       
+       wxSContactFilename = Filename;
+       
+       // Check if we are using wxWidgets version 2.8 or less and
+       // execute the required command accordingly.
+       
+#if wxABI_VERSION < 20900
+       ContactFile.Open(Filename.c_str(), wxT("r"));
+#else
+       ContactFile.Open(Filename, wxT("r"));
+#endif 
+       
+       if (ContactFile.IsOpened() == FALSE){
+       
+               return FALSE;
+       
+       }
+       
+       ContactFile.ReadAll(&wxSContactString, wxConvAuto());
+       
+       // Split the lines.
+       
+       std::map<int, wxString> ContactFileLines;
+       std::map<int, wxString>::iterator striter;
+       
+       wxStringTokenizer wSTContactFileLines(wxSContactString, wxT("\r\n"));
+
+       int ContactLineSeek = 0;
+
+       while (wSTContactFileLines.HasMoreTokens() == TRUE){
+
+               ContactLine = wSTContactFileLines.GetNextToken();
+               ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine));
+               ContactLineSeek++;              
+       
+       }
+
+       // Get the line.
+
+       bool QuoteMode = FALSE;
+       bool PropertyFind = TRUE;
+       bool HasExtraNicknames = FALSE;
+       bool IgnoreGender = FALSE;
+       bool ExtraLineSeek = TRUE;
+       bool BirthdayProcessed = FALSE;
+       bool AnniversaryProcessed = FALSE;
+       bool FNProcessed = FALSE;
+       bool GenderProcessed = FALSE;
+       bool NameProcessed = FALSE;
+       bool UIDProcessed = FALSE;
+       bool KindProcessed = FALSE;
+       bool ETagFound = FALSE;
+       bool ETagOrigFound = FALSE;
+       int intExtraNickname = 0;
+       wxString wxSProperty;
+       wxString wxSPropertySeg1;
+       wxString wxSPropertySeg2;
+       wxString wxSPropertyNextLine;
+       int ContactLineLen = 0;
+       int QuoteBreakPoint = 0;
+       int FNCount = 0;
+       int NameCount = 0;
+       int NicknameCount = 0;
+       int ADRCount = 0;
+       int EmailCount = 0;
+       int IMPPCount = 0;
+       int TelCount = 0;
+       int LangCount = 0;
+       int TZCount = 0;
+       int GeoCount = 0;
+       int URLCount = 0;
+       int RelatedCount = 0;
+       int TitleCount = 0;
+       int RoleCount = 0;
+       int OrgCount = 0;
+       int NoteCount = 0;
+       int CategoryCount = 0;
+       int GroupCount = 0;
+       int PhotoCount = 0;
+       int LogoCount = 0;
+       int SoundCount = 0;
+       int CalAdrCount = 0;
+       int CalReqAdrCount = 0;
+       int FreeBusyCount = 0;
+       int KeyCount = 0;
+       int VendorCount = 0;
+       int XTokenCount = 0;
+       //int intValueSeek = 1;
+
+       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
+        iter != ContactFileLines.end(); ++iter){
+       
+               // Find the colon which splits the start bit from the data part.
+               
+               ContactLine = iter->second;
+               
+               while (ExtraLineSeek == TRUE){
+               
+                       // Check if there is extra data on the next line 
+                       // (indicated by space or tab at the start) and add data.
+               
+                       iter++;
+                       
+                       if (iter == ContactFileLines.end()){
+                       
+                               iter--;
+                               break;
+                       
+                       }                       
+               
+                       wxSPropertyNextLine = iter->second;
+                       
+               
+                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+               
+                               wxSPropertyNextLine.Remove(0, 1);
+                               //wxSPropertyNextLine.Trim(FALSE);
+                               //ContactLine.Trim();
+                               ContactLine.Append(wxSPropertyNextLine);
+               
+                       } else {
+                       
+                               iter--;
+                               ExtraLineSeek = FALSE;
+                       
+                       }
+               
+               }
+
+               ContactLineLen = ContactLine.Len();
+               
+               // Make sure we are not in quotation mode.
+               // Make sure colon does not have \ or \\ before it.
+               
+               for (int i = 0; i <= ContactLineLen; i++){
+               
+                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+                       
+                               PropertyFind = FALSE;
+                       
+                       } else if (PropertyFind == TRUE){
+                       
+                               wxSProperty.Append(ContactLine.Mid(i, 1));
+                       
+                       }               
+               
+                       if (ContactLine.Mid(i, 1) == wxT("\"")){
+                       
+                               if (QuoteMode == TRUE){
+                               
+                                       QuoteMode = FALSE;
+                               
+                               } else {
+                       
+                                       QuoteMode = TRUE;
+                                       
+                               }
+                       
+                       }
+                       
+                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+                       
+                               QuoteBreakPoint = i;
+                               break;
+                       
+                       }
+               
+               }
+               
+               // Split that line at the point into two variables (ignore the colon).
+               
+               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
+               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
+               
+               // Add the data into the contact editor depending on what it is.                                
+               
+               if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+               
+                       if (wxSPropertySeg2 == wxT("individual")){
+                       
+                               cmbType->SetSelection(1);
+                       
+                       } else if (wxSPropertySeg2 == wxT("group")){
+                       
+                               cmbType->SetSelection(2);
+                               IsGroup = TRUE;
+                       
+                       } else if (wxSPropertySeg2 == wxT("org")){
+                       
+                               cmbType->SetSelection(3);
+                       
+                       } else if (wxSPropertySeg2 == wxT("location")){
+                       
+                               cmbType->SetSelection(4);
+                       
+                       } else {
+                       
+                               cmbType->SetSelection(0);
+                       
+                       }
+                       
+                       wxCommandEvent nullevent;
+                       
+                       UpdateMembersTab(nullevent);
+               
+               } else if (wxSProperty == wxT("MEMBER")){
+
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 8;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+               
+                       // Go through the list of contacts for the account and find the matching UID.
+                       // If contact with UID doesn't match then say (unknown contact).
+                       
+                       wxString AccountDirFinal = GetAccountDir(wxSContactAccount, FALSE);
+
+                       //wxString vcardfilenamewxs;
+                       wxString vCardFilename;
+                       wxString vCardFilenameFull;
+                       wxString vCardDataString;
+                       //wxStringTokenizer vcardfileline;
+                       wxString lwxs;
+                       wxString setname, setvalue;
+                       //vCardNames = new std::map<wxString, wxString, std::greater<wxString>>;
+                       std::multimap<wxString, wxString, std::greater<wxString>> vCardNamesAsc;
+                       std::multimap<wxString, wxString, std::less<wxString>> vCardNamesDsc;
+                       int ContactIndex = 0;
+    
+                       wxDir vcardaccdir(AccountDirFinal);
+    
+                       bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES);
+                       while(ProcFiles){
+    
+                               if (vCardFilename.Right(4) == wxT(".vcf") || 
+                                   vCardFilename.Right(4) == wxT(".VCF") || 
+                                   vCardFilename.Right(5) == wxT(".vcard") || 
+                                   vCardFilename.Right(5) == wxT(".VCARD")){
+       
+                                   vCard Person;
+               
+                                   vCardFilenameFull.Append(AccountDirFinal);
+                                   vCardFilenameFull.Append(wxT("/"));
+                                   vCardFilenameFull.Append(vCardFilename);
+               
+                                   Person.LoadFile(vCardFilenameFull);
+               
+                                   if (wxSPropertySeg2.Left(9) == wxT("urn:uuid:")){
+               
+                                       wxString NewPropValue;
+                                       NewPropValue = wxSPropertySeg2.Mid(9, wxString::npos);
+                                       wxSPropertySeg2 = NewPropValue;
+
+                                   }
+               
+                                   if (Person.MeetBaseSpecification()){
+       
+                                       wxString KindStatus = Person.Get(wxT("KIND"));
+               
+                                       if (KindStatus == wxT("group")){
+               
+                                               vCardFilename.Clear();
+                                               vCardFilenameFull.Clear();
+                                               vCardDataString.Clear();
+                                               ProcFiles = vcardaccdir.GetNext(&vCardFilename);
+                                               continue;
+               
+                                       }
+               
+                                       wxString PersonName = Person.Get(wxT("N"));
+                                       wxString PersonUID = Person.Get(wxT("UID"));
+                                       wxString PersonFilename = vCardFilenameFull;
+                                       
+                                       if (PersonUID != wxSPropertySeg2){
+                                       
+                                               vCardFilename.Clear();
+                                               vCardFilenameFull.Clear();
+                                               vCardDataString.Clear();
+                                               ProcFiles = vcardaccdir.GetNext(&vCardFilename);
+                                               continue;
+                                       
+                                       }
+               
+                                       //ContactsNames.insert(std::make_pair(PersonName, ContactIndex));
+                                       //ContactsUIDs.insert(std::make_pair(ContactIndex, PersonUID));
+       
+                                       if (XVMData.SortMode == 1){
+
+                                           // Split the name into sections.
+                       
+                                           vCardDataString = Person.Get(wxT("N"));
+
+                                           vCardName NameData = Person.GetName();
+                   
+                                           vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname;
+                   
+                                       } else if (XVMData.SortMode == 2){
+                   
+                                           // Split the name into sections.
+                   
+                                           vCardName NameData = Person.GetName();    
+                   
+                                           vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename;
+                   
+                                       } else if (XVMData.SortMode == 3){
+                   
+                                           // Check and make sure that the top most nickname is used.
+                   
+                                           vCardDataString = Person.Get(wxT("NICKNAME"));
+                   
+                                           if (vCardDataString.IsEmpty()){
+                       
+                                               vCardDataString = wxT("(no nickname)");
+                       
+                                           }
+                   
+                                       } else if (XVMData.SortMode == 4){
+                   
+                                           vCardDataString = Person.Get(wxT("FN"));
+                   
+                                       }
+       
+                                       if (XVMData.AscendingMode == TRUE){
+                                           vCardNamesAsc.insert(std::make_pair(vCardDataString, PersonUID));
+                                       } else {
+                                           vCardNamesDsc.insert(std::make_pair(vCardDataString, PersonUID));
+                                       }
+               
+                                   } else {
+       
+                                   }
+           
+           
+       
+                               }
+       
+                               vCardFilename.Clear();
+                               vCardFilenameFull.Clear();
+                               vCardDataString.Clear();
+                               ProcFiles = vcardaccdir.GetNext(&vCardFilename);
+       
+                           }
+    
+                           if (XVMData.AscendingMode == TRUE){
+            
+                               for (std::map<wxString,wxString>::iterator iter = vCardNamesAsc.begin(); 
+                               iter != vCardNamesAsc.end(); ++iter){
+
+                                       wxListItem ItemData;
+                                       
+                                       ItemData.SetId(0);
+                                       ItemData.SetText(iter->first);
+                       
+                                       lboGroups->InsertItem(ItemData);
+                                       
+                                       GroupsList.insert(std::make_pair(intValueSeek, iter->second));
+                       
+                               }
+               
+               
+                           } else {
+               
+                               for (std::map<wxString,wxString>::iterator iter = vCardNamesDsc.begin(); 
+                               iter != vCardNamesDsc.end(); ++iter){
+
+                                       wxListItem ItemData;
+                                       
+                                       ItemData.SetId(0);
+                                       ItemData.SetText(iter->first);
+                       
+                                       lboGroups->InsertItem(ItemData);
+
+                                       GroupsList.insert(std::make_pair(intValueSeek, iter->second));
+
+                               }
+
+                           }
+                       
+                       GroupCount++;
+                       intValueSeek++;
+               
+               } else if (wxSProperty == wxT("FN")){
+               
+                       /*
+               
+                       NameDisplayAs = wxSPropertySeg2;
+                       cmbDisplayAs->SetValue(ContactData.Convert(wxSPropertySeg2, TRUE));
+                       
+                       */
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 4;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 3;
+                       
+                       // Look for type before continuing.             
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+
+                       FullNamesList.insert(std::make_pair(intValueSeek, wxT("")));
+                       FullNamesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       FullNamesListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       FullNamesListPref.insert(std::make_pair(intValueSeek, 0));
+                       FullNamesListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       FullNamesListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+                       FullNamesListTokens.insert(std::make_pair(intValueSeek, wxT("")));              
+                       
+                       intPrevValue = 3;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       FullNamesListAltID.erase(intValueSeek); FullNamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       FullNamesListPID.erase(intValueSeek); FullNamesListPID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                                       
+                                       if (intPref > 0 && intPref < 101){
+                               
+                                               FullNamesListPref.erase(intValueSeek); FullNamesListPref.insert(std::make_pair(intValueSeek, intPref));
+                                               
+                                       }
+                               
+                               } else if (PropertyName == wxT("LANG")){
+
+                                       FullNamesListLanguage.erase(intValueSeek); FullNamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }                       
+                       
+                       // Split the address.           
+               
+                       //std::map<int, int>::iterator SLiter;
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(":") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 1){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }                       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       /*
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(IMPPType);
+                       
+                       */
+                       
+                       //ProcessCaptureStrings(wxsPropertySeg2);
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       FullNamesList.erase(intValueSeek);
+                       FullNamesListType.erase(intValueSeek);
+                       FullNamesListTokens.erase(intValueSeek);
+                       FullNamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                       FullNamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       if (intType == 0){
+                       
+                               FullNamesListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 1){
+                       
+                               FullNamesListType.insert(std::make_pair(intValueSeek, wxT("home")));                    
+                       
+                       } else if (intType == 2){
+                       
+                               FullNamesListType.insert(std::make_pair(intValueSeek, wxT("work")));                    
+                       
+                       }
+                       
+                       if (FNProcessed == FALSE){
+                       
+                               NameDisplayAs = wxSPropertySeg2;
+                               cmbDisplayAs->SetValue(ContactData.Convert(wxSPropertySeg2, TRUE));
+                               FNProcessed = TRUE;
+                               
+                       }
+                       
+                       /*if (intType == 0){
+                       
+                               ListCtrlIndex = lboIM->InsertItem(coldata);
+                               
+                               lboIM->SetItem(ListCtrlIndex, 1, IMPPAddress);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }                               
+                               
+                               GeneralIMList.erase(intValueSeek);
+                               GeneralIMListType.erase(intValueSeek);
+                               GeneralIMListTokens.erase(intValueSeek);
+                               GeneralIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralIMListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeIM->InsertItem(coldata);
+
+                               lboHomeIM->SetItem(ListCtrlIndex, 1, IMPPAddress);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeIMList.erase(intValueSeek);
+                               HomeIMListType.erase(intValueSeek);
+                               HomeIMListTokens.erase(intValueSeek);                           
+                               HomeIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeIMListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessIM->InsertItem(coldata);
+
+                               lboBusinessIM->SetItem(ListCtrlIndex, 1, IMPPAddress);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessIMList.erase(intValueSeek);
+                               BusinessIMListType.erase(intValueSeek);
+                               BusinessIMListTokens.erase(intValueSeek);                               
+                               BusinessIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessIMListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                              
+                       
+                       }*/
+                       
+                       FNCount++;
+                       intValueSeek++;                         
+               
+               } else if (wxSProperty == wxT("N") && NameProcessed == FALSE){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 3;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       // Look for type before continuing.             
+                       
+                       intPrevValue = 2;                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                       
+                       }
+                       
+                       intPrevValue = 2;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       NameAltID = PropertyValue;
+                               
+                               } else if (PropertyName == wxT("LANG")){
+
+                                       NameLanguage = PropertyValue;
+                               
+                               } else if (PropertyName == wxT("SORT-AS")){
+                               
+                                       NameDisplayAs = PropertyValue;
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty()){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitSeek = 0;               
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;                                       
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 4){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       } else {
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       // Split the data into several parts.
+                                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               if (intiter->first == 1){
+                               
+                                       // Deal with family name.
+                                       
+                                       SLiter = SplitLength.find(1);
+                                                                               
+                                       txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE));
+                                       
+                                       intPrevValue = intiter->second;
+                                       NameSurname = wxSPropertySeg2.Mid(0, SLiter->second);                                   
+                               
+                               } else if (intiter->first == 2){
+                               
+                                       // Deal with given names.
+                                       
+                                       SLiter = SplitLength.find(2);
+                                                                               
+                                       txtForename->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       NameForename = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
+                               
+                               } else if (intiter->first == 3){
+                               
+                                       // Deal with additional names.
+                                       
+                                       SLiter = SplitLength.find(3);
+                                                                               
+                                       txtOtherNames->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       NameOtherNames = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
+                               
+                               } else if (intiter->first == 4){
+                               
+                                       // Deal with honorifix prefixes and suffixes.
+
+                                       SLiter = SplitLength.find(4);
+                                                                               
+                                       txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       NameTitle = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
+                               
+                                       txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE));
+                                       NameSuffix = wxSPropertySeg2.Mid(intPrevValue);
+                               
+                               }
+                       
+                       }
+                       
+                       NameTokens = PropertyTokens;
+                       NameProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("NICKNAME")){
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 10;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+
+                       intPrevValue = 9;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralNicknamesList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNicknamesListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNicknamesListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeNicknamesList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeNicknamesListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeNicknamesListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT("")));                                
+                       
+                       } else if (intType == 2){
+
+                               BusinessNicknamesList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessNicknamesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessNicknamesListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessNicknamesListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessNicknamesListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessNicknamesListLanguage.insert(std::make_pair(intValueSeek, wxT("")));                            
+                       
+                       }
+                       
+                       intPrevValue = 9;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second);
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralNicknamesListAltID.erase(intValueSeek); GeneralNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeNicknamesListAltID.erase(intValueSeek); HomeNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessNicknamesListAltID.erase(intValueSeek); BusinessNicknamesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralNicknamesListPID.erase(intValueSeek); GeneralNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeNicknamesListPID.erase(intValueSeek); HomeNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessNicknamesListPID.erase(intValueSeek); BusinessNicknamesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ GeneralNicknamesListPref.erase(intValueSeek); GeneralNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ HomeNicknamesListPref.erase(intValueSeek); HomeNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ BusinessNicknamesListPref.erase(intValueSeek); BusinessNicknamesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("LANGUAGE")){
+                               
+                                       if (intType == 0){ GeneralNicknamesListLanguage.erase(intValueSeek); GeneralNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeNicknamesListLanguage.erase(intValueSeek); HomeNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessNicknamesListLanguage.erase(intValueSeek); BusinessNicknamesListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboNicknames->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralNicknamesList.erase(intValueSeek);
+                               GeneralNicknamesListType.erase(intValueSeek);
+                               GeneralNicknamesListTokens.erase(intValueSeek);
+                               GeneralNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralNicknamesListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeNicknames->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeNicknamesList.erase(intValueSeek);
+                               HomeNicknamesListType.erase(intValueSeek);
+                               HomeNicknamesListTokens.erase(intValueSeek);                            
+                               HomeNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeNicknamesListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessNicknames->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessNicknames->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessNicknamesList.erase(intValueSeek);
+                               BusinessNicknamesListType.erase(intValueSeek);
+                               BusinessNicknamesListTokens.erase(intValueSeek);                                
+                               BusinessNicknamesList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessNicknamesListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessNicknamesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                               
+                       
+                       }
+               
+                       NicknameCount++;
+                       intValueSeek++; 
+                       
+               } else if (wxSProperty == wxT("GENDER") && GenderProcessed == FALSE){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 8;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+               
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 7;                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty()){
+               
+                                       if (FirstToken == TRUE){
+                       
+                                               PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                               FirstToken = FALSE;
+                       
+                                       } else {
+                       
+                                               PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                       
+                                       }
+               
+                               }
+                       
+                       }       
+               
+                       wxStringTokenizer GenderDetails (wxSPropertySeg2, wxT(";"));
+                       
+                       wxString GenderComponent;
+                       wxString GenderIdentity;
+                       
+                       if (GenderDetails.CountTokens() >= 2){
+                       
+                               GenderComponent = GenderDetails.GetNextToken();
+                               GenderIdentity = GenderDetails.GetString();
+                       
+                               ProcessCaptureStrings(&GenderIdentity);
+                       
+                               txtGenderDescription->SetValue(ContactData.Convert(GenderIdentity, TRUE));
+                                                               
+                       } else {
+                       
+                               GenderComponent = GenderDetails.GetNextToken();
+                       
+                       }
+                               
+                       if (GenderComponent == wxT("M")){
+                               
+                               // Gender is Male.
+                                       
+                               cmbGender->SetSelection(1);
+                               
+                       } else if (GenderComponent == wxT("F")){
+                               
+                               // Gender is Female.
+                                       
+                               cmbGender->SetSelection(2);                                     
+                               
+                       } else if (GenderComponent == wxT("O")){
+                               
+                               // Gender is Other.
+                                       
+                               cmbGender->SetSelection(3);
+                               
+                       } else if (GenderComponent == wxT("N")){
+                               
+                               // Gender is None/Not Applicable.
+                               
+                               cmbGender->SetSelection(4);                                     
+                               
+                       } else if (GenderComponent == wxT("U")){
+                               
+                               // Gender is Unknown.
+                                       
+                               cmbGender->SetSelection(5);                                     
+                               
+                       }
+                       
+                       GenderTokens = PropertyTokens;
+                       GenderProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("BDAY") && BirthdayProcessed == FALSE){
+
+                       // Process date. Preserve the remainder in the string.
+                               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool BirthdayText = FALSE;
+                       bool FirstToken = TRUE;                         
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+               
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+               
+                       intPrevValue = 5;
+               
+                       // Look for type before continuing.
+               
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+               
+                               SLiter = SplitLength.find(intiter->first);
+               
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second);
+                       
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                       
+                               intPrevValue = intiter->second;
+                       
+                               if (PropertyName == wxT("VALUE") && PropertyValue == wxT("text") && BirthdayText == FALSE){
+                       
+                                       ProcessCaptureStrings(&wxSPropertySeg2);
+                                       txtBirthday->SetValue(wxSPropertySeg2);
+                                       Birthday = wxSPropertySeg2;
+                                       BirthdayText = TRUE;
+                       
+                               }
+               
+                       }
+               
+                       // Setup blank lines for later on.
+                       
+                       intPrevValue = 5;
+               
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+               
+                               SLiter = SplitLength.find(intiter->first);
+               
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second);
+                       
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                       
+                               intPrevValue = intiter->second;
+                       
+                               // Process properties.
+                       
+                               ProcessCaptureStrings(&PropertyValue);
+                       
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                       
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                               
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                               
+                               }                               
+                       
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                               
+                                       PropertyValue.Remove(0, 1);
+                               
+                               }                               
+                       
+                               if (PropertyName == wxT("ALTID")){
+
+                                       BirthdayAltID = PropertyValue;
+                       
+                               } else if (PropertyName == wxT("CALSCALE")){
+                       
+                                       BirthdayCalScale = PropertyValue;
+                       
+                               } else if (PropertyName != wxT("VALUE")) {
+                       
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty()){
+                               
+                                               PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                       }
+                                       
+                               }
+               
+                       }       
+               
+                       // Add the data to the variables and form.
+                       
+                       if (BirthdayText == FALSE){
+                       
+                               Birthday = wxSPropertySeg2;
+                               int DateYear = 0;
+                               wxDateTime::Month DateMonth;
+                               unsigned int DateDay;
+                               
+                               wxString wxSData;
+                               
+                               if (Birthday.Mid(0, 2) == wxT("--")){
+                               
+                                       // Skip year.
+                               
+                               } else {
+                               
+                                       DateYear = wxAtoi(Birthday.Mid(0,4));
+                               
+                               }
+                               
+                               DateMonth = (wxDateTime::Month)(wxAtoi(Birthday.Mid(4,2)) - 1);
+                               DateDay = wxAtoi(Birthday.Mid(6,2));
+                       
+                               wxDateTime BDayDate(DateDay,DateMonth,DateYear);
+                       
+                               /*BDayDate.SetDay(DateDay);
+                               BDayDate.SetMonth(wxDateTime::Month::Jan);
+                               BDayDate.SetYear(DateYear);*/
+                       
+                               dapBirthday->SetValue(BDayDate);                                
+                       
+                       }
+                       
+                       BirthdayTokens = PropertyTokens;
+                       
+                       BirthdayProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("ANNIVERSARY") && AnniversaryProcessed == FALSE){
+                       
+                       // Process date. Preserve the remainder in the string.
+                               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool AnniversaryText = FALSE;
+                       bool FirstToken = TRUE;                         
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 13;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+               
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+               
+                       intPrevValue = 12;
+               
+                       // Look for type before continuing.
+               
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+               
+                               SLiter = SplitLength.find(intiter->first);
+               
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second);
+                       
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                       
+                               intPrevValue = intiter->second;
+                       
+                               if (PropertyName == wxT("VALUE") && PropertyValue == wxT("text") && AnniversaryText == FALSE){
+                       
+                                       ProcessCaptureStrings(&wxSPropertySeg2);
+                                       txtAnniversary->SetValue(wxSPropertySeg2);
+                                       Anniversary = wxSPropertySeg2;
+                                       AnniversaryText = TRUE;
+                       
+                               }
+               
+                       }
+               
+                       // Setup blank lines for later on.
+               
+                       intPrevValue = 12;
+               
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+               
+                               SLiter = SplitLength.find(intiter->first);
+               
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second);
+                       
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                       
+                               intPrevValue = intiter->second;
+                       
+                               // Process properties.
+                       
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                       
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                               
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                               
+                               }                               
+                       
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                               
+                                       PropertyValue.Remove(0, 1);
+                               
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);          
+                       
+                               if (PropertyName == wxT("ALTID")){
+
+                                       AnniversaryAltID = PropertyValue;
+                       
+                               } else if (PropertyName == wxT("CALSCALE")){
+                       
+                                       AnniversaryCalScale = PropertyValue;
+                       
+                               } else if (PropertyName != wxT("VALUE")) {
+                       
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty()){
+                               
+                                               PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                       }
+                       
+                               }
+               
+                       }       
+               
+                       // Add the data to the variables and form.
+                       
+                       if (AnniversaryText == FALSE){
+                       
+                               Anniversary = wxSPropertySeg2;
+                               int DateYear = 0;
+                               wxDateTime::Month DateMonth;
+                               int DateDay;
+                               
+                               wxString wxSData;
+                               
+                               if (Anniversary.Mid(0, 2) == wxT("--")){
+                               
+                                       // Skip year.
+                               
+                               } else {
+                               
+                                       DateYear = wxAtoi(Anniversary.Mid(0,4));
+                               
+                               }
+                               
+                               DateMonth = (wxDateTime::Month)(wxAtoi(Anniversary.Mid(4,2)) - 1);
+                               DateDay = wxAtoi(Anniversary.Mid(6,2));                                 
+                       
+                               wxDateTime ADayDate(DateDay,DateMonth,DateYear);
+                       
+                               dapAnniversary->SetValue(ADayDate);
+                       
+                       }
+                       
+                       AnniversaryTokens = PropertyTokens;
+                       
+                       AnniversaryProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("TZ")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 4;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 3;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralTZList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTZListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTZListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTZListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralTZListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTZListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeTZList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTZListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTZListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTZListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeTZListMediatype.insert(std::make_pair(intValueSeek, wxT("")));                              
+                               HomeTZListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessTZList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTZListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTZListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTZListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessTZListMediatype.insert(std::make_pair(intValueSeek, wxT("")));                          
+                               BusinessTZListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 3;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               // Process properties.
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralTZListAltID.erase(intValueSeek); GeneralTZListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeTZListAltID.erase(intValueSeek); HomeTZListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessTZListAltID.erase(intValueSeek); BusinessTZListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralTZListPID.erase(intValueSeek); GeneralTZListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeTZListPID.erase(intValueSeek); HomeTZListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessTZListPID.erase(intValueSeek); BusinessTZListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       if (intType == 0){ GeneralTZListMediatype.erase(intValueSeek); GeneralTZListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeTZListMediatype.erase(intValueSeek); HomeTZListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessTZListMediatype.erase(intValueSeek); BusinessTZListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intPref > 0 && intPref < 101){
+                               
+                                               if (intType == 0){ GeneralTZListPref.erase(intValueSeek); GeneralTZListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 1){ HomeTZListPref.erase(intValueSeek); HomeTZListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 2){ BusinessTZListPref.erase(intValueSeek); BusinessTZListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       
+                                       }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }                       
+                       
+                       // Split the address. 
+               
+                       //std::map<int, int>::iterator SLiter;
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 6){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       } else {
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);                        
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboTimezones->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralTZList.erase(intValueSeek);
+                               GeneralTZListType.erase(intValueSeek);
+                               GeneralTZListTokens.erase(intValueSeek);
+                               GeneralTZList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralTZListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTZListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeTimezones->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeTZList.erase(intValueSeek);
+                               HomeTZListType.erase(intValueSeek);
+                               HomeTZListTokens.erase(intValueSeek);                           
+                               HomeTZList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeTZListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeTZListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessTimezones->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessTZList.erase(intValueSeek);
+                               BusinessTZListType.erase(intValueSeek);
+                               BusinessTZListTokens.erase(intValueSeek);                               
+                               BusinessTZList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessTZListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessTZListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                              
+                       
+                       }
+               
+                       TZCount++;
+                       intValueSeek++;         
+               
+               } else if (wxSProperty == wxT("ADR")){
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString AddressLabel;
+                       wxString AddressLang;
+                       wxString AddressAltID;
+                       wxString AddressPID;
+                       wxString AddressTokens;
+                       wxString AddressGeo;
+                       wxString AddressTimezone;
+                       wxString AddressType;
+                       wxString AddressMediatype;
+                       wxString AddressPOBox;
+                       wxString AddressExtended;
+                       wxString AddressStreet;
+                       wxString AddressLocality;
+                       wxString AddressCity;
+                       wxString AddressRegion;
+                       wxString AddressPostalCode;
+                       wxString AddressCountry;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 4;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralAddressList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListTown.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListCounty.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListPostCode.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListCountry.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListLabel.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListLang.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListGeo.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListTimezone.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralAddressListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeAddressList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListTown.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListCounty.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListPostCode.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListCountry.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListLabel.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListLang.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListGeo.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListTimezone.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeAddressListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeAddressListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessAddressList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListTown.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListCounty.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListPostCode.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListCountry.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListLabel.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListLang.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListGeo.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListTimezone.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessAddressListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessAddressListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 4;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               // Process properties.
+                               
+                               if (PropertyName == wxT("LABEL")){
+                               
+                                       if (intType == 0){ GeneralAddressListLabel.erase(intValueSeek); GeneralAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeAddressListLabel.erase(intValueSeek); HomeAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessAddressListLabel.erase(intValueSeek); BusinessAddressListLabel.insert(std::make_pair(intValueSeek, PropertyValue));}
+                               
+                               } else if (PropertyName == wxT("LANGUAGE")){
+                               
+                                       if (intType == 0){ GeneralAddressListLang.erase(intValueSeek); GeneralAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeAddressListLang.erase(intValueSeek); HomeAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessAddressListLang.erase(intValueSeek); BusinessAddressListLang.insert(std::make_pair(intValueSeek, PropertyValue)); }                             
+                               
+                               } else if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralAddressListAltID.erase(intValueSeek); GeneralAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeAddressListAltID.erase(intValueSeek); HomeAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessAddressListAltID.erase(intValueSeek); BusinessAddressListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralAddressListPID.erase(intValueSeek); GeneralAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeAddressListPID.erase(intValueSeek); HomeAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessAddressListPID.erase(intValueSeek); BusinessAddressListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("GEO")){
+                               
+                                       if (intType == 0){ GeneralAddressListGeo.erase(intValueSeek); GeneralAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeAddressListGeo.erase(intValueSeek); HomeAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessAddressListGeo.erase(intValueSeek); BusinessAddressListGeo.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("TZ")){
+
+                                       if (intType == 0){ GeneralAddressListTimezone.erase(intValueSeek); GeneralAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeAddressListTimezone.erase(intValueSeek); HomeAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessAddressListTimezone.erase(intValueSeek); BusinessAddressListTimezone.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+
+                                       if (intType == 0){ GeneralAddressListMediatype.erase(intValueSeek); GeneralAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeAddressListMediatype.erase(intValueSeek); HomeAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessAddressListMediatype.erase(intValueSeek); BusinessAddressListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                                       
+                                       if (intPref > 0 && intPref < 101){
+                                                               
+                                               if (intType == 0){ GeneralAddressListPref.erase(intValueSeek); GeneralAddressListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 1){ HomeAddressListPref.erase(intValueSeek); HomeAddressListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 2){ BusinessAddressListPref.erase(intValueSeek); BusinessAddressListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               
+                                       }
+                               
+                               } else {
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }                       
+                       
+                       // Split the address. 
+               
+                       //std::map<int, int>::iterator SLiter;
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 6){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       } else {
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       // Split the data into several parts.                   
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                                       
+                               if (intiter->first == 1){
+                               
+                                       // Deal with PO Box.
+                                       
+                                       SLiter = SplitLength.find(1);
+                                                                               
+                                       //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE));
+                                       AddressPOBox = wxSPropertySeg2.Mid(0, SLiter->second);
+                                       intPrevValue = intiter->second;
+                               
+                               } else if (intiter->first == 2){
+                               
+                                       // Deal with extended address.
+                                       
+                                       SLiter = SplitLength.find(2);
+                                       
+                                       AddressExtended = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
+                                       //txtForename->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                               
+                               } else if (intiter->first == 3){
+                               
+                                       // Deal with street address.
+                                       
+                                       SLiter = SplitLength.find(3);
+                                                                               
+                                       AddressStreet = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
+                                       //txtOtherNames->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                               
+                               } else if (intiter->first == 4){
+                               
+                                       // Deal with locality
+
+                                       SLiter = SplitLength.find(4);
+                                       
+                                       AddressLocality = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
+                                       //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       
+                                       //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE));
+                               
+                               } else if (intiter->first == 5){
+                               
+                                       // Deal with region.
+
+                                       SLiter = SplitLength.find(5);
+                                       
+                                       AddressRegion = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
+                                       //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       
+                                       //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE));
+                               
+                               } else if (intiter->first == 6){
+                               
+                                       // Deal with post code.
+
+                                       SLiter = SplitLength.find(6);
+                                       
+                                       AddressPostalCode = wxSPropertySeg2.Mid(intPrevValue, SLiter->second);
+                                       //txtTitle->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue, SLiter->second), TRUE));
+                                       intPrevValue = intiter->second;
+                                       
+                                       // Deal with country.
+                                       
+                                       AddressCountry = wxSPropertySeg2.Mid(intPrevValue);
+                                       //txtSuffix->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(intPrevValue), TRUE));
+                               
+                               }
+                       
+                       }       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&AddressStreet, &AddressLocality, &AddressRegion, &AddressPostalCode, &AddressCountry);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(AddressStreet);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboAddresses->InsertItem(coldata);
+                               lboAddresses->SetItem(ListCtrlIndex, 1, AddressLocality);
+                               lboAddresses->SetItem(ListCtrlIndex, 2, AddressRegion);
+                               lboAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboAddresses->SetItem(ListCtrlIndex, 4, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralAddressList.erase(intValueSeek);
+                               GeneralAddressListTown.erase(intValueSeek);
+                               GeneralAddressListCounty.erase(intValueSeek);
+                               GeneralAddressListPostCode.erase(intValueSeek);
+                               GeneralAddressListCountry.erase(intValueSeek);
+                               GeneralAddressListType.erase(intValueSeek);
+                               GeneralAddressListTokens.erase(intValueSeek);
+                               GeneralAddressList.insert(std::make_pair(intValueSeek, AddressStreet));
+                               GeneralAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality));
+                               GeneralAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion));
+                               GeneralAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode));
+                               GeneralAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry));
+                               GeneralAddressListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeAddresses->InsertItem(coldata);
+                               lboHomeAddresses->SetItem(ListCtrlIndex, 1, AddressLocality);
+                               lboHomeAddresses->SetItem(ListCtrlIndex, 2, AddressRegion);
+                               lboHomeAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeAddresses->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeAddressList.erase(intValueSeek);
+                               HomeAddressListTown.erase(intValueSeek);
+                               HomeAddressListCounty.erase(intValueSeek);
+                               HomeAddressListPostCode.erase(intValueSeek);
+                               HomeAddressListCountry.erase(intValueSeek);
+                               HomeAddressListType.erase(intValueSeek);
+                               HomeAddressListTokens.erase(intValueSeek);                              
+                               HomeAddressList.insert(std::make_pair(intValueSeek, AddressStreet));
+                               HomeAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality));
+                               HomeAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion));
+                               HomeAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode));
+                               HomeAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry));
+                               HomeAddressListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessAddresses->InsertItem(coldata);
+                               lboBusinessAddresses->SetItem(ListCtrlIndex, 1, AddressLocality);
+                               lboBusinessAddresses->SetItem(ListCtrlIndex, 2, AddressRegion);
+                               lboBusinessAddresses->SetItem(ListCtrlIndex, 3, AddressPostalCode);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessAddresses->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               BusinessAddressList.erase(intValueSeek);
+                               BusinessAddressListTown.erase(intValueSeek);
+                               BusinessAddressListCounty.erase(intValueSeek);
+                               BusinessAddressListPostCode.erase(intValueSeek);
+                               BusinessAddressListCountry.erase(intValueSeek);
+                               BusinessAddressListType.erase(intValueSeek);
+                               BusinessAddressListTokens.erase(intValueSeek);
+                               BusinessAddressList.insert(std::make_pair(intValueSeek, AddressStreet));
+                               BusinessAddressListTown.insert(std::make_pair(intValueSeek, AddressLocality));
+                               BusinessAddressListCounty.insert(std::make_pair(intValueSeek, AddressRegion));
+                               BusinessAddressListPostCode.insert(std::make_pair(intValueSeek, AddressPostalCode));
+                               BusinessAddressListCountry.insert(std::make_pair(intValueSeek, AddressCountry));
+                               BusinessAddressListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessAddressListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                         
+                       
+                       }
+                       
+                       ADRCount++;
+                       intValueSeek++;
+               
+               } else if (wxSProperty == wxT("EMAIL")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;
+                       std::map<int, int>::iterator SPoint;
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString AddressLabel;
+                       wxString AddressLang;
+                       wxString AddressAltID;
+                       wxString AddressPID;
+                       wxString AddressTokens;
+                       wxString AddressGeo;
+                       wxString AddressTimezone;
+                       wxString AddressType;
+                       wxString AddressMediatype;
+                       wxString AddressPOBox;
+                       wxString AddressExtended;
+                       wxString AddressStreet;
+                       wxString AddressLocality;
+                       wxString AddressCity;
+                       wxString AddressRegion;
+                       wxString AddressPostalCode;
+                       wxString AddressCountry;
+                       bool AfterFirstProperty = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitSeek = 0;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitPoint = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 6;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralEmailList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralEmailListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralEmailListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralEmailListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralEmailListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeEmailList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeEmailListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeEmailListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeEmailListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeEmailListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessEmailList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessEmailListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessEmailListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessEmailListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessEmailListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 6;                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               // Process properties.
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralEmailListAltID.erase(intValueSeek); GeneralEmailListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeEmailListAltID.erase(intValueSeek); HomeEmailListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessEmailListAltID.erase(intValueSeek); BusinessEmailListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralEmailListPID.erase(intValueSeek); GeneralEmailListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeEmailListPID.erase(intValueSeek); HomeEmailListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessEmailListPID.erase(intValueSeek); BusinessEmailListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                                       
+                                       if (intPref > 0 && intPref < 101){
+                               
+                                               if (intType == 0){ GeneralEmailListPref.erase(intValueSeek); GeneralEmailListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 1){ HomeEmailListPref.erase(intValueSeek); HomeEmailListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 2){ BusinessEmailListPref.erase(intValueSeek); BusinessEmailListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               
+                                       }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       } 
+               
+                       //std::map<int, int>::iterator SLiter;
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;       
+                       
+                       // Add the data to the General/Home/Work email variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+                       
+                       if (intType == 0){
+                       
+
+                       
+                               ListCtrlIndex = lboEmails->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboEmails->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralEmailList.erase(intValueSeek);
+                               GeneralEmailListType.erase(intValueSeek);
+                               GeneralEmailListTokens.erase(intValueSeek);
+                               GeneralEmailList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralEmailListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralEmailListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeEmails->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeEmails->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeEmailList.erase(intValueSeek);
+                               HomeEmailListType.erase(intValueSeek);
+                               HomeEmailListTokens.erase(intValueSeek);                                
+                               HomeEmailList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeEmailListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeEmailListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessEmail->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessEmail->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessEmailList.erase(intValueSeek);
+                               BusinessEmailListType.erase(intValueSeek);
+                               BusinessEmailListTokens.erase(intValueSeek);                            
+                               BusinessEmailList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessEmailListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessEmailListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                           
+                       
+                       }
+                       
+                       EmailCount++;
+                       intValueSeek++;         
+               
+               } else if (wxSProperty == wxT("IMPP")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;
+                       std::map<int, int>::iterator SPoint;
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString IMPPType;
+                       wxString IMPPAddress;
+                       bool AfterFirstProperty = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitSeek = 0;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;
+                       int intType = 0;
+                       int intSplitPoint = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 5;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralIMList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralIMListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralIMListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralIMListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralIMListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralIMListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeIMList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeIMListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeIMListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeIMListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeIMListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeIMListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessIMList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessIMListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessIMListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessIMListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessIMListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessIMListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 5;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralIMListAltID.erase(intValueSeek); GeneralIMListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeIMListAltID.erase(intValueSeek); HomeIMListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessIMListAltID.erase(intValueSeek); BusinessIMListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralIMListPID.erase(intValueSeek); GeneralIMListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeIMListPID.erase(intValueSeek); HomeIMListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessIMListPID.erase(intValueSeek); BusinessIMListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                                       
+                                       if (intPref > 0 && intPref < 101){
+                               
+                                               if (intType == 0){ GeneralIMListPref.erase(intValueSeek); GeneralIMListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 1){ HomeIMListPref.erase(intValueSeek); HomeIMListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 2){ BusinessIMListPref.erase(intValueSeek); BusinessIMListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               
+                                       }
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+
+                                       if (intType == 0){ GeneralIMListMediatype.erase(intValueSeek); GeneralIMListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeIMListMediatype.erase(intValueSeek); HomeIMListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessIMListMediatype.erase(intValueSeek); BusinessIMListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }                       
+                       
+                       // Split the address. 
+               
+                       //std::map<int, int>::iterator SLiter;
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(":") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 1){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       // Split the data into several parts.                   
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               if (intiter->first == 1){
+                               
+                                       // Deal with PO Box.
+                                       
+                                       SLiter = SplitLength.find(1);
+                                                                               
+                                       //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE));
+                                       IMPPType = wxSPropertySeg2.Mid(0, SLiter->second);
+                                       intPrevValue = intiter->second;
+                                       
+                                       IMPPAddress = wxSPropertySeg2.Mid(intPrevValue);                                        
+                               
+                               }
+                       
+                       }       
+                       
+                       // Check what IM type it is.
+                       
+                       if (IMPPType == wxT("aim")){
+               
+                               IMPPType = wxT("AIM");
+               
+                       } else if (IMPPType == wxT("gg")){
+               
+                               IMPPType = wxT("Gadu-Gadu");
+               
+                       } else if (IMPPType == wxT("icq")){
+               
+                               IMPPType = wxT("ICQ");
+               
+                       } else if (IMPPType == wxT("skype")){
+               
+                               IMPPType = wxT("Skype");
+               
+                       } else if (IMPPType == wxT("xmpp")){
+               
+                               IMPPType = wxT("XMPP");
+               
+                       } else if (IMPPType == wxT("yahoo")){
+               
+                               IMPPType = wxT("Yahoo");
+               
+                       } else {
+               
+                               // Do nothing.
+               
+                       }                       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(IMPPType);
+
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboIM->InsertItem(coldata);
+                               
+                               lboIM->SetItem(ListCtrlIndex, 1, IMPPAddress);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }                               
+                               
+                               GeneralIMList.erase(intValueSeek);
+                               GeneralIMListType.erase(intValueSeek);
+                               GeneralIMListTokens.erase(intValueSeek);
+                               GeneralIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralIMListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeIM->InsertItem(coldata);
+
+                               lboHomeIM->SetItem(ListCtrlIndex, 1, IMPPAddress);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeIMList.erase(intValueSeek);
+                               HomeIMListType.erase(intValueSeek);
+                               HomeIMListTokens.erase(intValueSeek);                           
+                               HomeIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeIMListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessIM->InsertItem(coldata);
+
+                               lboBusinessIM->SetItem(ListCtrlIndex, 1, IMPPAddress);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessIM->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessIMList.erase(intValueSeek);
+                               BusinessIMListType.erase(intValueSeek);
+                               BusinessIMListTokens.erase(intValueSeek);                               
+                               BusinessIMList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessIMListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessIMListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                              
+                       
+                       }
+                       
+                       IMPPCount++;
+                       intValueSeek++; 
+               
+               } else if (wxSProperty == wxT("TEL")){
+               
+                       // Check TEL and make sure it is functioning properly.
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int> TypeSplitPoints;
+                       std::map<int, int> TypeSplitLength;
+                       std::map<int, int>::iterator SLiter;
+                       std::map<int, int>::iterator SPoint;                    
+                       std::map<int, int>::iterator TSLiter;
+                       std::map<int, int>::iterator TSPoint;
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString TelType;
+                       wxString TelNumber;
+                       wxString TelTypeUI;
+                       wxString TelTypeDetail;
+                       bool AfterFirstProperty = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitSeek = 0;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitPoint = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 4;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       // Process each value in type and translate each
+                                       // part.
+                               
+                                       // Strip out the quotes if they are there.
+                               
+                                       int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                                       if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                               PropertyValue.Trim();
+                                               PropertyValue.RemoveLast();
+                                       
+                                       }                               
+                               
+                                       if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                               PropertyValue.Remove(0, 1);
+                                       
+                                       }
+                                       
+                                       TelTypeDetail = PropertyValue;
+                                       
+                                       intSplitSize = 0;
+                                       intSplitsFound = 0;
+                                       intSplitPoint = 0;
+                                       
+                                       for (int i = 0; i <= intPropertyValueLen; i++){
+                       
+                                               intSplitSize++;
+                       
+                                               if (PropertyValue.Mid(i, 1) == wxT(",") && PropertyValue.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                                       if (intSplitsFound == 0){
+
+                                                               TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
+                                                               TypeSplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                                       } else {
+                                       
+                                                               TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
+                                                               TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));
+                                       
+                                                       }                       
+
+                                                       intSplitsFound++;
+                                                       i++;
+                                                       intSplitPoint = i;
+                                                       intSplitSize = 0;
+                       
+                                               }
+                       
+                                       }
+                                       
+                                       TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
+                                       TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));                                                           
+                               
+                                       int intTypeSeek = 0;
+                               
+                                       for (std::map<int, int>::iterator typeiter = TypeSplitPoints.begin(); 
+                                       typeiter != TypeSplitPoints.end(); ++typeiter){
+                                       
+                                               wxString TypePropertyName;
+                                               
+                                               TSLiter = TypeSplitLength.find(typeiter->first);
+                                               
+                                               TypePropertyName = PropertyValue.Mid(typeiter->second, TSLiter->second);
+                                               
+                                               if (intTypeSeek == 0){
+                                               
+                                               
+                                               } else {
+                                                                                               
+                                                       TelTypeUI.Append(wxT(","));                                                     
+                                               
+                                               }
+                                       
+                                               if (TypePropertyName == wxT("home")){
+                                               
+                                                       intType = 1;
+                                               
+                                               } else if (TypePropertyName == wxT("work")){
+                                               
+                                                       intType = 2;
+                                               
+                                               }
+                                               
+                                               
+                                               if (TypePropertyName == wxT("text")){
+                                               
+                                                       TelTypeUI.Append(_("text"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("voice")){
+                                               
+                                                       TelTypeUI.Append(_("voice"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("fax")){
+                                               
+                                                       TelTypeUI.Append(_("fax"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("cell")){
+                                               
+                                                       TelTypeUI.Append(_("mobile"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("video")){
+                                               
+                                                       TelTypeUI.Append(_("video"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("pager")){
+                                               
+                                                       TelTypeUI.Append(_("pager"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("textphone")){
+                                               
+                                                       TelTypeUI.Append(_("textphone"));
+                                                       intTypeSeek++;
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                               
+                               
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralTelephoneList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTelephoneListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTelephoneListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTelephoneListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralTelephoneListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeTelephoneList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTelephoneListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTelephoneListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTelephoneListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeTelephoneListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessTelephoneList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTelephoneListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTelephoneListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTelephoneListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessTelephoneListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 4;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               // Process properties.
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralTelephoneListAltID.erase(intValueSeek); GeneralTelephoneListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeTelephoneListAltID.erase(intValueSeek); HomeTelephoneListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessTelephoneListAltID.erase(intValueSeek); BusinessTelephoneListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralTelephoneListPID.erase(intValueSeek); GeneralTelephoneListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeTelephoneListPID.erase(intValueSeek); HomeTelephoneListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessTelephoneListPID.erase(intValueSeek); BusinessTelephoneListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                                       
+                                       if (intPref > 0 && intPref < 101){
+                               
+                                               if (intType == 0){ GeneralTelephoneListPref.erase(intValueSeek); GeneralTelephoneListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 1){ HomeTelephoneListPref.erase(intValueSeek); HomeTelephoneListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 2){ BusinessTelephoneListPref.erase(intValueSeek); BusinessTelephoneListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               
+                                       }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }                       
+                       
+                       // Split the address. 
+               
+                       //std::map<int, int>::iterator SLiter;
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(":") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 1){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       // Split the data into several parts.                   
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               if (intiter->first == 1){
+                               
+                                       // Deal with PO Box.
+                                       
+                                       SLiter = SplitLength.find(1);
+                                                                               
+                                       //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE));
+                                       TelType = wxSPropertySeg2.Mid(0, SLiter->second);
+                                       intPrevValue = intiter->second;
+                                       
+                                       TelNumber = wxSPropertySeg2.Mid(intPrevValue);                                  
+                               
+                               }
+                       
+                       }                       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&PropertyValue);
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(TelNumber);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboTelephone->InsertItem(coldata);
+                               
+                               lboTelephone->SetItem(ListCtrlIndex, 1, TelTypeUI);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboTelephone->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }                               
+                               
+                               GeneralTelephoneList.erase(intValueSeek);
+                               GeneralTelephoneListType.erase(intValueSeek);
+                               GeneralTelephoneListTokens.erase(intValueSeek);
+                               GeneralTelephoneList.insert(std::make_pair(intValueSeek, TelNumber));
+                               GeneralTelephoneListType.insert(std::make_pair(intValueSeek, TelTypeDetail));
+                               GeneralTelephoneListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeTelephone->InsertItem(coldata);
+
+                               lboHomeTelephone->SetItem(ListCtrlIndex, 1, TelTypeUI);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeTelephone->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeTelephoneList.erase(intValueSeek);
+                               HomeTelephoneListType.erase(intValueSeek);
+                               HomeTelephoneListTokens.erase(intValueSeek);                            
+                               HomeTelephoneList.insert(std::make_pair(intValueSeek, TelNumber));
+                               HomeTelephoneListType.insert(std::make_pair(intValueSeek, TelTypeDetail));
+                               HomeTelephoneListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessTelephone->InsertItem(coldata);
+
+                               lboBusinessTelephone->SetItem(ListCtrlIndex, 1, TelTypeUI);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessTelephone->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessTelephoneList.erase(intValueSeek);
+                               BusinessTelephoneListType.erase(intValueSeek);
+                               BusinessTelephoneListTokens.erase(intValueSeek);                                
+                               BusinessTelephoneList.insert(std::make_pair(intValueSeek, TelNumber));
+                               BusinessTelephoneListType.insert(std::make_pair(intValueSeek, TelTypeDetail));
+                               BusinessTelephoneListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                               
+                       
+                       }
+                       
+                       TelCount++;
+                       intValueSeek++;
+               
+               } else if (wxSProperty == wxT("LANG")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 5;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralLanguageList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralLanguageListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralLanguageListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralLanguageListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralLanguageListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeLanguageList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeLanguageListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeLanguageListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeLanguageListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeLanguageListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessLanguageList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessLanguageListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessLanguageListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessLanguageListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessLanguageListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 5;                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);                          
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralLanguageListAltID.erase(intValueSeek); GeneralLanguageListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeLanguageListAltID.erase(intValueSeek); HomeLanguageListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessLanguageListAltID.erase(intValueSeek); BusinessLanguageListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralLanguageListPID.erase(intValueSeek); GeneralLanguageListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeLanguageListPID.erase(intValueSeek); HomeLanguageListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessLanguageListPID.erase(intValueSeek); BusinessLanguageListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ GeneralLanguageListPref.erase(intValueSeek); GeneralLanguageListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ HomeLanguageListPref.erase(intValueSeek); HomeLanguageListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ BusinessLanguageListPref.erase(intValueSeek); BusinessLanguageListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboLanguages->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboLanguages->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralLanguageList.erase(intValueSeek);
+                               GeneralLanguageListType.erase(intValueSeek);
+                               GeneralLanguageListTokens.erase(intValueSeek);
+                               GeneralLanguageList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralLanguageListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralLanguageListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeLanguages->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeLanguages->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeLanguageList.erase(intValueSeek);
+                               HomeLanguageListType.erase(intValueSeek);
+                               HomeLanguageListTokens.erase(intValueSeek);                             
+                               HomeLanguageList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeLanguageListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeLanguageListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessLanguages->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessLanguages->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessLanguageList.erase(intValueSeek);
+                               BusinessLanguageListType.erase(intValueSeek);
+                               BusinessLanguageListTokens.erase(intValueSeek);                         
+                               BusinessLanguageList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessLanguageListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessLanguageListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                                
+                       
+                       }
+                       
+                       LangCount++;
+                       intValueSeek++;
+               
+               } else if (wxSProperty == wxT("GEO")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString GeoType;
+                       wxString GeoData;                       
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 4;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralGeographyList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralGeographyListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralGeographyListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralGeographyListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralGeographyListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeGeographyList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeGeographyListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeGeographyListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeGeographyListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeGeographyListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessGeographyList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessGeographyListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessGeographyListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessGeographyListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessGeographyListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 4;                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }       
+
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralGeographyListAltID.erase(intValueSeek); GeneralGeographyListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeGeographyListAltID.erase(intValueSeek); HomeGeographyListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessGeographyListAltID.erase(intValueSeek); BusinessGeographyListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralGeographyListPID.erase(intValueSeek); GeneralGeographyListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeGeographyListPID.erase(intValueSeek); HomeGeographyListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessGeographyListPID.erase(intValueSeek); BusinessGeographyListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       if (intType == 0){ GeneralGeographyListMediatype.erase(intValueSeek); GeneralGeographyListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeGeographyListMediatype.erase(intValueSeek); HomeGeographyListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessGeographyListMediatype.erase(intValueSeek); BusinessGeographyListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intPref > 0 && intPref < 101){
+                               
+                                               if (intType == 0){ GeneralGeographyListPref.erase(intValueSeek); GeneralGeographyListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 1){ HomeGeographyListPref.erase(intValueSeek); HomeGeographyListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                               else if (intType == 2){ BusinessGeographyListPref.erase(intValueSeek); BusinessGeographyListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       
+                                       }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }                                       
+                       
+                       // Split the address. 
+               
+                       //std::map<int, int>::iterator SLiter;
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(":") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 1){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               if (intiter->first == 1){
+                               
+                                       // Deal with PO Box.
+                                       
+                                       SLiter = SplitLength.find(1);
+                                                                               
+                                       //txtSurname->SetValue(ContactData.Convert(wxSPropertySeg2.Mid(0, SLiter->second), TRUE));
+                                       GeoType = wxSPropertySeg2.Mid(0, SLiter->second);
+                                       intPrevValue = intiter->second;
+                                       
+                                       GeoData = wxSPropertySeg2.Mid(intPrevValue);                                    
+                               
+                               }
+                       
+                       }
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+
+                       
+                       if (intType == 0){
+                       
+                               /*
+                       
+                               ListCtrlIndex = lboTimezones->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               */
+                               /*
+                               txtGeopositioning->SetValue(GeoData);
+                               */
+                               
+                               GeneralGeographyList.erase(intValueSeek);
+                               GeneralGeographyListType.erase(intValueSeek);
+                               GeneralGeographyListTokens.erase(intValueSeek);
+                               GeneralGeographyList.insert(std::make_pair(intValueSeek, GeoData));
+                               GeneralGeographyListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralGeographyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                               
+                               CaptureString(&GeoData, FALSE);
+                               coldata.SetText(GeoData);
+                               ListCtrlIndex = lboGeoposition->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboGeoposition->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                       
+                       } else if (intType == 1){                       
+                       
+                               /*
+                       
+                               ListCtrlIndex = lboHomeTimezones->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               */
+                               
+                               /*
+                               txtHomeGeopositioning->SetValue(GeoData);
+                               */
+
+                               HomeGeographyList.erase(intValueSeek);
+                               HomeGeographyListType.erase(intValueSeek);
+                               HomeGeographyListTokens.erase(intValueSeek);                            
+                               HomeGeographyList.insert(std::make_pair(intValueSeek, GeoData));
+                               HomeGeographyListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeGeographyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                               
+                               CaptureString(&GeoData, FALSE);
+                               coldata.SetText(GeoData);
+                               ListCtrlIndex = lboHomeGeoposition->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeGeoposition->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessGeoposition->InsertItem(coldata);                    
+                       
+                               /*
+                       
+                               ListCtrlIndex = lboBusinessTimezones->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessTimezones->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               */
+                               
+                               /*
+                               txtBusinessGeopositioning->SetValue(GeoData);
+                               */
+
+                               BusinessGeographyList.erase(intValueSeek);
+                               BusinessGeographyListType.erase(intValueSeek);
+                               BusinessGeographyListTokens.erase(intValueSeek);                                
+                               BusinessGeographyList.insert(std::make_pair(intValueSeek, GeoData));
+                               BusinessGeographyListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessGeographyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                               
+                               CaptureString(&GeoData, FALSE);
+                               coldata.SetText(GeoData);
+                               ListCtrlIndex = lboBusinessGeoposition->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessGeoposition->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                       
+                       }
+                       
+                       GeoCount++;
+                       intValueSeek++;         
+               
+               } else if (wxSProperty == wxT("RELATED")){
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString RelatedType;
+                       wxString RelatedTypeOriginal;                   
+                       wxString RelatedName;           
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 9;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 8;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process these.
+                               
+                               RelatedTypeOriginal = PropertyValue;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("contact")){
+               
+                                               RelatedType = _("Contact");
+               
+                                       } else if (PropertyValue == wxT("acquaintance")){
+               
+                                               RelatedType = _("Acquaintance");
+               
+                                       } else if (PropertyValue == wxT("friend")){
+               
+                                               RelatedType = _("Friend");
+               
+                                       } else if (PropertyValue == wxT("met")){
+               
+                                               RelatedType = _("Met");
+               
+                                       } else if (PropertyValue == wxT("co-worker")){
+               
+                                               RelatedType = _("Co-worker");
+               
+                                       } else if (PropertyValue == wxT("colleague")){
+               
+                                               RelatedType = _("Colleague");
+               
+                                       } else if (PropertyValue == wxT("co-resident")){
+               
+                                               RelatedType = _("Co-resident");
+               
+                                       } else if (PropertyValue == wxT("neighbor")){
+               
+                                               RelatedType = _("Neighbour");
+               
+                                       } else if (PropertyValue == wxT("child")){
+               
+                                               RelatedType = _("Child");
+               
+                                       } else if (PropertyValue == wxT("parent")){
+               
+                                               RelatedType = _("Parent");
+               
+                                       } else if (PropertyValue == wxT("sibling")){
+               
+                                               RelatedType = _("Sibling");
+               
+                                       } else if (PropertyValue == wxT("spouse")){
+               
+                                               RelatedType = _("Spouse");
+               
+                                       } else if (PropertyValue == wxT("kin")){
+               
+                                               RelatedType = _("Kin");
+               
+                                       } else if (PropertyValue == wxT("muse")){
+               
+                                               RelatedType = _("Muse");
+               
+                                       } else if (PropertyValue == wxT("crush")){
+               
+                                               RelatedType = _("Crush");
+               
+                                       } else if (PropertyValue == wxT("date")){
+               
+                                               RelatedType = _("Date");
+               
+                                       } else if (PropertyValue == wxT("sweetheart")){
+               
+                                               RelatedType = _("Sweetheart");
+               
+                                       } else if (PropertyValue == wxT("me")){
+               
+                                               RelatedType = _("Me");
+               
+                                       } else if (PropertyValue == wxT("agent")){
+               
+                                               RelatedType = _("Agent");
+               
+                                       } else if (PropertyValue == wxT("emergency")){
+               
+                                               RelatedType = _("Emergency");
+               
+                                       } else {
+               
+                                               RelatedType = PropertyValue;
+               
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       intPrevValue = 8;                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);                  
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       GeneralRelatedListAltID.erase(intValueSeek);
+                                       GeneralRelatedListAltID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       GeneralRelatedListPID.erase(intValueSeek);
+                                       GeneralRelatedListPID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intPref > 0 && intPref < 101){
+                               
+                                               GeneralRelatedListPref.erase(intValueSeek);
+                                               GeneralRelatedListPref.insert(std::make_pair(intValueSeek, intPref));
+
+                                       
+                                       }
+                               
+                               } else if (PropertyName == wxT("LANGUAGE")){
+                               
+                                       GeneralRelatedListLanguage.erase(intValueSeek);
+                                       GeneralRelatedListLanguage.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }                                       
+                       
+                       // Split the address. 
+               
+                       //std::map<int, int>::iterator SLiter;
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(RelatedType);
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+
+                       ListCtrlIndex = lboRelated->InsertItem(coldata);
+
+                       lboRelated->SetItem(ListCtrlIndex, 1, wxSPropertySeg2);
+
+                       if (intPref > 0 && intPref < 101){
+                               
+                               lboRelated->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                       }
+                               
+                       GeneralRelatedList.erase(intValueSeek);
+                       GeneralRelatedListRelType.erase(intValueSeek);
+                       GeneralRelatedListType.erase(intValueSeek);
+                       GeneralRelatedListTokens.erase(intValueSeek);
+                       GeneralRelatedList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                       GeneralRelatedListRelType.insert(std::make_pair(intValueSeek, RelatedTypeOriginal));                    
+                       GeneralRelatedListType.insert(std::make_pair(intValueSeek, RelatedTypeOriginal));
+                       GeneralRelatedListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       RelatedCount++;
+                       intValueSeek++;                 
+               
+               } else if (wxSProperty == wxT("URL")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 4;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralWebsiteList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralWebsiteListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralWebsiteListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralWebsiteListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralWebsiteListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeWebsiteList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeWebsiteListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeWebsiteListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeWebsiteListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeWebsiteListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessWebsiteList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessWebsiteListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessWebsiteListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessWebsiteListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessWebsiteListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 4;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);          
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralWebsiteListAltID.erase(intValueSeek); GeneralWebsiteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeWebsiteListAltID.erase(intValueSeek); HomeWebsiteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessWebsiteListAltID.erase(intValueSeek); BusinessWebsiteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralWebsiteListPID.erase(intValueSeek); GeneralWebsiteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeWebsiteListPID.erase(intValueSeek); HomeWebsiteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessWebsiteListPID.erase(intValueSeek); BusinessWebsiteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ GeneralWebsiteListPref.erase(intValueSeek); GeneralWebsiteListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ HomeWebsiteListPref.erase(intValueSeek); HomeWebsiteListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ BusinessWebsiteListPref.erase(intValueSeek); BusinessWebsiteListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       if (intType == 0){ GeneralWebsiteListMediatype.erase(intValueSeek); GeneralWebsiteListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeWebsiteListMediatype.erase(intValueSeek); HomeWebsiteListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessWebsiteListMediatype.erase(intValueSeek); BusinessWebsiteListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboWebsites->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboWebsites->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralWebsiteList.erase(intValueSeek);
+                               GeneralWebsiteListType.erase(intValueSeek);
+                               GeneralWebsiteListTokens.erase(intValueSeek);
+                               GeneralWebsiteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralWebsiteListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralWebsiteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeWebsites->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeWebsites->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeWebsiteList.erase(intValueSeek);
+                               HomeWebsiteListType.erase(intValueSeek);
+                               HomeWebsiteListTokens.erase(intValueSeek);                              
+                               HomeWebsiteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeWebsiteListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeWebsiteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessWebsites->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessWebsites->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessWebsiteList.erase(intValueSeek);
+                               BusinessWebsiteListType.erase(intValueSeek);
+                               BusinessWebsiteListTokens.erase(intValueSeek);                          
+                               BusinessWebsiteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessWebsiteListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessWebsiteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                         
+                       
+                       }
+                       
+                       URLCount++;
+                       intValueSeek++;
+               
+               } else if (wxSProperty == wxT("TITLE")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 6;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralTitleList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTitleListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTitleListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTitleListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralTitleListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTitleListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeTitleList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTitleListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTitleListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTitleListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeTitleListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeTitleListLanguage.insert(std::make_pair(intValueSeek, wxT("")));                            
+                       
+                       } else if (intType == 2){
+
+                               BusinessTitleList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTitleListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTitleListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTitleListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessTitleListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessTitleListLanguage.insert(std::make_pair(intValueSeek, wxT("")));                                
+                       
+                       }
+                       
+                       intPrevValue = 6;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralTitleListAltID.erase(intValueSeek); GeneralTitleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeTitleListAltID.erase(intValueSeek); HomeTitleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessTitleListAltID.erase(intValueSeek); BusinessTitleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralTitleListPID.erase(intValueSeek); GeneralTitleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeTitleListPID.erase(intValueSeek); HomeTitleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessTitleListPID.erase(intValueSeek); BusinessTitleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ GeneralTitleListPref.erase(intValueSeek); GeneralTitleListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ HomeTitleListPref.erase(intValueSeek); HomeTitleListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ BusinessTitleListPref.erase(intValueSeek); BusinessTitleListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("LANGUAGE")){
+                               
+                                       if (intType == 0){ GeneralTitleListLanguage.erase(intValueSeek); GeneralTitleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeTitleListLanguage.erase(intValueSeek); HomeTitleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessTitleListLanguage.erase(intValueSeek); BusinessTitleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboTitles->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboTitles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralTitleList.erase(intValueSeek);
+                               GeneralTitleListType.erase(intValueSeek);
+                               GeneralTitleListTokens.erase(intValueSeek);
+                               GeneralTitleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralTitleListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralTitleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeTitles->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeTitles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeTitleList.erase(intValueSeek);
+                               HomeTitleListType.erase(intValueSeek);
+                               HomeTitleListTokens.erase(intValueSeek);                                
+                               HomeTitleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeTitleListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeTitleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessTitles->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessTitles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessTitleList.erase(intValueSeek);
+                               BusinessTitleListType.erase(intValueSeek);
+                               BusinessTitleListTokens.erase(intValueSeek);                            
+                               BusinessTitleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessTitleListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessTitleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                           
+                       
+                       }
+                       
+                       TitleCount++;
+                       intValueSeek++;
+                       
+               } else if (wxSProperty == wxT("ROLE")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 5;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralRoleList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralRoleListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralRoleListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralRoleListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralRoleListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralRoleListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeRoleList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeRoleListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeRoleListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeRoleListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeRoleListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeRoleListLanguage.insert(std::make_pair(intValueSeek, wxT("")));                             
+                       
+                       } else if (intType == 2){
+
+                               BusinessRoleList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessRoleListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessRoleListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessRoleListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessRoleListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessRoleListLanguage.insert(std::make_pair(intValueSeek, wxT("")));                         
+                       
+                       }
+                       
+                       intPrevValue = 5;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralRoleListAltID.erase(intValueSeek); GeneralRoleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeRoleListAltID.erase(intValueSeek); HomeRoleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessRoleListAltID.erase(intValueSeek); BusinessRoleListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralRoleListPID.erase(intValueSeek); GeneralRoleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeRoleListPID.erase(intValueSeek); HomeRoleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessRoleListPID.erase(intValueSeek); BusinessRoleListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ GeneralRoleListPref.erase(intValueSeek); GeneralRoleListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ HomeRoleListPref.erase(intValueSeek); HomeRoleListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ BusinessRoleListPref.erase(intValueSeek); BusinessRoleListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("LANGUAGE")){
+                               
+                                       if (intType == 0){ GeneralRoleListLanguage.erase(intValueSeek); GeneralRoleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeRoleListLanguage.erase(intValueSeek); HomeRoleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessRoleListLanguage.erase(intValueSeek); BusinessRoleListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboRoles->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboRoles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralRoleList.erase(intValueSeek);
+                               GeneralRoleListType.erase(intValueSeek);
+                               GeneralRoleListTokens.erase(intValueSeek);
+                               GeneralRoleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralRoleListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralRoleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeRoles->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeRoles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeRoleList.erase(intValueSeek);
+                               HomeRoleListType.erase(intValueSeek);
+                               HomeRoleListTokens.erase(intValueSeek);                         
+                               HomeRoleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeRoleListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeRoleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessRoles->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessRoles->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessRoleList.erase(intValueSeek);
+                               BusinessRoleListType.erase(intValueSeek);
+                               BusinessRoleListTokens.erase(intValueSeek);                             
+                               BusinessRoleList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessRoleListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessRoleListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                            
+                       
+                       }
+                       
+                       RoleCount++;
+                       intValueSeek++;
+                       
+               } else if (wxSProperty == wxT("ORG")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 4;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralOrganisationsList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralOrganisationsListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralOrganisationsListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralOrganisationsListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralOrganisationsListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralOrganisationsListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralOrganisationsListSortAs.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeOrganisationsList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeOrganisationsListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeOrganisationsListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeOrganisationsListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeOrganisationsListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeOrganisationsListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeOrganisationsListSortAs.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessOrganisationsList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessOrganisationsListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessOrganisationsListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessOrganisationsListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessOrganisationsListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessOrganisationsListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessOrganisationsListSortAs.insert(std::make_pair(intValueSeek, wxT("")));                          
+                       
+                       }
+                       
+                       intPrevValue = 4;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralOrganisationsListAltID.erase(intValueSeek); GeneralOrganisationsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeOrganisationsListAltID.erase(intValueSeek); HomeOrganisationsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessOrganisationsListAltID.erase(intValueSeek); BusinessOrganisationsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralOrganisationsListPID.erase(intValueSeek); GeneralOrganisationsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeOrganisationsListPID.erase(intValueSeek); HomeOrganisationsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessOrganisationsListPID.erase(intValueSeek); BusinessOrganisationsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ GeneralOrganisationsListPref.erase(intValueSeek); GeneralOrganisationsListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ HomeOrganisationsListPref.erase(intValueSeek); HomeOrganisationsListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ BusinessOrganisationsListPref.erase(intValueSeek); BusinessOrganisationsListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("LANGUAGE")){
+                               
+                                       if (intType == 0){ GeneralOrganisationsListLanguage.erase(intValueSeek); GeneralOrganisationsListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeOrganisationsListLanguage.erase(intValueSeek); HomeOrganisationsListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessOrganisationsListLanguage.erase(intValueSeek); BusinessOrganisationsListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("SORT-AS")){
+                               
+                                       if (intType == 0){ GeneralOrganisationsListSortAs.erase(intValueSeek); GeneralOrganisationsListSortAs.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeOrganisationsListSortAs.erase(intValueSeek); HomeOrganisationsListSortAs.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessOrganisationsListSortAs.erase(intValueSeek); BusinessOrganisationsListSortAs.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }                       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+                       
+                       if (intType == 0){
+                       
+                               ListCtrlIndex = lboOrganisations->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboOrganisations->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               GeneralOrganisationsList.erase(intValueSeek);
+                               GeneralOrganisationsListType.erase(intValueSeek);
+                               GeneralOrganisationsListTokens.erase(intValueSeek);
+                               GeneralOrganisationsList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralOrganisationsListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralOrganisationsListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 1){ 
+                       
+                               ListCtrlIndex = lboHomeOrganisations->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeOrganisations->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               HomeOrganisationsList.erase(intValueSeek);
+                               HomeOrganisationsListType.erase(intValueSeek);
+                               HomeOrganisationsListTokens.erase(intValueSeek);                                
+                               HomeOrganisationsList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeOrganisationsListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeOrganisationsListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       } else if (intType == 2){ 
+                       
+                               ListCtrlIndex = lboBusinessOrganisations->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessOrganisations->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+
+                               BusinessOrganisationsList.erase(intValueSeek);
+                               BusinessOrganisationsListType.erase(intValueSeek);
+                               BusinessOrganisationsListTokens.erase(intValueSeek);                            
+                               BusinessOrganisationsList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessOrganisationsListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessOrganisationsListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                           
+                       
+                       }
+                       
+                       OrgCount++;
+                       intValueSeek++;
+                       
+               } else if (wxSProperty == wxT("NOTE")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 5;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       if (intType == 0){
+                       
+                               GeneralNoteList.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNoteListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNoteListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNoteListPref.insert(std::make_pair(intValueSeek, 0));
+                               GeneralNoteListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNoteListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       } else if (intType == 1){
+                       
+                               HomeNoteList.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeNoteListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeNoteListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeNoteListPref.insert(std::make_pair(intValueSeek, 0));
+                               HomeNoteListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               HomeNoteListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 2){
+
+                               BusinessNoteList.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessNoteListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessNoteListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessNoteListPref.insert(std::make_pair(intValueSeek, 0));
+                               BusinessNoteListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                               BusinessNoteListLanguage.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       }
+                       
+                       intPrevValue = 5;                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, SLiter->second);
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);                          
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ GeneralNoteListAltID.erase(intValueSeek); GeneralNoteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeNoteListAltID.erase(intValueSeek); HomeNoteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessNoteListAltID.erase(intValueSeek); BusinessNoteListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ GeneralNoteListPID.erase(intValueSeek); GeneralNoteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeNoteListPID.erase(intValueSeek); HomeNoteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessNoteListPID.erase(intValueSeek); BusinessNoteListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ GeneralNoteListPref.erase(intValueSeek); GeneralNoteListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ HomeNoteListPref.erase(intValueSeek); HomeNoteListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ BusinessNoteListPref.erase(intValueSeek); BusinessNoteListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("LANGUAGE")){
+                               
+                                       if (intType == 0){ GeneralNoteListLanguage.erase(intValueSeek); GeneralNoteListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ HomeNoteListLanguage.erase(intValueSeek); HomeNoteListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ BusinessNoteListLanguage.erase(intValueSeek); BusinessNoteListLanguage.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       
+                       if (intType == 0){
+                       
+                               GeneralNoteList.erase(intValueSeek);
+                               GeneralNoteListType.erase(intValueSeek);
+                               GeneralNoteListTokens.erase(intValueSeek);
+                               GeneralNoteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               GeneralNoteListType.insert(std::make_pair(intValueSeek, wxT("")));
+                               GeneralNoteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                     
+                       
+                               //CaptureString(&wxSPropertySeg2, FALSE);
+       
+                               coldata.SetText(wxSPropertySeg2);
+                       
+                               ListCtrlIndex = lboNotes->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboNotes->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                       
+                       } else if (intType == 1){ 
+                       
+                               HomeNoteList.erase(intValueSeek);
+                               HomeNoteListType.erase(intValueSeek);
+                               HomeNoteListTokens.erase(intValueSeek);                         
+                               HomeNoteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               HomeNoteListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               HomeNoteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                        
+                       
+                               CaptureString(&wxSPropertySeg2, FALSE);
+       
+                               coldata.SetText(wxSPropertySeg2);                       
+                       
+                               ListCtrlIndex = lboHomeNotes->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboHomeNotes->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                       
+                       } else if (intType == 2){ 
+                       
+                               BusinessNoteList.erase(intValueSeek);
+                               BusinessNoteListType.erase(intValueSeek);
+                               BusinessNoteListTokens.erase(intValueSeek);                             
+                               BusinessNoteList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               BusinessNoteListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               BusinessNoteListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));                    
+                       
+                               CaptureString(&wxSPropertySeg2, FALSE);
+       
+                               coldata.SetText(wxSPropertySeg2);
+                       
+                               ListCtrlIndex = lboBusinessNotes->InsertItem(coldata);
+
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboBusinessNotes->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }                               
+                       
+                       }
+                       
+                       NoteCount++;
+                       intValueSeek++;
+                       
+               } else if (wxSProperty == wxT("CATEGORIES")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString PropertyType;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 12;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 11;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;
+                                               PropertyType = wxT("work");                             
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                               PropertyType = wxT("home");                                             
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       CategoriesList.insert(std::make_pair(intValueSeek, wxT("")));
+                       CategoriesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       CategoriesListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       CategoriesListPref.insert(std::make_pair(intValueSeek, 0));
+                       CategoriesListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       intPrevValue = 11;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ CategoriesListAltID.erase(intValueSeek); CategoriesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ CategoriesListAltID.erase(intValueSeek); CategoriesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ CategoriesListAltID.erase(intValueSeek); CategoriesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ CategoriesListPID.erase(intValueSeek); CategoriesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ CategoriesListPID.erase(intValueSeek); CategoriesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ CategoriesListPID.erase(intValueSeek); CategoriesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ CategoriesListPref.erase(intValueSeek); CategoriesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ CategoriesListPref.erase(intValueSeek); CategoriesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ CategoriesListPref.erase(intValueSeek); CategoriesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }                       
+                       
+                       // Deal with multiple categories.
+                       
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitSize = 0;
+                       intSplitsFound = 0;
+                       intSplitSeek = 0;
+                       intPrevValue = 0;
+                       intPropertyLen = wxSPropertySeg2.Len(); 
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+                       
+                               if (intSplitSize == 0 && wxSPropertySeg2.Mid(i, 1) == wxT(" ")){
+                       
+                                       continue;
+                               
+                               }
+                       
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(",") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       if (AfterFirstToken == TRUE){
+                       
+                                               SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                               SplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));
+                                       
+                                       } else {
+                                       
+                                               SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));                                 
+                                               AfterFirstToken = TRUE;
+                                       
+                                       }
+
+                                       intSplitsFound++;
+                                       intSplitSeek = i;
+                                       intSplitSize = 0;                                       
+                       
+                               }                       
+                       
+                       }
+                       
+                       SplitPoints.insert(std::make_pair(intSplitsFound, (intSplitSeek + 1)));
+                       SplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));                       
+                       
+                       intPrevValue = 0;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg2.Mid(intPrevValue, (SLiter->second + 1));
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               /*
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }
+                               
+                               */
+                               
+                               // Add the data to the General/Home/Work address variables.
+                       
+                               // Trim any whitespace from the start and end.
+                       
+                               PropertyData = PropertyData.Trim(FALSE);
+                               PropertyData = PropertyData.Trim(TRUE);                         
+                       
+                               ProcessCaptureStrings(&PropertyData);
+                       
+                               wxListItem coldata;
+               
+                               coldata.SetId(intValueSeek);
+                               coldata.SetData(intValueSeek);
+                               coldata.SetText(PropertyData);
+                       
+                               ListCtrlIndex = lboCategories->InsertItem(coldata);
+                               
+                               if (intPref > 0 && intPref < 101){
+                               
+                                       lboCategories->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                                       
+                               }
+                               
+                               CategoriesList.erase(intValueSeek);
+                               CategoriesListType.erase(intValueSeek);
+                               CategoriesListTokens.erase(intValueSeek);
+                               CategoriesList.insert(std::make_pair(intValueSeek, PropertyData));
+                               CategoriesListType.insert(std::make_pair(intValueSeek, PropertyType));
+                               CategoriesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                               CategoryCount++;
+                               intValueSeek++;                         
+                       
+                       }       
+                       
+               } else if (wxSProperty == wxT("PHOTO")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool FirstToken = TRUE;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 6;
+                       
+                       // Look for type before continuing.                     
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       PicturesList.insert(std::make_pair(intValueSeek, ""));
+                       PicturesListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       PicturesListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       PicturesListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       PicturesListPref.insert(std::make_pair(intValueSeek, 0));
+                       PicturesListPicEncType.insert(std::make_pair(intValueSeek, wxT("")));
+                       PicturesListPictureType.insert(std::make_pair(intValueSeek, wxT("")));                  
+                       PicturesListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       PicturesListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       intPrevValue = 6;
+
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);          
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ PicturesListAltID.erase(intValueSeek); PicturesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ PicturesListAltID.erase(intValueSeek); PicturesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ PicturesListAltID.erase(intValueSeek); PicturesListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ PicturesListPID.erase(intValueSeek); PicturesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ PicturesListPID.erase(intValueSeek); PicturesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ PicturesListPID.erase(intValueSeek); PicturesListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ PicturesListPref.erase(intValueSeek); PicturesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ PicturesListPref.erase(intValueSeek); PicturesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ PicturesListPref.erase(intValueSeek); PicturesListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       if (intType == 0){ PicturesListMediatype.erase(intValueSeek); PicturesListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ PicturesListMediatype.erase(intValueSeek); PicturesListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ PicturesListMediatype.erase(intValueSeek); PicturesListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }       
+                       
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;                       
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(";")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 6){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       } else {
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       wxString wxSPhotoURI;
+                       wxString wxSPhotoMIME;
+                       wxString wxSPhotoEncoding;
+                       wxString wxSPhotoData;
+                       std::string base64enc;
+                       
+                       if (intSplitsFound = 0){
+                       
+                       } else {
+                       
+                               std::map<int, int>::iterator striter;
+                       
+                               striter = SplitLength.find(1);
+                       
+                               wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":"));
+                       
+                               while (wSTDataType.HasMoreTokens() == TRUE){
+                               
+                                       wxSPhotoURI = wSTDataType.GetNextToken();
+                                       wxSPhotoMIME = wSTDataType.GetNextToken();
+                                       break;
+                               
+                               }                       
+                       
+                               wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(","));                    
+                       
+                               while (wSTDataInfo.HasMoreTokens() == TRUE){
+                               
+                                       wxSPhotoEncoding = wSTDataInfo.GetNextToken();
+                                       wxSPhotoData = wSTDataInfo.GetNextToken();                                      
+                                       base64enc = wxSPhotoData.mb_str();
+                                       break;
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(_("Picture"));
+                       
+                       ListCtrlIndex = lboPictures->InsertItem(coldata);
+                               
+                       if (intPref > 0 && intPref < 101){
+                               
+                               lboPictures->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                       
+                       }
+                               
+                       PicturesList.erase(intValueSeek);
+                       PicturesListType.erase(intValueSeek);
+                       PicturesListTokens.erase(intValueSeek);
+                       PicturesListPictureType.erase(intValueSeek);
+                       PicturesListPicEncType.erase(intValueSeek);
+                       PicturesList.insert(std::make_pair(intValueSeek, base64enc));
+                       PicturesListPictureType.insert(std::make_pair(intValueSeek, wxSPhotoMIME));
+                       PicturesListPicEncType.insert(std::make_pair(intValueSeek, wxSPhotoEncoding));
+                       
+                       if (intType == 0){
+                       
+                               PicturesListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 1){
+                       
+                               PicturesListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               lboLogos->SetItem(ListCtrlIndex, 1, _("Home"));                 
+                       
+                       } else if (intType == 2){
+                       
+                               PicturesListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               lboLogos->SetItem(ListCtrlIndex, 1, _("Work"));
+                       
+                       }
+                       
+                       PicturesListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       PhotoCount++;
+                       intValueSeek++;
+                       
+               } else if (wxSProperty == wxT("LOGO")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool FirstToken = TRUE;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 5;
+                       
+                       // Look for type before continuing.                     
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       LogosList.insert(std::make_pair(intValueSeek, ""));
+                       LogosListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       LogosListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       LogosListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       LogosListPref.insert(std::make_pair(intValueSeek, 0));
+                       LogosListPicEncType.insert(std::make_pair(intValueSeek, wxT("")));
+                       LogosListPictureType.insert(std::make_pair(intValueSeek, wxT("")));                     
+                       LogosListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       LogosListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       intPrevValue = 5;
+
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }
+                               
+                               ProcessCaptureStrings(&PropertyValue);  
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ LogosListAltID.erase(intValueSeek); LogosListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ LogosListAltID.erase(intValueSeek); LogosListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ LogosListAltID.erase(intValueSeek); LogosListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ LogosListPID.erase(intValueSeek); LogosListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ LogosListPID.erase(intValueSeek); LogosListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ LogosListPID.erase(intValueSeek); LogosListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ LogosListPref.erase(intValueSeek); LogosListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ LogosListPref.erase(intValueSeek); LogosListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ LogosListPref.erase(intValueSeek); LogosListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       if (intType == 0){ LogosListMediatype.erase(intValueSeek); LogosListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ LogosListMediatype.erase(intValueSeek); LogosListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ LogosListMediatype.erase(intValueSeek); LogosListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }       
+                       
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       wxString wxSPhotoURI;
+                       wxString wxSPhotoMIME;
+                       wxString wxSPhotoEncoding;
+                       wxString wxSPhotoData;
+                       std::string base64enc;
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);
+                       
+                       if (intSplitsFound = 0){
+                       
+                       } else {
+                       
+                               std::map<int, int>::iterator striter;
+                       
+                               striter = SplitLength.find(1);
+                       
+                               wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":"));
+                       
+                               while (wSTDataType.HasMoreTokens() == TRUE){
+                               
+                                       wxSPhotoURI = wSTDataType.GetNextToken();
+                                       wxSPhotoMIME = wSTDataType.GetNextToken();
+                                       break;
+                               
+                               }                       
+                       
+                               wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(","));                    
+                       
+                               while (wSTDataInfo.HasMoreTokens() == TRUE){
+                               
+                                       wxSPhotoEncoding = wSTDataInfo.GetNextToken();
+                                       wxSPhotoData = wSTDataInfo.GetNextToken();                                      
+                                       base64enc = wxSPhotoData.mb_str();
+                                       break;
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(_("Picture"));
+                       
+                       ListCtrlIndex = lboLogos->InsertItem(coldata);
+                               
+                       if (intPref > 0 && intPref < 101){
+                               
+                               lboLogos->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                       
+                       }
+                               
+                       LogosList.erase(intValueSeek);
+                       LogosListType.erase(intValueSeek);
+                       LogosListTokens.erase(intValueSeek);
+                       LogosListPictureType.erase(intValueSeek);
+                       LogosListPicEncType.erase(intValueSeek);
+                       LogosList.insert(std::make_pair(intValueSeek, base64enc));
+                       LogosListPictureType.insert(std::make_pair(intValueSeek, wxSPhotoMIME));
+                       LogosListPicEncType.insert(std::make_pair(intValueSeek, wxSPhotoEncoding));
+                       
+                       if (intType == 0){
+                       
+                               LogosListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 1){
+                       
+                               LogosListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               lboLogos->SetItem(ListCtrlIndex, 1, _("Home"));
+                       
+                       } else if (intType == 2){
+                       
+                               LogosListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               lboLogos->SetItem(ListCtrlIndex, 1, _("Work"));                         
+                       
+                       }
+                       
+                       LogosListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       LogoCount++;
+                       intValueSeek++;
+                       
+               } else if (wxSProperty == wxT("SOUND")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool FirstToken = TRUE;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 6;
+                       
+                       // Look for type before continuing.                     
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       SoundsList.insert(std::make_pair(intValueSeek, ""));
+                       SoundsListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       SoundsListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       SoundsListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       SoundsListPref.insert(std::make_pair(intValueSeek, 0));
+                       SoundsListAudioEncType.insert(std::make_pair(intValueSeek, wxT("")));
+                       SoundsListAudioType.insert(std::make_pair(intValueSeek, wxT("")));                      
+                       SoundsListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       SoundsListMediatype.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       intPrevValue = 6;
+
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                       
+                               
+                               ProcessCaptureStrings(&PropertyValue);
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       if (intType == 0){ SoundsListAltID.erase(intValueSeek); SoundsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ SoundsListAltID.erase(intValueSeek); SoundsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ SoundsListAltID.erase(intValueSeek); SoundsListAltID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       if (intType == 0){ SoundsListPID.erase(intValueSeek); SoundsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ SoundsListPID.erase(intValueSeek); SoundsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ SoundsListPID.erase(intValueSeek); SoundsListPID.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       if (intType == 0){ SoundsListPref.erase(intValueSeek); SoundsListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 1){ SoundsListPref.erase(intValueSeek); SoundsListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                                       else if (intType == 2){ SoundsListPref.erase(intValueSeek); SoundsListPref.insert(std::make_pair(intValueSeek, intPref)); }
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       if (intType == 0){ SoundsListMediatype.erase(intValueSeek); SoundsListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 1){ SoundsListMediatype.erase(intValueSeek); SoundsListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                                       else if (intType == 2){ SoundsListMediatype.erase(intValueSeek); SoundsListMediatype.insert(std::make_pair(intValueSeek, PropertyValue)); }
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }       
+                       
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;
+                       
+                       ProcessCaptureStrings(&wxSPropertySeg2);        
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(";")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 6){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       } else {
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       wxString wxSSoundURI;
+                       wxString wxSSoundMIME;
+                       wxString wxSSoundEncoding;
+                       wxString wxSSoundData;
+                       std::string base64enc;
+                       
+                       if (intSplitsFound = 0){
+                       
+                       } else {
+                       
+                               std::map<int, int>::iterator striter;
+                       
+                               striter = SplitLength.find(1);
+                       
+                               wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":"));
+                       
+                               while (wSTDataType.HasMoreTokens() == TRUE){
+                               
+                                       wxSSoundURI = wSTDataType.GetNextToken();
+                                       wxSSoundMIME = wSTDataType.GetNextToken();
+                                       break;
+                               
+                               }                       
+                       
+                               wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(","));                    
+                       
+                               while (wSTDataInfo.HasMoreTokens() == TRUE){
+                               
+                                       wxSSoundEncoding = wSTDataInfo.GetNextToken();
+                                       wxSSoundData = wSTDataInfo.GetNextToken();                                      
+                                       base64enc = wxSSoundData.mb_str();
+                                       break;
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(_("Sound"));
+                       
+                       ListCtrlIndex = lboSounds->InsertItem(coldata);
+                               
+                       if (intPref > 0 && intPref < 101){
+                               
+                               lboSounds->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                       
+                       }
+                               
+                       SoundsList.erase(intValueSeek);
+                       SoundsListType.erase(intValueSeek);
+                       SoundsListTokens.erase(intValueSeek);
+                       SoundsListAudioType.erase(intValueSeek);
+                       SoundsListAudioEncType.erase(intValueSeek);
+                       SoundsList.insert(std::make_pair(intValueSeek, base64enc));
+                       SoundsListAudioType.insert(std::make_pair(intValueSeek, wxSSoundMIME));
+                       SoundsListAudioEncType.insert(std::make_pair(intValueSeek, wxSSoundEncoding));
+                       
+                       if (intType == 0){
+                       
+                               SoundsListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType == 1){
+                       
+                               SoundsListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               lboLogos->SetItem(ListCtrlIndex, 1, _("Home"));                 
+                       
+                       } else if (intType == 2){
+                       
+                               SoundsListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               lboLogos->SetItem(ListCtrlIndex, 1, _("Work"));
+                       
+                       }
+                       
+                       SoundsListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       SoundCount++;
+                       intValueSeek++;
+                       
+               } else if (wxSProperty == wxT("CALURI")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 8;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 7;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       CalendarList.insert(std::make_pair(intValueSeek, wxT("")));
+                       CalendarListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       CalendarListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       CalendarListPref.insert(std::make_pair(intValueSeek, 0));
+                       CalendarListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       intPrevValue = 6;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       CalendarListAltID.erase(intValueSeek); CalendarListAltID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       CalendarListPID.erase(intValueSeek); CalendarListPID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       CalendarListPref.erase(intValueSeek); CalendarListPref.insert(std::make_pair(intValueSeek, intPref));
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       CalendarListMediatype.erase(intValueSeek); CalendarListMediatype.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+
+                       ListCtrlIndex = lboCalendarAddresses->InsertItem(coldata);
+                               
+                       if (intPref > 0 && intPref < 101){
+                               
+                               lboCalendarAddresses->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                       }
+                       
+                       CaptureString(&wxSPropertySeg2, FALSE);
+                               
+                       CalendarList.erase(intValueSeek);
+                       CalendarListType.erase(intValueSeek);
+                       CalendarListTokens.erase(intValueSeek);
+                       CalendarList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                       
+                       if (intType == 0){
+                       
+                               CalendarListType.insert(std::make_pair(intValueSeek, wxT("")));                         
+                       
+                       } else if (intType == 1){
+                       
+                               CalendarListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               lboCalendarAddresses->SetItem(ListCtrlIndex, 1, _("Home"), intPref);
+                       
+                       } else if (intType == 2){
+                       
+                               CalendarListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               lboCalendarAddresses->SetItem(ListCtrlIndex, 1, _("Work"), intPref);
+                       
+                       }
+                       
+                       CalendarListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       CalAdrCount++;
+                       intValueSeek++;
+               
+               } else if (wxSProperty == wxT("CALADRURI")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 11;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 10;
+                       
+                       // Look for type before continuing.
+                       
+                       
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       CalendarRequestList.insert(std::make_pair(intValueSeek, wxT("")));
+                       CalendarRequestListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       CalendarRequestListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       CalendarRequestListPref.insert(std::make_pair(intValueSeek, 0));
+                       CalendarRequestListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       intPrevValue = 10;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       CalendarRequestListAltID.erase(intValueSeek); CalendarRequestListAltID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       CalendarRequestListPID.erase(intValueSeek); CalendarRequestListPID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       CalendarRequestListPref.erase(intValueSeek); CalendarRequestListPref.insert(std::make_pair(intValueSeek, intPref));
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       CalendarRequestListMediatype.erase(intValueSeek); CalendarRequestListMediatype.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+
+                       ListCtrlIndex = lboCalendarRequestAddress->InsertItem(coldata);
+                               
+                       if (intPref > 0 && intPref < 101){
+                               
+                               lboCalendarRequestAddress->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                       }
+                               
+                       CaptureString(&wxSPropertySeg2, FALSE);                         
+                               
+                       CalendarRequestList.erase(intValueSeek);
+                       CalendarRequestListType.erase(intValueSeek);
+                       CalendarRequestListTokens.erase(intValueSeek);
+                       CalendarRequestList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));                      
+                       
+                       if (intType == 0){
+                       
+                               CalendarRequestListType.insert(std::make_pair(intValueSeek, wxT("")));                          
+                       
+                       } else if (intType == 1){
+                       
+                               CalendarRequestListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               lboCalendarRequestAddress->SetItem(ListCtrlIndex, 1, _("Home"), intPref);
+                       
+                       } else if (intType == 2){
+                       
+                               CalendarRequestListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               lboCalendarRequestAddress->SetItem(ListCtrlIndex, 1, _("Work"), intPref);
+                       
+                       }
+                       
+                       CalendarRequestListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       CalReqAdrCount++;
+                       intValueSeek++;
+               
+               } else if (wxSProperty == wxT("FBURL")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 6;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       FreeBusyList.insert(std::make_pair(intValueSeek, wxT("")));
+                       FreeBusyListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       FreeBusyListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       FreeBusyListPref.insert(std::make_pair(intValueSeek, 0));
+                       FreeBusyListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       intPrevValue = 6;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       FreeBusyListAltID.erase(intValueSeek); FreeBusyListAltID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       FreeBusyListPID.erase(intValueSeek); FreeBusyListPID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       FreeBusyListPref.erase(intValueSeek); FreeBusyListPref.insert(std::make_pair(intValueSeek, intPref));
+                               
+                               } else if (PropertyName == wxT("MEDIATYPE")){
+                               
+                                       FreeBusyListMediatype.erase(intValueSeek); FreeBusyListMediatype.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                               
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                               
+                                               if (FirstToken == TRUE){
+                                       
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                       
+                                               } else {
+                                       
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                       
+                                               }
+                               
+                                       }
+                               
+                               }
+                       
+                       }       
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg2);
+
+                       ListCtrlIndex = lboFreeBusyAddresses->InsertItem(coldata);
+                               
+                       if (intPref > 0 && intPref < 101){
+                               
+                               lboFreeBusyAddresses->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), intPref));
+                                       
+                       }
+                       
+                       CaptureString(&wxSPropertySeg2, FALSE);                 
+                               
+                       FreeBusyList.erase(intValueSeek);
+                       FreeBusyListType.erase(intValueSeek);
+                       FreeBusyListTokens.erase(intValueSeek);
+                       FreeBusyList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                       
+                       if (intType == 0){
+                       
+                               FreeBusyListType.insert(std::make_pair(intValueSeek, wxT("")));                         
+                       
+                       } else if (intType == 1){
+                       
+                               FreeBusyListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                               lboFreeBusyAddresses->SetItem(ListCtrlIndex, 1, _("Home"), intPref);
+                       
+                       } else if (intType == 2){
+                       
+                               FreeBusyListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                               lboFreeBusyAddresses->SetItem(ListCtrlIndex, 1, _("Work"), intPref);
+                       
+                       }
+                       
+                       FreeBusyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       FreeBusyCount++;
+                       intValueSeek++;
+               } else if (wxSProperty == wxT("KEY")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+                       long ListCtrlIndex;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 4;
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       if (PropertyValue == wxT("work")){
+                                       
+                                               intType = 2;                                    
+                                       
+                                       } else if (PropertyValue == wxT("home")){
+
+                                               intType = 1;
+                                       
+                                       } else {
+                                       
+                                               intType = 0;
+                                       
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Setup blank lines for later on.
+                       
+                       KeyList.insert(std::make_pair(intValueSeek, wxT("")));
+                       KeyListAltID.insert(std::make_pair(intValueSeek, wxT("")));
+                       KeyListPID.insert(std::make_pair(intValueSeek, wxT("")));
+                       KeyListPref.insert(std::make_pair(intValueSeek, 0));
+                       KeyListKeyType.insert(std::make_pair(intValueSeek, FALSE));
+                       KeyListDataType.insert(std::make_pair(intValueSeek, wxT("")));
+                       KeyListDataEncType.insert(std::make_pair(intValueSeek, wxT("")));
+                       KeyListTokens.insert(std::make_pair(intValueSeek, wxT("")));
+
+                       intPrevValue = 4;
+
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               // Process properties.
+                               
+                               int intPropertyValueLen = PropertyValue.Len();                          
+                               
+                               if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Trim();
+                                       PropertyValue.RemoveLast();
+                                       
+                               }                               
+                               
+                               if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                       PropertyValue.Remove(0, 1);
+                                       
+                               }                               
+                               
+                               if (PropertyName == wxT("ALTID")){
+
+                                       KeyListAltID.erase(intValueSeek); KeyListAltID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PID")){
+
+                                       KeyListPID.erase(intValueSeek); KeyListPID.insert(std::make_pair(intValueSeek, PropertyValue));
+                               
+                               } else if (PropertyName == wxT("PREF")){
+                                       
+                                       intPref = wxAtoi(PropertyValue);
+                               
+                                       KeyListPref.erase(intValueSeek); KeyListPref.insert(std::make_pair(intValueSeek, intPref));
+                               
+                               } else {
+                               
+                                       // Something else we don't know about so append
+                                       // to the tokens variable.
+                                       
+                                       if (!PropertyName.IsEmpty() && !PropertyValue.IsEmpty() && PropertyName != wxT("TYPE")){
+                                       
+                                               if (FirstToken == TRUE){
+                                               
+                                                       PropertyTokens.Append(PropertyName + wxT("=") + PropertyValue);
+                                                       FirstToken = FALSE;
+                                               
+                                               } else {
+                                               
+                                                       PropertyTokens.Append(wxT(";") + PropertyName + wxT("=") + PropertyValue);
+                                               
+                                               }
+                                       
+                                       }
+                               
+                               }
+                       
+                       }                               
+                       
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;
+                       intPrevValue = 0;                       
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(";") && wxSPropertySeg2.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 6){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       } else {
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       wxString wxSKeyURI;
+                       wxString wxSKeyMIME;
+                       wxString wxSKeyEncoding;
+                       wxString wxSKeyData;
+                       std::string base64enc;
+                       
+                       if (intSplitsFound = 0){
+                       
+                       } else {
+                       
+                               std::map<int, int>::iterator striter;
+                       
+                               striter = SplitLength.find(1);
+                       
+                               wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":"));
+                       
+                               while (wSTDataType.HasMoreTokens() == TRUE){
+                               
+                                       wxSKeyURI = wSTDataType.GetNextToken();
+                                       wxSKeyMIME = wSTDataType.GetNextToken();
+                                       break;
+                               
+                               }                       
+                       
+                               if (wxSKeyURI == wxT("data")){
+                               
+                                               wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 2)), wxT(","));                    
+                       
+                                               while (wSTDataInfo.HasMoreTokens() == TRUE){
+                               
+                                               wxSKeyEncoding = wSTDataInfo.GetNextToken();
+                                               wxSKeyData = wSTDataInfo.GetNextToken();
+                                               break;
+                               
+                                       }
+                               
+                               }
+                       
+                       }
+                       
+                       // Add the data to the General/Home/Work address variables.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       
+                       if (wxSKeyURI == wxT("data")){
+                       
+                               if (wxSKeyMIME == wxT("application/pgp-keys")){
+                       
+                                       coldata.SetText(_("PGP Key"));
+                               
+                               } else {
+                               
+                                       coldata.SetText(_("Key"));
+                               
+                               }
+                               
+                               KeyListDataEncType.erase(intValueSeek);
+                               KeyListKeyType.erase(intValueSeek);
+                               KeyListDataEncType.insert(std::make_pair(intValueSeek, wxSKeyEncoding));
+                               KeyListKeyType.insert(std::make_pair(intValueSeek, TRUE));
+                               
+                               KeyList.erase(intValueSeek);
+                               KeyList.insert(std::make_pair(intValueSeek, wxSKeyData));
+                       
+                       } else {
+                       
+                               coldata.SetText(wxSPropertySeg2);
+                               
+                               KeyList.erase(intValueSeek);
+                               KeyList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                       
+                       }
+                       
+                       ListCtrlIndex = lboKeys->InsertItem(coldata);
+                               
+                       if (intPref > 0 && intPref < 101){
+                               
+                               lboKeys->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), intPref));
+                       
+                       }
+                               
+
+                       KeyListType.erase(intValueSeek);
+                       KeyListTokens.erase(intValueSeek);
+                       KeyListDataType.erase(intValueSeek);
+
+                       KeyListDataType.insert(std::make_pair(intValueSeek, wxSKeyMIME));
+                               
+                       if (intType = 0){
+                       
+                               KeyListType.insert(std::make_pair(intValueSeek, wxT("")));
+                       
+                       } else if (intType = 1){
+                       
+                               KeyListType.insert(std::make_pair(intValueSeek, wxT("home")));
+                       
+                       } else if (intType = 2){
+                       
+                               KeyListType.insert(std::make_pair(intValueSeek, wxT("work")));
+                       
+                       }
+                       
+                       KeyListTokens.insert(std::make_pair(intValueSeek, PropertyTokens));
+                       
+                       KeyCount++;
+                       intValueSeek++;
+               
+               } else if (wxSProperty == wxT("UID") && UIDProcessed == FALSE){
+               
+                       UIDToken = wxSPropertySeg2;
+                       UIDProcessed = TRUE;
+               
+               } else if (wxSProperty.Mid(0, 3) == wxT("VND")){
+               
+                       // Split the Vendor three ways.
+                       
+                       wxStringTokenizer wSTVendorDetails(wxSPropertySeg1, wxT("-"));
+                       
+                       wxString wxSVNDID;
+                       wxString wxSVNDPropName;
+                       long ListCtrlIndex;                     
+
+                       while (wSTVendorDetails.HasMoreTokens() == TRUE){
+                       
+                               wSTVendorDetails.GetNextToken();
+                               wxSVNDID = wSTVendorDetails.GetNextToken();
+                               wxSVNDPropName = wSTVendorDetails.GetNextToken();
+                               break;
+                       
+                       }
+                       
+                       if (!wxSVNDID.IsEmpty() && !wxSVNDPropName.IsEmpty()){
+                       
+                               // Setup the values for later processing.
+                       
+                               VendorList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               VendorListPEN.insert(std::make_pair(intValueSeek, wxSVNDID));
+                               VendorListElement.insert(std::make_pair(intValueSeek, wxSVNDPropName));
+                       
+                               // Add the data to the vendor variables.
+                       
+                               wxListItem coldata;
+               
+                               coldata.SetId(intValueSeek);
+                               coldata.SetData(intValueSeek);
+                               coldata.SetText(wxSVNDID + wxT("-") + wxSVNDPropName);
+
+                               ListCtrlIndex = lboVendorNamespace->InsertItem(coldata);
+                               
+                               VendorList.erase(intValueSeek);
+                               VendorListPEN.erase(intValueSeek);
+                               VendorListElement.erase(intValueSeek);
+                       
+                               VendorList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                               VendorListPEN.insert(std::make_pair(intValueSeek, wxSVNDID));
+                               VendorListElement.insert(std::make_pair(intValueSeek, wxSVNDPropName));                         
+                       
+                               VendorCount++;
+                               intValueSeek++;
+                       
+                       }       
+               
+               } else if (wxSProperty.Mid(0, 2) == wxT("X-")){
+               
+                       long ListCtrlIndex;
+                       
+                       XTokenList.insert(std::make_pair(intValueSeek, wxSPropertySeg2));
+                       XTokenListTokens.insert(std::make_pair(intValueSeek, wxSPropertySeg1.Mid(2)));
+                       
+                       // Add to the form.
+                       
+                       wxListItem coldata;
+               
+                       coldata.SetId(intValueSeek);
+                       coldata.SetData(intValueSeek);
+                       coldata.SetText(wxSPropertySeg1.Mid(2));
+
+                       ListCtrlIndex = lboXToken->InsertItem(coldata);
+                       
+                       XTokenCount++;
+                       intValueSeek++;
+                       
+               
+               }
+               
+               // Reset the variables.
+               
+               QuoteMode = FALSE;
+               PropertyFind = TRUE;
+               ExtraLineSeek = TRUE;
+               ContactLineLen = 0;
+               QuoteBreakPoint = 0;
+               ContactLine.Clear();
+               wxSProperty.Clear();    
+       
+       }
+       
+       FMTimer.SetFilename(Filename);
+       FMTimer.Start(10000, FALSE);
+       
+       EditMode = TRUE;
+       
+       return TRUE;
+}
+
+void frmContactEditor::SplitValues(wxString *PropertyLine, 
+       std::map<int,int> *SplitPoints, 
+       std::map<int,int> *SplitLength, 
+       int intSize){
+       
+       int intPropertyLen = PropertyLine->Len();               
+       int intSplitsFound = 0;
+       int intSplitSize = 0;
+       int intSplitSeek = 0;
+       
+       for (int i = intSize; i <= intPropertyLen; i++){
+
+               intSplitSize++;
+       
+               if (PropertyLine->Mid(i, 1) == wxT(";") &&
+                   PropertyLine->Mid((i - 1), 1) != wxT("\\")){
+          
+                   if (intSplitsFound == 0){
+           
+                       SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize)));
+         
+                   } else {
+          
+                       SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+           
+                   }
+           
+                   SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1)));
+           
+                   intSplitsFound++;
+                   intSplitSeek = i;
+                   intSplitSize = 0;
+           
+               }
+
+       }
+
+       if (intSplitsFound == 0){
+
+               SplitPoints->insert(std::make_pair(intSplitsFound, (8 + 1)));
+               SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize));
+
+       } else {
+
+               SplitPoints->insert(std::make_pair(intSplitsFound, (intSplitSeek + 1)));
+               SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize));
+
+       }
+
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditor.cpp b/source/contacteditor/frmContactEditor.cpp
new file mode 100644 (file)
index 0000000..db50acb
--- /dev/null
@@ -0,0 +1,7740 @@
+#include <map>
+#include <string>
+#include <thread>
+#include <vector>
+#include <stdlib.h>
+
+#include <wx/wx.h>
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <wx/mstream.h>
+#include <wx/fs_mem.h>
+#include <wx/datetime.h>
+
+#include <SFML/Audio.hpp>
+
+#include "frmContactEditor.h"
+#include "frmContactEditorNickname.h"
+#include "frmContactEditorAddress.h"
+#include "frmContactEditorEmail.h"
+#include "frmContactEditorIM.h"
+#include "frmContactEditorTelephone.h"
+#include "frmContactEditorLanguages.h"
+#include "frmContactEditorTimezones.h"
+#include "frmContactEditorRelated.h"
+#include "frmContactEditorWebsites.h"
+#include "frmContactEditorTitles.h" 
+#include "frmContactEditorRoles.h" 
+#include "frmContactEditorGeoposition.h"
+#include "frmContactEditorGroups.h"
+
+#include "frmContactEditorOrganisations.h"
+#include "frmContactEditorNotes.h"
+#include "frmContactEditorCategory.h"
+#include "frmContactEditorSound.h"
+#include "frmContactEditorPicture.h"
+#include "frmContactEditorCalAdr.h"
+#include "frmContactEditorKey.h"
+#include "frmContactEditorVendor.h"
+#include "frmContactEditorXToken.h"
+#include "../frmMain.h"
+
+#include "../enums.h"
+#include "../version.h"
+#include "../vcard/vcard.h"
+#include "../vcard/vcard34conv.h"
+#include "../bitmaps.h"
+#include "../common/base64.h"
+#include "../common/textprocessing.h"
+#include "../common/preferences.h"
+#include "../common/uuid.h"
+#include "../common/dirs.h"
+
+#define CE_NICKNAME wxT("Nickname")
+#define CE_ADDRESS wxT("Address")
+#define CE_EMAIL wxT("Email")
+#define CE_IM wxT("IM")
+#define CE_TELEPHONE wxT("Telephone")
+#define CE_LANG wxT("Languages")
+#define CE_TZ wxT("Timezone")
+#define CE_RELATED wxT("Related")
+#define CE_WEBSITE wxT("Websites")
+#define CE_TITLE wxT("Titles")
+#define CE_GEOPOSITION wxT("Geoposition")
+#define CE_ROLE wxT("Roles")
+#define CE_ORG wxT("Organisations")
+#define CE_NOTE wxT("Notes")
+#define CE_CATEGORIES wxT("Categories")
+#define CE_GROUPS wxT("Groups")
+#define CE_PICTURES wxT("Pictures")
+#define CE_SOUNDS wxT("Sounds")
+#define CE_CALENDAR wxT("Calendar")
+#define CE_KEY wxT("Key")
+#define CE_TOKEN wxT("Token")
+
+// TODO: Investigate problems with SFML & PulseAudio - CPU usage problems when
+// not being used.
+
+// Replace intResult with intValueSeek.
+
+BEGIN_EVENT_TABLE(frmContactEditor, wxFrame)
+  EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, frmContactEditor::ContactFileChanged)
+END_EVENT_TABLE()
+
+frmContactEditor::frmContactEditor( wxWindow* parent )
+:
+frmContactEditorADT( parent )
+{
+    boolContactModified = FALSE;
+    wxDateTime NoDate;
+    dapAnniversary->SetValue(NoDate);
+    dapBirthday->SetValue(NoDate);
+    tabMembers->Hide();
+    
+    // Setup the buttons.
+    
+    wxMemoryInputStream istream(buttons_play_png, sizeof(buttons_play_png));
+    wxImage button_play_pngi(istream, wxBITMAP_TYPE_PNG);
+    wxBitmap playiconbmp(button_play_pngi, -1);
+    btnPlay->SetBitmapLabel(playiconbmp);
+
+    wxMemoryInputStream istream2(buttons_stop_png, sizeof(buttons_stop_png));
+    wxImage button_stop_pngi(istream2, wxBITMAP_TYPE_PNG);
+    wxBitmap stopiconbmp(button_stop_pngi, -1);
+    btnStop->SetBitmapLabel(stopiconbmp);
+    btnStop->Disable();
+    FMTimer.SetupPointers(this);
+    //wxIcon contacticon;
+    //contacticon.CopyFromBitmap(contacticonbmp);
+    
+}
+
+void frmContactEditor::AddGeneralNickname( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this );
+    frameCENickname->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralNicknamesList);
+    frameCENickname->SetupPointers(&GeneralNicknamesList,      
+       &GeneralNicknamesListAltID,
+       &GeneralNicknamesListPID,
+       &GeneralNicknamesListType,
+       &GeneralNicknamesListLanguage,  
+       &GeneralNicknamesListTokens,
+       &GeneralNicknamesListPref,
+       lboNicknames,
+       (intValueSeek));
+    frameCENickname->ShowModal(); 
+    delete frameCENickname;
+    frameCENickname = NULL;
+}
+
+void frmContactEditor::ModifyGeneralNickname( wxCommandEvent& event )
+{
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+
+    if (!GetSelectedItem(lboNicknames, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this );
+    frameCENickname->SetupPointers(&GeneralNicknamesList,      
+       &GeneralNicknamesListAltID,
+       &GeneralNicknamesListPID,
+       &GeneralNicknamesListType,
+       &GeneralNicknamesListLanguage,  
+       &GeneralNicknamesListTokens,
+       &GeneralNicknamesListPref,
+       lboNicknames,
+       intSelectedData);    
+    frameCENickname->SetEditorMode(TRUE, CE_GENERAL);
+    frameCENickname->ShowModal();
+    delete frameCENickname;
+    frameCENickname = NULL;
+    
+}
+
+void frmContactEditor::DeleteGeneralNickname( wxCommandEvent& event )
+{
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+       
+    if (!GetSelectedItem(lboNicknames, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboNicknames->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, 
+    &GeneralNicknamesList,
+    &GeneralNicknamesListLanguage,
+    &GeneralNicknamesListAltID,
+    &GeneralNicknamesListPID,
+    &GeneralNicknamesListTokens,
+    &GeneralNicknamesListType,
+    &GeneralNicknamesListPref);
+
+}
+
+void frmContactEditor::AddGeneralAddress( wxCommandEvent& event )
+{
+
+    int intResult = 0;
+
+    frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this );
+    frameCEAddress->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralAddressList);
+    frameCEAddress->SetupPointers(&GeneralAddressList,
+       &GeneralAddressListTown,
+       &GeneralAddressListCounty,
+       &GeneralAddressListPostCode,
+       &GeneralAddressListCountry,
+       &GeneralAddressListLabel,
+       &GeneralAddressListLang,        
+       &GeneralAddressListAltID,
+       &GeneralAddressListPID,
+       &GeneralAddressListTokens,
+       &GeneralAddressListGeo,
+       &GeneralAddressListTimezone,
+       &GeneralAddressListType,
+       &GeneralAddressListMediatype,
+       &GeneralAddressListPref,
+       lboAddresses,
+       (intValueSeek));
+    frameCEAddress->ShowModal(); 
+    delete frameCEAddress;
+    frameCEAddress = NULL;
+}
+
+void frmContactEditor::ModifyGeneralAddress( wxCommandEvent& event )
+{
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    if (longSelected == -1){
+       return;
+    }
+       
+    frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this );
+    frameCEAddress->SetupPointers(&GeneralAddressList,
+       &GeneralAddressListTown,
+       &GeneralAddressListCounty,
+       &GeneralAddressListPostCode,
+       &GeneralAddressListCountry,
+       &GeneralAddressListLabel,
+       &GeneralAddressListLang,        
+       &GeneralAddressListAltID,
+       &GeneralAddressListPID,
+       &GeneralAddressListTokens,
+       &GeneralAddressListGeo,
+       &GeneralAddressListTimezone,
+       &GeneralAddressListType,
+       &GeneralAddressListMediatype,
+       &GeneralAddressListPref,
+       lboAddresses,
+       intSelectedData);    
+    frameCEAddress->SetEditorMode(TRUE, CE_GENERAL);
+    frameCEAddress->ShowModal();
+    delete frameCEAddress;
+    frameCEAddress = NULL;
+    
+}
+
+void frmContactEditor::DeleteGeneralAddress( wxCommandEvent& event )
+{
+       
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboAddresses->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralAddressList,
+    &GeneralAddressListTown, &GeneralAddressListCounty,
+    &GeneralAddressListPostCode, &GeneralAddressListCountry,
+    &GeneralAddressList, &GeneralAddressListLabel,
+    &GeneralAddressListLang, &GeneralAddressListAltID,
+    &GeneralAddressListPID, &GeneralAddressListTokens,
+    &GeneralAddressListGeo, &GeneralAddressListTimezone,
+    &GeneralAddressListType, &GeneralAddressListMediatype,
+    &GeneralAddressListPref);
+       
+}
+
+void frmContactEditor::AddGeneralEmail( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this );
+    frameCEEmail->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralAddressList);
+    frameCEEmail->SetupPointers(&GeneralEmailList,
+       &GeneralEmailListAltID,
+       &GeneralEmailListPID,
+       &GeneralEmailListType,
+       &GeneralEmailListTokens,
+       &GeneralEmailListPref,
+       lboEmails,
+       (intValueSeek));
+    frameCEEmail->ShowModal(); 
+    delete frameCEEmail;
+    frameCEEmail = NULL;
+}
+
+void frmContactEditor::ModifyGeneralEmail( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboEmails, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this );
+    frameCEEmail->SetupPointers(&GeneralEmailList,
+       &GeneralEmailListAltID,
+       &GeneralEmailListPID,
+       &GeneralEmailListType,
+       &GeneralEmailListTokens,
+       &GeneralEmailListPref,
+       lboEmails,
+       intSelectedData);    
+    frameCEEmail->SetEditorMode(TRUE, CE_GENERAL);
+    frameCEEmail->ShowModal();
+    delete frameCEEmail;
+    frameCEEmail = NULL;
+}
+
+void frmContactEditor::DeleteGeneralEmail( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboEmails, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboEmails->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralEmailList,
+    &GeneralEmailListAltID, &GeneralEmailListPID,
+    &GeneralEmailListType, &GeneralEmailListTokens,
+    &GeneralEmailListPref);
+
+}
+
+void frmContactEditor::AddGeneralIM( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this );
+    frameCEIM->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralIMList);
+    frameCEIM->SetupPointers(&GeneralIMList,
+       &GeneralIMListAltID,
+       &GeneralIMListPID,
+       &GeneralIMListType,
+       &GeneralIMListTokens,
+       &GeneralIMListMediatype,        
+       &GeneralIMListPref,
+       lboIM,
+       (intValueSeek));
+    frameCEIM->ShowModal(); 
+    delete frameCEIM;
+    frameCEIM = NULL;
+}
+
+void frmContactEditor::ModifyGeneralIM( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboIM, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this );
+    frameCEIM->SetupPointers(&GeneralIMList,
+       &GeneralIMListAltID,
+       &GeneralIMListPID,
+       &GeneralIMListType,
+       &GeneralIMListTokens,
+       &GeneralIMListMediatype,        
+       &GeneralIMListPref,
+       lboIM,
+       intSelectedData);    
+    frameCEIM->SetEditorMode(TRUE, CE_GENERAL);
+    frameCEIM->ShowModal();
+    delete frameCEIM;
+    frameCEIM = NULL;
+}
+
+void frmContactEditor::DeleteGeneralIM( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboIM, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboIM->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralIMList,
+    &GeneralIMListAltID, &GeneralIMListPID,
+    &GeneralIMListType, &GeneralIMListTokens,
+    &GeneralIMListMediatype, &GeneralIMListPref);
+    
+}
+
+void frmContactEditor::AddGeneralTelephone( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this );
+    frameCETel->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralTelephoneList);
+    frameCETel->SetupPointers(&GeneralTelephoneList,
+       &GeneralTelephoneListAltID,
+       &GeneralTelephoneListPID,
+       &GeneralTelephoneListType,
+       &GeneralTelephoneListTokens,
+       &GeneralTelephoneListPref,
+       lboTelephone,
+       (intValueSeek));
+    frameCETel->ShowModal(); 
+    delete frameCETel;
+    frameCETel = NULL;
+}
+
+void frmContactEditor::ModifyGeneralTelephone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboTelephone, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this );
+    frameCETel->SetupPointers(&GeneralTelephoneList,
+       &GeneralTelephoneListAltID,
+       &GeneralTelephoneListPID,
+       &GeneralTelephoneListType,
+       &GeneralTelephoneListTokens,    
+       &GeneralTelephoneListPref,
+       lboTelephone,
+       intSelectedData);    
+    frameCETel->SetEditorMode(TRUE, CE_GENERAL);
+    frameCETel->ShowModal();
+    delete frameCETel;
+    frameCETel = NULL;
+}
+
+void frmContactEditor::DeleteGeneralTelephone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboTelephone, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboTelephone->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralTelephoneList,
+    &GeneralTelephoneListAltID, &GeneralTelephoneListPID,
+    &GeneralTelephoneListType, &GeneralTelephoneListTokens,
+    &GeneralTelephoneListPref);
+    
+}
+
+void frmContactEditor::AddGeneralLanguages( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this );
+    frameCELang->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralLanguageList);
+    frameCELang->SetupPointers(&GeneralLanguageList,
+       &GeneralLanguageListAltID,
+       &GeneralLanguageListPID,
+       &GeneralLanguageListType,
+       &GeneralLanguageListTokens,
+       &GeneralLanguageListPref,
+       lboLanguages,
+       (intValueSeek));
+    frameCELang->ShowModal(); 
+    delete frameCELang;
+    frameCELang = NULL;
+}
+
+void frmContactEditor::ModifyGeneralLanguages( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboLanguages, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this );
+    frameCELang->SetupPointers(&GeneralLanguageList,
+       &GeneralLanguageListAltID,
+       &GeneralLanguageListPID,
+       &GeneralLanguageListType,
+       &GeneralLanguageListTokens,     
+       &GeneralLanguageListPref,
+       lboLanguages,
+       intSelectedData);
+    frameCELang->SetEditorMode(TRUE, CE_GENERAL);
+    frameCELang->ShowModal();
+    delete frameCELang;
+    frameCELang = NULL;
+}
+
+void frmContactEditor::DeleteGeneralLanguage( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboLanguages, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboLanguages->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralLanguageList,
+    &GeneralLanguageListAltID, &GeneralLanguageListPID,
+    &GeneralLanguageListType, &GeneralLanguageListTokens,
+    &GeneralLanguageListPref);
+    
+}
+
+void frmContactEditor::AddGeneralTimezone( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this );
+    frameCETZ->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralTZList);
+    frameCETZ->SetupPointers(&GeneralTZList,
+       &GeneralTZListAltID,
+       &GeneralTZListPID,
+       &GeneralTZListType,
+       &GeneralTZListTokens,
+       &GeneralTZListMediatype,        
+       &GeneralTZListPref,
+       lboTimezones,
+       (intValueSeek));
+    frameCETZ->ShowModal(); 
+    delete frameCETZ;
+    frameCETZ = NULL;
+}
+
+void frmContactEditor::ModifyGeneralTimezone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboTimezones, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this );
+    frameCETZ->SetupPointers(&GeneralTZList,
+       &GeneralTZListAltID,
+       &GeneralTZListPID,
+       &GeneralTZListType,
+       &GeneralTZListTokens,
+       &GeneralTZListMediatype,        
+       &GeneralTZListPref,
+       lboTimezones,
+       intSelectedData);
+    frameCETZ->SetEditorMode(TRUE, CE_GENERAL);
+    frameCETZ->ShowModal();
+    delete frameCETZ;
+    frameCETZ = NULL;
+}
+
+void frmContactEditor::DeleteGeneralTimezone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboTimezones, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboTimezones->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralTZList,
+    &GeneralTZListAltID, &GeneralTZListPID,
+    &GeneralTZListType, &GeneralTZListTokens,
+    &GeneralTZListMediatype, &GeneralTZListPref);
+    
+}
+
+void frmContactEditor::AddGeneralGeoposition( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this );
+    frameCEGeo->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralGeographyList);
+    frameCEGeo->SetupPointers(&GeneralGeographyList,
+       &GeneralGeographyListAltID,
+       &GeneralGeographyListPID,
+       &GeneralGeographyListType,
+       &GeneralGeographyListTokens,
+       &GeneralGeographyListMediatype, 
+       &GeneralGeographyListPref,
+       lboGeoposition,
+       (intValueSeek));
+    frameCEGeo->ShowModal(); 
+    delete frameCEGeo;
+    frameCEGeo = NULL;
+}
+
+void frmContactEditor::ModifyGeneralGeoposition( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboGeoposition, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this );
+    frameCEGeo->SetupPointers(&GeneralGeographyList,
+       &GeneralGeographyListAltID,
+       &GeneralGeographyListPID,
+       &GeneralGeographyListType,
+       &GeneralGeographyListTokens,
+       &GeneralGeographyListMediatype, 
+       &GeneralGeographyListPref,
+       lboGeoposition,
+       intSelectedData);
+    frameCEGeo->SetEditorMode(TRUE, CE_GENERAL);
+    frameCEGeo->ShowModal();
+    delete frameCEGeo;
+    frameCEGeo = NULL;
+}
+
+void frmContactEditor::DeleteGeneralGeoposition( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboGeoposition, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboGeoposition->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralGeographyList,
+    &GeneralGeographyListAltID, &GeneralGeographyListPID,
+    &GeneralGeographyListType, &GeneralGeographyListTokens,
+    &GeneralGeographyListMediatype, &GeneralGeographyListPref);
+    
+}
+
+void frmContactEditor::AddGeneralRelated( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorRelated *frameCERel = new frmContactEditorRelated ( this );
+    frameCERel->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralRelatedList);
+    frameCERel->SetupPointers(&GeneralRelatedList,
+       &GeneralRelatedListRelType,    
+       &GeneralRelatedListAltID,
+       &GeneralRelatedListPID,
+       &GeneralRelatedListType,
+       &GeneralRelatedListTokens,      
+       &GeneralRelatedListPref,
+       lboRelated,
+       (intValueSeek));
+     frameCERel->ShowModal();
+    delete frameCERel;
+    frameCERel = NULL;
+}
+
+void frmContactEditor::ModifyGeneralRelated( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboRelated, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorRelated *frameCERel = new frmContactEditorRelated ( this );
+    frameCERel->SetupPointers(&GeneralRelatedList,
+       &GeneralRelatedListRelType,    
+       &GeneralRelatedListAltID,
+       &GeneralRelatedListPID,
+       &GeneralRelatedListType,
+       &GeneralRelatedListTokens,      
+       &GeneralRelatedListPref,
+       lboRelated,
+       intSelectedData);
+    frameCERel->SetEditorMode(TRUE, CE_GENERAL);
+    frameCERel->ShowModal();
+    delete frameCERel;
+    frameCERel = NULL;
+}
+
+void frmContactEditor::DeleteGeneralRelated( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboRelated, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboRelated->DeleteItem(longSelected);
+    
+    GeneralRelatedList.erase(intSelectedData);
+    GeneralRelatedListRelType.erase(intSelectedData);
+    GeneralRelatedListAltID.erase(intSelectedData);
+    GeneralRelatedListPID.erase(intSelectedData);
+    GeneralRelatedListType.erase(intSelectedData);
+    GeneralRelatedListTokens.erase(intSelectedData);
+    GeneralRelatedListPref.erase(intSelectedData);
+}
+
+void frmContactEditor::AddGeneralWebsite( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this );
+    frameCEWeb->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralWebsiteList);
+    frameCEWeb->SetupPointers(&GeneralWebsiteList,
+       &GeneralWebsiteListAltID,
+       &GeneralWebsiteListPID,
+       &GeneralWebsiteListType,
+       &GeneralWebsiteListTokens,
+       &GeneralWebsiteListMediatype,
+       &GeneralWebsiteListPref,
+       lboWebsites,
+       (intValueSeek));
+    frameCEWeb->ShowModal();
+    delete frameCEWeb;
+    frameCEWeb = NULL;
+}
+
+void frmContactEditor::ModifyGeneralWebsite( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboWebsites, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this );
+    frameCEWeb->SetupPointers(&GeneralWebsiteList,
+       &GeneralWebsiteListAltID,
+       &GeneralWebsiteListPID,
+       &GeneralWebsiteListType,
+       &GeneralWebsiteListTokens,
+       &GeneralWebsiteListMediatype,   
+       &GeneralWebsiteListPref,
+       lboWebsites,
+       intSelectedData);
+    frameCEWeb->SetEditorMode(TRUE, CE_GENERAL);
+    frameCEWeb->ShowModal();
+    delete frameCEWeb;
+    frameCEWeb = NULL;
+}
+
+void frmContactEditor::DeleteGeneralWebsite( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboWebsites, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboWebsites->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralWebsiteList,
+    &GeneralWebsiteListAltID, &GeneralWebsiteListPID,
+    &GeneralWebsiteListType, &GeneralWebsiteListTokens,
+    &GeneralWebsiteListMediatype, &GeneralWebsiteListPref);
+    
+}
+
+void frmContactEditor::AddGeneralTitle( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this );
+    frameCETitle->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralTitleList);
+    frameCETitle->SetupPointers(&GeneralTitleList,
+       &GeneralTitleListLanguage,    
+       &GeneralTitleListAltID,
+       &GeneralTitleListPID,
+       &GeneralTitleListType,
+       &GeneralTitleListTokens,
+       &GeneralTitleListPref,
+       lboTitles,
+       (intValueSeek));
+    frameCETitle->ShowModal();
+    delete frameCETitle;
+    frameCETitle = NULL;
+}
+
+void frmContactEditor::ModifyGeneralTitle( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboTitles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this );
+    frameCETitle->SetupPointers(&GeneralTitleList,
+       &GeneralTitleListLanguage,
+       &GeneralTitleListAltID,
+       &GeneralTitleListPID,
+       &GeneralTitleListType,
+       &GeneralTitleListTokens,        
+       &GeneralTitleListPref,
+       lboTitles,
+       intSelectedData);
+    frameCETitle->SetEditorMode(TRUE, CE_GENERAL);
+    frameCETitle->ShowModal();
+    delete frameCETitle;
+    frameCETitle = NULL;
+}
+
+void frmContactEditor::DeleteGeneralTitle( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboTitles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboTitles->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralTitleList,
+    &GeneralTitleListLanguage, &GeneralTitleListAltID,
+    &GeneralTitleListPID, &GeneralTitleListType,
+    &GeneralTitleListTokens, &GeneralTitleListPref);
+    
+}
+
+void frmContactEditor::AddGeneralRole( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this );
+    frameCERole->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralRoleList);
+    frameCERole->SetupPointers(&GeneralRoleList,
+       &GeneralRoleListLanguage,
+       &GeneralRoleListAltID,
+       &GeneralRoleListPID,
+       &GeneralRoleListType,
+       &GeneralRoleListTokens,
+       &GeneralRoleListPref,
+       lboRoles,
+       (intValueSeek));
+    frameCERole->ShowModal();
+    delete frameCERole;
+    frameCERole = NULL;
+}
+
+void frmContactEditor::ModifyGeneralRole( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboRoles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this );
+    frameCERole->SetupPointers(&GeneralRoleList,
+       &GeneralRoleListLanguage,
+       &GeneralRoleListAltID,
+       &GeneralRoleListPID,
+       &GeneralRoleListType,
+       &GeneralRoleListTokens, 
+       &GeneralRoleListPref,
+       lboRoles,
+       intSelectedData);
+    frameCERole->SetEditorMode(TRUE, CE_GENERAL);
+    frameCERole->ShowModal();
+    delete frameCERole;
+    frameCERole = NULL;
+}
+
+void frmContactEditor::DeleteGeneralRole( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboRoles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboRoles->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralRoleList,
+    &GeneralRoleListLanguage, &GeneralRoleListAltID,
+    &GeneralRoleListPID, &GeneralRoleListType,
+    &GeneralRoleListTokens, &GeneralRoleListPref);
+    
+}
+
+void frmContactEditor::AddGeneralOrganisation( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this );
+    frameCEOrg->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralOrganisationsList);
+    frameCEOrg->SetupPointers(&GeneralOrganisationsList,
+       &GeneralOrganisationsListLanguage,
+       &GeneralOrganisationsListSortAs,        
+       &GeneralOrganisationsListAltID,
+       &GeneralOrganisationsListPID,
+       &GeneralOrganisationsListType,
+       &GeneralOrganisationsListTokens,
+       &GeneralOrganisationsListPref,
+       lboOrganisations,
+       (intValueSeek));
+    frameCEOrg->ShowModal();
+    delete frameCEOrg;
+    frameCEOrg = NULL;
+}
+
+void frmContactEditor::ModifyGeneralOrganisation( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboOrganisations, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this );
+    frameCEOrg->SetupPointers(&GeneralOrganisationsList,
+       &GeneralOrganisationsListLanguage,
+       &GeneralOrganisationsListSortAs,        
+       &GeneralOrganisationsListAltID,
+       &GeneralOrganisationsListPID,
+       &GeneralOrganisationsListType,
+       &GeneralOrganisationsListTokens,        
+       &GeneralOrganisationsListPref,
+       lboOrganisations,
+       intSelectedData);
+    frameCEOrg->SetEditorMode(TRUE, CE_GENERAL);
+    frameCEOrg->ShowModal();
+    delete frameCEOrg;
+    frameCEOrg = NULL;
+}
+
+void frmContactEditor::DeleteGeneralOrganisation( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboOrganisations, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboOrganisations->DeleteItem(longSelected);
+
+    DeleteMapData(intSelectedData, &GeneralOrganisationsList,
+    &GeneralOrganisationsListLanguage, &GeneralOrganisationsListSortAs,
+    &GeneralOrganisationsListAltID, &GeneralOrganisationsListPID,
+    &GeneralOrganisationsListType, &GeneralOrganisationsListTokens,
+    &GeneralOrganisationsListPref);
+    
+}
+
+void frmContactEditor::AddGeneralNote( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this );
+    frameCENote->SetEditorMode(FALSE, CE_GENERAL);
+    intResult = GetLastInt(&GeneralNoteList);
+    frameCENote->SetupPointers(&GeneralNoteList,
+       &GeneralNoteListLanguage,
+       &GeneralNoteListAltID,
+       &GeneralNoteListPID,
+       &GeneralNoteListType,
+       &GeneralNoteListTokens,
+       &GeneralNoteListPref,
+       lboNotes,
+       (intValueSeek));
+    frameCENote->ShowModal();
+    delete frameCENote;
+    frameCENote = NULL;
+}
+
+void frmContactEditor::ModifyGeneralNote( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboNotes, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this );
+    frameCENote->SetupPointers(&GeneralNoteList,
+       &GeneralNoteListLanguage,
+       &GeneralNoteListAltID,
+       &GeneralNoteListPID,
+       &GeneralNoteListType,
+       &GeneralNoteListTokens, 
+       &GeneralNoteListPref,
+       lboNotes,
+       intSelectedData);
+    frameCENote->SetEditorMode(TRUE, CE_GENERAL);
+    frameCENote->ShowModal();
+    delete frameCENote;
+    frameCENote = NULL;
+}
+
+void frmContactEditor::DeleteGeneralNote( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboNotes, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboNotes->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GeneralNoteList,
+    &GeneralNoteListLanguage, &GeneralNoteListAltID,
+    &GeneralNoteListPID, &GeneralNoteListType,
+    &GeneralNoteListTokens, &GeneralNoteListPref);
+    
+}
+
+void frmContactEditor::AddHomeNickname( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this );
+    frameCENickname->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeNicknamesList);
+    frameCENickname->SetupPointers(&HomeNicknamesList, 
+       &HomeNicknamesListAltID,
+       &HomeNicknamesListPID,
+       &HomeNicknamesListType,
+       &HomeNicknamesListLanguage,     
+       &HomeNicknamesListTokens,
+       &HomeNicknamesListPref,
+       lboHomeNicknames,
+       (intValueSeek));
+    frameCENickname->ShowModal(); 
+    delete frameCENickname;
+    frameCENickname = NULL;
+}
+
+void frmContactEditor::ModifyHomeNickname( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeNicknames, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this );
+    frameCENickname->SetupPointers(&HomeNicknamesList, 
+       &HomeNicknamesListAltID,
+       &HomeNicknamesListPID,
+       &HomeNicknamesListType,
+       &HomeNicknamesListLanguage,     
+       &HomeNicknamesListTokens,
+       &HomeNicknamesListPref,
+       lboHomeNicknames,
+       intSelectedData);    
+    frameCENickname->SetEditorMode(TRUE, CE_HOME);
+    frameCENickname->ShowModal();
+    delete frameCENickname;
+    frameCENickname = NULL;
+}
+
+void frmContactEditor::DeleteHomeNickname( wxCommandEvent& event )
+{
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeNicknames, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeNicknames->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData,
+    &HomeNicknamesList,
+    &HomeNicknamesListLanguage,
+    &HomeNicknamesListAltID,
+    &HomeNicknamesListPID,
+    &HomeNicknamesListTokens,
+    &HomeNicknamesListType,
+    &HomeNicknamesListPref);
+
+}
+
+void frmContactEditor::AddHomeAddress( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this );
+    frameCEAddress->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeAddressList);
+    frameCEAddress->SetupPointers(&HomeAddressList,
+       &HomeAddressListTown,
+       &HomeAddressListCounty,
+       &HomeAddressListPostCode,
+       &HomeAddressListCountry,
+       &HomeAddressListLabel,
+       &HomeAddressListLang,   
+       &HomeAddressListAltID,
+       &HomeAddressListPID,
+       &HomeAddressListTokens,
+       &HomeAddressListGeo,
+       &HomeAddressListTimezone,
+       &HomeAddressListType,
+       &HomeAddressListMediatype,
+       &HomeAddressListPref,
+       lboHomeAddresses,
+       (intValueSeek));
+    frameCEAddress->ShowModal(); 
+    delete frameCEAddress;
+    frameCEAddress = NULL;
+}
+
+void frmContactEditor::ModifyHomeAddress( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this );
+    frameCEAddress->SetupPointers(&HomeAddressList,
+       &HomeAddressListTown,
+       &HomeAddressListCounty,
+       &HomeAddressListPostCode,
+       &HomeAddressListCountry,
+       &HomeAddressListLabel,
+       &HomeAddressListLang,   
+       &HomeAddressListAltID,
+       &HomeAddressListPID,
+       &HomeAddressListTokens,
+       &HomeAddressListGeo,
+       &HomeAddressListTimezone,
+       &HomeAddressListType,
+       &HomeAddressListMediatype,
+       &HomeAddressListPref,
+       lboHomeAddresses,
+       intSelectedData);    
+    frameCEAddress->SetEditorMode(TRUE, CE_HOME);
+    frameCEAddress->ShowModal();
+    delete frameCEAddress;
+    frameCEAddress = NULL;
+}
+
+void frmContactEditor::DeleteHomeAddress( wxCommandEvent& event )
+{
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeAddresses->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeAddressList,
+    &HomeAddressListTown, &HomeAddressListCounty,
+    &HomeAddressListPostCode, &HomeAddressListCountry,
+    &HomeAddressList, &HomeAddressListLabel,
+    &HomeAddressListLang, &HomeAddressListAltID,
+    &HomeAddressListPID, &HomeAddressListTokens,
+    &HomeAddressListGeo, &HomeAddressListTimezone,
+    &HomeAddressListType, &HomeAddressListMediatype,
+    &HomeAddressListPref);
+    
+}
+
+void frmContactEditor::AddHomeEmail( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this );
+    frameCEEmail->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeAddressList);
+    frameCEEmail->SetupPointers(&HomeEmailList,
+       &HomeEmailListAltID,
+       &HomeEmailListPID,
+       &HomeEmailListType,
+       &HomeEmailListTokens,
+       &HomeEmailListPref,
+       lboHomeEmails,
+       (intValueSeek));
+    frameCEEmail->ShowModal(); 
+    delete frameCEEmail;
+    frameCEEmail = NULL;
+}
+
+void frmContactEditor::ModifyHomeEmail( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeEmails, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this );
+    frameCEEmail->SetupPointers(&HomeEmailList,
+       &HomeEmailListAltID,
+       &HomeEmailListPID,
+       &HomeEmailListType,
+       &HomeEmailListTokens,
+       &HomeEmailListPref,
+       lboHomeEmails,
+       intSelectedData);    
+    frameCEEmail->SetEditorMode(TRUE, CE_HOME);
+    frameCEEmail->ShowModal();
+    delete frameCEEmail;
+    frameCEEmail = NULL;
+}
+
+
+void frmContactEditor::DeleteHomeEmail( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeEmails, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeEmails->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeEmailList,
+    &HomeEmailListAltID, &HomeEmailListPID,
+    &HomeEmailListType, &HomeEmailListTokens,
+    &HomeEmailListPref);
+}
+
+
+void frmContactEditor::AddHomeIM( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this );
+    frameCEIM->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeIMList);
+    frameCEIM->SetupPointers(&HomeIMList,
+       &HomeIMListAltID,
+       &HomeIMListPID,
+       &HomeIMListType,
+       &HomeIMListTokens,
+       &HomeIMListMediatype,   
+       &HomeIMListPref,
+       lboHomeIM,
+       (intValueSeek));
+    frameCEIM->ShowModal(); 
+    delete frameCEIM;
+    frameCEIM = NULL;
+}
+
+void frmContactEditor::ModifyHomeIM( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeIM, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this );
+    frameCEIM->SetupPointers(&HomeIMList,
+       &HomeIMListAltID,
+       &HomeIMListPID,
+       &HomeIMListType,
+       &HomeIMListTokens,
+       &HomeIMListMediatype,   
+       &HomeIMListPref,
+       lboHomeIM,
+       intSelectedData);    
+    frameCEIM->SetEditorMode(TRUE, CE_HOME);
+    frameCEIM->ShowModal();
+    delete frameCEIM;
+    frameCEIM = NULL;
+}
+
+void frmContactEditor::DeleteHomeIM( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeIM, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeIM->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeIMList,
+    &HomeIMListAltID, &HomeIMListPID,
+    &HomeIMListType, &HomeIMListTokens,
+    &HomeIMListMediatype, &HomeIMListPref);
+    
+}
+
+void frmContactEditor::AddHomeTelephone( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this );
+    frameCETel->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeTelephoneList);
+    frameCETel->SetupPointers(&HomeTelephoneList,
+       &HomeTelephoneListAltID,
+       &HomeTelephoneListPID,
+       &HomeTelephoneListType,
+       &HomeTelephoneListTokens,
+       &HomeTelephoneListPref,
+       lboHomeTelephone,
+       (intValueSeek));
+    frameCETel->ShowModal(); 
+    delete frameCETel;
+    frameCETel = NULL;
+}
+
+void frmContactEditor::ModifyHomeTelephone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeTelephone, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this );
+    frameCETel->SetupPointers(&HomeTelephoneList,
+       &HomeTelephoneListAltID,
+       &HomeTelephoneListPID,
+       &HomeTelephoneListType,
+       &HomeTelephoneListTokens,
+       &HomeTelephoneListPref,
+       lboHomeTelephone,
+       intSelectedData);    
+    frameCETel->SetEditorMode(TRUE, CE_HOME);
+    frameCETel->ShowModal();
+    delete frameCETel;
+    frameCETel = NULL;
+}
+
+void frmContactEditor::DeleteHomeTelephone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeTelephone, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeTelephone->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeTelephoneList,
+    &HomeTelephoneListAltID, &HomeTelephoneListPID,
+    &HomeTelephoneListType, &HomeTelephoneListTokens,
+    &HomeTelephoneListPref);
+    
+}
+
+void frmContactEditor::AddHomeLanguage( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this );
+    frameCELang->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeLanguageList);
+    frameCELang->SetupPointers(&HomeLanguageList,
+       &HomeLanguageListAltID,
+       &HomeLanguageListPID,
+       &HomeLanguageListType,
+       &HomeLanguageListTokens,
+       &HomeLanguageListPref,
+       lboHomeLanguages,
+       (intValueSeek));
+    frameCELang->ShowModal(); 
+    delete frameCELang;
+    frameCELang = NULL;
+}
+
+void frmContactEditor::ModifyHomeLanguage( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeLanguages, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this );
+    frameCELang->SetupPointers(&HomeLanguageList,
+       &HomeLanguageListAltID,
+       &HomeLanguageListPID,
+       &HomeLanguageListType,
+       &HomeLanguageListTokens,        
+       &HomeLanguageListPref,
+       lboHomeLanguages,
+       intSelectedData);    
+    frameCELang->SetEditorMode(TRUE, CE_HOME);
+    frameCELang->ShowModal();
+    delete frameCELang;
+    frameCELang = NULL;
+}
+
+void frmContactEditor::DeleteHomeLanguage( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeLanguages, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeLanguages->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeLanguageList,
+    &HomeLanguageListAltID, &HomeLanguageListPID,
+    &HomeLanguageListType, &HomeLanguageListTokens,
+    &HomeLanguageListPref);
+    
+}
+
+void frmContactEditor::AddHomeTimezone( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this );
+    frameCETZ->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeTZList);
+    frameCETZ->SetupPointers(&HomeTZList,
+       &HomeTZListAltID,
+       &HomeTZListPID,
+       &HomeTZListType,
+       &HomeTZListTokens,
+       &HomeTZListMediatype,   
+       &HomeTZListPref,
+       lboHomeTimezones,
+       (intValueSeek));
+    frameCETZ->ShowModal(); 
+    delete frameCETZ;
+    frameCETZ = NULL;
+}
+
+void frmContactEditor::ModifyHomeTimezone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeTimezones, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this );
+    frameCETZ->SetupPointers(&HomeTZList,
+       &HomeTZListAltID,
+       &HomeTZListPID,
+       &HomeTZListType,
+       &HomeTZListTokens,
+       &HomeTZListMediatype,   
+       &HomeTZListPref,
+       lboHomeTimezones,
+       intSelectedData);
+    frameCETZ->SetEditorMode(TRUE, CE_HOME);
+    frameCETZ->ShowModal();
+    delete frameCETZ;
+    frameCETZ = NULL;
+}
+
+void frmContactEditor::DeleteHomeTimezone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeTimezones, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeTimezones->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeTZList,
+    &HomeTZListAltID, &HomeTZListPID,
+    &HomeTZListType, &HomeTZListTokens,
+    &HomeTZListMediatype, &HomeTZListPref);
+    
+}
+
+void frmContactEditor::AddHomeGeoposition( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this );
+    frameCEGeo->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeGeographyList);
+    frameCEGeo->SetupPointers(&HomeGeographyList,
+       &HomeGeographyListAltID,
+       &HomeGeographyListPID,
+       &HomeGeographyListType,
+       &HomeGeographyListTokens,
+       &HomeGeographyListMediatype,    
+       &HomeGeographyListPref,
+       lboHomeGeoposition,
+       (intValueSeek));
+    frameCEGeo->ShowModal(); 
+    delete frameCEGeo;
+    frameCEGeo = NULL;
+}
+
+void frmContactEditor::ModifyHomeGeoposition( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeGeoposition, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this );
+    frameCEGeo->SetupPointers(&HomeGeographyList,
+       &HomeGeographyListAltID,
+       &HomeGeographyListPID,
+       &HomeGeographyListType,
+       &HomeGeographyListTokens,
+       &HomeGeographyListMediatype,    
+       &HomeGeographyListPref,
+       lboHomeGeoposition,
+       intSelectedData);
+    frameCEGeo->SetEditorMode(TRUE, CE_HOME);
+    frameCEGeo->ShowModal();
+    delete frameCEGeo;
+    frameCEGeo = NULL;
+}
+
+void frmContactEditor::DeleteHomeGeoposition( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeGeoposition, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeGeoposition->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeGeographyList,
+    &HomeGeographyListAltID, &HomeGeographyListPID,
+    &HomeGeographyListType, &HomeGeographyListTokens,
+    &HomeGeographyListMediatype, &HomeGeographyListPref);
+    
+}
+
+void frmContactEditor::AddHomeWebsite( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this );
+    frameCEWeb->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeWebsiteList);
+    frameCEWeb->SetupPointers(&HomeWebsiteList,
+       &HomeWebsiteListAltID,
+       &HomeWebsiteListPID,
+       &HomeWebsiteListType,
+       &HomeWebsiteListTokens,
+       &HomeWebsiteListMediatype,
+       &HomeWebsiteListPref,
+       lboHomeWebsites,
+       (intValueSeek));
+    frameCEWeb->ShowModal();
+    delete frameCEWeb;
+    frameCEWeb = NULL;
+}
+
+void frmContactEditor::ModifyHomeWebsite( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeWebsites, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this );
+    frameCEWeb->SetupPointers(&HomeWebsiteList,
+       &HomeWebsiteListAltID,
+       &HomeWebsiteListPID,
+       &HomeWebsiteListType,
+       &HomeWebsiteListTokens,
+       &HomeWebsiteListMediatype,      
+       &HomeWebsiteListPref,
+       lboHomeWebsites,
+       intSelectedData);
+    frameCEWeb->SetEditorMode(TRUE, CE_HOME);
+    frameCEWeb->ShowModal();
+    delete frameCEWeb;
+    frameCEWeb = NULL;
+}
+
+void frmContactEditor::DeleteHomeWebsite( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeWebsites, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeWebsites->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeWebsiteList,
+    &HomeWebsiteListAltID, &HomeWebsiteListPID,
+    &HomeWebsiteListType, &HomeWebsiteListTokens,
+    &HomeWebsiteListMediatype, &HomeWebsiteListPref);
+    
+}
+
+void frmContactEditor::AddHomeTitle( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this );
+    frameCETitle->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeTitleList);
+    frameCETitle->SetupPointers(&HomeTitleList,
+       &HomeTitleListLanguage,    
+       &HomeTitleListAltID,
+       &HomeTitleListPID,
+       &HomeTitleListType,
+       &HomeTitleListTokens,
+       &HomeTitleListPref,
+       lboHomeTitles,
+       (intValueSeek));
+    frameCETitle->ShowModal();
+    delete frameCETitle;
+    frameCETitle = NULL;
+}
+
+void frmContactEditor::ModifyHomeTitle( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeTitles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this );
+    frameCETitle->SetupPointers(&HomeTitleList,
+       &HomeTitleListLanguage,
+       &HomeTitleListAltID,
+       &HomeTitleListPID,
+       &HomeTitleListType,
+       &HomeTitleListTokens,   
+       &HomeTitleListPref,
+       lboHomeTitles,
+       intSelectedData);
+    frameCETitle->SetEditorMode(TRUE, CE_HOME);
+    frameCETitle->ShowModal();
+    delete frameCETitle;
+    frameCETitle = NULL;
+}
+
+void frmContactEditor::DeleteHomeTitle( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeTitles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeTitles->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeTitleList,
+    &HomeTitleListLanguage, &HomeTitleListAltID,
+    &HomeTitleListPID, &HomeTitleListType,
+    &HomeTitleListTokens, &HomeTitleListPref);
+    
+}
+
+void frmContactEditor::AddHomeRole( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this );
+    frameCERole->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeRoleList);
+    frameCERole->SetupPointers(&HomeRoleList,
+       &HomeRoleListLanguage,
+       &HomeRoleListAltID,
+       &HomeRoleListPID,
+       &HomeRoleListType,
+       &HomeRoleListTokens,
+       &HomeRoleListPref,
+       lboHomeRoles,
+       (intValueSeek));
+    frameCERole->ShowModal();
+    delete frameCERole;
+    frameCERole = NULL;
+}
+
+void frmContactEditor::ModifyHomeRole( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeRoles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this );
+    frameCERole->SetupPointers(&HomeRoleList,
+       &HomeRoleListLanguage,
+       &HomeRoleListAltID,
+       &HomeRoleListPID,
+       &HomeRoleListType,
+       &HomeRoleListTokens,    
+       &HomeRoleListPref,
+       lboHomeRoles,
+       intSelectedData);
+    frameCERole->SetEditorMode(TRUE, CE_HOME);
+    frameCERole->ShowModal();
+    delete frameCERole;
+    frameCERole = NULL;
+}
+
+void frmContactEditor::DeleteHomeRole( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeRoles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeRoles->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeRoleList,
+    &HomeRoleListLanguage, &HomeRoleListAltID,
+    &HomeRoleListPID, &HomeRoleListType,
+    &HomeRoleListTokens, &HomeRoleListPref);
+    
+}
+
+void frmContactEditor::AddHomeOrganisation( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this );
+    frameCEOrg->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeOrganisationsList);
+    frameCEOrg->SetupPointers(&HomeOrganisationsList,
+       &HomeOrganisationsListLanguage,
+       &HomeOrganisationsListSortAs,   
+       &HomeOrganisationsListAltID,
+       &HomeOrganisationsListPID,
+       &HomeOrganisationsListType,
+       &HomeOrganisationsListTokens,
+       &HomeOrganisationsListPref,
+       lboHomeOrganisations,
+       (intValueSeek));
+    frameCEOrg->ShowModal();
+    delete frameCEOrg;
+    frameCEOrg = NULL;
+}
+
+void frmContactEditor::ModifyHomeOrganisation( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeOrganisations, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this );
+    frameCEOrg->SetupPointers(&HomeOrganisationsList,
+       &HomeOrganisationsListLanguage,
+       &HomeOrganisationsListSortAs,   
+       &HomeOrganisationsListAltID,
+       &HomeOrganisationsListPID,
+       &HomeOrganisationsListType,
+       &HomeOrganisationsListTokens,   
+       &HomeOrganisationsListPref,
+       lboHomeOrganisations,
+       intSelectedData);
+    frameCEOrg->SetEditorMode(TRUE, CE_HOME);
+    frameCEOrg->ShowModal();
+    delete frameCEOrg;
+    frameCEOrg = NULL;
+}
+
+void frmContactEditor::DeleteHomeOrganisation( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeOrganisations, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboHomeOrganisations->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeOrganisationsList,
+    &HomeOrganisationsListLanguage, &HomeOrganisationsListSortAs,
+    &HomeOrganisationsListAltID, &HomeOrganisationsListPID,
+    &HomeOrganisationsListType, &HomeOrganisationsListTokens,
+    &HomeOrganisationsListPref);
+    
+}
+
+void frmContactEditor::AddHomeNote( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this );
+    frameCENote->SetEditorMode(FALSE, CE_HOME);
+    intResult = GetLastInt(&HomeNoteList);
+    frameCENote->SetupPointers(&HomeNoteList,
+       &HomeNoteListLanguage,
+       &HomeNoteListAltID,
+       &HomeNoteListPID,
+       &HomeNoteListType,
+       &HomeNoteListTokens,
+       &HomeNoteListPref,
+       lboHomeNotes,
+       (intValueSeek));
+    frameCENote->ShowModal();
+    delete frameCENote;
+    frameCENote = NULL;
+}
+
+void frmContactEditor::ModifyHomeNote( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeNotes, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this );
+    frameCENote->SetupPointers(&HomeNoteList,
+       &HomeNoteListLanguage,
+       &HomeNoteListAltID,
+       &HomeNoteListPID,
+       &HomeNoteListType,
+       &HomeNoteListTokens,    
+       &HomeNoteListPref,
+       lboHomeNotes,
+       intSelectedData);
+    frameCENote->SetEditorMode(TRUE, CE_HOME);
+    frameCENote->ShowModal();
+    delete frameCENote;
+    frameCENote = NULL;
+}
+
+void frmContactEditor::DeleteHomeNote( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboHomeNotes, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboNotes->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &HomeNoteList,
+    &HomeNoteListLanguage, &HomeNoteListAltID,
+    &HomeNoteListPID, &HomeNoteListType,
+    &HomeNoteListTokens, &HomeNoteListPref);
+    
+}
+
+void frmContactEditor::AddBusinessNickname( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this );
+    frameCENickname->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessNicknamesList);
+    frameCENickname->SetupPointers(&BusinessNicknamesList,     
+       &BusinessNicknamesListAltID,
+       &BusinessNicknamesListPID,
+       &BusinessNicknamesListType,
+       &BusinessNicknamesListLanguage, 
+       &BusinessNicknamesListTokens,
+       &BusinessNicknamesListPref,
+       lboBusinessNicknames,
+       (intValueSeek));
+    frameCENickname->ShowModal(); 
+    delete frameCENickname;
+    frameCENickname = NULL;
+}
+
+void frmContactEditor::ModifyBusinessNickname( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessNicknames, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorNickname *frameCENickname = new frmContactEditorNickname ( this );
+    frameCENickname->SetupPointers(&BusinessNicknamesList,     
+       &BusinessNicknamesListAltID,
+       &BusinessNicknamesListPID,
+       &BusinessNicknamesListType,
+       &BusinessNicknamesListLanguage, 
+       &BusinessNicknamesListTokens,
+       &BusinessNicknamesListPref,
+       lboBusinessNicknames,
+       intSelectedData);    
+    frameCENickname->SetEditorMode(TRUE, CE_WORK);
+    frameCENickname->ShowModal();
+    delete frameCENickname;
+    frameCENickname = NULL;
+}
+
+void frmContactEditor::DeleteBusinessNickname( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessNicknames, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessNicknames->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData,
+    &BusinessNicknamesList,
+    &BusinessNicknamesListLanguage,
+    &BusinessNicknamesListAltID,
+    &BusinessNicknamesListPID,
+    &BusinessNicknamesListTokens,
+    &BusinessNicknamesListType,
+    &BusinessNicknamesListPref);
+}
+
+void frmContactEditor::AddBusinessAddress( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this );
+    frameCEAddress->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessAddressList);
+    frameCEAddress->SetupPointers(&BusinessAddressList,
+       &BusinessAddressListTown,
+       &BusinessAddressListCounty,
+       &BusinessAddressListPostCode,
+       &BusinessAddressListCountry,
+       &BusinessAddressListLabel,
+       &BusinessAddressListLang,       
+       &BusinessAddressListAltID,
+       &BusinessAddressListPID,
+       &BusinessAddressListTokens,
+       &BusinessAddressListGeo,
+       &BusinessAddressListTimezone,
+       &BusinessAddressListType,
+       &BusinessAddressListMediatype,
+       &BusinessAddressListPref,
+       lboBusinessAddresses,
+       (intValueSeek));
+    frameCEAddress->ShowModal(); 
+    delete frameCEAddress;
+    frameCEAddress = NULL;
+}
+
+void frmContactEditor::ModifyBusinessAddress( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorAddress *frameCEAddress = new frmContactEditorAddress ( this );
+    frameCEAddress->SetupPointers(&BusinessAddressList,
+       &BusinessAddressListTown,
+       &BusinessAddressListCounty,
+       &BusinessAddressListPostCode,
+       &BusinessAddressListCountry,
+       &BusinessAddressListLabel,
+       &BusinessAddressListLang,       
+       &BusinessAddressListAltID,
+       &BusinessAddressListPID,
+       &BusinessAddressListTokens,
+       &BusinessAddressListGeo,
+       &BusinessAddressListTimezone,
+       &BusinessAddressListType,
+       &BusinessAddressListMediatype,
+       &BusinessAddressListPref,
+       lboBusinessAddresses,
+       intSelectedData);    
+    frameCEAddress->SetEditorMode(TRUE, CE_WORK);
+    frameCEAddress->ShowModal();
+    delete frameCEAddress;
+    frameCEAddress = NULL;
+}
+
+void frmContactEditor::DeleteBusinessAddress( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessAddresses->DeleteItem(longSelected);
+    DeleteMapData(intSelectedData, &BusinessAddressList,
+    &BusinessAddressListTown, &BusinessAddressListCounty,
+    &BusinessAddressListPostCode, &BusinessAddressListCountry,
+    &BusinessAddressList, &BusinessAddressListLabel,
+    &BusinessAddressListLang, &BusinessAddressListAltID,
+    &BusinessAddressListPID, &BusinessAddressListTokens,
+    &BusinessAddressListGeo, &BusinessAddressListTimezone,
+    &BusinessAddressListType, &BusinessAddressListMediatype,
+    &BusinessAddressListPref);
+    
+}
+
+void frmContactEditor::AddBusinessEmail( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this );
+    frameCEEmail->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessAddressList);
+    frameCEEmail->SetupPointers(&BusinessEmailList,
+       &BusinessEmailListAltID,
+       &BusinessEmailListPID,
+       &BusinessEmailListType,
+       &BusinessEmailListTokens,
+       &BusinessEmailListPref,
+       lboBusinessEmail,
+       (intValueSeek));
+    frameCEEmail->ShowModal(); 
+    delete frameCEEmail;
+    frameCEEmail = NULL;
+}
+
+void frmContactEditor::ModifyBusinessEmail( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessEmail, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorEmail *frameCEEmail = new frmContactEditorEmail ( this );
+    frameCEEmail->SetupPointers(&BusinessEmailList,
+       &BusinessEmailListAltID,
+       &BusinessEmailListPID,
+       &BusinessEmailListType,
+       &BusinessEmailListTokens,
+       &BusinessEmailListPref,
+       lboBusinessEmail,
+       intSelectedData);    
+    frameCEEmail->SetEditorMode(TRUE, CE_WORK);
+    frameCEEmail->ShowModal();
+    delete frameCEEmail;
+    frameCEEmail = NULL;
+}
+
+void frmContactEditor::DeleteBusinessEmail( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessEmail, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessEmail->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessEmailList,
+    &BusinessEmailListAltID, &BusinessEmailListPID,
+    &BusinessEmailListType, &BusinessEmailListTokens,
+    &BusinessEmailListPref);
+    
+}
+
+void frmContactEditor::AddBusinessIM( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this );
+    frameCEIM->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessIMList);
+    frameCEIM->SetupPointers(&BusinessIMList,
+       &BusinessIMListAltID,
+       &BusinessIMListPID,
+       &BusinessIMListType,
+       &BusinessIMListTokens,
+       &BusinessIMListMediatype,       
+       &BusinessIMListPref,
+       lboBusinessIM,
+       (intValueSeek));
+    frameCEIM->ShowModal(); 
+    delete frameCEIM;
+    frameCEIM = NULL;
+}
+
+void frmContactEditor::ModifyBusinessIM( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessIM, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorIM *frameCEIM = new frmContactEditorIM ( this );
+    frameCEIM->SetupPointers(&BusinessIMList,
+       &BusinessIMListAltID,
+       &BusinessIMListPID,
+       &BusinessIMListType,
+       &BusinessIMListTokens,
+       &BusinessIMListMediatype,
+       &BusinessIMListPref,
+       lboBusinessIM,
+       intSelectedData);    
+    frameCEIM->SetEditorMode(TRUE, CE_WORK);
+    frameCEIM->ShowModal();
+    delete frameCEIM;
+    frameCEIM = NULL;
+}
+
+void frmContactEditor::DeleteBusinessIM( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessIM, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessIM->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessIMList,
+    &BusinessIMListAltID, &BusinessIMListPID,
+    &BusinessIMListType, &BusinessIMListTokens,
+    &BusinessIMListMediatype, &BusinessIMListPref);
+    
+}
+
+void frmContactEditor::AddBusinessTelephone( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this );
+    frameCETel->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessTelephoneList);
+    frameCETel->SetupPointers(&BusinessTelephoneList,
+       &BusinessTelephoneListAltID,
+       &BusinessTelephoneListPID,
+       &BusinessTelephoneListType,
+       &BusinessTelephoneListTokens,
+       &BusinessTelephoneListPref,
+       lboBusinessTelephone,
+       (intValueSeek));
+    frameCETel->ShowModal(); 
+    delete frameCETel;
+    frameCETel = NULL;
+}
+
+void frmContactEditor::ModifyBusinessTelephone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessTelephone, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTelephone *frameCETel = new frmContactEditorTelephone ( this );
+    frameCETel->SetupPointers(&BusinessTelephoneList,
+       &BusinessTelephoneListAltID,
+       &BusinessTelephoneListPID,
+       &BusinessTelephoneListType,
+       &BusinessTelephoneListTokens,
+       &BusinessTelephoneListPref,
+       lboBusinessTelephone,
+       intSelectedData);    
+    frameCETel->SetEditorMode(TRUE, CE_WORK);
+    frameCETel->ShowModal();
+    delete frameCETel;
+    frameCETel = NULL;
+}
+
+void frmContactEditor::DeleteBusinessTelephone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessTelephone, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessTelephone->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessTelephoneList,
+    &BusinessTelephoneListAltID, &BusinessTelephoneListPID,
+    &BusinessTelephoneListType, &BusinessTelephoneListTokens,
+    &BusinessTelephoneListPref);
+    
+}
+
+void frmContactEditor::AddBusinessLanguage( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this );
+    frameCELang->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessLanguageList);
+    frameCELang->SetupPointers(&BusinessLanguageList,
+       &BusinessLanguageListAltID,
+       &BusinessLanguageListPID,
+       &BusinessLanguageListType,
+       &BusinessLanguageListTokens,
+       &BusinessLanguageListPref,
+       lboBusinessLanguages,
+       (intValueSeek));
+    frameCELang->ShowModal(); 
+    delete frameCELang;
+    frameCELang = NULL;
+}
+
+void frmContactEditor::ModifyBusinessLanguage( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessLanguages, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorLanguages *frameCELang = new frmContactEditorLanguages ( this );
+    frameCELang->SetupPointers(&BusinessLanguageList,
+       &BusinessLanguageListAltID,
+       &BusinessLanguageListPID,
+       &BusinessLanguageListType,
+       &BusinessLanguageListTokens,    
+       &BusinessLanguageListPref,
+       lboBusinessLanguages,
+       intSelectedData);    
+    frameCELang->SetEditorMode(TRUE, CE_WORK);
+    frameCELang->ShowModal();
+    delete frameCELang;
+    frameCELang = NULL;
+}
+
+void frmContactEditor::DeleteBusinessLanguage( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessLanguages, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessLanguages->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessLanguageList,
+    &BusinessLanguageListAltID, &BusinessLanguageListPID,
+    &BusinessLanguageListType, &BusinessLanguageListTokens,
+    &BusinessLanguageListPref);
+    
+}
+
+void frmContactEditor::AddBusinessTimezone( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this );
+    frameCETZ->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessTZList);
+    frameCETZ->SetupPointers(&BusinessTZList,
+       &BusinessTZListAltID,
+       &BusinessTZListPID,
+       &BusinessTZListType,
+       &BusinessTZListTokens,
+       &BusinessTZListMediatype,       
+       &BusinessTZListPref,
+       lboBusinessTimezones,
+       (intValueSeek));
+    frameCETZ->ShowModal(); 
+    delete frameCETZ;
+    frameCETZ = NULL;
+}
+
+void frmContactEditor::ModifyBusinessTimezone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessTimezones, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTimezones *frameCETZ = new frmContactEditorTimezones ( this );
+    frameCETZ->SetupPointers(&BusinessTZList,
+       &BusinessTZListAltID,
+       &BusinessTZListPID,
+       &BusinessTZListType,
+       &BusinessTZListTokens,
+       &BusinessTZListMediatype,       
+       &BusinessTZListPref,
+       lboBusinessTimezones,
+       intSelectedData);
+    frameCETZ->SetEditorMode(TRUE, CE_WORK);
+    frameCETZ->ShowModal();
+    delete frameCETZ;
+    frameCETZ = NULL;
+}
+
+void frmContactEditor::DeleteBusinessTimezone( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessTimezones, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessTimezones->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessTZList,
+    &BusinessTZListAltID, &BusinessTZListPID,
+    &BusinessTZListType, &BusinessTZListTokens,
+    &BusinessTZListMediatype, &BusinessTZListPref);
+    
+}
+
+void frmContactEditor::AddBusinessGeoposition( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this );
+    frameCEGeo->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessGeographyList);
+    frameCEGeo->SetupPointers(&BusinessGeographyList,
+       &BusinessGeographyListAltID,
+       &BusinessGeographyListPID,
+       &BusinessGeographyListType,
+       &BusinessGeographyListTokens,
+       &BusinessGeographyListMediatype,        
+       &BusinessGeographyListPref,
+       lboBusinessGeoposition,
+       (intValueSeek));
+    frameCEGeo->ShowModal(); 
+    delete frameCEGeo;
+    frameCEGeo = NULL;
+}
+
+void frmContactEditor::ModifyBusinessGeoposition( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessGeoposition, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorGeoposition *frameCEGeo = new frmContactEditorGeoposition ( this );
+    frameCEGeo->SetupPointers(&BusinessGeographyList,
+       &BusinessGeographyListAltID,
+       &BusinessGeographyListPID,
+       &BusinessGeographyListType,
+       &BusinessGeographyListTokens,
+       &BusinessGeographyListMediatype,        
+       &BusinessGeographyListPref,
+       lboBusinessGeoposition,
+       intSelectedData);
+    frameCEGeo->SetEditorMode(TRUE, CE_WORK);
+    frameCEGeo->ShowModal();
+    delete frameCEGeo;
+    frameCEGeo = NULL;
+}
+
+void frmContactEditor::DeleteBusinessGeoposition( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessGeoposition, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessGeoposition->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessGeographyList,
+    &BusinessGeographyListAltID, &BusinessGeographyListPID,
+    &BusinessGeographyListType, &BusinessGeographyListTokens,
+    &BusinessGeographyListMediatype, &BusinessGeographyListPref);
+    
+}
+
+void frmContactEditor::AddBusinessWebsite( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this );
+    frameCEWeb->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessWebsiteList);
+    frameCEWeb->SetupPointers(&BusinessWebsiteList,
+       &BusinessWebsiteListAltID,
+       &BusinessWebsiteListPID,
+       &BusinessWebsiteListType,
+       &BusinessWebsiteListTokens,
+       &BusinessWebsiteListMediatype,
+       &BusinessWebsiteListPref,
+       lboBusinessWebsites,
+       (intValueSeek));
+    frameCEWeb->ShowModal();
+    delete frameCEWeb;
+    frameCEWeb = NULL;
+}
+
+void frmContactEditor::ModifyBusinessWebsite( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessWebsites, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorWebsites *frameCEWeb = new frmContactEditorWebsites ( this );
+    frameCEWeb->SetupPointers(&BusinessWebsiteList,
+       &BusinessWebsiteListAltID,
+       &BusinessWebsiteListPID,
+       &BusinessWebsiteListType,
+       &BusinessWebsiteListTokens,
+       &BusinessWebsiteListMediatype,  
+       &BusinessWebsiteListPref,
+       lboBusinessWebsites,
+       intSelectedData);
+    frameCEWeb->SetEditorMode(TRUE, CE_WORK);
+    frameCEWeb->ShowModal();
+    delete frameCEWeb;
+    frameCEWeb = NULL;
+}
+
+void frmContactEditor::DeleteBusinessWebsite( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessWebsites, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessWebsites->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessWebsiteList,
+    &BusinessWebsiteListAltID, &BusinessWebsiteListPID,
+    &BusinessWebsiteListType, &BusinessWebsiteListTokens,
+    &BusinessWebsiteListMediatype, &BusinessWebsiteListPref);
+    
+}
+
+void frmContactEditor::AddBusinessTitle( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this );
+    frameCETitle->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessTitleList);
+    frameCETitle->SetupPointers(&BusinessTitleList,
+       &BusinessTitleListLanguage,    
+       &BusinessTitleListAltID,
+       &BusinessTitleListPID,
+       &BusinessTitleListType,
+       &BusinessTitleListTokens,
+       &BusinessTitleListPref,
+       lboBusinessTitles,
+       (intValueSeek));
+    frameCETitle->ShowModal();
+    delete frameCETitle;
+    frameCETitle = NULL;
+}
+
+void frmContactEditor::ModifyBusinessTitle( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessTitles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorTitles *frameCETitle = new frmContactEditorTitles ( this );
+    frameCETitle->SetupPointers(&BusinessTitleList,
+       &BusinessTitleListLanguage,
+       &BusinessTitleListAltID,
+       &BusinessTitleListPID,
+       &BusinessTitleListType,
+       &BusinessTitleListTokens,       
+       &BusinessTitleListPref,
+       lboBusinessTitles,
+       intSelectedData);
+    frameCETitle->SetEditorMode(TRUE, CE_WORK);
+    frameCETitle->ShowModal();
+    delete frameCETitle;
+    frameCETitle = NULL;
+}
+
+void frmContactEditor::DeleteBusinessTitle( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessTitles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboTitles->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessTitleList,
+    &BusinessTitleListLanguage, &BusinessTitleListAltID,
+    &BusinessTitleListPID, &BusinessTitleListType,
+    &BusinessTitleListTokens, &BusinessTitleListPref);
+    
+}
+
+void frmContactEditor::AddBusinessRole( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this );
+    frameCERole->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessRoleList);
+    frameCERole->SetupPointers(&BusinessRoleList,
+       &BusinessRoleListLanguage,
+       &BusinessRoleListAltID,
+       &BusinessRoleListPID,
+       &BusinessRoleListType,
+       &BusinessRoleListTokens,
+       &BusinessRoleListPref,
+       lboBusinessRoles,
+       (intValueSeek));
+    frameCERole->ShowModal();
+    delete frameCERole;
+    frameCERole = NULL;
+}
+
+void frmContactEditor::ModifyBusinessRole( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessRoles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorRoles *frameCERole = new frmContactEditorRoles ( this );
+    frameCERole->SetupPointers(&BusinessRoleList,
+       &BusinessRoleListLanguage,
+       &BusinessRoleListAltID,
+       &BusinessRoleListPID,
+       &BusinessRoleListType,
+       &BusinessRoleListTokens,        
+       &BusinessRoleListPref,
+       lboBusinessRoles,
+       intSelectedData);
+    frameCERole->SetEditorMode(TRUE, CE_WORK);
+    frameCERole->ShowModal();
+    delete frameCERole;
+    frameCERole = NULL;
+}
+
+void frmContactEditor::DeleteBusinessRole( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessRoles, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessRoles->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessRoleList,
+    &BusinessRoleListLanguage, &BusinessRoleListAltID,
+    &BusinessRoleListPID, &BusinessRoleListType,
+    &BusinessRoleListTokens, &BusinessRoleListPref);
+    
+}
+
+void frmContactEditor::AddBusinessOrganisation( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this );
+    frameCEOrg->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&GeneralOrganisationsList);
+    frameCEOrg->SetupPointers(&GeneralOrganisationsList,
+       &BusinessOrganisationsListLanguage,
+       &BusinessOrganisationsListSortAs,       
+       &BusinessOrganisationsListAltID,
+       &BusinessOrganisationsListPID,
+       &BusinessOrganisationsListType,
+       &BusinessOrganisationsListTokens,
+       &BusinessOrganisationsListPref,
+       lboBusinessOrganisations,
+       (intValueSeek));
+    frameCEOrg->ShowModal();
+    delete frameCEOrg;
+    frameCEOrg = NULL;
+}
+
+void frmContactEditor::ModifyBusinessOrganisation( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessOrganisations, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorOrganisations *frameCEOrg = new frmContactEditorOrganisations ( this );
+    frameCEOrg->SetupPointers(&BusinessOrganisationsList,
+       &BusinessOrganisationsListLanguage,
+       &BusinessOrganisationsListSortAs,       
+       &BusinessOrganisationsListAltID,
+       &BusinessOrganisationsListPID,
+       &BusinessOrganisationsListType,
+       &BusinessOrganisationsListTokens,       
+       &BusinessOrganisationsListPref,
+       lboBusinessOrganisations,
+       intSelectedData);
+    frameCEOrg->SetEditorMode(TRUE, CE_WORK);
+    frameCEOrg->ShowModal();
+    delete frameCEOrg;
+    frameCEOrg = NULL;
+}
+
+void frmContactEditor::DeleteBusinessOrganisation( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessOrganisations, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessOrganisations->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessOrganisationsList,
+    &BusinessOrganisationsListLanguage, &BusinessOrganisationsListSortAs,
+    &BusinessOrganisationsListAltID, &BusinessOrganisationsListPID,
+    &BusinessOrganisationsListType, &BusinessOrganisationsListTokens,
+    &BusinessOrganisationsListPref);
+    
+}
+
+void frmContactEditor::AddBusinessNote( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this );
+    frameCENote->SetEditorMode(FALSE, CE_WORK);
+    intResult = GetLastInt(&BusinessNoteList);
+    frameCENote->SetupPointers(&BusinessNoteList,
+       &BusinessNoteListLanguage,
+       &BusinessNoteListAltID,
+       &BusinessNoteListPID,
+       &BusinessNoteListType,
+       &BusinessNoteListTokens,
+       &BusinessNoteListPref,
+       lboBusinessNotes,
+       (intValueSeek));
+    frameCENote->ShowModal();
+    delete frameCENote;
+    frameCENote = NULL;
+}
+
+void frmContactEditor::ModifyBusinessNote( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessNotes, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorNotes *frameCENote = new frmContactEditorNotes ( this );
+    frameCENote->SetupPointers(&BusinessNoteList,
+       &BusinessNoteListLanguage,
+       &BusinessNoteListAltID,
+       &BusinessNoteListPID,
+       &BusinessNoteListType,
+       &BusinessNoteListTokens,        
+       &BusinessNoteListPref,
+       lboBusinessNotes,
+       intSelectedData);
+    frameCENote->SetEditorMode(TRUE, CE_WORK);
+    frameCENote->ShowModal();
+    delete frameCENote;
+    frameCENote = NULL;
+}
+
+void frmContactEditor::DeleteBusinessNote( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboBusinessNotes, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboBusinessNotes->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &BusinessNoteList,
+    &BusinessNoteListLanguage, &BusinessNoteListAltID,
+    &BusinessNoteListPID, &BusinessNoteListType,
+    &BusinessNoteListTokens, &BusinessNoteListPref);
+    
+}
+
+void frmContactEditor::AddCategory( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorCategory *frameCECategory = new frmContactEditorCategory ( this );
+    frameCECategory->SetEditorMode(FALSE);
+    intResult = GetLastInt(&CategoriesList);
+    frameCECategory->SetupPointers(&CategoriesList,
+       &CategoriesListAltID,
+       &CategoriesListPID,
+       &CategoriesListType,
+       &CategoriesListTokens,
+       &CategoriesListPref,
+       lboCategories,
+       (intValueSeek));
+    frameCECategory->ShowModal();
+    delete frameCECategory;
+    frameCECategory = NULL;
+}
+
+void frmContactEditor::ModifyCategory( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboCategories, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorCategory *frameCECategory = new frmContactEditorCategory ( this );
+    frameCECategory->SetupPointers(&CategoriesList,
+       &CategoriesListAltID,
+       &CategoriesListPID,
+       &CategoriesListType,
+       &CategoriesListTokens,  
+       &CategoriesListPref,
+       lboCategories,
+       intSelectedData);
+    frameCECategory->SetEditorMode(TRUE);
+    frameCECategory->ShowModal();
+    delete frameCECategory;
+    frameCECategory = NULL;
+}
+
+void frmContactEditor::DeleteCategory( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboCategories, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboCategories->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &CategoriesList,
+    &CategoriesListAltID, &CategoriesListPID,
+    &CategoriesListType, &CategoriesListTokens,
+    &CategoriesListPref);
+
+}
+
+void frmContactEditor::AddGroup( wxCommandEvent& event )
+{
+    
+    int intResult = 0;
+
+    XABViewMode XVMData = MainPtr->GetViewMode();
+
+    frmContactEditorGroup *frameCEGroup = new frmContactEditorGroup ( this );
+    frameCEGroup->SetEditorMode(FALSE, XVMData);
+    intResult = GetLastInt(&GroupsList);
+    frameCEGroup->SetupPointers(&GroupsList,
+       lboGroups,
+       wxSContactAccount,
+       intValueSeek);
+    frameCEGroup->ShowModal();
+    delete frameCEGroup;
+    frameCEGroup = NULL;
+    
+}
+
+void frmContactEditor::ModifyGroup( wxCommandEvent& event )
+{
+    
+    return;
+    
+}
+
+void frmContactEditor::DeleteGroup( wxCommandEvent& event )
+{
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboGroups, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboGroups->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &GroupsList);
+
+}
+
+void frmContactEditor::AddPicture( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorPicture *frameCEPicture = new frmContactEditorPicture ( this );
+    frameCEPicture->SetEditorMode(FALSE);
+    intResult = GetLastInt(&PicturesList);
+    frameCEPicture->SetupPointers(&PicturesList,
+       &PicturesListAltID,
+       &PicturesListPID,
+       &PicturesListType,
+       &PicturesListPicEncType,        
+       &PicturesListPictureType,       
+       &PicturesListTokens,
+       &PicturesListMediatype, 
+       &PicturesListPref,
+       lboPictures,
+       (intValueSeek));
+    frameCEPicture->ShowModal();
+    delete frameCEPicture;
+    frameCEPicture = NULL;
+}
+
+void frmContactEditor::ModifyPicture( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboPictures, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorPicture *frameCEPicture = new frmContactEditorPicture ( this );
+    frameCEPicture->SetupPointers(&PicturesList,
+       &PicturesListAltID,
+       &PicturesListPID,
+       &PicturesListType,
+       &PicturesListPicEncType,        
+       &PicturesListPictureType,       
+       &PicturesListTokens,
+       &PicturesListMediatype, 
+       &PicturesListPref,
+       lboPictures,
+       intSelectedData);
+    frameCEPicture->SetEditorMode(TRUE);
+    frameCEPicture->ShowModal();
+    delete frameCEPicture;
+    frameCEPicture = NULL;   
+    
+}
+
+void frmContactEditor::DeletePicture( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboPictures, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboPictures->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData,     
+    &PicturesList, &PicturesListAltID, &PicturesListPID, &PicturesListType,
+    &PicturesListPicEncType, &PicturesListPictureType, &PicturesListTokens,
+    &PicturesListMediatype, &PicturesListPref);
+       
+    wxMemoryInputStream istream(misc_emptyimage_png, sizeof(misc_emptyimage_png));
+    wxImage misc_emptyimage_png(istream, wxBITMAP_TYPE_PNG);
+    PictureImage = (wxBitmap)misc_emptyimage_png;      
+       
+    imgPicture->SetBitmap(PictureImage);
+}
+
+void frmContactEditor::LoadPicture( wxListEvent& event )
+{
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboPictures, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    std::string base64dec;
+    
+    std::map<int,std::string>::iterator initier;
+    
+    initier = PicturesList.find(intSelectedData);
+    
+    base64dec = base64_decode(initier->second);
+    
+    
+    wxMemoryInputStream istream(base64dec.c_str(), (size_t)base64dec.size());
+    wxImage photo;    
+    //wxMemoryInputStream istream(base64dec, (size_t)base64dec.size());
+    
+    if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){
+    
+       return;
+    
+    }
+    
+    
+    PictureImage = (wxBitmap)photo;
+    imgPicture->SetBitmap(PictureImage);
+    
+}
+
+void frmContactEditor::LoadLogo( wxListEvent& event )
+{
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboLogos, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    std::string base64dec;
+    
+    std::map<int,std::string>::iterator initier;
+    
+    initier = LogosList.find(intSelectedData);
+    
+    base64dec = base64_decode(initier->second);
+    
+    
+    wxMemoryInputStream istream(base64dec.c_str(), (size_t)base64dec.size());
+    wxImage photo;    
+    //wxMemoryInputStream istream(base64dec, (size_t)base64dec.size());
+    
+    if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){
+    
+       return;
+    
+    }
+    
+    
+    LogoImage = (wxBitmap)photo;
+    imgLogo->SetBitmap(LogoImage);
+
+}
+
+void frmContactEditor::AddLogo( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorPicture *frameCELogo = new frmContactEditorPicture ( this );
+    frameCELogo->SetEditorMode(FALSE);
+    intResult = GetLastInt(&LogosList);
+    frameCELogo->SetupPointers(&LogosList,
+       &LogosListAltID,
+       &LogosListPID,
+       &LogosListType,
+       &LogosListPicEncType,
+       &LogosListPictureType,  
+       &LogosListTokens,
+       &LogosListMediatype,    
+       &LogosListPref,
+       lboLogos,
+       (intValueSeek));
+    frameCELogo->ShowModal();
+    delete frameCELogo;
+    frameCELogo = NULL;
+}
+
+void frmContactEditor::ModifyLogo( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboLogos, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorPicture *frameCELogo = new frmContactEditorPicture ( this );
+    frameCELogo->SetupPointers(&LogosList,
+       &LogosListAltID,
+       &LogosListPID,
+       &LogosListType,
+       &LogosListPicEncType,   
+       &LogosListPictureType,  
+       &LogosListTokens,
+       &LogosListMediatype,    
+       &LogosListPref,
+       lboLogos,
+       intSelectedData);
+    frameCELogo->SetEditorMode(TRUE);
+    frameCELogo->ShowModal();
+    delete frameCELogo;
+    frameCELogo = NULL; 
+}
+
+void frmContactEditor::DeleteLogo( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboLogos, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboLogos->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData,     
+    &LogosList, &LogosListAltID, &LogosListPID, &LogosListType,
+    &LogosListPicEncType, &LogosListPictureType, &LogosListTokens,
+    &LogosListMediatype, &LogosListPref);
+       
+    wxMemoryInputStream istream(misc_emptyimage_png, sizeof(misc_emptyimage_png));
+    wxImage misc_emptyimage_png(istream, wxBITMAP_TYPE_PNG);
+    LogoImage = (wxBitmap)misc_emptyimage_png;
+    
+    imgLogo->SetBitmap(LogoImage);
+}
+
+void frmContactEditor::AddSound( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorSound *frameCESound = new frmContactEditorSound ( this );
+    frameCESound->SetEditorMode(FALSE);
+    intResult = GetLastInt(&SoundsList);
+    frameCESound->SetupPointers(&SoundsList,
+       &SoundsListAltID,
+       &SoundsListPID,
+       &SoundsListType,
+       &SoundsListAudioType,   
+       &SoundsListAudioEncType,
+       &SoundsListTokens,
+       &SoundsListMediatype,   
+       &SoundsListPref,
+       lboSounds,
+       (intValueSeek));
+    frameCESound->ShowModal();
+    delete frameCESound;
+    frameCESound = NULL;
+}
+
+void frmContactEditor::ModifySound( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboSounds, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorSound *frameCESound = new frmContactEditorSound ( this );
+    frameCESound->SetupPointers(&SoundsList,
+       &SoundsListAltID,
+       &SoundsListPID,
+       &SoundsListType,
+       &SoundsListAudioType,
+       &SoundsListAudioEncType,        
+       &SoundsListTokens,
+       &SoundsListMediatype,
+       &SoundsListPref,
+       lboSounds,
+       intSelectedData);
+    frameCESound->SetEditorMode(TRUE);
+    frameCESound->ShowModal();
+    delete frameCESound;
+    frameCESound = NULL;
+}
+
+void frmContactEditor::DeleteSound( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboSounds, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboSounds->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &SoundsList, &SoundsListAltID,
+    &SoundsListPID, &SoundsListType, &SoundsListAudioType, 
+    &SoundsListAudioEncType, &SoundsListTokens, &SoundsListMediatype,
+    &SoundsListPref);
+    
+}
+
+void frmContactEditor::PlaySoundDetach()
+{
+   
+    if (!AudioStreamPlayback.openFromMemory(base64dec.c_str(), base64declen)){
+               
+       // Can't load file. We must flee...
+       // Also show an error message too.
+                       
+       wxMessageBox(_("This file is in an audio format that is unsupported or is not an audio file."), _("Error opening audio file"), wxICON_ERROR);
+                       
+       return;
+               
+    }
+    
+    btnStop->Enable();    
+    
+    //AudioStreamPlayback.setbuffer(AudioBuffer);
+    AudioStreamPlayback.play();
+    
+    /*timespec n1, n2;
+                                               
+    n1.tv_sec = 0;
+    n1.tv_nsec = 100000000L;*/
+    
+    //while (TimeA != TimeB){
+    while (AudioStreamPlayback.getStatus() == sf::SoundSource::Playing){
+    
+       // We poll this every 100ms in order to conserve CPU usage.
+       
+               SleepFor(100000000);
+    
+    }
+    
+    btnStop->Disable();  
+
+}
+
+void frmContactEditor::PlaySound( wxCommandEvent& event )
+{
+
+    //sf::Music *AudioPlayback = new sf::Music;
+    //AudioStream *AudioStreamPlayback = new AudioStream;
+    //sf::SoundBuffer *AudioBuffer = new sf::SoundBuffer;
+    
+    //sf::Sound *AudioPlayback = new sf::Sound;
+    
+    //delete(AudioPlayback);
+    
+    //delete(AudioPlayback);
+    //delete(AudioStreamPlayback);
+    //delete(AudioBuffer);
+    
+    //AudioPlayback = NULL;
+    //AudioStreamPlayback = NULL;
+    //AudioBuffer = NULL;
+    
+    //return;
+
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    // Check if sound is still being played and if it is, stop it.
+    
+    if (AudioStreamPlayback.getStatus() == sf::SoundSource::Playing){
+    
+       AudioStreamPlayback.stop();
+    
+    }
+    
+    if (!GetSelectedItem(lboSounds, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    std::map<int, std::string>::iterator initier;
+    
+    initier = SoundsList.find(intSelectedData);
+    
+    base64dec = base64_decode(initier->second);
+    base64declen = base64dec.size();
+    
+    std::thread AudioPlaybackThread(&frmContactEditor::PlaySoundDetach, this);
+    AudioPlaybackThread.detach();
+    
+    return;
+
+}
+
+void frmContactEditor::StopSound( wxCommandEvent& event )
+{
+
+    if (AudioStreamPlayback.getStatus() == sf::SoundSource::Playing){
+    
+       AudioStreamPlayback.stop();
+    
+    }
+    
+    btnStop->Disable();
+    
+    return;
+
+}
+
+void frmContactEditor::AddCalendarAddress( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this );
+    frameCECalAdr->SetEditorMode(FALSE);
+    intResult = GetLastInt(&CalendarList);
+    frameCECalAdr->SetupPointers(&CalendarList,
+       &CalendarListAltID,
+       &CalendarListPID,
+       &CalendarListType,
+       &CalendarListTokens,
+       &CalendarListPref,
+       lboCalendarAddresses,
+       (intValueSeek));
+    frameCECalAdr->ShowModal();
+    delete frameCECalAdr;
+    frameCECalAdr = NULL;
+}
+
+void frmContactEditor::ModifyCalendarAddress( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboCalendarAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this );
+    frameCECalAdr->SetupPointers(&CalendarList,
+       &CalendarListAltID,
+       &CalendarListPID,
+       &CalendarListType,
+       &CalendarListTokens,    
+       &CalendarListPref,
+       lboCalendarAddresses,
+       intSelectedData);
+    frameCECalAdr->SetEditorMode(TRUE);
+    frameCECalAdr->ShowModal();
+    delete frameCECalAdr;
+    frameCECalAdr = NULL;
+}
+
+void frmContactEditor::DeleteCalendarAddress( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboCalendarAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboCalendarAddresses->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &CalendarList, &CalendarListAltID,
+    &CalendarListPID, &CalendarListType, &CalendarListTokens,
+    &CalendarListPref);
+    
+}
+
+void frmContactEditor::AddCalendarRequest( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this );
+    frameCECalAdr->SetEditorMode(FALSE);
+    intResult = GetLastInt(&CalendarRequestList);
+    frameCECalAdr->SetupPointers(&CalendarRequestList,
+       &CalendarRequestListAltID,
+       &CalendarRequestListPID,
+       &CalendarRequestListType,
+       &CalendarRequestListTokens,
+       &CalendarRequestListPref,
+       lboCalendarRequestAddress,
+       (intValueSeek));
+    frameCECalAdr->ShowModal();
+    delete frameCECalAdr;
+    frameCECalAdr = NULL;
+}
+
+void frmContactEditor::ModifyCalendarRequest( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboCalendarRequestAddress, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this );
+    frameCECalAdr->SetupPointers(&CalendarList,
+       &CalendarRequestListAltID,
+       &CalendarRequestListPID,
+       &CalendarRequestListType,
+       &CalendarRequestListTokens,     
+       &CalendarRequestListPref,
+       lboCalendarRequestAddress,
+       intSelectedData);
+    frameCECalAdr->SetEditorMode(TRUE);
+    frameCECalAdr->ShowModal();
+    delete frameCECalAdr;
+    frameCECalAdr = NULL;
+}
+
+void frmContactEditor::DeleteCalendarRequest( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboCalendarRequestAddress, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboCalendarRequestAddress->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &CalendarRequestList,
+    &CalendarRequestListAltID, &CalendarRequestListPID,
+    &CalendarRequestListType, &CalendarRequestListTokens,
+    &CalendarRequestListPref);
+}
+
+void frmContactEditor::AddFreeBusy( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this );
+    frameCECalAdr->SetEditorMode(FALSE);
+    intResult = GetLastInt(&FreeBusyList);
+    frameCECalAdr->SetupPointers(&FreeBusyList,
+       &FreeBusyListAltID,
+       &FreeBusyListPID,
+       &FreeBusyListType,
+       &FreeBusyListTokens,
+       &FreeBusyListPref,
+       lboFreeBusyAddresses,
+       (intValueSeek));
+    frameCECalAdr->ShowModal();
+    delete frameCECalAdr;
+    frameCECalAdr = NULL;
+}
+
+void frmContactEditor::ModifyFreeBusy( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboFreeBusyAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorCalAdr *frameCECalAdr = new frmContactEditorCalAdr ( this );
+    frameCECalAdr->SetupPointers(&FreeBusyList,
+       &FreeBusyListAltID,
+       &FreeBusyListPID,
+       &FreeBusyListType,
+       &FreeBusyListTokens,    
+       &FreeBusyListPref,
+       lboFreeBusyAddresses,
+       intSelectedData);
+    frameCECalAdr->SetEditorMode(TRUE);
+    frameCECalAdr->ShowModal();
+    delete frameCECalAdr;
+    frameCECalAdr = NULL;
+}
+
+void frmContactEditor::DeleteFreeBusy( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboFreeBusyAddresses, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboFreeBusyAddresses->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &FreeBusyList, &FreeBusyListAltID,
+    &FreeBusyListPID, &FreeBusyListType, &FreeBusyListTokens,
+    &FreeBusyListPref);
+    
+}
+
+void frmContactEditor::AddKey( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorKey *frameCEKey = new frmContactEditorKey ( this );
+    frameCEKey->SetEditorMode(FALSE);
+    intResult = GetLastInt(&KeyList);
+    frameCEKey->SetupPointers(&KeyList,
+       &KeyListAltID,
+       &KeyListPID,
+       &KeyListKeyType,
+       &KeyListDataType,
+       &KeyListType,
+       &KeyListTokens,
+       &KeyListPref,
+       lboKeys,
+       (intValueSeek));
+    frameCEKey->ShowModal();
+    delete frameCEKey;
+    frameCEKey = NULL;
+}
+
+void frmContactEditor::ModifyKey( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboKeys, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorKey *frameCEKey = new frmContactEditorKey ( this );
+    frameCEKey->SetupPointers(&KeyList,
+       &KeyListAltID,
+       &KeyListPID,
+       &KeyListKeyType,
+       &KeyListDataType,
+       &KeyListType,
+       &KeyListTokens,
+       &KeyListPref,
+       lboKeys,
+       intSelectedData);
+    frameCEKey->SetEditorMode(TRUE);
+    frameCEKey->ShowModal();
+    delete frameCEKey;
+    frameCEKey = NULL;
+}
+
+void frmContactEditor::DeleteKey( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboKeys, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboKeys->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &KeyList, &KeyListAltID,
+    &KeyListPID, &KeyListKeyType, &KeyListDataType, &KeyListType,
+    &KeyListTokens, &KeyListPref);
+    
+}
+
+void frmContactEditor::AddVendorNamespace( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorVendor *frameCEVen = new frmContactEditorVendor ( this );
+    frameCEVen->SetEditorMode(FALSE);
+    intResult = GetLastInt(&VendorList);
+    frameCEVen->SetupPointers(&VendorList,
+       &VendorListPEN,
+       &VendorListElement,     
+       lboVendorNamespace,
+       (intValueSeek));
+    frameCEVen->ShowModal();
+    delete frameCEVen;
+    frameCEVen = NULL;
+}
+
+void frmContactEditor::ModifyVendorNamespace( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboVendorNamespace, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorVendor *frameCEVen = new frmContactEditorVendor ( this );
+    frameCEVen->SetupPointers(&VendorList,
+       &VendorListPEN,
+       &VendorListElement,     
+       lboVendorNamespace,
+       intSelectedData);
+    frameCEVen->SetEditorMode(TRUE);
+    frameCEVen->ShowModal();
+    delete frameCEVen;
+    frameCEVen = NULL;
+}
+
+void frmContactEditor::DeleteVendorNamespace( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboVendorNamespace, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboVendorNamespace->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &VendorList, &VendorListPEN,
+    &VendorListElement);
+    
+}
+
+void frmContactEditor::AddXToken( wxCommandEvent& event )
+{
+    int intResult = 0;
+
+    frmContactEditorXToken *frameCEXT = new frmContactEditorXToken ( this );
+    frameCEXT->SetEditorMode(FALSE);
+    intResult = GetLastInt(&XTokenList);
+    frameCEXT->SetupPointers(&XTokenList,
+       &XTokenListTokens,      
+       lboXToken,
+       (intValueSeek));
+    frameCEXT->ShowModal();
+    delete frameCEXT;
+    frameCEXT = NULL;
+}
+
+void frmContactEditor::ModifyXToken( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboXToken, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+       
+    frmContactEditorXToken *frameCEXT = new frmContactEditorXToken ( this );
+    frameCEXT->SetupPointers(&XTokenList,
+       &XTokenListTokens,
+       lboXToken,
+       intSelectedData);
+    frameCEXT->SetEditorMode(TRUE);
+    frameCEXT->ShowModal();
+    delete frameCEXT;
+    frameCEXT = NULL;
+}
+
+void frmContactEditor::DeleteXToken( wxCommandEvent& event )
+{
+    long longSelected = -1;
+    int intSelectedData = 0;
+    
+    if (!GetSelectedItem(lboXToken, 
+               &longSelected,
+               &intSelectedData)){
+       return;
+    }
+    
+    lboXToken->DeleteItem(longSelected);
+    
+    DeleteMapData(intSelectedData, &XTokenList, &XTokenListTokens);
+    
+}
+
+void frmContactEditor::SaveContact( wxCommandEvent& event )
+{
+
+    // Check if Display As combo box has a value in it.
+    // Do not go any further if there is no value.
+    
+    wxString cmbDisplayAsValue = cmbDisplayAs->GetValue();
+    
+    if (cmbDisplayAsValue.IsEmpty()){
+    
+       wxMessageBox(_("Display As value cannot be left blank."), _("Display As value empty"), wxICON_ERROR);
+       return;
+    
+    }
+
+    // Save the updated contact data.
+
+    vCard ContactData;
+    wxString FilenameFinal;
+    bool ReplaceContact = FALSE;
+
+    if (cmbType->GetCurrentSelection() == 1 ||
+    cmbType->GetCurrentSelection() == 3 ||
+    cmbType->GetCurrentSelection() == 4){
+    
+       if (IsGroup == TRUE){
+       
+               // Mark contact for replacing.
+               
+               ReplaceContact = TRUE;
+       
+       }
+    
+    } else if (cmbType->GetCurrentSelection() == 2){
+    
+       if (IsGroup == TRUE){
+       
+               // Mark contact for replacing.
+               
+               ReplaceContact = TRUE;
+       
+       }
+    
+    }
+    
+    if (ReplaceContact == TRUE){
+       
+       wxString wxDelSplitFilename;
+       wxString wxDelFinalFilename;
+       wxString wxSDelDataURL;
+       wxStringTokenizer wSTDelFilename(wxSContactFilename, wxT("/"));
+       while(wSTDelFilename.HasMoreTokens()){
+    
+               wxDelSplitFilename = wSTDelFilename.GetNextToken();
+    
+       }
+
+       wxSDelDataURL = wxDelSplitFilename;
+
+       // Delete the contact from the server as it will be useless in certain
+       // address book clients.
+       
+       ActMgrPtr->AddTask(2, cmbDisplayAs->GetValue(), wxSContactAccount, wxSDelDataURL, wxDelSplitFilename, wxSContactFilename, wxT(""));
+   
+       // Clear the filename so the trigger to recreate the UID is done.
+   
+       wxSContactFilename.Clear();
+       EditMode = FALSE;
+   
+    }
+
+    if (wxSContactFilename.IsEmpty()){
+    
+       // Generate a random UUID.
+       
+       UIDToken = GenerateUUID();
+       UIDToken = UIDToken.MakeUpper();
+       
+       // Setup the filename.
+       
+       FilenameFinal = GetAccountDir(wxSContactAccount, FALSE);
+
+#if defined(__HAIKU__)
+    
+       //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       FilenameFinal = GetAccountDir(wxSContactAccount, FALSE);
+       FilenameFinal.Append(UIDToken);
+       FilenameFinal.Append(wxT(".vcf"));
+       wxSContactFilename = FilenameFinal;
+
+#else
+
+       FilenameFinal = GetAccountDir(wxSContactAccount, FALSE);
+       FilenameFinal.Append(UIDToken);
+       FilenameFinal.Append(wxT(".vcf"));
+       wxSContactFilename = FilenameFinal;
+
+#endif
+    
+    } else {
+    
+       if (UIDToken.IsEmpty()){
+       
+               // UID Token is empty. (Shouldn't be).
+               // Generate a new UID Token.
+               
+               /*boost::uuids::uuid ContactUUID = boost::uuids::random_generator()();
+               std::string sstContactUUID = boost::uuids::to_string(ContactUUID);
+               wxString strContactUUID(sstContactUUID.c_str(), wxConvUTF8);
+               UIDToken = strContactUUID;*/
+               UIDToken = GenerateUUID();
+               UIDToken = UIDToken.MakeUpper();
+       
+       }
+       FilenameFinal = wxSContactFilename;
+    
+    }
+       
+    // Setup the data and write it into the account folder.
+       
+    // Begin preperations to write the contact to a file.
+    
+    bool boolValue = FALSE;
+    bool boolValue2 = FALSE;
+    bool FNFirst = TRUE;
+    bool NNGeneralFirst = TRUE;
+    bool NNHomeFirst = TRUE;
+    bool NNWorkFirst = TRUE; 
+    int intFNCount = 0; 
+    std::map<int,int>::iterator intiter;
+    std::map<int,wxString>::iterator striter; 
+     
+    ContactData.Add(wxT("BEGIN"), wxT("VCARD"), FALSE);
+    ContactData.Add(wxT("VERSION"), wxT("4.0"), FALSE);
+    
+    // Setup the version string.
+    
+    strValue.Append(wxT("-//Xestia//Address Book Version ")); 
+    strValue.Append(wxT(XSDAB_VERSION));
+    strValue.Append(wxT("//KW"));
+    
+    ContactData.Add(wxT("PRODID"), strValue, FALSE);
+    
+    // Setup the name.
+    
+    strValue.Clear();
+    
+    // Setup the name field.
+    
+    strValue = txtSurname->GetValue() + wxT(";") +
+               txtForename->GetValue() + wxT(";") +
+               txtOtherNames->GetValue() + wxT(";") +
+               txtTitle->GetValue() + wxT(";") +
+               txtSuffix->GetValue();
+    
+    strValue2 = ContactData.Convert(cmbDisplayAs->GetValue(), FALSE);
+    strValue2.Trim();    
+    
+    if (NameTokens.IsEmpty()){
+       ContactData.Add(wxT("N;SORT-AS=\"") + strValue2 + wxT("\""), strValue, FALSE);
+    } else {
+       ContactData.Add(wxT("N;SORT-AS=\"") + strValue2 + wxT("\";") + NameTokens, strValue, FALSE);
+    }
+    
+    if (cmbType->GetCurrentSelection() == 1){
+    
+       ContactData.AddRaw(wxT("KIND"), wxT("individual"));
+       
+    } else if (cmbType->GetCurrentSelection() == 2){
+    
+       ContactData.AddRaw(wxT("KIND"), wxT("group"));
+    
+       // Go through each of the members and write them out.
+       
+       for (std::map<int, wxString>::iterator itemiter = GroupsList.begin();
+       itemiter != GroupsList.end(); ++itemiter){
+       
+           ContactData.Add(wxT("MEMBER:urn:uuid"), itemiter->second, FALSE);
+       
+       }
+           
+    } else if (cmbType->GetCurrentSelection() == 3){
+    
+       ContactData.AddRaw(wxT("KIND"), wxT("org"));
+        
+    } else if (cmbType->GetCurrentSelection() == 4){
+    
+       ContactData.AddRaw(wxT("KIND"), wxT("location"));
+           
+    }
+    
+    
+    // Setup the nicknames (General, Home & Business).
+    
+    strValue.Clear();
+    strValue2.Clear();
+    strValue3.Clear();    
+
+    boolValue = FALSE;
+    boolValue2 = FALSE;    
+    intValue2 = 0;
+    intValue  = 0; 
+
+    // Setup the gender.
+    
+    if (cmbGender->GetCurrentSelection() != 0){
+    
+       switch(cmbGender->GetCurrentSelection()){
+       
+           case 1:
+               
+               strValue = wxT("M");
+               break;
+               
+           case 2:
+               
+               strValue = wxT("F");
+               break;  
+               
+           case 3:
+               
+               strValue = wxT("O");
+               break;
+               
+           case 4:
+               
+               strValue = wxT("N");
+               break;
+               
+           case 5:
+               
+               strValue = wxT("U");
+               break;
+       
+       }
+    
+    }
+    
+    if (!txtGenderDescription->IsEmpty()){
+       
+       strValue2 = txtGenderDescription->GetValue();
+       
+    }
+    
+    if (!strValue.IsEmpty() || !strValue2.IsEmpty()){
+
+       EscapeString(&strValue2, FALSE);
+
+       if (!GenderTokens.IsEmpty()){
+       
+               if (!strValue2.IsEmpty()){
+       
+                       ContactData.AddRaw(wxT("GENDER;") + GenderTokens, strValue + wxT(";") + strValue2);
+       
+               } else {
+       
+                       ContactData.AddRaw(wxT("GENDER;") + GenderTokens, strValue);    
+       
+               }
+       
+       } else {
+    
+               if (!strValue2.IsEmpty()){
+
+                       ContactData.AddRaw(wxT("GENDER"), strValue + wxT(";") + strValue2);
+       
+               } else {
+       
+                       ContactData.AddRaw(wxT("GENDER"), strValue);    
+       
+               }
+       
+       }
+    
+    }
+    
+    strValue.Clear();
+    strValue2.Clear();
+    strValue3.Clear();    
+
+    boolValue = FALSE;
+    boolValue2 = FALSE;    
+    intValue2 = 0;
+    intValue  = 0;
+    
+    // Process Label.
+
+    strValue3 = BirthdayAltID; 
+    
+    if (!strValue3.IsEmpty()){
+    
+       strValue3.Trim();
+       strValue3.Trim();
+       boolValue2 = TRUE;
+       strValue2.Append(wxT("ALTID=\"") + strValue3 + wxT("\""));
+    
+       boolValue = TRUE;           
+    
+    }
+
+    //strValue3 = ContactData.Convert(GeneralAddressList, FALSE);
+    //strValue2 = 
+
+    // Process Language.
+
+    strValue3 = BirthdayCalScale;
+
+    if (!strValue3.IsEmpty()){
+    
+       strValue3.Trim();
+       strValue3.Trim();
+       
+       if (boolValue2 == TRUE){
+       
+               strValue2.Append(wxT(";"));
+       
+       } else {
+       
+               boolValue2 = TRUE;
+       
+       }
+       
+       strValue2.Append(wxT("CALSCALE=") + strValue3);
+    
+       boolValue = TRUE;           
+    
+    }  
+
+    // Process Tokens.
+
+    strValue2 = BirthdayTokens;
+
+    // Get the birthday and write it.
+
+    ResetSaveProcessData();
+    
+    if (!txtBirthday->IsEmpty()){
+    
+       strValue = txtBirthday->GetValue();
+    
+       if (!strValue.IsEmpty() || !strValue2.IsEmpty()){
+    
+               if (!strValue2.IsEmpty()){
+       
+                   EscapeString(&strValue2, FALSE);
+                   EscapeString(&strValue, FALSE);
+       
+                   ContactData.AddRaw(wxT("BDAY;VALUE=text;") + strValue2 + wxT(";"), strValue);
+       
+               } else {
+       
+                   EscapeString(&strValue, FALSE);
+       
+                   ContactData.AddRaw(wxT("BDAY;VALUE=text"), strValue);
+       
+               }
+    
+       }
+    
+    } else {
+    
+       // Deal with date.
+       
+       // Get Day, Month & Year.
+       
+       wxDateTime BirthdayDate;
+       wxDateTime::Month BirthdayMonth;
+       int BirthdayDay;
+       int BirthdayYear;
+       wxString DataBeforeT;
+       wxString DataAfterT;
+       wxString FinalBirthdayString;
+       bool ProcessDataAfterT = FALSE;
+       
+       BirthdayDate = dapBirthday->GetValue();
+       
+       if (BirthdayDate.IsValid()){
+       
+               BirthdayDay = BirthdayDate.GetDay();
+               BirthdayMonth = BirthdayDate.GetMonth();
+               BirthdayYear = BirthdayDate.GetYear();
+       
+               // Look for T and replace data before this.
+       
+               wxStringTokenizer wSTDate(Birthday, wxT("T"));
+       
+               while (wSTDate.HasMoreTokens()){
+       
+                       if (ProcessDataAfterT == FALSE){
+       
+                               DataBeforeT = wSTDate.GetNextToken();
+                               ProcessDataAfterT = TRUE;
+               
+                       } else {
+               
+                               DataAfterT = wSTDate.GetNextToken();
+                               break;
+               
+                       }
+       
+               }
+       
+               // If there is not T then replace altogether.
+    
+               wxString FinalBirthdayDay;
+               wxString FinalBirthdayMonth;
+               wxString FinalBirthdayYear;
+               
+               if (BirthdayDay < 10){
+               
+                       FinalBirthdayDay = wxT("0") + wxString::Format(wxT("%i"), BirthdayDay);
+               
+               } else {
+               
+                       FinalBirthdayDay = wxString::Format(wxT("%i"), BirthdayDay);
+               
+               }
+       
+               if (((int)BirthdayMonth + 1) < 10){
+               
+                       FinalBirthdayMonth = wxT("0") + wxString::Format(wxT("%i"), ((int)BirthdayMonth + 1));
+               
+               } else {
+       
+                       FinalBirthdayMonth = wxString::Format(wxT("%i"), ((int)BirthdayMonth + 1));
+               
+               }
+               
+               if (BirthdayYear == 0){
+               
+                       FinalBirthdayYear = wxT("--");
+               
+               } else {
+               
+                       FinalBirthdayYear = wxString::Format(wxT("%i"), BirthdayYear);
+               
+               }    
+    
+               if (!DataAfterT.IsEmpty()){
+               
+                       FinalBirthdayString = FinalBirthdayYear + FinalBirthdayMonth + FinalBirthdayDay + wxT("T") + DataAfterT;
+       
+               } else {
+       
+                       FinalBirthdayString = FinalBirthdayYear + FinalBirthdayMonth + FinalBirthdayDay;
+       
+               }
+       
+               if (!FinalBirthdayString.IsEmpty() || !strValue2.IsEmpty()){
+    
+                       if (!strValue2.IsEmpty()){
+       
+                           EscapeString(&strValue2, FALSE);
+                           EscapeString(&strValue, FALSE);
+       
+                           ContactData.AddRaw(wxT("BDAY") + strValue2 + wxT(";"), FinalBirthdayString);
+       
+                       } else {
+       
+                           EscapeString(&strValue, FALSE);
+       
+                           ContactData.AddRaw(wxT("BDAY"), FinalBirthdayString);
+       
+                       }
+    
+               }       
+    
+       }
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    // Process Label.
+
+    strValue3 = AnniversaryAltID; 
+    
+    if (!strValue3.IsEmpty()){
+    
+       strValue3.Trim();
+       strValue3.Trim();
+       boolValue2 = TRUE;
+       strValue2.Append(wxT("ALTID=\"") + strValue3 + wxT("\""));
+    
+       boolValue = TRUE;           
+    
+    }
+
+    //strValue3 = ContactData.Convert(GeneralAddressList, FALSE);
+    //strValue2 = 
+
+    // Process Language.
+
+    strValue3 = AnniversaryCalScale;
+
+    if (!strValue3.IsEmpty()){
+    
+       strValue3.Trim();
+       strValue3.Trim();
+       
+       if (boolValue2 == TRUE){
+       
+               strValue2.Append(wxT(";"));
+       
+       } else {
+       
+               boolValue2 = TRUE;
+       
+       }
+       
+       strValue2.Append(wxT("CALSCALE=") + strValue3);
+    
+       boolValue = TRUE;           
+    
+    }  
+
+    // Process Tokens.
+
+    strValue2 = AnniversaryTokens;
+    
+    // Deal with ANNIVERSARY.
+    
+    if (!txtAnniversary->IsEmpty()){
+    
+       strValue = txtAnniversary->GetValue();
+    
+       if (!strValue.IsEmpty() || !strValue2.IsEmpty()){
+    
+               if (!strValue2.IsEmpty()){
+       
+                   EscapeString(&strValue2, FALSE);
+                   EscapeString(&strValue, FALSE);
+       
+                   ContactData.AddRaw(wxT("ANNIVERSARY;VALUE=text;") + strValue2 + wxT(";"), strValue);
+       
+               } else {
+       
+                   EscapeString(&strValue, FALSE);
+       
+                   ContactData.AddRaw(wxT("ANNIVERSARY;VALUE=text"), strValue);
+       
+               }
+    
+       }
+    
+    } else {
+    
+       // Look for T and replace data before this.
+       
+       // Get Day, Month & Year.
+       
+       wxDateTime AnniversaryDate;
+       wxDateTime::Month AnniversaryMonth;
+       int AnniversaryDay;
+       int AnniversaryYear;
+       wxString DataBeforeT;
+       wxString DataAfterT;
+       wxString FinalAnniversaryString;
+       bool ProcessDataAfterT = FALSE;
+       
+       AnniversaryDate = dapAnniversary->GetValue();
+       
+       if (AnniversaryDate.IsValid()){ 
+
+               AnniversaryDay = AnniversaryDate.GetDay();
+               AnniversaryMonth = AnniversaryDate.GetMonth();
+               AnniversaryYear = AnniversaryDate.GetYear();
+       
+               // Look for T and replace data before this.
+       
+               wxStringTokenizer wSTDate(Anniversary, wxT("T"));
+       
+               while (wSTDate.HasMoreTokens()){
+       
+                       if (ProcessDataAfterT == FALSE){
+       
+                               DataBeforeT = wSTDate.GetNextToken();
+                               ProcessDataAfterT = TRUE;
+               
+                       } else {
+               
+                               DataAfterT = wSTDate.GetNextToken();
+                               break;
+               
+                       }
+       
+               }
+       
+               // If there is not T then replace altogether.
+    
+               wxString FinalAnniversaryDay;
+               wxString FinalAnniversaryMonth;
+               wxString FinalAnniversaryYear;
+               
+               if (AnniversaryDay < 10){
+               
+                       FinalAnniversaryDay = wxT("0") + wxString::Format(wxT("%i"), AnniversaryDay);
+               
+               } else {
+               
+                       FinalAnniversaryDay = wxString::Format(wxT("%i"), AnniversaryDay);
+               
+               }
+       
+               if (((int)AnniversaryMonth + 1) < 10){
+               
+                       FinalAnniversaryMonth = wxT("0") + wxString::Format(wxT("%i"), ((int)AnniversaryMonth + 1));
+               
+               } else {
+       
+                       FinalAnniversaryMonth = wxString::Format(wxT("%i"), ((int)AnniversaryMonth + 1));
+               
+               }
+               
+               if (AnniversaryYear == 0){
+               
+                       FinalAnniversaryYear = wxT("--");
+               
+               } else {
+               
+                       FinalAnniversaryYear = wxString::Format(wxT("%i"), AnniversaryYear);
+               
+               }    
+    
+               if (!DataAfterT.IsEmpty()){
+               
+                       FinalAnniversaryString = FinalAnniversaryYear + FinalAnniversaryMonth + FinalAnniversaryDay + wxT("T") + DataAfterT;
+       
+               } else {
+       
+                       FinalAnniversaryString = FinalAnniversaryYear + FinalAnniversaryMonth + FinalAnniversaryDay;
+       
+               }
+       
+               if (!FinalAnniversaryString.IsEmpty() || !strValue2.IsEmpty()){
+    
+                       if (!strValue2.IsEmpty()){
+       
+                           EscapeString(&strValue2, FALSE);
+                           EscapeString(&strValue, FALSE);
+       
+                           ContactData.AddRaw(wxT("ANNIVERSARY") + strValue2 + wxT(";"), FinalAnniversaryString);
+       
+                       } else {
+       
+                           EscapeString(&strValue, FALSE);
+       
+                           ContactData.AddRaw(wxT("ANNIVERSARY"), FinalAnniversaryString);
+       
+                       }
+    
+               }
+       
+       }
+    
+    }
+    
+    // Setup the addresses (General, Home, Business).
+    
+    //intValue = GeneralAddressList.size();
+    ResetSaveProcessData();       
+    
+    for (std::map<int,wxString>::iterator iter = GeneralAddressList.begin(); 
+        iter != GeneralAddressList.end(); ++iter){
+       
+       int intSeekValue = iter->first;
+       
+       wxString strAddressString;      
+       wxString strAddressFinalValue;
+       std::map<int, wxString>::iterator iterValue;    
+
+       strAddressString.Append(wxT(";;"));
+
+       // Get Address
+
+       iterValue = GeneralAddressList.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       strAddressFinalValue.Clear();
+       
+       // Get Town
+
+       iterValue = GeneralAddressListTown.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       strAddressFinalValue.Clear();
+       
+       // Get County
+
+       iterValue = GeneralAddressListCounty.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       strAddressFinalValue.Clear();
+       
+       // Get Post Code
+
+       iterValue = GeneralAddressListPostCode.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       strAddressFinalValue.Clear();
+       
+       // Get Country
+       
+       iterValue = GeneralAddressListCountry.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       strAddressString.Append(strAddressFinalValue);
+       strAddressFinalValue.Clear();
+       
+       ProcessSaveData(wxT("ADR"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &strAddressString, &ContactData,
+               wxT("LABEL"), &GeneralAddressListLabel,
+               wxT("LANGUAGE"), &GeneralAddressListLang,
+               wxT("ALTID"), &GeneralAddressListAltID,
+               wxT("PID"), &GeneralAddressListPID,
+               wxT("GEO"), &GeneralAddressListGeo,
+               wxT("TZ"), &GeneralAddressListTimezone,
+               wxT("MEDIATYPE"), &GeneralAddressListMediatype,
+               wxT("PREF"), &GeneralAddressListPref,
+               wxT(""), &GeneralAddressListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = HomeAddressList.begin(); 
+        iter != HomeAddressList.end(); ++iter){
+    
+       int intSeekValue = iter->first;
+       
+       wxString strAddressString;      
+       wxString strAddressFinalValue;
+       std::map<int, wxString>::iterator iterValue;    
+
+       strAddressString.Append(wxT(";;"));
+
+       // Get Address
+
+       iterValue = HomeAddressList.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       
+       // Get Town
+
+       iterValue = HomeAddressListTown.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       
+       // Get County
+
+       iterValue = HomeAddressListCounty.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       
+       // Get Post Code
+
+       iterValue = HomeAddressListPostCode.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       
+       // Get Country
+       
+       iterValue = HomeAddressListCountry.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue);
+    
+       ProcessSaveData(wxT("ADR;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &strAddressString, &ContactData,
+               wxT("LABEL"), &HomeAddressListLabel,
+               wxT("LANGUAGE"), &HomeAddressListLang,
+               wxT("ALTID"), &HomeAddressListAltID,
+               wxT("PID"), &HomeAddressListPID,
+               wxT("GEO"), &HomeAddressListGeo,
+               wxT("TZ"), &HomeAddressListTimezone,
+               wxT("MEDIATYPE"), &HomeAddressListMediatype,
+               wxT("PREF"), &HomeAddressListPref,
+               wxT(""), &HomeAddressListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = BusinessAddressList.begin(); 
+        iter != BusinessAddressList.end(); ++iter){
+    
+       int intSeekValue = iter->first;
+       
+       wxString strAddressString;
+       wxString strAddressFinalValue;
+       std::map<int, wxString>::iterator iterValue;    
+
+       strAddressString.Append(wxT(";;"));
+
+       // Get Address
+
+       iterValue = BusinessAddressList.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       
+       // Get Town
+
+       iterValue = BusinessAddressListTown.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       
+       // Get County
+
+       iterValue = BusinessAddressListCounty.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       
+       // Get Post Code
+
+       iterValue = BusinessAddressListPostCode.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue + wxT(";"));
+       
+       // Get Country
+       
+       iterValue = BusinessAddressListCountry.find(intSeekValue);
+       strAddressFinalValue = iterValue->second;
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressString.Append(strAddressFinalValue);
+       
+       ProcessSaveData(wxT("ADR;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &strAddressString, &ContactData,
+               wxT("LABEL"), &BusinessAddressListLabel,
+               wxT("LANGUAGE"), &BusinessAddressListLang,
+               wxT("ALTID"), &BusinessAddressListAltID,
+               wxT("PID"), &BusinessAddressListPID,
+               wxT("GEO"), &BusinessAddressListGeo,
+               wxT("TZ"), &BusinessAddressListTimezone,
+               wxT("MEDIATYPE"), &BusinessAddressListMediatype,
+               wxT("PREF"), &BusinessAddressListPref,
+               wxT(""), &BusinessAddressListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+
+    // Sort out nicknames (if any).
+    
+    for (std::map<int,wxString>::iterator iter = GeneralNicknamesList.begin();
+        iter != GeneralNicknamesList.end(); ++iter){
+       
+       intValue2 = iter->first;
+       
+       // Process Alternative ID.
+       
+       ProcessSaveData(wxT("NICKNAME"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralNicknamesList, &ContactData,
+               wxT("LANGUAGE"), &GeneralNicknamesListLanguage,
+               wxT("ALTID"), &GeneralNicknamesListAltID,
+               wxT("PID"), &GeneralNicknamesListPID,
+               wxT("PREF"), &GeneralNicknamesListPref,
+               wxT(""), &GeneralNicknamesListTokens );
+
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = HomeNicknamesList.begin();
+        iter != HomeNicknamesList.end(); ++iter){
+       
+       ProcessSaveData(wxT("NICKNAME;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeNicknamesList, &ContactData,
+               wxT("LANGUAGE"), &HomeNicknamesListLanguage,
+               wxT("ALTID"), &HomeNicknamesListAltID,
+               wxT("PID"), &HomeNicknamesListPID,
+               wxT("PREF"), &HomeNicknamesListPref,
+               wxT(""), &HomeNicknamesListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = BusinessNicknamesList.begin();
+        iter != BusinessNicknamesList.end(); ++iter){
+       
+       ProcessSaveData(wxT("NICKNAME;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessNicknamesList, &ContactData,
+               wxT("LANGUAGE"), &BusinessNicknamesListLanguage,
+               wxT("ALTID"), &BusinessNicknamesListAltID,
+               wxT("PID"), &BusinessNicknamesListPID,
+               wxT("PREF"), &BusinessNicknamesListPref,
+               wxT(""), &BusinessNicknamesListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+
+    // Sort out email (general, home and business).
+    
+    for (std::map<int,wxString>::iterator iter = GeneralEmailList.begin(); 
+        iter != GeneralEmailList.end(); ++iter){
+    
+       //strValue3 = ContactData.Convert(GeneralAddressList, FALSE);
+       //strValue2 =   
+       
+       wxString strAddressFinalValue;
+       std::map<int, wxString>::iterator iterValue;
+       
+       ProcessSaveData(wxT("EMAIL"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralEmailList, &ContactData,
+               wxT("ALTID"), &GeneralEmailListAltID,
+               wxT("PID"), &GeneralEmailListPID,
+               wxT("PREF"), &GeneralEmailListPref,
+               wxT(""), &GeneralEmailListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = HomeEmailList.begin(); 
+        iter != HomeEmailList.end(); ++iter){
+    
+       //strValue3 = ContactData.Convert(GeneralAddressList, FALSE);
+       //strValue2 =   
+       
+       ProcessSaveData(wxT("EMAIL;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeEmailList, &ContactData,
+               wxT("ALTID"), &HomeEmailListAltID,
+               wxT("PID"), &HomeEmailListPID,
+               wxT("PREF"), &HomeEmailListPref,
+               wxT(""), &HomeEmailListTokens );
+       
+       ResetSaveProcessData(); 
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = BusinessEmailList.begin(); 
+        iter != BusinessEmailList.end(); ++iter){
+    
+       //strValue3 = ContactData.Convert(GeneralAddressList, FALSE);
+       //strValue2 =   
+       
+       ProcessSaveData(wxT("EMAIL;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessEmailList, &ContactData,
+               wxT("ALTID"), &BusinessEmailListAltID,
+               wxT("PID"), &BusinessEmailListPID,
+               wxT("PREF"), &BusinessEmailListPref,
+               wxT(""), &BusinessEmailListTokens );
+       
+       ResetSaveProcessData();         
+    
+    }    
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = GeneralIMList.begin(); 
+        iter != GeneralIMList.end(); ++iter){  
+       
+       intValue2 = iter->first;        
+       
+       // Process Alternative ID.
+       
+       ProcessSaveData(wxT("IMPP"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralIMList, &ContactData,
+               wxT("ALTID"), &GeneralIMListAltID,
+               wxT("PID"), &GeneralIMListPID,
+               wxT("MEDIATYPE"), &GeneralIMListMediatype,
+               wxT("PREF"), &GeneralIMListPref,
+               wxT(""), &GeneralIMListTokens );
+       
+       ResetSaveProcessData(); 
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = HomeIMList.begin(); 
+        iter != HomeIMList.end(); ++iter){     
+       
+       ProcessSaveData(wxT("IMPP;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeIMList, &ContactData,
+               wxT("ALTID"), &HomeIMListAltID,
+               wxT("PID"), &HomeIMListPID,
+               wxT("MEDIATYPE"), &HomeIMListMediatype,
+               wxT("PREF"), &HomeIMListPref,
+               wxT(""), &HomeIMListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();     
+    
+    for (std::map<int,wxString>::iterator iter = BusinessIMList.begin(); 
+        iter != BusinessIMList.end(); ++iter){
+       
+       ProcessSaveData(wxT("IMPP;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessIMList, &ContactData,
+               wxT("ALTID"), &BusinessIMListAltID,
+               wxT("PID"), &BusinessIMListPID,
+               wxT("MEDIATYPE"), &BusinessIMListMediatype,
+               wxT("PREF"), &BusinessIMListPref,
+               wxT(""), &BusinessIMListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = GeneralTelephoneList.begin(); 
+        iter != GeneralTelephoneList.end(); ++iter){
+       
+       wxString strAddressFinalValue = iter->second;
+       
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressFinalValue.insert(0, wxT("tel:"));
+       
+       ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &strAddressFinalValue, &ContactData,
+               wxT("ALTID"), &GeneralTelephoneListAltID,
+               wxT("PID"), &GeneralTelephoneListPID,
+               wxT("TYPE"), &GeneralTelephoneListType,
+               wxT("PREF"), &GeneralTelephoneListPref,
+               wxT(""), &GeneralTelephoneListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = HomeTelephoneList.begin(); 
+        iter != HomeTelephoneList.end(); ++iter){
+       
+       wxString strAddressFinalValue = iter->second;
+       
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressFinalValue.insert(0, wxT("tel:"));
+       
+       ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &strAddressFinalValue, &ContactData,
+               wxT("ALTID"), &HomeTelephoneListAltID,
+               wxT("PID"), &HomeTelephoneListPID,
+               wxT("TYPE"), &HomeTelephoneListType,
+               wxT("PREF"), &HomeTelephoneListPref,
+               wxT(""), &HomeTelephoneListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = BusinessTelephoneList.begin(); 
+        iter != BusinessTelephoneList.end(); ++iter){
+       
+       wxString strAddressFinalValue = iter->second;
+       
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressFinalValue.insert(0, wxT("tel:"));
+       
+       ProcessSaveData(wxT("TEL"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &strAddressFinalValue, &ContactData,
+               wxT("ALTID"), &BusinessTelephoneListAltID,
+               wxT("PID"), &BusinessTelephoneListPID,
+               wxT("TYPE"), &BusinessTelephoneListType,
+               wxT("PREF"), &BusinessTelephoneListPref,
+               wxT(""), &BusinessTelephoneListTokens );
+       
+       ResetSaveProcessData();
+    
+    }  
+    
+    ResetSaveProcessData();     
+    
+    for (std::map<int,wxString>::iterator iter = GeneralLanguageList.begin(); 
+        iter != GeneralLanguageList.end(); ++iter){
+       
+       intValue2 = iter->first;
+       
+       ProcessSaveData(wxT("LANG"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralLanguageList, &ContactData,
+               wxT("ALTID"), &GeneralLanguageListAltID,
+               wxT("PID"), &GeneralLanguageListPID,
+               wxT("PREF"), &GeneralLanguageListPref,
+               wxT(""), &GeneralLanguageListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = HomeLanguageList.begin(); 
+        iter != HomeLanguageList.end(); ++iter){
+       
+       ProcessSaveData(wxT("LANG;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeLanguageList, &ContactData,
+               wxT("ALTID"), &HomeLanguageListAltID,
+               wxT("PID"), &HomeLanguageListPID,
+               wxT("PREF"), &HomeLanguageListPref,
+               wxT(""), &HomeLanguageListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = BusinessLanguageList.begin(); 
+        iter != BusinessLanguageList.end(); ++iter){
+       
+       ProcessSaveData(wxT("LANG;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessLanguageList, &ContactData,
+               wxT("ALTID"), &BusinessLanguageListAltID,
+               wxT("PID"), &BusinessLanguageListPID,
+               wxT("PREF"), &BusinessLanguageListPref,
+               wxT(""), &BusinessLanguageListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();   
+    
+    for (std::map<int,wxString>::iterator iter = GeneralTZList.begin(); 
+        iter != GeneralTZList.end(); ++iter){
+       
+       ProcessSaveData(wxT("TZ"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralTZList, &ContactData,
+               wxT("ALTID"), &GeneralTZListAltID,
+               wxT("PID"), &GeneralTZListPID,
+               wxT("MEDIATYPE"), &GeneralTZListMediatype,
+               wxT("PREF"), &GeneralTZListPref,
+               wxT(""), &GeneralTZListTokens );
+       
+       ResetSaveProcessData();    
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = HomeTZList.begin(); 
+        iter != HomeTZList.end(); ++iter){
+       
+       ProcessSaveData(wxT("TZ;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeTZList, &ContactData,
+               wxT("ALTID"), &HomeTZListAltID,
+               wxT("PID"), &HomeTZListPID,
+               wxT("MEDIATYPE"), &HomeTZListMediatype,
+               wxT("PREF"), &HomeTZListPref,
+               wxT(""), &HomeTZListTokens );
+       
+       ResetSaveProcessData();
+       
+    } 
+       
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = BusinessTZList.begin(); 
+        iter != BusinessTZList.end(); ++iter){
+       
+       ProcessSaveData(wxT("TZ;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessTZList, &ContactData,
+               wxT("ALTID"), &BusinessTZListAltID,
+               wxT("PID"), &BusinessTZListPID,
+               wxT("MEDIATYPE"), &BusinessTZListMediatype,
+               wxT("PREF"), &BusinessTZListPref,
+               wxT(""), &BusinessTZListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = GeneralGeographyList.begin(); 
+        iter != GeneralGeographyList.end(); ++iter){
+       
+       wxString strAddressFinalValue = iter->second;
+       
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressFinalValue.insert(0, wxT("geo:"));
+       
+       ProcessSaveData(wxT("GEO"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &strAddressFinalValue, &ContactData,
+               wxT("ALTID"), &GeneralGeographyListAltID,
+               wxT("PID"), &GeneralGeographyListPID,
+               wxT("MEDIATYPE"), &GeneralGeographyListMediatype,
+               wxT("PREF"), &GeneralGeographyListPref,
+               wxT(""), &GeneralGeographyListTokens ); 
+
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = HomeGeographyList.begin(); 
+        iter != HomeGeographyList.end(); ++iter){
+       
+       wxString strAddressFinalValue = iter->second;
+       
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressFinalValue.insert(0, wxT("geo:"));
+       
+       ProcessSaveData(wxT("GEO;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeGeographyList, &ContactData,
+               wxT("ALTID"), &HomeGeographyListAltID,
+               wxT("PID"), &HomeGeographyListPID,
+               wxT("MEDIATYPE"), &HomeGeographyListMediatype,
+               wxT("PREF"), &HomeGeographyListPref,
+               wxT(""), &HomeGeographyListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = BusinessGeographyList.begin(); 
+        iter != BusinessGeographyList.end(); ++iter){
+       
+       wxString strAddressFinalValue = iter->second;
+       
+       ProcessCaptureStrings(&strAddressFinalValue);
+       
+       strAddressFinalValue.insert(0, wxT("geo:"));
+       
+       ProcessSaveData(wxT("GEO;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessGeographyList, &ContactData,
+               wxT("ALTID"), &BusinessGeographyListAltID,
+               wxT("PID"), &BusinessGeographyListPID,
+               wxT("MEDIATYPE"), &BusinessGeographyListMediatype,
+               wxT("PREF"), &BusinessGeographyListPref,
+               wxT(""), &BusinessGeographyListTokens );
+       
+       ResetSaveProcessData();  
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = GeneralRelatedList.begin(); 
+        iter != GeneralRelatedList.end(); ++iter){
+       
+       ProcessSaveData(wxT("RELATED"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralRelatedList, &ContactData,
+               wxT("ALTID"), &GeneralRelatedListAltID,
+               wxT("PID"), &GeneralRelatedListPID,
+               wxT("LANGUAGE"), &GeneralRelatedListLanguage,
+               wxT("TYPE"), &GeneralRelatedListRelType,
+               wxT("PREF"), &GeneralRelatedListPref,
+               wxT(""), &GeneralRelatedListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = GeneralWebsiteList.begin(); 
+        iter != GeneralWebsiteList.end(); ++iter){
+       
+       ProcessSaveData(wxT("URL"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralWebsiteList, &ContactData,
+               wxT("ALTID"), &GeneralWebsiteListAltID,
+               wxT("PID"), &GeneralWebsiteListPID,
+               wxT("MEDIATYPE"), &GeneralWebsiteListMediatype,
+               wxT("PREF"), &GeneralWebsiteListPref,
+               wxT(""), &GeneralWebsiteListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();     
+    
+    for (std::map<int,wxString>::iterator iter = HomeWebsiteList.begin(); 
+        iter != HomeWebsiteList.end(); ++iter){
+       
+       ProcessSaveData(wxT("URL;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeWebsiteList, &ContactData,
+               wxT("ALTID"), &HomeWebsiteListAltID,
+               wxT("PID"), &HomeWebsiteListPID,
+               wxT("MEDIATYPE"), &HomeWebsiteListMediatype,
+               wxT("PREF"), &HomeWebsiteListPref,
+               wxT(""), &HomeWebsiteListTokens );
+       
+       ResetSaveProcessData();   
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = BusinessWebsiteList.begin(); 
+        iter != BusinessWebsiteList.end(); ++iter){
+       
+       ProcessSaveData(wxT("URL;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessWebsiteList, &ContactData,
+               wxT("ALTID"), &BusinessWebsiteListAltID,
+               wxT("PID"), &BusinessWebsiteListPID,
+               wxT("MEDIATYPE"), &BusinessWebsiteListMediatype,
+               wxT("PREF"), &BusinessWebsiteListPref,
+               wxT(""), &BusinessWebsiteListTokens );
+       
+       ResetSaveProcessData();    
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = GeneralTitleList.begin(); 
+        iter != GeneralTitleList.end(); ++iter){
+       
+       ProcessSaveData(wxT("TITLE"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralTitleList, &ContactData,
+               wxT("ALTID"), &GeneralTitleListAltID,
+               wxT("PID"), &GeneralTitleListPID,
+               wxT("LANGUAGE"), &GeneralTitleListLanguage,
+               wxT("PREF"), &GeneralTitleListPref,
+               wxT(""), &GeneralTitleListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();  
+    
+    for (std::map<int,wxString>::iterator iter = HomeTitleList.begin(); 
+        iter != HomeTitleList.end(); ++iter){
+       
+       ProcessSaveData(wxT("TITLE;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeTitleList, &ContactData,
+               wxT("ALTID"), &HomeTitleListAltID,
+               wxT("PID"), &HomeTitleListPID,
+               wxT("LANGUAGE"), &HomeTitleListLanguage,
+               wxT("PREF"), &HomeTitleListPref,
+               wxT(""), &HomeTitleListTokens );
+       
+       ResetSaveProcessData();
+    
+    }    
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = BusinessTitleList.begin(); 
+        iter != BusinessTitleList.end(); ++iter){
+       
+       ProcessSaveData(wxT("TITLE;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessTitleList, &ContactData,
+               wxT("ALTID"), &BusinessTitleListAltID,
+               wxT("PID"), &BusinessTitleListPID,
+               wxT("LANGUAGE"), &BusinessTitleListLanguage,
+               wxT("PREF"), &BusinessTitleListPref,
+               wxT(""), &BusinessTitleListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = GeneralRoleList.begin();
+        iter != GeneralRoleList.end(); ++iter){
+       
+       ProcessSaveData(wxT("ROLE"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralRoleList, &ContactData,
+               wxT("ALTID"), &GeneralRoleListAltID,
+               wxT("PID"), &GeneralRoleListPID,
+               wxT("LANGUAGE"), &GeneralRoleListLanguage,
+               wxT("PREF"), &GeneralRoleListPref,
+               wxT(""), &GeneralRoleListTokens );
+
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+    
+    for (std::map<int,wxString>::iterator iter = HomeRoleList.begin();
+        iter != HomeRoleList.end(); ++iter){
+        
+       ProcessSaveData(wxT("ROLE;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeRoleList, &ContactData,
+               wxT("ALTID"), &HomeRoleListAltID,
+               wxT("PID"), &HomeRoleListPID,
+               wxT("LANGUAGE"), &HomeRoleListLanguage,
+               wxT("PREF"), &HomeRoleListPref,
+               wxT(""), &HomeRoleListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = BusinessRoleList.begin();
+        iter != BusinessRoleList.end(); ++iter){
+       
+       ProcessSaveData(wxT("ROLE;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessRoleList, &ContactData,
+               wxT("ALTID"), &BusinessRoleListAltID,
+               wxT("PID"), &BusinessRoleListPID,
+               wxT("LANGUAGE"), &BusinessRoleListLanguage,
+               wxT("PREF"), &BusinessRoleListPref,
+               wxT(""), &BusinessRoleListTokens );
+       
+       ResetSaveProcessData();  
+    
+    }    
+    
+    ResetSaveProcessData();  
+    
+    for (std::map<int,wxString>::iterator iter = GeneralOrganisationsList.begin();
+        iter != GeneralOrganisationsList.end(); ++iter){
+       
+       ProcessSaveData(wxT("ORG"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralOrganisationsList, &ContactData,
+               wxT("ALTID"), &GeneralOrganisationsListAltID,
+               wxT("PID"), &GeneralOrganisationsListPID,
+               wxT("LANGUAGE"), &GeneralOrganisationsListLanguage,
+               wxT("SORT-AS"), &GeneralOrganisationsListSortAs,
+               wxT("PREF"), &GeneralOrganisationsListPref,
+               wxT(""), &GeneralOrganisationsListTokens );
+       
+       ResetSaveProcessData();  
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = HomeOrganisationsList.begin();
+        iter != HomeOrganisationsList.end(); ++iter){
+       
+       ProcessSaveData(wxT("ORG;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeOrganisationsList, &ContactData,
+               wxT("ALTID"), &HomeOrganisationsListAltID,
+               wxT("PID"), &HomeOrganisationsListPID,
+               wxT("LANGUAGE"), &HomeOrganisationsListLanguage,
+               wxT("SORT-AS"), &HomeOrganisationsListSortAs,
+               wxT("PREF"), &HomeOrganisationsListPref,
+               wxT(""), &HomeOrganisationsListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = BusinessOrganisationsList.begin();
+        iter != BusinessOrganisationsList.end(); ++iter){
+       
+       ProcessSaveData(wxT("ORG;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessOrganisationsList, &ContactData,
+               wxT("ALTID"), &BusinessOrganisationsListAltID,
+               wxT("PID"), &BusinessOrganisationsListPID,
+               wxT("LANGUAGE"), &BusinessOrganisationsListLanguage,
+               wxT("SORT-AS"), &BusinessOrganisationsListSortAs,
+               wxT("PREF"), &BusinessOrganisationsListPref,
+               wxT(""), &BusinessOrganisationsListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = GeneralNoteList.begin();
+        iter != GeneralNoteList.end(); ++iter){
+    
+       ProcessSaveData(wxT("NOTE"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &GeneralNoteList, &ContactData,
+               wxT("ALTID"), &GeneralNoteListAltID,
+               wxT("PID"), &GeneralNoteListPID,
+               wxT("LANGUAGE"), &GeneralNoteListLanguage,
+               wxT("PREF"), &GeneralNoteListPref,
+               wxT(""), &GeneralNoteListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = HomeNoteList.begin();
+        iter != HomeNoteList.end(); ++iter){
+       
+       ProcessSaveData(wxT("NOTE;TYPE=home"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &HomeNoteList, &ContactData,
+               wxT("ALTID"), &HomeNoteListAltID,
+               wxT("PID"), &HomeNoteListPID,
+               wxT("LANGUAGE"), &HomeNoteListLanguage,
+               wxT("PREF"), &HomeNoteListPref,
+               wxT(""), &HomeNoteListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();   
+    
+    for (std::map<int,wxString>::iterator iter = BusinessNoteList.begin();
+        iter != BusinessNoteList.end(); ++iter){
+       
+       ProcessSaveData(wxT("NOTE;TYPE=work"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &BusinessNoteList, &ContactData,
+               wxT("ALTID"), &BusinessNoteListAltID,
+               wxT("PID"), &BusinessNoteListPID,
+               wxT("LANGUAGE"), &BusinessNoteListLanguage,
+               wxT("PREF"), &BusinessNoteListPref,
+               wxT(""), &BusinessNoteListTokens );
+       
+       ResetSaveProcessData();  
+    
+    }
+    
+    ResetSaveProcessData();   
+    
+    for (std::map<int,wxString>::iterator iter = CategoriesList.begin();
+        iter != CategoriesList.end(); ++iter){
+       
+       ProcessSaveData(wxT("CATEGORIES"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &CategoriesList, &ContactData,
+               wxT("ALTID"), &CategoriesListAltID,
+               wxT("PID"), &CategoriesListPID,
+               wxT("TYPE"), &CategoriesListType,
+               wxT("PREF"), &CategoriesListPref,
+               wxT(""), &CategoriesListTokens );
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    // Pictures.
+   
+       for (std::map<int, std::string>::iterator iter = PicturesList.begin();
+               iter != PicturesList.end(); ++iter){
+
+               int intValueIndex = iter->first;
+
+               std::map<int, std::string>::iterator stdstriter;
+               std::map<int, wxString>::iterator enciter;
+
+               striter = PicturesListPictureType.find(intValueIndex);
+               enciter = PicturesListPicEncType.find(intValueIndex);
+
+               ProcessSaveData(wxT("PHOTO"), &strValue2, &boolValue2, &boolValue,
+                       &iter, &PicturesList, &striter,
+                       &enciter, &ContactData,
+                       wxT("ALTID"), &PicturesListAltID,
+                       wxT("PID"), &PicturesListPID,
+                       wxT("TYPE"), &PicturesListType,
+                       wxT("PREF"), &PicturesListPref,
+                       wxT(""), &PicturesListTokens);
+
+               ResetSaveProcessData();
+
+       }
+
+    ResetSaveProcessData();
+
+    // Logos.
+    
+    for (std::map<int, std::string>::iterator iter = LogosList.begin();
+        iter != LogosList.end(); ++iter){
+       
+       int intValueIndex = iter->first;
+       
+       std::map<int, std::string>::iterator stdstriter;
+       std::map<int, wxString>::iterator enciter;
+       
+       striter = LogosListPictureType.find(intValueIndex);
+       enciter = LogosListPicEncType.find(intValueIndex);
+       
+       ProcessSaveData(wxT("LOGO"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &LogosList, &striter, 
+               &enciter, &ContactData,
+               wxT("ALTID"), &LogosListAltID,
+               wxT("PID"), &LogosListPID,
+               wxT("TYPE"), &LogosListType,
+               wxT("PREF"), &LogosListPref,
+               wxT(""), &LogosListTokens );    
+       
+       ResetSaveProcessData();   
+    
+    }
+
+    ResetSaveProcessData();
+    
+    // Sounds.
+    
+    for (std::map<int, std::string>::iterator iter = SoundsList.begin();
+        iter != SoundsList.end(); ++iter){
+       
+       int intValueIndex = iter->first;
+       
+       std::map<int, std::string>::iterator stdstriter;
+       std::map<int, wxString>::iterator enciter;
+       
+       striter = SoundsListAudioType.find(intValueIndex);
+       enciter = SoundsListAudioEncType.find(intValueIndex);
+       
+       ProcessSaveData(wxT("SOUND"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &SoundsList, &striter, 
+               &enciter, &ContactData,
+               wxT("ALTID"), &SoundsListAltID,
+               wxT("PID"), &SoundsListPID,
+               wxT("TYPE"), &SoundsListType,
+               wxT("PREF"), &SoundsListPref,
+               wxT(""), &SoundsListTokens );   
+       
+       ResetSaveProcessData();   
+    
+    }
+
+    ResetSaveProcessData();  
+    
+    for (std::map<int,wxString>::iterator iter = CalendarList.begin();
+        iter != CalendarList.end(); ++iter){
+       
+       ProcessSaveData(wxT("CALURI"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &CalendarList, &ContactData,
+               wxT("ALTID"), &CalendarListAltID,
+               wxT("PID"), &CalendarListPID,
+               wxT("MEDIATYPE"), &CalendarListMediatype,
+               wxT("TYPE"), &CalendarListType,
+               wxT("PREF"), &CalendarListPref,
+               wxT(""), &CalendarListTokens );
+       
+       ResetSaveProcessData();  
+    
+    }
+    
+    ResetSaveProcessData();   
+    
+    for (std::map<int,wxString>::iterator iter = CalendarRequestList.begin();
+        iter != CalendarRequestList.end(); ++iter){
+       
+       ProcessSaveData(wxT("CALADRURI"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &CalendarRequestList, &ContactData,
+               wxT("ALTID"), &CalendarRequestListAltID,
+               wxT("PID"), &CalendarRequestListPID,
+               wxT("MEDIATYPE"), &CalendarRequestListMediatype,
+               wxT("TYPE"), &CalendarRequestListType,
+               wxT("PREF"), &CalendarRequestListPref,
+               wxT(""), &CalendarRequestListTokens );
+       
+       ResetSaveProcessData();    
+    
+    }   
+    
+    ResetSaveProcessData();    
+    
+    for (std::map<int,wxString>::iterator iter = FreeBusyList.begin();
+        iter != FreeBusyList.end(); ++iter){
+       
+       ProcessSaveData(wxT("FBURL"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &FreeBusyList, &ContactData,
+               wxT("ALTID"), &FreeBusyListAltID,
+               wxT("PID"), &FreeBusyListPID,
+               wxT("MEDIATYPE"), &FreeBusyListMediatype,
+               wxT("TYPE"), &FreeBusyListType,
+               wxT("PREF"), &FreeBusyListPref,
+               wxT(""), &FreeBusyListTokens );
+       
+       ResetSaveProcessData();   
+    
+    }  
+    
+    for (std::map<int, wxString>::iterator iter = KeyList.begin();
+        iter != KeyList.end(); ++iter){
+
+       intValue2 = iter->first;        
+       
+       // Process Alternative ID.
+       
+       striter = KeyListAltID.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue3 = striter->second;
+       
+           if (!strValue3.IsEmpty()){
+           
+               strValue3.Trim();
+               strValue3.Trim();
+               
+               if (boolValue2 == TRUE){
+               
+                   strValue2.Append(wxT(";"));
+               
+               } else {
+               
+                   boolValue2 = TRUE;
+               
+               }
+               
+               strValue2.Append(wxT("ALTID=") + strValue3);
+           
+               boolValue = TRUE;           
+           
+           }
+       
+       }
+       
+       // Process PID.
+       
+       striter = KeyListPID.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue3 = striter->second;
+       
+           if (!strValue3.IsEmpty()){
+           
+               strValue3.Trim();
+               strValue3.Trim();
+               
+               if (boolValue2 == TRUE){
+               
+                   strValue2.Append(wxT(";"));
+               
+               } else {
+               
+                   boolValue2 = TRUE;
+               
+               }
+               
+               strValue2.Append(wxT("PID=") + strValue3);
+           
+               boolValue = TRUE;           
+           
+           }
+       
+       }
+       
+       // Process Type.
+       
+       striter = KeyListType.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue3 = striter->second;
+       
+           if (!strValue3.IsEmpty()){
+           
+               strValue3.Trim();
+               strValue3.Trim();
+               
+               if (boolValue2 == TRUE){
+               
+                   strValue2.Append(wxT(";"));
+               
+               } else {
+               
+                   boolValue2 = TRUE;
+               
+               }
+               
+               strValue2.Append(wxT("TYPE=") + strValue3);
+           
+               boolValue = TRUE;           
+           
+           }
+       
+       }
+       
+       intiter = KeyListPref.find(intValue2);
+       
+       if (intiter->first == intValue2){
+       
+           intValue3 = intiter->second;
+       
+           if (intValue3){
+       
+               if (boolValue2 == TRUE){
+               
+                   strValue2.Append(wxT(";"));
+               
+               } else {
+               
+                   boolValue2 = TRUE;
+               
+               }
+               
+               strValue2.Append(wxT("PREF=") + wxString::Format(wxT("%i"), intValue3));
+               
+               boolValue = TRUE;
+           
+           }
+       
+       }       
+       
+       // Process Tokens.
+       
+       striter = KeyListTokens.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue3 = striter->second;
+       
+           if (!strValue3.IsEmpty()){
+           
+               strValue3.Trim();
+               strValue3.Trim();
+               
+               if (boolValue2 == TRUE){
+               
+                   strValue2.Append(wxT(";"));
+               
+               } else {
+               
+                   boolValue2 = TRUE;
+               
+               }
+               
+               strValue2.Append(strValue3);
+               
+               boolValue = TRUE;
+           
+           }
+       
+       }       
+       
+       // Get the key information.
+
+       std::map<int, wxString>::iterator enciter;
+       
+       striter = KeyListDataType.find(intValue2);      
+       //enciter = KeyListAudioEncType.find(intValue2);
+       
+       wxString strValueData;
+       
+       strValueData = iter->second;    
+       //strValueData.insert(0, wxT("data:") + striter->second + wxT(";") + enciter->second + wxT(","));
+       strValueData.insert(0, wxT("data:") + striter->second + wxT(";base64,"));       
+       
+       
+       // Add to the vCard.
+    
+       if (boolValue == TRUE){
+       
+               ContactData.AddRaw(wxT("KEY;") + strValue2, strValueData);
+       
+       } else {
+       
+               ContactData.Add(wxT("KEY"), strValueData, TRUE);
+       
+       }
+       
+       ResetSaveProcessData();   
+    
+    }
+    
+    // Vendor specific items.
+    
+    ResetSaveProcessData();   
+    
+    for (std::map<int,wxString>::iterator iter = VendorList.begin();
+        iter != VendorList.end(); ++iter){
+       
+       intValue2 = iter->first;        
+       
+       // Get the IANA PEN number.
+       
+       striter = VendorListPEN.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue2 = striter->second;
+       
+       }
+       
+       // Get the element name.
+       
+       striter = VendorListElement.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue3 = striter->second;
+       
+       }
+       
+       // Get the address.
+       
+       striter = VendorList.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue = striter->second;
+       
+       }
+       
+       // Add to the vCard.
+    
+       if (boolValue == TRUE){
+       
+               ContactData.AddRaw(wxT("VND-") + strValue2 + wxT("-") + strValue3, strValue);
+       
+       } else {
+       
+               ContactData.Add(wxT("VND-") + strValue2 + wxT("-") + strValue3, strValue, FALSE);
+       
+       }
+       
+       ResetSaveProcessData();
+    
+    }              
+    
+    ResetSaveProcessData();  
+    
+    // X-Tokens.
+    
+    for (std::map<int,wxString>::iterator iter = XTokenList.begin();
+        iter != XTokenList.end(); ++iter){
+       
+       intValue2 = iter->first;        
+       
+       // Get the element name.
+       
+       striter = XTokenListTokens.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue2 = striter->second;
+       
+       }       
+       
+       // Get the address.
+       
+       striter = XTokenList.find(intValue2);
+       
+       if (striter->first == intValue2){
+       
+           strValue = striter->second;
+       
+       }
+       
+       // Add to the vCard.
+    
+       if (boolValue == TRUE){
+       
+           ContactData.AddRaw(wxT("X-") + strValue2, strValue);
+       
+       } else {
+       
+           ContactData.Add(wxT("X-") + strValue2, strValue, FALSE);
+       
+       }
+       
+       ResetSaveProcessData();
+    
+    }
+    
+    ResetSaveProcessData();
+
+    if (FullNamesList.size() == 0){
+    
+        wxString FullName = cmbDisplayAs->GetValue();
+        FullNamesList.insert(std::make_pair(0, FullName));
+        FullNamesListAltID.insert(std::make_pair(0, wxT("")));
+        FullNamesListPID.insert(std::make_pair(0, wxT("")));
+        FullNamesListType.insert(std::make_pair(0, wxT("")));
+        FullNamesListLanguage.insert(std::make_pair(0, wxT("")));
+        FullNamesListPref.insert(std::make_pair(0, 0));
+        FullNamesListTokens.insert(std::make_pair(0, wxT("")));
+        FNFirst = FALSE;
+    
+    }
+    
+    for (std::map<int, wxString>::iterator iter = FullNamesList.begin();
+        iter != FullNamesList.end(); ++iter){
+       
+       if (FNFirst == TRUE){
+       
+           iter->second = cmbDisplayAs->GetValue();
+           FNFirst = FALSE;
+       
+       }
+       
+       std::map<int,wxString>::iterator mapS;
+       
+       mapS = FullNamesListTokens.find(iter->first);
+       
+       ProcessSaveData(wxT("FN"), &strValue2, &boolValue2, &boolValue, 
+               &iter, &FullNamesList, &ContactData,
+               wxT("ALTID"), &FullNamesListAltID,
+               wxT("PID"), &FullNamesListPID,
+               wxT("TYPE"), &FullNamesListType,
+               wxT("LANGUAGE"), &FullNamesListLanguage,
+               wxT("PREF"), &FullNamesListPref,
+               wxT(""), &FullNamesListTokens );
+       
+       // Get the address.
+       
+       ResetSaveProcessData();    
+    
+    }
+    
+    //ContactData.Add(wxT("FN"), cmbDisplayAs->GetValue(), FALSE);
+    
+    // Insert revision (REV) date.
+    
+    // Get today's date and time.
+    
+    wxDateTime DateTimeNow = wxDateTime::Now();
+    
+    wxString DateRev;
+    
+    // Set year, month and date.
+    
+    int intYear = DateTimeNow.GetYear();
+    int intMonth = DateTimeNow.GetMonth();
+    int intDay = DateTimeNow.GetDay();
+
+    DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intYear));
+    
+    if (intMonth < 10){
+    
+       DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intMonth));
+    
+    } else {
+    
+       DateRev.Append(wxString::Format(wxT("%i"), intMonth));
+
+    }
+    
+    if (intDay < 10){
+    
+       DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intDay));
+    
+    } else {
+    
+       DateRev.Append(wxString::Format(wxT("%i"), intDay));
+
+    }
+    
+    //DateRev.Append(wx);
+    //DateRev.Append(wx);
+    //DateRev.Append(wx);
+    DateRev.Append(wxT("T"));
+    
+    // Set hour, minute and second.
+
+    int intHour = DateTimeNow.GetHour();
+    int intMinute = DateTimeNow.GetMinute();
+    int intSecond = DateTimeNow.GetSecond();
+
+    if (intHour < 10){
+    
+       DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intHour));
+    
+    } else {
+    
+       DateRev.Append(wxString::Format(wxT("%i"), intHour));    
+    
+    }
+    
+    if (intMinute < 10){
+    
+       DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intMinute));
+    
+    } else {
+    
+       DateRev.Append(wxString::Format(wxT("%i"), intMinute));
+    
+    }
+    
+    if (intSecond < 10){
+    
+       DateRev.Append(wxT("0") + wxString::Format(wxT("%i"), intSecond));
+    
+    } else {
+    
+       DateRev.Append(wxString::Format(wxT("%i"), intSecond));
+    
+    }
+
+ //   DateRev.Append(wx);
+ //   DateRev.Append(wx);
+ //   DateRev.Append(wxString DateTimeNow->);
+    DateRev.Append(wxT("Z"));    
+
+    ContactData.Add(wxT("UID"), UIDToken, FALSE);
+    
+    // Generate ETag data for the contact if it does not exist.
+    // If X-XAB-ETAG-ORIG exists, leave alone and update X-XAB-ETAG.
+    
+    srand (time(NULL));
+    
+    ContactData.Add(wxT("END"), wxT("VCARD"), FALSE);
+
+    FMTimer.Stop();
+    ContactData.WriteFile(FilenameFinal);
+    
+    vCard34Conv ConvFileFun;
+    
+    wxString wxSData;
+    
+    ConvFileFun.ConvertToV3(FilenameFinal, &wxSData);
+    
+    wxString AccountDirPrefix;
+    wxString AccountDir;
+    wxString PrefDir;
+    
+#if defined(__HAIKU__)
+    
+       //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+       PrefDir = GetUserPrefDir();
+
+       wxStringTokenizer wSTFilename(wxSContactFilename, wxT("\\"));
+
+#else
+
+       PrefDir = GetUserPrefDir();
+       
+       wxStringTokenizer wSTFilename(wxSContactFilename, wxT("/"));
+
+#endif
+    
+    XABPreferences PrefData(PrefDir);
+    
+       wxString AccountType;
+
+    for (int i = 0; i < PrefData.accounts.GetCount(); i++){
+
+               AccountDir = PrefData.accounts.GetAccountDirectory(i) + wxT(".carddav");
+
+               if (AccountDir == wxSContactAccount){
+       
+                       AccountDirPrefix = PrefData.accounts.GetAccountDirPrefix(i);
+                       AccountDirPrefix.Trim();
+                       AccountType = PrefData.accounts.GetAccountType(i);
+                       break;
+       
+               }
+
+    }
+    
+    wxString wxSplitFilename;
+    wxString wxSDataURL;
+    
+    while(wSTFilename.HasMoreTokens()){
+    
+       wxSplitFilename = wSTFilename.GetNextToken();
+    
+    }
+    
+    wxSDataURL = wxSplitFilename;
+    //wxSDataURL.Append(wxSplitFilename);
+    
+    // Find out if the filename exists in the table.
+    
+       if (AccountType == wxT("CardDAV") || AccountType == wxT("carddav")){
+
+               wxString ETagResult;
+               wxString ETagOriginal;
+
+               ETagDB *ETagDBPtr = NULL;
+
+               ETagDBPtr = ETagTmrPtr->GetPointer(wxSContactAccount);
+
+               wxString wxSETag = ETagDBPtr->GetETag(wxSplitFilename);
+               wxString wxSETagOrig = ETagDBPtr->GetETagOriginal(wxSplitFilename);
+
+               if (wxSETagOrig.IsEmpty()){
+
+                       // Generate the ETag.
+
+                       wxSETagOrig = wxString::Format(wxT("%X%X%X%X"), rand() % 1024, rand() % 1024, rand() % 1024, rand() % 1024);
+
+               }
+
+               if (wxSETag.IsEmpty()){
+
+                       // Update empty ETag.
+
+                       wxSETag = wxSETagOrig;
+                       ETagDBPtr->UpdateETag(wxSplitFilename, wxSETag, wxSETagOrig);
+
+               }
+               else {
+
+                       // Don't change original ETag.
+
+                       wxSETag = wxString::Format(wxT("%X%X%X%X"), rand() % 1024, rand() % 1024, rand() % 1024, rand() % 1024);
+                       ETagDBPtr->UpdateETag(wxSplitFilename, wxSETag);
+
+               }
+
+               if (EditMode == FALSE){
+
+                       ActMgrPtr->AddTask(0, cmbDisplayAs->GetValue(), wxSContactAccount, wxSDataURL, wxSplitFilename, FilenameFinal, wxSData);
+                       EditMode = TRUE;
+                       FMTimer.SetFilename(FilenameFinal);
+                       FMTimer.UpdateTimestamp();
+                       FMTimer.Start(10000, FALSE);
+
+               }
+               else {
+
+                       ActMgrPtr->AddTask(1, cmbDisplayAs->GetValue(), wxSContactAccount, wxSDataURL, wxSplitFilename, FilenameFinal, wxSData);
+                       FMTimer.UpdateTimestamp();
+                       FMTimer.Start(10000, FALSE);
+
+               }
+
+       }
+    
+    // Send a notification to update the main window
+    // with the new details.
+    
+    UCNotif *ucd;
+    ucd = new UCNotif;
+    
+    // TODO: Workout nickname settings by priority and
+    // type.
+    
+    ucd->ContactAccount = wxSContactAccount;
+    ucd->ContactFilename = FilenameFinal;
+    ucd->ContactName = cmbDisplayAs->GetValue();
+    ucd->ContactNameArray = ContactData.GetName();
+    
+    for (std::map<int,wxString>::iterator gniter = GeneralNicknamesList.begin();
+    gniter != GeneralNicknamesList.end(); gniter++){
+    
+               ucd->ContactNickname = gniter->second;
+               break;
+    
+    }
+    
+    wxCommandEvent event(CE_UPDATECONTACTLIST);
+    event.SetClientData(ucd);
+    wxPostEvent(MainPtr, event);
+
+}
+
+void frmContactEditor::SaveCloseContact( wxCommandEvent& event )
+{
+
+       // Save the updated contact data and close the form.
+
+}
+
+void frmContactEditor::CloseContact( wxCommandEvent& event )
+{
+
+       Close();
+
+}
+
+void frmContactEditor::CloseWindow( wxCloseEvent& event )
+{
+
+       // TODO: Check if any changes have been made,
+       // ask if the changes should be made, process
+       // action based on question and then close.
+       
+       WindowData *WData = new WindowData;
+
+       WData->DataType = 1;
+       WData->WindowPointer = this;
+       WData->WindowID = ContactEditorUID;
+
+       wxCommandEvent delevent(WINDOW_CLOSE);
+       delevent.SetClientData(WData);
+       wxPostEvent(GetParent(), delevent);
+       
+       Destroy();
+
+}
+
+
+void frmContactEditor::CutText( wxCommandEvent& event )
+{
+       // This function left empty for future implementation.
+}
+
+void frmContactEditor::CopyText( wxCommandEvent& event )
+{
+       // This function left empty for future implementation.
+}
+
+void frmContactEditor::PasteText( wxCommandEvent& event )
+{
+       // This function left empty for future implementation.
+}
+
+void frmContactEditor::SetupContact( wxString AccountName )
+{
+
+       wxSContactAccount = AccountName;
+
+}
+
+bool frmContactEditor::ProcessEvent(wxEvent& event)
+{
+
+       // This section has been taken from the wxWidgets sample code of richtext.cpp
+       // so that simple Cut/Copy/Paste code can be made.
+       
+       // As this code comes from the samples of the wxWidgets library, this is licenced
+       // under the wxWindows Library Licence and is compatable with the LGPL and is
+       // compatable with Xestia Address Book's licence.
+
+       if (event.IsCommandEvent() && !event.IsKindOf(CLASSINFO(wxChildFocusEvent)))
+       {
+               // Problem: we can get infinite recursion because the events
+               // climb back up to this frame, and repeat.
+               // Assume that command events don't cause another command event
+               // to be called, so we can rely on inCommand not being overwritten
+       
+               static int s_eventType = 0;
+               static wxWindowID s_id = 0;
+               
+               if (s_id != event.GetId() && s_eventType != event.GetEventType())
+               {
+                       s_eventType = event.GetEventType();
+                       s_id = event.GetId();
+                       
+                       wxWindow* focusWin = wxFindFocusDescendant(this);
+                       if (focusWin && focusWin->GetEventHandler()->ProcessEvent(event))
+                       {
+                       //s_command = NULL;
+                               s_eventType = 0;
+                               s_id = 0;
+                               return true;
+                       }
+                       s_eventType = 0;
+                       s_id = 0;
+               }
+               else
+               {
+                       return false;
+               }
+       }
+       
+       return wxFrame::ProcessEvent(event);
+}
+
+void frmContactEditor::SetupHeaders()
+{
+
+       /* Items for the General Tab */
+
+       SetupColumn(CE_NICKNAME, lboNicknames);
+       SetupColumn(CE_ADDRESS, lboAddresses);
+       SetupColumn(CE_EMAIL, lboEmails);
+       SetupColumn(CE_IM, lboIM);
+       SetupColumn(CE_TELEPHONE, lboTelephone);
+       SetupColumn(CE_LANG, lboLanguages);
+       SetupColumn(CE_TZ, lboTimezones);
+       SetupColumn(CE_GEOPOSITION, lboGeoposition);
+       SetupColumn(CE_RELATED, lboRelated);
+       SetupColumn(CE_WEBSITE, lboWebsites);
+       SetupColumn(CE_TITLE, lboTitles);
+       SetupColumn(CE_ROLE, lboRoles);
+       SetupColumn(CE_ORG, lboOrganisations);
+       SetupColumn(CE_NOTE, lboNotes);
+       
+       /* Items for the Home Tab */
+       
+       SetupColumn(CE_NICKNAME, lboHomeNicknames);
+       SetupColumn(CE_ADDRESS, lboHomeAddresses);
+       SetupColumn(CE_EMAIL, lboHomeEmails);
+       SetupColumn(CE_IM, lboHomeIM);
+       SetupColumn(CE_TELEPHONE, lboHomeTelephone);    
+       SetupColumn(CE_LANG, lboHomeLanguages);
+       SetupColumn(CE_TZ, lboHomeTimezones);
+       SetupColumn(CE_GEOPOSITION, lboHomeGeoposition);
+       SetupColumn(CE_WEBSITE, lboHomeWebsites);
+       SetupColumn(CE_TITLE, lboHomeTitles);
+       SetupColumn(CE_ROLE, lboHomeRoles);
+       SetupColumn(CE_ORG, lboHomeOrganisations);
+       SetupColumn(CE_NOTE, lboHomeNotes);
+       
+       /* Items for the Business Tab */
+       
+       SetupColumn(CE_NICKNAME, lboBusinessNicknames);
+       SetupColumn(CE_ADDRESS, lboBusinessAddresses);
+       SetupColumn(CE_EMAIL, lboBusinessEmail);
+       SetupColumn(CE_IM, lboBusinessIM);
+       SetupColumn(CE_TELEPHONE, lboBusinessTelephone);        
+       SetupColumn(CE_LANG, lboBusinessLanguages);
+       SetupColumn(CE_TZ, lboBusinessTimezones);
+       SetupColumn(CE_GEOPOSITION, lboBusinessGeoposition);
+       SetupColumn(CE_WEBSITE, lboBusinessWebsites);
+       SetupColumn(CE_TITLE, lboBusinessTitles);
+       SetupColumn(CE_ROLE, lboBusinessRoles);
+       SetupColumn(CE_ORG, lboBusinessOrganisations);
+       SetupColumn(CE_NOTE, lboBusinessNotes); 
+       
+       /* Items for the Categories Tab */
+       
+       SetupColumn(CE_CATEGORIES, lboCategories);
+       
+       /* Items for the Groups Tab */
+       
+       SetupColumn(CE_GROUPS, lboGroups);
+       
+       /* Items for the Pictures and Logos Tab */
+       
+       SetupColumn(CE_PICTURES, lboPictures);
+       SetupColumn(CE_PICTURES, lboLogos);     
+       
+       /* Items for the Sounds Tab */
+       
+       SetupColumn(CE_SOUNDS, lboSounds);
+       
+       /* Items for the Calendaring Tab */
+       
+       SetupColumn(CE_CALENDAR, lboCalendarAddresses);
+       SetupColumn(CE_CALENDAR, lboCalendarRequestAddress);
+       SetupColumn(CE_CALENDAR, lboFreeBusyAddresses); 
+       
+       /* Items for the Security Tab */
+       
+       SetupColumn(CE_KEY, lboKeys);
+       
+       /* Items for the Other Tab */
+       
+       SetupColumn(CE_TOKEN, lboVendorNamespace);
+       SetupColumn(CE_TOKEN, lboXToken);
+       
+}
+
+void frmContactEditor::SetupColumn(wxString ColumnType, wxListCtrl *ListCtrl)
+{
+       
+       wxListItem coldata;     
+       
+       if (ColumnType == CE_NICKNAME){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Nickname"));
+               coldata.SetWidth(128);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);             
+       
+       } else if (ColumnType == CE_ADDRESS){
+               
+               coldata.SetId(0);
+               coldata.SetText(_("Address"));
+               coldata.SetWidth(128);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Town"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(1, coldata);             
+               
+               coldata.SetId(2);
+               coldata.SetText(_("County"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(2, coldata);
+               
+               coldata.SetId(3);
+               coldata.SetText(_("Post code"));
+               coldata.SetWidth(48);
+               ListCtrl->InsertColumn(3, coldata);
+               
+               coldata.SetId(4);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(4, coldata);             
+               
+       } else if (ColumnType == CE_EMAIL){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Email address"));
+               coldata.SetWidth(304);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);
+       
+       } else if (ColumnType == CE_IM){
+
+               coldata.SetId(0);
+               coldata.SetText(_("Type"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(0, coldata);
+
+               coldata.SetId(1);
+               coldata.SetText(_("Address"));
+               coldata.SetWidth(240);
+               ListCtrl->InsertColumn(1, coldata);
+               
+               coldata.SetId(2);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(2, coldata);             
+       
+       } else if (ColumnType == CE_TELEPHONE){
+               
+               coldata.SetId(0);
+               coldata.SetText(_("Telephone number"));
+               coldata.SetWidth(128);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Type"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(1, coldata);             
+               
+               coldata.SetId(2);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(2, coldata);             
+       
+       } else if (ColumnType == CE_LANG){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Language"));
+               coldata.SetWidth(128);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);             
+       
+       } else if (ColumnType == CE_TZ){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Timezone"));
+               coldata.SetWidth(192);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);             
+       
+       } else if (ColumnType == CE_RELATED){
+               
+               coldata.SetId(0);
+               coldata.SetText(_("Type"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Name/Description"));
+               coldata.SetWidth(192);
+               ListCtrl->InsertColumn(1, coldata);
+               
+               coldata.SetId(2);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(2, coldata);
+       
+       } else if (ColumnType == CE_WEBSITE){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Website"));
+               coldata.SetWidth(288);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);
+       
+       } else if (ColumnType == CE_TITLE){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Title"));
+               coldata.SetWidth(288);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);
+       
+       } else if (ColumnType == CE_ROLE){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Role"));
+               coldata.SetWidth(288);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);
+       
+       } else if (ColumnType == CE_ORG){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Organisation"));
+               coldata.SetWidth(288);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);
+       
+       } else if (ColumnType == CE_NOTE){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Notes"));
+               coldata.SetWidth(288);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);     
+       
+       } else if (ColumnType == CE_CATEGORIES){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Category"));
+               coldata.SetWidth(320);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);
+               
+       } else if (ColumnType == CE_GROUPS){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Member"));
+               coldata.SetWidth(320);
+               ListCtrl->InsertColumn(0, coldata);
+
+       } else if (ColumnType == CE_GEOPOSITION){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Geoposition"));
+               coldata.SetWidth(320);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(1, coldata);
+               
+       } else if (ColumnType == CE_PICTURES){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Pictures"));
+               coldata.SetWidth(128);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Type"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(1, coldata);             
+               
+               coldata.SetId(2);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(2, coldata);
+               
+       } else if (ColumnType == CE_SOUNDS){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Sounds"));
+               coldata.SetWidth(128);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Type"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(1, coldata);             
+               
+               coldata.SetId(2);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(2, coldata);
+               
+       } else if (ColumnType == CE_CALENDAR){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Calendar Address"));
+               coldata.SetWidth(224);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Type"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(1, coldata);             
+               
+               coldata.SetId(2);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(2, coldata);
+               
+       } else if (ColumnType == CE_KEY){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Key information"));
+               coldata.SetWidth(224);
+               ListCtrl->InsertColumn(0, coldata);
+               
+               coldata.SetId(1);
+               coldata.SetText(_("Type"));
+               coldata.SetWidth(64);
+               ListCtrl->InsertColumn(1, coldata);             
+               
+               coldata.SetId(2);
+               coldata.SetText(_("Pri."));
+               coldata.SetWidth(32);
+               ListCtrl->InsertColumn(2, coldata);
+               
+       } else if (ColumnType == CE_TOKEN){
+       
+               coldata.SetId(0);
+               coldata.SetText(_("Token"));
+               coldata.SetWidth(320);
+               ListCtrl->InsertColumn(0, coldata);
+               
+       }
+       
+}
+
+int frmContactEditor::GetLastInt(std::map<int, wxString> *MapData){
+
+       /*
+       int intResult = 0;
+
+       std::map<int,wxString>::iterator iwxsit;
+
+       for( iwxsit=(*MapData).begin(); iwxsit != (*MapData).end(); iwxsit++){
+               intResult = (*iwxsit).first;
+       }
+       
+       return intResult;
+       */
+       
+       intValueSeek++;
+       return intValueSeek;
+
+}
+
+int frmContactEditor::GetLastInt(std::map<int, std::string> *MapData){
+
+       /* int intResult = 0;
+
+       std::map<int,std::string>::iterator iwxsit;
+
+       for( iwxsit=(*MapData).begin(); iwxsit != (*MapData).end(); iwxsit++){
+               intResult = (*iwxsit).first;
+       }*/
+       
+       intValueSeek++;
+       return intValueSeek;
+
+}
+
+bool frmContactEditor::GetSelectedItem(wxListCtrl *ListCtrlPtr, 
+                                       long *longSelected,
+                                       int *intSelectedData){
+
+    *longSelected = -1;
+    *intSelectedData = 0;
+
+    *longSelected = ListCtrlPtr->GetNextItem(*longSelected, 
+       wxLIST_NEXT_ALL,
+       wxLIST_STATE_SELECTED);
+
+       if (*longSelected == -1){
+               return FALSE;
+       }
+       else {
+               return TRUE;
+       }
+
+    *intSelectedData = ListCtrlPtr->GetItemData(*longSelected);  
+
+}
+
+void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map<int, std::string>* MapData){
+       MapData->erase(IndexNum);
+}
+
+void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData){
+       MapData->erase(IndexNum);
+}
+
+void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData){
+       MapData->erase(IndexNum);
+}
+
+void frmContactEditor::DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData){
+       MapData->erase(IndexNum);
+}
+
+void frmContactEditor::ProcessSaveDataProc( wxString PropName,
+                                       std::map<int,int>* MapData){
+
+       int intIterVal = (*iterDataPtr)->first;
+       
+       std::map<int,int>::iterator intIter;
+       
+       intIter = MapData->find(intIterVal);
+       
+       int intPropValue; 
+       
+       if (intIter->first == intIterVal){
+       
+           intPropValue = intIter->second;
+       
+           if (intPropValue){
+
+               if (*boolAdditionalPtr == TRUE){
+               
+                   strPropertyPtr->Append(wxT(";"));
+               
+               } else {
+               
+                   *boolAdditionalPtr = TRUE;
+               
+               }
+
+               strPropertyPtr->Append(PropName + wxT("=") + wxString::Format(wxT("%i"), intPropValue));
+           
+               *boolExtraPtr = TRUE;
+           
+           }
+       
+       }
+
+}
+
+void frmContactEditor::ProcessSaveDataProc( wxString PropName,
+                                       std::map<int,wxString>* MapData){
+
+       int intIterVal;
+
+       intIterVal = (*iterDataPtr)->first;
+       
+       std::map<int,wxString>::iterator strIter;
+       
+       strIter = MapData->find(intIterVal);
+
+       if (strIter == MapData->end()){
+
+               return;
+
+       }
+
+       wxString strPropValue;
+       
+       if (strIter->first == intIterVal){
+
+           strPropValue = strIter->second;
+               
+           if (!strPropValue.IsEmpty() && PropName.IsEmpty()){
+       
+               strPropValue.Trim();
+               strPropValue.Trim();
+
+               if (*boolAdditionalPtr == TRUE){
+       
+                   strPropertyPtr->Append(wxT(";"));
+       
+               } else {
+       
+                   *boolAdditionalPtr = TRUE;
+       
+               }
+
+               strPropertyPtr->Append(strPropValue);   
+               
+               *boolExtraPtr = TRUE;
+       
+               return;
+       
+           }
+       
+           if (!strPropValue.IsEmpty()){
+           
+               strPropValue.Trim();
+               strPropValue.Trim();
+
+               if (*boolAdditionalPtr == TRUE){
+               
+                   strPropertyPtr->Append(wxT(";"));
+               
+               } else {
+               
+                   *boolAdditionalPtr = TRUE;
+               
+               }
+               
+               // Look for semi-colon in property name and if there is then
+               // quote the value.
+
+               if (PropName != wxT("TYPE")){
+               
+                       EscapeString(&strPropValue, FALSE);     
+               
+               }
+               
+               if (strPropValue.find(wxT(";")) == wxNOT_FOUND && strPropValue.find(wxT(":")) == wxNOT_FOUND &&
+                   strPropValue.find(wxT(",")) == wxNOT_FOUND){
+
+                       strPropertyPtr->Append(PropName + wxT("=") + strPropValue);
+               
+               } else {
+
+                       strPropertyPtr->Append(PropName + wxT("=\"") + strPropValue + wxT("\""));
+                       
+               }
+           
+               *boolExtraPtr = TRUE;
+           
+           }
+       
+       }
+
+}
+
+void frmContactEditor::ProcessSaveDataStrProc( wxString PropName,
+                                       std::map<int,std::string>* MapData){
+
+       int intIterVal = (*iterDataStringPtr)->first;
+       
+       //std::map<int,wxString>::iterator strIter;
+       
+       std::map<int,std::string>::iterator stdstrIter;
+       
+       stdstrIter = MapData->find(intIterVal); 
+       
+       if (stdstrIter->first == intIterVal){
+       
+           wxString strPropValue(stdstrIter->second.c_str(), wxConvUTF8);
+
+               if (!strPropValue.IsEmpty() && PropName.IsEmpty()){
+
+                       strPropValue.Trim();
+                       strPropValue.Trim();
+
+                       if (*boolAdditionalPtr == TRUE){
+
+                               strPropertyPtr->Append(wxT(";"));
+
+                       } else {
+
+                               *boolAdditionalPtr = TRUE;
+
+                       }
+
+                       strPropertyPtr->Append(strPropValue);
+
+                       *boolExtraPtr = TRUE;
+
+                       return;
+
+               }
+       
+               if (!strPropValue.IsEmpty()){
+
+                       strPropValue.Trim();
+                       strPropValue.Trim();
+
+                       if (*boolAdditionalPtr == TRUE){
+
+                               strPropertyPtr->Append(wxT(";"));
+
+                       } else {
+
+                               *boolAdditionalPtr = TRUE;
+
+                       }
+
+                       // Look for semi-colon in property name and if there is then
+                       // quote the value.
+
+                       if (PropName != wxT("TYPE")){
+
+                               EscapeString(&strPropValue, FALSE);
+
+                       }
+
+                       if (strPropValue.find(wxT(";")) == wxNOT_FOUND && strPropValue.find(wxT(":")) == wxNOT_FOUND &&
+                               strPropValue.find(wxT(",")) == wxNOT_FOUND){
+
+                               strPropertyPtr->Append(PropName + wxT("=") + strPropValue);
+
+                       } else {
+
+                               strPropertyPtr->Append(PropName + wxT("=\"") + strPropValue + wxT("\""));
+
+                       }
+
+                       *boolExtraPtr = TRUE;
+
+               }
+       
+       }
+
+}
+
+
+void frmContactEditor::ProcessSaveDataStrProc( wxString PropName,
+                                       std::map<int,int>* MapData){
+
+       int intIterVal = (*iterDataStringPtr)->first;
+       
+       std::map<int,int>::iterator intIter;
+       
+       intIter = MapData->find(intIterVal);
+       
+       int intPropValue; 
+       
+       if (intIter->first == intIterVal){
+       
+           intPropValue = intIter->second;
+       
+           if (intPropValue){
+
+               if (*boolAdditionalPtr == TRUE){
+               
+                   strPropertyPtr->Append(wxT(";"));
+               
+               } else {
+               
+                   *boolAdditionalPtr = TRUE;
+               
+               }
+
+               strPropertyPtr->Append(PropName + wxT("=") + wxString::Format(wxT("%i"), intPropValue));
+           
+               *boolExtraPtr = TRUE;
+           
+           }
+       
+       }
+
+}
+
+void frmContactEditor::ProcessSaveDataStrProc( wxString PropName,
+                                       std::map<int,wxString>* MapData){
+
+       int intIterVal;
+
+       intIterVal = (*iterDataStringPtr)->first;
+       
+       std::map<int,wxString>::iterator strIter;
+       
+       strIter = MapData->find(intIterVal);
+       
+       wxString strPropValue;
+       
+       if (strIter->first == intIterVal){
+
+           strPropValue = strIter->second;
+               
+           if (!strPropValue.IsEmpty() && PropName.IsEmpty()){
+       
+               strPropValue.Trim();
+               strPropValue.Trim();
+
+               if (*boolAdditionalPtr == TRUE){
+       
+                   strPropertyPtr->Append(wxT(";"));
+       
+               } else {
+       
+                   *boolAdditionalPtr = TRUE;
+       
+               }
+
+               strPropertyPtr->Append(strPropValue);   
+               
+               *boolExtraPtr = TRUE;
+       
+               return;
+       
+           }
+       
+           if (!strPropValue.IsEmpty()){
+           
+               strPropValue.Trim();
+               strPropValue.Trim();
+
+               if (*boolAdditionalPtr == TRUE){
+               
+                   strPropertyPtr->Append(wxT(";"));
+               
+               } else {
+               
+                   *boolAdditionalPtr = TRUE;
+               
+               }
+               
+               // Look for semi-colon in property name and if there is then
+               // quote the value.
+
+               if (PropName != wxT("TYPE")){
+               
+                       EscapeString(&strPropValue, FALSE);
+               
+               }
+               
+               if (strPropValue.find(wxT(";")) == wxNOT_FOUND && strPropValue.find(wxT(":")) == wxNOT_FOUND &&
+                   strPropValue.find(wxT(",")) == wxNOT_FOUND){
+
+                       strPropertyPtr->Append(PropName + wxT("=") + strPropValue);
+               
+               } else {
+
+                       strPropertyPtr->Append(PropName + wxT("=\"") + strPropValue + wxT("\""));
+                       
+               }
+           
+               *boolExtraPtr = TRUE;
+           
+           }
+       
+       }
+
+}
+
+void frmContactEditor::ProcessCaptureStringsProc(wxString *strCapture){
+
+    CaptureString(strCapture, FALSE);
+
+}
+
+void frmContactEditor::ResetSaveProcessData(){
+
+    strValue.Clear();
+    strValue2.Clear();
+    strValue3.Clear();    
+
+    boolValue = FALSE;
+    boolValue2 = FALSE;    
+    intValue2 = 0;
+    intValue  = 0;
+
+}
+
+void frmContactEditor::SetupPointers(frmActivityMgr *ActMgr, wxETagProcessTimer *ETagProc,
+                                       frmMain *MainPtrInc){
+
+    ActMgrPtr = ActMgr;
+    ETagTmrPtr = ETagProc;
+    MainPtr = MainPtrInc;
+
+}
+
+void frmContactEditor::ClearContact(){
+
+    // Clear out the GUI and values.
+    
+    // Clear GUI.
+    
+    txtTitle->Clear();
+    txtForename->Clear();
+    txtSurname->Clear();
+    txtOtherNames->Clear();
+    txtSuffix->Clear();
+    cmbDisplayAs->Clear();
+    cmbDisplayAs->SetValue(wxT(""));
+    wxDateTime EmptyDate;
+    wxBitmap EmptyBitmap;
+    dapAnniversary->SetValue(EmptyDate);
+    dapBirthday->SetValue(EmptyDate);
+    txtBirthday->Clear();
+    txtAnniversary->Clear();
+    cmbGender->Select(0);
+    txtGenderDescription->Clear();
+    
+    lboNicknames->DeleteAllItems();
+    lboHomeNicknames->DeleteAllItems();
+    lboBusinessNicknames->DeleteAllItems();
+    
+    lboAddresses->DeleteAllItems();
+    lboHomeAddresses->DeleteAllItems();
+    lboBusinessAddresses->DeleteAllItems();
+    
+    lboEmails->DeleteAllItems();
+    lboHomeEmails->DeleteAllItems();
+    lboBusinessEmail->DeleteAllItems();
+    
+    lboIM->DeleteAllItems();
+    lboHomeIM->DeleteAllItems();
+    lboBusinessIM->DeleteAllItems();
+    
+    lboTelephone->DeleteAllItems();
+    lboHomeTelephone->DeleteAllItems();
+    lboBusinessTelephone->DeleteAllItems();
+    
+    lboLanguages->DeleteAllItems();
+    lboHomeLanguages->DeleteAllItems();
+    lboBusinessLanguages->DeleteAllItems();
+    
+    lboTimezones->DeleteAllItems();
+    lboHomeTimezones->DeleteAllItems();
+    lboBusinessTimezones->DeleteAllItems();
+    
+    lboGeoposition->DeleteAllItems();
+    lboHomeGeoposition->DeleteAllItems();
+    lboBusinessGeoposition->DeleteAllItems();
+    
+    lboRelated->DeleteAllItems();
+    
+    lboWebsites->DeleteAllItems();
+    lboHomeWebsites->DeleteAllItems();
+    lboBusinessWebsites->DeleteAllItems();
+    
+    lboTitles->DeleteAllItems();
+    lboHomeTitles->DeleteAllItems();
+    lboBusinessTitles->DeleteAllItems();
+    
+    lboRoles->DeleteAllItems();
+    lboHomeRoles->DeleteAllItems();
+    lboBusinessRoles->DeleteAllItems();
+    
+    lboOrganisations->DeleteAllItems();
+    lboHomeOrganisations->DeleteAllItems();
+    lboBusinessOrganisations->DeleteAllItems();
+    
+    lboNotes->DeleteAllItems();
+    lboHomeNotes->DeleteAllItems();
+    lboBusinessNotes->DeleteAllItems();
+    
+    lboCategories->DeleteAllItems();
+    
+    lboGroups->DeleteAllItems();
+    
+    // Clear Picture
+    lboPictures->DeleteAllItems();
+    imgPicture->SetBitmap(EmptyBitmap);
+    
+    // Clear Logo
+    lboLogos->DeleteAllItems();
+    imgLogo->SetBitmap(EmptyBitmap);
+    
+    lboSounds->DeleteAllItems();
+    
+    lboCalendarAddresses->DeleteAllItems();
+    lboCalendarRequestAddress->DeleteAllItems();
+    lboFreeBusyAddresses->DeleteAllItems();
+    
+    lboKeys->DeleteAllItems();
+    
+    lboVendorNamespace->DeleteAllItems();
+    lboXToken->DeleteAllItems();
+    
+    // Clear values out.
+    
+    wxString NameTitle;
+    wxString NameForename;
+    wxString NameSurname;
+    wxString NameOtherNames;
+    wxString NameSuffix;
+    wxString NameNickname;
+    wxString NameDisplayAs;
+    wxString NameLanguage;
+    wxString NameAltID;
+    wxString NameTokens;
+
+    wxString Birthday;
+    wxString BirthdayAltID;
+    wxString BirthdayCalScale;
+    wxString BirthdayTokens;
+    wxString Anniversary;
+    wxString AnniversaryAltID;
+    wxString AnniversaryCalScale;
+    wxString AnniversaryTokens;
+
+    wxString Gender;
+    wxString GenderDetails;
+    wxString GenderTokens;
+
+    wxString UIDToken;
+
+    /* We don't use these at the moment but we want to keep
+      them for compatability reasons */
+
+    /*std::map<int, wxString> ExtraFullNames;*/
+    /*std::map<int, wxString> ExtraNicknames;*/
+
+    FullNamesList.clear();    
+    FullNamesListType.clear();
+    FullNamesListLanguage.clear();
+    FullNamesListAltID.clear();
+    FullNamesListPID.clear();
+    FullNamesListTokens.clear();
+    FullNamesListPref.clear();
+
+    GeneralNicknamesList.clear();
+    GeneralNicknamesListType.clear();
+    GeneralNicknamesListLanguage.clear();
+    GeneralNicknamesListAltID.clear();
+    GeneralNicknamesListPID.clear();
+    GeneralNicknamesListTokens.clear();        
+    GeneralNicknamesListPref.clear();        
+
+    GeneralAddressList.clear();
+    GeneralAddressListTown.clear();
+    GeneralAddressListCounty.clear();
+    GeneralAddressListPostCode.clear();
+    GeneralAddressListCountry.clear();
+    GeneralAddressListLabel.clear();
+    GeneralAddressListLang.clear();        
+    GeneralAddressListAltID.clear();
+    GeneralAddressListPID.clear();
+    GeneralAddressListTokens.clear();
+    GeneralAddressListGeo.clear();
+    GeneralAddressListTimezone.clear();        
+    GeneralAddressListType.clear();
+    GeneralAddressListMediatype.clear();
+    GeneralAddressListPref.clear();
+
+    GeneralEmailList.clear();
+    GeneralEmailListAltID.clear();
+    GeneralEmailListPID.clear();
+    GeneralEmailListType.clear();
+    GeneralEmailListTokens.clear();
+    GeneralEmailListPref.clear();
+
+    GeneralIMList.clear();
+    GeneralIMListAltID.clear();
+    GeneralIMListPID.clear();
+    GeneralIMListType.clear();
+    GeneralIMListTokens.clear();
+    GeneralIMListMediatype.clear();
+    GeneralIMListPref.clear();
+
+    GeneralTelephoneList.clear();
+    GeneralTelephoneListAltID.clear();
+    GeneralTelephoneListPID.clear();
+    GeneralTelephoneListType.clear();
+    GeneralTelephoneListTokens.clear();
+    GeneralTelephoneListPref.clear();
+
+    GeneralLanguageList.clear();
+    GeneralLanguageListAltID.clear();
+    GeneralLanguageListPID.clear();
+    GeneralLanguageListType.clear();
+    GeneralLanguageListTokens.clear();
+    GeneralLanguageListPref.clear();
+
+    GeneralTZList.clear();
+    GeneralTZListAltID.clear();
+    GeneralTZListPID.clear();
+    GeneralTZListType.clear();
+    GeneralTZListTokens.clear();
+    GeneralTZListMediatype.clear();
+    GeneralTZListPref.clear();
+
+    GeneralGeographyList.clear();
+    GeneralGeographyListAltID.clear();
+    GeneralGeographyListPID.clear();
+    GeneralGeographyListType.clear();
+    GeneralGeographyListTokens.clear();
+    GeneralGeographyListMediatype.clear();
+    GeneralGeographyListPref.clear();
+
+    GeneralRelatedList.clear();
+    GeneralRelatedListRelType.clear();
+    GeneralRelatedListLanguage.clear();
+    GeneralRelatedListAltID.clear();
+    GeneralRelatedListPID.clear();
+    GeneralRelatedListType.clear();
+    GeneralRelatedListTokens.clear();
+    GeneralRelatedListPref.clear();
+
+    GeneralWebsiteList.clear();
+    GeneralWebsiteListAltID.clear();
+    GeneralWebsiteListPID.clear();
+    GeneralWebsiteListType.clear();
+    GeneralWebsiteListTokens.clear();
+    GeneralWebsiteListMediatype.clear();
+    GeneralWebsiteListPref.clear();
+
+    GeneralTitleList.clear();
+    GeneralTitleListLanguage.clear();        
+    GeneralTitleListAltID.clear();
+    GeneralTitleListPID.clear();
+    GeneralTitleListType.clear();
+    GeneralTitleListTokens.clear();
+    GeneralTitleListPref.clear();
+
+    GeneralRoleList.clear();
+    GeneralRoleListLanguage.clear();        
+    GeneralRoleListAltID.clear();
+    GeneralRoleListPID.clear();
+    GeneralRoleListType.clear();
+    GeneralRoleListTokens.clear();
+    GeneralRoleListPref.clear();
+
+    GeneralOrganisationsList.clear();
+    GeneralOrganisationsListLanguage.clear();        
+    GeneralOrganisationsListAltID.clear();
+    GeneralOrganisationsListPID.clear();
+    GeneralOrganisationsListType.clear();
+    GeneralOrganisationsListTokens.clear();
+    GeneralOrganisationsListSortAs.clear();
+    GeneralOrganisationsListPref.clear();
+
+    GeneralNoteList.clear();
+    GeneralNoteListLanguage.clear();        
+    GeneralNoteListAltID.clear();
+    GeneralNoteListPID.clear();
+    GeneralNoteListType.clear();
+    GeneralNoteListTokens.clear();
+    GeneralNoteListPref.clear();
+
+    /* Items on Home Tab */        
+
+    HomeNicknamesList.clear();
+    HomeNicknamesListType.clear();
+    HomeNicknamesListLanguage.clear();
+    HomeNicknamesListAltID.clear();
+    HomeNicknamesListPID.clear();
+    HomeNicknamesListTokens.clear();        
+    HomeNicknamesListPref.clear();        
+
+    HomeAddressList.clear();
+    HomeAddressListTown.clear();
+    HomeAddressListCounty.clear();
+    HomeAddressListPostCode.clear();
+    HomeAddressListCountry.clear();
+    HomeAddressListLabel.clear();
+    HomeAddressListLang.clear();        
+    HomeAddressListAltID.clear();
+    HomeAddressListPID.clear();
+    HomeAddressListTokens.clear();
+    HomeAddressListGeo.clear();
+    HomeAddressListTimezone.clear();        
+    HomeAddressListType.clear();
+    HomeAddressListMediatype.clear();
+    HomeAddressListPref.clear();
+
+    HomeEmailList.clear();
+    HomeEmailListAltID.clear();
+    HomeEmailListPID.clear();
+    HomeEmailListType.clear();
+    HomeEmailListTokens.clear();
+    HomeEmailListPref.clear();
+
+    HomeIMList.clear();
+    HomeIMListAltID.clear();
+    HomeIMListPID.clear();
+    HomeIMListType.clear();
+    HomeIMListTokens.clear();
+    HomeIMListMediatype.clear();
+    HomeIMListPref.clear();
+
+    HomeTelephoneList.clear();
+    HomeTelephoneListAltID.clear();
+    HomeTelephoneListPID.clear();
+    HomeTelephoneListType.clear();
+    HomeTelephoneListTokens.clear();
+    HomeTelephoneListPref.clear();
+
+    HomeLanguageList.clear();
+    HomeLanguageListAltID.clear();
+    HomeLanguageListPID.clear();
+    HomeLanguageListType.clear();
+    HomeLanguageListTokens.clear();
+    HomeLanguageListPref.clear();
+
+    HomeTZList.clear();
+    HomeTZListAltID.clear();
+    HomeTZListPID.clear();
+    HomeTZListType.clear();
+    HomeTZListTokens.clear();
+    HomeTZListMediatype.clear();
+    HomeTZListPref.clear();
+
+    HomeGeographyList.clear();
+    HomeGeographyListAltID.clear();
+    HomeGeographyListPID.clear();
+    HomeGeographyListType.clear();
+    HomeGeographyListTokens.clear();
+    HomeGeographyListMediatype.clear();
+    HomeGeographyListPref.clear();
+
+    HomeRelatedList.clear();
+    HomeRelatedListRelType.clear();
+    HomeRelatedListLanguage.clear();
+    HomeRelatedListAltID.clear();
+    HomeRelatedListPID.clear();
+    HomeRelatedListType.clear();
+    HomeRelatedListTokens.clear();
+    HomeRelatedListPref.clear();        
+
+    HomeWebsiteList.clear();
+    HomeWebsiteListAltID.clear();
+    HomeWebsiteListPID.clear();
+    HomeWebsiteListType.clear();
+    HomeWebsiteListTokens.clear();
+    HomeWebsiteListMediatype.clear();
+    HomeWebsiteListPref.clear();
+
+    HomeTitleList.clear();
+    HomeTitleListLanguage.clear();
+    HomeTitleListAltID.clear();
+    HomeTitleListPID.clear();
+    HomeTitleListType.clear();
+    HomeTitleListTokens.clear();
+    HomeTitleListPref.clear();
+
+    HomeRoleList.clear();
+    HomeRoleListLanguage.clear();        
+    HomeRoleListAltID.clear();
+    HomeRoleListPID.clear();
+    HomeRoleListType.clear();
+    HomeRoleListTokens.clear();
+    HomeRoleListPref.clear();
+
+    HomeOrganisationsList.clear();
+    HomeOrganisationsListLanguage.clear();        
+    HomeOrganisationsListAltID.clear();
+    HomeOrganisationsListPID.clear();
+    HomeOrganisationsListType.clear();
+    HomeOrganisationsListTokens.clear();
+    HomeOrganisationsListSortAs.clear();
+    HomeOrganisationsListPref.clear();
+
+    HomeNoteList.clear();
+    HomeNoteListLanguage.clear();        
+    HomeNoteListAltID.clear();
+    HomeNoteListPID.clear();
+    HomeNoteListType.clear();
+    HomeNoteListTokens.clear();
+    HomeNoteListPref.clear();        
+
+    /* Items on the Business tab */
+
+    BusinessNicknamesList.clear();
+    BusinessNicknamesListType.clear();
+    BusinessNicknamesListLanguage.clear();
+    BusinessNicknamesListAltID.clear();
+    BusinessNicknamesListPID.clear();
+    BusinessNicknamesListTokens.clear();        
+    BusinessNicknamesListPref.clear();        
+
+    BusinessAddressList.clear();
+    BusinessAddressListTown.clear();
+    BusinessAddressListCounty.clear();
+    BusinessAddressListPostCode.clear();
+    BusinessAddressListCountry.clear();
+    BusinessAddressListLabel.clear();
+    BusinessAddressListLang.clear();        
+    BusinessAddressListAltID.clear();
+    BusinessAddressListPID.clear();
+    BusinessAddressListTokens.clear();
+    BusinessAddressListGeo.clear();
+    BusinessAddressListTimezone.clear();        
+    BusinessAddressListType.clear();
+    BusinessAddressListMediatype.clear();
+    BusinessAddressListPref.clear();
+
+    BusinessEmailList.clear();
+    BusinessEmailListAltID.clear();
+    BusinessEmailListPID.clear();
+    BusinessEmailListType.clear();
+    BusinessEmailListTokens.clear();
+    BusinessEmailListPref.clear();
+
+    BusinessIMList.clear();
+    BusinessIMListAltID.clear();
+    BusinessIMListPID.clear();
+    BusinessIMListType.clear();
+    BusinessIMListTokens.clear();
+    BusinessIMListMediatype.clear();
+    BusinessIMListPref.clear();
+
+    BusinessTelephoneList.clear();
+    BusinessTelephoneListAltID.clear();
+    BusinessTelephoneListPID.clear();
+    BusinessTelephoneListType.clear();
+    BusinessTelephoneListTokens.clear();
+    BusinessTelephoneListPref.clear();
+
+    BusinessLanguageList.clear();
+    BusinessLanguageListAltID.clear();
+    BusinessLanguageListPID.clear();
+    BusinessLanguageListType.clear();
+    BusinessLanguageListTokens.clear();
+    BusinessLanguageListPref.clear();
+
+    BusinessTZList.clear();
+    BusinessTZListAltID.clear();
+    BusinessTZListPID.clear();
+    BusinessTZListType.clear();
+    BusinessTZListTokens.clear();
+    BusinessTZListMediatype.clear();
+    BusinessTZListPref.clear();
+
+    BusinessGeographyList.clear();
+    BusinessGeographyListAltID.clear();
+    BusinessGeographyListPID.clear();
+    BusinessGeographyListType.clear();
+    BusinessGeographyListTokens.clear();
+    BusinessGeographyListMediatype.clear();
+    BusinessGeographyListPref.clear();
+
+    BusinessRelatedList.clear();
+    BusinessRelatedListRelType.clear();
+    BusinessRelatedListLanguage.clear();
+    BusinessRelatedListAltID.clear();
+    BusinessRelatedListPID.clear();
+    BusinessRelatedListType.clear();
+    BusinessRelatedListTokens.clear();
+    BusinessRelatedListPref.clear();            
+
+    BusinessWebsiteList.clear();
+    BusinessWebsiteListAltID.clear();
+    BusinessWebsiteListPID.clear();
+    BusinessWebsiteListType.clear();
+    BusinessWebsiteListTokens.clear();
+    BusinessWebsiteListMediatype.clear();
+    BusinessWebsiteListPref.clear();
+
+    BusinessTitleList.clear();
+    BusinessTitleListLanguage.clear();        
+    BusinessTitleListAltID.clear();
+    BusinessTitleListPID.clear();
+    BusinessTitleListType.clear();
+    BusinessTitleListTokens.clear();
+    BusinessTitleListPref.clear();
+
+    BusinessRoleList.clear();
+    BusinessRoleListLanguage.clear();        
+    BusinessRoleListAltID.clear();
+    BusinessRoleListPID.clear();
+    BusinessRoleListType.clear();
+    BusinessRoleListTokens.clear();
+    BusinessRoleListPref.clear();
+
+    BusinessOrganisationsList.clear();
+    BusinessOrganisationsListLanguage.clear();        
+    BusinessOrganisationsListAltID.clear();
+    BusinessOrganisationsListPID.clear();
+    BusinessOrganisationsListType.clear();
+    BusinessOrganisationsListTokens.clear();
+    BusinessOrganisationsListSortAs.clear();        
+    BusinessOrganisationsListPref.clear();
+
+    BusinessNoteList.clear();
+    BusinessNoteListLanguage.clear();        
+    BusinessNoteListAltID.clear();
+    BusinessNoteListPID.clear();
+    BusinessNoteListType.clear();
+    BusinessNoteListTokens.clear();
+    BusinessNoteListPref.clear();        
+
+    /* Items on the Categories tab */
+
+    CategoriesList.clear();
+    CategoriesListAltID.clear();
+    CategoriesListPID.clear();
+    CategoriesListType.clear();
+    CategoriesListTokens.clear();
+    CategoriesListPref.clear();    
+
+    /* Items on the Groups tab */
+
+    GroupsList.clear();
+    GroupsListAltID.clear();
+    GroupsListPID.clear();
+    GroupsListType.clear();
+    GroupsListTokens.clear();
+    GroupsListPref.clear();
+
+    /* Items on the Pictures tab */
+
+    PicturesList.clear();
+    PicturesListAltID.clear();
+    PicturesListPID.clear();
+    PicturesListType.clear();
+    PicturesListPicEncType.clear();
+    PicturesListPictureType.clear();
+    PicturesListTokens.clear();
+    PicturesListMediatype.clear();        
+    PicturesListPref.clear();
+
+    /* Items on the Logos tab */
+
+    LogosList.clear();
+    LogosListAltID.clear();
+    LogosListPID.clear();
+    LogosListType.clear();
+    LogosListPicEncType.clear();        
+    LogosListPictureType.clear();
+    LogosListTokens.clear();
+    LogosListMediatype.clear();        
+    LogosListPref.clear();
+
+    /* Items on the Sounds tab */
+
+    SoundsList.clear();
+    SoundsListAltID.clear();
+    SoundsListPID.clear();
+    SoundsListType.clear();
+    SoundsListAudioEncType.clear();        
+    SoundsListAudioType.clear();        
+    SoundsListTokens.clear();
+    SoundsListMediatype.clear();        
+    SoundsListPref.clear();    
+
+    /* Items on the Calendaring tab */
+
+    CalendarList.clear();
+    CalendarListAltID.clear();
+    CalendarListPID.clear();
+    CalendarListType.clear();
+    CalendarListTokens.clear();
+    CalendarListMediatype.clear();        
+    CalendarListPref.clear();
+
+    CalendarRequestList.clear();
+    CalendarRequestListAltID.clear();
+    CalendarRequestListPID.clear();
+    CalendarRequestListType.clear();
+    CalendarRequestListTokens.clear();
+    CalendarRequestListMediatype.clear();        
+    CalendarRequestListPref.clear();        
+
+    FreeBusyList.clear();
+    FreeBusyListAltID.clear();
+    FreeBusyListPID.clear();
+    FreeBusyListType.clear();
+    FreeBusyListTokens.clear();
+    FreeBusyListMediatype.clear();        
+    FreeBusyListPref.clear();
+
+    /* Items on the Security tab */
+
+    KeyList.clear();
+    KeyListAltID.clear();
+    KeyListPID.clear();
+    KeyListKeyType.clear();        
+    KeyListDataType.clear();        
+    KeyListDataEncType.clear();
+    KeyListType.clear();
+    KeyListTokens.clear();
+    KeyListPref.clear();
+
+    /* Items on the Other tab */
+
+    VendorList.clear();
+    VendorListPEN.clear();
+    VendorListElement.clear();
+
+    XTokenList.clear();        
+    XTokenListTokens.clear();
+    
+    wxSContactFilename.Clear();
+    boolContactModified = FALSE;
+    intSeekSelectedData = 0;
+
+    /* Section for saving/loading data */
+
+    ETag.Clear();
+    ETagOriginal.Clear();
+
+    strValue.Clear();
+    strValue2.Clear();
+    strValue3.Clear();
+
+    boolValue = FALSE;
+    boolValue2 = FALSE;
+    intValue = 0;
+    intValue2 = 0;
+    intValue3 = 0;
+    BinaryDataProc = FALSE;
+    EditMode = TRUE;
+    DialogOpen = FALSE;
+
+    PictureImage = wxNullBitmap;
+    LogoImage = wxNullBitmap;
+    
+}
+
+void frmContactEditor::ContactFileChanged( wxCommandEvent &event ){
+
+    // Stop the timer.
+
+    FMTimer.Stop();
+    
+    // Check if a dialog is already open.
+    
+    if (DialogOpen == TRUE){
+    
+       FMTimer.Start(1000, FALSE);
+       return;
+    
+    }
+
+    // Bring up a Yes/No modal dialog asking if the changed file should be reloaded.
+
+    int QuestionResponse;
+    
+    QuestionResponse = wxMessageBox(_("This contact has changed. Saving the contact may overwrite or lose any changes done by that change. Do you want to reload the contact with the changes made?"), _("Contact information has changed"), wxYES_NO, this);
+    
+    if (QuestionResponse == wxYES){
+    
+       // Reload the contact.
+       wxString wxSReloadContactName = wxSContactFilename;
+       ClearContact();
+       LoadContact(wxSReloadContactName);
+    
+    } else {
+    
+       // Do nothing other than update the timestamp so this message
+       // doesn't appear until the next time it changes.
+       
+       FMTimer.UpdateTimestamp();
+    
+    }  
+    
+    // Start the timer.
+    
+    FMTimer.Start();
+
+}
+
+void frmContactEditor::UpdateMembersTab( wxCommandEvent &event ){
+
+       if (cmbType->GetCurrentSelection() == 2){
+       
+               tabMembers->Show();     
+       
+       } else {
+       
+               tabMembers->Hide();
+       
+       }
+
+}
+
+void frmContactEditor::SetUID(int UID){
+
+       ContactEditorUID = UID;
+
+}
+
+void frmContactEditor::UpdateDisplayAs( wxCommandEvent &event ){
+
+       // Generate a drop down list of common names to use for the display as drop down box.
+
+       wxString SetValue = cmbDisplayAs->GetValue();
+
+       cmbDisplayAs->Clear();
+       cmbDisplayAs->Append(txtForename->GetValue() + wxT(" ") + txtSurname->GetValue());
+       if (!txtOtherNames->GetValue().IsEmpty()){
+       
+               cmbDisplayAs->Append(txtForename->GetValue() + wxT(" ") + txtOtherNames->GetValue()  + wxT(" ") + txtForename->GetValue());     
+       
+       }
+       cmbDisplayAs->Append(txtSurname->GetValue() + wxT(", ") + txtForename->GetValue());     
+       if (!txtOtherNames->GetValue().IsEmpty()){
+       
+               cmbDisplayAs->Append(txtForename->GetValue() + wxT(", ") + wxT(" ") + txtForename->GetValue() + wxT(" ") + txtOtherNames->GetValue());
+       
+       }
+       if (!txtTitle->GetValue().IsEmpty()){
+               cmbDisplayAs->Append(txtTitle->GetValue() + wxT(" ") + txtSurname->GetValue() + wxT(" ") + txtForename->GetValue());
+       }
+
+       cmbDisplayAs->SetValue(SetValue);
+
+       this->SetTitle(cmbDisplayAs->GetValue());
+
+}
+
+void frmContactEditor::UpdateName( wxCommandEvent &event ){
+
+       this->SetTitle(cmbDisplayAs->GetValue());
+
+       WindowData *WData = new WindowData;
+
+       WData->DataType = 1;
+       WData->WindowPointer = this;
+       WData->WindowID = ContactEditorUID;
+
+       wxCommandEvent editevent(WINDOW_EDIT);
+       editevent.SetClientData(WData);
+       wxPostEvent(GetParent(), editevent);
+
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditor.h b/source/contacteditor/frmContactEditor.h
new file mode 100644 (file)
index 0000000..f4dccc0
--- /dev/null
@@ -0,0 +1,1191 @@
+#ifndef __frmContactEditor__
+#define __frmContactEditor__
+
+#include <wx/wx.h>
+
+#include <map>
+#include <string>
+
+#include <SFML/Audio.hpp>
+
+/**
+@file
+Subclass of frmContactEditorADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+#include "../vcard/vcard.h"
+#include "../common/textprocessing.h"
+#include "../common/etag.h"
+#include "../common/timers.h"
+
+#include "../frmActivityMgr.h"
+#include "../frmMain.h"
+
+//// end generated include
+
+struct frmMain;
+struct frmActivityMgr;
+
+// Special Audio Stream for detecting when a sound has stopped playing.
+class AudioStream: public sf::Music
+{
+private:
+
+   bool onGetData(SoundStream::Chunk& data)
+   {
+       FilePlaying = TRUE;
+       bool running = sf::Music::onGetData(data);
+       if(!running)
+           OnMusicEnd();
+       return running;
+   }
+public:
+   void OnMusicEnd() { }
+   bool GetPlayingStatus(){ return FilePlaying; }   
+
+
+/*
+    void load(const sf::SoundBuffer& buffer)
+    {
+        // extract the audio samples from the sound buffer to our own container
+        m_samples.assign(buffer.getSamples(), buffer.getSamples() + buffer.getSampleCount());
+
+        // reset the current playing position 
+        m_currentSample = 0;
+
+        // initialize the base class
+        initialize(buffer.getChannelCount(), buffer.getSampleRate());
+    }
+    
+    bool GetPlayingStatus(){ return FilePlaying; }
+
+private:
+
+    virtual bool onGetData(Chunk& data)
+    {
+        // number of samples to stream every time the function is called;
+        // in a more robust implementation, it would rather be a fixed
+        // amount of time rather than an arbitrary number of samples
+        const int samplesToStream = 50000;
+
+        // set the pointer to the next audio samples to be played
+        data.samples = &m_samples[m_currentSample];
+
+        // have we reached the end of the sound?
+        if (m_currentSample + samplesToStream <= m_samples.size())
+        {
+            // end not reached: stream the samples and continue
+            data.sampleCount = samplesToStream;
+            m_currentSample += samplesToStream;
+           FilePlaying = TRUE;
+            return true;
+           }
+        else
+        {
+            // end of stream reached: stream the remaining samples and stop playback
+            data.sampleCount = m_samples.size() - m_currentSample;
+            m_currentSample = m_samples.size();
+           FilePlaying = FALSE;
+               return false;
+        }
+    }
+
+    virtual void onSeek(sf::Time TimeOffset)
+    {
+        // compute the corresponding sample index according to the sample rate and channel count
+        m_currentSample = static_cast<std::size_t>(TimeOffset.asSeconds() * getSampleRate() * getChannelCount());
+    }
+
+    std::vector<sf::Int16> m_samples;
+    std::size_t m_currentSample;
+    
+    */
+    bool FilePlaying = TRUE;
+};
+
+/** Implementing frmContactEditorADT */
+class frmContactEditor : public frmContactEditorADT
+{
+       protected:
+               // Handlers for frmContactEditorADT events.
+               void AddGeneralNickname( wxCommandEvent& event );
+               void ModifyGeneralNickname( wxCommandEvent& event );
+               void DeleteGeneralNickname( wxCommandEvent& event );
+               void AddHomeNickname( wxCommandEvent& event );
+               void ModifyHomeNickname( wxCommandEvent& event );
+               void DeleteHomeNickname( wxCommandEvent& event );
+               void AddBusinessNickname( wxCommandEvent& event );
+               void ModifyBusinessNickname( wxCommandEvent& event );
+               void DeleteBusinessNickname( wxCommandEvent& event );
+               void AddGeneralAddress( wxCommandEvent& event );
+               void ModifyGeneralAddress( wxCommandEvent& event );
+               void DeleteGeneralAddress( wxCommandEvent& event );
+               void AddGeneralEmail( wxCommandEvent& event );
+               void ModifyGeneralEmail( wxCommandEvent& event );
+               void DeleteGeneralEmail( wxCommandEvent& event );
+               void AddGeneralIM( wxCommandEvent& event );
+               void ModifyGeneralIM( wxCommandEvent& event );
+               void DeleteGeneralIM( wxCommandEvent& event );
+               void MoveGeneralIMUp( wxCommandEvent& event );
+               void MoveGeneralIMDown( wxCommandEvent& event );
+               void AddGeneralTelephone( wxCommandEvent& event );
+               void ModifyGeneralTelephone( wxCommandEvent& event );
+               void DeleteGeneralTelephone( wxCommandEvent& event );
+               void AddGeneralLanguages( wxCommandEvent& event );
+               void ModifyGeneralLanguages( wxCommandEvent& event );
+               void DeleteGeneralLanguage( wxCommandEvent& event );
+               void AddGeneralTimezone( wxCommandEvent& event );
+               void ModifyGeneralTimezone( wxCommandEvent& event );
+               void DeleteGeneralTimezone( wxCommandEvent& event );
+               void AddGeneralGeoposition( wxCommandEvent& event );
+               void ModifyGeneralGeoposition( wxCommandEvent& event );
+               void DeleteGeneralGeoposition( wxCommandEvent& event ); 
+               void AddGeneralRelated( wxCommandEvent& event );
+               void ModifyGeneralRelated( wxCommandEvent& event );
+               void DeleteGeneralRelated( wxCommandEvent& event );
+               void AddGeneralWebsite( wxCommandEvent& event );
+               void ModifyGeneralWebsite( wxCommandEvent& event );
+               void DeleteGeneralWebsite( wxCommandEvent& event );
+               void MoveGeneralWebsiteUp( wxCommandEvent& event );
+               void MoveGeneralWebsiteDown( wxCommandEvent& event );
+               void AddGeneralTitle( wxCommandEvent& event );
+               void ModifyGeneralTitle( wxCommandEvent& event );
+               void DeleteGeneralTitle( wxCommandEvent& event );
+               void MoveGeneralTitleUp( wxCommandEvent& event );
+               void MoveGeneralTitleDown( wxCommandEvent& event );
+               void AddGeneralRole( wxCommandEvent& event );
+               void ModifyGeneralRole( wxCommandEvent& event );
+               void DeleteGeneralRole( wxCommandEvent& event );
+               void MoveGeneralRoleUp( wxCommandEvent& event );
+               void MoveGeneralRoleDown( wxCommandEvent& event );
+               void AddGeneralOrganisation( wxCommandEvent& event );
+               void ModifyGeneralOrganisation( wxCommandEvent& event );
+               void DeleteGeneralOrganisation( wxCommandEvent& event );
+               void MoveGeneralOrganisationUp( wxCommandEvent& event );
+               void MoveGeneralOrganisationDown( wxCommandEvent& event );
+               void AddGeneralNote( wxCommandEvent& event );
+               void ModifyGeneralNote( wxCommandEvent& event );
+               void DeleteGeneralNote( wxCommandEvent& event );
+               void MoveGeneralNoteUp( wxCommandEvent& event );
+               void MoveGeneralNoteDown( wxCommandEvent& event );
+               void AddHomeAddress( wxCommandEvent& event );
+               void ModifyHomeAddress( wxCommandEvent& event );
+               void DeleteHomeAddress( wxCommandEvent& event );
+               void AddHomeEmail( wxCommandEvent& event );
+               void ModifyHomeEmail( wxCommandEvent& event );
+               void DeleteHomeEmail( wxCommandEvent& event );          
+               void AddHomeIM( wxCommandEvent& event );
+               void ModifyHomeIM( wxCommandEvent& event );
+               void DeleteHomeIM( wxCommandEvent& event );
+               void AddHomeTelephone( wxCommandEvent& event );
+               void ModifyHomeTelephone( wxCommandEvent& event );
+               void DeleteHomeTelephone( wxCommandEvent& event );
+               void AddHomeLanguage( wxCommandEvent& event );
+               void ModifyHomeLanguage( wxCommandEvent& event );
+               void DeleteHomeLanguage( wxCommandEvent& event );
+               void AddHomeTimezone( wxCommandEvent& event );
+               void ModifyHomeTimezone( wxCommandEvent& event );
+               void DeleteHomeTimezone( wxCommandEvent& event );
+               void AddHomeGeoposition( wxCommandEvent& event );
+               void ModifyHomeGeoposition( wxCommandEvent& event );
+               void DeleteHomeGeoposition( wxCommandEvent& event );
+               void AddHomeRelated( wxCommandEvent& event );
+               void ModifyHomeRelated( wxCommandEvent& event );
+               void DeleteHomeRelated( wxCommandEvent& event );
+               void AddHomeWebsite( wxCommandEvent& event );
+               void ModifyHomeWebsite( wxCommandEvent& event );
+               void DeleteHomeWebsite( wxCommandEvent& event );
+               void AddHomeTitle( wxCommandEvent& event );
+               void ModifyHomeTitle( wxCommandEvent& event );
+               void DeleteHomeTitle( wxCommandEvent& event );
+               void AddHomeRole( wxCommandEvent& event );
+               void ModifyHomeRole( wxCommandEvent& event );
+               void DeleteHomeRole( wxCommandEvent& event );
+               void MoveHomeRoleUp( wxCommandEvent& event );
+               void MoveHomeRoleDown( wxCommandEvent& event );
+               void AddHomeOrganisation( wxCommandEvent& event );
+               void ModifyHomeOrganisation( wxCommandEvent& event );
+               void DeleteHomeOrganisation( wxCommandEvent& event );
+               void MoveHomeOrganisationUp( wxCommandEvent& event );
+               void MoveHomeOrganisationDown( wxCommandEvent& event );
+               void AddHomeNote( wxCommandEvent& event );
+               void ModifyHomeNote( wxCommandEvent& event );
+               void DeleteHomeNote( wxCommandEvent& event );
+               void MoveHomeNoteUp( wxCommandEvent& event );
+               void MoveHomeNoteDown( wxCommandEvent& event );
+               void AddBusinessAddress( wxCommandEvent& event );
+               void ModifyBusinessAddress( wxCommandEvent& event );
+               void DeleteBusinessAddress( wxCommandEvent& event );
+               void AddBusinessEmail( wxCommandEvent& event );
+               void ModifyBusinessEmail( wxCommandEvent& event );
+               void DeleteBusinessEmail( wxCommandEvent& event );
+               void AddBusinessIM( wxCommandEvent& event );
+               void ModifyBusinessIM( wxCommandEvent& event );
+               void DeleteBusinessIM( wxCommandEvent& event );
+               void AddBusinessTelephone( wxCommandEvent& event );
+               void ModifyBusinessTelephone( wxCommandEvent& event );
+               void DeleteBusinessTelephone( wxCommandEvent& event );
+               void AddBusinessLanguage( wxCommandEvent& event );
+               void ModifyBusinessLanguage( wxCommandEvent& event );
+               void DeleteBusinessLanguage( wxCommandEvent& event );
+               void AddBusinessTimezone( wxCommandEvent& event );
+               void ModifyBusinessTimezone( wxCommandEvent& event );
+               void DeleteBusinessTimezone( wxCommandEvent& event );
+               void AddBusinessGeoposition( wxCommandEvent& event );
+               void ModifyBusinessGeoposition( wxCommandEvent& event );
+               void DeleteBusinessGeoposition( wxCommandEvent& event );
+               void AddBusinessRelated( wxCommandEvent& event );
+               void ModifyBusinessRelated( wxCommandEvent& event );
+               void DeleteBusinessRelated( wxCommandEvent& event );
+               void AddBusinessWebsite( wxCommandEvent& event );
+               void ModifyBusinessWebsite( wxCommandEvent& event );
+               void DeleteBusinessWebsite( wxCommandEvent& event );
+               void AddBusinessTitle( wxCommandEvent& event );
+               void ModifyBusinessTitle( wxCommandEvent& event );
+               void DeleteBusinessTitle( wxCommandEvent& event );
+               void MoveBusinessTitleUp( wxCommandEvent& event );
+               void MoveBusinessTitleDown( wxCommandEvent& event );
+               void AddBusinessRole( wxCommandEvent& event );
+               void ModifyBusinessRole( wxCommandEvent& event );
+               void DeleteBusinessRole( wxCommandEvent& event );
+               void MoveBusinessRoleUp( wxCommandEvent& event );
+               void MoveBusinessRoleDown( wxCommandEvent& event );
+               void AddBusinessOrganisation( wxCommandEvent& event );
+               void ModifyBusinessOrganisation( wxCommandEvent& event );
+               void DeleteBusinessOrganisation( wxCommandEvent& event );
+               void MoveBusinessOrganisationUp( wxCommandEvent& event );
+               void MoveBusinessOrganisationDown( wxCommandEvent& event );
+               void AddBusinessNote( wxCommandEvent& event );
+               void ModifyBusinessNote( wxCommandEvent& event );
+               void DeleteBusinessNote( wxCommandEvent& event );
+               void MoveBusinessNoteUp( wxCommandEvent& event );
+               void MoveBusinessNoteDown( wxCommandEvent& event );
+               void AddCategory( wxCommandEvent& event );
+               void ModifyCategory( wxCommandEvent& event );
+               void DeleteCategory( wxCommandEvent& event );
+               void AddGroup( wxCommandEvent& event );
+               void ModifyGroup( wxCommandEvent& event );
+               void DeleteGroup( wxCommandEvent& event );
+               void AddPicture( wxCommandEvent& event );
+               void ModifyPicture( wxCommandEvent& event );
+               void DeletePicture( wxCommandEvent& event );
+               void LoadPicture( wxListEvent& event );
+               void AddLogo( wxCommandEvent& event );
+               void ModifyLogo( wxCommandEvent& event );
+               void DeleteLogo( wxCommandEvent& event );               
+               void LoadLogo( wxListEvent& event );            
+               void AddSound( wxCommandEvent& event );
+               void ModifySound( wxCommandEvent& event );
+               void DeleteSound( wxCommandEvent& event );
+               void PlaySoundDetach();
+               void PlaySound( wxCommandEvent& event );
+               void StopSound( wxCommandEvent& event );
+               void AddCalendarAddress( wxCommandEvent& event );
+               void ModifyCalendarAddress( wxCommandEvent& event );
+               void DeleteCalendarAddress( wxCommandEvent& event );
+               void AddCalendarRequest( wxCommandEvent& event );
+               void ModifyCalendarRequest( wxCommandEvent& event );
+               void DeleteCalendarRequest( wxCommandEvent& event );
+               void AddFreeBusy( wxCommandEvent& event );
+               void ModifyFreeBusy( wxCommandEvent& event );
+               void DeleteFreeBusy( wxCommandEvent& event );
+               void AddKey( wxCommandEvent& event );
+               void ModifyKey( wxCommandEvent& event );
+               void DeleteKey( wxCommandEvent& event );
+               void AddVendorNamespace( wxCommandEvent& event );
+               void ModifyVendorNamespace( wxCommandEvent& event );
+               void DeleteVendorNamespace( wxCommandEvent& event );
+               void MoveVendorNamespaceUp( wxCommandEvent& event );
+               void MoveVendorNamespaceDown( wxCommandEvent& event );
+               void AddXToken( wxCommandEvent& event );
+               void ModifyXToken( wxCommandEvent& event );
+               void DeleteXToken( wxCommandEvent& event );
+               void MoveXTokenUp( wxCommandEvent& event );
+               void MoveXTokenDown( wxCommandEvent& event );
+               void SaveContact( wxCommandEvent& event );
+               void SaveCloseContact( wxCommandEvent& event );
+               void CloseContact( wxCommandEvent& event );
+               void CloseWindow( wxCloseEvent& event );
+               void CutText( wxCommandEvent& event );
+               void CopyText( wxCommandEvent& event );
+               void PasteText( wxCommandEvent& event );
+               void SetupColumn(wxString ColumnType, wxListCtrl *ListCtrl);
+               void UpdateMembersTab( wxCommandEvent &event );
+               void UpdateDisplayAs( wxCommandEvent &event );
+               void UpdateName( wxCommandEvent &event );
+               bool GetSelectedItem(wxListCtrl *ListCtrlPtr, 
+                       long *longSelected,
+                       int *intSelectedData);
+               int GetLastInt(std::map<int, wxString> *MapData);
+               int GetLastInt(std::map<int, std::string> *MapData);
+               bool ProcessEvent(wxEvent& event);
+       public:
+               /** Constructor */
+               frmContactEditor( wxWindow* parent );
+               void SetupHeaders();
+               void SetupContact(wxString AccountName);
+               void SetupPointers(frmActivityMgr *ActMgr, wxETagProcessTimer *ETagProc,
+                                       frmMain *MainPtrInc);
+               bool LoadContact(wxString Filename);
+               void SetUID(int UID);
+       private:
+       
+               void DeleteMapDataProcess(int IndexNum, std::map<int, std::string>* MapData);
+               void DeleteMapDataProcess(int IndexNum, std::map<int, wxString>* MapData);
+               void DeleteMapDataProcess(int IndexNum, std::map<int, bool>* MapData);
+               void DeleteMapDataProcess(int IndexNum, std::map<int, int>* MapData);
+
+               void DeleteMapDataB () {} ;
+       
+               template<typename MapData, typename... Args>
+               void DeleteMapDataB(MapData* mapdata, Args*... args) {
+
+                       DeleteMapDataProcess(intSeekSelectedData, mapdata);
+                       DeleteMapDataB(args...);
+
+               }
+
+               template<typename... Args>
+               void DeleteMapData(int IndexNum, Args*... args) {
+
+                       //int intSeekSelectedData = 0;
+
+                       //DeleteMapDataProcess(IndexNum, Moo);
+
+                       intSeekSelectedData = IndexNum;
+                       DeleteMapDataB(args...);
+       
+               }
+
+               void ProcessSaveDataProc(wxString PropName,
+                               std::map<int,int>* MapData);
+               void ProcessSaveDataProc(wxString PropName,
+                               std::map<int,wxString>* MapData);
+               void ProcessSaveDataStrProc(wxString PropName,
+                               std::map<int,int>* MapData);
+               void ProcessSaveDataStrProc(wxString PropName,
+                               std::map<int,wxString>* MapData);
+               void ProcessSaveDataStrProc(wxString PropName,
+                               std::map<int,std::string>* MapData);
+
+               
+               void ProcessSaveDataB () {  } ;
+               void ProcessSaveDataC () {  } ;
+               
+               template<typename PropName, typename MapData, typename... Args>
+               void ProcessSaveDataB(PropName propname, MapData* mapdata, Args*... args) {
+
+                       ProcessSaveDataProc(propname, mapdata);
+                       ProcessSaveDataB(args...);
+                       
+               }
+               
+               template<typename PropName, typename MapData, typename... Args>
+               void ProcessSaveDataC(PropName propname, MapData* mapdata, Args*... args) {
+
+                       ProcessSaveDataStrProc(propname, mapdata);
+                       ProcessSaveDataC(args...);
+                       
+               }
+
+               template<typename... Args>
+               void ProcessSaveData(wxString strPropertyName,
+                       wxString *strPropertyInc, 
+                       bool *boolAdditionalInc, bool *boolExtraInc, 
+                       std::map<int,wxString>::iterator *iterDataInc,
+                       std::map<int,wxString> *MainMapData,
+                       std::map<int,wxString>::iterator *iterFileTypeInc,
+                       std::map<int,wxString>::iterator *iterFileEncInc,                       
+                       vCard *vCardData,
+                       Args*... args) {
+
+                       //int intSeekSelectedData = 0;
+
+                       //DeleteMapDataProcess(IndexNum, Moo);
+                       
+                       strPropertyPtr = strPropertyInc;
+                       boolAdditionalPtr = boolAdditionalInc;
+                       boolExtraPtr = boolExtraInc;
+                       iterDataPtr = iterDataInc;
+                       iterFileTypePtr = iterFileTypeInc;
+                       iterFileEncPtr = iterFileEncInc;
+                       ProcessSaveDataB(args...);
+                       
+                       std::map<int,wxString>::iterator strIter;
+                       wxString strMainValue;
+                       
+                       int intSeekData = (*iterDataStringPtr)->first;
+                       strIter = MainMapData->find(intSeekData);
+                       
+                       wxString strFileType = (*iterFileTypePtr)->second;
+                       wxString strFileEnc = (*iterFileEncPtr)->second;
+                       
+                       EscapeString(&strFileType, FALSE);
+                       EscapeString(&strFileEnc, FALSE);
+
+                       if (strIter->first == intSeekData){
+       
+                               strMainValue = strIter->second;
+                               strMainValue.insert(0, wxT("data:") + strFileType + wxT(";") + strFileEnc + wxT(","));
+       
+                       }
+                       
+                       if (*boolExtraPtr == TRUE){
+
+                               vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
+
+                       } else {
+
+                               vCardData->AddRaw(strPropertyName, strMainValue);
+
+                       }
+                       
+                       boolExtraPtr = FALSE;
+                       iterDataPtr = 0;
+       
+               }
+
+               template<typename... Args>
+               void ProcessSaveData(wxString strPropertyName,
+                       wxString *strPropertyInc, 
+                       bool *boolAdditionalInc, bool *boolExtraInc, 
+                       std::map<int,std::string>::iterator *iterDataInc,
+                       std::map<int,std::string> *MainMapData,
+                       std::map<int,wxString>::iterator *iterFileTypeInc,
+                       std::map<int,wxString>::iterator *iterFileEncInc,                       
+                       vCard *vCardData,
+                       Args*... args) {
+
+                       //int intSeekSelectedData = 0;
+
+                       //DeleteMapDataProcess(IndexNum, Moo);
+                       
+                       strPropertyPtr = strPropertyInc;
+                       boolAdditionalPtr = boolAdditionalInc;
+                       boolExtraPtr = boolExtraInc;
+                       iterDataStringPtr = iterDataInc;
+                       iterFileTypePtr = iterFileTypeInc;
+                       iterFileEncPtr = iterFileEncInc;                        
+
+                       ProcessSaveDataC(args...);
+                       
+                       std::map<int,std::string>::iterator strIter;
+                       wxString strMainValue;
+                       
+                       int intSeekData = (*iterDataStringPtr)->first;
+                       strIter = MainMapData->find(intSeekData);
+                       
+                       wxString strFileType = (*iterFileTypePtr)->second;
+                       wxString strFileEnc = (*iterFileEncPtr)->second;
+
+                       EscapeString(&strFileType, FALSE);
+                       EscapeString(&strFileEnc, FALSE);
+
+                       if (strIter->first == intSeekData){
+       
+                               strMainValue = wxString::FromAscii(strIter->second.c_str());
+                               strMainValue.insert(0, wxT("data:") + strFileType + wxT(";") + strFileEnc + wxT(","));
+       
+                       }
+                       
+                       if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
+
+                               vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
+
+                       } else {
+
+                               vCardData->AddRaw(strPropertyName, strMainValue);
+
+                       }
+                       
+                       *boolExtraPtr = FALSE;
+                       *boolAdditionalPtr = FALSE;
+                       iterDataStringPtr = 0;
+       
+               }
+               
+               template<typename... Args>
+               void ProcessSaveData(wxString strPropertyName,
+                       wxString *strPropertyInc, 
+                       bool *boolAdditionalInc, bool *boolExtraInc, 
+                       std::map<int,wxString>::iterator *iterDataInc,
+                       std::map<int,wxString> *MainMapData,
+                       vCard *vCardData,
+                       Args*... args) {
+
+                       //int intSeekSelectedData = 0;
+
+                       //DeleteMapDataProcess(IndexNum, Moo);
+                       strPropertyPtr = strPropertyInc;
+                       boolAdditionalPtr = boolAdditionalInc;
+                       boolExtraPtr = boolExtraInc;
+                       iterDataPtr = iterDataInc;
+                       ProcessSaveDataB(args...);
+                       
+                       std::map<int,wxString>::iterator strIter;
+                       wxString strMainValue;
+                       
+                       int intSeekData = (*iterDataPtr)->first;
+                       strIter = MainMapData->find(intSeekData);
+       
+                       if (strIter->first == intSeekData){
+       
+                           strMainValue = strIter->second;
+       
+                       }
+                       
+                       EscapeString(&strMainValue, FALSE);
+                       
+                       if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
+
+                               vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, strMainValue);
+
+                       } else {
+
+                               vCardData->AddRaw(strPropertyName, strMainValue);
+
+                       }
+                       
+                       *boolExtraPtr = FALSE;
+                       *boolAdditionalPtr = FALSE;
+                       iterDataPtr = 0;
+       
+               }
+               
+               template<typename... Args>
+               void ProcessSaveData(wxString strPropertyName,
+                       wxString *strPropertyInc, 
+                       bool *boolAdditionalInc, bool *boolExtraInc, 
+                       std::map<int,wxString>::iterator *iterDataInc,
+                       wxString *MainData,
+                       vCard *vCardData,
+                       Args*... args) {
+
+                       //int intSeekSelectedData = 0;
+
+                       //DeleteMapDataProcess(IndexNum, Moo);
+                       strPropertyPtr = strPropertyInc;
+                       boolAdditionalPtr = boolAdditionalInc;
+                       boolExtraPtr = boolExtraInc;
+                       iterDataPtr = iterDataInc;
+                       
+                       ProcessSaveDataB(args...);
+                       
+                       std::map<int,wxString>::iterator strIter;
+
+                       if (*boolExtraPtr == TRUE && !strPropertyPtr->IsEmpty()){
+
+                               vCardData->AddRaw(strPropertyName + wxT(";") + *strPropertyPtr, *MainData);
+
+                       } else {
+
+                               vCardData->AddRaw(strPropertyName, *MainData);
+
+                       }
+                       
+                       *boolExtraPtr = FALSE;
+                       *boolAdditionalPtr = FALSE;
+                       iterDataPtr = 0;
+       
+               }
+
+               void ProcessCaptureStringsB () {} ;
+               
+               void ProcessCaptureStringsProc(wxString *strCapture);
+               
+               template<typename StringCapture, typename... Args>
+               void ProcessCaptureStringsB(StringCapture *string, Args*... args) {
+
+                       ProcessCaptureStringsProc(string);
+                       ProcessCaptureStringsB(args...);
+
+               }
+               
+               template<typename... Args>
+               void ProcessCaptureStrings(Args*... args) {
+
+                       //int intSeekSelectedData = 0;
+
+                       ProcessCaptureStringsB(args...);
+       
+               }
+               
+               void ResetSaveProcessData();
+               void ContactFileChanged( wxCommandEvent &event );
+               void ClearContact();
+       
+               int intValueSeek = 1;
+               bool IsGroup = FALSE;
+       
+               /* Items on General Tab */
+       
+               wxString NameTitle;
+               wxString NameForename;
+               wxString NameSurname;
+               wxString NameOtherNames;
+               wxString NameSuffix;
+               wxString NameNickname;
+               wxString NameDisplayAs;
+               wxString NameLanguage;
+               wxString NameAltID;
+               wxString NameTokens;
+               
+               wxString Birthday;
+               wxString BirthdayAltID;
+               wxString BirthdayCalScale;
+               wxString BirthdayTokens;
+               wxString Anniversary;
+               wxString AnniversaryAltID;
+               wxString AnniversaryCalScale;
+               wxString AnniversaryTokens;
+               
+               wxString Gender;
+               wxString GenderDetails;
+               wxString GenderTokens;
+               
+               wxString UIDToken;
+
+               /* We don't use these at the moment but we want to keep
+                 them for compatability reasons */
+
+               /*std::map<int, wxString> ExtraFullNames;*/
+               /*std::map<int, wxString> ExtraNicknames;*/
+       
+               std::map<int, wxString> FullNamesList;  
+               std::map<int, wxString> FullNamesListType;
+               std::map<int, wxString> FullNamesListLanguage;
+               std::map<int, wxString> FullNamesListAltID;
+               std::map<int, wxString> FullNamesListPID;
+               std::map<int, wxString> FullNamesListTokens;
+               std::map<int, int> FullNamesListPref;
+               
+               std::map<int, wxString> GeneralNicknamesList;
+               std::map<int, wxString> GeneralNicknamesListType;
+               std::map<int, wxString> GeneralNicknamesListLanguage;
+               std::map<int, wxString> GeneralNicknamesListAltID;
+               std::map<int, wxString> GeneralNicknamesListPID;
+               std::map<int, wxString> GeneralNicknamesListTokens;             
+               std::map<int, int> GeneralNicknamesListPref;            
+       
+               std::map<int, wxString> GeneralAddressList;
+               std::map<int, wxString> GeneralAddressListTown;
+               std::map<int, wxString> GeneralAddressListCounty;
+               std::map<int, wxString> GeneralAddressListPostCode;
+               std::map<int, wxString> GeneralAddressListCountry;
+               std::map<int, wxString> GeneralAddressListLabel;
+               std::map<int, wxString> GeneralAddressListLang;         
+               std::map<int, wxString> GeneralAddressListAltID;
+               std::map<int, wxString> GeneralAddressListPID;
+               std::map<int, wxString> GeneralAddressListTokens;
+               std::map<int, wxString> GeneralAddressListGeo;
+               std::map<int, wxString> GeneralAddressListTimezone;             
+               std::map<int, wxString> GeneralAddressListType;
+               std::map<int, wxString> GeneralAddressListMediatype;
+               std::map<int, int> GeneralAddressListPref;
+               
+               std::map<int, wxString> GeneralEmailList;
+               std::map<int, wxString> GeneralEmailListAltID;
+               std::map<int, wxString> GeneralEmailListPID;
+               std::map<int, wxString> GeneralEmailListType;
+               std::map<int, wxString> GeneralEmailListTokens;
+               std::map<int, int> GeneralEmailListPref;
+               
+               std::map<int, wxString> GeneralIMList;
+               std::map<int, wxString> GeneralIMListAltID;
+               std::map<int, wxString> GeneralIMListPID;
+               std::map<int, wxString> GeneralIMListType;
+               std::map<int, wxString> GeneralIMListTokens;
+               std::map<int, wxString> GeneralIMListMediatype;
+               std::map<int, int> GeneralIMListPref;
+               
+               std::map<int, wxString> GeneralTelephoneList;
+               std::map<int, wxString> GeneralTelephoneListAltID;
+               std::map<int, wxString> GeneralTelephoneListPID;
+               std::map<int, wxString> GeneralTelephoneListType;
+               std::map<int, wxString> GeneralTelephoneListTokens;
+               std::map<int, int> GeneralTelephoneListPref;
+               
+               std::map<int, wxString> GeneralLanguageList;
+               std::map<int, wxString> GeneralLanguageListAltID;
+               std::map<int, wxString> GeneralLanguageListPID;
+               std::map<int, wxString> GeneralLanguageListType;
+               std::map<int, wxString> GeneralLanguageListTokens;
+               std::map<int, int> GeneralLanguageListPref;
+               
+               std::map<int, wxString> GeneralTZList;
+               std::map<int, wxString> GeneralTZListAltID;
+               std::map<int, wxString> GeneralTZListPID;
+               std::map<int, wxString> GeneralTZListType;
+               std::map<int, wxString> GeneralTZListTokens;
+               std::map<int, wxString> GeneralTZListMediatype;
+               std::map<int, int> GeneralTZListPref;
+               
+               std::map<int, wxString> GeneralGeographyList;
+               std::map<int, wxString> GeneralGeographyListAltID;
+               std::map<int, wxString> GeneralGeographyListPID;
+               std::map<int, wxString> GeneralGeographyListType;
+               std::map<int, wxString> GeneralGeographyListTokens;
+               std::map<int, wxString> GeneralGeographyListMediatype;
+               std::map<int, int> GeneralGeographyListPref;
+       
+               std::map<int, wxString> GeneralRelatedList;
+               std::map<int, wxString> GeneralRelatedListRelType;
+               std::map<int, wxString> GeneralRelatedListLanguage;
+               std::map<int, wxString> GeneralRelatedListAltID;
+               std::map<int, wxString> GeneralRelatedListPID;
+               std::map<int, wxString> GeneralRelatedListType;
+               std::map<int, wxString> GeneralRelatedListTokens;
+               std::map<int, int> GeneralRelatedListPref;
+               
+               std::map<int, wxString> GeneralWebsiteList;
+               std::map<int, wxString> GeneralWebsiteListAltID;
+               std::map<int, wxString> GeneralWebsiteListPID;
+               std::map<int, wxString> GeneralWebsiteListType;
+               std::map<int, wxString> GeneralWebsiteListTokens;
+               std::map<int, wxString> GeneralWebsiteListMediatype;
+               std::map<int, int> GeneralWebsiteListPref;
+               
+               std::map<int, wxString> GeneralTitleList;
+               std::map<int, wxString> GeneralTitleListLanguage;               
+               std::map<int, wxString> GeneralTitleListAltID;
+               std::map<int, wxString> GeneralTitleListPID;
+               std::map<int, wxString> GeneralTitleListType;
+               std::map<int, wxString> GeneralTitleListTokens;
+               std::map<int, int> GeneralTitleListPref;
+               
+               std::map<int, wxString> GeneralRoleList;
+               std::map<int, wxString> GeneralRoleListLanguage;                
+               std::map<int, wxString> GeneralRoleListAltID;
+               std::map<int, wxString> GeneralRoleListPID;
+               std::map<int, wxString> GeneralRoleListType;
+               std::map<int, wxString> GeneralRoleListTokens;
+               std::map<int, int> GeneralRoleListPref;
+               
+               std::map<int, wxString> GeneralOrganisationsList;
+               std::map<int, wxString> GeneralOrganisationsListLanguage;               
+               std::map<int, wxString> GeneralOrganisationsListAltID;
+               std::map<int, wxString> GeneralOrganisationsListPID;
+               std::map<int, wxString> GeneralOrganisationsListType;
+               std::map<int, wxString> GeneralOrganisationsListTokens;
+               std::map<int, wxString> GeneralOrganisationsListSortAs;
+               std::map<int, int> GeneralOrganisationsListPref;
+       
+               std::map<int, wxString> GeneralNoteList;
+               std::map<int, wxString> GeneralNoteListLanguage;                
+               std::map<int, wxString> GeneralNoteListAltID;
+               std::map<int, wxString> GeneralNoteListPID;
+               std::map<int, wxString> GeneralNoteListType;
+               std::map<int, wxString> GeneralNoteListTokens;
+               std::map<int, int> GeneralNoteListPref;
+               
+               /* Items on Home Tab */         
+               
+               std::map<int, wxString> HomeNicknamesList;
+               std::map<int, wxString> HomeNicknamesListType;
+               std::map<int, wxString> HomeNicknamesListLanguage;
+               std::map<int, wxString> HomeNicknamesListAltID;
+               std::map<int, wxString> HomeNicknamesListPID;
+               std::map<int, wxString> HomeNicknamesListTokens;                
+               std::map<int, int> HomeNicknamesListPref;               
+               
+               std::map<int, wxString> HomeAddressList;
+               std::map<int, wxString> HomeAddressListTown;
+               std::map<int, wxString> HomeAddressListCounty;
+               std::map<int, wxString> HomeAddressListPostCode;
+               std::map<int, wxString> HomeAddressListCountry;
+               std::map<int, wxString> HomeAddressListLabel;
+               std::map<int, wxString> HomeAddressListLang;            
+               std::map<int, wxString> HomeAddressListAltID;
+               std::map<int, wxString> HomeAddressListPID;
+               std::map<int, wxString> HomeAddressListTokens;
+               std::map<int, wxString> HomeAddressListGeo;
+               std::map<int, wxString> HomeAddressListTimezone;                
+               std::map<int, wxString> HomeAddressListType;
+               std::map<int, wxString> HomeAddressListMediatype;
+               std::map<int, int> HomeAddressListPref;
+               
+               std::map<int, wxString> HomeEmailList;
+               std::map<int, wxString> HomeEmailListAltID;
+               std::map<int, wxString> HomeEmailListPID;
+               std::map<int, wxString> HomeEmailListType;
+               std::map<int, wxString> HomeEmailListTokens;
+               std::map<int, int> HomeEmailListPref;
+               
+               std::map<int, wxString> HomeIMList;
+               std::map<int, wxString> HomeIMListAltID;
+               std::map<int, wxString> HomeIMListPID;
+               std::map<int, wxString> HomeIMListType;
+               std::map<int, wxString> HomeIMListTokens;
+               std::map<int, wxString> HomeIMListMediatype;
+               std::map<int, int> HomeIMListPref;
+               
+               std::map<int, wxString> HomeTelephoneList;
+               std::map<int, wxString> HomeTelephoneListAltID;
+               std::map<int, wxString> HomeTelephoneListPID;
+               std::map<int, wxString> HomeTelephoneListType;
+               std::map<int, wxString> HomeTelephoneListTokens;
+               std::map<int, int> HomeTelephoneListPref;
+               
+               std::map<int, wxString> HomeLanguageList;
+               std::map<int, wxString> HomeLanguageListAltID;
+               std::map<int, wxString> HomeLanguageListPID;
+               std::map<int, wxString> HomeLanguageListType;
+               std::map<int, wxString> HomeLanguageListTokens;
+               std::map<int, int> HomeLanguageListPref;
+               
+               std::map<int, wxString> HomeTZList;
+               std::map<int, wxString> HomeTZListAltID;
+               std::map<int, wxString> HomeTZListPID;
+               std::map<int, wxString> HomeTZListType;
+               std::map<int, wxString> HomeTZListTokens;
+               std::map<int, wxString> HomeTZListMediatype;
+               std::map<int, int> HomeTZListPref;
+               
+               std::map<int, wxString> HomeGeographyList;
+               std::map<int, wxString> HomeGeographyListAltID;
+               std::map<int, wxString> HomeGeographyListPID;
+               std::map<int, wxString> HomeGeographyListType;
+               std::map<int, wxString> HomeGeographyListTokens;
+               std::map<int, wxString> HomeGeographyListMediatype;
+               std::map<int, int> HomeGeographyListPref;
+               
+               std::map<int, wxString> HomeRelatedList;
+               std::map<int, wxString> HomeRelatedListRelType;
+               std::map<int, wxString> HomeRelatedListLanguage;
+               std::map<int, wxString> HomeRelatedListAltID;
+               std::map<int, wxString> HomeRelatedListPID;
+               std::map<int, wxString> HomeRelatedListType;
+               std::map<int, wxString> HomeRelatedListTokens;
+               std::map<int, int> HomeRelatedListPref;         
+               
+               std::map<int, wxString> HomeWebsiteList;
+               std::map<int, wxString> HomeWebsiteListAltID;
+               std::map<int, wxString> HomeWebsiteListPID;
+               std::map<int, wxString> HomeWebsiteListType;
+               std::map<int, wxString> HomeWebsiteListTokens;
+               std::map<int, wxString> HomeWebsiteListMediatype;
+               std::map<int, int> HomeWebsiteListPref;
+               
+               std::map<int, wxString> HomeTitleList;
+               std::map<int, wxString> HomeTitleListLanguage;
+               std::map<int, wxString> HomeTitleListAltID;
+               std::map<int, wxString> HomeTitleListPID;
+               std::map<int, wxString> HomeTitleListType;
+               std::map<int, wxString> HomeTitleListTokens;
+               std::map<int, int> HomeTitleListPref;
+               
+               std::map<int, wxString> HomeRoleList;
+               std::map<int, wxString> HomeRoleListLanguage;           
+               std::map<int, wxString> HomeRoleListAltID;
+               std::map<int, wxString> HomeRoleListPID;
+               std::map<int, wxString> HomeRoleListType;
+               std::map<int, wxString> HomeRoleListTokens;
+               std::map<int, int> HomeRoleListPref;
+               
+               std::map<int, wxString> HomeOrganisationsList;
+               std::map<int, wxString> HomeOrganisationsListLanguage;          
+               std::map<int, wxString> HomeOrganisationsListAltID;
+               std::map<int, wxString> HomeOrganisationsListPID;
+               std::map<int, wxString> HomeOrganisationsListType;
+               std::map<int, wxString> HomeOrganisationsListTokens;
+               std::map<int, wxString> HomeOrganisationsListSortAs;
+               std::map<int, int> HomeOrganisationsListPref;
+               
+               std::map<int, wxString> HomeNoteList;
+               std::map<int, wxString> HomeNoteListLanguage;           
+               std::map<int, wxString> HomeNoteListAltID;
+               std::map<int, wxString> HomeNoteListPID;
+               std::map<int, wxString> HomeNoteListType;
+               std::map<int, wxString> HomeNoteListTokens;
+               std::map<int, int> HomeNoteListPref;            
+       
+               /* Items on the Business tab */
+               
+               std::map<int, wxString> BusinessNicknamesList;
+               std::map<int, wxString> BusinessNicknamesListType;
+               std::map<int, wxString> BusinessNicknamesListLanguage;
+               std::map<int, wxString> BusinessNicknamesListAltID;
+               std::map<int, wxString> BusinessNicknamesListPID;
+               std::map<int, wxString> BusinessNicknamesListTokens;            
+               std::map<int, int> BusinessNicknamesListPref;           
+               
+               std::map<int, wxString> BusinessAddressList;
+               std::map<int, wxString> BusinessAddressListTown;
+               std::map<int, wxString> BusinessAddressListCounty;
+               std::map<int, wxString> BusinessAddressListPostCode;
+               std::map<int, wxString> BusinessAddressListCountry;
+               std::map<int, wxString> BusinessAddressListLabel;
+               std::map<int, wxString> BusinessAddressListLang;                
+               std::map<int, wxString> BusinessAddressListAltID;
+               std::map<int, wxString> BusinessAddressListPID;
+               std::map<int, wxString> BusinessAddressListTokens;
+               std::map<int, wxString> BusinessAddressListGeo;
+               std::map<int, wxString> BusinessAddressListTimezone;            
+               std::map<int, wxString> BusinessAddressListType;
+               std::map<int, wxString> BusinessAddressListMediatype;
+               std::map<int, int> BusinessAddressListPref;
+               
+               std::map<int, wxString> BusinessEmailList;
+               std::map<int, wxString> BusinessEmailListAltID;
+               std::map<int, wxString> BusinessEmailListPID;
+               std::map<int, wxString> BusinessEmailListType;
+               std::map<int, wxString> BusinessEmailListTokens;
+               std::map<int, int> BusinessEmailListPref;
+               
+               std::map<int, wxString> BusinessIMList;
+               std::map<int, wxString> BusinessIMListAltID;
+               std::map<int, wxString> BusinessIMListPID;
+               std::map<int, wxString> BusinessIMListType;
+               std::map<int, wxString> BusinessIMListTokens;
+               std::map<int, wxString> BusinessIMListMediatype;
+               std::map<int, int> BusinessIMListPref;
+               
+               std::map<int, wxString> BusinessTelephoneList;
+               std::map<int, wxString> BusinessTelephoneListAltID;
+               std::map<int, wxString> BusinessTelephoneListPID;
+               std::map<int, wxString> BusinessTelephoneListType;
+               std::map<int, wxString> BusinessTelephoneListTokens;
+               std::map<int, int> BusinessTelephoneListPref;
+               
+               std::map<int, wxString> BusinessLanguageList;
+               std::map<int, wxString> BusinessLanguageListAltID;
+               std::map<int, wxString> BusinessLanguageListPID;
+               std::map<int, wxString> BusinessLanguageListType;
+               std::map<int, wxString> BusinessLanguageListTokens;
+               std::map<int, int> BusinessLanguageListPref;
+               
+               std::map<int, wxString> BusinessTZList;
+               std::map<int, wxString> BusinessTZListAltID;
+               std::map<int, wxString> BusinessTZListPID;
+               std::map<int, wxString> BusinessTZListType;
+               std::map<int, wxString> BusinessTZListTokens;
+               std::map<int, wxString> BusinessTZListMediatype;
+               std::map<int, int> BusinessTZListPref;
+               
+               std::map<int, wxString> BusinessGeographyList;
+               std::map<int, wxString> BusinessGeographyListAltID;
+               std::map<int, wxString> BusinessGeographyListPID;
+               std::map<int, wxString> BusinessGeographyListType;
+               std::map<int, wxString> BusinessGeographyListTokens;
+               std::map<int, wxString> BusinessGeographyListMediatype;
+               std::map<int, int> BusinessGeographyListPref;
+               
+               std::map<int, wxString> BusinessRelatedList;
+               std::map<int, wxString> BusinessRelatedListRelType;
+               std::map<int, wxString> BusinessRelatedListLanguage;
+               std::map<int, wxString> BusinessRelatedListAltID;
+               std::map<int, wxString> BusinessRelatedListPID;
+               std::map<int, wxString> BusinessRelatedListType;
+               std::map<int, wxString> BusinessRelatedListTokens;
+               std::map<int, int> BusinessRelatedListPref;                     
+               
+               std::map<int, wxString> BusinessWebsiteList;
+               std::map<int, wxString> BusinessWebsiteListAltID;
+               std::map<int, wxString> BusinessWebsiteListPID;
+               std::map<int, wxString> BusinessWebsiteListType;
+               std::map<int, wxString> BusinessWebsiteListTokens;
+               std::map<int, wxString> BusinessWebsiteListMediatype;
+               std::map<int, int> BusinessWebsiteListPref;
+               
+               std::map<int, wxString> BusinessTitleList;
+               std::map<int, wxString> BusinessTitleListLanguage;              
+               std::map<int, wxString> BusinessTitleListAltID;
+               std::map<int, wxString> BusinessTitleListPID;
+               std::map<int, wxString> BusinessTitleListType;
+               std::map<int, wxString> BusinessTitleListTokens;
+               std::map<int, int> BusinessTitleListPref;
+               
+               std::map<int, wxString> BusinessRoleList;
+               std::map<int, wxString> BusinessRoleListLanguage;               
+               std::map<int, wxString> BusinessRoleListAltID;
+               std::map<int, wxString> BusinessRoleListPID;
+               std::map<int, wxString> BusinessRoleListType;
+               std::map<int, wxString> BusinessRoleListTokens;
+               std::map<int, int> BusinessRoleListPref;
+               
+               std::map<int, wxString> BusinessOrganisationsList;
+               std::map<int, wxString> BusinessOrganisationsListLanguage;              
+               std::map<int, wxString> BusinessOrganisationsListAltID;
+               std::map<int, wxString> BusinessOrganisationsListPID;
+               std::map<int, wxString> BusinessOrganisationsListType;
+               std::map<int, wxString> BusinessOrganisationsListTokens;
+               std::map<int, wxString> BusinessOrganisationsListSortAs;                
+               std::map<int, int> BusinessOrganisationsListPref;
+               
+               std::map<int, wxString> BusinessNoteList;
+               std::map<int, wxString> BusinessNoteListLanguage;               
+               std::map<int, wxString> BusinessNoteListAltID;
+               std::map<int, wxString> BusinessNoteListPID;
+               std::map<int, wxString> BusinessNoteListType;
+               std::map<int, wxString> BusinessNoteListTokens;
+               std::map<int, int> BusinessNoteListPref;                
+               
+               /* Items on the Categories tab */
+               
+               std::map<int, wxString> CategoriesList;
+               std::map<int, wxString> CategoriesListAltID;
+               std::map<int, wxString> CategoriesListPID;
+               std::map<int, wxString> CategoriesListType;
+               std::map<int, wxString> CategoriesListTokens;
+               std::map<int, int> CategoriesListPref;  
+               
+               /* Items on the Groups tab */
+               
+               std::map<int, wxString> GroupsList;
+               std::map<int, wxString> GroupsListAltID;
+               std::map<int, wxString> GroupsListPID;
+               std::map<int, wxString> GroupsListType;
+               std::map<int, wxString> GroupsListTokens;
+               std::map<int, int> GroupsListPref;
+               
+               /* Items on the Pictures tab */
+               
+               std::map<int, std::string> PicturesList;
+               std::map<int, wxString> PicturesListAltID;
+               std::map<int, wxString> PicturesListPID;
+               std::map<int, wxString> PicturesListType;
+               std::map<int, wxString> PicturesListPicEncType;
+               std::map<int, wxString> PicturesListPictureType;
+               std::map<int, wxString> PicturesListTokens;
+               std::map<int, wxString> PicturesListMediatype;          
+               std::map<int, int> PicturesListPref;
+
+               /* Items on the Logos tab */
+               
+               std::map<int, std::string> LogosList;
+               std::map<int, wxString> LogosListAltID;
+               std::map<int, wxString> LogosListPID;
+               std::map<int, wxString> LogosListType;
+               std::map<int, wxString> LogosListPicEncType;            
+               std::map<int, wxString> LogosListPictureType;
+               std::map<int, wxString> LogosListTokens;
+               std::map<int, wxString> LogosListMediatype;             
+               std::map<int, int> LogosListPref;
+               
+               /* Items on the Sounds tab */
+               
+               std::map<int, std::string> SoundsList;
+               std::map<int, wxString> SoundsListAltID;
+               std::map<int, wxString> SoundsListPID;
+               std::map<int, wxString> SoundsListType;
+               std::map<int, wxString> SoundsListAudioEncType;         
+               std::map<int, wxString> SoundsListAudioType;            
+               std::map<int, wxString> SoundsListTokens;
+               std::map<int, wxString> SoundsListMediatype;            
+               std::map<int, int> SoundsListPref;      
+               
+               /* Items on the Calendaring tab */
+               
+               std::map<int, wxString> CalendarList;
+               std::map<int, wxString> CalendarListAltID;
+               std::map<int, wxString> CalendarListPID;
+               std::map<int, wxString> CalendarListType;
+               std::map<int, wxString> CalendarListTokens;
+               std::map<int, wxString> CalendarListMediatype;          
+               std::map<int, int> CalendarListPref;
+               
+               std::map<int, wxString> CalendarRequestList;
+               std::map<int, wxString> CalendarRequestListAltID;
+               std::map<int, wxString> CalendarRequestListPID;
+               std::map<int, wxString> CalendarRequestListType;
+               std::map<int, wxString> CalendarRequestListTokens;
+               std::map<int, wxString> CalendarRequestListMediatype;           
+               std::map<int, int> CalendarRequestListPref;             
+                               
+               std::map<int, wxString> FreeBusyList;
+               std::map<int, wxString> FreeBusyListAltID;
+               std::map<int, wxString> FreeBusyListPID;
+               std::map<int, wxString> FreeBusyListType;
+               std::map<int, wxString> FreeBusyListTokens;
+               std::map<int, wxString> FreeBusyListMediatype;          
+               std::map<int, int> FreeBusyListPref;
+               
+               /* Items on the Security tab */
+               
+               std::map<int, wxString> KeyList;
+               std::map<int, wxString> KeyListAltID;
+               std::map<int, wxString> KeyListPID;
+               std::map<int, bool> KeyListKeyType;             
+               std::map<int, wxString> KeyListDataType;                
+               std::map<int, wxString> KeyListDataEncType;
+               std::map<int, wxString> KeyListType;
+               std::map<int, wxString> KeyListTokens;
+               std::map<int, int> KeyListPref;
+               
+               /* Items on the Other tab */
+               
+               std::map<int, wxString> VendorList;
+               std::map<int, wxString> VendorListPEN;
+               std::map<int, wxString> VendorListElement;
+               
+               std::map<int, wxString> XTokenList;             
+               std::map<int, wxString> XTokenListTokens;                       
+       
+               /* Items regarding account and filename */
+               
+               wxString wxSContactFilename;
+               wxString wxSContactAccount;
+               bool boolContactModified;
+               int intSeekSelectedData;
+               
+               /* Section for saving/loading data */
+               
+               wxString *strPropertyPtr;
+               bool *boolAdditionalPtr;
+               bool *boolExtraPtr;
+               std::map<int,wxString>::iterator *iterDataPtr = 0;
+               std::map<int,std::string>::iterator *iterDataStringPtr = 0;
+               std::map<int,wxString>::iterator *iterFileTypePtr = 0;
+               std::map<int,wxString>::iterator *iterFileEncPtr = 0;
+               
+               wxString ETag;
+               wxString ETagOriginal;
+               
+               wxString strValue;
+               wxString strValue2;
+               wxString strValue3;
+
+               bool boolValue = FALSE;
+               bool boolValue2 = FALSE;
+               size_t intValue = 0;
+               int intValue2 = 0;
+               int intValue3 = 0;
+               bool BinaryDataProc = FALSE;
+               bool EditMode = FALSE;
+               bool DialogOpen = FALSE;
+               
+               /*
+               std::string base64dec;
+               sf::Sound AudioPlayback;
+               sf::SoundBuffer AudioBuffer;
+               */
+               
+               size_t base64declen;
+               std::string base64dec;
+               sf::Music AudioPlayback;
+               AudioStream AudioStreamPlayback;
+               sf::SoundBuffer AudioBuffer;
+               
+               wxBitmap PictureImage;
+               wxBitmap LogoImage;
+               
+               void SplitValues(wxString *PropertyLine,
+                       std::map<int,int> *SplitPoints, 
+                       std::map<int,int> *SplitLength, 
+                       int intSize);
+               
+               frmMain *MainPtr;
+               frmActivityMgr *ActMgrPtr;
+               wxETagProcessTimer *ETagTmrPtr;
+               wxContactFileMonitorTimer FMTimer;
+               
+               int ContactEditorUID;
+               
+               DECLARE_EVENT_TABLE()
+       
+       //// end generated class members
+       
+};
+
+#endif // __frmContactEditor__
diff --git a/source/contacteditor/frmContactEditorAddress.cpp b/source/contacteditor/frmContactEditorAddress.cpp
new file mode 100644 (file)
index 0000000..f613e0a
--- /dev/null
@@ -0,0 +1,505 @@
+#include "frmContactEditorAddress.h"
+#include <map>
+#include <wx/tokenzr.h>
+
+#include "../common/textprocessing.h"
+
+frmContactEditorAddress::frmContactEditorAddress( wxWindow* parent )
+:
+frmContactEditorAddressADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorAddress::InitAddressEditor( wxInitDialogEvent& event )
+{
+       // Do nothing with this subroutine at this time.
+}
+
+void frmContactEditorAddress::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorAddress::ProcessData( wxCommandEvent& event )
+{
+
+       // Check what edit mode we are in and go from there.
+       
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+       
+               // Add the address to the list (maps).
+               
+               AddressListPtr->erase(AddressListIndex);                
+               AddressListPtr->insert(std::make_pair(AddressListIndex, txtAddress->GetValue()));
+
+               AddressListTownPtr->erase(AddressListIndex);
+               AddressListTownPtr->insert(std::make_pair(AddressListIndex, txtTownCity->GetValue()));
+
+               AddressListCountyPtr->erase(AddressListIndex);
+               AddressListCountyPtr->insert(std::make_pair(AddressListIndex, txtCounty->GetValue()));
+
+               AddressListPostCodePtr->erase(AddressListIndex);
+               AddressListPostCodePtr->insert(std::make_pair(AddressListIndex, txtPostCode->GetValue()));
+
+               AddressListCountryPtr->erase(AddressListIndex);
+               AddressListCountryPtr->insert(std::make_pair(AddressListIndex, txtCountry->GetValue()));
+               
+               // Add the label to the list (maps).
+               
+               AddressListLabelPtr->insert(std::make_pair(AddressListIndex, txtLabel->GetValue()));
+               
+               // Add the language to the list (maps).
+               
+               AddressListLangPtr->insert(std::make_pair(AddressListIndex, cmbLanguage->GetValue()));
+               
+               // No AltIDs at present.
+               
+               // No PIDs at present.
+               
+               // There are no tokens for a new address to add so this can be
+               // ignored for the time being.
+               
+               // Add the Geopositioning to the list (maps).
+               
+               AddressListGeoPtr->insert(std::make_pair(AddressListIndex, txtGeo->GetValue()));
+               
+               // Add the Timezone to the list (maps).
+
+               AddressListTimezonePtr->insert(std::make_pair(AddressListIndex, txtTimezone->GetValue()));
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       AddressListTypePtr->insert(std::make_pair(AddressListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       AddressListTypePtr->insert(std::make_pair(AddressListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       AddressListTypePtr->insert(std::make_pair(AddressListIndex, wxT("work")));
+               
+               }
+               
+               //AddressListTypePtr = &AddressListType;
+               
+               // Add the mediatype to the list (maps).
+               
+               AddressListMediatypePtr->insert(std::make_pair(AddressListIndex, wxT("text/plain")));
+               
+               //AddressListMediatypePtr = &AddressListMediatype;
+               //AddressListPrefPtr = &AddressListPref;
+               
+               if (chkUsePref->IsChecked()){
+               
+                       AddressListPrefPtr->insert(std::make_pair(AddressListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       AddressListPrefPtr->insert(std::make_pair(AddressListIndex, 0));                
+               
+               }
+               
+               // Add to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(AddressListIndex);
+               coldata.SetData(AddressListIndex);              
+               coldata.SetText(txtAddress->GetValue());
+               ListCtrlIndex = AddressListCtrlPtr->InsertItem(coldata);
+               
+               AddressListCtrlPtr->SetItem(ListCtrlIndex, 1, txtTownCity->GetValue());
+               AddressListCtrlPtr->SetItem(ListCtrlIndex, 2, txtCounty->GetValue());
+               AddressListCtrlPtr->SetItem(ListCtrlIndex, 3, txtPostCode->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       AddressListCtrlPtr->SetItem(ListCtrlIndex, 4, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+       
+       } else if (EditorMode == TRUE){
+       
+               // Edit the address in the list.
+               
+               wxString strAddress;
+               wxString strValue;
+               long longSelected = -1;
+               
+               /*
+               strAddress.Append(wxT(";;"));
+
+               strAddress.Append(txtAddress->GetValue());
+               strAddress.Append(wxT(";"));
+               
+               strAddress.Append(txtTownCity->GetValue());
+               strAddress.Append(wxT(";"));
+               
+               strAddress.Append(txtCounty->GetValue());
+               strAddress.Append(wxT(";"));
+               
+               strAddress.Append(txtPostCode->GetValue());
+               strAddress.Append(wxT(";"));
+
+               strAddress.Append(txtCountry->GetValue());
+               */
+               
+               AddressListPtr->erase(AddressListIndex);                
+               AddressListPtr->insert(std::make_pair(AddressListIndex, txtAddress->GetValue()));
+
+               AddressListTownPtr->erase(AddressListIndex);
+               AddressListTownPtr->insert(std::make_pair(AddressListIndex, txtTownCity->GetValue()));
+
+               AddressListCountyPtr->erase(AddressListIndex);
+               AddressListCountyPtr->insert(std::make_pair(AddressListIndex, txtCounty->GetValue()));
+
+               AddressListPostCodePtr->erase(AddressListIndex);
+               AddressListPostCodePtr->insert(std::make_pair(AddressListIndex, txtPostCode->GetValue()));
+
+               AddressListCountryPtr->erase(AddressListIndex);
+               AddressListCountryPtr->insert(std::make_pair(AddressListIndex, txtCountry->GetValue()));
+               
+               //AddressListLabelPtr = &AddressListLabel;
+               
+               // Add the label to the list (maps).
+               
+               AddressListLabelPtr->erase(AddressListIndex);
+               AddressListLabelPtr->insert(std::make_pair(AddressListIndex, txtLabel->GetValue()));
+               
+               // Add the language to the list (maps).
+               
+               //AddressListLangPtr = &AddressListLang;
+               
+               AddressListLangPtr->erase(AddressListIndex);
+               AddressListLangPtr->insert(std::make_pair(AddressListIndex, cmbLanguage->GetValue()));
+               
+               //AddressListAltIDPtr = &AddressListAltID;
+               
+               // No AltIDs at present.
+               
+               // No PIDs at present.
+               
+               // There are no tokens for a new address to add so this can be
+               // ignored for the time being.
+               
+               // Add the Geopositioning to the list (maps).
+               
+               AddressListGeoPtr->erase(AddressListIndex);
+               AddressListGeoPtr->insert(std::make_pair(AddressListIndex, txtGeo->GetValue()));
+               
+               // Add the Timezone to the list (maps).
+               
+               AddressListTimezonePtr->erase(AddressListIndex);
+               AddressListTimezonePtr->insert(std::make_pair(AddressListIndex, txtTimezone->GetValue()));
+
+               // No need to update type since it will not have changed.
+               
+               //AddressListTypePtr = &AddressListType;
+               
+               // Add the mediatype to the list (maps).
+               
+               AddressListMediatypePtr->erase(AddressListIndex);
+               AddressListMediatypePtr->insert(std::make_pair(AddressListIndex, wxT("text/plain")));
+               
+               //AddressListMediatypePtr = &AddressListMediatype;
+               //AddressListPrefPtr = &AddressListPref;
+               
+               AddressListPrefPtr->erase(AddressListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       AddressListPrefPtr->insert(std::make_pair(AddressListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       AddressListPrefPtr->insert(std::make_pair(AddressListIndex, 0));                
+               
+               }
+               
+               // Update the form with the new details.
+               
+               longSelected = AddressListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+    
+               if (longSelected == -1){
+                       return;
+               }
+
+               AddressListCtrlPtr->SetItem(longSelected, 0, txtAddress->GetValue());           
+               AddressListCtrlPtr->SetItem(longSelected, 1, txtTownCity->GetValue());
+               AddressListCtrlPtr->SetItem(longSelected, 2, txtCounty->GetValue());
+               AddressListCtrlPtr->SetItem(longSelected, 3, txtPostCode->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       AddressListCtrlPtr->SetItem(longSelected, 4, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       AddressListCtrlPtr->SetItem(longSelected, 4, wxT(""));
+               
+               }
+               
+               this->Close();
+       
+       }
+
+}
+
+void frmContactEditorAddress::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorAddress::CopyAddress( wxCommandEvent& event )
+{
+
+       wxString MailingLabel;
+       bool AddComma = FALSE;
+       
+       if (!txtAddress->IsEmpty()){
+       
+               MailingLabel.Append(txtAddress->GetValue());
+               AddComma = TRUE;
+       
+       }
+       
+       if (!txtTownCity->IsEmpty()){
+       
+               if(AddComma == TRUE){
+               
+                       MailingLabel.Append(wxT(",\n"));
+                       AddComma = FALSE;
+               
+               }
+               
+               MailingLabel.Append(txtTownCity->GetValue());
+               AddComma = TRUE;
+       
+       }
+       
+       if (!txtCounty->IsEmpty()){
+       
+               if(AddComma == TRUE){
+               
+                       MailingLabel.Append(wxT(",\n"));
+                       AddComma = FALSE;
+               
+               }
+               
+               MailingLabel.Append(txtCounty->GetValue());
+               AddComma = TRUE;
+       
+       }
+       
+       if (!txtPostCode->IsEmpty()){
+       
+               if(AddComma == TRUE){
+               
+                       MailingLabel.Append(wxT(",\n"));
+                       AddComma = FALSE;
+               
+               }
+               
+               MailingLabel.Append(txtPostCode->GetValue());
+               AddComma = TRUE;
+       
+       }
+       
+       if (!txtCountry->IsEmpty()){
+       
+               if(AddComma == TRUE){
+               
+                       MailingLabel.Append(wxT(",\n"));
+                       AddComma = FALSE;
+               
+               }
+               
+               MailingLabel.Append(txtCountry->GetValue());
+               AddComma = TRUE;
+       
+       }       
+       
+       txtLabel->SetValue(MailingLabel);
+
+}
+
+void frmContactEditorAddress::SetEditorMode( bool EditMode, SectionType SectType )
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Address"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Address"));
+               
+               wxString strValue;
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               
+               // Load the data into the form.
+               
+               striter = AddressListPtr->find(AddressListIndex);
+                
+               if (striter->first == AddressListIndex){
+               
+                       txtAddress->SetValue(striter->second);
+               
+               }
+               
+               striter = AddressListTownPtr->find(AddressListIndex);
+
+               if (striter->first == AddressListIndex){
+               
+                       txtTownCity->SetValue(striter->second);
+               
+               }
+               
+               striter = AddressListCountyPtr->find(AddressListIndex);
+
+               if (striter->first == AddressListIndex){
+               
+                       txtCounty->SetValue(striter->second);
+               
+               }
+
+               striter = AddressListPostCodePtr->find(AddressListIndex);
+
+               if (striter->first == AddressListIndex){
+               
+                       txtPostCode->SetValue(striter->second);
+               
+               }
+
+               striter = AddressListCountryPtr->find(AddressListIndex);
+
+               if (striter->first == AddressListIndex){
+               
+                       txtCountry->SetValue(striter->second);
+               
+               }
+               
+               //CaptureString(&strValue, TRUE);
+               //->Replace(wxT("\;"), wxT("\;;"), TRUE);
+               
+               // Setup the Slider.
+               
+               intiter = AddressListPrefPtr->find(AddressListIndex);
+               
+               if (intiter->first == AddressListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }
+               
+               // Setup the Label.
+               
+               striter = AddressListLabelPtr->find(AddressListIndex);
+                
+               if (striter->first == AddressListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+
+               txtLabel->SetValue(strValue);
+               
+               // Setup the Language, Geographic position and timezone.
+               
+               striter = AddressListLangPtr->find(AddressListIndex);
+                
+               if (striter->first == AddressListIndex){
+               
+                       strValue = striter->second;
+               
+               }       
+               
+               cmbLanguage->SetValue(strValue);
+               
+               striter = AddressListGeoPtr->find(AddressListIndex);
+                
+               if (striter->first == AddressListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtGeo->SetValue(strValue);
+               
+               striter = AddressListTimezonePtr->find(AddressListIndex);
+                
+               if (striter->first == AddressListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtTimezone->SetValue(strValue);        
+       
+       }
+       
+       EditSectionType = SectType;
+}
+
+void frmContactEditorAddress::SetupPointers( std::map<int, wxString> *AddressList,
+       std::map<int, wxString> *AddressListTown,
+       std::map<int, wxString> *AddressListCounty,
+       std::map<int, wxString> *AddressListPostCode,
+       std::map<int, wxString> *AddressListCountry,
+       std::map<int, wxString> *AddressListLabel,
+       std::map<int, wxString> *AddressListLang,               
+       std::map<int, wxString> *AddressListAltID,
+       std::map<int, wxString> *AddressListPID,
+       std::map<int, wxString> *AddressListTokens,
+       std::map<int, wxString> *AddressListGeo,
+       std::map<int, wxString> *AddressListTimezone,
+       std::map<int, wxString> *AddressListType,
+       std::map<int, wxString> *AddressListMediatype,
+       std::map<int, int> *AddressListPref,
+       wxListCtrl *AddressListCtrl, 
+       int AddressIndex )
+{
+
+       AddressListPtr = AddressList;
+       AddressListTownPtr = AddressListTown;
+       AddressListCountyPtr = AddressListCounty;
+       AddressListPostCodePtr = AddressListPostCode;
+       AddressListCountryPtr = AddressListCountry;
+       AddressListLabelPtr = AddressListLabel;
+       AddressListLangPtr = AddressListLang;
+       AddressListAltIDPtr = AddressListAltID;
+       AddressListPIDPtr = AddressListPID;
+       AddressListTokensPtr = AddressListTokens;
+       AddressListGeoPtr = AddressListGeo;
+       AddressListTimezonePtr = AddressListTimezone;
+       AddressListTypePtr = AddressListType;
+       AddressListMediatypePtr = AddressListMediatype;
+       AddressListPrefPtr = AddressListPref;
+       AddressListCtrlPtr = AddressListCtrl;
+       AddressListIndex = AddressIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorAddress.h b/source/contacteditor/frmContactEditorAddress.h
new file mode 100644 (file)
index 0000000..d0b7eb3
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef __frmContactEditorAddress__
+#define __frmContactEditorAddress__
+
+#include <map>
+
+/**
+@file
+Subclass of frmContactEditorAddressADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+
+//// end generated include
+
+#include "../enums.h"
+
+/** Implementing frmContactEditorAddressADT */
+class frmContactEditorAddress : public frmContactEditorAddressADT
+{
+       protected:
+               // Handlers for frmContactEditorAddressADT events.
+               void InitAddressEditor( wxInitDialogEvent& event );
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessData( wxCommandEvent& event );
+               void CopyAddress( wxCommandEvent& event );              
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorAddress( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers( std::map<int, wxString> *AddressList,
+                       std::map<int, wxString> *AddressListTown,
+                       std::map<int, wxString> *AddressListCounty,
+                       std::map<int, wxString> *AddressListPostCode,
+                       std::map<int, wxString> *AddressListCountry,
+                       std::map<int, wxString> *AddressListLabel,
+                       std::map<int, wxString> *AddressListLang,               
+                       std::map<int, wxString> *AddressListAltID,
+                       std::map<int, wxString> *AddressListPID,
+                       std::map<int, wxString> *AddressListTokens,
+                       std::map<int, wxString> *AddressListGeo,
+                       std::map<int, wxString> *AddressListTimezone,
+                       std::map<int, wxString> *AddressListType,
+                       std::map<int, wxString> *AddressListMediatype,
+                       std::map<int, int> *AddressListPref,
+                       wxListCtrl *AddressListCtrl,
+                       int AddressIndex );
+               
+       private:
+               bool EditorMode;
+               std::map<int, wxString> *AddressListPtr;
+               std::map<int, wxString> *AddressListTownPtr;
+               std::map<int, wxString> *AddressListCountyPtr;
+               std::map<int, wxString> *AddressListPostCodePtr;
+               std::map<int, wxString> *AddressListCountryPtr;
+               std::map<int, wxString> *AddressListLabelPtr;
+               std::map<int, wxString> *AddressListLangPtr;            
+               std::map<int, wxString> *AddressListAltIDPtr;
+               std::map<int, wxString> *AddressListPIDPtr;
+               std::map<int, wxString> *AddressListTokensPtr;
+               std::map<int, wxString> *AddressListGeoPtr;
+               std::map<int, wxString> *AddressListTimezonePtr;
+               std::map<int, wxString> *AddressListTypePtr;
+               std::map<int, wxString> *AddressListMediatypePtr;
+               std::map<int, int> *AddressListPrefPtr;
+               wxListCtrl *AddressListCtrlPtr;
+               int AddressListIndex;
+               SectionType EditSectionType;
+       //// end generated class members
+       
+};
+
+#endif // __frmContactEditorAddress__
diff --git a/source/contacteditor/frmContactEditorCalAdr.cpp b/source/contacteditor/frmContactEditorCalAdr.cpp
new file mode 100644 (file)
index 0000000..7865799
--- /dev/null
@@ -0,0 +1,258 @@
+#include "frmContactEditorCalAdr.h"
+#include <wx/tokenzr.h>
+#include "../common/textprocessing.h"
+
+frmContactEditorCalAdr::frmContactEditorCalAdr( wxWindow* parent )
+:
+frmContactEditorCalAdrADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+       
+       cmbType->Append(wxT(""));
+       cmbType->Append(_("Home"));
+       cmbType->Append(_("Work"));     
+}
+
+void frmContactEditorCalAdr::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorCalAdr::ProcessAction( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+
+               wxString strValue;
+       
+               // Setup Calendar Address.
+               
+               CalAdrListPtr->insert(std::make_pair(CalAdrListIndex, txtAddress->GetValue()));
+
+               strValue.Clear();
+               
+               strValue = cmbType->GetString(cmbType->GetSelection());
+
+               // Setup Calendar Type.
+
+               if (strValue == _("Home")) {
+               
+                       CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("home")));
+               
+               } else if (strValue == _("Work")) {
+               
+                       CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("work")));
+               
+               } else {
+               
+                       CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("")));
+               
+               }
+               
+               // Setup Calendar Priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       CalAdrListPrefPtr->insert(std::make_pair(CalAdrListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       CalAdrListPrefPtr->insert(std::make_pair(CalAdrListIndex, 0));
+               
+               }
+               
+               // Add to form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(CalAdrListIndex);
+               coldata.SetData(CalAdrListIndex);
+               coldata.SetText(txtAddress->GetValue());
+               ListCtrlIndex = CalAdrListCtrlPtr->InsertItem(coldata);
+               
+               CalAdrListCtrlPtr->SetItem(ListCtrlIndex, 1, strValue);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       CalAdrListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+               
+       } else if (EditorMode == TRUE) {
+       
+               long longSelected = -1;
+               wxString strValue;      
+       
+               // Update Category Name.
+               
+               CalAdrListPtr->erase(CalAdrListIndex);
+               CalAdrListPtr->insert(std::make_pair(CalAdrListIndex, txtAddress->GetValue()));
+               
+               // Update Category Type.
+               
+               CalAdrListTypePtr->erase(CalAdrListIndex);
+               
+               strValue.Clear();
+               strValue = cmbType->GetString(cmbType->GetSelection());
+               
+               if (strValue == _("Home")) {
+               
+                       CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("home")));
+               
+               } else if (strValue == _("Work")) {
+               
+                       CalAdrListTypePtr->insert(std::make_pair(CalAdrListIndex, wxT("work")));
+               
+               }               
+               
+               // Update Category Priority.
+               
+               CalAdrListPrefPtr->erase(CalAdrListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       CalAdrListPrefPtr->insert(std::make_pair(CalAdrListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       CalAdrListPrefPtr->insert(std::make_pair(CalAdrListIndex, 0));
+               
+               }
+               
+               // Update form.
+               
+               longSelected = CalAdrListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               CalAdrListCtrlPtr->SetItem(longSelected, 0, txtAddress->GetValue());
+               CalAdrListCtrlPtr->SetItem(longSelected, 1, strValue);          
+               
+               if (chkUsePref->IsChecked()){
+               
+                       CalAdrListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       CalAdrListCtrlPtr->SetItem(longSelected, 2, wxT(""));
+               
+               }
+               
+               this->Close();  
+       
+       }
+}
+
+void frmContactEditorCalAdr::SetEditorMode(bool EditMode)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Calendar Address"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Calendar Address"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;              
+                       
+               // Get the organisation name.
+               
+               striter = CalAdrListPtr->find(CalAdrListIndex);
+                
+               if (striter->first == CalAdrListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtAddress->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the type.
+               
+               striter = CalAdrListTypePtr->find(CalAdrListIndex);     
+               
+               if (striter->first == CalAdrListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               if (strValue == wxT("home")){
+               
+                       cmbType->SetSelection(1);
+               
+               } else if (strValue == wxT("work")){
+               
+                       cmbType->SetSelection(2);       
+               
+               } else {
+               
+                       cmbType->SetSelection(0);
+               
+               }
+               
+               // Get the organisation priority.
+               
+               intiter = CalAdrListPrefPtr->find(CalAdrListIndex);
+               
+               if (intiter->first == CalAdrListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }
+               
+       }
+               
+}
+
+void frmContactEditorCalAdr::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorCalAdr::SetupPointers(std::map<int, wxString> *CalAdrList,
+       std::map<int, wxString> *CalAdrListAltID,
+       std::map<int, wxString> *CalAdrListPID,
+       std::map<int, wxString> *CalAdrListType,
+       std::map<int, wxString> *CalAdrListTokens,
+       std::map<int, int> *CalAdrListPref,
+       wxListCtrl *CalAdrListCtrl,
+       int CalAdrIndex )
+{
+
+       CalAdrListPtr = CalAdrList;
+       CalAdrListAltIDPtr = CalAdrListAltID;
+       CalAdrListPIDPtr = CalAdrListPID;
+       CalAdrListTypePtr = CalAdrListType;
+       CalAdrListTokensPtr = CalAdrListTokens;
+       CalAdrListPrefPtr = CalAdrListPref;
+       CalAdrListCtrlPtr = CalAdrListCtrl;
+       CalAdrListIndex = CalAdrIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorCalAdr.h b/source/contacteditor/frmContactEditorCalAdr.h
new file mode 100644 (file)
index 0000000..d6ba28a
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef __frmContactEditorCalAdr__
+#define __frmContactEditorCalAdr__
+
+/**
+@file
+Subclass of frmContactEditorCalAdrADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorCalAdrADT */
+class frmContactEditorCalAdr : public frmContactEditorCalAdrADT
+{
+       protected:
+               // Handlers for frmContactEditorCalAdrADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorCalAdr( wxWindow* parent );
+               void SetEditorMode(bool EditMode);              
+               void SetupPointers(std::map<int, wxString> *CalAdrList,
+                       std::map<int, wxString> *CalAdrListAltID,
+                       std::map<int, wxString> *CalAdrListPID,
+                       std::map<int, wxString> *CalAdrListType,
+                       std::map<int, wxString> *CalAdrListTokens,
+                       std::map<int, int> *CalAdrListPref,
+                       wxListCtrl *CalAdrListCtrl,
+                       int CalAdrIndex );              
+       //// end generated class members
+
+               bool EditorMode;
+               std::map<int, wxString> *CalAdrListPtr;
+               std::map<int, wxString> *CalAdrListAltIDPtr;
+               std::map<int, wxString> *CalAdrListPIDPtr;
+               std::map<int, wxString> *CalAdrListTypePtr;
+               std::map<int, wxString> *CalAdrListTokensPtr;
+               std::map<int, int> *CalAdrListPrefPtr;
+               wxListCtrl *CalAdrListCtrlPtr;
+               int CalAdrListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorCalAdr__
diff --git a/source/contacteditor/frmContactEditorCategory.cpp b/source/contacteditor/frmContactEditorCategory.cpp
new file mode 100644 (file)
index 0000000..4378c82
--- /dev/null
@@ -0,0 +1,259 @@
+#include "frmContactEditorCategory.h"
+#include <wx/tokenzr.h>
+#include "../common/textprocessing.h"
+
+frmContactEditorCategory::frmContactEditorCategory( wxWindow* parent )
+:
+frmContactEditorCategoryADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+
+       cmbType->Append(wxT(""));
+       cmbType->Append(_("Home"));
+       cmbType->Append(_("Work"));     
+}
+
+void frmContactEditorCategory::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorCategory::ProcessAction( wxCommandEvent& event )
+{
+
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+
+               wxString strValue;
+       
+               // Setup Organisation Name.
+               
+               CategoryListPtr->insert(std::make_pair(CategoryListIndex, txtCategory->GetValue()));
+
+               strValue.Clear();
+
+               strValue = cmbType->GetString(cmbType->GetSelection());
+
+               // Setup Category Type.
+
+               if (strValue == _("Home")) {
+               
+                       CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("home")));
+               
+               } else if (strValue == _("Work")) {
+               
+                       CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("work")));
+               
+               } else {
+               
+                       CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("")));
+               
+               }
+               
+               // Setup Category Priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       CategoryListPrefPtr->insert(std::make_pair(CategoryListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       CategoryListPrefPtr->insert(std::make_pair(CategoryListIndex, 0));
+               
+               }
+               
+               // Add to form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(CategoryListIndex);
+               coldata.SetData(CategoryListIndex);
+               coldata.SetText(txtCategory->GetValue());
+               ListCtrlIndex = CategoryListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       CategoryListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+               
+       } else if (EditorMode == TRUE) {
+       
+               long longSelected = -1;
+               wxString strValue;      
+       
+               // Update Category Name.
+               
+               CategoryListPtr->erase(CategoryListIndex);
+               CategoryListPtr->insert(std::make_pair(CategoryListIndex, txtCategory->GetValue()));
+               
+               // Update Category Type.
+               
+               CategoryListTypePtr->erase(CategoryListIndex);
+       
+               strValue = cmbType->GetString(cmbType->GetSelection());
+               
+               if (strValue == _("Home")) {
+               
+                       CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("home")));
+               
+               } else if (strValue == _("Work")) {
+               
+                       CategoryListTypePtr->insert(std::make_pair(CategoryListIndex, wxT("work")));
+               
+               }               
+               
+               // Update Category Priority.
+               
+               CategoryListPrefPtr->erase(CategoryListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       CategoryListPrefPtr->insert(std::make_pair(CategoryListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       CategoryListPrefPtr->insert(std::make_pair(CategoryListIndex, 0));
+               
+               }
+               
+               // Update form.
+               
+               longSelected = CategoryListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               CategoryListCtrlPtr->SetItem(longSelected, 0, txtCategory->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       CategoryListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       CategoryListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }
+               
+               this->Close();  
+       
+       }
+
+}
+
+void frmContactEditorCategory::SetEditorMode(bool EditMode)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Category"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Category"));           
+               
+               // Load the data into the form.
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;              
+                       
+               // Get the organisation name.
+               
+               striter = CategoryListPtr->find(CategoryListIndex);
+                
+               if (striter->first == CategoryListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtCategory->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the type.
+               
+               striter = CategoryListTypePtr->find(CategoryListIndex); 
+               
+               if (striter->first == CategoryListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               if (strValue == wxT("home")){
+               
+                       cmbType->SetSelection(1);
+               
+               } else if (strValue == wxT("work")){
+               
+                       cmbType->SetSelection(2);       
+               
+               } else {
+               
+                       cmbType->SetSelection(0);
+               
+               }
+               
+               // Get the organisation priority.
+               
+               intiter = CategoryListPrefPtr->find(CategoryListIndex);
+               
+               if (intiter->first == CategoryListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }
+               
+       }
+               
+}
+
+void frmContactEditorCategory::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorCategory::SetupPointers(std::map<int, wxString> *CategoryList,
+       std::map<int, wxString> *CategoryListAltID,
+       std::map<int, wxString> *CategoryListPID,
+       std::map<int, wxString> *CategoryListType,
+       std::map<int, wxString> *CategoryListTokens,
+       std::map<int, int> *CategoryListPref,
+       wxListCtrl *CategoryListCtrl,
+       int CategoryIndex )
+{
+
+       CategoryListPtr = CategoryList;
+       //CategoryListSortAsPtr = CategoryListSortAs;
+       CategoryListAltIDPtr = CategoryListAltID;
+       CategoryListPIDPtr = CategoryListPID;
+       CategoryListTypePtr = CategoryListType;
+       CategoryListTokensPtr = CategoryListTokens;
+       CategoryListPrefPtr = CategoryListPref;
+       CategoryListCtrlPtr = CategoryListCtrl;
+       CategoryListIndex = CategoryIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorCategory.h b/source/contacteditor/frmContactEditorCategory.h
new file mode 100644 (file)
index 0000000..7cee4ff
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef __frmContactEditorCategory__
+#define __frmContactEditorCategory__
+
+/**
+@file
+Subclass of frmContactEditorCategoryADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorCategoryADT */
+class frmContactEditorCategory : public frmContactEditorCategoryADT
+{
+       protected:
+               // Handlers for frmContactEditorCategoryADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorCategory( wxWindow* parent );
+               void SetEditorMode(bool EditMode);              
+               void SetupPointers(std::map<int, wxString> *CategoryList,
+                       std::map<int, wxString> *CategoryListAltID,
+                       std::map<int, wxString> *CategoryListPID,
+                       std::map<int, wxString> *CategoryListType,
+                       std::map<int, wxString> *CategoryListTokens,
+                       std::map<int, int> *CategoryListPref,
+                       wxListCtrl *CategoryListCtrl,
+                       int CategoryIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, wxString> *CategoryListPtr;
+               std::map<int, wxString> *CategoryListAltIDPtr;
+               std::map<int, wxString> *CategoryListPIDPtr;
+               std::map<int, wxString> *CategoryListTypePtr;
+               std::map<int, wxString> *CategoryListTokensPtr;
+               std::map<int, int> *CategoryListPrefPtr;
+               wxListCtrl *CategoryListCtrlPtr;
+               int CategoryListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorCategory__
diff --git a/source/contacteditor/frmContactEditorEmail.cpp b/source/contacteditor/frmContactEditorEmail.cpp
new file mode 100644 (file)
index 0000000..4755bba
--- /dev/null
@@ -0,0 +1,208 @@
+#include "frmContactEditorEmail.h"
+#include <map>
+#include "../common/textprocessing.h"
+
+frmContactEditorEmail::frmContactEditorEmail( wxWindow* parent )
+:
+frmContactEditorEmailADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorEmail::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorEmail::ProcessData( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+       
+               // Add the email address to the list.
+       
+               wxString strAddress;
+               wxString strValue;
+               
+               // Add Email address.
+               
+               EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue()));
+               
+               // Add Email type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       EmailListTypePtr->insert(std::make_pair(EmailListIndex, wxT("work")));
+               
+               }
+               
+               // Add Email priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       EmailListPrefPtr->insert(std::make_pair(EmailListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0));            
+               
+               }               
+               
+               // Add the data to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(EmailListIndex);
+               coldata.SetData(EmailListIndex);                
+               coldata.SetText(txtEmail->GetValue());
+               ListCtrlIndex = EmailListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       EmailListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+       
+       } else if (EditorMode == TRUE){
+       
+               // Edit the email address.
+               
+               wxString strAddress;
+               wxString strValue;
+               long longSelected = -1;
+
+               EmailListPtr->erase(EmailListIndex);
+               EmailListPtr->insert(std::make_pair(EmailListIndex, txtEmail->GetValue()));
+               
+               EmailListPrefPtr->erase(EmailListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       EmailListPrefPtr->insert(std::make_pair(EmailListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       EmailListPrefPtr->insert(std::make_pair(EmailListIndex, 0));            
+               
+               }
+               
+               longSelected = EmailListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               EmailListCtrlPtr->SetItem(longSelected, 0, txtEmail->GetValue());               
+               
+               if (chkUsePref->IsChecked()){
+               
+                       EmailListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       EmailListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }       
+                       
+               this->Close();  
+       
+       }       
+       
+}
+
+void frmContactEditorEmail::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorEmail::SetEditorMode(bool EditMode, SectionType SectType)
+{
+
+       // Set the editor mode for adding or editing an email address.
+
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Email"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Email"));
+       
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;
+               wxString strValue;
+               
+               // Load the data into the form.
+               
+               striter = EmailListPtr->find(EmailListIndex);
+                
+               if (striter->first == EmailListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtEmail->SetValue(strValue);
+               
+               // Setup the Slider.
+               
+               intiter = EmailListPrefPtr->find(EmailListIndex);
+               
+               if (intiter->first == EmailListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+       
+       EditSectionType = SectType;
+       
+}
+
+void frmContactEditorEmail::SetupPointers(std::map<int, wxString> *EmailList,
+       std::map<int, wxString> *EmailListAltID,
+       std::map<int, wxString> *EmailListPID,
+       std::map<int, wxString> *EmailListType,
+       std::map<int, wxString> *EmailListTokens,
+       std::map<int, int> *EmailListPref,
+       wxListCtrl *EmailListCtrl,
+       int EmailIndex )
+{
+
+       // Setup the pointers so that the data can be processed without
+       // duplication.
+
+       EmailListPtr = EmailList;
+       EmailListAltIDPtr = EmailListAltID;
+       EmailListPIDPtr = EmailListPID;
+       EmailListTypePtr = EmailListType;
+       EmailListTokensPtr = EmailListTokens;
+       EmailListPrefPtr = EmailListPref;
+       EmailListCtrlPtr = EmailListCtrl;
+       EmailListIndex = EmailIndex;
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorEmail.h b/source/contacteditor/frmContactEditorEmail.h
new file mode 100644 (file)
index 0000000..9ff93bd
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef __frmContactEditorEmail__
+#define __frmContactEditorEmail__
+
+#include <map>
+
+/**
+@file
+Subclass of frmContactEditorEmailADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+
+//// end generated include
+
+#include "../enums.h"
+
+/** Implementing frmContactEditorEmailADT */
+class frmContactEditorEmail : public frmContactEditorEmailADT
+{
+       protected:
+               // Handlers for frmContactEditorEmailADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessData( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorEmail( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *EmailList,
+                       std::map<int, wxString> *EmailListAltID,
+                       std::map<int, wxString> *EmailListPID,
+                       std::map<int, wxString> *EmailListType,
+                       std::map<int, wxString> *EmailListTokens,
+                       std::map<int, int> *EmailListPref,
+                       wxListCtrl *EmailListCtrl,
+                       int EmailIndex );
+       
+       private:
+               bool EditorMode;        
+               std::map<int, wxString> *EmailListPtr;
+               std::map<int, wxString> *EmailListAltIDPtr;
+               std::map<int, wxString> *EmailListPIDPtr;
+               std::map<int, wxString> *EmailListTypePtr;
+               std::map<int, wxString> *EmailListTokensPtr;
+               std::map<int, int> *EmailListPrefPtr;
+               wxListCtrl *EmailListCtrlPtr;
+               int EmailListIndex;
+               SectionType EditSectionType;            
+               
+       //// end generated class members
+       
+};
+
+#endif // __frmContactEditorEmail__
diff --git a/source/contacteditor/frmContactEditorGeoposition.cpp b/source/contacteditor/frmContactEditorGeoposition.cpp
new file mode 100644 (file)
index 0000000..3715411
--- /dev/null
@@ -0,0 +1,214 @@
+#include "frmContactEditorGeoposition.h"
+#include <map>
+#include "../common/textprocessing.h"
+
+frmContactEditorGeoposition::frmContactEditorGeoposition( wxWindow* parent )
+:
+frmContactEditorGeopositionADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorGeoposition::EnablePriority( wxCommandEvent& event )
+{
+
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+       
+}
+
+void frmContactEditorGeoposition::SetEditorMode(bool EditMode, SectionType SectType)
+{
+
+       // Set the editor mode for adding or editing a timezone.
+
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Geoposition"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Geoposition"));
+       
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;
+               wxString strValue;
+               
+               // Load the data into the form.
+               
+               striter = GeopositionListPtr->find(GeopositionListIndex);
+                
+               if (striter->first == GeopositionListIndex){
+               
+                       strValue = striter->second;
+               
+               }               
+               
+               txtGeoposition->SetValue(strValue);
+               
+               // Setup the Slider.
+               
+               intiter = GeopositionListPrefPtr->find(GeopositionListIndex);
+               
+               if (intiter->first == GeopositionListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+       
+       EditSectionType = SectType;
+       
+}
+
+void frmContactEditorGeoposition::ProcessAction( wxCommandEvent& event )
+{
+
+       long ListCtrlIndex;
+
+       if (EditorMode == FALSE){
+       
+               // Add the language to the list.
+
+               wxString strValue;
+               
+               strValue = txtGeoposition->GetValue();
+               
+               // Add language.
+               
+               GeopositionListPtr->insert(std::make_pair(GeopositionListIndex, strValue));
+               
+               // Add Email type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       GeopositionListTypePtr->insert(std::make_pair(GeopositionListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       GeopositionListTypePtr->insert(std::make_pair(GeopositionListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       GeopositionListTypePtr->insert(std::make_pair(GeopositionListIndex, wxT("work")));
+               
+               }
+               
+               // Add Language priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       GeopositionListPrefPtr->insert(std::make_pair(GeopositionListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       GeopositionListPrefPtr->insert(std::make_pair(GeopositionListIndex, 0));                
+               
+               }               
+               
+               // Add the data to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(GeopositionListIndex);
+               coldata.SetData(GeopositionListIndex);          
+               coldata.SetText(txtGeoposition->GetValue());
+               ListCtrlIndex = GeopositionListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       GeopositionListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();          
+       
+       } else if (EditorMode == TRUE){
+       
+               // Edit the language.
+               
+               wxString strAddress;
+               wxString strValue;
+               long longSelected = -1;
+
+               GeopositionListPtr->erase(GeopositionListIndex);
+               GeopositionListPtr->insert(std::make_pair(GeopositionListIndex, txtGeoposition->GetValue()));
+               
+               GeopositionListPrefPtr->erase(GeopositionListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       GeopositionListPrefPtr->insert(std::make_pair(GeopositionListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       GeopositionListPrefPtr->insert(std::make_pair(GeopositionListIndex, 0));                
+               
+               }
+               
+               longSelected = GeopositionListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               GeopositionListCtrlPtr->SetItem(longSelected, 0, txtGeoposition->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       GeopositionListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       GeopositionListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }       
+                       
+               this->Close();
+       
+       }
+
+}
+
+void frmContactEditorGeoposition::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorGeoposition::SetupPointers(std::map<int, wxString> *GeopositionList,
+       std::map<int, wxString> *GeopositionListAltID,
+       std::map<int, wxString> *GeopositionListPID,
+       std::map<int, wxString> *GeopositionListType,
+       std::map<int, wxString> *GeopositionListTokens,
+       std::map<int, wxString> *GeopositionListMediatype,      
+       std::map<int, int> *GeopositionListPref,
+       wxListCtrl *GeopositionListCtrl,
+       int GeopositionIndex )
+{
+
+       // Setup the pointers so that the data can be processed without
+       // duplication.
+
+       GeopositionListPtr = GeopositionList;
+       GeopositionListAltIDPtr = GeopositionListAltID;
+       GeopositionListPIDPtr = GeopositionListPID;
+       GeopositionListTypePtr = GeopositionListType;
+       GeopositionListTokensPtr = GeopositionListTokens;
+       GeopositionListPrefPtr = GeopositionListPref;
+       GeopositionListCtrlPtr = GeopositionListCtrl;
+       GeopositionListIndex = GeopositionIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorGeoposition.h b/source/contacteditor/frmContactEditorGeoposition.h
new file mode 100644 (file)
index 0000000..5872489
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef __frmContactEditorGeoposition__
+#define __frmContactEditorGeoposition__
+
+#include <map>
+
+/**
+@file
+Subclass of frmContactEditorGeopositionADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorGeopositionADT */
+class frmContactEditorGeoposition : public frmContactEditorGeopositionADT
+{
+       protected:
+               // Handlers for frmContactEditorGeopositionADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorGeoposition( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *GeopositionList,
+                       std::map<int, wxString> *GeopositionListAltID,
+                       std::map<int, wxString> *GeopositionListPID,
+                       std::map<int, wxString> *GeopositionListType,
+                       std::map<int, wxString> *GeopositionListTokens,
+                       std::map<int, wxString> *GeopositionListMediatype,
+                       std::map<int, int> *GeopositionListPref,
+                       wxListCtrl *GeopositionListCtrl,
+                       int GeopositionIndex );
+       //// end generated class members
+       private:
+               bool EditorMode;        
+               std::map<int, wxString> *GeopositionListPtr;
+               std::map<int, wxString> *GeopositionListAltIDPtr;
+               std::map<int, wxString> *GeopositionListPIDPtr;
+               std::map<int, wxString> *GeopositionListTypePtr;
+               std::map<int, wxString> *GeopositionListTokensPtr;
+               std::map<int, wxString> *GeopositionListMediatypePtr;
+               std::map<int, int> *GeopositionListPrefPtr;
+               wxListCtrl *GeopositionListCtrlPtr;
+               int GeopositionListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorGeoposition__
diff --git a/source/contacteditor/frmContactEditorGroups.cpp b/source/contacteditor/frmContactEditorGroups.cpp
new file mode 100755 (executable)
index 0000000..46a8253
--- /dev/null
@@ -0,0 +1,262 @@
+#include "frmContactEditorGroups.h"\r
+#include <wx/wx.h>\r
+#include <wx/dir.h>\r
+#include "../vcard/vcard.h"\r
+#include "../common/dirs.h"\r
+\r
+frmContactEditorGroup::frmContactEditorGroup( wxWindow* parent )\r
+:\r
+frmContactEditorGroupsADT( parent )\r
+{\r
+       EditorMode = FALSE;\r
+}\r
+\r
+void frmContactEditorGroup::FetchContacts( wxInitDialogEvent& event )\r
+{\r
+\r
+       // Load up the directory and get the list of contacts and UIDs.\r
+\r
+       // Ignore contacts which have KIND:group set.\r
+       \r
+    wxString AccountDirFinal = GetAccountDir(AccName, FALSE);\r
+\r
+    //wxString vcardfilenamewxs;\r
+    wxString vCardFilename;\r
+    wxString vCardFilenameFull;\r
+    wxString vCardDataString;\r
+    //wxStringTokenizer vcardfileline;\r
+    wxString lwxs;\r
+    wxString setname, setvalue;\r
+    //vCardNames = new std::map<wxString, wxString, std::greater<wxString>>;\r
+    std::multimap<wxString, ContactData, std::greater<wxString>> vCardNamesAsc;\r
+    std::multimap<wxString, ContactData, std::less<wxString>> vCardNamesDsc;\r
+    int ContactIndex = 0;\r
+    \r
+    wxDir vcardaccdir(AccountDirFinal);\r
+    \r
+    bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES);\r
+    while(ProcFiles){\r
+    \r
+       if (vCardFilename.Right(4) == wxT(".vcf") || \r
+           vCardFilename.Right(4) == wxT(".VCF") || \r
+           vCardFilename.Right(5) == wxT(".vcard") || \r
+           vCardFilename.Right(5) == wxT(".VCARD")){\r
+       \r
+           vCard Person;\r
+               \r
+           vCardFilenameFull.Append(AccountDirFinal);\r
+           vCardFilenameFull.Append(wxT("/"));\r
+           vCardFilenameFull.Append(vCardFilename);\r
+               \r
+           Person.LoadFile(vCardFilenameFull);\r
+               \r
+           if (Person.MeetBaseSpecification()){\r
+       \r
+               wxString KindStatus = Person.Get(wxT("KIND"));\r
+               \r
+               if (KindStatus == wxT("group")){\r
+               \r
+                       vCardFilename.Clear();\r
+                       vCardFilenameFull.Clear();\r
+                       vCardDataString.Clear();\r
+                       ProcFiles = vcardaccdir.GetNext(&vCardFilename);\r
+                       continue;\r
+               \r
+               }\r
+               \r
+               wxString PersonName = Person.Get(wxT("N"));\r
+               wxString PersonUID = Person.Get(wxT("UID"));\r
+               wxString PersonFilename = vCardFilenameFull;\r
+               \r
+               ContactData PersonData;\r
+               \r
+               PersonData.ContactName = PersonName;\r
+               PersonData.ContactUID = PersonUID;\r
+               PersonData.ContactFilename = PersonFilename;\r
+               \r
+               //ContactsNames.insert(std::make_pair(PersonName, ContactIndex));\r
+               //ContactsUIDs.insert(std::make_pair(ContactIndex, PersonUID));\r
+       \r
+               if (XVMData.SortMode == 1){\r
+\r
+                   // Split the name into sections.\r
+                       \r
+                   vCardDataString = Person.Get(wxT("N"));\r
+\r
+                   vCardName NameData = Person.GetName();\r
+                   \r
+                   vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname;\r
+                   \r
+               } else if (XVMData.SortMode == 2){\r
+                   \r
+                   // Split the name into sections.\r
+                   \r
+                   vCardName NameData = Person.GetName();    \r
+                   \r
+                   vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename;\r
+                   \r
+               } else if (XVMData.SortMode == 3){\r
+                   \r
+                   // Check and make sure that the top most nickname is used.\r
+                   \r
+                   vCardDataString = Person.Get(wxT("NICKNAME"));\r
+                   \r
+                   if (vCardDataString.IsEmpty()){\r
+                       \r
+                       vCardDataString = wxT("(no nickname)");\r
+                       \r
+                   }\r
+                   \r
+               } else if (XVMData.SortMode == 4){\r
+                   \r
+                   vCardDataString = Person.Get(wxT("FN"));\r
+                   \r
+               }\r
+       \r
+               if (XVMData.AscendingMode == TRUE){\r
+                   vCardNamesAsc.insert(std::make_pair(vCardDataString, PersonData));\r
+               } else {\r
+                   vCardNamesDsc.insert(std::make_pair(vCardDataString, PersonData));\r
+               }\r
+               \r
+           } else {\r
+       \r
+           }\r
+           \r
+           \r
+       \r
+       }\r
+       \r
+       vCardFilename.Clear();\r
+       vCardFilenameFull.Clear();\r
+       vCardDataString.Clear();\r
+       ProcFiles = vcardaccdir.GetNext(&vCardFilename);\r
+       \r
+    }\r
+    \r
+    if (XVMData.AscendingMode == TRUE){\r
+            \r
+       for (std::map<wxString,ContactData>::iterator iter = vCardNamesAsc.begin(); \r
+       iter != vCardNamesAsc.end(); ++iter){\r
+\r
+          chkContacts->InsertItems(1, &iter->first, 0);\r
+       \r
+          ContactNamesData.insert(std::make_pair(ContactIndex, iter->second));         \r
+       \r
+          ContactIndex++;\r
+                       \r
+       }\r
+               \r
+               \r
+    } else {\r
+               \r
+       ContactIndex = vCardNamesDsc.size() - 1;\r
+               \r
+        for (std::map<wxString,ContactData>::iterator iter = vCardNamesDsc.begin(); \r
+       iter != vCardNamesDsc.end(); ++iter){\r
+\r
+          chkContacts->InsertItems(1, &iter->first, 0);\r
+\r
+          ContactNamesData.insert(std::make_pair(ContactIndex, iter->second));         \r
+       \r
+          ContactIndex--;\r
+\r
+       }\r
+       \r
+    }\r
+\r
+}\r
+\r
+void frmContactEditorGroup::ProcessData( wxCommandEvent& event )\r
+{\r
+       \r
+       for (int i = 0; i < chkContacts->GetCount(); i++){\r
+       \r
+               if (chkContacts->IsChecked(i) == TRUE){\r
+               \r
+                       // Get the UID and Name data from the struct\r
+                       // via GetData.\r
+                       \r
+                       wxString ContactName;\r
+                       wxString ContactUID;\r
+                       \r
+                       for (std::map<int, ContactData>::iterator iter = ContactNamesData.begin(); \r
+                       iter != ContactNamesData.end(); ++iter){\r
+                       \r
+                               if (i == iter->first){\r
+                               \r
+                                       ContactName = iter->second.ContactName;\r
+                                       ContactUID = iter->second.ContactUID;\r
+                                               \r
+                               }\r
+                       \r
+                       }\r
+                       \r
+                       std::map<int, ContactData>::iterator CDataIter = ContactNamesData.find(i);\r
+                       \r
+                       wxListItem ItemData;\r
+                       ItemData.SetId(0);\r
+                       ItemData.SetText(chkContacts->GetString(i));\r
+                       \r
+                       // Check if UID already exists before adding again. If already there\r
+                       // then don't bother adding again.\r
+                       \r
+                       bool ItemExists = FALSE;\r
+                       \r
+                       for (std::map<int, wxString>::iterator itemiter = GroupsListPtr->begin();\r
+                       itemiter != GroupsListPtr->end(); ++itemiter){\r
+                       \r
+                               if (itemiter->second == ContactUID){\r
+                               \r
+                                       ItemExists = TRUE;\r
+                                       break;\r
+                               \r
+                               }\r
+                       \r
+                       }\r
+                       \r
+                       if (ItemExists == TRUE){\r
+                       \r
+                               continue;\r
+                       \r
+                       }\r
+                       \r
+                       GroupsListCtrlPtr->InsertItem(ItemData);\r
+                       GroupsListPtr->insert(std::make_pair(GroupsListIndex, ContactUID));\r
+               \r
+               }\r
+       \r
+       }\r
+       \r
+       this->Close();\r
+       \r
+}\r
+\r
+void frmContactEditorGroup::SetupPointers(std::map<int, wxString> *GroupsList,\r
+       wxListCtrl *GroupsListCtrl, \r
+       wxString AccountName, \r
+       int GroupIndex)\r
+{\r
+\r
+       GroupsListCtrlPtr = GroupsListCtrl;\r
+       GroupsListPtr = GroupsList;\r
+       AccName = AccountName;\r
+       GroupsListIndex = GroupIndex;\r
+\r
+}\r
+\r
+void frmContactEditorGroup::SetEditorMode(bool EditMode, XABViewMode XVMIn)\r
+{\r
+\r
+       EditorMode = EditMode;\r
+       XVMData = XVMIn;\r
+\r
+       btnAction->SetLabel(_("Add"));\r
+       this->SetTitle(_("Add Member(s)"));\r
+\r
+}\r
+\r
+void frmContactEditorGroup::CloseWindow( wxCommandEvent& event )\r
+{\r
+       this->Close();\r
+}\r
diff --git a/source/contacteditor/frmContactEditorGroups.h b/source/contacteditor/frmContactEditorGroups.h
new file mode 100755 (executable)
index 0000000..7412d83
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef __frmContactEditorGroups__\r
+#define __frmContactEditorGroups__\r
+\r
+#include <map>\r
+\r
+/**\r
+@file\r
+Subclass of frmContactEditorGroupsADT, which is generated by wxFormBuilder.\r
+*/\r
+\r
+#include "../AppXestiaAddrBk.h"\r
+#include "../frmMain.h"\r
+\r
+struct ContactData{\r
+       wxString ContactName;\r
+       wxString ContactUID;\r
+       wxString ContactFilename;\r
+};\r
+\r
+//// end generated include\r
+\r
+/** Implementing frmContactEditorGroupsADT */\r
+class frmContactEditorGroup : public frmContactEditorGroupsADT\r
+{\r
+       protected:\r
+               // Handlers for frmContactEditorGroupsADT events.\r
+               void FetchContacts( wxInitDialogEvent& event );\r
+               void ProcessData( wxCommandEvent& event );\r
+               void CloseWindow( wxCommandEvent& event );\r
+       public:\r
+               /** Constructor */\r
+               frmContactEditorGroup( wxWindow* parent );\r
+               void SetEditorMode(bool EditMode, XABViewMode XAVIn);\r
+               void SetupPointers(std::map<int, wxString> *GroupsList,\r
+                       wxListCtrl *GroupsListCtrl, \r
+                       wxString AccountName, \r
+                       int GroupIndex);\r
+       private:\r
+               bool EditorMode;\r
+               std::map<int,wxString> *GroupsListPtr;\r
+               wxListCtrl *GroupsListCtrlPtr;\r
+               wxString AccName;\r
+               std::map<int, ContactData> ContactNamesData;\r
+               int GroupsListIndex;\r
+               XABViewMode XVMData;\r
+       //// end generated class members\r
+       \r
+};\r
+\r
+#endif // __frmContactEditorGroups__\r
diff --git a/source/contacteditor/frmContactEditorIM.cpp b/source/contacteditor/frmContactEditorIM.cpp
new file mode 100644 (file)
index 0000000..98ef20d
--- /dev/null
@@ -0,0 +1,369 @@
+#include "frmContactEditorIM.h"
+#include <wx/msgdlg.h>
+#include <wx/tokenzr.h>
+
+#include "../common/textprocessing.h"
+
+frmContactEditorIM::frmContactEditorIM( wxWindow* parent )
+:
+frmContactEditorIMADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+       
+       // Add some values to the drop down box for IM types.
+       
+       cmbIMType->Append(wxT("AIM"));
+       cmbIMType->Append(wxT("Gadu-Gadu"));    
+       cmbIMType->Append(wxT("ICQ"));  
+       cmbIMType->Append(wxT("Skype"));
+       cmbIMType->Append(wxT("XMPP"));
+       cmbIMType->Append(wxT("Yahoo"));
+       
+}
+
+void frmContactEditorIM::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorIM::ProcessAction( wxCommandEvent& event )
+{
+
+       long ListCtrlIndex;
+       
+       // Check if IM type is empty and if it is then
+       // throw an error message.
+               
+       wxString strIMTypeValue;                
+       strIMTypeValue = cmbIMType->GetValue();         
+               
+       if (strIMTypeValue.IsEmpty()){
+               
+               wxMessageDialog NopeDlg(this, _("IM Type is required."), _("Error"), wxOK|wxICON_ERROR, wxDefaultPosition);
+               NopeDlg.ShowModal();
+               return;
+               
+       }
+               
+       if (txtUsername->IsEmpty()){
+               
+               wxMessageDialog NopeDlg(this, _("Username/E-mail Address is required."), _("Error"), wxOK|wxICON_ERROR, wxDefaultPosition);
+               NopeDlg.ShowModal();
+               return;
+               
+       }       
+       
+       if (EditorMode == FALSE){
+       
+               // Add the address to the list (maps).
+               
+               wxString strIMAddress;
+               wxString strValue;              
+               
+               // Strip out the colons.
+               
+               strIMAddress.Replace(wxT(":"), wxT(""), TRUE);
+               
+               // Specify the type.
+               
+               strIMTypeValue = cmbIMType->GetString(cmbIMType->GetSelection());
+               
+               if (strIMTypeValue == wxT("AIM")){
+               
+                       strIMAddress.Append(wxT("aim:"));
+               
+               } else if (strIMTypeValue == wxT("Gadu-Gadu")){
+               
+                       strIMAddress.Append(wxT("gg:"));
+               
+               } else if (strIMTypeValue == wxT("ICQ")){
+               
+                       strIMAddress.Append(wxT("icq:"));                       
+               
+               } else if (strIMTypeValue == wxT("Skype")){
+               
+                       strIMAddress.Append(wxT("skype:"));                     
+               
+               } else if (strIMTypeValue == wxT("XMPP")){
+               
+                       strIMAddress.Append(wxT("xmpp:"));                      
+               
+               } else if (strIMTypeValue == wxT("Yahoo")){
+               
+                       strIMAddress.Append(wxT("yahoo:"));                     
+               
+               } else {
+               
+                       strIMAddress.Append(strIMTypeValue + wxT(":"));
+               
+               }
+               
+               strIMAddress.Append(strValue);
+               strIMAddress.Append(txtUsername->GetValue());
+               
+               IMListPtr->insert(std::make_pair(IMListIndex, strIMAddress));
+               
+               // Set the type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       IMListTypePtr->insert(std::make_pair(IMListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       IMListTypePtr->insert(std::make_pair(IMListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       IMListTypePtr->insert(std::make_pair(IMListIndex, wxT("work")));
+               
+               }
+               
+               // Set the priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       IMListPrefPtr->insert(std::make_pair(IMListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       IMListPrefPtr->insert(std::make_pair(IMListIndex, 0));          
+               
+               }
+               
+               // Add to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(IMListIndex);
+               coldata.SetData(IMListIndex);
+               coldata.SetText(cmbIMType->GetValue());
+               ListCtrlIndex = IMListCtrlPtr->InsertItem(coldata);
+               
+               IMListCtrlPtr->SetItem(ListCtrlIndex, 1, txtUsername->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       IMListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+       
+       } else if (EditorMode == TRUE){
+       
+               // Edit the address in the list.
+               
+               wxString strIMAddress;
+               wxString strValue;
+               long longSelected = -1;
+               
+               // Strip out the colons.
+               
+               strIMAddress.Replace(wxT(":"), wxT(""), TRUE);
+               
+               // Specify the type.
+               
+               strIMTypeValue = cmbIMType->GetString(cmbIMType->GetSelection());
+               
+               if (strIMTypeValue == wxT("AIM")){
+               
+                       strIMAddress.Append(wxT("aim:"));
+               
+               } else if (strIMTypeValue == wxT("Gadu-Gadu")){
+               
+                       strIMAddress.Append(wxT("gg:"));
+               
+               } else if (strIMTypeValue == wxT("ICQ")){
+               
+                       strIMAddress.Append(wxT("icq:"));                       
+               
+               } else if (strIMTypeValue == wxT("Skype")){
+               
+                       strIMAddress.Append(wxT("skype:"));                     
+               
+               } else if (strIMTypeValue == wxT("XMPP")){
+               
+                       strIMAddress.Append(wxT("xmpp:"));                      
+               
+               } else if (strIMTypeValue == wxT("Yahoo")){
+               
+                       strIMAddress.Append(wxT("yahoo:"));                     
+               
+               } else {
+               
+                       strIMAddress.Append(strIMTypeValue + wxT(":"));
+               
+               }
+               
+               strIMAddress.Append(strValue);
+               strIMAddress.Append(txtUsername->GetValue());
+               
+               IMListPtr->erase(IMListIndex);
+               IMListPtr->insert(std::make_pair(IMListIndex, strIMAddress));
+               
+               // Set the priority.
+               
+               IMListPrefPtr->erase(IMListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       IMListPrefPtr->insert(std::make_pair(IMListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       IMListPrefPtr->insert(std::make_pair(IMListIndex, 0));          
+               
+               }
+               
+               // Modify the data on the form.
+               
+               longSelected = IMListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               IMListCtrlPtr->SetItem(longSelected, 0, cmbIMType->GetValue());
+               IMListCtrlPtr->SetItem(longSelected, 1, txtUsername->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       IMListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       IMListCtrlPtr->SetItem(longSelected, 2, wxT(""));
+               
+               }
+               
+               this->Close();
+       
+       }
+
+}
+
+void frmContactEditorIM::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorIM::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add IM"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify IM"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;
+               wxString strValue;
+               wxString strIMType;
+               wxString strIMUser;
+               
+               // Setup the IM Type.           
+               
+               striter = IMListPtr->find(IMListIndex);
+               
+               if (striter->first == IMListIndex){
+               
+                       strValue = striter->second;
+               
+               }               
+               
+               wxStringTokenizer IMAddressToken(strValue, wxT(":"));
+               strIMType = IMAddressToken.GetNextToken();
+               strIMUser = IMAddressToken.GetNextToken();
+               
+               if (strIMType == wxT("aim")){
+               
+                       cmbIMType->SetValue(wxT("AIM"));
+               
+               } else if (strIMType == wxT("gg")){
+               
+                       cmbIMType->SetValue(wxT("Gadu-Gadu"));
+               
+               } else if (strIMType == wxT("icq")){
+               
+                       cmbIMType->SetValue(wxT("ICQ"));                
+               
+               } else if (strIMType == wxT("skype")){
+               
+                       cmbIMType->SetValue(wxT("Skype"));
+               
+               } else if (strIMType == wxT("xmpp")){
+               
+                       cmbIMType->SetValue(wxT("XMPP"));                       
+               
+               } else if (strIMType == wxT("yahoo")){
+               
+                       cmbIMType->SetValue(wxT("Yahoo"));
+               
+               } else {
+               
+                       cmbIMType->SetValue(strIMType);
+               
+               }
+               
+               // Setup the username.
+               
+               txtUsername->SetValue(strIMUser);
+               
+               // Setup the priority.
+               
+               intiter = IMListPrefPtr->find(IMListIndex);
+               
+               if (intiter->first == IMListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }
+               
+       }
+       
+       EditSectionType = SectType;     
+       
+}
+
+void frmContactEditorIM::SetupPointers( std::map<int, wxString> *IMList,
+       std::map<int, wxString> *IMListAltID,
+       std::map<int, wxString> *IMListPID,
+       std::map<int, wxString> *IMListType,
+       std::map<int, wxString> *IMListTokens,
+       std::map<int, wxString> *IMListMediatype,
+       std::map<int, int> *IMListPref,
+       wxListCtrl *IMListCtrl,
+       int IMIndex )
+{
+
+       IMListPtr = IMList;
+       IMListAltIDPtr = IMListAltID;
+       IMListPIDPtr = IMListPID;
+       IMListTypePtr = IMListType;
+       IMListTokensPtr = IMListTokens;
+       IMListMediatypePtr = IMListMediatype;
+       IMListPrefPtr = IMListPref;
+       IMListCtrlPtr = IMListCtrl;
+       IMListIndex = IMIndex;
+
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorIM.h b/source/contacteditor/frmContactEditorIM.h
new file mode 100644 (file)
index 0000000..ae96620
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef __frmContactEditorIM__
+#define __frmContactEditorIM__
+
+/**
+@file
+Subclass of frmContactEditorIMADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorIMADT */
+class frmContactEditorIM : public frmContactEditorIMADT
+{
+       protected:
+               // Handlers for frmContactEditorIMADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorIM( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers( std::map<int, wxString> *IMList,
+                       std::map<int, wxString> *IMListAltID,
+                       std::map<int, wxString> *IMListPID,
+                       std::map<int, wxString> *IMListType,
+                       std::map<int, wxString> *IMListTokens,
+                       std::map<int, wxString> *IMListMediatype,
+                       std::map<int, int> *IMListPref,
+                       wxListCtrl *AddressListCtrl,
+                       int AddressIndex );
+       //// end generated class members
+       
+       private:
+               bool EditorMode;
+               std::map<int, wxString> *IMListPtr;
+               std::map<int, wxString> *IMListAltIDPtr;
+               std::map<int, wxString> *IMListPIDPtr;
+               std::map<int, wxString> *IMListTypePtr;
+               std::map<int, wxString> *IMListTokensPtr;
+               std::map<int, wxString> *IMListMediatypePtr;
+               std::map<int, int> *IMListPrefPtr;      
+               wxListCtrl *IMListCtrlPtr;
+               int IMListIndex;
+               SectionType EditSectionType;    
+       
+};
+
+#endif // __frmContactEditorIM__
diff --git a/source/contacteditor/frmContactEditorKey.cpp b/source/contacteditor/frmContactEditorKey.cpp
new file mode 100644 (file)
index 0000000..7234bbe
--- /dev/null
@@ -0,0 +1,469 @@
+#include "frmContactEditorKey.h"
+#include <wx/tokenzr.h>
+#include "../common/textprocessing.h"
+#include "../common/base64.h"
+
+frmContactEditorKey::frmContactEditorKey( wxWindow* parent )
+:
+frmContactEditorKeyADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+       
+       // Setup the control boxes and hide tabs unless they are
+       // needed.
+       
+       tabURL->Hide();
+       tabKey->Hide();
+       
+       cmbKeyMainType->Append(_("URL"));
+       cmbKeyMainType->Append(_("Key"));
+       
+       cmbType->Append(_("Home"));
+       cmbType->Append(_("Work"));
+       
+       cmbURL->Append(_("PGP Key"));
+       
+       cmbKeyType->Append(_("PGP Key"));
+
+}
+
+void frmContactEditorKey::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorKey::SetEditorMode(bool EditMode)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Key"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Key"));
+               
+               std::map<int,bool>::iterator booliter;
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               bool boolKeyData = FALSE;       
+               
+               // Get the key data type.
+               
+               booliter = KeyListKeyTypePtr->find(KeyListIndex);
+               
+               if (booliter->first == KeyListIndex){
+               
+                       boolKeyData = booliter->second;
+               
+               }
+               
+               // Get the data depending on key data type.             
+               
+               if (boolKeyData == FALSE){
+               
+                       // Setup the URL.
+               
+                       cmbKeyMainType->SetSelection(0);
+                       
+                       striter = KeyListPtr->find(KeyListIndex);
+                       
+                       if (striter->first == KeyListIndex){
+                       
+                               strValue = striter->second;
+                       
+                       }
+                       
+                       txtAddress->ChangeValue(strValue);
+                       strValue.Clear();
+                       
+                       striter = KeyListDataTypePtr->find(KeyListIndex);
+                       
+                       if (striter->first == KeyListIndex){
+                       
+                               strValue = striter->second;
+                       
+                       }                       
+                       
+                       cmbURL->SetValue(strValue);
+               
+               } else if (boolKeyData == TRUE){
+               
+                       // Setup the key.
+               
+                       cmbKeyMainType->SetSelection(1);
+                       std::string base64dec;
+                       
+                       // Decode the base64 data.
+                       
+                       striter = KeyListPtr->find(KeyListIndex);
+                       
+                       if (striter->first == KeyListIndex){
+                       
+                               strValue = striter->second;
+                       
+                       }
+                       
+                       std::string base64enc = std::string(strValue.mb_str());
+                       base64dec = base64_decode(base64enc);
+                       
+                       strValue.Clear();
+                       wxString strValue(base64dec.c_str(), wxConvUTF8);
+                       
+                       txtKeyData->SetValue(strValue);         
+                       
+                       // Get the key data type.
+                       
+                       strValue.Clear();
+                       
+                       striter = KeyListDataTypePtr->find(KeyListIndex);
+                       
+                       if (striter->first == KeyListIndex){
+                       
+                               strValue = striter->second;
+                       
+                       }                       
+                       
+                       cmbKeyType->SetValue(strValue);                         
+               
+               }
+               
+               ProcessKeyType();
+               
+               // Get the type.
+               
+               striter = KeyListTypePtr->find(KeyListIndex);   
+               
+               if (striter->first == KeyListIndex){
+               
+                       strValue = striter->second;
+               
+               }               
+               
+               if (strValue == wxT("home")){
+               
+                       cmbType->SetSelection(0);
+               
+               } else if (strValue == wxT("work")){
+               
+                       cmbType->SetSelection(1);       
+               
+               } else {
+               
+                       //cmbType->SetSelection(-1);
+               
+               }
+               
+               // Get the key priority.
+               
+               intiter = KeyListPrefPtr->find(KeyListIndex);
+               
+               if (intiter->first == KeyListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }
+               
+       }
+               
+}
+
+void frmContactEditorKey::ProcessAction( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+       int intKeyType = 0;
+       
+       intKeyType = cmbKeyMainType->GetCurrentSelection();
+       
+       if (intKeyType == -1){
+       
+               // No option selected so do nothing.
+       
+               return;
+       
+       }
+       
+       if (EditorMode == FALSE){
+
+               wxString strValue;
+               wxListItem coldata;             
+               
+               coldata.SetId(KeyListIndex);
+               coldata.SetData(KeyListIndex);
+               ListCtrlIndex = KeyListCtrlPtr->InsertItem(coldata);            
+               
+               // Get Key data.
+               
+               if (intKeyType == 0){
+               
+                       // URL is text.
+                                       
+                       KeyListPtr->insert(std::make_pair(KeyListIndex, txtAddress->GetValue()));
+
+                       coldata.SetText(txtAddress->GetValue());
+                       KeyListCtrlPtr->SetItem(ListCtrlIndex, 0, strValue);
+                       KeyListKeyTypePtr->insert(std::make_pair(KeyListIndex, FALSE));
+               
+               } else if (intKeyType == 1){
+               
+                       // Encode the data in the text to base64.
+                       
+                       wxString wxSb64orig = txtKeyData->GetValue();
+                       std::string base64new = std::string(wxSb64orig.mb_str());
+                       std::string base64enc = base64_encode(reinterpret_cast<const unsigned char*>(base64new.c_str()), base64new.length());
+                       wxString wxSb64key(base64enc.c_str(), wxConvUTF8);
+                       
+                       KeyListPtr->insert(std::make_pair(KeyListIndex, wxSb64key));
+                       KeyListDataTypePtr->insert(std::make_pair(KeyListIndex, cmbKeyType->GetValue()));
+                       KeyListCtrlPtr->SetItem(ListCtrlIndex, 0, _("PGP Key"));
+                       KeyListKeyTypePtr->insert(std::make_pair(KeyListIndex, TRUE));                  
+               
+               }
+               
+               // Get Key type.
+               
+               strValue.Clear();
+               strValue = cmbType->GetString(cmbType->GetSelection());
+
+               if (strValue == _("Home")) {
+               
+                       KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("home")));
+                       KeyListCtrlPtr->SetItem(ListCtrlIndex, 1, strValue);
+               
+               } else if (strValue == _("Work")) {
+               
+                       KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("work")));
+                       KeyListCtrlPtr->SetItem(ListCtrlIndex, 1, strValue);                    
+               
+               } else {
+               
+                       KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("")));                  
+               
+               }
+               
+               // Get Key priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       KeyListPrefPtr->insert(std::make_pair(KeyListIndex, sliPriority->GetValue()));
+                       KeyListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));                        
+               
+               } else {
+               
+                       KeyListPrefPtr->insert(std::make_pair(KeyListIndex, 0));
+               
+               }
+               
+               if (chkUsePref->IsChecked()){
+               
+               }
+               
+               this->Close();
+               
+       } else if (EditorMode == TRUE){
+
+               long longSelected = -1; 
+               wxString strValue;              
+               
+               longSelected = KeyListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               // Update Key data.             
+               
+               if (intKeyType == 0){
+               
+                       // URL is text.
+                                       
+                       KeyListPtr->erase(KeyListIndex);
+                       KeyListPtr->insert(std::make_pair(KeyListIndex, txtAddress->GetValue()));
+
+                       KeyListCtrlPtr->SetItem(longSelected, 0, strValue);
+                       KeyListKeyTypePtr->erase(KeyListIndex);                 
+                       KeyListKeyTypePtr->insert(std::make_pair(KeyListIndex, FALSE));
+               
+               } else if (intKeyType == 1){
+               
+                       // Encode the data in the text to base64.
+                       
+                       wxString wxSb64orig = txtKeyData->GetValue();
+                       std::string base64new = std::string(wxSb64orig.mb_str());
+                       std::string base64enc = base64_encode(reinterpret_cast<const unsigned char*>(base64new.c_str()), base64new.length());
+                       wxString wxSb64key(base64enc.c_str(), wxConvUTF8);
+                       
+                       KeyListPtr->erase(KeyListIndex);                        
+                       KeyListPtr->insert(std::make_pair(KeyListIndex, wxSb64key));
+                       
+                       KeyListDataTypePtr->erase(KeyListIndex);
+                       KeyListDataTypePtr->insert(std::make_pair(KeyListIndex, cmbKeyType->GetValue()));
+                       
+                       KeyListCtrlPtr->SetItem(longSelected, 0, _("PGP Key"));
+                       
+                       KeyListKeyTypePtr->erase(KeyListIndex);
+                       KeyListKeyTypePtr->insert(std::make_pair(KeyListIndex, TRUE));                  
+               
+               }
+               
+               // Update Key type.
+               
+               strValue.Clear();
+               strValue = cmbType->GetString(cmbType->GetSelection());
+
+               KeyListTypePtr->erase(KeyListIndex);
+
+               if (strValue == _("Home")) {
+               
+                       KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("home")));
+                       KeyListCtrlPtr->SetItem(longSelected, 1, strValue);
+               
+               } else if (strValue == _("Work")) {
+               
+                       KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("work")));
+                       KeyListCtrlPtr->SetItem(longSelected, 1, strValue);                     
+               
+               } else {
+               
+                       KeyListTypePtr->insert(std::make_pair(KeyListIndex, wxT("")));                  
+               
+               }
+               
+               // Update the key priority.
+               
+               KeyListPrefPtr->erase(KeyListIndex);            
+               
+               if (chkUsePref->IsChecked()){
+               
+                       KeyListPrefPtr->insert(std::make_pair(KeyListIndex, sliPriority->GetValue()));
+                       KeyListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       KeyListPrefPtr->insert(std::make_pair(KeyListIndex, 0));
+               
+               }
+               
+               this->Close();  
+       
+       }
+}
+
+void frmContactEditorKey::ProcessKeyType( wxCommandEvent& event )
+{
+
+       int intKeyType = 0;
+       
+       intKeyType = cmbKeyMainType->GetCurrentSelection();
+       
+       if (intKeyType == 0){
+       
+               tabURL->Show();
+               tabKey->Hide();
+       
+       } else if (intKeyType == 1){
+       
+               tabURL->Hide();
+               tabKey->Show();
+       
+       }
+
+}
+
+void frmContactEditorKey::ProcessKeyType()
+{
+
+       int intKeyType = 0;
+       
+       intKeyType = cmbKeyMainType->GetCurrentSelection();
+       
+       if (intKeyType == 0){
+       
+               tabURL->Show();
+               tabKey->Hide();
+       
+       } else if (intKeyType == 1){
+       
+               tabURL->Hide();
+               tabKey->Show();
+       
+       }
+
+}
+
+void frmContactEditorKey::ConvertURLType( wxCommandEvent& event )
+{
+
+       wxString strValue;
+
+       strValue = cmbURL->GetString(cmbURL->GetCurrentSelection());
+       
+       if (strValue == _("PGP Key")){
+       
+               cmbURL->SetValue(wxT("application/pgp-keys"));
+       
+       }
+
+}
+
+void frmContactEditorKey::ConvertKeyType( wxCommandEvent& event )
+{
+
+       wxString strValue;
+
+       strValue = cmbKeyType->GetString(cmbKeyType->GetCurrentSelection());
+       
+       if (strValue == _("PGP Key")){
+       
+               cmbKeyType->SetValue(wxT("application/pgp-keys"));
+       
+       }
+
+}
+
+void frmContactEditorKey::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorKey::SetupPointers(std::map<int, wxString> *KeyList,
+       std::map<int, wxString> *KeyListAltID,
+       std::map<int, wxString> *KeyListPID,
+       std::map<int, bool> *KeyListKeyType,    
+       std::map<int, wxString> *KeyListDataType,       
+       std::map<int, wxString> *KeyListType,
+       std::map<int, wxString> *KeyListTokens,
+       std::map<int, int> *KeyListPref,
+       wxListCtrl *KeyListCtrl,
+       int KeyIndex )
+{
+
+       KeyListPtr = KeyList;
+       KeyListAltIDPtr = KeyListAltID;
+       KeyListPIDPtr = KeyListPID;
+       KeyListKeyTypePtr = KeyListKeyType;     
+       KeyListDataTypePtr = KeyListDataType;
+       KeyListTypePtr = KeyListType;
+       KeyListTokensPtr = KeyListTokens;
+       KeyListPrefPtr = KeyListPref;
+       KeyListCtrlPtr = KeyListCtrl;
+       KeyListIndex = KeyIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorKey.h b/source/contacteditor/frmContactEditorKey.h
new file mode 100644 (file)
index 0000000..7999e55
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef __frmContactEditorKey__
+#define __frmContactEditorKey__
+
+/**
+@file
+Subclass of frmContactEditorKeyADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorKeyADT */
+class frmContactEditorKey : public frmContactEditorKeyADT
+{
+       protected:
+               // Handlers for frmContactEditorKeyADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+               void ProcessKeyType( wxCommandEvent& event );
+               void ProcessKeyType();          
+               void ConvertURLType( wxCommandEvent& event );
+               void ConvertKeyType( wxCommandEvent& event );           
+       public:
+               /** Constructor */
+               frmContactEditorKey( wxWindow* parent );
+               void SetEditorMode(bool EditMode);              
+               void SetupPointers(std::map<int, wxString> *KeyList,
+                       std::map<int, wxString> *KeyListAltID,
+                       std::map<int, wxString> *KeyListPID,
+                       std::map<int, bool>     *KeyListKeyType,                        
+                       std::map<int, wxString> *KeyListDataType,                       
+                       std::map<int, wxString> *KeyListType,
+                       std::map<int, wxString> *KeyListTokens,
+                       std::map<int, int> *KeyListPref,
+                       wxListCtrl *KeyListCtrl,
+                       int KeyIndex );                 
+       //// end generated class members
+       
+               bool EditorMode;
+               std::map<int, wxString> *KeyListPtr;
+               std::map<int, wxString> *KeyListAltIDPtr;
+               std::map<int, wxString> *KeyListPIDPtr;
+               std::map<int, bool>     *KeyListKeyTypePtr;
+               std::map<int, wxString> *KeyListDataTypePtr;            
+               std::map<int, wxString> *KeyListTypePtr;
+               std::map<int, wxString> *KeyListTokensPtr;
+               std::map<int, int> *KeyListPrefPtr;
+               wxListCtrl *KeyListCtrlPtr;
+               int KeyListIndex;
+               SectionType EditSectionType;
+               
+};
+
+#endif // __frmContactEditorKey__
diff --git a/source/contacteditor/frmContactEditorLanguages.cpp b/source/contacteditor/frmContactEditorLanguages.cpp
new file mode 100644 (file)
index 0000000..06936f5
--- /dev/null
@@ -0,0 +1,211 @@
+#include "frmContactEditorLanguages.h"
+#include "../common/textprocessing.h"
+#include <map>
+
+frmContactEditorLanguages::frmContactEditorLanguages( wxWindow* parent )
+:
+frmContactEditorLanguagesADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorLanguages::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorLanguages::SetEditorMode(bool EditMode, SectionType SectType)
+{
+
+       // Set the editor mode for adding or editing an email address.
+
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Language"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Language"));
+       
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;
+               wxString strValue;
+               
+               // Load the data into the form.
+               
+               striter = LanguageListPtr->find(LanguageListIndex);
+                
+               if (striter->first == LanguageListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtLanguage->SetValue(strValue);
+               
+               // Setup the Slider.
+               
+               intiter = LanguageListPrefPtr->find(LanguageListIndex);
+               
+               if (intiter->first == LanguageListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+       
+       EditSectionType = SectType;
+}
+
+void frmContactEditorLanguages::ProcessAction( wxCommandEvent& event )
+{
+
+       long ListCtrlIndex;
+
+       if (EditorMode == FALSE){
+       
+               // Add the language to the list.
+
+               wxString strValue;
+               
+               // Add language.
+               
+               LanguageListPtr->insert(std::make_pair(LanguageListIndex, txtLanguage->GetValue()));
+               
+               // Add Email type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       LanguageListTypePtr->insert(std::make_pair(LanguageListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       LanguageListTypePtr->insert(std::make_pair(LanguageListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       LanguageListTypePtr->insert(std::make_pair(LanguageListIndex, wxT("work")));
+               
+               }
+               
+               // Add Language priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       LanguageListPrefPtr->insert(std::make_pair(LanguageListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       LanguageListPrefPtr->insert(std::make_pair(LanguageListIndex, 0));              
+               
+               }               
+               
+               // Add the data to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(LanguageListIndex);
+               coldata.SetData(LanguageListIndex);             
+               coldata.SetText(txtLanguage->GetValue());
+               ListCtrlIndex = LanguageListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       LanguageListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();          
+       
+       } else if (EditorMode == TRUE){
+       
+               // Edit the language.
+               
+               wxString strAddress;
+               wxString strValue;
+               long longSelected = -1;
+
+               LanguageListPtr->erase(LanguageListIndex);
+               LanguageListPtr->insert(std::make_pair(LanguageListIndex, txtLanguage->GetValue()));
+               
+               LanguageListPrefPtr->erase(LanguageListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       LanguageListPrefPtr->insert(std::make_pair(LanguageListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       LanguageListPrefPtr->insert(std::make_pair(LanguageListIndex, 0));              
+               
+               }
+               
+               longSelected = LanguageListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               LanguageListCtrlPtr->SetItem(longSelected, 0, txtLanguage->GetValue());         
+               
+               if (chkUsePref->IsChecked()){
+               
+                       LanguageListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       LanguageListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }       
+                       
+               this->Close();
+       
+       }
+
+}
+
+void frmContactEditorLanguages::CloseWindow( wxCommandEvent& event )
+{
+
+       // Close the window.
+       
+       this->Close();
+
+}
+
+void frmContactEditorLanguages::SetupPointers(std::map<int, wxString> *LanguageList,
+       std::map<int, wxString> *LanguageListAltID,
+       std::map<int, wxString> *LanguageListPID,
+       std::map<int, wxString> *LanguageListType,
+       std::map<int, wxString> *LanguageListTokens,
+       std::map<int, int> *LanguageListPref,
+       wxListCtrl *LanguageListCtrl,
+       int LanguageIndex )
+{
+
+       // Setup the pointers so that the data can be processed without
+       // duplication.
+
+       LanguageListPtr = LanguageList;
+       LanguageListAltIDPtr = LanguageListAltID;
+       LanguageListPIDPtr = LanguageListPID;
+       LanguageListTypePtr = LanguageListType;
+       LanguageListTokensPtr = LanguageListTokens;
+       LanguageListPrefPtr = LanguageListPref;
+       LanguageListCtrlPtr = LanguageListCtrl;
+       LanguageListIndex = LanguageIndex;
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorLanguages.h b/source/contacteditor/frmContactEditorLanguages.h
new file mode 100644 (file)
index 0000000..9ba32aa
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef __frmContactEditorLanguages__
+#define __frmContactEditorLanguages__
+#include <map>
+
+/**
+@file
+Subclass of frmContactEditorLanguagesADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+
+//// end generated include
+
+#include "../enums.h"
+
+/** Implementing frmContactEditorLanguagesADT */
+class frmContactEditorLanguages : public frmContactEditorLanguagesADT
+{
+       protected:
+               // Handlers for frmContactEditorLanguagesADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorLanguages( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *LanguageList,
+                       std::map<int, wxString> *LanguageListAltID,
+                       std::map<int, wxString> *LanguageListPID,
+                       std::map<int, wxString> *LanguageListType,
+                       std::map<int, wxString> *LanguageListTokens,
+                       std::map<int, int> *LanguageListPref,
+                       wxListCtrl *LanguageListCtrl,
+                       int LanguageIndex );
+       //// end generated class members
+       private:
+               bool EditorMode;        
+               std::map<int, wxString> *LanguageListPtr;
+               std::map<int, wxString> *LanguageListAltIDPtr;
+               std::map<int, wxString> *LanguageListPIDPtr;
+               std::map<int, wxString> *LanguageListTypePtr;
+               std::map<int, wxString> *LanguageListTokensPtr;
+               std::map<int, int> *LanguageListPrefPtr;
+               wxListCtrl *LanguageListCtrlPtr;
+               int LanguageListIndex;
+               SectionType EditSectionType;    
+
+};
+
+#endif // __frmContactEditorLanguages__
diff --git a/source/contacteditor/frmContactEditorNickname.cpp b/source/contacteditor/frmContactEditorNickname.cpp
new file mode 100644 (file)
index 0000000..5261969
--- /dev/null
@@ -0,0 +1,231 @@
+#include "frmContactEditorNickname.h"
+#include "../common/textprocessing.h"
+
+frmContactEditorNickname::frmContactEditorNickname( wxWindow* parent )
+:
+frmContactEditorNicknameADT( parent )
+{
+
+}
+
+void frmContactEditorNickname::InitAddressEditor( wxInitDialogEvent& event )
+{
+       // Do nothing with this subroutine for the time being.
+}
+
+void frmContactEditorNickname::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorNickname::ProcessData( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+
+       if (EditorMode == FALSE){
+       
+               // Add the language to the list.
+
+               wxString strValue;
+               
+               // Add nickname.
+               
+               NicknamesListPtr->insert(std::make_pair(NicknamesListIndex, txtNickname->GetValue()));
+               
+               // Add nickname type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       NicknamesListTypePtr->insert(std::make_pair(NicknamesListIndex, wxT("work")));
+               
+               }
+               
+               // Add nickname language.
+               
+               NicknamesListLanguagePtr->insert(std::make_pair(NicknamesListIndex, cmbLanguage->GetValue()));
+               
+               // Add nickname priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, 0));            
+               
+               }               
+               
+               // Add the data to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(NicknamesListIndex);
+               coldata.SetData(NicknamesListIndex);            
+               coldata.SetText(txtNickname->GetValue());
+               ListCtrlIndex = NicknamesListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       NicknamesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();          
+       
+       } else if (EditorMode == TRUE){
+       
+               // Edit the language.
+               
+               wxString strAddress;
+               wxString strValue;
+               long longSelected = -1;
+
+               NicknamesListPtr->erase(NicknamesListIndex);
+               NicknamesListPtr->insert(std::make_pair(NicknamesListIndex, txtNickname->GetValue()));
+               
+               NicknamesListPrefPtr->erase(NicknamesListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       NicknamesListPrefPtr->insert(std::make_pair(NicknamesListIndex, 0));            
+               
+               }
+               
+               NicknamesListLanguagePtr->erase(NicknamesListIndex);
+               NicknamesListLanguagePtr->insert(std::make_pair(NicknamesListIndex, cmbLanguage->GetValue()));
+               
+               longSelected = NicknamesListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               NicknamesListCtrlPtr->SetItem(longSelected, 0, txtNickname->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       NicknamesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       NicknamesListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }       
+                       
+               this->Close();
+       
+       }
+
+}
+
+void frmContactEditorNickname::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorNickname::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Nickname"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Nickname"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Load the data into the form. Get the website.
+               
+               striter = NicknamesListPtr->find(NicknamesListIndex);
+                
+               if (striter->first == NicknamesListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtNickname->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               striter = NicknamesListLanguagePtr->find(NicknamesListIndex);
+                
+               if (striter->first == NicknamesListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               cmbLanguage->SetValue(strValue);
+               strValue.Clear();
+               
+               // Get the website priority.
+               
+               intiter = NicknamesListPrefPtr->find(NicknamesListIndex);
+               
+               if (intiter->first == NicknamesListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+       
+       EditSectionType = SectType;     
+               
+}
+
+void frmContactEditorNickname::SetupPointers(std::map<int, wxString> *NicknamesList,           
+       std::map<int, wxString> *NicknamesListAltID,
+       std::map<int, wxString> *NicknamesListPID,
+       std::map<int, wxString> *NicknamesListType,
+       std::map<int, wxString> *NicknamesListLanguage,
+       std::map<int, wxString> *NicknamesListTokens,
+       std::map<int, int> *NicknamesListPref,
+       wxListCtrl *NicknamesListCtrl,
+       int NicknamesIndex )
+{
+
+       NicknamesListPtr = NicknamesList;
+       NicknamesListAltIDPtr = NicknamesListAltID;
+       NicknamesListPIDPtr = NicknamesListPID;
+       NicknamesListTypePtr = NicknamesListType;
+       NicknamesListLanguagePtr = NicknamesListLanguage;
+       NicknamesListTokensPtr = NicknamesListTokens;
+       NicknamesListPrefPtr = NicknamesListPref;
+       NicknamesListCtrlPtr = NicknamesListCtrl;
+       NicknamesListIndex = NicknamesIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorNickname.h b/source/contacteditor/frmContactEditorNickname.h
new file mode 100644 (file)
index 0000000..005d97d
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef __frmContactEditorNickname__
+#define __frmContactEditorNickname__
+
+/**
+@file
+Subclass of frmContactEditorNicknameADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include <string>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorNicknameADT */
+class frmContactEditorNickname : public frmContactEditorNicknameADT
+{
+       protected:
+               // Handlers for frmContactEditorNicknameADT events.
+               void InitAddressEditor( wxInitDialogEvent& event );
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessData( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorNickname( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *NicknamesList,              
+                       std::map<int, wxString> *NicknamesListAltID,
+                       std::map<int, wxString> *NicknamesListPID,
+                       std::map<int, wxString> *NicknamesListType,
+                       std::map<int, wxString> *NicknamesListLanguage,
+                       std::map<int, wxString> *NicknamesListTokens,
+                       std::map<int, int> *NicknamesListPref,
+                       wxListCtrl *NicknamesListCtrl,
+                       int NicknamesIndex );
+       //// end generated class members
+       private: 
+               bool EditorMode;
+               std::map<int, wxString> *NicknamesListPtr;
+               std::map<int, wxString> *NicknamesListAltIDPtr;
+               std::map<int, wxString> *NicknamesListPIDPtr;
+               std::map<int, wxString> *NicknamesListTypePtr;
+               std::map<int, wxString> *NicknamesListLanguagePtr;              
+               std::map<int, wxString> *NicknamesListTokensPtr;
+               std::map<int, int> *NicknamesListPrefPtr;
+               wxListCtrl *NicknamesListCtrlPtr;
+               int NicknamesListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorNickname__
diff --git a/source/contacteditor/frmContactEditorNotes.cpp b/source/contacteditor/frmContactEditorNotes.cpp
new file mode 100644 (file)
index 0000000..f4aaef4
--- /dev/null
@@ -0,0 +1,258 @@
+#include "frmContactEditorNotes.h"
+#include "../common/textprocessing.h"
+#include <wx/tokenzr.h>
+
+frmContactEditorNotes::frmContactEditorNotes( wxWindow* parent )
+:
+frmContactEditorNotesADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorNotes::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorNotes::ProcessAction( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+       
+               // Add the note to the list.
+       
+               wxString strAddress;
+               wxString strValue;
+               
+               // Add note.
+               
+               NotesListPtr->insert(std::make_pair(NotesListIndex, txtNote->GetValue()));
+               
+               // Add note type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       NotesListTypePtr->insert(std::make_pair(NotesListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       NotesListTypePtr->insert(std::make_pair(NotesListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       NotesListTypePtr->insert(std::make_pair(NotesListIndex, wxT("work")));
+               
+               }
+               
+               // Add note priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       NotesListPrefPtr->insert(std::make_pair(NotesListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       NotesListPrefPtr->insert(std::make_pair(NotesListIndex, 0));            
+               
+               }               
+               
+               // Add note language.
+               
+               strValue.Clear();
+               
+               if (!strValue.IsEmpty()){
+               
+                       NotesListLangPtr->insert(std::make_pair(NotesListIndex, cmbLanguage->GetValue()));              
+               
+               } else {
+               
+                       NotesListLangPtr->insert(std::make_pair(NotesListIndex, wxT("")));
+               
+               }
+               
+               // Add the data to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(NotesListIndex);
+               coldata.SetData(NotesListIndex);                
+               coldata.SetText(txtNote->GetValue());
+               ListCtrlIndex = NotesListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       NotesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+       
+       } else if (EditorMode == TRUE){
+       
+               // Edit the note.
+               
+               wxString strAddress;
+               wxString strValue;
+               long longSelected = -1;
+
+               // Update the note.
+
+               NotesListPtr->erase(NotesListIndex);
+               NotesListPtr->insert(std::make_pair(NotesListIndex, txtNote->GetValue()));
+               
+               // Update the note preference.
+               
+               NotesListPrefPtr->erase(NotesListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       NotesListPrefPtr->insert(std::make_pair(NotesListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       NotesListPrefPtr->insert(std::make_pair(NotesListIndex, 0));            
+               
+               }
+               
+               // Update the language.
+               
+               strValue.Clear();
+               
+               NotesListLangPtr->erase(NotesListIndex);
+               
+               if (!strValue.IsEmpty()){
+               
+                       NotesListLangPtr->insert(std::make_pair(NotesListIndex, cmbLanguage->GetValue()));              
+               
+               } else {
+               
+                       NotesListLangPtr->insert(std::make_pair(NotesListIndex, wxT("")));
+               
+               }               
+               
+               // Update the form.
+               
+               longSelected = NotesListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               NotesListCtrlPtr->SetItem(longSelected, 0, txtNote->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       NotesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       NotesListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }       
+                       
+               this->Close();  
+       
+       }       
+       
+}
+
+void frmContactEditorNotes::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Note"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Note"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;              
+               
+               // Get the note.
+               
+               striter = NotesListPtr->find(NotesListIndex);
+                
+               if (striter->first == NotesListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtNote->SetValue(strValue);
+               
+               // Get the language.
+               
+               striter = NotesListLangPtr->find(NotesListIndex);
+               
+               if (striter->first == NotesListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               cmbLanguage->SetValue(strValue);
+               
+               // Get the priority.
+               
+               intiter = NotesListPrefPtr->find(NotesListIndex);
+               
+               if (intiter->first == NotesListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }
+               
+       }
+       
+       EditSectionType = SectType;     
+               
+}
+
+void frmContactEditorNotes::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+
+void frmContactEditorNotes::SetupPointers(std::map<int, wxString> *NotesList,
+       std::map<int, wxString> *NotesListLang,
+       std::map<int, wxString> *NotesListAltID,
+       std::map<int, wxString> *NotesListPID,
+       std::map<int, wxString> *NotesListType,
+       std::map<int, wxString> *NotesListTokens,
+       std::map<int, int> *NotesListPref,
+       wxListCtrl *NotesListCtrl,
+       int NotesIndex )
+{
+
+       NotesListPtr = NotesList;
+       NotesListLangPtr = NotesListLang;
+       NotesListAltIDPtr = NotesListAltID;
+       NotesListPIDPtr = NotesListPID;
+       NotesListTypePtr = NotesListType;
+       NotesListTokensPtr = NotesListTokens;
+       NotesListPrefPtr = NotesListPref;
+       NotesListCtrlPtr = NotesListCtrl;
+       NotesListIndex = NotesIndex;
+
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorNotes.h b/source/contacteditor/frmContactEditorNotes.h
new file mode 100644 (file)
index 0000000..7e64771
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef __frmContactEditorNotes__
+#define __frmContactEditorNotes__
+
+/**
+@file
+Subclass of frmContactEditorNotesADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorNotesADT */
+class frmContactEditorNotes : public frmContactEditorNotesADT
+{
+       protected:
+               // Handlers for frmContactEditorNotesADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorNotes( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *NotesList,
+                       std::map<int, wxString> *NotesListLang,
+                       std::map<int, wxString> *NotesListAltID,
+                       std::map<int, wxString> *NotesListPID,
+                       std::map<int, wxString> *NotesListType,
+                       std::map<int, wxString> *NotesListTokens,
+                       std::map<int, int> *NotesListPref,
+                       wxListCtrl *NotesListCtrl,
+                       int NotesIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, wxString> *NotesListPtr;
+               std::map<int, wxString> *NotesListLangPtr;
+               std::map<int, wxString> *NotesListAltIDPtr;
+               std::map<int, wxString> *NotesListPIDPtr;
+               std::map<int, wxString> *NotesListTypePtr;
+               std::map<int, wxString> *NotesListTokensPtr;
+               std::map<int, int> *NotesListPrefPtr;
+               wxListCtrl *NotesListCtrlPtr;
+               int NotesListIndex;
+               SectionType EditSectionType;    
+};
+
+#endif // __frmContactEditorNotes__
diff --git a/source/contacteditor/frmContactEditorOrganisations.cpp b/source/contacteditor/frmContactEditorOrganisations.cpp
new file mode 100644 (file)
index 0000000..ccfb509
--- /dev/null
@@ -0,0 +1,278 @@
+#include "frmContactEditorOrganisations.h"
+#include <wx/tokenzr.h>
+#include "../common/textprocessing.h"
+
+frmContactEditorOrganisations::frmContactEditorOrganisations( wxWindow* parent )
+:
+frmContactEditorOrganisationsADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorOrganisations::UpdateSortAs( wxCommandEvent& event )
+{
+
+       // Clear out the options for the combo box.
+       
+       cmbSortAs->Clear();
+       cmbSortAs->Append(txtOrganisation->GetValue()); 
+
+       // See if there are more than one word, if not leave drop down
+       // with the default organisation name.
+       
+       wxStringTokenizer tknOrg(txtOrganisation->GetValue(), wxT(" "));
+       wxString strArrange;
+       wxString strFirst;
+       wxString strArrFinal;
+       
+       if (tknOrg.CountTokens() > 1){
+       
+               strFirst = tknOrg.GetNextToken();
+               
+               while (tknOrg.HasMoreTokens()){
+               
+                       strArrange.Append(tknOrg.GetNextToken());
+                       
+                       if (tknOrg.CountTokens() != 0){
+                               strArrange.Append(wxT(" "));
+                       }
+               
+               }
+       
+               strArrFinal.Append(strArrange);
+               strArrFinal.Append(wxT(", "));
+               strArrFinal.Append(strFirst);
+               cmbSortAs->Append(strArrFinal);
+       
+       }
+
+}
+
+void frmContactEditorOrganisations::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorOrganisations::ProcessAction( wxCommandEvent& event )
+{
+
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+
+               wxString strValue;
+       
+               // Setup Organisation Name.
+               
+               OrganisationListPtr->insert(std::make_pair(OrganisationListIndex, txtOrganisation->GetValue()));
+
+               // Setup Organisation Type.
+
+               if (EditSectionType == CE_GENERAL){
+               
+                       OrganisationListTypePtr->insert(std::make_pair(OrganisationListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       OrganisationListTypePtr->insert(std::make_pair(OrganisationListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       OrganisationListTypePtr->insert(std::make_pair(OrganisationListIndex, wxT("work")));
+               
+               }
+               
+               // Setup Organisation SortAs.
+               
+               strValue.Clear();
+               OrganisationListSortAsPtr->insert(std::make_pair(OrganisationListIndex, cmbSortAs->GetValue()));
+               
+               // Setup Organisation Priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       OrganisationListPrefPtr->insert(std::make_pair(OrganisationListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       OrganisationListPrefPtr->insert(std::make_pair(OrganisationListIndex, 0));
+               
+               }
+               
+               // Add to form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(OrganisationListIndex);
+               coldata.SetData(OrganisationListIndex);
+               coldata.SetText(txtOrganisation->GetValue());
+               ListCtrlIndex = OrganisationListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       OrganisationListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+               
+       } else if (EditorMode == TRUE) {
+       
+               long longSelected = -1;
+               wxString strValue;      
+       
+               // Update Organisation Name.
+               
+               OrganisationListPtr->erase(OrganisationListIndex);
+               OrganisationListPtr->insert(std::make_pair(OrganisationListIndex, txtOrganisation->GetValue()));
+               
+               // Update Organisation SortAs.
+               
+               strValue.Clear();
+               OrganisationListSortAsPtr->erase(OrganisationListIndex);
+               OrganisationListSortAsPtr->insert(std::make_pair(OrganisationListIndex, cmbSortAs->GetValue()));
+               
+               // Update Organisation Priority.
+               
+               OrganisationListPrefPtr->erase(OrganisationListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       OrganisationListPrefPtr->insert(std::make_pair(OrganisationListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       OrganisationListPrefPtr->insert(std::make_pair(OrganisationListIndex, 0));
+               
+               }
+               
+               // Update form.
+               
+               longSelected = OrganisationListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               OrganisationListCtrlPtr->SetItem(longSelected, 0, txtOrganisation->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       OrganisationListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       OrganisationListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }
+               
+               this->Close();  
+       
+       }
+
+}
+
+void frmContactEditorOrganisations::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Organisation"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Organisation"));               
+               
+               // Load the data into the form.
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;              
+                       
+               // Get the organisation name.
+               
+               striter = OrganisationListPtr->find(OrganisationListIndex);
+                
+               if (striter->first == OrganisationListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtOrganisation->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the organisation sort as.
+               
+               striter = OrganisationListSortAsPtr->find(OrganisationListIndex);
+                
+               if (striter->first == OrganisationListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               cmbSortAs->SetValue(strValue);          
+               
+               // Get the organisation priority.
+               
+               intiter = OrganisationListPrefPtr->find(OrganisationListIndex);         
+               
+               if (intiter->first == OrganisationListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }
+               
+       }
+       
+       EditSectionType = SectType;
+       
+}
+
+void frmContactEditorOrganisations::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorOrganisations::SetupPointers(std::map<int, wxString> *OrganisationList,
+       std::map<int, wxString> *OrganisationListLanguage,
+       std::map<int, wxString> *OrganisationListSortAs,                        
+       std::map<int, wxString> *OrganisationListAltID,
+       std::map<int, wxString> *OrganisationListPID,
+       std::map<int, wxString> *OrganisationListType,
+       std::map<int, wxString> *OrganisationListTokens,
+       std::map<int, int> *OrganisationListPref,
+       wxListCtrl *OrganisationListCtrl,
+       int OrganisationIndex )
+{
+
+       OrganisationListPtr = OrganisationList;
+       OrganisationListLanguagePtr = OrganisationListLanguage;
+       OrganisationListSortAsPtr = OrganisationListSortAs;
+       OrganisationListAltIDPtr = OrganisationListAltID;
+       OrganisationListPIDPtr = OrganisationListPID;
+       OrganisationListTypePtr = OrganisationListType;
+       OrganisationListTokensPtr = OrganisationListTokens;
+       OrganisationListPrefPtr = OrganisationListPref;
+       OrganisationListCtrlPtr = OrganisationListCtrl;
+       OrganisationListIndex = OrganisationIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorOrganisations.h b/source/contacteditor/frmContactEditorOrganisations.h
new file mode 100644 (file)
index 0000000..2e258be
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef __frmContactEditorOrganisations__
+#define __frmContactEditorOrganisations__
+
+/**
+@file
+Subclass of frmContactEditorOrganisationsADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorOrganisationsADT */
+class frmContactEditorOrganisations : public frmContactEditorOrganisationsADT
+{
+       protected:
+               // Handlers for frmContactEditorOrganisationsADT events.
+               void UpdateSortAs( wxCommandEvent& event );
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorOrganisations( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *OrganisationList,
+                       std::map<int, wxString> *OrganisationListLanguage,
+                       std::map<int, wxString> *OrganisationListSortAs,                        
+                       std::map<int, wxString> *OrganisationListAltID,
+                       std::map<int, wxString> *OrganisationListPID,
+                       std::map<int, wxString> *OrganisationListType,
+                       std::map<int, wxString> *OrganisationListTokens,
+                       std::map<int, int> *OrganisationListPref,
+                       wxListCtrl *OrganisationListCtrl,
+                       int OrganisationIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, wxString> *OrganisationListPtr;
+               std::map<int, wxString> *OrganisationListLanguagePtr;
+               std::map<int, wxString> *OrganisationListSortAsPtr;             
+               std::map<int, wxString> *OrganisationListAltIDPtr;
+               std::map<int, wxString> *OrganisationListPIDPtr;
+               std::map<int, wxString> *OrganisationListTypePtr;
+               std::map<int, wxString> *OrganisationListTokensPtr;
+               std::map<int, int> *OrganisationListPrefPtr;
+               wxListCtrl *OrganisationListCtrlPtr;
+               int OrganisationListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorOrganisations__
diff --git a/source/contacteditor/frmContactEditorPicture.cpp b/source/contacteditor/frmContactEditorPicture.cpp
new file mode 100644 (file)
index 0000000..905e3ad
--- /dev/null
@@ -0,0 +1,356 @@
+#include "frmContactEditorPicture.h"
+
+#include <wx/wx.h>
+#include <wx/tokenzr.h>
+#include <wx/icon.h>
+#include <wx/mstream.h>
+#include <wx/fs_mem.h>
+#include <SFML/Audio.hpp>
+
+#include "../common/textprocessing.h"
+#include "../common/base64.h"
+#include "../common/mime.h"
+
+
+frmContactEditorPicture::frmContactEditorPicture( wxWindow* parent )
+:
+frmContactEditorPictureADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+       
+       cmbType->Append(wxT(""));
+       cmbType->Append(_("Home"));
+       cmbType->Append(_("Work"));
+}
+
+void frmContactEditorPicture::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorPicture::ProcessData( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+
+               // Load the file into memory.
+               
+               wxFile PictureFile;
+               wxString wxSPictureFilename;
+               wxString wxSPictureMIMEType;
+               size_t len;
+               std::string b64enc;             
+               
+               wxSPictureFilename = fipPicture->GetPath();
+
+/*             
+#if wxABI_VERSION < 20900
+               if (AudioFile.Open(wxSAudioFilename.c_str(), wxT("rb"))){
+#else
+               if (AudioFile.Open(wxSAudioFilename, wxT("rb"))){
+#endif
+
+*/
+               if (PictureFile.Open(wxSPictureFilename, wxFile::read)){
+                       size_t flen;
+                       len = PictureFile.Length();
+                       
+                       unsigned char* PictureFileData = new unsigned char[len];
+                       flen = PictureFile.Read(PictureFileData, len);                  
+                       
+                       // Check to make sure it is an audio file.
+                       
+                       wxMemoryInputStream istream(PictureFileData, flen);
+                       wxImage photo;                  
+                       
+                       //wxBitmap (bigimgs_contactpersonicon48i, -1);
+                       
+                       //Get MIME data.
+                       
+                       /*const char *MIMEType;
+                       magic_t MagicCookie = magic_open(MAGIC_MIME);                   
+                       magic_setflags(MagicCookie, MAGIC_MIME_TYPE);
+                       
+                       if (!MagicCookie){
+
+                               wxMessageBox(_("An error occured with the support library for getting the picture type."), _("Error opening picture file"), wxICON_ERROR);                      
+                               return;
+                               
+                       }
+                       
+                       if (magic_load(MagicCookie, NULL) != 0) {
+                       
+                               wxMessageBox(_("An error occured whilst determining the picture type."), _("Error opening picture file"), wxICON_ERROR);
+                               return;
+                       
+                       }
+                       
+                       MIMEType = magic_file(MagicCookie, wxSPictureFilename.mb_str());
+                       wxSPictureMIMEType = wxString::FromUTF8(MIMEType);
+                       magic_close(MagicCookie);*/
+                       
+                       wxSPictureMIMEType = GetMIME(wxSPictureFilename);
+                       
+                       if (!photo.LoadFile(istream, wxBITMAP_TYPE_ANY)){
+
+                               wxMessageBox(_("This file is in an picture format that is unsupported or is not a picture file."), _("Error opening picture file"), wxICON_ERROR);
+                               return;                 
+                                                       
+                       
+                       }
+                       
+                       // Covert the file into base64.
+               
+                       b64enc = base64_encode(PictureFileData, (int)len);                      
+                       
+                       delete[] PictureFileData;
+       
+               } else {
+       
+                       wxMessageBox(_("There was an error opening the audio file!"), _("Error opening audio file"), wxICON_ERROR);
+       
+                       return;
+       
+               }               
+
+               PictureListPtr->insert(std::make_pair(PictureListIndex, b64enc));
+
+               wxString strValue;              
+               strValue.Clear();
+               
+               strValue = cmbType->GetString(cmbType->GetSelection());
+
+               // Setup Picture Type.
+
+               if (strValue == _("Home")) {
+               
+                       PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("home")));
+               
+               } else if (strValue == _("Work")) {
+               
+                       PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("work")));
+               
+               } else {
+               
+                       PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("")));
+               
+               }
+               
+               // Setup Organisation Priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       PictureListPrefPtr->insert(std::make_pair(PictureListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       PictureListPrefPtr->insert(std::make_pair(PictureListIndex, 0));
+               
+               }
+               
+               // Setup MIME Type.
+               
+               PictureListPictureTypePtr->insert(std::make_pair(PictureListIndex, wxSPictureMIMEType));
+               
+               // Setup encoding type.
+               
+               PictureListPicEncTypePtr->insert(std::make_pair(PictureListIndex, wxT("base64")));
+               
+               // Add to form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(PictureListIndex);
+               coldata.SetData(PictureListIndex);
+               coldata.SetText(_("Picture"));
+               ListCtrlIndex = PictureListCtrlPtr->InsertItem(coldata);
+               
+               if (strValue == _("Home")) {
+               
+                       PictureListCtrlPtr->SetItem(ListCtrlIndex, 1, _("Home"));
+               
+               } else if (strValue == _("Work")) {
+               
+                       PictureListCtrlPtr->SetItem(ListCtrlIndex, 1, _("Work"));
+               
+               } else {
+               
+
+               
+               }               
+               
+               if (chkUsePref->IsChecked()){
+               
+                       PictureListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+               
+       } else if (EditorMode == TRUE) {
+       
+               // Do not touch the audio file but update the settings
+               // associated with the audio file.
+       
+               long longSelected = -1;
+               wxString strValue;      
+               
+               // Update Picture Type.
+               
+               PictureListTypePtr->erase(PictureListIndex);
+               strValue = cmbType->GetString(cmbType->GetSelection());         
+               
+               if (strValue == _("Home")) {
+               
+                       PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("home")));
+               
+               } else if (strValue == _("Work")) {
+               
+                       PictureListTypePtr->insert(std::make_pair(PictureListIndex, wxT("work")));
+               
+               }               
+               
+               // Update Category Priority.
+               
+               PictureListPrefPtr->erase(PictureListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       PictureListPrefPtr->insert(std::make_pair(PictureListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       PictureListPrefPtr->insert(std::make_pair(PictureListIndex, 0));
+               
+               }
+               
+               // Update form.
+               
+               longSelected = PictureListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               PictureListCtrlPtr->SetItem(longSelected, 0, wxT("Picture"));
+               PictureListCtrlPtr->SetItem(longSelected, 1, strValue);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       PictureListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       PictureListCtrlPtr->SetItem(longSelected, 2, wxT(""));
+               
+               }
+               
+               this->Close();  
+       
+       }
+}
+
+void frmContactEditorPicture::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorPicture::SetEditorMode(bool EditMode)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Picture"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Picture"));
+               fipPicture->Disable();
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Load the data into the form. Get the website.
+               
+               striter = PictureListTypePtr->find(PictureListIndex);
+                
+               if (striter->first == PictureListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               if (strValue == wxT("home")){
+               
+                       cmbType->SetSelection(1);
+               
+               } else if (strValue == wxT("work")){ 
+               
+                       cmbType->SetSelection(2);
+               
+               } else {
+               
+                       cmbType->SetSelection(0);
+               
+               }
+               
+               //strValue.Clear();
+               
+               // Get the website priority.
+               
+               intiter = PictureListPrefPtr->find(PictureListIndex);
+               
+               if (intiter->first == PictureListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+               
+}
+
+void frmContactEditorPicture::SetupPointers(std::map<int, std::string> *PictureList,                   
+       std::map<int, wxString> *PictureListAltID,
+       std::map<int, wxString> *PictureListPID,
+       std::map<int, wxString> *PictureListType,
+       std::map<int, wxString> *PictureListPicEncType, 
+       std::map<int, wxString> *PictureListPictureType,        
+       std::map<int, wxString> *PictureListTokens,
+       std::map<int, wxString> *PictureListMediatype,  
+       std::map<int, int> *PictureListPref,
+       wxListCtrl *PictureListCtrl,
+       int PictureIndex )
+{
+
+       PictureListPtr = PictureList;
+       PictureListAltIDPtr = PictureListAltID;
+       PictureListPIDPtr = PictureListPID;
+       PictureListPicEncTypePtr = PictureListPicEncType;       
+       PictureListPictureTypePtr = PictureListPictureType;
+       PictureListTypePtr = PictureListType;
+       PictureListTokensPtr = PictureListTokens;
+       PictureListMediatypePtr = PictureListMediatype; 
+       PictureListPrefPtr = PictureListPref;
+       PictureListCtrlPtr = PictureListCtrl;
+       PictureListIndex = PictureIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorPicture.h b/source/contacteditor/frmContactEditorPicture.h
new file mode 100644 (file)
index 0000000..930a495
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef __frmContactEditorPicture__
+#define __frmContactEditorPicture__
+
+/**
+@file
+Subclass of frmContactEditorPictureADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include <string>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorPictureADT */
+class frmContactEditorPicture : public frmContactEditorPictureADT
+{
+       protected:
+               // Handlers for frmContactEditorPictureADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessData( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorPicture( wxWindow* parent );
+               void SetEditorMode(bool EditMode);
+               void SetupPointers(std::map<int, std::string> *PictureList,             
+                       std::map<int, wxString> *PictureListAltID,
+                       std::map<int, wxString> *PictureListPID,
+                       std::map<int, wxString> *PictureListType,
+                       std::map<int, wxString> *PictureListPicEncType,                 
+                       std::map<int, wxString> *PictureListPictureType,                        
+                       std::map<int, wxString> *PictureListTokens,
+                       std::map<int, wxString> *PictureListMediatype,  
+                       std::map<int, int> *PictureListPref,
+                       wxListCtrl *PictureListCtrl,
+                       int PictureIndex );
+       //// end generated class members
+       
+               bool EditorMode;
+               std::map<int, std::string> *PictureListPtr;
+               std::map<int, wxString> *PictureListAltIDPtr;
+               std::map<int, wxString> *PictureListPIDPtr;
+               std::map<int, wxString> *PictureListTypePtr;
+               std::map<int, wxString> *PictureListPicEncTypePtr;              
+               std::map<int, wxString> *PictureListPictureTypePtr;             
+               std::map<int, wxString> *PictureListTokensPtr;
+               std::map<int, wxString> *PictureListMediatypePtr;               
+               std::map<int, int> *PictureListPrefPtr;
+               wxListCtrl *PictureListCtrlPtr;
+               int PictureListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorPicture__
diff --git a/source/contacteditor/frmContactEditorRelated.cpp b/source/contacteditor/frmContactEditorRelated.cpp
new file mode 100644 (file)
index 0000000..a9f774a
--- /dev/null
@@ -0,0 +1,509 @@
+#include "frmContactEditorRelated.h"
+#include <map>
+#include "../common/textprocessing.h"
+#include "../enums.h"
+
+frmContactEditorRelated::frmContactEditorRelated( wxWindow* parent )
+:
+frmContactEditorRelatedADT( parent )
+{
+       
+       EditorMode = FALSE;
+       sliPriority->Disable();
+       
+       // Setup the list of types for the related drop down box.
+       
+       cmbType->Append(_("Contact"));
+       cmbType->Append(_("Acquaintance"));     
+       cmbType->Append(_("Friend"));   
+       cmbType->Append(_("Met"));
+       cmbType->Append(_("Co-worker"));
+       cmbType->Append(_("Colleague"));
+       cmbType->Append(_("Co-resident"));
+       cmbType->Append(_("Neighbour"));
+       cmbType->Append(_("Child"));
+       cmbType->Append(_("Parent"));
+       cmbType->Append(_("Sibling"));  
+       cmbType->Append(_("Spouse"));
+       cmbType->Append(_("Kin"));
+       cmbType->Append(_("Muse"));
+       cmbType->Append(_("Crush"));
+       cmbType->Append(_("Date"));
+       cmbType->Append(_("Sweetheart"));
+       cmbType->Append(_("Me"));
+       cmbType->Append(_("Agent"));
+       cmbType->Append(_("Emergency"));        
+       
+}
+
+void frmContactEditorRelated::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorRelated::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Related"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Related"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Get the related data.
+               
+               striter = RelatedListPtr->find(RelatedListIndex);
+                
+               if (striter->first == RelatedListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtRelated->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the related type.
+               
+               striter = RelatedListRelTypePtr->find(RelatedListIndex);
+                
+               if (striter->first == RelatedListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               if (strValue == wxT("contact")){
+               
+                       cmbType->SetValue(_("Contact"));
+               
+               } else if (strValue == wxT("acquaintance")){
+               
+                       cmbType->SetValue(_("Acquaintance"));
+               
+               } else if (strValue == wxT("friend")){
+               
+                       cmbType->SetValue(_("Friend"));
+               
+               } else if (strValue == wxT("met")){
+               
+                       cmbType->SetValue(_("Met"));
+               
+               } else if (strValue == wxT("co-worker")){
+               
+                       cmbType->SetValue(_("Co-worker"));
+               
+               } else if (strValue == wxT("colleague")){
+               
+                       cmbType->SetValue(_("Colleague"));
+               
+               } else if (strValue == wxT("co-resident")){
+               
+                       cmbType->SetValue(_("Co-resident"));
+               
+               } else if (strValue == wxT("neighbor")){
+               
+                       cmbType->SetValue(_("Neighbour"));
+               
+               } else if (strValue == wxT("child")){
+               
+                       cmbType->SetValue(_("Child"));
+               
+               } else if (strValue == wxT("parent")){
+               
+                       cmbType->SetValue(_("Parent"));
+               
+               } else if (strValue == wxT("sibling")){
+               
+                       cmbType->SetValue(_("Sibling"));
+               
+               } else if (strValue == wxT("spouse")){
+               
+                       cmbType->SetValue(_("Spouse"));
+               
+               } else if (strValue == wxT("kin")){
+               
+                       cmbType->SetValue(_("Kin"));
+               
+               } else if (strValue == wxT("muse")){
+               
+                       cmbType->SetValue(_("Muse"));
+               
+               } else if (strValue == wxT("crush")){
+               
+                       cmbType->SetValue(_("Crush"));
+               
+               } else if (strValue == wxT("date")){
+               
+                       cmbType->SetValue(_("Date"));
+               
+               } else if (strValue == wxT("sweetheart")){
+               
+                       cmbType->SetValue(_("Sweetheart"));
+               
+               } else if (strValue == wxT("me")){
+               
+                       cmbType->SetValue(_("Me"));
+               
+               } else if (strValue == wxT("agent")){
+               
+                       cmbType->SetValue(_("Agent"));
+               
+               } else if (strValue == wxT("emergency")){
+               
+                       cmbType->SetValue(_("Emergency"));
+               
+               } else {
+               
+                       cmbType->SetValue(strValue);
+               
+               }
+               
+               // Setup the Slider.
+               
+               intiter = RelatedListPrefPtr->find(RelatedListIndex);
+               
+               if (intiter->first == RelatedListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }
+               
+       }
+       
+       EditSectionType = SectType;     
+       
+}
+
+void frmContactEditorRelated::ProcessData( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+
+               wxString strValue;
+
+               RelatedListPtr->insert(std::make_pair(RelatedListIndex, txtRelated->GetValue()));
+               
+               // Work out the type of contact.
+               
+               strValue = cmbType->GetValue();         
+               
+               if (strValue == _("Contact")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("contact")));
+               
+               } else if (strValue == _("Acquaintance")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("acquaintance")));
+               
+               } else if (strValue == _("Friend")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("friend")));
+               
+               } else if (strValue == _("Met")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("met")));
+               
+               } else if (strValue == _("Co-worker")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("co-worker")));
+               
+               } else if (strValue == _("Colleague")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("colleague")));
+               
+               } else if (strValue == _("Co-resident")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("co-resident")));
+               
+               } else if (strValue == _("Neighbour")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("neighbor")));
+               
+               } else if (strValue == _("Child")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("child")));
+               
+               } else if (strValue == _("Parent")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("parent")));
+               
+               } else if (strValue == _("Sibling")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("sibling")));
+               
+               } else if (strValue == _("Spouse")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("spouse")));
+               
+               } else if (strValue == _("Kin")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("kin")));
+               
+               } else if (strValue == _("Muse")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("muse")));
+               
+               } else if (strValue == _("Crush")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("crush")));
+               
+               } else if (strValue == _("Date")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("date")));
+               
+               } else if (strValue == _("Sweetheart")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("sweetheart")));
+               
+               } else if (strValue == _("Me")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("me")));
+               
+               } else if (strValue == _("Agent")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("agent")));
+               
+               } else if (strValue == _("Emergency")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("emergency")));
+               
+               } else {
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, strValue));
+               
+               }
+               
+               // Add Related type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       RelatedListTypePtr->insert(std::make_pair(RelatedListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       RelatedListTypePtr->insert(std::make_pair(RelatedListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       RelatedListTypePtr->insert(std::make_pair(RelatedListIndex, wxT("work")));
+               
+               }       
+               
+               // Add Related Priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       RelatedListPrefPtr->insert(std::make_pair(RelatedListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       RelatedListPrefPtr->insert(std::make_pair(RelatedListIndex, 0));                
+               
+               }
+               
+               // Add to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(RelatedListIndex);
+               coldata.SetData(RelatedListIndex);              
+               coldata.SetText(cmbType->GetValue());
+               ListCtrlIndex = RelatedListCtrlPtr->InsertItem(coldata);
+               
+               RelatedListCtrlPtr->SetItem(ListCtrlIndex, 1, txtRelated->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       RelatedListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }               
+       
+               this->Close();
+       
+       } else if (EditorMode == TRUE) {
+       
+               wxString strValue;
+               long longSelected = -1;
+       
+               // Work out the type of contact.
+               
+               strValue = cmbType->GetValue();         
+               
+               RelatedListRelTypePtr->erase(RelatedListIndex);
+               
+               if (strValue == _("Contact")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("contact")));
+               
+               } else if (strValue == _("Acquaintance")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("acquaintance")));
+               
+               } else if (strValue == _("Friend")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("friend")));
+               
+               } else if (strValue == _("Met")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("met")));
+               
+               } else if (strValue == _("Co-worker")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("co-worker")));
+               
+               } else if (strValue == _("Colleague")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("colleague")));
+               
+               } else if (strValue == _("Co-resident")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("co-resident")));
+               
+               } else if (strValue == _("Neighbour")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("neighbor")));
+               
+               } else if (strValue == _("Child")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("child")));
+               
+               } else if (strValue == _("Parent")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("parent")));
+               
+               } else if (strValue == _("Sibling")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("sibling")));
+               
+               } else if (strValue == _("Spouse")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("spouse")));
+               
+               } else if (strValue == _("Kin")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("kin")));
+               
+               } else if (strValue == _("Muse")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("muse")));
+               
+               } else if (strValue == _("Crush")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("crush")));
+               
+               } else if (strValue == _("Date")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("date")));
+               
+               } else if (strValue == _("Sweetheart")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("sweetheart")));
+               
+               } else if (strValue == _("Me")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("me")));
+               
+               } else if (strValue == _("Agent")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("agent")));
+               
+               } else if (strValue == _("Emergency")){
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, wxT("emergency")));
+               
+               } else {
+               
+                       RelatedListRelTypePtr->insert(std::make_pair(RelatedListIndex, strValue));
+               
+               }       
+               
+               RelatedListPrefPtr->erase(RelatedListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       RelatedListPrefPtr->insert(std::make_pair(RelatedListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       RelatedListPrefPtr->insert(std::make_pair(RelatedListIndex, 0));
+               
+               }
+               
+               // Get the related person/details.
+               
+               RelatedListPtr->erase(RelatedListIndex);
+               RelatedListPtr->insert(std::make_pair(RelatedListIndex, txtRelated->GetValue()));               
+               
+               // Update the form.
+               
+               longSelected = RelatedListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               RelatedListCtrlPtr->SetItem(longSelected, 0, cmbType->GetValue());
+               RelatedListCtrlPtr->SetItem(longSelected, 1, txtRelated->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       RelatedListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       RelatedListCtrlPtr->SetItem(longSelected, 2, wxT(""));
+               
+               }       
+       
+               this->Close();
+       
+       }       
+}
+
+void frmContactEditorRelated::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorRelated::SetupPointers(std::map<int, wxString> *RelatedList,
+       std::map<int, wxString> *RelatedListRelType,
+       std::map<int, wxString> *RelatedListAltID,
+       std::map<int, wxString> *RelatedListPID,
+       std::map<int, wxString> *RelatedListType,
+       std::map<int, wxString> *RelatedListTokens,                     
+       std::map<int, int> *RelatedListPref,
+       wxListCtrl *RelatedListCtrl,
+       int RelatedIndex )
+{
+
+       RelatedListPtr = RelatedList;
+       RelatedListRelTypePtr = RelatedListRelType;     
+       RelatedListAltIDPtr = RelatedListAltID;
+       RelatedListPIDPtr = RelatedListPID;
+       RelatedListTypePtr = RelatedListType;
+       RelatedListTokensPtr = RelatedListTokens;
+       RelatedListPrefPtr = RelatedListPref;
+       RelatedListCtrlPtr = RelatedListCtrl;
+       RelatedListIndex = RelatedIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorRelated.h b/source/contacteditor/frmContactEditorRelated.h
new file mode 100644 (file)
index 0000000..3c3f37f
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef __frmContactEditorRelated__
+#define __frmContactEditorRelated__
+
+/**
+@file
+Subclass of frmContactEditorRelatedADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+#include <map>
+
+//// end generated include
+
+/** Implementing frmContactEditorRelatedADT */
+class frmContactEditorRelated : public frmContactEditorRelatedADT
+{
+       protected:
+               // Handlers for frmContactEditorRelatedADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessData( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorRelated( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);                
+               void SetupPointers(std::map<int, wxString> *RelatedList,
+                       std::map<int, wxString> *RelatedListRelType,
+                       std::map<int, wxString> *RelatedListAltID,
+                       std::map<int, wxString> *RelatedListPID,
+                       std::map<int, wxString> *RelatedListType,
+                       std::map<int, wxString> *RelatedListTokens,             
+                       std::map<int, int> *RelatedListPref,
+                       wxListCtrl *RelatedListCtrl,
+                       int RelatedIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, wxString> *RelatedListPtr;
+               std::map<int, wxString> *RelatedListRelTypePtr;
+               std::map<int, wxString> *RelatedListAltIDPtr;
+               std::map<int, wxString> *RelatedListPIDPtr;
+               std::map<int, wxString> *RelatedListTypePtr;
+               std::map<int, wxString> *RelatedListTokensPtr;          
+               std::map<int, int> *RelatedListPrefPtr;
+               wxListCtrl *RelatedListCtrlPtr;
+               int RelatedListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorRelated__
diff --git a/source/contacteditor/frmContactEditorRoles.cpp b/source/contacteditor/frmContactEditorRoles.cpp
new file mode 100644 (file)
index 0000000..d33fdfa
--- /dev/null
@@ -0,0 +1,214 @@
+#include "frmContactEditorRoles.h"
+
+#include <map>
+#include "../enums.h"
+#include "../common/textprocessing.h"
+
+frmContactEditorRoles::frmContactEditorRoles( wxWindow* parent )
+:
+frmContactEditorRolesADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorRoles::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorRoles::ProcessAction( wxCommandEvent& event )
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+       
+               wxString strValue;
+               
+               // Get the website address.
+               
+               RolesListPtr->insert(std::make_pair(RolesListIndex, txtRole->GetValue()));
+               
+               // Get the type of website.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       RolesListTypePtr->insert(std::make_pair(RolesListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       RolesListTypePtr->insert(std::make_pair(RolesListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       RolesListTypePtr->insert(std::make_pair(RolesListIndex, wxT("work")));
+               
+               }
+               
+               // Add the website priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       RolesListPrefPtr->insert(std::make_pair(RolesListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       RolesListPrefPtr->insert(std::make_pair(RolesListIndex, 0));            
+               
+               }
+               
+               // Add to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(RolesListIndex);
+               coldata.SetData(RolesListIndex);                
+               coldata.SetText(txtRole->GetValue());
+               ListCtrlIndex = RolesListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       RolesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }               
+       
+               this->Close();          
+       
+       } else {
+       
+               // Update the title.
+               long longSelected = -1;         
+               wxString strValue;              
+               RolesListPtr->erase(RolesListIndex);
+               RolesListPtr->insert(std::make_pair(RolesListIndex, txtRole->GetValue()));
+               
+               // Update the slider priority.
+               
+               RolesListPrefPtr->erase(RolesListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       RolesListPrefPtr->insert(std::make_pair(RolesListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       RolesListPrefPtr->insert(std::make_pair(RolesListIndex, 0));
+               
+               }               
+               
+               // Update the form.
+               
+               longSelected = RolesListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               RolesListCtrlPtr->SetItem(longSelected, 0, txtRole->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       RolesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       RolesListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }               
+       
+               this->Close();
+       
+       }
+}
+
+void frmContactEditorRoles::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Title"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Title"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Load the data into the form. Get the website.
+               
+               striter = RolesListPtr->find(RolesListIndex);
+                
+               if (striter->first == RolesListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtRole->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the website priority.
+               
+               intiter = RolesListPrefPtr->find(RolesListIndex);
+               
+               if (intiter->first == RolesListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+       
+       EditSectionType = SectType;     
+               
+}
+
+void frmContactEditorRoles::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorRoles::SetupPointers(std::map<int, wxString> *RolesList,
+       std::map<int, wxString> *RolesListLanguage,
+       std::map<int, wxString> *RolesListAltID,
+       std::map<int, wxString> *RolesListPID,
+       std::map<int, wxString> *RolesListType,
+       std::map<int, wxString> *RolesListTokens,
+       std::map<int, int> *RolesListPref,
+       wxListCtrl *RolesListCtrl,
+       int RolesIndex )
+{
+
+       RolesListPtr = RolesList;
+       RolesListLanguagePtr = RolesListLanguage;
+       RolesListAltIDPtr = RolesListAltID;
+       RolesListPIDPtr = RolesListPID;
+       RolesListTypePtr = RolesListType;
+       RolesListTokensPtr = RolesListTokens;
+       RolesListPrefPtr = RolesListPref;
+       RolesListCtrlPtr = RolesListCtrl;
+       RolesListIndex = RolesIndex;
+
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorRoles.h b/source/contacteditor/frmContactEditorRoles.h
new file mode 100644 (file)
index 0000000..b0b8d92
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef __frmContactEditorRoles__
+#define __frmContactEditorRoles__
+
+/**
+@file
+Subclass of frmContactEditorRolesADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorRolesADT */
+class frmContactEditorRoles : public frmContactEditorRolesADT
+{
+       protected:
+               // Handlers for frmContactEditorRolesADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorRoles( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *RolesList,
+                       std::map<int, wxString> *RolesListLanguage,
+                       std::map<int, wxString> *RolesListAltID,
+                       std::map<int, wxString> *RolesListPID,
+                       std::map<int, wxString> *RolesListType,
+                       std::map<int, wxString> *RolesListTokens,
+                       std::map<int, int> *RolesListPref,
+                       wxListCtrl *RolesListCtrl,
+                       int RolesIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, wxString> *RolesListPtr;
+               std::map<int, wxString> *RolesListLanguagePtr;          
+               std::map<int, wxString> *RolesListAltIDPtr;
+               std::map<int, wxString> *RolesListPIDPtr;
+               std::map<int, wxString> *RolesListTypePtr;
+               std::map<int, wxString> *RolesListTokensPtr;
+               std::map<int, int> *RolesListPrefPtr;
+               wxListCtrl *RolesListCtrlPtr;
+               int RolesListIndex;
+               SectionType EditSectionType;
+};
+
+#endif // __frmContactEditorRoles__
diff --git a/source/contacteditor/frmContactEditorSound.cpp b/source/contacteditor/frmContactEditorSound.cpp
new file mode 100644 (file)
index 0000000..6e1fab0
--- /dev/null
@@ -0,0 +1,355 @@
+#include "frmContactEditorSound.h"
+
+#include <wx/tokenzr.h>
+#include <wx/file.h>
+#include <SFML/Audio.hpp>
+
+#include "../common/textprocessing.h"
+#include "../common/base64.h"
+#include "../common/mime.h"
+
+frmContactEditorSound::frmContactEditorSound( wxWindow* parent )
+:
+frmContactEditorSoundADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+       
+       cmbType->Append(wxT(""));
+       cmbType->Append(_("Home"));
+       cmbType->Append(_("Work"));     
+}
+
+void frmContactEditorSound::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorSound::ProcessData( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+
+               // Load the file into memory.
+               
+               wxFile AudioFile;
+               wxString wxSAudioString;
+               wxString wxSAudioFilename;
+               wxString wxSAudioMIMEType;
+               sf::SoundBuffer AudioBuffer;
+               size_t len;
+               std::string b64enc;             
+               
+               wxSAudioFilename = fipSound->GetPath();
+
+/*             
+#if wxABI_VERSION < 20900
+               if (AudioFile.Open(wxSAudioFilename.c_str(), wxT("rb"))){
+#else
+               if (AudioFile.Open(wxSAudioFilename, wxT("rb"))){
+#endif
+
+*/
+               if (AudioFile.Open(wxSAudioFilename, wxFile::read)){
+                       size_t flen;
+                       len = AudioFile.Length();
+                       
+                       unsigned char* AudioFileData = new unsigned char[len];
+                       flen = AudioFile.Read(AudioFileData, len);                      
+
+                       // Get MIME Type.
+                       
+                       /*const char *MIMEType;
+                       magic_t MagicCookie = magic_open(MAGIC_MIME);                   
+                       magic_setflags(MagicCookie, MAGIC_MIME_TYPE);
+                       
+                       if (!MagicCookie){
+
+                               wxMessageBox(_("An error occured with the support library for getting the picture type."), _("Error opening picture file"), wxICON_ERROR);                      
+                               return;
+                               
+                       }
+                       
+                       if (magic_load(MagicCookie, NULL) != 0) {
+                       
+                               wxMessageBox(_("An error occured whilst determining the picture type."), _("Error opening picture file"), wxICON_ERROR);
+                               return;
+                       
+                       }
+                       
+                       MIMEType = magic_file(MagicCookie, wxSAudioFilename.mb_str());
+                       wxSAudioMIMEType = wxString::FromUTF8(MIMEType);
+                       magic_close(MagicCookie);*/
+                       
+                       wxSAudioMIMEType = GetMIME(wxSAudioFilename);
+
+                       // Check to make sure it is an audio file.
+                       
+                       if (!AudioBuffer.loadFromMemory(AudioFileData, len)){
+               
+                               // Can't load file. We must flee...
+                               // Also show an error message too.
+                       
+                               wxMessageBox(_("This file is in an audio format that is unsupported or is not an audio file."), _("Error opening audio file"), wxICON_ERROR);                   
+                       
+                               return;
+               
+                       }
+                       
+                       // Covert the file into base64.
+               
+                       b64enc = base64_encode(AudioFileData, (int)len);                        
+                       
+                       delete[] AudioFileData;
+       
+               } else {
+       
+                       wxMessageBox(_("There was an error opening the audio file!"), _("Error opening audio file"), wxICON_ERROR);
+       
+                       return;
+       
+               }               
+
+               SoundListPtr->insert(std::make_pair(SoundListIndex, b64enc));           
+
+               wxString strValue;              
+               strValue.Clear();
+               strValue = cmbType->GetString(cmbType->GetSelection());
+
+               // Setup Sound Type.
+
+               if (strValue == _("Home")) {
+               
+                       SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("home")));
+               
+               } else if (strValue == _("Work")) {
+               
+                       SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("work")));
+               
+               } else {
+               
+                       SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("")));
+               
+               }
+               
+               // Setup Organisation Priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       SoundListPrefPtr->insert(std::make_pair(SoundListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       SoundListPrefPtr->insert(std::make_pair(SoundListIndex, 0));
+               
+               }
+               
+               // Setup MIME Type.
+               
+               SoundListAudioTypePtr->insert(std::make_pair(SoundListIndex, wxSAudioMIMEType));
+               
+               // Setup Encoding Type.
+               
+               SoundListAudioEncTypePtr->insert(std::make_pair(SoundListIndex, wxT("base64")));
+                               
+               // Add to form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(SoundListIndex);
+               coldata.SetData(SoundListIndex);
+               coldata.SetText(_("Sound"));
+               ListCtrlIndex = SoundListCtrlPtr->InsertItem(coldata);
+               
+               if (strValue == _("Home")) {
+               
+                       SoundListCtrlPtr->SetItem(ListCtrlIndex, 1, _("Home"));
+               
+               } else if (strValue == _("Work")) {
+               
+                       SoundListCtrlPtr->SetItem(ListCtrlIndex, 1, _("Work"));
+               
+               } else {
+               
+
+               
+               }               
+               
+               if (chkUsePref->IsChecked()){
+               
+                       SoundListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();
+               
+       } else if (EditorMode == TRUE) {
+       
+               // Do not touch the audio file but update the settings
+               // associated with the audio file.
+       
+               
+       
+               long longSelected = -1;
+               wxString strValue;      
+               
+               // Update Category Type.
+               
+               SoundListTypePtr->erase(SoundListIndex);
+               strValue = cmbType->GetString(cmbType->GetSelection());         
+               
+               if (strValue == _("Home")) {
+               
+                       SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("home")));
+               
+               } else if (strValue == _("Work")) {
+               
+                       SoundListTypePtr->insert(std::make_pair(SoundListIndex, wxT("work")));
+               
+               }               
+               
+               // Update Category Priority.
+               
+               SoundListPrefPtr->erase(SoundListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       SoundListPrefPtr->insert(std::make_pair(SoundListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       SoundListPrefPtr->insert(std::make_pair(SoundListIndex, 0));
+               
+               }
+               
+               // Update form.
+               
+               longSelected = SoundListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               SoundListCtrlPtr->SetItem(longSelected, 0, wxT("Sound"));
+               SoundListCtrlPtr->SetItem(longSelected, 1, strValue);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       SoundListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       SoundListCtrlPtr->SetItem(longSelected, 2, wxT(""));
+               
+               }
+               
+               this->Close();  
+       
+       }
+}
+
+void frmContactEditorSound::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorSound::SetEditorMode(bool EditMode)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Sound"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Sound"));
+               fipSound->Disable();
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Load the data into the form. Get the website.
+               
+               striter = SoundListTypePtr->find(SoundListIndex);
+                
+               if (striter->first == SoundListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               if (strValue == wxT("home")){
+               
+                       cmbType->SetSelection(1);
+               
+               } else if (strValue == wxT("work")){ 
+               
+                       cmbType->SetSelection(2);
+               
+               } else {
+               
+                       cmbType->SetSelection(0);
+               
+               }
+               
+               //strValue.Clear();
+               
+               // Get the website priority.
+               
+               intiter = SoundListPrefPtr->find(SoundListIndex);
+               
+               if (intiter->first == SoundListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+       
+       
+               
+}
+
+void frmContactEditorSound::SetupPointers(std::map<int, std::string> *SoundList,                       
+       std::map<int, wxString> *SoundListAltID,
+       std::map<int, wxString> *SoundListPID,
+       std::map<int, wxString> *SoundListType,
+       std::map<int, wxString> *SoundListAudioType,    
+       std::map<int, wxString> *SoundListAudioEncType,
+       std::map<int, wxString> *SoundListTokens,
+       std::map<int, wxString> *SoundListMediatype,    
+       std::map<int, int> *SoundListPref,
+       wxListCtrl *SoundListCtrl,
+       int SoundIndex )
+{
+
+       SoundListPtr = SoundList;
+       SoundListAltIDPtr = SoundListAltID;
+       SoundListPIDPtr = SoundListPID;
+       SoundListTypePtr = SoundListType;
+       SoundListAudioTypePtr = SoundListAudioType;
+       SoundListAudioEncTypePtr = SoundListAudioEncType;
+       SoundListTokensPtr = SoundListTokens;
+       SoundListMediatypePtr = SoundListMediatype;     
+       SoundListPrefPtr = SoundListPref;
+       SoundListCtrlPtr = SoundListCtrl;
+       SoundListIndex = SoundIndex;
+       
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorSound.h b/source/contacteditor/frmContactEditorSound.h
new file mode 100644 (file)
index 0000000..2425230
--- /dev/null
@@ -0,0 +1,60 @@
+#ifndef __frmContactEditorSound__
+#define __frmContactEditorSound__
+
+/**
+@file
+Subclass of frmContactEditorSoundADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include <string>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorSoundADT */
+class frmContactEditorSound : public frmContactEditorSoundADT
+{
+       protected:
+               // Handlers for frmContactEditorSoundADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessData( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorSound( wxWindow* parent );
+               void SetEditorMode(bool EditMode);
+               void SetupPointers(std::map<int, std::string> *SoundList,               
+                       std::map<int, wxString> *SoundListAltID,
+                       std::map<int, wxString> *SoundListPID,
+                       std::map<int, wxString> *SoundListType,
+                       std::map<int, wxString> *SoundListAudioType,
+                       std::map<int, wxString> *SoundListAudioEncType,                 
+                       std::map<int, wxString> *SoundListTokens,
+                       std::map<int, wxString> *SoundListMediatype,    
+                       std::map<int, int> *SoundListPref,
+                       wxListCtrl *SoundListCtrl,
+                       int SoundIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, std::string> *SoundListPtr;
+               std::map<int, wxString> *SoundListAltIDPtr;
+               std::map<int, wxString> *SoundListPIDPtr;
+               std::map<int, wxString> *SoundListTypePtr;
+               std::map<int, wxString> *SoundListAudioTypePtr; 
+               std::map<int, wxString> *SoundListAudioEncTypePtr;
+               std::map<int, wxString> *SoundListTokensPtr;
+               std::map<int, wxString> *SoundListMediatypePtr;         
+               std::map<int, int> *SoundListPrefPtr;
+               wxListCtrl *SoundListCtrlPtr;
+               int SoundListIndex;
+               SectionType EditSectionType;            
+       //// end generated class members
+       
+};
+
+#endif // __frmContactEditorSound__
diff --git a/source/contacteditor/frmContactEditorTelephone.cpp b/source/contacteditor/frmContactEditorTelephone.cpp
new file mode 100644 (file)
index 0000000..d3ac345
--- /dev/null
@@ -0,0 +1,529 @@
+#include "frmContactEditorTelephone.h"
+#include "../common/textprocessing.h"
+#include <wx/tokenzr.h>
+
+frmContactEditorTelephone::frmContactEditorTelephone( wxWindow* parent )
+:
+frmContactEditorTelephoneADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable(); 
+}
+
+void frmContactEditorTelephone::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorTelephone::ProcessAction( wxCommandEvent& event )
+{
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+
+               wxString strTelTypes;
+               wxString strTelTypesLCtrl;
+               bool AddComma = FALSE;
+               
+               // Add the telephone number.
+               
+               wxString strValue;
+               TelephoneListPtr->insert(std::make_pair(TelephoneListIndex, txtTelephone->GetValue()));
+               
+               // Add the telephone type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       strTelTypes.Append(wxT(""));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       strTelTypes.Append(wxT("home"));
+                       AddComma = TRUE;
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       strTelTypes.Append(wxT("work"));
+                       AddComma = TRUE;
+               
+               }
+               
+               if (chkVoice->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));
+                       
+                       }               
+               
+                       strTelTypes.Append(wxT("voice"));
+                       strTelTypesLCtrl.Append(wxT("voice"));
+                       AddComma = TRUE;
+               
+               }
+               
+               if (chkFax->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("fax"));
+                       strTelTypesLCtrl.Append(wxT("fax"));
+                       AddComma = TRUE;
+               
+               }
+               
+               if (chkVideo->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("video"));
+                       strTelTypesLCtrl.Append(wxT("video"));
+                       AddComma = TRUE;                        
+               
+               }
+               
+               if (chkText->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("text"));
+                       strTelTypesLCtrl.Append(wxT("text"));                   
+                       AddComma = TRUE;
+               
+               }
+               
+               if (chkMobile->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("cell"));
+                       strTelTypesLCtrl.Append(wxT("cell"));
+                       AddComma = TRUE;                        
+               
+               }
+               
+               if (chkTextphone->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("textphone"));
+                       strTelTypesLCtrl.Append(wxT("textphone"));                      
+                       AddComma = TRUE;                        
+               
+               }
+               
+               if (chkPager->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("pager"));
+                       strTelTypesLCtrl.Append(wxT("pager"));                  
+                       AddComma = TRUE;                        
+               
+               }
+                               
+               TelephoneListTypePtr->insert(std::make_pair(TelephoneListIndex, strTelTypes));          
+               
+               // Add Telephone Priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TelephoneListPrefPtr->insert(std::make_pair(TelephoneListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       TelephoneListPrefPtr->insert(std::make_pair(TelephoneListIndex, 0));            
+               
+               }
+               
+               // Add to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(TelephoneListIndex);
+               coldata.SetData(TelephoneListIndex);            
+               coldata.SetText(txtTelephone->GetValue());
+               ListCtrlIndex = TelephoneListCtrlPtr->InsertItem(coldata);
+               
+               strTelTypesLCtrl.Replace(wxT(","), wxT(""), FALSE);
+               
+               TelephoneListCtrlPtr->SetItem(ListCtrlIndex, 1, strTelTypesLCtrl);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TelephoneListCtrlPtr->SetItem(ListCtrlIndex, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }               
+       
+               this->Close();
+       
+       } else if (EditorMode == TRUE) {
+       
+               wxString strTelTypes;
+               wxString strTelTypesLCtrl;
+               bool AddComma = FALSE;
+               long longSelected = -1;         
+               
+               // Edit the Telephone number.
+               
+               wxString strValue;              
+               TelephoneListPtr->erase(TelephoneListIndex);
+               TelephoneListPtr->insert(std::make_pair(TelephoneListIndex, txtTelephone->GetValue()));         
+               
+               // Edit the Telephone type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       strTelTypes.Append(wxT(""));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       strTelTypes.Append(wxT("home"));
+                       AddComma = TRUE;
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       strTelTypes.Append(wxT("work"));
+                       AddComma = TRUE;
+               
+               }
+               
+               if (chkVoice->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));
+                       
+                       }               
+               
+                       strTelTypes.Append(wxT("voice"));
+                       strTelTypesLCtrl.Append(wxT("voice"));
+                       AddComma = TRUE;
+               
+               }
+               
+               if (chkFax->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("fax"));
+                       strTelTypesLCtrl.Append(wxT("fax"));
+                       AddComma = TRUE;
+               
+               }
+               
+               if (chkVideo->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("video"));
+                       strTelTypesLCtrl.Append(wxT("video"));
+                       AddComma = TRUE;                        
+               
+               }
+               
+               if (chkText->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("text"));
+                       strTelTypesLCtrl.Append(wxT("text"));                   
+                       AddComma = TRUE;
+               
+               }
+               
+               if (chkMobile->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("cell"));
+                       strTelTypesLCtrl.Append(wxT("cell"));                   
+                       AddComma = TRUE;                        
+               
+               }
+               
+               if (chkTextphone->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("textphone"));
+                       strTelTypesLCtrl.Append(wxT("textphone"));                      
+                       AddComma = TRUE;                        
+               
+               }
+               
+               if (chkPager->IsChecked()){
+               
+                       if (AddComma){
+                       
+                               strTelTypes.Append(wxT(","));
+                               strTelTypesLCtrl.Append(wxT(","));                              
+                       
+                       }
+               
+                       strTelTypes.Append(wxT("pager"));
+                       strTelTypesLCtrl.Append(wxT("pager"));                  
+                       AddComma = TRUE;                        
+               
+               }
+               
+               strTelTypesLCtrl.Replace(wxT(","), wxT(""), FALSE);             
+                               
+               TelephoneListTypePtr->erase(TelephoneListIndex);
+               TelephoneListTypePtr->insert(std::make_pair(TelephoneListIndex, strTelTypes));          
+               
+               // Edit the Telephone Priority.
+               
+               TelephoneListPrefPtr->erase(TelephoneListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TelephoneListPrefPtr->insert(std::make_pair(TelephoneListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       TelephoneListPrefPtr->insert(std::make_pair(TelephoneListIndex, 0));            
+               
+               }               
+               
+               // Update the form.
+               
+               longSelected = TelephoneListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               TelephoneListCtrlPtr->SetItem(longSelected, 0, txtTelephone->GetValue());
+               TelephoneListCtrlPtr->SetItem(longSelected, 1, strTelTypesLCtrl);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TelephoneListCtrlPtr->SetItem(longSelected, 2, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       TelephoneListCtrlPtr->SetItem(longSelected, 2, wxT(""));
+               
+               }       
+       
+               this->Close();
+       
+       }
+       
+}
+
+void frmContactEditorTelephone::CloseWindow( wxCommandEvent& event )
+{
+
+       this->Close();
+
+}
+
+void frmContactEditorTelephone::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Telephone"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Telephone"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Load the data into the form. Get the phone number.
+               
+               striter = TelephoneListPtr->find(TelephoneListIndex);
+                
+               if (striter->first == TelephoneListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtTelephone->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the phone types in.
+               
+               striter = TelephoneListTypePtr->find(TelephoneListIndex);
+                
+               if (striter->first == TelephoneListIndex){
+               
+                       strValue = striter->second;
+               
+               }               
+               
+               wxStringTokenizer TelephonePrefToken (strValue, wxT(","));
+               
+               strValue.Clear();
+               
+               while(TelephonePrefToken.HasMoreTokens()){
+                       
+                       strValue = TelephonePrefToken.GetNextToken();                   
+                       
+                       if (strValue == wxT("home") || strValue == wxT("work")){
+                       
+                               // Ignore these two since they aren't needed.
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (strValue == wxT("voice")){
+                       
+                               chkVoice->SetValue(TRUE);
+                       
+                       }
+                       
+                       if (strValue == wxT("fax")){
+                       
+                               chkFax->SetValue(TRUE);
+                       
+                       }
+                       
+                       if (strValue == wxT("video")){
+                       
+                               chkVideo->SetValue(TRUE);
+                       
+                       }
+                       
+                       if (strValue == wxT("text")){
+                       
+                               chkText->SetValue(TRUE);
+                       
+                       }
+                       
+                       if (strValue == wxT("cell")){
+                       
+                               chkMobile->SetValue(TRUE);
+                       
+                       }
+                       
+                       if (strValue == wxT("textphone")){
+                       
+                               chkTextphone->SetValue(TRUE);
+                       
+                       }               
+                       
+                       if (strValue == wxT("pager")){
+                       
+                               chkPager->SetValue(TRUE);
+                       
+                       }
+               
+               }
+               
+               // Setup the Slider.
+               
+               intiter = TelephoneListPrefPtr->find(TelephoneListIndex);
+               
+               if (intiter->first == TelephoneListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }               
+               
+       }
+       
+       EditSectionType = SectType;     
+       
+}
+
+void frmContactEditorTelephone::SetupPointers(std::map<int, wxString> *TelephoneList,
+       std::map<int, wxString> *TelephoneListAltID,
+       std::map<int, wxString> *TelephoneListPID,
+       std::map<int, wxString> *TelephoneListType,
+       std::map<int, wxString> *TelephoneListTokens,
+       std::map<int, int> *TelephoneListPref,
+       wxListCtrl *TelephoneListCtrl,
+       int TelephoneIndex )
+{
+
+       TelephoneListPtr = TelephoneList;
+       TelephoneListAltIDPtr = TelephoneListAltID;
+       TelephoneListPIDPtr = TelephoneListPID;
+       TelephoneListTypePtr = TelephoneListType;
+       TelephoneListTokensPtr = TelephoneListTokens;
+       TelephoneListPrefPtr = TelephoneListPref;
+       TelephoneListCtrlPtr = TelephoneListCtrl;
+       TelephoneListIndex = TelephoneIndex;
+
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorTelephone.h b/source/contacteditor/frmContactEditorTelephone.h
new file mode 100644 (file)
index 0000000..4836ba8
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef __frmContactEditorTelephone__
+#define __frmContactEditorTelephone__
+
+/**
+@file
+Subclass of frmContactEditorTelephoneADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorTelephoneADT */
+class frmContactEditorTelephone : public frmContactEditorTelephoneADT
+{
+       protected:
+               // Handlers for frmContactEditorTelephoneADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorTelephone( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *TelephoneList,
+                       std::map<int, wxString> *TelephoneListAltID,
+                       std::map<int, wxString> *TelephoneListPID,
+                       std::map<int, wxString> *TelephoneListType,
+                       std::map<int, wxString> *TelephoneListTokens,
+                       std::map<int, int> *TelephoneListPref,
+                       wxListCtrl *TelephoneListCtrl,
+                       int TelephoneIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, wxString> *TelephoneListPtr;
+               std::map<int, wxString> *TelephoneListAltIDPtr;
+               std::map<int, wxString> *TelephoneListPIDPtr;
+               std::map<int, wxString> *TelephoneListTypePtr;
+               std::map<int, wxString> *TelephoneListTokensPtr;
+               std::map<int, int> *TelephoneListPrefPtr;
+               wxListCtrl *TelephoneListCtrlPtr;
+               int TelephoneListIndex;
+               SectionType EditSectionType;    
+       
+};
+
+#endif // __frmContactEditorTelephone__
diff --git a/source/contacteditor/frmContactEditorTimezones.cpp b/source/contacteditor/frmContactEditorTimezones.cpp
new file mode 100644 (file)
index 0000000..80b52b2
--- /dev/null
@@ -0,0 +1,209 @@
+#include "frmContactEditorTimezones.h"
+#include <map>
+#include "../common/textprocessing.h"
+
+frmContactEditorTimezones::frmContactEditorTimezones( wxWindow* parent )
+:
+frmContactEditorTimezonesADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorTimezones::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorTimezones::SetEditorMode(bool EditMode, SectionType SectType)
+{
+
+       // Set the editor mode for adding or editing a timezone.
+
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Timezone"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Timezone"));
+       
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;
+               wxString strValue;
+               
+               // Load the data into the form.
+               
+               striter = TZListPtr->find(TZListIndex);
+                
+               if (striter->first == TZListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               cmbTimezone->SetValue(strValue);
+               
+               // Setup the Slider.
+               
+               intiter = TZListPrefPtr->find(TZListIndex);
+               
+               if (intiter->first == TZListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+       
+       EditSectionType = SectType;
+       
+}
+
+void frmContactEditorTimezones::ProcessAction( wxCommandEvent& event )
+{
+       
+       long ListCtrlIndex;
+
+       if (EditorMode == FALSE){
+       
+               // Add the language to the list.
+
+               wxString strValue;
+               
+               // Add language.
+               
+               TZListPtr->insert(std::make_pair(TZListIndex, cmbTimezone->GetValue()));
+               
+               // Add Email type.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       TZListTypePtr->insert(std::make_pair(TZListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       TZListTypePtr->insert(std::make_pair(TZListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       TZListTypePtr->insert(std::make_pair(TZListIndex, wxT("work")));
+               
+               }
+               
+               // Add Language priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TZListPrefPtr->insert(std::make_pair(TZListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       TZListPrefPtr->insert(std::make_pair(TZListIndex, 0));          
+               
+               }               
+               
+               // Add the data to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(TZListIndex);
+               coldata.SetData(TZListIndex);           
+               coldata.SetText(cmbTimezone->GetValue());
+               ListCtrlIndex = TZListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TZListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }
+               
+               this->Close();          
+       
+       } else if (EditorMode == TRUE){
+       
+               // Edit the language.
+               
+               wxString strAddress;
+               wxString strValue;
+               long longSelected = -1;
+
+               TZListPtr->erase(TZListIndex);
+               TZListPtr->insert(std::make_pair(TZListIndex, cmbTimezone->GetValue()));
+               
+               TZListPrefPtr->erase(TZListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TZListPrefPtr->insert(std::make_pair(TZListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       TZListPrefPtr->insert(std::make_pair(TZListIndex, 0));          
+               
+               }
+               
+               longSelected = TZListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               TZListCtrlPtr->SetItem(longSelected, 0, cmbTimezone->GetValue());               
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TZListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       TZListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }       
+                       
+               this->Close();
+       
+       }
+       
+}
+
+void frmContactEditorTimezones::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorTimezones::SetupPointers(std::map<int, wxString> *TZList,
+       std::map<int, wxString> *TZListAltID,
+       std::map<int, wxString> *TZListPID,
+       std::map<int, wxString> *TZListType,
+       std::map<int, wxString> *TZListTokens,
+       std::map<int, wxString> *TZListMediatype,       
+       std::map<int, int> *TZListPref,
+       wxListCtrl *TZListCtrl,
+       int TZIndex )
+{
+
+       // Setup the pointers so that the data can be processed without
+       // duplication.
+
+       TZListPtr = TZList;
+       TZListAltIDPtr = TZListAltID;
+       TZListPIDPtr = TZListPID;
+       TZListTypePtr = TZListType;
+       TZListTokensPtr = TZListTokens;
+       TZListPrefPtr = TZListPref;
+       TZListCtrlPtr = TZListCtrl;
+       TZListIndex = TZIndex;
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorTimezones.h b/source/contacteditor/frmContactEditorTimezones.h
new file mode 100644 (file)
index 0000000..09e771e
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef __frmContactEditorTimezones__
+#define __frmContactEditorTimezones__
+
+#include <map>
+
+/**
+@file
+Subclass of frmContactEditorTimezonesADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorTimezonesADT */
+class frmContactEditorTimezones : public frmContactEditorTimezonesADT
+{
+       protected:
+               // Handlers for frmContactEditorTimezonesADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorTimezones( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *TZList,
+                       std::map<int, wxString> *TZListAltID,
+                       std::map<int, wxString> *TZListPID,
+                       std::map<int, wxString> *TZListType,
+                       std::map<int, wxString> *TZListTokens,
+                       std::map<int, wxString> *TZListMediatype,
+                       std::map<int, int> *TZListPref,
+                       wxListCtrl *TZListCtrl,
+                       int TZIndex );
+       //// end generated class members
+       private:
+               bool EditorMode;        
+               std::map<int, wxString> *TZListPtr;
+               std::map<int, wxString> *TZListAltIDPtr;
+               std::map<int, wxString> *TZListPIDPtr;
+               std::map<int, wxString> *TZListTypePtr;
+               std::map<int, wxString> *TZListTokensPtr;
+               std::map<int, wxString> *TZListMediatypePtr;
+               std::map<int, int> *TZListPrefPtr;
+               wxListCtrl *TZListCtrlPtr;
+               int TZListIndex;
+               SectionType EditSectionType;    
+
+       
+};
+
+#endif // __frmContactEditorTimezones__
diff --git a/source/contacteditor/frmContactEditorTitles.cpp b/source/contacteditor/frmContactEditorTitles.cpp
new file mode 100644 (file)
index 0000000..9c8861d
--- /dev/null
@@ -0,0 +1,214 @@
+#include "frmContactEditorTitles.h"
+
+#include <map>
+#include "../enums.h"
+#include "../common/textprocessing.h"
+
+frmContactEditorTitles::frmContactEditorTitles( wxWindow* parent )
+:
+frmContactEditorTitlesADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorTitles::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorTitles::ProcessAction( wxCommandEvent& event )
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+       
+               wxString strValue;
+               
+               // Get the website address.
+               
+               TitlesListPtr->insert(std::make_pair(TitlesListIndex, txtTitle->GetValue()));
+               
+               // Get the type of website.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       TitlesListTypePtr->insert(std::make_pair(TitlesListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       TitlesListTypePtr->insert(std::make_pair(TitlesListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       TitlesListTypePtr->insert(std::make_pair(TitlesListIndex, wxT("work")));
+               
+               }
+               
+               // Add the website priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TitlesListPrefPtr->insert(std::make_pair(TitlesListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       TitlesListPrefPtr->insert(std::make_pair(TitlesListIndex, 0));          
+               
+               }
+               
+               // Add to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(TitlesListIndex);
+               coldata.SetData(TitlesListIndex);               
+               coldata.SetText(txtTitle->GetValue());
+               ListCtrlIndex = TitlesListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TitlesListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }               
+       
+               this->Close();          
+       
+       } else {
+       
+               // Update the title.
+               long longSelected = -1;         
+               wxString strValue;
+               TitlesListPtr->erase(TitlesListIndex);
+               TitlesListPtr->insert(std::make_pair(TitlesListIndex, txtTitle->GetValue()));
+               
+               // Update the slider priority.
+               
+               TitlesListPrefPtr->erase(TitlesListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TitlesListPrefPtr->insert(std::make_pair(TitlesListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       TitlesListPrefPtr->insert(std::make_pair(TitlesListIndex, 0));
+               
+               }               
+               
+               // Update the form.
+               
+               longSelected = TitlesListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               TitlesListCtrlPtr->SetItem(longSelected, 0, txtTitle->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       TitlesListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       TitlesListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }               
+       
+               this->Close();
+       
+       }
+}
+
+void frmContactEditorTitles::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Title"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Title"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Load the data into the form. Get the website.
+               
+               striter = TitlesListPtr->find(TitlesListIndex);
+                
+               if (striter->first == TitlesListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtTitle->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the website priority.
+               
+               intiter = TitlesListPrefPtr->find(TitlesListIndex);
+               
+               if (intiter->first == TitlesListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }       
+               
+       }
+       
+       EditSectionType = SectType;
+               
+}
+
+void frmContactEditorTitles::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorTitles::SetupPointers(std::map<int, wxString> *TitlesList,
+       std::map<int, wxString> *TitlesListLanguage,
+       std::map<int, wxString> *TitlesListAltID,
+       std::map<int, wxString> *TitlesListPID,
+       std::map<int, wxString> *TitlesListType,
+       std::map<int, wxString> *TitlesListTokens,
+       std::map<int, int> *TitlesListPref,
+       wxListCtrl *TitlesListCtrl,
+       int TitlesIndex )
+{
+
+       TitlesListPtr = TitlesList;
+       TitlesListLanguagePtr = TitlesListLanguage;
+       TitlesListAltIDPtr = TitlesListAltID;
+       TitlesListPIDPtr = TitlesListPID;
+       TitlesListTypePtr = TitlesListType;
+       TitlesListTokensPtr = TitlesListTokens;
+       TitlesListPrefPtr = TitlesListPref;
+       TitlesListCtrlPtr = TitlesListCtrl;
+       TitlesListIndex = TitlesIndex;
+
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorTitles.h b/source/contacteditor/frmContactEditorTitles.h
new file mode 100644 (file)
index 0000000..8f8e868
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef __frmContactEditorTitles__
+#define __frmContactEditorTitles__
+
+/**
+@file
+Subclass of frmContactEditorTitlesADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorTitlesADT */
+class frmContactEditorTitles : public frmContactEditorTitlesADT
+{
+       protected:
+               // Handlers for frmContactEditorTitlesADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorTitles( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *TitlesList,
+                       std::map<int, wxString> *TitlesListLanguage,
+                       std::map<int, wxString> *TitlesListAltID,
+                       std::map<int, wxString> *TitlesListPID,
+                       std::map<int, wxString> *TitlesListType,
+                       std::map<int, wxString> *TitlesListTokens,
+                       std::map<int, int> *TitlesListPref,
+                       wxListCtrl *TitlesListCtrl,
+                       int TitlesIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, wxString> *TitlesListPtr;
+               std::map<int, wxString> *TitlesListLanguagePtr;         
+               std::map<int, wxString> *TitlesListAltIDPtr;
+               std::map<int, wxString> *TitlesListPIDPtr;
+               std::map<int, wxString> *TitlesListTypePtr;
+               std::map<int, wxString> *TitlesListTokensPtr;
+               std::map<int, int> *TitlesListPrefPtr;
+               wxListCtrl *TitlesListCtrlPtr;
+               int TitlesListIndex;
+               SectionType EditSectionType;
+};
+
+#endif // __frmContactEditorTitles__
diff --git a/source/contacteditor/frmContactEditorVendor.cpp b/source/contacteditor/frmContactEditorVendor.cpp
new file mode 100644 (file)
index 0000000..c1340ef
--- /dev/null
@@ -0,0 +1,177 @@
+#include "frmContactEditorVendor.h"
+#include <wx/tokenzr.h>
+#include "../common/textprocessing.h"
+
+frmContactEditorVendor::frmContactEditorVendor( wxWindow* parent )
+:
+frmContactEditorVendorADT( parent )
+{
+
+}
+
+void frmContactEditorVendor::SetEditorMode(bool EditMode)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Vendor Namespace"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Add Vendor Namespace"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Get the vendor PEN.
+               
+               striter = VendorListPENPtr->find(VendorListIndex);
+                
+               if (striter->first == VendorListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtPEN->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the vendor element.
+
+               striter = VendorListElementPtr->find(VendorListIndex);
+                
+               if (striter->first == VendorListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtElement->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the vendor value.
+               
+               striter = VendorListPtr->find(VendorListIndex);
+                
+               if (striter->first == VendorListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+
+               txtValue->SetValue(strValue);
+               
+               strValue.Clear();               
+               
+       }
+       
+}
+
+void frmContactEditorVendor::ProcessAction( wxCommandEvent& event )
+{
+       
+       if (EditorMode == FALSE){
+
+               wxString strValue;
+               wxString strVNDID;
+               wxListItem coldata;     
+               long ListCtrlIndex;
+               
+               coldata.SetId(VendorListIndex);
+               coldata.SetData(VendorListIndex);
+               ListCtrlIndex = VendorListCtrlPtr->InsertItem(coldata);         
+               
+               // Get Vendor PEN.
+               
+               strValue = txtPEN->GetValue();
+               VendorListPENPtr->insert(std::make_pair(VendorListIndex, strValue));
+               
+               // Get Vendor Element.
+               
+               strValue = txtElement->GetValue();
+               VendorListElementPtr->insert(std::make_pair(VendorListIndex, strValue));
+               
+               // Get Vendor Value.
+               
+               strValue = txtValue->GetValue();
+               VendorListPtr->insert(std::make_pair(VendorListIndex, strValue));
+               
+               // Update form.
+               
+               strVNDID = txtPEN->GetValue() + wxT("-") + txtElement->GetValue();
+               
+               VendorListCtrlPtr->SetItem(ListCtrlIndex, 0, strVNDID);
+               
+               this->Close();
+               
+       } else if (EditorMode == TRUE){
+
+               long longSelected = -1; 
+               wxString strValue;
+               wxString strVNDID;
+               
+               longSelected = VendorListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               // Update Vendor PEN.
+               
+               VendorListPENPtr->erase(VendorListIndex);
+               strValue = txtPEN->GetValue();
+               VendorListPENPtr->insert(std::make_pair(VendorListIndex, strValue));            
+               
+               // Update Vendor Element.
+               
+               VendorListElementPtr->erase(VendorListIndex);
+               strValue = txtValue->GetValue();
+               VendorListElementPtr->insert(std::make_pair(VendorListIndex, strValue));                
+               
+               // Update Vendor Value.
+               
+               VendorListPtr->erase(VendorListIndex);
+               strValue = txtValue->GetValue();
+               VendorListPtr->insert(std::make_pair(VendorListIndex, strValue));
+               
+               // Update form.
+
+               strVNDID = txtPEN->GetValue() + wxT("-") + txtElement->GetValue();              
+               VendorListCtrlPtr->SetItem(longSelected, 0, strVNDID);
+               
+               this->Close();  
+       
+       }
+}
+
+void frmContactEditorVendor::SetupPointers( std::map<int, wxString> *VendorList,
+                       std::map<int, wxString> *VendorListPEN,
+                       std::map<int, wxString> *VendorListElement,
+                       wxListCtrl *VendorListCtrl,
+                       int VendorIndex )
+{
+
+       VendorListPtr = VendorList;
+       VendorListPENPtr = VendorListPEN;
+       VendorListElementPtr = VendorListElement;
+       VendorListCtrlPtr = VendorListCtrl;
+       VendorListIndex = VendorIndex;
+       
+}
+
+void frmContactEditorVendor::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
diff --git a/source/contacteditor/frmContactEditorVendor.h b/source/contacteditor/frmContactEditorVendor.h
new file mode 100644 (file)
index 0000000..9decec3
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef __frmContactEditorVendor__
+#define __frmContactEditorVendor__
+
+/**
+@file
+Subclass of frmContactEditorVendorADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorVendorADT */
+class frmContactEditorVendor : public frmContactEditorVendorADT
+{
+       protected:
+               // Handlers for frmContactEditorVendorADT events.
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorVendor( wxWindow* parent );
+               void SetEditorMode(bool EditMode);
+               void SetupPointers( std::map<int, wxString> *VendorList,
+                       std::map<int, wxString> *VendorListPEN,
+                       std::map<int, wxString> *VendorListElement,
+                       wxListCtrl *VendorListCtrl,
+                       int VendorIndex );
+       //// end generated class members
+
+               bool EditorMode;
+               std::map<int, wxString> *VendorListPtr;         
+               std::map<int, wxString> *VendorListPENPtr;
+               std::map<int, wxString> *VendorListElementPtr;          
+               wxListCtrl *VendorListCtrlPtr;
+               int VendorListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorVendor__
diff --git a/source/contacteditor/frmContactEditorWebsites.cpp b/source/contacteditor/frmContactEditorWebsites.cpp
new file mode 100644 (file)
index 0000000..c4030b6
--- /dev/null
@@ -0,0 +1,214 @@
+#include "frmContactEditorWebsites.h"
+
+#include <map>
+#include "../enums.h"
+#include "../common/textprocessing.h"
+
+frmContactEditorWebsites::frmContactEditorWebsites( wxWindow* parent )
+:
+frmContactEditorWebsitesADT( parent )
+{
+       EditorMode = FALSE;
+       sliPriority->Disable();
+}
+
+void frmContactEditorWebsites::EnablePriority( wxCommandEvent& event )
+{
+       if (chkUsePref->IsChecked()){
+               sliPriority->Enable();
+       } else {
+               sliPriority->Disable();
+       }
+}
+
+void frmContactEditorWebsites::ProcessAction( wxCommandEvent& event )
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+       
+               wxString strValue;
+               
+               // Get the website address.
+               
+               WebsiteListPtr->insert(std::make_pair(WebsiteListIndex, txtWebsite->GetValue()));
+               
+               // Get the type of website.
+               
+               if (EditSectionType == CE_GENERAL){
+               
+                       WebsiteListTypePtr->insert(std::make_pair(WebsiteListIndex, wxT("")));
+               
+               } else if (EditSectionType == CE_HOME) {
+               
+                       WebsiteListTypePtr->insert(std::make_pair(WebsiteListIndex, wxT("home")));
+               
+               } else if (EditSectionType == CE_WORK) {
+               
+                       WebsiteListTypePtr->insert(std::make_pair(WebsiteListIndex, wxT("work")));
+               
+               }
+               
+               // Add the website priority.
+               
+               if (chkUsePref->IsChecked()){
+               
+                       WebsiteListPrefPtr->insert(std::make_pair(WebsiteListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       WebsiteListPrefPtr->insert(std::make_pair(WebsiteListIndex, 0));                
+               
+               }
+               
+               // Add to the form.
+               
+               wxListItem coldata;
+               
+               coldata.SetId(WebsiteListIndex);
+               coldata.SetData(WebsiteListIndex);              
+               coldata.SetText(txtWebsite->GetValue());
+               ListCtrlIndex = WebsiteListCtrlPtr->InsertItem(coldata);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       WebsiteListCtrlPtr->SetItem(ListCtrlIndex, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               }               
+       
+               this->Close();          
+       
+       } else {
+       
+               // Update the website address.
+               long longSelected = -1;         
+               wxString strValue;              
+               WebsiteListPtr->erase(WebsiteListIndex);
+               WebsiteListPtr->insert(std::make_pair(WebsiteListIndex, txtWebsite->GetValue()));
+               
+               // Update the slider priority.
+               
+               WebsiteListPrefPtr->erase(WebsiteListIndex);
+               
+               if (chkUsePref->IsChecked()){
+               
+                       WebsiteListPrefPtr->insert(std::make_pair(WebsiteListIndex, sliPriority->GetValue()));
+               
+               } else {
+               
+                       WebsiteListPrefPtr->insert(std::make_pair(WebsiteListIndex, 0));
+               
+               }               
+               
+               // Update the form.
+               
+               longSelected = WebsiteListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }               
+               
+               WebsiteListCtrlPtr->SetItem(longSelected, 0, txtWebsite->GetValue());
+               
+               if (chkUsePref->IsChecked()){
+               
+                       WebsiteListCtrlPtr->SetItem(longSelected, 1, wxString::Format(wxT("%i"), sliPriority->GetValue()));
+               
+               } else {
+               
+                       WebsiteListCtrlPtr->SetItem(longSelected, 1, wxT(""));
+               
+               }               
+       
+               this->Close();
+       
+       }
+}
+
+void frmContactEditorWebsites::SetEditorMode(bool EditMode, SectionType SectType)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add Website"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Modify Website"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Load the data into the form. Get the website.
+               
+               striter = WebsiteListPtr->find(WebsiteListIndex);
+                
+               if (striter->first == WebsiteListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtWebsite->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the website priority.
+               
+               intiter = WebsiteListPrefPtr->find(WebsiteListIndex);
+               
+               if (intiter->first == WebsiteListIndex && intiter->second > 0){
+               
+                       sliPriority->SetValue(intiter->second);
+                       sliPriority->Enable();
+                       chkUsePref->SetValue(TRUE);
+               
+               }               
+               
+       }
+       
+       EditSectionType = SectType;
+               
+}
+
+void frmContactEditorWebsites::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmContactEditorWebsites::SetupPointers(std::map<int, wxString> *WebsiteList,
+       std::map<int, wxString> *WebsiteListAltID,
+       std::map<int, wxString> *WebsiteListPID,
+       std::map<int, wxString> *WebsiteListType,
+       std::map<int, wxString> *WebsiteListTokens,
+       std::map<int, wxString> *WebsiteListMediatype,
+       std::map<int, int> *WebsiteListPref,
+       wxListCtrl *WebsiteListCtrl,
+       int WebsiteIndex )
+{
+
+       WebsiteListPtr = WebsiteList;
+       WebsiteListAltIDPtr = WebsiteListAltID;
+       WebsiteListPIDPtr = WebsiteListPID;
+       WebsiteListTypePtr = WebsiteListType;
+       WebsiteListTokensPtr = WebsiteListTokens;
+       WebsiteListMediatypePtr = WebsiteListMediatype;
+       WebsiteListPrefPtr = WebsiteListPref;
+       WebsiteListCtrlPtr = WebsiteListCtrl;
+       WebsiteListIndex = WebsiteIndex;
+
+}
\ No newline at end of file
diff --git a/source/contacteditor/frmContactEditorWebsites.h b/source/contacteditor/frmContactEditorWebsites.h
new file mode 100644 (file)
index 0000000..5178d40
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef __frmContactEditorWebsites__
+#define __frmContactEditorWebsites__
+
+/**
+@file
+Subclass of frmContactEditorWebsitesADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorWebsitesADT */
+class frmContactEditorWebsites : public frmContactEditorWebsitesADT
+{
+       protected:
+               // Handlers for frmContactEditorWebsitesADT events.
+               void EnablePriority( wxCommandEvent& event );
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorWebsites( wxWindow* parent );
+               void SetEditorMode(bool EditMode, SectionType SectType);
+               void SetupPointers(std::map<int, wxString> *WebsiteList,
+                       std::map<int, wxString> *WebsiteListAltID,
+                       std::map<int, wxString> *WebsiteListPID,
+                       std::map<int, wxString> *WebsiteListType,
+                       std::map<int, wxString> *WebsiteListTokens,
+                       std::map<int, wxString> *WebsiteListMediatype,
+                       std::map<int, int> *WebsiteListPref,
+                       wxListCtrl *WebsiteListCtrl,
+                       int WebsiteIndex );
+       //// end generated class members
+       
+       private:
+       
+               bool EditorMode;
+               std::map<int, wxString> *WebsiteListPtr;
+               std::map<int, wxString> *WebsiteListAltIDPtr;
+               std::map<int, wxString> *WebsiteListPIDPtr;
+               std::map<int, wxString> *WebsiteListTypePtr;
+               std::map<int, wxString> *WebsiteListTokensPtr;
+               std::map<int, wxString> *WebsiteListMediatypePtr;
+               std::map<int, int> *WebsiteListPrefPtr;
+               wxListCtrl *WebsiteListCtrlPtr;
+               int WebsiteListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorWebsites__
diff --git a/source/contacteditor/frmContactEditorXToken.cpp b/source/contacteditor/frmContactEditorXToken.cpp
new file mode 100644 (file)
index 0000000..5474373
--- /dev/null
@@ -0,0 +1,147 @@
+#include "frmContactEditorXToken.h"
+#include <wx/tokenzr.h>
+#include "../common/textprocessing.h"
+
+frmContactEditorXToken::frmContactEditorXToken( wxWindow* parent )
+:
+frmContactEditorXTokenADT( parent )
+{
+
+}
+
+void frmContactEditorXToken::ProcessAction( wxCommandEvent& event )
+{
+
+       long ListCtrlIndex;
+       
+       if (EditorMode == FALSE){
+
+               wxString strValue;
+               wxListItem coldata;             
+               
+               coldata.SetId(XTokenListIndex);
+               coldata.SetData(XTokenListIndex);
+               ListCtrlIndex = XTokenListCtrlPtr->InsertItem(coldata);         
+               
+               // Get the X-Token value.
+               
+               strValue = txtValue->GetValue();
+               XTokenListPtr->insert(std::make_pair(XTokenListIndex, strValue));               
+               
+               // Get the X-Token name.
+               
+               strValue = txtTokenName->GetValue();
+               XTokenListTokensPtr->insert(std::make_pair(XTokenListIndex, strValue));
+               
+               // Update form.
+               
+               XTokenListCtrlPtr->SetItem(ListCtrlIndex, 0, strValue);
+               
+               this->Close();
+               
+       } else if (EditorMode == TRUE){
+
+               long longSelected = -1; 
+               wxString strValue;
+               
+               longSelected = XTokenListCtrlPtr->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+                       return;
+               }
+               
+               // Update X-Token value.
+               
+               XTokenListPtr->erase(XTokenListIndex);
+               strValue = txtValue->GetValue();
+               XTokenListPtr->insert(std::make_pair(XTokenListIndex, strValue));               
+               
+               // Update X-Token name.
+               
+               XTokenListTokensPtr->erase(XTokenListIndex);
+               strValue = txtTokenName->GetValue();
+               XTokenListTokensPtr->insert(std::make_pair(XTokenListIndex, strValue));
+               
+               // Update form.
+
+               XTokenListCtrlPtr->SetItem(longSelected, 0,strValue);
+               
+               this->Close();
+       
+       }
+       
+}
+
+void frmContactEditorXToken::SetEditorMode(bool EditMode)
+{
+       // Set if the editor is adding or editing an address.
+       // FALSE = Add
+       // TRUE = Edit
+       
+       if (EditMode == FALSE){
+       
+               EditorMode = FALSE;
+               btnAction->SetLabel(_("Add"));
+               this->SetTitle(_("Add X-Token"));
+       
+       } else if (EditMode == TRUE){
+       
+               EditorMode = TRUE;
+               btnAction->SetLabel(_("Modify"));
+               this->SetTitle(_("Add X-Token"));
+               
+               std::map<int,int>::iterator intiter;
+               std::map<int,wxString>::iterator striter;               
+               wxString strValue;
+               
+               // Get the X-Token name.
+               
+               striter = XTokenListTokensPtr->find(XTokenListIndex);
+                
+               if (striter->first == XTokenListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtTokenName->SetValue(strValue);
+               
+               strValue.Clear();
+               
+               // Get the X-Token value.
+
+               striter = XTokenListPtr->find(XTokenListIndex);
+                
+               if (striter->first == XTokenListIndex){
+               
+                       strValue = striter->second;
+               
+               }
+               
+               txtValue->SetValue(strValue);
+               
+               strValue.Clear();               
+               
+       }
+       
+}
+
+void frmContactEditorXToken::SetupPointers( std::map<int, wxString> *XTokenList,
+                       std::map<int, wxString> *XTokenListTokens,
+                       wxListCtrl *XTokenListCtrl,
+                       int XTokenIndex )
+{
+
+       XTokenListPtr = XTokenList;
+       XTokenListTokensPtr = XTokenListTokens;
+       XTokenListCtrlPtr = XTokenListCtrl;
+       XTokenListIndex = XTokenIndex;
+
+}
+
+void frmContactEditorXToken::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
diff --git a/source/contacteditor/frmContactEditorXToken.h b/source/contacteditor/frmContactEditorXToken.h
new file mode 100644 (file)
index 0000000..b05a17c
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef __frmContactEditorXToken__
+#define __frmContactEditorXToken__
+
+/**
+@file
+Subclass of frmContactEditorXTokenADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+#include "../AppXestiaAddrBk.h"
+#include "../enums.h"
+
+//// end generated include
+
+/** Implementing frmContactEditorXTokenADT */
+class frmContactEditorXToken : public frmContactEditorXTokenADT
+{
+       protected:
+               // Handlers for frmContactEditorXTokenADT events.
+               void ProcessAction( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmContactEditorXToken( wxWindow* parent );
+               void SetEditorMode(bool EditMode);
+               void SetupPointers( std::map<int, wxString> *XTokenList,
+                       std::map<int, wxString> *XTokenListTokens,
+                       wxListCtrl *XTokenListCtrl,
+                       int XTokenIndex );
+       //// end generated class members
+
+               bool EditorMode;
+               std::map<int, wxString> *XTokenListPtr;         
+               std::map<int, wxString> *XTokenListTokensPtr;
+               wxListCtrl *XTokenListCtrlPtr;
+               int XTokenListIndex;
+               SectionType EditSectionType;
+       
+};
+
+#endif // __frmContactEditorXToken__
diff --git a/source/debug.h b/source/debug.h
new file mode 100644 (file)
index 0000000..8d1c8b6
--- /dev/null
@@ -0,0 +1 @@
diff --git a/source/enums.h b/source/enums.h
new file mode 100644 (file)
index 0000000..907a2f0
--- /dev/null
@@ -0,0 +1,47 @@
+#include <iostream>
+
+#ifndef ENUMS_H
+#define ENUMS_H
+
+enum SectionType { CE_GENERAL, CE_HOME, CE_WORK };
+
+#define AM_ADDCONTACT 0;
+#define AM_EDITCONTACT 1;
+#define AM_DELETECONTACT 2;
+#define AM_GETALLCONTACTS 3;
+
+// Related type setup - Also with ints for pointing in frmContactEditorRelated.
+
+/*
+
+enum RelatedType { CE_CONTACT, CE_ACQUAINTANCE, CE_FRIEND, CE_MET,
+       CE_COWORKER, CE_COLLEAGUE, CE_CORESIDENT, CE_NEIGHBOR,
+       CE_CHILD, CE_PARENT, CE_SIBLING, CE_SPOUSE,
+       CE_KIN, CE_MUSE, CE_CRUSH, CE_DATE, CE_SWEETHEART,
+       CE_ME, CE_AGENT, CE_EMERGENCY };
+       
+int TypeCEContact = CE_CONTACT;
+int TypeCEAcquaintance = CE_ACQUAINTANCE;
+int TypeCEFriend = CE_FRIEND;
+int TypeCEMet = CE_MET;
+int TypeCECoworker = CE_COWORKER;
+int TypeCEColleague = CE_COLLEAGUE;
+int TypeCECoresident = CE_CORESIDENT;
+int TypeCENeighbor = CE_NEIGHBOR;
+int TypeCEChild = CE_CHILD;
+int TypeCEParent = CE_PARENT;
+int TypeCESibling = CE_SIBLING;
+int TypeCESpouse = CE_SPOUSE;
+int TypeCEKin = CE_KIN;
+int TypeCEMuse = CE_MUSE;
+int TypeCECrush = CE_CRUSH;
+int TypeCEDate = CE_DATE;
+int TypeCESweetheart = CE_SWEETHEART;
+int TypeCEMe = CE_ME;
+int TypeCEAgent = CE_AGENT;
+int TypeCEEmergency = CE_EMERGENCY;
+
+*/
+
+#endif
+
diff --git a/source/export/export-vcard3.cpp b/source/export/export-vcard3.cpp
new file mode 100644 (file)
index 0000000..5536758
--- /dev/null
@@ -0,0 +1,114 @@
+#include <wx/ffile.h>
+#include <wx/arrstr.h>
+#include <wx/filefn.h>
+#include <wx/tokenzr.h>
+
+#include "../vcard/vcard.h"
+#include "../vcard/vcard34conv.h"
+
+void ExportVCard3(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount){
+
+       if (DirMode == TRUE){
+       
+               // Output each contact into the directory.
+       
+               // Load the contact file and covert it to vCard 3.0.
+               
+               wxString Filename;
+               wxString FinalFilename;
+               wxString ContactData;
+               
+               for (int i = 0; i < FileList->GetCount(); i++){
+               
+                       // Get the final part of the path (filename).
+                       
+                       vCard34Conv vCardConvObj;               
+                       vCardConvObj.ConvertToV3(FileList->Item(i), &ContactData);
+
+#if defined(__HAIKU__)
+    
+
+#elif defined(__WIN32__)
+
+                       wxStringTokenizer FileToken(FileList->Item(i), wxT("\\"));
+
+                       while (FileToken.HasMoreTokens()){
+                               Filename = FileToken.GetNextToken();
+                       }
+
+                       FinalFilename.Append(OutputLocation);
+                       FinalFilename.Append(wxT("\\"));
+                       FinalFilename.Append(Filename);
+
+#else
+                       
+                       wxStringTokenizer FileToken(FileList->Item(i), wxT("//"));
+
+                       while(FileToken.HasMoreTokens()){
+                               Filename = FileToken.GetNextToken();
+                       }
+               
+                       FinalFilename.Append(OutputLocation);
+                       FinalFilename.Append(wxT("/"));
+                       FinalFilename.Append(Filename);
+
+#endif
+
+                       // Write the converted card to the file.
+                       
+                       wxFFile OutputFile;
+                       
+#if wxABI_VERSION < 20900
+                       OutputFile.Open(FinalFilename, wxT("w"));
+#else
+                       OutputFile.Open(FinalFilename, wxT("w"));
+#endif
+                       
+                       OutputFile.Write(ContactData, wxConvAuto());
+                       
+                       OutputFile.Close();
+                       
+                       (*ExportCount)++;
+                       
+                       Filename.Clear();
+                       FinalFilename.Clear();
+                       ContactData.Clear();
+               
+               }
+       
+       } else {
+       
+               // Output all contacts into one file.
+               
+               wxFFile OutputFile;
+               
+               // Open the output file.
+               
+#if wxABI_VERSION < 20900
+               OutputFile.Open(OutputLocation.c_str(), wxT("w"));
+#else
+               OutputFile.Open(OutputLocation, wxT("w"));
+#endif
+               
+               wxString InputFileData;
+               
+               for (int i = 0; i < FileList->GetCount(); i++){
+               
+                       // Open up the input file.
+
+                       vCard34Conv vCardConvObj;               
+                       vCardConvObj.ConvertToV3(FileList->Item(i), &InputFileData);
+
+                       OutputFile.Write(InputFileData, wxConvAuto());
+                       
+                       InputFileData.Clear();
+                       
+                       (*ExportCount)++;
+               
+               }
+       
+               OutputFile.Close();
+       
+       }
+
+}
\ No newline at end of file
diff --git a/source/export/export-vcard3.h b/source/export/export-vcard3.h
new file mode 100644 (file)
index 0000000..91f0ad3
--- /dev/null
@@ -0,0 +1,10 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef EXPORT_VCARD3_H
+#define EXPORT_VCARD3_H
+
+void ExportVCard3(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount);
+
+#endif
diff --git a/source/export/export-vcard4.cpp b/source/export/export-vcard4.cpp
new file mode 100644 (file)
index 0000000..e4f79fe
--- /dev/null
@@ -0,0 +1,101 @@
+#include <wx/ffile.h>
+#include <wx/arrstr.h>
+#include <wx/filefn.h>
+#include <wx/tokenzr.h>
+
+void ExportVCard4(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount){
+
+       if (DirMode == TRUE){
+       
+               // Output each contact into the directory.
+       
+               // Simply just copy the files unchanged.
+               
+               wxString Filename;
+               wxString FinalFilename;
+               
+               for (int i = 0; i < FileList->GetCount(); i++){
+               
+                       // Get the final part of the path (filename).
+                       
+#if defined(__HAIKU__)
+    
+
+#elif defined(__WIN32__)
+
+                       wxStringTokenizer FileToken(FileList->Item(i), wxT("//"));
+
+                       while (FileToken.HasMoreTokens()){
+                               Filename = FileToken.GetNextToken();
+                       }
+
+                       // Copy the file to the requested directory.
+
+                       FinalFilename.Append(OutputLocation);
+                       FinalFilename.Append(wxT("/"));
+                       FinalFilename.Append(Filename);
+
+#else
+                       
+                       wxStringTokenizer FileToken(FileList->Item(i), wxT("//"));
+
+                       while(FileToken.HasMoreTokens()){
+                               Filename = FileToken.GetNextToken();
+                       }
+               
+                       // Copy the file to the requested directory.
+               
+                       FinalFilename.Append(OutputLocation);
+                       FinalFilename.Append(wxT("/"));
+                       FinalFilename.Append(Filename);
+
+#endif
+               
+                       bool CopyResult = wxCopyFile(FileList->Item(i), FinalFilename);
+                       
+                       (*ExportCount)++;
+                       
+                       Filename.Clear();
+                       FinalFilename.Clear();
+               
+               }
+       
+       } else {
+       
+               // Output all contacts into one file.
+               
+               wxFFile OutputFile;
+               wxFFile InputFile;
+               
+               // Open the output file.
+               
+#if wxABI_VERSION < 20900
+               OutputFile.Open(OutputLocation.c_str(), wxT("w"));
+#else
+               OutputFile.Open(OutputLocation, wxT("w"));
+#endif
+               
+               wxString InputFileData;
+               
+               for (int i = 0; i < FileList->GetCount(); i++){
+               
+                       // Open up the input file.
+               
+                       InputFile.Open(FileList->Item(i), wxT("r"));
+                       
+                       InputFile.ReadAll(&InputFileData, wxConvAuto());
+
+                       OutputFile.Write(InputFileData, wxConvAuto());
+                       
+                       InputFile.Close();
+                       InputFileData.Clear();
+                       
+                       (*ExportCount)++;
+               
+               }
+       
+               OutputFile.Close();
+       
+       }
+
+}
\ No newline at end of file
diff --git a/source/export/export-vcard4.h b/source/export/export-vcard4.h
new file mode 100644 (file)
index 0000000..2e446b9
--- /dev/null
@@ -0,0 +1,11 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#ifndef EXPORT_VCARD4_H
+#define EXPORT_VCARD4_H
+
+void ExportVCard4(bool DirMode, wxString OutputLocation, wxArrayString *FileList, int *ExportCount);
+
+#endif  
diff --git a/source/export/export.cpp b/source/export/export.cpp
new file mode 100644 (file)
index 0000000..88d8b28
--- /dev/null
@@ -0,0 +1,89 @@
+#include <wx/filedlg.h>
+#include <wx/arrstr.h>
+#include <csignal>
+
+#include "../frmMain.h"
+#include "export-vcard3.h"
+#include "export-vcard4.h"
+
+void ExportRun(frmMain *frmMainPtrInc, wxArrayString *FileListInc){
+
+       frmMainPtrInc->PauseAllTimers();
+
+       wxString FileTypes;
+       
+       bool DirMode = FALSE;
+       long ContactsExported = 0;
+       long ContactsCollected = 0;
+       int ExportType = 0;
+       int ExportCount = 0;
+       wxString FinalFilename;
+       
+       FileTypes.Append(wxT("vCard 4.0 (directory, one contact per file) (*.vcf)"));
+       FileTypes.Append(wxT("|*.vcf|"));
+       FileTypes.Append(wxT("vCard 4.0 (file, all contacts in one file) (*.vcf)"));
+       FileTypes.Append(wxT("|*.vcf|"));
+       FileTypes.Append(wxT("vCard 3.0 (directory, one contact per file) (*.vcf)"));
+       FileTypes.Append(wxT("|*.vcf|"));
+       FileTypes.Append(wxT("vCard 3.0 (file, all contacts in one file) (*.vcf)"));
+       FileTypes.Append(wxT("|*.vcf"));
+
+       // Open up the dialog to export file data.
+       
+       wxFileDialog ExportDlg(frmMainPtrInc, wxT("Export Contacts"), wxT(""), wxT(""),
+               FileTypes, wxFD_SAVE|wxFD_OVERWRITE_PROMPT);
+       
+       if (ExportDlg.ShowModal() == wxID_CANCEL){
+       
+               frmMainPtrInc->ResumeAllTimers();
+               return;
+       
+       }
+
+       // Find which data type is being used.
+               
+       ExportType = ExportDlg.GetFilterIndex();
+
+       if (ExportType == 0 || ExportType == 2){
+               DirMode = TRUE;
+       }
+
+       // Process the filename based on data type.
+       
+       if (DirMode == FALSE){
+       
+               // All contacts exported into one file. Setup the filename.
+       
+               FinalFilename = ExportDlg.GetPath();
+       
+       } else {
+       
+               // One contact per filename. Setup the directory name.
+       
+               FinalFilename = ExportDlg.GetDirectory();
+       
+       }
+
+       if (ExportType == 0 || ExportType == 1){
+       
+               ExportVCard4(DirMode, FinalFilename, FileListInc, &ExportCount);
+       
+       }
+       
+       // vCard 3.0 export
+       
+       if (ExportType == 2 || ExportType == 3){
+       
+               ExportVCard3(DirMode, FinalFilename, FileListInc, &ExportCount);
+
+       }
+       
+       // Notify the user of how many contacts
+       // were exported.
+       
+       wxMessageBox(wxString::Format(_("%i contacts exported."), ExportCount), _("Contacts exported"));
+       //wxMessageBox(_("Selected contacts have been exported."), _("Contacts exported"));
+       
+       frmMainPtrInc->ResumeAllTimers();
+
+} 
diff --git a/source/export/export.h b/source/export/export.h
new file mode 100644 (file)
index 0000000..a147d48
--- /dev/null
@@ -0,0 +1,12 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#include "../frmMain.h"
+
+#ifndef EXPORT_EXPORT_H
+#define EXPORT_EXPORT_H
+
+void ExportRun(frmMain *frmMainPtrInc, wxArrayString *FileListInc);
+
+#endif 
diff --git a/source/frmAbout.cpp b/source/frmAbout.cpp
new file mode 100644 (file)
index 0000000..b10e104
--- /dev/null
@@ -0,0 +1,45 @@
+#include <wx/wx.h>
+#include <wx/string.h>
+#include <wx/mstream.h>
+#include <string.h>
+
+#include "frmAbout.h"
+#include "version.h"
+#include "bitmaps.h"
+
+frmAbout::frmAbout( wxWindow* parent )
+:
+frmAboutADT( parent )
+{
+
+}
+
+void frmAbout::CloseAboutWindow( wxCommandEvent& event )
+{
+    Close(this);
+}
+
+void frmAbout::SetupAboutWindow()
+{
+  
+    wxString versionlabel, buildlabel;
+    wxMemoryInputStream istream(bigimgs_aboutimage_png, sizeof(bigimgs_aboutimage_png));
+    wxImage bigimgs_aboutimage_png(istream, wxBITMAP_TYPE_PNG);
+    wxBitmap aboutscreen(bigimgs_aboutimage_png, -1);
+    bmpLogo->SetBitmap(aboutscreen);
+    
+    versionlabel.Append(wxT("Version "));
+    versionlabel.Append(wxT(XSDAB_VERSION));
+    
+    buildlabel.Append(wxT("Built on "));
+    buildlabel.Append(wxT(__DATE__));
+    buildlabel.Append(wxT(" at "));
+    buildlabel.Append(wxT(__TIME__));
+    buildlabel.Append(wxT("."));    
+    
+    //wxJoin(arrayversionlabel, " ", '\0');
+    
+    lblVersion->SetLabel(versionlabel);        
+    lblCompileTime->SetLabel(buildlabel);
+    
+}
\ No newline at end of file
diff --git a/source/frmAbout.h b/source/frmAbout.h
new file mode 100644 (file)
index 0000000..ce4c242
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef __frmAbout__
+#define __frmAbout__
+
+/**
+@file
+Subclass of frmAboutADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+
+//// end generated include
+
+/** Implementing frmAboutADT */
+class frmAbout : public frmAboutADT
+{
+       protected:
+               // Handlers for frmAboutADT events.
+               void CloseAboutWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmAbout( wxWindow* parent );
+               void SetupAboutWindow();
+       //// end generated class members
+       
+};
+
+#endif // __frmAbout__
diff --git a/source/frmActivityMgr.cpp b/source/frmActivityMgr.cpp
new file mode 100644 (file)
index 0000000..39274fd
--- /dev/null
@@ -0,0 +1,1897 @@
+#include "frmActivityMgr.h"
+#include <wx/mstream.h>
+#include <wx/file.h>
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <wx/dir.h>
+#include <wx/filefn.h>
+#include <thread>
+#include <curl/curl.h>
+
+#include "bitmaps.h"
+#include "enums.h"
+#include "common/preferences.h"
+#include "frmConflictResolution.h"
+#include "frmInvalidSSLCertificate.h"
+#include "frmMain.h"
+#include "common/events.h"
+#include "common/filename.h"
+#include "common/dirs.h"
+#include "vcard/vcard34conv.h"
+#include "vcard/vcard.h"
+
+
+#ifndef FRMACTIVITYMGR_H
+#define FRMACTIVITYMGR_H
+
+DEFINE_EVENT_TYPE(ACTMGR_RESUMEPROC);
+DEFINE_EVENT_TYPE(ACTMGR_TOGGLECONN);
+DEFINE_EVENT_TYPE(ACTMGR_STARTTIMER);
+DEFINE_EVENT_TYPE(ACTMGR_STOPTIMER);
+DEFINE_EVENT_TYPE(ACTMGR_STARTPROCESSTIMER);
+DEFINE_EVENT_TYPE(ACTMGR_STOPPROCESSTIMER);
+
+BEGIN_EVENT_TABLE(frmActivityMgr, wxWindow)
+  EVT_COMMAND(wxID_ANY, ACTMGR_RESUMEPROC, frmActivityMgr::ResumeProcessing)
+  EVT_COMMAND(wxID_ANY, ACTMGR_TOGGLECONN, frmActivityMgr::ToggleConnectionStatus)
+  EVT_COMMAND(wxID_ANY, ACTMGR_STARTTIMER, frmActivityMgr::StartTimer)
+  EVT_COMMAND(wxID_ANY, ACTMGR_STOPTIMER, frmActivityMgr::StopTimer)
+  EVT_COMMAND(wxID_ANY, ACTMGR_STARTPROCESSTIMER, frmActivityMgr::StartProcessTimer)
+  EVT_COMMAND(wxID_ANY, ACTMGR_STOPPROCESSTIMER, frmActivityMgr::StopProcessTimer)
+END_EVENT_TABLE()
+
+frmActivityMgr::frmActivityMgr( wxWindow* parent )
+:
+frmActivityMgrADT( parent )
+{
+
+       frmMain *frmMainPtrGet = static_cast<frmMain*>(frmMainPtr);
+
+       wxMemoryInputStream istream(icons_activitywindow_png, sizeof(icons_activitywindow_png));
+       wxImage icons_activitywindow_pngi(istream, wxBITMAP_TYPE_PNG);
+       wxBitmap activityiconbmp(icons_activitywindow_pngi, -1);
+       wxIcon activityicon;
+       activityicon.CopyFromBitmap(activityiconbmp);
+       this->SetIcon(activityicon); 
+
+       wxMemoryInputStream istream2(misc_activitysleep_png, sizeof(misc_activitysleep_png));
+       wxImage misc_activitysleep_pngi(istream2, wxBITMAP_TYPE_PNG);
+       wxBitmap sleepiconbmp(misc_activitysleep_pngi, -1);
+       SleepBitmap = sleepiconbmp;
+       bmpActivity->SetBitmap(SleepBitmap);
+       ActProcessTimer.SetupPointers(this);
+       lblDetails->SetLabel(_("No activity."));
+       
+       ActListProcTimer.SetupPointers(&ActivityList, &ActivityListIndex, &ActivityListTaskDetail, 
+                                       &TasksActive, lstActivity, lblDetails, GauProgress, this, &AnimationTimer,
+                                       &ActProcessTimer, &ActivityListFinDate);
+       
+       AnimationTimer.SetBitmap(bmpActivity);
+       AnimationTimer.SetSleepBitmap(&SleepBitmap);
+       AnimationTimer.SetupPointer(this->GetParent());
+       
+       wxListItem ColumnData;
+       ColumnData.SetId(0);
+       ColumnData.SetText(_("Activity"));
+       ColumnData.SetWidth(175);
+       lstActivity->InsertColumn(0, ColumnData);
+       
+       wxListItem ColumnData2;
+       ColumnData2.SetId(1);
+       ColumnData2.SetText(_("Account"));
+       ColumnData2.SetWidth(100);
+       lstActivity->InsertColumn(1, ColumnData2);
+
+       wxListItem ColumnData3;
+       ColumnData3.SetId(2);
+       ColumnData3.SetText(_("Status"));
+       ColumnData3.SetWidth(100);
+       lstActivity->InsertColumn(2, ColumnData3);
+       
+       //AnimationTimer.StartAnimation();
+       
+       // Create recovery database if it doesn't exist.
+       
+       wxString RecoveryFilename = GetRecoveryDB();
+       
+       wxFile RecoveryDB;
+       
+       if (wxFile::Exists(RecoveryFilename) == FALSE){
+       
+               // Create the recovery database.
+
+               RecoveryDB.Open(RecoveryFilename.c_str(), wxFile::write);       
+       
+               RecoveryDB.Write(wxT("BEGIN:XAB-RECOVERYDB\r\n"), wxConvUTF8);
+               RecoveryDB.Write(wxT("VERSION:1.0\r\n"), wxConvUTF8);
+               RecoveryDB.Write(wxT("COMMENT:Please do not alter or delete this file. DATA LOSS IS POSSIBLE!\r\n"), wxConvUTF8);
+               RecoveryDB.Write(wxT("END:XAB-RECOVERYDB\r\n"), wxConvUTF8);
+               RecoveryDB.Close();
+
+       }
+       
+       wxFFile RecoveryDBF;
+       
+#if wxABI_VERSION < 20900
+       RecoveryDBF.Open(RecoveryFilename.c_str(), wxT("r"));
+#else
+       RecoveryDBF.Open(RecoveryFilename, wxT("r"));
+#endif 
+       
+       // Load the recovery database for tasks not done.
+       
+       if (RecoveryDBF.IsOpened() == TRUE){
+       
+               wxString wxSRecoveryDB;
+               wxString RecoveryLine;
+       
+               // Check if we are using wxWidgets version 2.8 or less and
+               // execute the required command accordingly.
+       
+               RecoveryDBF.ReadAll(&wxSRecoveryDB, wxConvAuto());
+       
+               // Split the lines.
+       
+               std::map<int, wxString> RecoveryFileLines;
+               std::map<int, wxString>::iterator striter;
+       
+               wxStringTokenizer wSTRecoveryDBLines(wxSRecoveryDB, wxT("\r\n"));
+
+               int RecoveryLineSeek = 0;
+
+               while (wSTRecoveryDBLines.HasMoreTokens() == TRUE){
+
+                       RecoveryLine = wSTRecoveryDBLines.GetNextToken();
+                       RecoveryFileLines.insert(std::make_pair(RecoveryLineSeek, RecoveryLine));
+                       RecoveryLineSeek++;             
+       
+               }
+       
+       }
+       
+
+
+       //TestTimer.Start(50, FALSE);
+}
+
+int frmActivityMgr::AddTask(int TaskType, wxString TaskDetail, wxString TaskAccount, 
+       wxString TaskURL, wxString TaskFilename, wxString TaskFullFilename, 
+       wxString TaskData){
+
+       ActivityTaskID++;
+
+       wxListItem coldata;
+       long itemindex = -1;
+       CardDAV CardDAVConn;
+
+       coldata.SetId(ActivityTaskID);
+       coldata.SetData(ActivityTaskID);
+
+       AnimationTimer.StartAnimation();
+
+       // Get the preferences file.
+       
+       wxString PrefFilename = GetUserPrefDir();
+       
+       XABPreferences PrefData(PrefFilename);
+
+       wxString AccountName;
+       wxString AccountDir;
+       wxString AccountAddress;
+       int AccountPort = 0;
+       wxString AccountUsername;
+       wxString AccountPassword;
+       bool AccountSSL = FALSE;
+       wxString AccountPrefix;
+
+       // Look for the account and get the friendly name for the account.
+       
+       for (int i = 0; i < PrefData.accounts.GetCount(); i++){
+       
+               AccountDir = PrefData.accounts.GetAccountDirectory(i);
+               
+               AccountDir.Trim();
+               AccountDir.Append(wxT(".carddav"));
+       
+               if (AccountDir == TaskAccount){
+               
+                       AccountName = PrefData.accounts.GetAccountName(i);
+                       AccountAddress = PrefData.accounts.GetAccountAddress(i);
+                       AccountPort = PrefData.accounts.GetAccountPort(i);
+                       AccountUsername = PrefData.accounts.GetAccountUsername(i);
+                       AccountPassword = PrefData.accounts.GetAccountPassword(i);
+                       AccountPrefix = PrefData.accounts.GetAccountDirPrefix(i);
+                       AccountSSL = PrefData.accounts.GetAccountSSL(i);
+                       
+                       AccountName.Trim();
+                       AccountAddress.Trim();
+                       //AccountPort.Trim();
+                       AccountUsername.Trim();
+                       AccountPassword.Trim();
+                       AccountPrefix.Trim();
+                       break;
+               
+               }
+       
+       }
+       
+       CardDAVConn.SetupConnection(AccountAddress, AccountPort, AccountUsername, AccountPassword, AccountSSL, AccountPrefix, AccountDir);
+       CardDAVConn.SetupVariables(&ActivityList, ActivityTaskID);
+       CardDAVConn.SetupResultBools(&BlankBool, &BlankBool);           
+
+       // TaskType:
+       // 0 - Add a contact.
+       // 1 - Update a contact.
+       // 2 - Delete a contact.
+       // 3 - Account syncronisation.
+
+       if (TaskType == 0){             
+
+               coldata.SetText(_("Adding Contact '") + TaskDetail + _("'"));
+               itemindex = lstActivity->InsertItem(coldata);
+               
+               lstActivity->SetItem(itemindex, 1, AccountName);
+               lstActivity->SetItem(itemindex, 2, _("Queued"));
+               
+               CardDAVConn.SetUploadMode(TRUE);
+               CardDAVConn.SetupData(wxT("PUT"), TaskURL, TaskData);
+               
+               // Setup all of the task details.
+
+               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+               
+               ActivityListType.insert(std::make_pair(ActivityTaskID, 0));
+               ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
+               ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
+               ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
+               ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail));
+               ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
+               ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
+               ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename));
+               
+               ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename)));
+               ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename)));
+               ActivityList.insert(std::make_pair(ActivityTaskID, 0));
+       
+       } else if (TaskType == 1){
+       
+               coldata.SetText(_("Updating Contact '") + TaskDetail + _("'"));
+               itemindex = lstActivity->InsertItem(coldata);           
+               
+               lstActivity->SetItem(itemindex, 1, AccountName);
+               lstActivity->SetItem(itemindex, 2, _("Queued"));
+               
+               CardDAVConn.SetUploadMode(TRUE);
+               CardDAVConn.SetupData(wxT("PUT"), TaskURL, TaskData);
+               CardDAVConn.SetEditMode(TRUE);
+               
+               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+               
+               ActivityListType.insert(std::make_pair(ActivityTaskID, 1));
+               ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
+               ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
+               ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
+               ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail));
+               ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
+               ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
+               ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename));
+               
+               ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename)));
+               ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename)));
+               ActivityList.insert(std::make_pair(ActivityTaskID, 0));
+       
+       } else if (TaskType == 2){
+
+               coldata.SetText(_("Deleting Contact '") + TaskDetail + _("'"));
+               itemindex = lstActivity->InsertItem(coldata);
+               
+               lstActivity->SetItem(itemindex, 1, AccountName);
+               lstActivity->SetItem(itemindex, 2, _("Queued"));
+               
+               // TODO: Pass the ETagDB for the account to the connection.
+               
+               ActivityList.insert(std::make_pair(ActivityTaskID, 0));
+               ActivityListType.insert(std::make_pair(ActivityTaskID, 2));
+               ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
+               ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
+               ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
+               ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
+               ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
+       
+       } else if (TaskType == 3){
+
+               coldata.SetText(_("Syncronising All Contacts"));
+               itemindex = lstActivity->InsertItem(coldata);
+               
+               lstActivity->SetItem(itemindex, 1, AccountName);
+               lstActivity->SetItem(itemindex, 2, _("Queued"));
+               
+               ActivityList.insert(std::make_pair(ActivityTaskID, 0));
+               ActivityListType.insert(std::make_pair(ActivityTaskID, 3));
+               ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
+               ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
+               ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, AccountPrefix));
+               ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
+               ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
+       
+       }
+       
+       ProcessTasksData = TRUE;
+       
+       if (!ActProcessTimer.IsRunning()) {
+       
+               wxCommandEvent event(ACTMGR_STARTTIMER);
+               wxPostEvent(this, event);
+
+               wxCommandEvent eventp(ACTMGR_STARTPROCESSTIMER);
+               wxPostEvent(this, eventp);
+
+               //ActProcessTimer.Start(1000, FALSE);
+               //ActListProcTimer.Start(1000, FALSE);
+       
+       }
+       
+       // Update the recovery database.
+       
+       return ActivityTaskID;
+
+}
+
+void frmActivityMgr::RemoveTask(){
+
+       // Remove task from the recovery database.
+
+}
+
+void frmActivityMgr::StopTask( wxCommandEvent& event ){
+
+       // Check if activity has been completed already before stopping.
+
+       long longSelected = -1;
+       int intSelectedData = 0;
+               
+       longSelected = lstActivity->GetNextItem(longSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       intSelectedData = lstActivity->GetItemData(longSelected);
+       
+       if (longSelected == -1){
+               return;
+       }
+       
+       std::map<int,CardDAV>::iterator CDAVter;
+       
+       CDAVter = ActivityListConn.find(intSelectedData);
+       
+       CDAVter->second.Abort();
+       
+       lstActivity->SetItem(longSelected, 2, _("Stopped"));
+
+}
+
+void frmActivityMgr::StopAllTasks( wxCommandEvent& event ){
+
+       // Check if activity has been completed already before stopping.
+       
+       // TODO: Look through for '1' and stop the running task(s).
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
+               
+       longSelected = lstActivity->GetNextItem(longSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       intSelectedData = lstActivity->GetItemData(longSelected);
+       
+       if (longSelected == -1){
+               return;
+       }
+       
+       std::map<int,CardDAV>::iterator CDAVter;
+       
+       CDAVter = ActivityListConn.find(intSelectedData);
+       
+       CDAVter->second.Abort();
+       
+       lstActivity->SetItem(longSelected, 2, _("Stopped"));
+       AnimationTimer.StopAnimation();
+       bmpActivity->SetBitmap(SleepBitmap);
+       lblDetails->SetLabel(_("No activity."));
+
+}
+
+void frmActivityMgr::RetryTask( wxCommandEvent& event ){
+
+       // Check if activity has been completed already before retrying.
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
+               
+       longSelected = lstActivity->GetNextItem(longSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       intSelectedData = lstActivity->GetItemData(longSelected);
+       
+       if (longSelected == -1){
+               return;
+       }
+       
+       std::map<int,CardDAV>::iterator CDAVter;
+       
+       CDAVter = ActivityListConn.find(intSelectedData);
+       
+       // Restart the task.
+       
+       //CDAVter->second.Abort();
+       
+       std::map<int,int>::iterator Iter;
+       Iter = ActivityList.find(intSelectedData);
+       
+       Iter->second = 0;
+       
+       AnimationTimer.StartAnimation();
+       
+       if (!ActProcessTimer.IsRunning()) {
+       
+               ActProcessTimer.Start(150, FALSE);
+               ActListProcTimer.Start(150, FALSE);
+       
+       }
+       
+       //lstActivity->SetItem(longSelected, 2, _("Processing..."));
+
+}
+
+void frmActivityMgr::OpenWindow()
+{
+       WindowOpen = TRUE;
+}
+
+void frmActivityMgr::CloseWindow( wxCommandEvent& event )
+{
+       WindowOpen = FALSE;
+       this->Hide();
+}
+
+void frmActivityMgr::ProcessTasksThread()
+{
+       
+       if (ProcessTasksData == FALSE){
+       
+               return;
+       
+       }
+       
+       std::map<int,int>::iterator TypeIter;
+       std::map<int,wxString>::iterator StringIter;
+       std::map<int,wxString>::iterator StringDetailIter;
+       std::map<int,wxString>::iterator StringAccountIter;
+       std::map<int,wxString>::iterator StringFilenameIter;
+       std::map<int,wxString>::iterator StringFullFilenameIter;
+       std::map<int,wxString>::iterator StringTaskDetailIter;
+       std::map<int,wxString>::iterator StringETagIter;
+       std::map<int,wxString>::iterator StringETagOrigIter;
+       std::map<int,CardDAV>::iterator CardDAVIter;
+       std::map<int,long>::iterator LongIter;
+       bool TasksFoundProc = FALSE;
+       wxString TaskDetail;
+
+       for (std::map<int,int>::iterator iter = ActivityList.begin(); 
+        iter != ActivityList.end(); ++iter){
+        
+               // Check for any queued tasks and start one.
+               
+               if (iter->second > 4){
+                       continue;
+               }
+               
+               CardDAVIter = ActivityListConn.find(iter->first);
+               TypeIter = ActivityListType.find(iter->first);
+               StringETagIter = ActivityListETag.find(iter->first);
+               StringETagOrigIter = ActivityListETagOriginal.find(iter->first);
+               StringAccountIter = ActivityListAccount.find(iter->first);
+               StringFilenameIter = ActivityListFilename.find(iter->first);
+               StringFullFilenameIter = ActivityListFullFilename.find(iter->first);
+               
+               // 0 = Queued.
+               // 1 = Processing.
+               // 2 = Failed.
+               // 3 = Stopped.
+               // 4 = Completed.
+               // 5 = Failed (UI Updated).
+               // 6 = Stopped (UI Updated).
+               // 7 = (Reserved) (UI Updated).
+               // 8 = Completed. (UI Updated). 
+               
+               if (iter->second == 0){
+               
+                       //CardDAVIter->second.
+                       
+                       // Wait for process to finish.
+
+                       TasksActive = TRUE;
+                       TasksFoundProc = TRUE;
+                       wxString ETag;
+                       wxString ETagOriginal;
+                       wxString ETagServer;
+                       wxString AccountDir;
+                       wxString ContactFilename;
+                       wxString FullFilename;
+                       wxString ETagResult;
+
+                       iter->second = 1;
+                       
+                       if (TypeIter->second == 1){
+                               CardDAVIter->second.GetServerETagValueThread();
+                               ETagServer = CardDAVIter->second.ETagValueResult();
+                       }
+                       
+                       // Compare the ETags and work out if a conflict has occured.
+                       
+                       if (TypeIter->second == 1){
+
+                               ETag = StringETagIter->second;
+                               ETagOriginal = StringETagOrigIter->second;
+                               AccountDir = StringAccountIter->second;
+                               ContactFilename = StringFilenameIter->second;
+                               FullFilename = StringFullFilenameIter->second;
+                               
+                               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+                       
+                               if (ETag == ETagOriginal){
+                       
+                                       // Compare the ETag with the Server ETag.
+                               
+                                       if (ETagOriginal != ETagServer){
+                               
+                                               // Server ETag is different from original ETag.
+                                               // This is a conflict which the user will now
+                                               // need to resolve.
+                                       
+                                               vCard Moo1;
+                                               vCard Moo2;
+                                               int intResult;
+                                       
+                                               frmMain *frmMainPtrGet = static_cast<frmMain*>(frmMainPtr);
+                                       
+                                               vCard34Conv vCard34Obj;
+                                               
+                                               wxString ServerContactData;
+                                               vCard ClientData;
+                                               vCard ConvertedV4Data;
+                                       
+                                               // Load the client data from the filename given.
+                                       
+                                               CardDAVIter->second.GetServerContactData();
+                                               ServerContactData = CardDAVIter->second.GetPageData();
+                                               
+                                               // Process v3 version into v4 version.
+                                               
+                                               vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data);
+                                       
+                                               vCardConflictObj vCardProcData;
+                                       
+                                               vCardProcData.vCardLocalData = &ClientData;
+                                               vCardProcData.vCardServerData = &ConvertedV4Data;
+                                               ClientData.LoadFile(FullFilename);
+
+                                               //ContactConflictEvent event(ContactConflictCmdEnv);
+                                               //event.SetData(ContactFilename, Moo1, Moo2);
+                                       
+                                               //wxPostEvent(frmMainPtrGet, event);
+                                       
+                                               // Setup Conflict Resolution Dialog.
+                                       
+                                               // Fetch Data from Server and convert.
+                                       
+                                               bool *PauseMode = new bool;
+                                               int ConflictResult;
+                                               QRNotif qrn;
+
+                                               *PauseMode = TRUE;                                              
+                                               qrn.QResponse = &ConflictResult;
+                                               qrn.PausePtr = PauseMode;
+                                               
+                                               vCardProcData.QRNotifData = &qrn;
+                                       
+                                               wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED);
+                                               event.SetClientData(&vCardProcData);
+                                               wxPostEvent(frmMainPtrGet, event);
+                                               
+                                               /*timespec n1, n2;
+                                               
+                                               n1.tv_sec = 0;
+                                               n1.tv_nsec = 250000000L;*/
+                                               
+                                               while (*PauseMode == TRUE){
+                                                       //nanosleep(&n1, &n2);
+                                                       SleepFor(250000000);
+                                               }
+                                       
+                                               delete PauseMode;
+                                               PauseMode = NULL;
+                                       
+                                               //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2);
+                                       
+                                               if (ConflictResult == 0){
+                                       
+                                                       // Decide Later.
+                                       
+                                                       iter->second = 4;
+                                                       continue;
+                                       
+                                               } else if (ConflictResult == 1){
+                                       
+                                                       // Decided to use client version.
+                                       
+                                                       CardDAVIter->second.ProcessData();
+                                               
+                                                       iter->second = 4;
+                                       
+                                               } else if (ConflictResult == 2){
+                                       
+                                                       // Decided to use server version.
+                                               
+                                                       // Download server version.
+                                               
+                                                       ConvertedV4Data.WriteFile(FullFilename);
+                                               
+                                               
+                                                       iter->second = 4;
+                                       
+                                               }
+                               
+                                       } else {
+                               
+                                               // Update the data to the server.
+                                       
+                                               CardDAVIter->second.ProcessData();
+                               
+                                       }
+                       
+                               } else {
+                       
+                                       if (ETagOriginal != ETagServer){
+                               
+                                               // Server ETag is different from original ETag.
+                                               // This is a conflict which the user will now
+                                               // need to resolve.
+                                       
+                                               vCard Moo1;
+                                               vCard Moo2;
+                                               int intResult;
+                                       
+                                               frmMain *frmMainPtrGet = (frmMain *)frmMainPtr;
+                                       
+                                               //ContactConflictEvent event(ContactConflictCmdEnv);
+                                               //event.SetData(ContactFilename, Moo1, Moo2);
+                                       
+                                               vCard34Conv vCard34Obj;
+                                               
+                                               wxString ServerContactData;
+                                               vCard ClientData;
+                                               vCard ConvertedV4Data;
+                                       
+                                               // Load the client data from the filename given.
+                                       
+                                               CardDAVIter->second.GetServerContactData();
+                                               ServerContactData = CardDAVIter->second.GetPageData();
+                                               ClientData.LoadFile(FullFilename);
+                                               
+                                               // Process v3 version into v4 version.
+                                               
+                                               vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data);
+                                       
+                                               vCardConflictObj vCardProcData;
+                                       
+                                               vCardProcData.vCardLocalData = &ClientData;
+                                               vCardProcData.vCardServerData = &ConvertedV4Data;
+                                       
+                                               bool *PauseMode = new bool;
+                                               int ConflictResult;
+                                               QRNotif qrn;
+
+                                               *PauseMode = TRUE;                                              
+                                               qrn.QResponse = &ConflictResult;
+                                               qrn.PausePtr = PauseMode;
+                                               
+                                               vCardProcData.QRNotifData = &qrn;
+                                       
+                                               wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED);
+                                               event.SetClientData(&vCardProcData);
+                                               wxPostEvent(frmMainPtrGet, event);
+                                       
+                                               /*timespec n1, n2;
+                                               
+                                               n1.tv_sec = 0;
+                                               n1.tv_nsec = 250000000L;*/
+                                       
+                                               while (*PauseMode == TRUE){
+                                                       //nanosleep(&n1, &n2);
+                                                       SleepFor(250000000);
+                                               }
+                                       
+                                               delete PauseMode;
+                                               PauseMode = NULL;
+                               
+                                               //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2);
+                                       
+                                               if (ConflictResult == 0){
+                                       
+                                                       // Decide Later.
+                                       
+                                                       iter->second = 4;
+                                                       continue;
+                                       
+                                               } else if (ConflictResult == 1){
+                                       
+                                                       // Decided to use client version.
+                                       
+                                                       CardDAVIter->second.ProcessData();
+                                                       //ETagServer = CardDAVIter->second.GetServerETagValueThread();
+                                                       //ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer);
+                                               
+                                                       iter->second = 4;
+                                       
+                                               } else if (ConflictResult == 2){
+                                       
+                                                       // Decided to use server version.
+                                               
+                                                       // Write server version to file.
+                                               
+                                                       ConvertedV4Data.WriteFile(FullFilename);
+                                               
+                                                       iter->second = 4;
+                                       
+                                               }
+                               
+                                       } else {
+                               
+                                               // Update the data to the server.
+                                       
+                                               CardDAVIter->second.ProcessData();
+                               
+                                       }
+                       
+                               }
+                               
+                               // Update the ETag DB.
+                               
+                               CardDAVIter->second.GetServerETagValueThread();
+                               ETagServer = CardDAVIter->second.ETagValueResult();
+                               ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer);
+                       
+                               iter->second = 4;
+                       
+                       } else if (TypeIter->second == 2) {
+                       
+                               // Delete the contact from the server and update the ETag DB.
+                               
+                               AccountDir = StringAccountIter->second;
+                               ContactFilename = StringFilenameIter->second;
+                                                               
+                               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+                               
+                               CardDAVIter->second.SetUploadMode(FALSE);
+                               CardDAVIter->second.SetupData(wxT("DELETE"), ContactFilename, wxT(""));
+                               //CardDAVIter->second.SetServerFilename();
+                               CardDAVIter->second.ProcessData();
+                               ETagDBPtr->RemoveETag(ContactFilename);
+                               
+                               iter->second = 4;
+                       
+                       } else if (TypeIter->second == 3) {
+                       
+                               frmMain *frmMainPtrGet = static_cast<frmMain*>(frmMainPtr);
+
+                               wxString AccountNameFriendly;
+                               wxString PrefFilename = GetUserPrefDir();
+       
+                               XABPreferences PrefData(PrefFilename);
+                               int AccountID = 0;
+
+                               for (int i = 0; i < PrefData.accounts.GetCount(); i++){
+       
+                                       wxString AccountDirCheck = PrefData.accounts.GetAccountDirectory(i);
+               
+                                       AccountDirCheck.Trim();
+                                       AccountDirCheck.Append(wxT(".carddav"));
+       
+                                       if (AccountDirCheck == StringAccountIter->second){
+                                       
+                                               AccountNameFriendly = PrefData.accounts.GetAccountName(i);
+                                               AccountID = i;
+               
+                                       }
+       
+                               }
+                       
+                               bool KeepUpdating = TRUE;
+
+                               while (KeepUpdating == TRUE){
+
+                                       StringTaskDetailIter = ActivityListTaskDetail.find(iter->first);
+                       
+                                       AccountDir = StringAccountIter->second;
+
+                                       ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+                               
+                                       wxArrayString vCardAdd;
+                                       wxArrayString vCardDelete;
+                                       wxArrayString vCardList;
+                                       wxArrayString vCardUpdateLocal;
+                                       wxArrayString vCardUpdateRemote;
+                                       wxArrayString vCardUpdateLog;
+                                       std::map<wxString,wxString> vCardETag;
+                                       ContactListData ServerContactList;
+                               
+                                       std::map<wxString,vCardDownloadDataFileClass> vCardDownloadData;
+                                       //wxArrayString vCardDownload;
+                                       //std::map<wxString,wxString> vCardDownloadData;
+                               
+                                       // Get the list of vCard files locally.
+       
+                                       wxString AccountDirFinal;
+                                       wxString AccountSyncTokenFilename;
+                                       wxString SyncTokenLoad;
+       
+#if defined(__HAIKU__)
+    
+                                           //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+                                       AccountDirFinal = GetAccountDir(AccountDir, FALSE);
+                                       AccountSyncTokenFilename = AccountDirFinal;
+                                       AccountSyncTokenFilename.Append(wxT("synctoken"));
+
+#else
+
+                                       AccountDirFinal = GetAccountDir(AccountDir, FALSE);
+                                       AccountSyncTokenFilename = AccountDirFinal;
+                                       AccountSyncTokenFilename.Append(wxT("synctoken"));
+       
+#endif
+
+                                       // Suppress Error Messages.
+                               
+                                       wxLogNull PleaseDoNotDisturb;
+
+                                       wxFFile SyncLoad;
+                                       SyncLoad.Open(AccountSyncTokenFilename, wxT("r"));
+                               
+                                       if (SyncLoad.IsOpened()){
+                               
+                                               SyncLoad.ReadAll(&SyncTokenLoad, wxMBConvUTF8());
+                                               SyncLoad.Close();
+                               
+                                       }
+
+                                       // Get a list of vCard files from the server.
+
+                                       // Get the list of vCard files from the ETagDB.
+                               
+                                       std::map<wxString,ETagData> ETagDBData = ETagDBPtr->GetETagData();
+                                       
+                                       CardDAV CardDAVInstance = CardDAVIter->second;
+                                       
+                                       bool ExitLoop = FALSE;
+
+                                       std::map<wxString,FileSyncData> *SCListData = NULL;
+                                       
+                                       while (ExitLoop == FALSE){
+                                       
+                                               //ServerContactList = CardDAVInstance.GetContactList(SyncTokenLoad.ToUTF8());
+                                               ServerContactList = CardDAVIter->second.GetContactList(SyncTokenLoad.ToUTF8());
+                               
+                                               // Create a pointer for the std::map<wxString,FileSyncData>.
+                               
+                                               SCListData = &ServerContactList.ListData;
+                               
+                                               // Check if any errors have occured whilst getting the data.
+                               
+                                               int ErrorCode = CardDAVIter->second.GetResultCode();
+                               
+                                               if (ErrorCode != 0){
+                                       
+                                                       if (ErrorCode == 60 || ErrorCode == 51){
+                                               
+                                                               // Invalid SSL certificate so bring up a dialog to the user
+                                                               // explaining what has happened and the options available.
+                                                       
+                                                               // Stop all the timers.
+                                                               
+                                                               frmMainPtrGet->PauseAllTimers();
+                                                       
+                                                               // Setup the data to be sent in the wxPostEvent command.
+
+                                                               SSLInvalidCertNotifObj SSLICNProcData;
+
+                                                               bool *PauseMode = new bool;
+                                                               int SSLResult;
+                                                               QRNotif qrn;
+
+                                                               *PauseMode = TRUE;                                              
+                                                               qrn.QResponse = &SSLResult;
+                                                               qrn.PausePtr = PauseMode;
+                                                               
+                                                               SSLICNProcData.CertCollection = CardDAVIter->second.GetCertificateData();
+                                                               SSLICNProcData.QRNotifData = &qrn;
+                                                               SSLICNProcData.AccountName = AccountNameFriendly;
+                                                       
+                                                               wxCommandEvent event(INVALIDSSLCERT);
+                                                               event.SetClientData(&SSLICNProcData);
+                                                               wxPostEvent(frmMainPtrGet, event);
+                                       
+                                                               /*timespec n1, n2;
+                                               
+                                                               // Fall asleep until we get an response.
+                                               
+                                                               n1.tv_sec = 0;
+                                                               n1.tv_nsec = 250000000L;*/
+                                       
+                                                               while (*PauseMode == TRUE){
+                                                                       //nanosleep(&n1, &n2);
+                                                                       SleepFor(250000000);
+                                                               }
+                                                       
+                                                               // Process the response from the user.
+                                                       
+                                                               if (SSLResult == 1){
+                                                               
+                                                                       // Accept the certificate. Write the certificate into the account
+                                                                       // directory (as server.crt) - will overwrite old certificate.
+
+                                                                       frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, CardDAVIter->second.GetCertificateData());
+                                                                       WriteServerCertificate(AccountDir, CardDAVIter->second.GetCertificateData());
+                                                               
+                                                               } else if (SSLResult == 2){
+                                                               
+                                                                       // Reject the certificate, abort the task and mark as failed.
+
+                                                                       frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 1, CardDAVIter->second.GetCertificateData());
+                                                                       iter->second = 2;
+                                                                       break;
+                                                               
+                                                               }
+                                                       
+                                                               // Resume all the timers.
+                                                               
+                                                               frmMainPtrGet->ResumeAllTimers();
+                                               
+                                                       } else {
+                                                       
+                                                               iter->second = 4;
+                                                               break;
+                                                       
+                                                       }
+                                       
+                                               } else {
+                                       
+                                                       ExitLoop = TRUE;
+                                       
+                                               }
+                                       
+                                       }
+                                       
+                                       if (iter->second == 2 || iter->second == 3 || iter->second == 4){
+                                               break;
+                                       }
+                               
+                                       frmMainPtrGet->UpdateSSLAccountStatus(AccountID, 0, CardDAVIter->second.GetCertificateData());
+                               
+                                       // Look in directory and see which vCards to add and delete
+                               
+                                       // In short:
+                                       // vCard exists but not in ETagDB - Add (and upload).
+                                       // vCard missing but in ETagDB - Delete (from server).
+                               
+                                       // Start by looking for vCards that are not in the ETagDB.
+                               
+                                       wxDir AccDir(AccountDirFinal);
+                                       wxString AccDirFilename;
+                               
+                                       bool ContinueProcess = AccDir.GetFirst(&AccDirFilename, wxEmptyString, wxDIR_DEFAULT);
+                               
+                                       // Process the server data.
+
+                                       if (SCListData != NULL){
+
+                                               for (std::map<wxString, FileSyncData>::iterator fsiter = SCListData->begin();
+                                                       fsiter != SCListData->end(); fsiter++){
+
+                                                       // Check the mode of the file before adding.
+
+                                                       // Get the HTTP status of the file from the list.
+
+                                                       FileSyncData fsd = fsiter->second;
+
+                                                       if (fsd.DataFlag == 1){
+
+                                                               // Added or modified contact.
+
+                                                               //vCardAdd.Add(fsiter->first, 1);
+
+                                                               vCardDownloadDataFileClass vCardNewData;
+                                                               vCardNewData.DataType = 0;
+                                                               vCardDownloadData.insert(std::make_pair(fsiter->first, vCardNewData));
+
+                                                               //} else if (fsd.DataFlag == 1){
+
+                                                               // Contact has been modified on the server.
+
+                                                               //      vCardUpdateLocal.Add(fsiter->first, 1);
+
+                                                       }
+                                                       else if (fsd.DataFlag == 2){
+
+                                                               // Contact has been deleted.
+
+                                                               vCardDelete.Add(fsiter->first, 1);
+
+                                                       }
+
+                                               }
+
+                                       }
+                               
+                                       // Look for vCards that are missing but in the ETagDB.
+       
+                                       for (std::map<wxString,ETagData>::iterator etagiter = ETagDBData.begin();
+                                               etagiter != ETagDBData.end(); etagiter++){
+                               
+                                               // Check if the vCard exists.
+                                       
+                                               if (!wxFileExists(AccountDirFinal + etagiter->first)){
+                                       
+                                                       // vCard doesn't exist so mark for deleting.
+                                       
+                                                       vCardDelete.Add(etagiter->first, 1);
+                                       
+                                               }
+                               
+                                       }
+
+                                       // Compare Server with the ETag DB. Work out which
+                                       // needs to updated remotely and which needs to be
+                                       // updated locally.
+
+                                       for (std::map<wxString,FileSyncData>::iterator srviter = SCListData->begin();
+                                               srviter != SCListData->end(); srviter++){
+
+                                               if (ETagDBData.find(srviter->first) == ETagDBData.end()){
+                                                       continue;
+                                               }
+                                       
+                                               std::map<wxString,ETagData>::iterator lociter = ETagDBData.find(srviter->first);
+                               
+                                               ETagData etd = lociter->second;
+                                               FileSyncData fsd = srviter->second;
+                                       
+                                               wxString ETagSrv = fsd.ETagData;
+
+                                               // Compare local ETag with original local ETag.
+                                               // If different, update to server is required.
+                               
+                                               if (etd.ETagValue != etd.ETagOrigValue){
+                               
+                                                       // Check if local original ETag is different from server ETag.
+                                                       // If it is then throw up a conflict resolution dialog.
+                               
+                                                       if (etd.ETagOrigValue != ETagSrv){
+                                       
+                                                               vCard34Conv vCard34Obj;
+                                               
+                                                               wxString ServerContactData;
+                                                               wxString FullFilename;
+                                                               vCard ClientData;
+                                                               vCard ConvertedV4Data;
+                                       
+                                                               // Conflict. Bring up conflict resolution dialog.
+                                                       
+                                                               // Get the server contact data for comparison.
+                                                       
+                                                               CardDAVIter->second.SetServerFilename(srviter->first);
+                                                               CardDAVIter->second.GetServerContactData();
+                                                               ServerContactData = CardDAVIter->second.GetPageData();
+                                                       
+                                                               FullFilename = CreateFilenamePath(AccountDirFinal, srviter->first);
+                                                       
+                                                               // Convert it to v4.
+                                       
+                                                               vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data);
+                                       
+                                                               vCardConflictObj vCardProcData;
+                                       
+                                                               vCardProcData.vCardLocalData = &ClientData;
+                                                               vCardProcData.vCardServerData = &ConvertedV4Data;
+                                                       
+                                                               // Load the client data from the filename given.
+                                                       
+                                                               ClientData.LoadFile(FullFilename);
+                                                       
+                                                               // Show dialog.
+                                       
+                                                               bool *PauseMode = new bool;
+                                                               int ConflictResult;
+                                                               QRNotif qrn;
+                                                               frmMain *frmMainPtrGet = static_cast<frmMain*>(frmMainPtr);
+
+                                                               *PauseMode = TRUE;
+                                                               qrn.QResponse = &ConflictResult;
+                                                               qrn.PausePtr = PauseMode;
+                                               
+                                                               vCardProcData.QRNotifData = &qrn;
+                                       
+                                                               wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED);
+                                                               event.SetClientData(&vCardProcData);
+                                                               wxPostEvent(frmMainPtrGet, event);
+                                               
+                                                               /*timespec n1, n2;
+                                               
+                                                               n1.tv_sec = 0;
+                                                               n1.tv_nsec = 250000000L;*/
+                                               
+                                                               while (*PauseMode == TRUE){
+                                                                       //nanosleep(&n1, &n2);
+                                                                       SleepFor(250000000);
+                                                               }
+                                       
+                                                               delete PauseMode;
+                                                               PauseMode = NULL;
+                                                       
+                                                               // If replacing local version, store copy for now.
+                                                               // Otherwise upload to server.
+                                       
+                                                               if (ConflictResult == 0){
+                                       
+                                                                       // Decide Later.
+                                       
+                                                                       continue;
+                                       
+                                                               } else if (ConflictResult == 1){
+                                       
+                                                                       // Decided to use client version.
+                                       
+                                                                       vCardUpdateLocal.Remove(srviter->first);
+                                                                       vCardUpdateRemote.Add(srviter->first, 1);                                                               
+                                       
+                                                               } else if (ConflictResult == 2){
+                                       
+                                                                       // Decided to use server version.
+                                                                       // Store the converted downloaded copy for
+                                                                       // processing later.
+
+                                                                       //vCardUpdateLocal.Add(srviter->first, 1);
+                                                               
+                                                                       vCardDownloadDataFileClass vCardNewData;
+                                                                       vCardNewData.DataType = 1;
+                                                                       vCardNewData.FileData = ConvertedV4Data.WriteString();
+
+                                                                       ConvertedV4Data.WriteFile(FullFilename);
+                                                               
+                                                                       vCardDownloadData.insert(std::make_pair(srviter->first, vCardNewData)); 
+                                                               
+                                                               
+                                                               
+                                                               }
+                                       
+                                                       } else {
+                                       
+                                                               // Send vCard to the server.
+                                               
+                                                               vCardUpdateRemote.Add(srviter->first, 1);
+                                       
+                                                       }
+                               
+                                               } else {
+                               
+                                                       // Check if local ETag is different from server ETag.
+                                                       // If different, obtain the vCard from the server.
+                                       
+                                                       if (etd.ETagOrigValue != ETagSrv){
+                                       
+                                                               vCardUpdateLocal.Add(srviter->first, 1);
+                                       
+                                                       }
+                               
+                                               }
+                       
+                                       }
+                               
+                                       // Process the vCards that need to be downloaded and added/overwritten.
+                               
+                                       wxString vCardFilenameFinal;
+                                       wxString vCardOutputData;
+                                       wxString vCardInputData;
+                                       wxString ETagFileData;
+                                       wxFFile vCardFile;
+                                       bool vCardProcessError;
+                               
+                                       for (std::map<wxString,vCardDownloadDataFileClass>::iterator additer = vCardDownloadData.begin();
+                                               additer != vCardDownloadData.end(); additer++){
+                                       
+                                               vCardFilenameFinal.Clear();
+                                               vCardInputData.Clear();
+                                               vCardOutputData.Clear();
+                                               ETagFileData.Clear();
+                                       
+                                               vCardFilenameFinal = CreateFilenamePath(AccountDirFinal, additer->first);
+                                       
+                                               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+                                       
+                                               if (additer->second.DataType == 0){
+                                       
+                                                       vCard ConvertedV4Data;
+                                       
+                                                       // Grab the file from the server and write the contact out.
+                                       
+                                                       vCard34Conv vCard34Obj;
+                                               
+                                                       CardDAVIter->second.SetServerFilename(additer->first);
+                                                       CardDAVIter->second.GetServerContactData();
+                                                       vCardInputData = CardDAVIter->second.GetPageData();
+                                               
+                                                       vCard34Obj.ConvertToV4(&vCardInputData, &ConvertedV4Data);
+                                               
+                                                       ConvertedV4Data.WriteFile(vCardFilenameFinal);
+                                               
+                                                       // Update the ETagDB.
+                                               
+                                                       //vCardFile.Open(vCardFilenameFinal, wxT("w"));
+                               
+                                                       //if (vCardFile.IsOpened()){
+                               
+                                                       //      vCardFile.Write(vCardOutputData, wxConvAuto());
+                                                       //      vCardFile.Close();
+                               
+                                                       //}
+                                               
+                                                       // Get the server ETag.
+                                               
+                                                       wxString ServerETag;
+                                                       CardDAVIter->second.GetServerETagValueThread();
+                                                       ServerETag = CardDAVIter->second.ETagValueResult();
+                                               
+                                                       // Add to the ETag Database.
+                                               
+                                                       ETagDBPtr->AddETag(additer->first, ServerETag, ServerETag);
+                                               
+                                               } else if (additer->second.DataType == 1){
+                                       
+                                                       // Write out the contact to the account directory.
+                                       
+                                                       vCardFilenameFinal = CreateFilenamePath(AccountDirFinal, additer->first);
+                                                       vCardOutputData = additer->second.FileData;
+                                               
+                                                       vCardFile.Open(vCardFilenameFinal, wxT("w"));
+                               
+                                                       if (vCardFile.IsOpened()){
+                               
+                                                               vCardFile.Write(vCardOutputData, wxConvAuto());
+                                                               vCardFile.Close();
+                               
+                                                       }
+                                               
+                                                       // Update the ETagDB.
+
+                                                       wxString ServerETag;
+                                                       CardDAVIter->second.GetServerETagValueThread();
+                                                       ServerETag = CardDAVIter->second.ETagValueResult();
+                                               
+                                                       // Add to the ETag Database.
+                                               
+                                                       ETagDBPtr->AddETag(additer->first, ServerETag, ServerETag);
+                                                                                       
+                                               }
+                                       }
+       
+                                       // Look for vCard files which aren't in the ETagDB.
+       
+                                       while(ContinueProcess){
+                               
+                                               // Check and make sure that the filename ends in .vcf/.vcard
+                                               // Skip any file that beings with a dot.
+                                       
+                                               if (AccDirFilename.Left(1) == wxT(".")){
+                                       
+                                                       ContinueProcess = AccDir.GetNext(&AccDirFilename);
+                                                       continue;
+                                       
+                                               }
+                                       
+                                               if (AccDirFilename.Right(4) != wxT(".vcf") && 
+                                               AccDirFilename.Right(6) != wxT(".vcard")){
+                                       
+                                                       ContinueProcess = AccDir.GetNext(&AccDirFilename);
+                                                       continue;
+                                       
+                                               }
+                               
+                                               // Look in the ETagDB for the file.
+                                       
+                                               bool ETagExists = ETagDBPtr->CheckETagExists(AccDirFilename);
+                                       
+                                               if (ETagExists == FALSE){
+                                       
+                                                       // Add the vCard to the list to be added.
+                                               
+                                                       vCardAdd.Add(AccDirFilename, 1);
+                                       
+                                               }
+                                       
+                                               ContinueProcess = AccDir.GetNext(&AccDirFilename);
+                               
+                                       }
+                               
+                                       // Process the vCards to add/update to the server.
+                               
+                                       for (int vi = 0; vi < vCardAdd.GetCount(); vi++){
+
+                                               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+                                               ETag = ETagDBPtr->GetETag(vCardAdd[vi]);
+                                               ETagOriginal = ETagDBPtr->GetETagOriginal(vCardAdd[vi]);
+                                               ContactFilename = vCardAdd[vi];
+                                               FullFilename = CreateFilenamePath(AccountDirFinal, vCardAdd[vi]);
+
+                                               ContactFilename.Trim();
+                       
+                                               if (ETag == ETagOriginal){
+                       
+                                                       // Compare the ETag with the Server ETag.
+                               
+                                                       if (ETagOriginal != ETagServer){
+                               
+                                                               // Server ETag is different from original ETag.
+                                                               // This is a conflict which the user will now
+                                                               // need to resolve.
+                               
+                                                               vCard Moo1;
+                                                               vCard Moo2;
+                                                               int intResult;
+                                       
+                                                               frmMain *frmMainPtrGet = static_cast<frmMain*>(frmMainPtr);
+                                       
+                                                               vCard34Conv vCard34Obj;
+                                               
+                                                               wxString ServerContactData;
+                                                               vCard ClientData;
+                                                               vCard ConvertedV4Data;
+                                       
+                                                               // Load the client data from the filename given.
+                                       
+                                                               CardDAVIter->second.GetServerContactData();
+                                                               ServerContactData = CardDAVIter->second.GetPageData();
+                                               
+                                                               // Process v3 version into v4 version.
+                                               
+                                                               vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data);
+                                       
+                                                               vCardConflictObj vCardProcData;
+                                       
+                                                               vCardProcData.vCardLocalData = &ClientData;
+                                                               vCardProcData.vCardServerData = &ConvertedV4Data;
+                                                               ClientData.LoadFile(FullFilename);
+
+                                                               //ContactConflictEvent event(ContactConflictCmdEnv);
+                                                               //event.SetData(ContactFilename, Moo1, Moo2);
+                                       
+                                                               //wxPostEvent(frmMainPtrGet, event);
+                                       
+                                                               // Setup Conflict Resolution Dialog.
+                                       
+                                                               // Fetch Data from Server and convert.
+                                       
+                                                               bool *PauseMode = new bool;
+                                                               int ConflictResult;
+                                                               QRNotif qrn;
+
+                                                               *PauseMode = TRUE;                                              
+                                                               qrn.QResponse = &ConflictResult;
+                                                               qrn.PausePtr = PauseMode;
+                                               
+                                                               vCardProcData.QRNotifData = &qrn;
+                                       
+                                                               wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED);
+                                                               event.SetClientData(&vCardProcData);
+                                                               wxPostEvent(frmMainPtrGet, event);
+                                               
+                                                               /*timespec n1, n2;
+                                               
+                                                               n1.tv_sec = 0;
+                                                               n1.tv_nsec = 250000000L;*/
+                                               
+                                                               while (*PauseMode == TRUE){
+                                                                       //nanosleep(&n1, &n2);
+                                                                       SleepFor(250000000);
+                                                               }
+                                       
+                                                               delete PauseMode;
+                                                               PauseMode = NULL;
+                                       
+                                                               //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2);
+                                       
+                                                               if (ConflictResult == 0){
+                                       
+                                                                       // Decide Later.
+                                       
+                                                                       iter->second = 4;
+                                                                       continue;
+                                       
+                                                               } else if (ConflictResult == 1){
+                                       
+                                                                       // Decided to use client version.
+                                       
+                                                                       CardDAVIter->second.ProcessData();
+                                               
+                                                                       iter->second = 4;
+                                       
+                                                               } else if (ConflictResult == 2){
+                                       
+                                                                       // Decided to use server version.
+                                               
+                                                                       // Download server version.
+                                                               
+                                                                       ConvertedV4Data.WriteFile(CreateFilenamePath(AccountDirFinal, vCardAdd[vi]));
+                                               
+                                                                       iter->second = 4;
+                                       
+                                                               }
+                               
+                                                       } else {
+                               
+                                                               // Setup the filename for the contact being added.
+                                                       
+                                                               wxString wxSFilename = CreateFilenamePath(AccountDirFinal, vCardAdd[vi]);
+                                                               wxString wxSCardData;
+                                                               wxString TaskData;
+                                                               //wxString TaskURL;
+                                                       
+                                                               // Load the data from the file.
+                                                       
+                                                               wxFFile wxFCard;
+                                                               wxFCard.Open(wxSFilename, wxT("r"));
+                               
+                                                               if (wxFCard.IsOpened()){
+                               
+                                                                       wxFCard.ReadAll(&wxSCardData, wxConvAuto());
+                                                                       wxFCard.Close();
+                               
+                                                               }
+                                                       
+                                                               // Convert the data to v3.
+                                                       
+                                                               vCard34Conv vCard34Obj;
+                                                       
+                                                               vCard34Obj.ConvertToV3(wxSFilename, &TaskData);
+                                                       
+                                                               // Setup the URL address.
+                                                       
+                                                               //TaskURL = StringTaskDetailIter->second + wxT("/") + vCardAdd[vi];
+
+                                                               // Upload the data to the server.
+                                       
+                                                               CardDAVIter->second.SetUploadMode(TRUE);
+                                                               CardDAVIter->second.SetupData(wxT("PUT"), vCardAdd[vi], TaskData);
+                                                               CardDAVIter->second.ProcessData();
+                                                       
+                                                               // Get the Server ETag and put it in the ETag database.
+                                                       
+                                                               CardDAVIter->second.SetServerFilename(vCardAdd[vi]);
+                                                               CardDAVIter->second.GetServerETagValueThread();
+                                                               ETagServer = CardDAVIter->second.ETagValueResult();
+                               
+                                                               ETagDBPtr->AddETag(vCardAdd[vi], ETagServer, ETagServer);
+                               
+                                                       }
+                       
+                                               } else {
+                       
+                                                       if (ETagOriginal != ETagServer){
+                               
+                                                               // Server ETag is different from original ETag.
+                                                               // This is a conflict which the user will now
+                                                               // need to resolve.
+                                                                               
+                                                               vCard Moo1;
+                                                               vCard Moo2;
+                                                               int intResult;
+                                       
+                                                               frmMain *frmMainPtrGet = (frmMain *)frmMainPtr;
+                                       
+                                                               //ContactConflictEvent event(ContactConflictCmdEnv);
+                                                               //event.SetData(ContactFilename, Moo1, Moo2);
+                                       
+                                                               vCard34Conv vCard34Obj;
+                                               
+                                                               wxString ServerContactData;
+                                                               vCard ClientData;
+                                                               vCard ConvertedV4Data;
+                                       
+                                                               // Load the client data from the filename given.
+                                       
+                                                               CardDAVIter->second.GetServerContactData();
+                                                               ServerContactData = CardDAVIter->second.GetPageData();
+                                                               ClientData.LoadFile(FullFilename);
+                                               
+                                                               // Process v3 version into v4 version.
+                                               
+                                                               vCard34Obj.ConvertToV4(&ServerContactData, &ConvertedV4Data);
+                                       
+                                                               vCardConflictObj vCardProcData;
+                                       
+                                                               vCardProcData.vCardLocalData = &ClientData;
+                                                               vCardProcData.vCardServerData = &ConvertedV4Data;
+                                       
+                                                               bool *PauseMode = new bool;
+                                                               int ConflictResult;
+                                                               QRNotif qrn;
+
+                                                               *PauseMode = TRUE;                                              
+                                                               qrn.QResponse = &ConflictResult;
+                                                               qrn.PausePtr = PauseMode;
+                                               
+                                                               vCardProcData.QRNotifData = &qrn;
+                                       
+                                                               wxCommandEvent event(wxEVT_COMMAND_BUTTON_CLICKED);
+                                                               event.SetClientData(&vCardProcData);
+                                                               wxPostEvent(frmMainPtrGet, event);
+                                       
+                                                               /*timespec n1, n2;
+                                               
+                                                               n1.tv_sec = 0;
+                                                               n1.tv_nsec = 250000000L;*/
+                                       
+                                                               while (*PauseMode == TRUE){
+                                                                       //nanosleep(&n1, &n2);
+                                                                       SleepFor(250000000);
+                                                               }
+                                       
+                                                               delete PauseMode;
+                                                               PauseMode = NULL;
+                                       
+                                                               //intResult = frmMainPtrGet->ShowConflictDialog(&Moo1, &Moo2);
+                                       
+                                                               if (ConflictResult == 0){
+                                       
+                                                                       // Decide Later.
+                                       
+                                                                       iter->second = 4;
+                                                                       continue;
+                                       
+                                                               } else if (ConflictResult == 1){
+                                       
+                                                                       // Decided to use client version.
+                                                               
+                                                                       CardDAVIter->second.ProcessData();
+                                                                       //ETagServer = CardDAVIter->second.GetServerETagValueThread();
+                                                                       //ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer);
+                                               
+                                                                       iter->second = 4;
+                                       
+                                                               } else if (ConflictResult == 2){
+                                       
+                                                                       // Decided to use server version.
+                                               
+                                                                       // Write server version to file.
+                                                               
+                                                                       ConvertedV4Data.WriteFile(CreateFilenamePath(AccountDirFinal, vCardAdd[vi]));
+                                               
+                                                                       iter->second = 4;
+                                       
+                                                               }
+                               
+                                                       } else {
+                               
+                                                               // Setup the filename for the contact being added.
+                                                       
+                                                               wxString wxSFilename = CreateFilenamePath(AccountDirFinal, vCardAdd[vi]);
+                                                               wxString wxSCardData;
+                                                               wxString TaskData;
+                                                               //wxString TaskURL;
+                                                       
+                                                               // Load the data from the file.
+                                                       
+                                                               wxFFile wxFCard;
+                                                               wxFCard.Open(wxSFilename, wxT("r"));
+                               
+                                                               if (wxFCard.IsOpened()){
+                               
+                                                                       wxFCard.ReadAll(&wxSCardData, wxConvAuto());
+                                                                       wxFCard.Close();
+                               
+                                                               }
+                                                       
+                                                               // Convert the data to v3.
+                                                       
+                                                               vCard34Conv vCard34Obj;
+                                                       
+                                                               vCard34Obj.ConvertToV3(wxSFilename, &TaskData);
+                                                       
+                                                               // Setup the URL address.
+                                                       
+                                                               //TaskURL = StringTaskDetailIter->second + wxT("/") + vCardAdd[vi];
+
+                                                               // Upload the data to the server.
+                                       
+                                                               CardDAVIter->second.SetUploadMode(TRUE);
+                                                               CardDAVIter->second.SetupData(wxT("PUT"), vCardAdd[vi], TaskData);
+                                                               CardDAVIter->second.ProcessData();
+                                                       
+                                                               // Get the Server ETag and put it in the ETag database.
+                                                       
+                                                               CardDAVIter->second.SetServerFilename(vCardAdd[vi]);
+                                                               CardDAVIter->second.GetServerETagValueThread();
+                                                               ETagServer = CardDAVIter->second.ETagValueResult();
+                               
+                               
+                                                               ETagDBPtr->AddETag(vCardAdd[vi], ETagServer, ETagServer);
+                               
+                                                       }
+                                       
+                                               }
+
+                                       }                       
+                               
+                                       // Process the vCards to delete locally.
+                               
+                                       for (int vi = 0; vi < vCardDelete.GetCount(); vi++){
+
+                                               if (!wxRemoveFile(CreateFilenamePath(AccountDirFinal, vCardDelete[vi]))){
+
+                                               } else {
+                                       
+                                                       ETagDBPtr->RemoveETag(vCardDelete[vi]);
+                                       
+                                               }
+                                       
+                                               frmMain *frmMainPtrGet = static_cast<frmMain*>(frmMainPtr);
+
+                                       }
+                               
+                                       // Process the vCards to delete from the server.
+                               
+                                       std::map<wxString,wxString> *ETagFilenameMap = ETagDBPtr->GetFilenamePointer();
+                               
+                               
+                                       for (std::map<wxString,wxString>::iterator deliter = ETagFilenameMap->begin();
+                                               deliter != ETagFilenameMap->end(); deliter++){
+                               
+                                               // Look through the ETagDB and find contacts which are marked as DELETED.
+                                       
+                                               if (deliter->second == wxT("DELETED")){
+
+                                                       CardDAVIter->second.SetUploadMode(FALSE);
+                                                       CardDAVIter->second.SetupData(wxT("DELETE"), deliter->first, wxT(""));
+                                                       CardDAVIter->second.ProcessData();
+                                       
+                                                       // Delete the ETag as the file has now been deleted.
+                                       
+                                                       ETagDBPtr->RemoveETag(deliter->first);
+                                       
+                                               }
+                               
+                                       }
+                               
+                                       // Write out the update server sync token.
+
+                                       wxString ServerSyncToken = ServerContactList.SyncToken;
+                               
+                                       ServerSyncToken.Trim();
+                               
+                                       if (!ServerSyncToken.IsEmpty()){
+                               
+                                               wxFFile SyncWrite;
+                                               SyncWrite.Open(AccountSyncTokenFilename, wxT("w"));
+                               
+                                               if (SyncWrite.IsOpened()){
+                               
+                                                       SyncWrite.Write(ServerSyncToken, wxConvAuto());
+                                                       SyncWrite.Close();
+                               
+                                               }
+                               
+                                       }
+                               
+                                       // Check for another sync token. If there is another 
+                                       // sync token then repeat this. If token matches then stop processing.
+                               
+                                       if (SyncTokenLoad == ServerSyncToken){
+                                       
+                                               KeepUpdating = FALSE;
+                                       
+                                       }
+                                       
+                               }
+                               
+                               // Mark as completed.
+                               
+                               iter->second = 4;
+                               continue;
+                       
+                       } else {
+                       
+                               // Update the data to the server.
+                                       
+                               CardDAVIter->second.ProcessData();
+                       
+                       }
+
+                       /*timespec n1, n2;
+                                               
+                       n1.tv_sec = 0;
+                       n1.tv_nsec = 250000000L;*/
+
+                       while (iter->second == 1){
+
+                               SleepFor(250000000);
+                               //nanosleep(&n1, &n2);
+       
+                       }
+                       
+                       if ((iter->second == 4 && TypeIter->second == 0) || 
+                       (iter->second == 8 && TypeIter->second == 0)){
+
+                               AccountDir = StringAccountIter->second;
+                               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+                               
+                               CardDAVIter->second.GetServerETagValueThread();
+                               ETagServer = CardDAVIter->second.ETagValueResult();
+                               ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer);
+                       
+                       }
+                       
+                       if ((iter->second == 4 && TypeIter->second == 1) || 
+                       (iter->second == 8 && TypeIter->second == 1)){
+                       
+                               AccountDir = StringAccountIter->second;
+                               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);                 
+
+                               CardDAVIter->second.GetServerETagValueThread();
+                               ETagServer = CardDAVIter->second.ETagValueResult();
+                               ETagDBPtr->UpdateETag(ContactFilename, ETagServer, ETagServer);
+                       
+                       }
+                       
+                       break;
+                       
+               }
+
+       }
+       
+       if (TasksFoundProc == FALSE){
+       
+               TasksActive = FALSE;
+               ProcessTasksData = FALSE;
+       
+       } else {
+
+               wxCommandEvent eventp(ACTMGR_STARTTIMER);
+               wxPostEvent(this, eventp);
+
+               //AnimationTimer.StartAnimation();
+               //ActListProcTimer.Start();
+       
+       }
+
+       wxCommandEvent event(ACTMGR_STARTPROCESSTIMER);
+       wxPostEvent(this, event);
+
+       //ActProcessTimer.Start();
+
+}
+
+void frmActivityMgr::ProcessTasks()
+{
+
+       std::thread ProcessThread(&frmActivityMgr::ProcessTasksThread, this);
+       ProcessThread.detach();
+
+}
+
+void frmActivityMgr::SetupPointers(wxETagProcessTimer *ETagTmrPtrInc, void *frmMainPtrInc)
+{
+
+       ETagTmrPtr = ETagTmrPtrInc;
+       
+       frmMainPtr = frmMainPtrInc;
+
+}
+
+void frmActivityMgr::ResumeProcessing(wxCommandEvent &event){
+
+       QRNotif *qrn = (QRNotif *)event.GetClientData(); 
+       
+       int *QRes = qrn->QResponse;
+
+       *qrn->PausePtr = FALSE;
+
+       *QRes = event.GetInt();
+       
+}
+
+int frmActivityMgr::GetTaskStatus(int intTaskID){
+
+       int intResult = 2;
+       
+       if (ActivityList.find(intTaskID) == ActivityList.end()){
+       
+               return intResult;
+       
+       }
+       
+       std::map<int,int>::iterator taskiter = ActivityList.find(intTaskID);
+       intResult = taskiter->second;
+       
+       return intResult;
+
+}
+
+void frmActivityMgr::ToggleConnectionStatus( wxCommandEvent &event ){
+
+       wxCommandEvent connevent(CONNSTAT_UPDATE);
+       
+       if (SleepMode == FALSE){
+       
+               connevent.SetInt(1);
+               SleepMode = TRUE;
+       
+       } else {
+       
+               connevent.SetInt(0);
+               SleepMode = FALSE;
+       
+       }
+
+       wxPostEvent(GetParent(), connevent);
+
+}
+
+void frmActivityMgr::WriteServerCertificate(wxString AccountName, SSLCertCollection SSLCertInc){
+
+       wxString ServerCertFinal;
+
+       // Get the Cert section of the certificate and write it to the file.
+
+       ServerCertFinal = GetAccountDir(AccountName, TRUE);
+
+       wxFile CertFile;
+       
+       std::map<int, SSLCertData>::iterator SSLCDIter = SSLCertInc.SSLCollection.find(0);
+       std::multimap<wxString,wxString>::iterator SSLDataIter = SSLCDIter->second.CertData.find(wxT("Cert"));
+       
+       CertFile.Open(ServerCertFinal, wxFile::write);  
+       
+       CertFile.Write(SSLDataIter->second, wxConvUTF8);
+       CertFile.Close();
+
+}
+
+void frmActivityMgr::StartTimer(wxCommandEvent& event){
+
+       ActListProcTimer.Start(1000, FALSE);
+
+}
+
+void frmActivityMgr::StopTimer(wxCommandEvent& event){
+
+       ActListProcTimer.Stop();
+
+}
+
+void frmActivityMgr::StartProcessTimer(wxCommandEvent& event){
+
+       ActProcessTimer.Start(1000, FALSE);
+
+}
+
+void frmActivityMgr::StopProcessTimer(wxCommandEvent& event){
+
+       ActProcessTimer.Stop();
+
+}
+
+#endif
\ No newline at end of file
diff --git a/source/frmActivityMgr.h b/source/frmActivityMgr.h
new file mode 100644 (file)
index 0000000..d434056
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef __frmActivityMgr__
+#define __frmActivityMgr__
+
+/**
+@file
+Subclass of frmActivityMgrADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "carddav/carddav.h"
+#include <map>
+#include <wx/timer.h>
+#include "common/timers.h"
+#include "common/etag.h"
+
+//// end generated include
+
+DECLARE_EVENT_TYPE(ACTMGR_RESUMEPROC, wxID_ANY)
+DECLARE_EVENT_TYPE(ACTMGR_TOGGLECONN, wxID_ANY)
+DECLARE_EVENT_TYPE(ACTMGR_STARTTIMER, wxID_ANY)
+DECLARE_EVENT_TYPE(ACTMGR_STOPTIMER, wxID_ANY)
+DECLARE_EVENT_TYPE(ACTMGR_STARTPROCESSTIMER, wxID_ANY)
+DECLARE_EVENT_TYPE(ACTMGR_STOPPROCESSTIMER, wxID_ANY)
+
+struct vCardDownloadDataFileClass{
+       unsigned int DataType = 0;
+       wxString FileData;
+};
+
+/** Implementing frmActivityMgrADT */
+class frmActivityMgr : public frmActivityMgrADT
+{
+       private:
+               wxActTimer AnimationTimer;
+               wxActProcessTimer ActProcessTimer;
+               wxActListProcTimer ActListProcTimer;
+               wxBitmap SleepBitmap;
+               int ActivityTaskID = 0;
+               int ActivityProgressBarTotal = 0;
+               int ActivityProgressBarDone = 0;
+               bool BlankBool = FALSE;
+               std::map<int,int> ActivityList;
+               std::map<int,int> ActivityListType;
+               std::map<int,long> ActivityListIndex;
+               std::map<int,wxString> ActivityListData;
+               std::map<int,wxString> ActivityListTaskDetail;
+               std::map<int,wxString> ActivityListAccount;
+               std::map<int,wxString> ActivityListFilename;
+               std::map<int,wxString> ActivityListFullFilename;
+               std::map<int,CardDAV> ActivityListConn;
+               std::map<int,wxString> ActivityListETag;
+               std::map<int,wxString> ActivityListETagOriginal;
+               std::map<int,wxDateTime> ActivityListFinDate;
+               std::map<int,wxArrayString> ActivityListLog;
+               bool WindowOpen = FALSE;
+               bool TasksActive = FALSE;
+               bool SleepMode = FALSE;
+               bool ProcessTasksData = FALSE;
+               //int ConflictResult = 0;
+               wxETagProcessTimer *ETagTmrPtr;
+               void *frmMainPtr;
+               //frmMain *frmMainPtr;
+       protected:
+               // Handlers for frmActivityMgrADT events.
+               void CloseWindow( wxCommandEvent& event );
+               void StopTask( wxCommandEvent& event );
+               void StopAllTasks( wxCommandEvent& event );
+               void RetryTask( wxCommandEvent& event );
+               void StartTimer( wxCommandEvent& event );
+               void StopTimer( wxCommandEvent& event );
+               void StartProcessTimer( wxCommandEvent& event );
+               void StopProcessTimer( wxCommandEvent& event );
+               void FlushAllTasks();
+               void RemoveTask();
+               void ProcessTasksThread();
+               void ToggleConnectionStatus( wxCommandEvent& event );
+               void WriteServerCertificate(wxString AccountName, SSLCertCollection SSLCertInc);
+       public:
+               /** Constructor */
+               frmActivityMgr( wxWindow* parent );
+               int AddTask(int TaskType, wxString TaskDetail, wxString TaskAccount, 
+                       wxString TaskURL, wxString TaskFilename, wxString TaskFullFilename,
+                       wxString TaskData);
+               void ProcessTasks();
+               void OpenWindow();
+               void SetupPointers(wxETagProcessTimer *ETagTmrPtrInc, void *frmMainPtrInc);
+               void ResumeProcessing(wxCommandEvent &event);
+               void PauseAllTimers();
+               void ResumeAllTimers();
+               int GetTaskStatus(int intTaskID);
+               DECLARE_EVENT_TABLE()
+
+       //// end generated class members
+       
+};
+
+#endif // __frmActivityMgr__
diff --git a/source/frmConflictResolution.cpp b/source/frmConflictResolution.cpp
new file mode 100644 (file)
index 0000000..16e0d55
--- /dev/null
@@ -0,0 +1,54 @@
+#include "frmConflictResolution.h"
+#include "common/getcontactinfo.h"
+
+frmConflictResolution::frmConflictResolution( wxWindow* parent )
+:
+frmConflictResolutionADT( parent )
+{
+
+}
+
+void frmConflictResolution::KeepLocalData( wxCommandEvent& event )
+{
+       ConflictResult = 1;
+       this->Close();
+
+}
+
+void frmConflictResolution::KeepServerData( wxCommandEvent& event )
+{
+       ConflictResult = 2;
+       this->Close();
+
+}
+
+void frmConflictResolution::DecideLater( wxCommandEvent& event )
+{
+
+       ConflictResult = 0;
+       this->Close();
+
+}
+
+int frmConflictResolution::GetResult(){
+
+       return ConflictResult;
+
+}
+
+void frmConflictResolution::LoadData(vCard *LocalData, vCard *ServerData, std::map<wxString, wxString> *MemoryFSList){
+
+       // Load the local data.
+
+       wxString ClientSID = wxString::Format(wxT("%i"), rand() % 32768);
+       wxString ServerSID = wxString::Format(wxT("%i"), rand() % 32768);
+
+       LoadContactData(LocalData, htmClient, ClientSID, 
+       wxT(""), MemoryFSList);
+       
+       // Load the server data.
+       
+       LoadContactData(ServerData, htmServer, ServerSID, 
+       wxT(""), MemoryFSList);         
+
+}
\ No newline at end of file
diff --git a/source/frmConflictResolution.h b/source/frmConflictResolution.h
new file mode 100644 (file)
index 0000000..3a48d94
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef __frmConflictResolution__
+#define __frmConflictResolution__
+
+/**
+@file
+Subclass of frmConflictResolutionADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "vcard/vcard.h"
+#include "frmMain.h"
+
+//// end generated include
+
+struct vCardConflictObj{
+       vCard *vCardLocalData;
+       vCard *vCardServerData;
+       QRNotif *QRNotifData;
+};
+
+/** Implementing frmConflictResolutionADT */
+class frmConflictResolution : public frmConflictResolutionADT
+{
+       private:
+               int ConflictResult;
+       protected:
+               // Handlers for frmConflictResolutionADT events.
+               void KeepLocalData( wxCommandEvent& event );
+               void KeepServerData( wxCommandEvent& event );
+               void DecideLater( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmConflictResolution( wxWindow* parent );
+               int GetResult();
+               void LoadData(vCard *LocalObj, vCard *ServerObj, std::map<wxString, wxString> *MemoryFSList);
+       //// end generated class members
+       
+};
+
+#endif // __frmConflictResolution__
diff --git a/source/frmContact.cpp b/source/frmContact.cpp
new file mode 100644 (file)
index 0000000..5d9eeae
--- /dev/null
@@ -0,0 +1,131 @@
+#include "frmContact.h"
+#include "common/getcontactinfo.h"
+#include "frmMain.h"
+#include <wx/fs_mem.h>
+#include <wx/filesys.h>
+#include <wx/app.h>
+
+BEGIN_EVENT_TABLE(frmContact, wxFrame)
+END_EVENT_TABLE()
+
+frmContact::frmContact( wxWindow* parent )
+:
+frmContactADT( parent )
+{
+
+}
+
+void frmContact::CloseWindowProcessing(){
+
+}
+
+void frmContact::CloseWindow( wxCommandEvent& event ){
+               
+       this->Close();
+
+}
+
+void frmContact::CloseWindow( wxCloseEvent& event ){
+
+       // Off for peppermint tea. Better clean up first or
+       // we'll be in for it later.
+
+       wxFileSystem::AddHandler(new wxMemoryFSHandler);
+
+       if (MemoryFSListPtr->find(SessionID) == MemoryFSListPtr->end()){
+
+       } else {
+
+               std::map<wxString, wxString>::iterator striter;
+
+               for (striter = MemoryFSListPtr->begin(); striter != MemoryFSListPtr->end(); striter++){
+
+                       if (SessionID == striter->second){
+
+                               // Delete the references from the wxMemoryFSHandler
+                               // and the entry from the map.
+
+                               wxMemoryFSHandler::RemoveFile(striter->first);
+
+                               break;
+
+                       }
+
+               }
+
+               MemoryFSListPtr->erase(striter);
+
+       }
+       
+       WindowData *WData = new WindowData;
+
+       WData->DataType = 0;
+       WData->WindowPointer = this;
+       WData->WindowID = ContactUID;
+
+       wxCommandEvent delevent(WINDOW_CLOSE);
+       delevent.SetClientData(WData);
+       wxPostEvent(GetParent(), delevent);
+       
+       Destroy();
+
+}
+
+
+
+bool frmContact::SetupContactData(vCard *vCardObj){
+
+       wxFileSystem::AddHandler(new wxMemoryFSHandler);
+       
+       for (std::map<wxString, wxString>::iterator striter = MemoryFSListPtr->begin();
+       striter != MemoryFSListPtr->end(); striter++){
+
+               if (SessionID == striter->second){
+
+                       // Delete the references from the wxMemoryFSHandler
+                       // and the entry from the map.
+
+                       wxMemoryFSHandler::RemoveFile(striter->first);
+                       MemoryFSListPtr->erase(striter);
+
+               }
+
+       }
+
+       OldSessionID = SessionID;
+       SessionID = wxString::Format(wxT("%i"), rand() % 32768);
+       LoadContactData(vCardObj, htmContactData, SessionID, OldSessionID, MemoryFSListPtr);
+       SetTitle(vCardObj->Get(wxT("FN")));
+
+       WindowData *WData = new WindowData;
+
+       vCardFilename = vCardObj->GetFilename();
+
+       WData->DataType = 0;
+       WData->WindowPointer = this;
+       WData->WindowID = ContactUID;
+
+       wxCommandEvent editevent(WINDOW_EDIT);
+       editevent.SetClientData(WData);
+       wxPostEvent(GetParent(), editevent);
+
+       return TRUE;
+}
+
+void frmContact::SetupPointers(std::map<wxString,wxString> *MemoryFSListIncPtr){
+
+       MemoryFSListPtr = MemoryFSListIncPtr;
+
+}
+
+void frmContact::SetUID(int UID){
+
+       ContactUID = UID;
+
+}
+
+wxString frmContact::GetFilename(){
+
+       return vCardFilename;
+
+}
\ No newline at end of file
diff --git a/source/frmContact.h b/source/frmContact.h
new file mode 100644 (file)
index 0000000..305c6a4
--- /dev/null
@@ -0,0 +1,40 @@
+#include "vcard/vcard.h"
+#include <map>
+
+#ifndef __frmContact__
+#define __frmContact__
+
+/**
+@file
+Subclass of frmContactADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+
+//// end generated include
+
+/** Implementing frmContactADT */
+class frmContact : public frmContactADT
+{
+       private:
+               std::map<wxString,wxString> *MemoryFSListPtr;
+               wxString SessionID;
+               wxString OldSessionID;
+               int ContactUID;
+               void CloseWindowProcessing();
+               wxString vCardFilename;
+       public:
+               /** Constructor */
+               frmContact( wxWindow* parent );
+               bool SetupContactData(vCard *vCardObj);
+               void CloseWindow( wxCloseEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+               void SetupPointers(std::map<wxString,wxString> *MemoryFSListIncPtr);
+               void SetUID(int UID);
+               wxString GetFilename();
+               DECLARE_EVENT_TABLE();
+       //// end generated class members
+       
+};
+
+#endif // __frmContact__
diff --git a/source/frmEditAccount.cpp b/source/frmEditAccount.cpp
new file mode 100644 (file)
index 0000000..b7c8fef
--- /dev/null
@@ -0,0 +1,231 @@
+#include "frmEditAccount.h"
+#include "carddav/carddav.h"
+
+frmEditAccount::frmEditAccount( wxWindow* parent )
+:
+frmEditAccountADT( parent )
+{
+
+}
+
+void frmEditAccount::DetectAddressBook( wxCommandEvent& event )
+{
+
+       // Check data before connecting.
+
+       wxString ValueData;
+       
+       long PortNum;
+       ValueData = txtPort->GetValue();
+       ValueData.ToLong(&PortNum, 10);
+       long RefreshNum;
+       ValueData = txtRefresh->GetValue();
+       ValueData.ToLong(&RefreshNum, 10);
+       bool UseSSL;
+       
+       if (txtAddress->IsEmpty()){
+       
+               wxMessageBox(wxT("The server address cannot be blank."), wxT("Error"), wxICON_ERROR);
+               return;
+       
+       }
+       
+       if (txtPort->IsEmpty() || PortNum < 0 || PortNum > 65535){
+       
+               wxMessageBox(wxT("The server port needs to be between number 1 and 65535."), wxT("Error"), wxICON_ERROR);
+               return;
+       
+       }
+       
+       if (txtUsername->IsEmpty()){
+       
+               wxMessageBox(wxT("The server username cannot be blank."), wxT("Error"), wxICON_ERROR);
+               return;
+       
+       }
+
+       if (txtPassword->IsEmpty()){
+       
+               wxMessageBox(wxT("The server password cannot be blank."), wxT("Error"), wxICON_ERROR);  
+               return;
+       
+       }
+       
+       UseSSL = chkSSL->GetValue();
+       
+       if (txtRefresh->IsEmpty() || RefreshNum < 300 || RefreshNum > 86400){
+       
+               RefreshNum = 1800;
+               
+       }
+       
+       // Setup a CardDAV object.
+       
+       CardDAV CDavObj;
+       
+       CDavObj.SetupConnection(txtAddress->GetValue(), PortNum, txtUsername->GetValue(), txtPassword->GetValue(), UseSSL);
+       
+       // Attempt to extract the CardDAV address.
+       
+       wxString ABURL = CDavObj.GetDefaultAddressBookURL();
+       
+       txtPrefix->SetValue(ABURL);
+       
+}
+
+void frmEditAccount::LoadPointers( wxFileConfig* cfgin ){
+
+       cfgfile = cfgin;
+
+}
+
+void frmEditAccount::LoadSettings( wxString AccNameIn ){
+
+       // Get the data from the accounts settings file.
+
+       AccName = AccNameIn;
+       long itemindex = 0;
+       bool ContinueAcc = TRUE;
+       wxString AccountName;
+       wxString AccountData;
+
+       ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex);
+
+       while (ContinueAcc){
+
+               if (AccountName == AccName){
+
+                       cfgfile->SetPath(AccountName);
+                       txtAccountName->SetValue(AccountName);
+
+                       cfgfile->Read("address", &AccountData);
+                       txtAddress->SetValue(AccountData);
+
+                       cfgfile->Read("port", &AccountData);
+                       txtPort->SetValue(AccountData);
+
+                       cfgfile->Read("username", &AccountData);
+                       txtUsername->SetValue(AccountData);
+
+                       cfgfile->Read("password", &AccountData);
+                       txtPassword->SetValue(AccountData);
+
+                       cfgfile->Read("prefix", &AccountData);
+                       txtPrefix->SetValue(AccountData);
+
+                       cfgfile->Read("ssl", &AccountData);
+                       if (AccountData == wxT("true")){
+                       
+                               chkSSL->SetValue(TRUE);
+                       
+                       }
+                       
+                       cfgfile->Read("refresh", &AccountData);
+                       txtRefresh->SetValue(AccountData);
+                       
+                       break;
+
+               }
+               
+               cfgfile->SetPath(wxT("/"));
+               ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex);
+
+       }
+
+}
+
+void frmEditAccount::UpdateSettings( wxCommandEvent& event )
+{
+
+       // Update the settings for the account.
+
+       long itemindex = 0;
+       bool ContinueAcc = TRUE;
+       wxString AccountName;
+
+       // Look for the account
+       
+       while (ContinueAcc){
+
+               if (AccountName == AccName){
+
+                       // Update the settings for the account.
+
+                       cfgfile->RenameGroup(AccountName, txtAccountName->GetValue());
+
+                       cfgfile->SetPath(txtAccountName->GetValue());
+                       //txtAccountName->SetValue(AccountName);
+                       
+                       cfgfile->DeleteEntry(wxT("address"), FALSE);
+                       cfgfile->Write(wxT("address"), txtAddress->GetValue());
+
+                       cfgfile->DeleteEntry(wxT("port"), FALSE);
+                       cfgfile->Write(wxT("port"), txtPort->GetValue());
+
+                       cfgfile->DeleteEntry(wxT("username"), FALSE);
+                       cfgfile->Write(wxT("username"), txtUsername->GetValue());
+
+                       cfgfile->DeleteEntry(wxT("password"), FALSE);
+                       cfgfile->Write(wxT("password"), txtPassword->GetValue());
+
+                       cfgfile->DeleteEntry(wxT("prefix"), FALSE);
+                       cfgfile->Write(wxT("prefix"), txtPrefix->GetValue());
+
+                       cfgfile->DeleteEntry(wxT("ssl"), FALSE);
+
+                       if (chkSSL->GetValue() == TRUE){
+                       
+                               cfgfile->Write(wxT("ssl"), wxT("true"));
+                       
+                       } else {
+                       
+                               cfgfile->Write(wxT("ssl"), wxT("false"));
+                       
+                       }
+
+                       cfgfile->DeleteEntry(wxT("refresh"), FALSE);
+                       cfgfile->Write(wxT("refresh"), txtRefresh->GetValue());
+
+                       /*cfgfile->Read("address", &AccountData);
+                       //txtAddress->SetValue(AccountData);
+
+                       cfgfile->Read("port", &AccountData);
+                       //txtPort->SetValue(AccountData);
+
+                       cfgfile->Read("username", &AccountData);
+                       //txtUsername->SetValue(AccountData);
+
+                       cfgfile->Read("password", &AccountData);
+                       //txtPassword->SetValue(AccountData);
+
+                       cfgfile->Read("prefix", &AccountData);
+                       //txtPrefix->SetValue(AccountData);
+
+                       cfgfile->Read("ssl", &AccountData);
+                       if (AccountData == wxT("true")){
+                       
+                               chkSSL->SetValue(TRUE);
+                       
+                       }
+                       
+                       cfgfile->Read("refresh", &AccountData);
+                       //txtRefresh->SetValue(AccountData);*/
+
+                       
+                       break;
+
+               }
+               
+               cfgfile->SetPath(wxT("/"));
+               ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex);
+
+       }
+       
+       this->Close();  
+
+}
+
+void frmEditAccount::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
diff --git a/source/frmEditAccount.h b/source/frmEditAccount.h
new file mode 100644 (file)
index 0000000..8247440
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef __frmEditAccount__
+#define __frmEditAccount__
+
+/**
+@file
+Subclass of frmEditAccountADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include <wx/fileconf.h>
+
+//// end generated include
+
+/** Implementing frmEditAccountADT */
+class frmEditAccount : public frmEditAccountADT
+{
+       protected:
+               // Handlers for frmEditAccountADT events.
+               void DetectAddressBook( wxCommandEvent& event );
+               void UpdateSettings( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmEditAccount( wxWindow* parent );
+               void LoadPointers( wxFileConfig* cfgin );
+               void LoadSettings( wxString AccNameIn );
+       private:
+               wxFileConfig *cfgfile;
+               wxString AccName;
+       //// end generated class members
+       
+};
+
+#endif // __frmEditAccount__
diff --git a/source/frmInvalidSSLCertificate.cpp b/source/frmInvalidSSLCertificate.cpp
new file mode 100644 (file)
index 0000000..a7e75ca
--- /dev/null
@@ -0,0 +1,55 @@
+#include "frmInvalidSSLCertificate.h"
+#include "frmSSLCertificate.h"
+
+frmInvalidSSLCertificate::frmInvalidSSLCertificate( wxWindow* parent )
+:
+frmInvalidSSLCertificateADT( parent )
+{
+
+}
+
+void frmInvalidSSLCertificate::Accept( wxCommandEvent& event )
+{
+       intResult = 1;
+       Close();
+}
+
+void frmInvalidSSLCertificate::Reject( wxCommandEvent& event )
+{
+       intResult = 2;
+       Close();
+}
+
+void frmInvalidSSLCertificate::ViewCertificates( wxCommandEvent& event )
+{
+       frmSSLCertificate *frameSSLCert = new frmSSLCertificate ( this );
+       frameSSLCert->StartCertFrom(0);
+       frameSSLCert->SetupCerts(CertData);
+       frameSSLCert->ShowModal();
+               
+       delete frameSSLCert;
+       frameSSLCert = NULL;
+}
+
+void frmInvalidSSLCertificate::LoadData(SSLCertCollection CertDataInc, 
+                                       wxString AccountNameInc)
+{
+
+       AccountName = AccountNameInc;
+       CertData = CertDataInc;
+
+       lblSSLText->SetLabel(wxT("An invalid SSL certificate was received from the server for the '") + AccountName + wxT("' account.\n\n") +
+               wxT("Click on one of the following buttons:\n\n") +
+               wxT("- Accept to accept the SSL certificate for this session and future sessions until the certificate changes.\n") +
+               wxT("- Reject to not use this certificate and disconnect (you will be asked again on subsequent reconnections to the server).\n") +
+               wxT("- View Certificates to review the certificates that were received.")
+       );
+
+}
+
+int frmInvalidSSLCertificate::GetResult()
+{
+
+       return intResult;
+
+}
\ No newline at end of file
diff --git a/source/frmInvalidSSLCertificate.h b/source/frmInvalidSSLCertificate.h
new file mode 100644 (file)
index 0000000..b7ead06
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef __frmInvalidSSLCertificate__
+#define __frmInvalidSSLCertificate__
+
+/**
+@file
+Subclass of frmInvalidSSLCertificateADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "frmMain.h"
+#include "common/sslcertstructs.h"
+
+//// end generated include
+
+struct SSLInvalidCertNotifObj{
+       SSLCertCollection CertCollection;
+       QRNotif *QRNotifData;
+       wxString AccountName;
+};
+
+/** Implementing frmInvalidSSLCertificateADT */
+class frmInvalidSSLCertificate : public frmInvalidSSLCertificateADT
+{
+       protected:
+               // Handlers for frmInvalidSSLCertificateADT events.
+               void Accept( wxCommandEvent& event );
+               void Reject( wxCommandEvent& event );
+               void ViewCertificates( wxCommandEvent& event );
+       private:
+               SSLCertCollection CertData;
+               int intResult;
+               wxString AccountName;
+       public:
+               /** Constructor */
+               frmInvalidSSLCertificate( wxWindow* parent );
+               void LoadData(SSLCertCollection CertDataInc, wxString AccountNameInc);
+               int GetResult();
+       //// end generated class members
+       
+};
+
+#endif // __frmInvalidSSLCertificate__
diff --git a/source/frmMain.cpp b/source/frmMain.cpp
new file mode 100644 (file)
index 0000000..c352b82
--- /dev/null
@@ -0,0 +1,2833 @@
+#include <iostream>
+#include <algorithm>
+#include <vector>
+#include <thread>
+
+#include <wx/wx.h>
+#include <wx/tokenzr.h>
+#include <wx/icon.h>
+#include <wx/mstream.h>
+#include <wx/fs_mem.h>
+#include <wx/ffile.h>
+#include <wx/filesys.h>
+#include <wx/dir.h>
+#include <wx/stdpaths.h>
+#include <wx/fileconf.h>
+//#include <boost/filesystem/fstream.hpp>
+
+// Include the forms.
+
+#include "frmMain.h"
+#include "frmAbout.h"
+#include "frmPreferences.h"
+#include "frmNewAccount.h"
+#include "frmActivityMgr.h"
+#include "frmContact.h"
+#include "frmConflictResolution.h"
+#include "frmInvalidSSLCertificate.h"
+#include "frmSearch.h"
+#include "frmSSLCertificate.h"
+#include "frmUpdate.h"
+#include "bitmaps.h"
+
+#include "common/preferences.h"
+#include "common/getcontactinfo.h"
+#include "common/events.h"
+#include "common/dirs.h"
+#include "vcard/vcard.h"
+#include "carddav/carddav.h"
+#include "contacteditor/frmContactEditor.h"
+#include "import/import.h"
+#include "export/export.h"
+#include "widgets/XABAccountView2.h"
+
+#include "version.h"
+
+//extern const wxEventType MyHaremEvent = wxNewEventType();
+
+//#define CE_UPDATECONTACTLIST 7700
+//#define CE_UPDATEACCOUNTLIST 7701
+
+DEFINE_EVENT_TYPE(CE_UPDATECONTACTLIST);
+DEFINE_EVENT_TYPE(CE_UPDATEACCOUNTLIST);
+DEFINE_EVENT_TYPE(SE_UPDATECONTACTNOTIF);
+DEFINE_EVENT_TYPE(CE_OPENCONTACT);
+DEFINE_EVENT_TYPE(CE_EDITCONTACT);
+DEFINE_EVENT_TYPE(CE_REVEALCONTACT);
+DEFINE_EVENT_TYPE(CE_REMOVECONTACT);
+DEFINE_EVENT_TYPE(CE_REMOVESEARCH);
+DEFINE_EVENT_TYPE(SYNC_EMPTYSERVER);
+DEFINE_EVENT_TYPE(ACTMGR_START);
+DEFINE_EVENT_TYPE(ACTMGR_SHUFFLE);
+DEFINE_EVENT_TYPE(ACTMGR_STOP);
+DEFINE_EVENT_TYPE(WINDOW_ADD);
+DEFINE_EVENT_TYPE(WINDOW_EDIT);
+//DEFINE_EVENT_TYPE(WINDOW_DELETE);
+DEFINE_EVENT_TYPE(WINDOW_CLOSE);
+DEFINE_EVENT_TYPE(CONNSTAT_UPDATE);
+DEFINE_EVENT_TYPE(INVALIDSSLCERT);
+DEFINE_EVENT_TYPE(GETSELECTEDLIST);
+DEFINE_EVENT_TYPE(SYNCACCOUNT);
+
+BEGIN_EVENT_TABLE(frmMain, wxFrame)
+  EVT_COMMAND(wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, frmMain::ConflictResolution)
+  EVT_COMMAND(wxID_ANY, CE_UPDATECONTACTLIST, frmMain::UpdateContactList)
+  EVT_COMMAND(wxID_ANY, CE_UPDATEACCOUNTLIST, frmMain::UpdateAccountList)
+  EVT_COMMAND(wxID_ANY, SE_UPDATECONTACTNOTIF, frmMain::UpdateSearchContactLists)
+  EVT_COMMAND(wxID_ANY, CE_OPENCONTACT, frmMain::OpenContactInfo)
+  EVT_COMMAND(wxID_ANY, CE_EDITCONTACT, frmMain::ShowContactEditorEdit)
+  EVT_COMMAND(wxID_ANY, CE_REVEALCONTACT, frmMain::RevealContact)
+  EVT_COMMAND(wxID_ANY, CE_REMOVESEARCH, frmMain::RemoveContactsWindowPointer)
+  EVT_COMMAND(wxID_ANY, SYNC_EMPTYSERVER, frmMain::EmptyServerDialog)
+  EVT_COMMAND(wxID_ANY, ACTMGR_START, frmMain::ActivityIconStart)
+  EVT_COMMAND(wxID_ANY, ACTMGR_SHUFFLE, frmMain::ActivityIconShuffle)
+  EVT_COMMAND(wxID_ANY, ACTMGR_STOP, frmMain::ActivityIconStop)
+  EVT_COMMAND(wxID_ANY, WINDOW_ADD, frmMain::WindowAdd)
+  EVT_COMMAND(wxID_ANY, WINDOW_EDIT, frmMain::WindowEdit)
+  EVT_COMMAND(wxID_ANY, WINDOW_CLOSE, frmMain::WindowDelete)
+  EVT_COMMAND(wxID_ANY, CONNSTAT_UPDATE, frmMain::UpdateConnectionStatus)
+  EVT_COMMAND(wxID_ANY, INVALIDSSLCERT, frmMain::InvalidSSLCertificate)
+  EVT_COMMAND(wxID_ANY, GETSELECTEDLIST, frmMain::GetSelectedList)
+  EVT_COMMAND(wxID_ANY, SYNCACCOUNT, frmMain::SyncAccount)
+END_EVENT_TABLE()
+
+frmMain::frmMain( wxWindow* parent )
+:
+frmMainADT( parent )
+{
+
+       // Setup the account icons.
+
+       wxMemoryInputStream astream(icons_accinet_png, sizeof(icons_accinet_png));
+       wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png));
+       wxMemoryInputStream cstream(icons_accgroup_png, sizeof(icons_accgroup_png));
+       wxMemoryInputStream dstream(icons_accnone_png, sizeof(icons_accnone_png));
+
+       wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccInet(icons_accinet_png, -1);
+       wxIcon wxIAccInet;
+       wxIAccInet.CopyFromBitmap(AccInet);
+
+       wxImage icons_acclocal_png(bstream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccNIcon(icons_acclocal_png, -1);
+       wxIcon wxIAccNIcon;
+       wxIAccNIcon.CopyFromBitmap(AccNIcon);
+
+       wxImage icons_accgroup_png(cstream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccGrp(icons_accgroup_png, -1);
+       wxIcon wxIAccGrp;
+       wxIAccGrp.CopyFromBitmap(AccGrp);
+       
+       wxImage icons_accnone_png(dstream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccNone(icons_accnone_png, -1);
+       wxIcon wxIAccNone;
+       wxIAccNone.CopyFromBitmap(AccNone);
+
+       AccountID = AccImgList->Add(wxIAccNIcon);
+       AccountNetID = AccImgList->Add(wxIAccInet);
+       AccountGrpID = AccImgList->Add(wxIAccGrp);
+       AccountNoneID = AccImgList->Add(wxIAccNone);
+
+       bmpIcon->SetIcon(AccImgList->GetIcon(AccountNoneID));
+
+       // Setup the status bar icons.
+       
+       // SSL icons.
+       
+       wxMemoryInputStream sslstream(icons_ssl_png, sizeof(icons_ssl_png));
+       wxMemoryInputStream sslwarningstream(icons_sslwarning_png, sizeof(icons_sslwarning_png));
+       wxMemoryInputStream nosslstream(icons_nossl_png, sizeof(icons_nossl_png));
+
+       wxImage icons_ssl_png(sslstream, wxBITMAP_TYPE_PNG);
+       imgSSL = new wxBitmap(icons_ssl_png, -1);
+
+       wxImage icons_sslwarning_png(sslwarningstream, wxBITMAP_TYPE_PNG);
+       imgSSLWarning = new wxBitmap(icons_sslwarning_png, -1);
+
+       wxImage icons_nossl_png(nosslstream, wxBITMAP_TYPE_PNG);
+       imgNoSSL = new wxBitmap(icons_nossl_png, -1);
+
+       // Activity Icon.
+
+       wxMemoryInputStream act1(icons_act1_png, sizeof(icons_act1_png));
+       wxMemoryInputStream act2(icons_act2_png, sizeof(icons_act2_png));
+       wxMemoryInputStream act3(icons_act3_png, sizeof(icons_act3_png));
+       wxMemoryInputStream act4(icons_act4_png, sizeof(icons_act4_png));
+       wxMemoryInputStream actsleep(icons_actsleep_png, sizeof(icons_actsleep_png));
+
+       wxImage icons_actsleep_png(actsleep, wxBITMAP_TYPE_PNG);
+       imgActIconSleep = new wxBitmap (icons_actsleep_png, -1);
+
+       wxImage icons_act1_png(act1, wxBITMAP_TYPE_PNG);
+       imgActIcon1 = new wxBitmap (icons_act1_png, -1);
+       wxIcon wxIAct1icon;
+       wxIAct1icon.CopyFromBitmap(*imgActIcon1);
+       
+       wxImage icons_act2_png(act2, wxBITMAP_TYPE_PNG);
+       imgActIcon2 = new wxBitmap (icons_act2_png, -1);
+       wxIcon wxIAct2icon;
+       wxIAct2icon.CopyFromBitmap(*imgActIcon2);
+       
+       wxImage icons_act3_png(act3, wxBITMAP_TYPE_PNG);
+       imgActIcon3 = new wxBitmap (icons_act3_png, -1);
+       wxIcon wxIAct3icon;
+       wxIAct3icon.CopyFromBitmap(*imgActIcon3);
+               
+       wxImage icons_act4_png(act4, wxBITMAP_TYPE_PNG);
+       imgActIcon4 = new wxBitmap (icons_act4_png, -1);
+       wxIcon wxIAct4icon;
+       wxIAct4icon.CopyFromBitmap(*imgActIcon4);
+
+       // Online/Offline icons.
+
+       wxMemoryInputStream onlinestream(icons_online_png, sizeof(icons_online_png));
+       wxMemoryInputStream offlinestream(icons_offline_png, sizeof(icons_offline_png));
+
+       wxImage icons_online_png(onlinestream, wxBITMAP_TYPE_PNG);
+       imgOnline = new wxBitmap(icons_online_png, -1);
+
+       wxImage icons_offline_png(offlinestream, wxBITMAP_TYPE_PNG);
+       imgOffline = new wxBitmap(icons_offline_png, -1);
+
+       // Setup the account view.
+       
+       AccCtrl->SetPopupControl(treAccounts);
+       AccCtrl->SetPopupMaxHeight(175);
+       AccCtrl->SetPopupMinWidth(250);
+       treAccounts->AssignImageList(AccImgList);
+       //bmpIcon->Hide();
+       wxRect AccTextCtrlSize = AccCtrl->GetTextRect();
+
+       /*wxStaticBitmap* BeepBoop = new wxStaticBitmap(AccCtrl, wxID_ANY, wxNullBitmap, wxPoint(AccTextCtrlSize.GetX() + 3, AccTextCtrlSize.GetY() + 2), wxDefaultSize, 0);
+
+       icons_accgroup_png.SetMask(new wxMask(icons_accgroup_png, wxSystemSettings::GetColour(wxSYS_COLOUR_BACKGROUND)));
+
+       BeepBoop->SetBackgroundColour(AccCtrl->GetBackgroundColour());
+       BeepBoop->SetBitmap(icons_accgroup_png);*/
+
+       //szrContactList->Insert(0, XABV2, 1, wxEXPAND | wxALL, 0);
+
+       /*AccControl->UseAltPopupWindow();
+       AccControl->SetPopupControl(treAccounts);
+       AccControl->SetPopupMaxHeight(175);
+
+       treAccounts->AssignImageList(AccImgList);
+       szrContactList->Insert(0, AccControl, 1, wxEXPAND|wxALL, 0);
+       szrAccList->Add(AccIcon, 0, wxLEFT|wxTOP|wxEXPAND, 3);
+
+       */
+
+       //szrContactList->Layout();
+       //szrContactList->RecalcSizes();
+
+       wxListItem ColumnData;
+       ColumnData.SetId(0);
+       ColumnData.SetText(wxT("Name0"));
+       ColumnData.SetWidth(320);
+       lstContacts->InsertColumn(0, ColumnData);
+       
+       //Connect(wxID_ANY, ContactConflictCmdEnv,
+       //      ContactConflictEventHandler(frmMain::ConflictResolution), NULL, this);
+
+       //Connect(wxID_ANY, MyFooCommandEvent,
+       //      MyFooEventHandler(frmMain::DoSomething), NULL, this);
+
+       //Bind(ContactConflictCmdEnv, ContactConflictEventHandler(frmMain::ConflictResolution), this, wxID_ANY);
+
+       treAccounts->Connect(wxEVT_LEFT_DCLICK, wxTreeEventHandler(frmMain::LoadContactList), NULL, this);
+       treAccounts->Connect(wxEVT_TREE_SEL_CHANGED, wxTreeEventHandler(frmMain::LoadContactList), NULL, this);
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+       int stbBottomData [4] = { -1, 8, 8, 8 };
+
+#else
+
+       int stbBottomData [4] = { -1, 20, 20, 20 };
+       
+#endif
+
+       stbBottom->SetFieldsCount(4, stbBottomData);
+       stbBottom->SetMinHeight(16);
+       
+       wxRect rectOnline;
+       wxRect rectSSL;
+       wxRect rectActivity;
+       stbBottom->GetFieldRect(1, rectOnline);
+       stbBottom->GetFieldRect(2, rectSSL);
+       stbBottom->GetFieldRect(3, rectActivity);
+
+       SSLToolTip = new wxToolTip(wxT(""));
+       
+       imgConnStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectOnline.GetX()),(rectOnline.GetY())), wxDefaultSize, 0 );
+       imgConnStatus->SetBitmap(*imgOnline);
+       imgConnStatus->Connect( wxEVT_LEFT_DCLICK, wxCommandEventHandler( frmMain::ToggleConnectionStatus ), NULL, this );
+       
+       imgSSLStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectSSL.GetX()),(rectSSL.GetY())), wxDefaultSize, 0 );
+       imgSSLStatus->SetBitmap(*imgNoSSL);
+       imgSSLStatus->SetToolTip(SSLToolTip);
+       imgSSLStatus->Connect( wxEVT_LEFT_DCLICK, wxCommandEventHandler( frmMain::ShowSSLCertificates ), NULL, this );
+
+       imgActivityStatus = new wxStaticBitmap(stbBottom, wxID_ANY, wxNullBitmap, wxPoint((rectActivity.GetX()),(rectActivity.GetY())), wxDefaultSize, 0);
+       imgActivityStatus->SetBitmap(*imgActIconSleep);
+       imgActivityStatus->Connect( wxEVT_LEFT_DCLICK, wxCommandEventHandler( frmMain::ShowActivityWindow ), NULL, this );
+
+       // Setup the window menu.
+       
+       // By default should be:
+       
+       // Contact windows:
+       // (none)
+       // (horizontal line)
+       // Contact editor windows:
+       // (none)
+       // (horizontal line)
+       // Search windows:
+       // (none)
+       
+       mnuContactWindows = new wxMenuItem( mnuManage, wxID_ANY, wxString( _("Contact windows:") ), wxEmptyString, wxITEM_NORMAL );
+       mnuWindow->Append( mnuContactWindows );
+
+       mnuWindow->AppendSeparator();
+
+       mnuContactEditorWindows = new wxMenuItem( mnuManage, wxID_ANY, wxString( _("Contact editor windows:") ), wxEmptyString, wxITEM_NORMAL );
+       mnuWindow->Append( mnuContactEditorWindows );
+
+       mnuWindow->AppendSeparator();
+
+       mnuSearchWindows = new wxMenuItem( mnuManage, wxID_ANY, wxString( wxT("Search windows:") ), wxEmptyString, wxITEM_NORMAL );
+       mnuWindow->Append( mnuSearchWindows );
+       
+#if defined(__WIN32__)
+       
+       wxFont fontstyle;
+       fontstyle.Bold();
+
+       mnuContactWindows->SetFont(fontstyle);
+       mnuContactEditorWindows->SetFont(fontstyle);
+       mnuSearchWindows->SetFont(fontstyle);
+
+#else
+
+       mnuContactWindows->Enable(FALSE);
+       mnuContactEditorWindows->Enable(FALSE);
+       mnuSearchWindows->Enable(FALSE);
+
+#endif
+
+       // Hide unimplemented functions.
+       
+       mnuMain->Remove(3);
+       
+}
+
+void frmMain::QuitApp( wxCommandEvent& event )
+{
+//-------------------------------------------------------------------
+// frmMain::QuitApp: Quits the application by simply closing this
+// window which causes the exit as frmMain is the main window.
+//
+// wxCommandEvent      Accepts a referenced event command.
+//-------------------------------------------------------------------
+
+       //Go through the windows and close each one (be it search
+       //or contact editor). Abort if user wants to cancel.
+
+       // Close the contact editor windows.
+       
+       // Close the contact windows.
+       
+       // Close the search windows.
+
+       // Write out the ETag databases.
+
+       // Save Preferences: Save the window position if that option is enabled.
+    
+       wxString SetFilename = GetUserPrefDir();
+
+#if defined(__HAIKU__)
+    
+
+
+#elif defined(__WIN32__)
+
+       SetFilename.Append(wxT("settings"));
+
+#else
+    
+       // *nix OSes
+
+       SetFilename.Append(wxT("settings"));
+
+#endif
+
+       wxFileConfig *cfgfile = new wxFileConfig("", "", SetFilename);
+        
+       bool SaveWindowPos = FALSE;
+       wxString SaveWindowInc;
+       cfgfile->Read(wxT("SaveWindowPosition"), &SaveWindowInc);
+       
+       if (SaveWindowInc == wxT("true")){
+       
+               SaveWindowPos = TRUE;
+       
+       }
+       
+       if (SaveWindowPos == TRUE){
+       
+               wxRect frmMainPos = this->GetRect();
+       
+               cfgfile->Write(wxT("WindowPositionX"), frmMainPos.GetX());
+               cfgfile->Write(wxT("WindowPositionY"), frmMainPos.GetY());
+               cfgfile->Write(wxT("WindowPositionHeight"), frmMainPos.GetHeight());
+               cfgfile->Write(wxT("WindowPositionWidth"), frmMainPos.GetWidth());
+
+       
+       }
+       
+       delete cfgfile;
+       cfgfile = NULL;
+       
+       //Everything closed... exit.
+    
+       std::exit(0);
+    
+}
+
+void frmMain::QuitApp()
+{
+//-------------------------------------------------------------------
+// frmMain::QuitApp: Quits the application by simply closing this
+// window which causes the exit as frmMain is the main window.
+//
+// wxCommandEvent      Accepts a referenced event command.
+//-------------------------------------------------------------------
+
+    Close(this);
+}
+
+void frmMain::ShowActivityWindow( wxCommandEvent& event )
+{
+
+    frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+    frameActMgr->OpenWindow();
+    frameActMgr->Show();
+
+}
+
+void frmMain::ShowAboutWindow( wxCommandEvent& event )
+{
+//-------------------------------------------------------------------
+// frmMain::ShowAboutWindow: Shows the About window as a modal
+// dialog and then cleans up when finished.
+//
+// wxCommandEvent      Accepts a referenced event command.
+//-------------------------------------------------------------------
+  
+    frmAbout *frameAbout = new frmAbout ( this );
+    frameAbout->SetupAboutWindow();
+    frameAbout->ShowModal();
+    delete frameAbout;
+    frameAbout = NULL;
+    
+}
+
+void frmMain::OpenPreferences( wxCommandEvent& event)
+{
+//-------------------------------------------------------------------
+// frmMain::ShowAboutWindow: Opens the Preferences window as a modal
+// dialog and then cleans up when finished.
+//
+// wxCommandEvent      Accepts a referenced event command.
+//-------------------------------------------------------------------
+
+    ReloadAccounts = FALSE;
+
+    frmPreferences *framePreferences = new frmPreferences ( this );
+    framePreferences->SetupPointers(&ReloadAccounts);
+    framePreferences->ShowModal();
+    delete framePreferences;
+    framePreferences = NULL;
+    
+    if (ReloadAccounts == TRUE){
+    
+       // Reload the accounts as a change has been made within
+       // the application.
+       
+       this->LoadPreferences();
+    
+    }
+    
+}
+
+void frmMain::OpenNewABDialog( wxCommandEvent& event)
+{
+//-------------------------------------------------------------------
+// frmMain::ShowAboutWindow: Opens the Preferences window as a modal
+// dialog and then cleans up when finished.
+//
+// wxCommandEvent      Accepts a referenced event command.
+//-------------------------------------------------------------------
+
+    ReloadAccounts = FALSE;
+
+    frmNewAccount *frameNewAccount = new frmNewAccount ( this );
+    frameNewAccount->SetupPointers(&ReloadAccounts);
+    frameNewAccount->ShowModal();
+    delete frameNewAccount;
+    frameNewAccount = NULL;
+    
+    if (ReloadAccounts == TRUE){
+    
+       // Reload the accounts as a change has been made within
+       // the application.
+       
+               this->LoadPreferences();
+    
+    }
+    
+}
+
+void frmMain::LoadContactList( wxTreeEvent& event )
+{
+
+    // Clear all existing variables.
+
+    lstContacts->DeleteAllItems();
+
+       treAccounts->SetAccount();
+
+    wxTreeItemIdValue cookie;
+    wxTreeItemId next = treAccounts->GetRootItem();
+    wxString AccountName;
+    wxString AccountDir, AccountType, AccountDirFinal, AccountTypeFinal;
+    wxString AccountDirCmb;
+    long selectedaccount = 0;
+
+    wxTreeItemId selectedChild = treAccounts->GetSelection();
+    wxTreeItemId nextChild;
+    
+    wxTreeItemId ActiveItemId = treAccounts->GetFocusedItem();
+    int ActiveItemIcon = treAccounts->GetItemImage(ActiveItemId, wxTreeItemIcon_Normal);
+    
+    int SCImg = treAccounts->GetItemImage(selectedChild);
+    int AccountIndex = 0;
+
+    bmpIcon->SetIcon(AccImgList->GetIcon(SCImg));
+
+       for (int i = 0; i < prefaccounts.GetCount(); i++){
+
+               if (ActiveItemIcon == 2){
+
+                       std::multimap<wxTreeItemId, int>::iterator AGTiter = AccountGroupTreeId.find(ActiveItemId);
+                       std::multimap<int, wxString>::iterator AGFiter = AccountGroupFilename.find(AGTiter->second);
+                       std::multimap<int, int>::iterator AGLiter = AccountGroupList.find(AGTiter->second);
+                       int ActiveAccountG = AGLiter->second;
+
+                       if (i == ActiveAccountG){
+
+                               AccountDir.Append(prefaccounts.GetAccountDirectory(i));
+                               AccountType.Append(prefaccounts.GetAccountType(i));
+
+                               AccountDir.Trim();
+                               AccountType.Trim();
+
+                               if (AccountType == wxT("CardDAV")){
+                                       AccountTypeFinal.Append(wxT("carddav"));
+                               }
+                               else if (AccountType == wxT("Local")){
+                                       imgSSLStatus->SetBitmap(*imgOffline);
+                                       SSLToolTip->SetTip(wxT("SSL status is not applicable for this account"));
+                                       AccountTypeFinal.Append(wxT("local"));
+                               }
+
+                               AccountIndex = i;
+                               break;
+
+                       }
+
+               }
+
+               if (!nextChild){
+                       nextChild = treAccounts->GetFirstChild(next, cookie);
+               }
+               else {
+                       nextChild = treAccounts->GetNextSibling(nextChild);
+               }
+
+               AccountName = treAccounts->GetItemText(nextChild);
+
+               if (nextChild == selectedChild){
+                       AccountDir.Append(prefaccounts.GetAccountDirectory(i));
+                       AccountType.Append(prefaccounts.GetAccountType(i));
+
+                       AccountDir.Trim();
+                       AccountType.Trim();
+
+                       if (AccountType == wxT("CardDAV")){
+                               AccountTypeFinal.Append(wxT("carddav"));
+                       }
+                       else if (AccountType == wxT("Local")){
+                               SSLToolTip->SetTip(wxT("SSL status is not applicable for this account"));
+                               AccountTypeFinal.Append(wxT("local"));
+                       }
+
+                       AccountIndex = i;
+
+               }
+
+       }
+        
+       if (selectedaccount >= prefaccounts.GetCount()){
+
+               // The account selected isn't there so return.
+
+               RevealWait = FALSE;
+
+               return;
+
+       }
+    
+    // Open the directory and get the list of .vcf files
+    // in that directory.
+
+    ActiveAccount = AccountDir + wxT(".") + AccountTypeFinal;
+       ActiveAccountType = AccountType;
+
+    SetupSSLStatus(AccountIndex);
+
+       AccountDirFinal.Clear();
+       AccountDirFinal = GetAccountDir(AccountDir + wxT(".") + AccountTypeFinal, FALSE);
+    
+    ContactsFileIndex.Clear();
+    
+    //wxString vcardfilenamewxs;
+    wxString vCardFilename;
+    wxString vCardFilenameFull;
+    wxString vCardDataString;
+    wxStringTokenizer vcardfileline;
+    wxString lwxs;
+    wxString setname, setvalue;
+    //vCardNames = new std::map<wxString, wxString, std::greater<wxString>>;
+    std::multimap<wxString, wxString, std::greater<wxString>> vCardNamesAsc;
+    std::multimap<wxString, wxString, std::less<wxString>> vCardNamesDsc;
+    long ContactIndex = 1;
+    long ContactSeekPoint = 0;
+    
+    wxDir vcardaccdir(AccountDirFinal);
+    
+    // Get the wxTreeItemId and image icon and compare it to the list. 
+
+    if (ActiveItemIcon == AccountGrpID){
+
+            // It's a group so load the file containing the group and 
+           // get the members of the group.
+           
+           vCard Group;
+           wxString UIDCode;
+           
+           std::multimap<wxTreeItemId, int>::iterator AGTiter = AccountGroupTreeId.find(ActiveItemId);
+           std::multimap<int, wxString>::iterator AGFiter = AccountGroupFilename.find(AGTiter->second);
+           //std::multimap<wxTreeItemId, int>::iterator AGFiter = AccountGroupTreeId.find(ActiveItemId);
+           
+           Group.LoadFile(AGFiter->second);
+           
+           ArrayvCardOutData vCardMember = Group.GetByPartial(wxT("MEMBER"));
+           
+           for (int i = 0; i < vCardMember.PropCount; i++){
+               
+               vCardMember.PropValues[i].Trim();
+               if (vCardMember.PropValues[i].Left(9) == wxT("urn:uuid:")){
+               
+                   wxString NewPropValue;
+                   NewPropValue = vCardMember.PropValues[i].Mid(9, wxString::npos);
+                   vCardMember.PropValues[i] = NewPropValue;
+               
+               }
+               
+               
+            }
+           
+           bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES);
+           while(ProcFiles){
+    
+               if (vCardFilename.Right(4) == wxT(".vcf") || 
+                   vCardFilename.Right(4) == wxT(".VCF") || 
+                   vCardFilename.Right(5) == wxT(".vcard") || 
+                   vCardFilename.Right(5) == wxT(".VCARD")){
+       
+                       vCard Person;
+                       bool FoundMember = FALSE;
+               
+                       vCardFilenameFull.Append(AccountDirFinal);
+                       vCardFilenameFull.Append(wxT("/"));
+                       vCardFilenameFull.Append(vCardFilename);
+               
+                       Person.LoadFile(vCardFilenameFull);
+               
+                       UIDCode = Person.Get(wxT("UID"));
+               
+                       for (int i = 0; i < vCardMember.PropCount; i++){
+                       
+                               if (vCardMember.PropValues[i] == UIDCode){
+                               
+                                       FoundMember = TRUE;
+                               
+                               }
+                       
+                       }
+                       
+                       if (FoundMember == FALSE){
+
+                               vCardFilename.Clear();
+                               vCardFilenameFull.Clear();
+                               vCardDataString.Clear();
+                               ProcFiles = vcardaccdir.GetNext(&vCardFilename);
+                               continue;
+                       
+                       }
+               
+                       if (Person.MeetBaseSpecification()){
+       
+                           if (SortMode == 1){
+
+                               // Split the name into sections.
+                       
+                               vCardDataString = Person.Get(wxT("N"));
+
+                               vCardName NameData = Person.GetName();
+                   
+                               vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname;
+                   
+                           } else if (SortMode == 2){
+                   
+                               // Split the name into sections.
+                   
+                               vCardName NameData = Person.GetName();    
+                   
+                               vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename;
+                   
+                           } else if (SortMode == 3){
+                   
+                               // Check and make sure that the top most nickname is used.
+                   
+                               vCardDataString = Person.Get(wxT("NICKNAME"));
+                   
+                               if (vCardDataString.IsEmpty()){
+                       
+                                       vCardDataString = wxT("(no nickname)");
+                       
+                               }
+                   
+                           } else if (SortMode == 4){
+                   
+                               vCardDataString = Person.Get(wxT("FN"));
+                   
+                           }
+       
+                           if (AscendingMode == TRUE){
+                               vCardNamesAsc.insert(std::make_pair(vCardDataString, vCardFilenameFull));
+                           } else {
+                               vCardNamesDsc.insert(std::make_pair(vCardDataString, vCardFilenameFull));
+                           }
+               
+                       } else {
+       
+                       }
+       
+               }
+       
+               vCardFilename.Clear();
+               vCardFilenameFull.Clear();
+               vCardDataString.Clear();
+               ProcFiles = vcardaccdir.GetNext(&vCardFilename);
+           }
+    
+    } else {
+    
+           bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES);
+           while(ProcFiles){
+    
+               if (vCardFilename.Right(4) == wxT(".vcf") || 
+                   vCardFilename.Right(4) == wxT(".VCF") || 
+                   vCardFilename.Right(5) == wxT(".vcard") || 
+                   vCardFilename.Right(5) == wxT(".VCARD")){
+       
+                       vCard Person;
+               
+                       vCardFilenameFull.Append(AccountDirFinal);
+                       vCardFilenameFull.Append(wxT("/"));
+                       vCardFilenameFull.Append(vCardFilename);
+               
+                       Person.LoadFile(vCardFilenameFull);
+               
+                       if (Person.MeetBaseSpecification()){
+       
+                           if (SortMode == 1){
+
+                               // Split the name into sections.
+                       
+                               vCardDataString = Person.Get(wxT("N"));
+
+                               vCardName NameData = Person.GetName();
+                   
+                               vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname;
+                   
+                           } else if (SortMode == 2){
+                   
+                               // Split the name into sections.
+                   
+                               vCardName NameData = Person.GetName();    
+                   
+                               vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename;
+                   
+                           } else if (SortMode == 3){
+                   
+                               // Check and make sure that the top most nickname is used.
+                   
+                               vCardDataString = Person.Get(wxT("NICKNAME"));
+                   
+                               if (vCardDataString.IsEmpty()){
+                       
+                                       vCardDataString = wxT("(no nickname)");
+                       
+                               }
+                   
+                           } else if (SortMode == 4){
+                   
+                               vCardDataString = Person.Get(wxT("FN"));
+                   
+                           }
+       
+                           if (AscendingMode == TRUE){
+                               vCardNamesAsc.insert(std::make_pair(vCardDataString, vCardFilenameFull));
+                           } else {
+                               vCardNamesDsc.insert(std::make_pair(vCardDataString, vCardFilenameFull));
+                           }
+               
+                       } else {
+                       
+                       }
+       
+               }
+       
+               vCardFilename.Clear();
+               vCardFilenameFull.Clear();
+               vCardDataString.Clear();
+               ProcFiles = vcardaccdir.GetNext(&vCardFilename);
+           }
+    
+    }
+    
+    // Sort the data.
+
+    // Insert the data into the control.
+
+       if (AscendingMode == TRUE){
+               for (std::map<wxString, wxString>::iterator iter = vCardNamesAsc.begin();
+                       iter != vCardNamesAsc.end(); ++iter){
+
+                       wxListItem ContactInfo;
+
+                       ContactInfo.SetId(0);
+                       ContactInfo.SetText(_("Mooo"));
+                       ContactInfo.SetData(ContactSeekPoint);
+                       ContactIndex = lstContacts->InsertItem(ContactInfo);
+
+                       lstContacts->SetItem(ContactIndex, 0, iter->first);
+                       ContactsFileIndex.Insert(iter->second, ContactSeekPoint);
+                       ContactSeekPoint++;
+
+               }
+
+       } else {
+
+               for (std::map<wxString, wxString>::iterator iter = vCardNamesDsc.begin();
+                       iter != vCardNamesDsc.end(); ++iter){
+
+                       wxListItem ContactInfo;
+
+                       ContactInfo.SetId(0);
+                       ContactInfo.SetText(_("Mooo"));
+                       ContactInfo.SetData(ContactSeekPoint);
+                       ContactIndex = lstContacts->InsertItem(ContactInfo);
+
+                       lstContacts->SetItem(ContactIndex, 0, iter->first);
+                       ContactsFileIndex.Insert(iter->second, ContactSeekPoint);
+                       ContactSeekPoint++;
+
+               }
+
+       }
+
+}
+
+void frmMain::ShowContactInfo( wxListEvent& event )
+{
+
+    long intSelected = -1;
+    int intSelectedData = 0;
+    long ContactSeekNum = -1;
+    
+//    intSelected = lstContacts->GetSelection();
+    
+    // Check if several contacts have been selected.
+    
+    int ContactTotal = 0;
+    
+       for (;;){
+
+               intSelected = lstContacts->GetNextItem(intSelected,
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+
+               if (intSelected == -1){
+
+                       break;
+
+               }
+
+               ContactTotal++;
+
+       }
+    
+    if (ContactTotal == 0){
+               htmContactData->SetPage(wxT(""));
+               return;
+    }
+    
+    if (ContactTotal > 1){
+    
+               htmContactData->SetPage(wxString::Format(wxT("%i contacts selected."), ContactTotal));
+               ActiveFilename.Clear();
+               return;
+    
+    }
+    
+    intSelected = lstContacts->GetNextItem(intSelected, 
+       wxLIST_NEXT_ALL,
+       wxLIST_STATE_SELECTED);
+       
+    ContactSeekNum = lstContacts->GetItemData(intSelected);
+    
+    wxFFile ContactFile;
+    wxString wxSContactString;
+    wxString ContactLine;
+    vCard Person;
+    
+    int ContactLineLen;
+    bool ExtraLineSeek = FALSE;
+    int QuoteBreakPoint;
+    
+    bool PropertyFind = FALSE;
+    bool QuoteMode = FALSE;
+    
+    wxString wxSPropertyNextLine;
+    wxString wxSProperty;
+    wxString wxSPropertySeg1;
+    wxString wxSPropertySeg2;
+       
+    // Check if we are using wxWidgets version 2.8 or less and
+    // execute the required command accordingly.
+       
+#if wxABI_VERSION < 20900
+    ContactFile.Open(ContactsFileIndex[ContactSeekNum].c_str(), wxT("r"));
+#else
+    ContactFile.Open(ContactsFileIndex[ContactSeekNum], wxT("r"));
+#endif 
+       
+    if (ContactFile.IsOpened() == FALSE){
+       
+               return;
+       
+    }
+       
+    ContactFile.ReadAll(&wxSContactString, wxConvAuto());
+       
+    // Split the lines.
+       
+    std::map<int, wxString> ContactFileLines;
+    std::map<int, wxString>::iterator striter;
+       
+    wxStringTokenizer wSTContactFileLines(wxSContactString, wxT("\r\n"));
+
+    int ContactLineSeek = 0;
+
+    while (wSTContactFileLines.HasMoreTokens() == TRUE){
+
+               ContactLine = wSTContactFileLines.GetNextToken();
+               ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine));
+               ContactLineSeek++;              
+       
+    }
+    
+    if (ContactSeekNum < 0){
+               return;
+    }
+    
+       for (std::map<int, wxString>::iterator iter = ContactFileLines.begin();
+               iter != ContactFileLines.end(); ++iter){
+
+               // Find the colon which splits the start bit from the data part.
+
+               ContactLine = iter->second;
+
+               while (ExtraLineSeek == TRUE){
+
+                       // Check if there is extra data on the next line 
+                       // (indicated by space or tab at the start) and add data.
+
+                       iter++;
+
+                       if (iter == ContactFileLines.end()){
+
+                               iter--;
+                               break;
+
+                       }
+
+                       wxSPropertyNextLine = iter->second;
+
+
+                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+
+                               wxSPropertyNextLine.Remove(0, 1);
+                               //wxSPropertyNextLine.Trim(FALSE);
+                               //ContactLine.Trim();
+                               ContactLine.Append(wxSPropertyNextLine);
+
+                       } else {
+
+                               iter--;
+                               ExtraLineSeek = FALSE;
+
+                       }
+
+               }
+
+               ContactLineLen = ContactLine.Len();
+
+               // Make sure we are not in quotation mode.
+               // Make sure colon does not have \ or \\ before it.
+
+               for (int i = 0; i <= ContactLineLen; i++){
+
+                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+
+                               PropertyFind = FALSE;
+
+                       } else if (PropertyFind == TRUE){
+
+                               wxSProperty.Append(ContactLine.Mid(i, 1));
+
+                       }
+
+                       if (ContactLine.Mid(i, 1) == wxT("\"")){
+
+                               if (QuoteMode == TRUE){
+
+                                       QuoteMode = FALSE;
+
+                               } else {
+
+                                       QuoteMode = TRUE;
+
+                               }
+
+                       }
+
+                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+
+                               QuoteBreakPoint = i;
+                               break;
+
+                       }
+
+               }
+
+               // Split that line at the point into two variables (ignore the colon).
+
+               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
+               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
+
+               // Insert both into the vCard data file.
+
+               Person.AddRaw(wxSPropertySeg1, wxSPropertySeg2);
+
+               QuoteMode = FALSE;
+               PropertyFind = TRUE;
+               ExtraLineSeek = TRUE;
+               ContactLineLen = 0;
+               QuoteBreakPoint = 0;
+               ContactLine.Clear();
+               wxSProperty.Clear();
+
+       }
+    
+    OldSessionID = SessionID;
+    SessionID = wxString::Format(wxT("%i"), rand() % 32768);
+    LoadContactData(&Person, htmContactData, SessionID, OldSessionID, &MemoryFileList);
+    ActiveFilename = ContactsFileIndex[ContactSeekNum];
+    
+}
+
+void frmMain::ShowContactEditorNew( wxCommandEvent& event )
+{
+
+    // Check if there is an account selected and if not
+    // return immediately.
+    
+    if (ActiveAccount.IsEmpty()){
+    
+       return;
+    
+    }
+
+    // Add Pointer to SetupPointers for the ETagDB.
+
+    wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png));
+    wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG);
+    wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1);    
+    wxIcon contacticon;
+    contacticon.CopyFromBitmap(contacticonbmp); 
+
+    frmContactEditor *ContactEditor = new frmContactEditor( this );
+    
+    WindowMenuItemID++;
+
+    ContactEditor->SetUID(WindowMenuItemID);
+
+    WindowData *WData = new WindowData;
+
+    WData->DataType = 1;
+    WData->WindowPointer = (void*)ContactEditor;
+    WData->WindowID = WindowMenuItemID;
+
+    wxCommandEvent addevent(WINDOW_ADD);
+    addevent.SetClientData(WData);
+    wxPostEvent(this, addevent);
+    
+    frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+    ContactEditor->SetupHeaders();
+    ContactEditor->SetupContact(ActiveAccount);
+    ContactEditor->SetIcon(contacticon);
+    ContactEditor->SetupPointers(frameActMgr, &ETagProcTimer, this);
+    ContactEditor->Show(true);
+    
+}
+
+void frmMain::ShowContactEditorEdit( wxCommandEvent& event )
+{
+
+    // Check if there is an account selected and if not
+    // return immediately.
+    
+    int DataCheck = event.GetInt();
+        
+    if (ActiveAccount.IsEmpty() && DataCheck == 0){
+    
+       return;
+    
+    }
+    
+    wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png));
+    wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG);
+    wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1);
+    wxIcon contacticon;
+    contacticon.CopyFromBitmap(contacticonbmp); 
+
+    // Check if a contact has been selected.
+    
+    long intSelected = -1;
+    int intSelectedData = 0;
+    long intContactSeekNum = -1;
+    
+//    intSelected = lstContacts->GetSelection();
+    
+    intSelected = lstContacts->GetNextItem(intSelected, 
+       wxLIST_NEXT_ALL,
+       wxLIST_STATE_SELECTED);
+       
+    if (intSelected == -1){
+       return;
+    }
+    
+    intContactSeekNum = lstContacts->GetItemData(intSelected);
+
+    // Get the filename of the selected contact.
+
+    frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+    frmContactEditor *ContactEditor = new frmContactEditor( this );
+    
+    WindowMenuItemID++;
+    
+    ContactEditor->SetUID(WindowMenuItemID);
+
+    WindowData *WData = new WindowData;
+
+    WData->DataType = 1;
+    WData->WindowPointer = (void*)ContactEditor;
+    WData->WindowID = WindowMenuItemID;
+
+    wxCommandEvent addevent(WINDOW_ADD);
+    addevent.SetClientData(WData);
+    wxPostEvent(this, addevent);
+    
+    ContactEditor->SetupPointers(frameActMgr, &ETagProcTimer, this);
+    ContactEditor->SetupHeaders();
+    
+    // Check if pointer is NULL (not from the search forms) or not.
+    
+    if (DataCheck == 0){
+      
+       ContactEditor->LoadContact(ContactsFileIndex[intContactSeekNum]);
+       ContactEditor->SetupContact(ActiveAccount);
+    
+    } else {
+        
+       UCNotif *uc = (UCNotif*)event.GetClientData();
+       
+       if (!uc){
+
+               ContactEditor->SetupContact(ActiveAccount);
+               ContactEditor->LoadContact(ContactsFileIndex[intContactSeekNum]);
+                       
+       } else {
+    
+               ContactEditor->SetupContact(uc->ContactAccount);
+               ContactEditor->LoadContact(uc->ContactFilename);
+               
+               delete uc;
+               uc = NULL;
+
+    
+       }
+    
+    }
+        
+    ContactEditor->SetIcon(contacticon);
+    ContactEditor->Show(true);
+
+}
+
+void frmMain::RefreshAddressBook( wxCommandEvent& event ){
+
+       // TODO: Check Account Type.
+
+       if (!ActiveAccount.IsEmpty()){
+
+               frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+               frameActMgr->AddTask(3, wxT(""), ActiveAccount,
+                       wxT(""), wxT(""), wxT(""), wxT(""));
+
+       }
+
+}
+
+void frmMain::OpenContactInfo( wxListEvent& event )
+{
+
+    wxStringTokenizer vcardfileline;
+    std::string l;
+    wxString lwxs;
+    wxString setname, setvalue;
+    vCard Person;
+    wxString nextchar;
+    
+    long intSelected = -1;
+    int intSelectedData = 0;
+    long intContactSeekNum = -1;
+    
+    intSelected = lstContacts->GetNextItem(intSelected, 
+       wxLIST_NEXT_ALL,
+       wxLIST_STATE_SELECTED);
+       
+    intContactSeekNum = lstContacts->GetItemData(intSelected);
+    
+    if (intContactSeekNum == -1){
+       return;
+    }
+    
+    Person.LoadFile(ContactsFileIndex[intContactSeekNum]);
+
+    wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png));
+    wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG);
+    wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1);    
+    wxIcon contacticon;
+    contacticon.CopyFromBitmap(contacticonbmp);
+
+    frmContact *Contact = new frmContact( this );
+    
+    // Add to window list.
+
+    WindowMenuItemID++;
+
+    Contact->SetUID(WindowMenuItemID);
+
+    WindowData *WData = new WindowData;
+
+    WData->DataType = 0;
+    WData->WindowPointer = (void*)Contact;
+    WData->WindowID = WindowMenuItemID;
+
+    wxCommandEvent addevent(WINDOW_ADD);
+    addevent.SetClientData(WData);
+    wxPostEvent(this, addevent);
+    
+    Contact->SetupPointers(&MemoryFileList);
+    Contact->SetupContactData(&Person);
+    
+    Contact->SetIcon(contacticon);
+    Contact->Show(true);
+
+}
+
+void frmMain::OpenContactInfo( wxCommandEvent& event )
+{
+    
+    UCNotif *uc = (UCNotif*)event.GetClientData();
+    
+    wxStringTokenizer vcardfileline;
+    std::string l;
+    wxString lwxs;
+    wxString setname, setvalue;
+    vCard Person;
+    wxString nextchar;
+    //std::fstream vcardfile;    
+
+    long intSelected = -1;
+    int intSelectedData = 0;
+    long intContactSeekNum = -1;
+    
+    Person.LoadFile(uc->ContactFilename);
+
+    wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png));
+    wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG);
+    wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1);    
+    wxIcon contacticon;
+    contacticon.CopyFromBitmap(contacticonbmp);
+
+    frmContact *Contact = new frmContact( this );
+    
+    // Add to window list.
+
+    WindowMenuItemID++;
+
+    Contact->SetUID(WindowMenuItemID);
+
+    WindowData *WData = new WindowData;
+
+    WData->DataType = 0;
+    WData->WindowPointer = (void*)Contact;
+    WData->WindowID = WindowMenuItemID;
+
+    wxCommandEvent addevent(WINDOW_ADD);
+    addevent.SetClientData(WData);
+    wxPostEvent(this, addevent);
+    
+    Contact->SetupPointers(&MemoryFileList);
+    Contact->SetupContactData(&Person);
+    
+    Contact->SetIcon(contacticon);
+    Contact->Show(true);
+    
+}
+
+
+void frmMain::LoadPreferences( wxActivateEvent& event)
+{
+    this->LoadPreferences();
+}
+
+void frmMain::LoadPreferences(){
+    
+    // Load the preferences.
+    
+    wxString preffilename = GetUserPrefDir();
+    
+    XABPreferences preferences(preffilename);
+
+    // Setup the main window position (if needed).
+    
+    bool SaveWindowPos = preferences.GetBoolData(wxT("SaveWindowPosition"));
+    bool HideLocalABs = preferences.GetBoolData(wxT("HideLocalAddressBooks"));
+    
+    if (SaveWindowPos == TRUE){
+        
+               this->SetSize(preferences.GetMainWindowData());
+    
+    }
+    
+    treAccounts->DeleteAllItems();
+    
+    wxTreeItemId RootNode = treAccounts->AddRoot(wxT("Root Item"));
+
+    // Stop all account timers and remove the accounts.
+       
+       for (std::map<wxString, wxAccountSyncTimer*>::iterator iter = AccountSyncTimers.begin();
+               iter != AccountSyncTimers.end(); iter++){
+
+               wxAccountSyncTimer *AccTmrPtr = iter->second;
+               AccTmrPtr->Stop();
+
+               delete AccTmrPtr;
+               AccTmrPtr = NULL;
+
+       }
+
+       AccountSyncTimers.clear();
+
+    /*    
+    for (int i = (preferences.accounts.GetCount() - 1); i > 0; --i){
+       treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i));
+    }
+    */
+
+    wxString AccDir;
+    wxString AccDirFull;
+    wxString AccDirFullSfx;
+    wxString AccName;
+    wxString AccDirFinal;
+    AccountAccDirList.clear();
+    AccountGroupList.clear();
+    AccountGroupFilename.clear();
+    AccountGroupTreeId.clear();
+    wxTreeItemId AccountTreeId;
+    wxTreeItemId GroupTreeId;
+    int intGroupID = 0;
+
+    for (int i = 0; i < preferences.accounts.GetCount(); i++){
+    
+       if ((preferences.accounts.GetAccountType(i) == wxT("Local") || 
+               preferences.accounts.GetAccountType(i) == wxT("local")) && HideLocalABs == TRUE){
+               
+               continue;
+               
+       }
+    
+       AccDir = preferences.accounts.GetAccountDirectory(i);
+       AccDirFull = preferences.accounts.GetAccountDirectory(i);
+       AccDirFull.Trim();
+       AccDirFull.Append(wxT("."));
+       AccDirFullSfx.Append(preferences.accounts.GetAccountType(i));
+       AccDirFullSfx.LowerCase();
+       AccDirFullSfx.Trim();
+       AccDirFull.Append(AccDirFullSfx);
+       AccName = preferences.accounts.GetAccountName(i);
+       AccName.Trim();
+       AccountAccDirList.insert(std::make_pair(i, AccDirFull));
+       
+       if (preferences.accounts.GetAccountType(i) == wxT("CardDAV") ||
+       preferences.accounts.GetAccountType(i) == wxT("carddav")){
+       
+               // Add a new timer using the existing account details.
+       
+               wxAccountSyncTimer *ActTmrPtr = new wxAccountSyncTimer;
+       
+               ActTmrPtr->SetupData(AccDirFull, AccName);
+               ActTmrPtr->SetupPointers(this, ActMgrPtr, ETagProcTimer.GetPointer(AccDirFull));
+               ActTmrPtr->Start(preferences.accounts.GetAccountRefresh(i) * 1000);
+               ActTmrPtr->SetOwner(this);
+               ActTmrPtr->Notify();
+       
+               // Add the timer to the list of timers.
+       
+               AccountSyncTimers.insert(std::make_pair(AccDirFull, ActTmrPtr));
+       
+               AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountNetID, -1);
+       
+       } else {
+                       
+               AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountID, -1);
+       
+       }
+       
+       // Go through the account directory and find contact files with
+       // 'KIND:group' set and add them to the list of groups for the account.
+       
+       AccDirFinal = GetAccountDir(AccDirFull, FALSE);
+       
+       wxDir vcardaccdir(AccDirFinal);
+    
+       wxString vCardFilename;
+       wxString vCardDataString;
+       wxString vCardFilenameFull;
+       //bool ProcFiles = FALSE;
+       
+       bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES);
+       while(ProcFiles){
+
+       if (vCardFilename.Right(4) == wxT(".vcf") || 
+           vCardFilename.Right(4) == wxT(".VCF") || 
+           vCardFilename.Right(5) == wxT(".vcard") || 
+           vCardFilename.Right(5) == wxT(".VCARD")){
+
+               vCard Person;
+       
+               vCardFilenameFull.Append(AccDirFinal);
+               vCardFilenameFull.Append(wxT("/"));
+               vCardFilenameFull.Append(vCardFilename);
+       
+               Person.LoadFile(vCardFilenameFull);
+       
+               if (Person.MeetBaseSpecification()){
+
+                   vCardDataString = Person.Get(wxT("KIND"));
+
+                   if (vCardDataString == wxT("group")){
+                   
+                       // The vCard kind is a group. Add to the account's group list.
+                       
+                               GroupTreeId = treAccounts->AppendItem(AccountTreeId, Person.Get(wxT("FN")), AccountGrpID, -1);
+                               treAccounts->SetItemHasChildren(AccountTreeId, TRUE);
+                               AccountGroupList.insert(std::make_pair(intGroupID, i));
+                               AccountGroupFilename.insert(std::make_pair(intGroupID, vCardFilenameFull));
+                               AccountGroupTreeId.insert(std::make_pair(GroupTreeId, intGroupID));
+                   
+                   }
+
+                   /*if (SortMode == 1){
+
+                       // Split the name into sections.
+
+                       vCardName NameData = Person.GetName();
+           
+                       vCardDataString = NameData.Forename + wxT(" ") + NameData.Surname;
+           
+                   } else if (SortMode == 2){
+           
+                       // Split the name into sections.
+           
+                       vCardName NameData = Person.GetName();    
+           
+                       vCardDataString = NameData.Surname + wxT(", ") + NameData.Forename;
+           
+                   } else if (SortMode == 3){
+           
+                       // Check and make sure that the top most nickname is used.
+           
+                       vCardDataString = Person.Get(wxT("NICKNAME"));
+           
+                       if (vCardDataString.IsEmpty()){
+               
+                               vCardDataString = wxT("(no nickname)");
+               
+                       }
+           
+                   } else if (SortMode == 4){
+           
+                       vCardDataString = Person.Get(wxT("FN"));
+           
+                   }
+
+                   if (AscendingMode == TRUE){
+                       vCardNamesAsc.insert(std::make_pair(vCardDataString, vCardFilenameFull));
+                   } else {
+                       vCardNamesDsc.insert(std::make_pair(vCardDataString, vCardFilenameFull));
+                   }*/
+                   
+                   intGroupID++;
+       
+               } else {
+       
+               }
+
+       }
+
+           vCardFilename.Clear();
+           vCardFilenameFull.Clear();
+           vCardDataString.Clear();
+           ProcFiles = vcardaccdir.GetNext(&vCardFilename);
+           
+       }
+       
+       // Clearup for next account.
+       
+       AccDir.clear();
+       AccDirFull.clear();
+       AccDirFullSfx.clear();
+       AccDirFinal.clear();
+       AccName.clear();
+       
+    }
+    
+    // Load the account settings as they are needed for connecting
+    // to the servers.
+    
+    prefaccounts = preferences.accounts;
+
+}
+
+void frmMain::ConflictResolution(wxCommandEvent& event){
+
+       frmConflictResolution *frameCR = new frmConflictResolution ( this );
+       vCardConflictObj *vCardConfObj = (vCardConflictObj*)event.GetClientData();
+       vCard *ClientDataPtr = vCardConfObj->vCardLocalData;
+       vCard *ServerDataPtr = vCardConfObj->vCardServerData;
+       //vCard *ServerDataPtr = vCardConfObj->vCardServerData;
+       //wxString Moo = ClientDataPtr->WriteString();
+       //vCard *ServerDataPtr = vCardConfObj->vCardServerData;
+       frameCR->LoadData(ClientDataPtr, ServerDataPtr, &MemoryFileList);
+       //frameCR->LoadData(vCardConfObj->vCardLocalData, vCardConfObj->vCardServerData, &MemoryFileList);
+       frameCR->ShowModal();
+       
+       int FinalConflictResult = frameCR->GetResult();
+       
+       wxCommandEvent event2(ACTMGR_RESUMEPROC);
+       event2.SetClientData(vCardConfObj->QRNotifData);
+       event2.SetInt(FinalConflictResult);
+       
+       delete frameCR;
+       frameCR = NULL;
+
+       frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);  
+       wxPostEvent(frameActMgr, event2);
+       
+}
+
+void frmMain::UpdateContactList(wxCommandEvent& event){
+
+       UCNotif *ucd = (UCNotif*)event.GetClientData();
+
+       // Check if the active account is being displayed in the
+       // main window. If not, skip and delete the data.
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
+       
+       if (ActiveAccount == ucd->ContactAccount){
+       
+               // Look at the list of contacts and if it matches the
+               // filename then update the name.
+               
+               for (;;){
+
+                       longSelected = lstContacts->GetNextItem(longSelected, 
+                               wxLIST_NEXT_ALL,
+                               wxLIST_STATE_DONTCARE);
+                       
+                       if (longSelected == -1){
+                       
+                               break;
+                       
+                       }
+                               
+                       intSelectedData = lstContacts->GetItemData(longSelected);
+                       
+                       if (ucd->ContactFilename == ContactsFileIndex[intSelectedData]){
+                       
+                               // Work out which sorting mode we are in.
+
+                               if (SortMode == 1){
+
+                                       // First Name, Last Name.
+
+                                       lstContacts->SetItem(longSelected, 0, ucd->ContactNameArray.Forename + wxT(" ") + ucd->ContactNameArray.Surname);
+
+                               } else if (SortMode == 2){
+
+                                       // Last Name, First Name.
+
+                                       lstContacts->SetItem(longSelected, 0, ucd->ContactNameArray.Surname + wxT(", ") + ucd->ContactNameArray.Forename);
+
+                               } else if (SortMode == 3){
+
+                                       // Nickname.
+
+                                       lstContacts->SetItem(longSelected, 0, ucd->ContactNickname);
+
+                               } else if (SortMode == 4){
+                                       
+                                       // Display As.
+
+                                       lstContacts->SetItem(longSelected, 0, ucd->ContactName);
+
+                               }
+
+                       
+                       }
+       
+                       // If the filename is the one loaded into the 
+                       // browser control, then update this too.
+               
+                       if (ActiveFilename == ContactsFileIndex[intSelectedData]){
+                       
+                               wxListEvent nullevent;
+                               ShowContactInfo(nullevent);
+                       
+                       }
+               
+               }
+       
+       }
+       
+       for (std::map<int, void*>::iterator WindowIter = WindowListPointers.begin();
+               WindowIter != WindowListPointers.end(); WindowIter++){
+                               
+               if (WindowListType[WindowIter->first] != 0){
+               
+                       continue;
+               
+               }
+               
+               frmContact *frmContactPtr = static_cast<frmContact*>(WindowIter->second);
+               
+               if (frmContactPtr->GetFilename() == ucd->ContactFilename){
+               
+                       vCard UpdatedPerson;
+                       UpdatedPerson.LoadFile(ucd->ContactFilename);
+                       frmContactPtr->SetupContactData(&UpdatedPerson);
+               
+               }
+               
+       }
+
+       // Send message to search window controller subroutine and 
+       // pass that notification onto the search windows.
+       
+       // Setup the new pointer to use the existing UCNotif without
+       // deleting it.
+       
+       UCNotif *ucd2 = ucd;
+       
+       wxCommandEvent sup(SE_UPDATECONTACTNOTIF);
+       sup.SetClientData(ucd2);
+       wxPostEvent(this, sup);
+
+       // Clear up the unused pointer.
+       
+       ucd = NULL;
+
+}
+
+void frmMain::UpdateAccountList(wxCommandEvent& event){
+
+}
+
+void frmMain::SetupPointers(void *ActMgrPtrInc){
+
+       ActMgrPtr = ActMgrPtrInc;
+
+}
+
+void frmMain::SetupForm(){
+
+       frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+       frameActMgr->SetupPointers(&ETagProcTimer, this);
+       
+       // Setup the contact information icons for later.
+       
+       wxFileSystem::AddHandler(new wxMemoryFSHandler);
+       wxImage ciicon_png;
+       //wxBitmap ciicon;
+       
+       wxMemoryInputStream ciptostream(icons_cipto_png, sizeof(icons_cipto_png));
+       ciicon_png.LoadFile(ciptostream, wxBITMAP_TYPE_PNG);
+       wxMemoryFSHandler::AddFile(wxT("cipto.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+       
+       wxMemoryInputStream cilogstream(icons_cilog_png, sizeof(icons_cilog_png));
+       ciicon_png.LoadFile(cilogstream, wxBITMAP_TYPE_PNG);
+       wxMemoryFSHandler::AddFile(wxT("cilog.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+       
+       wxMemoryInputStream cisndstream(icons_cisnd_png, sizeof(icons_cisnd_png));
+       ciicon_png.LoadFile(cisndstream, wxBITMAP_TYPE_PNG);
+       wxMemoryFSHandler::AddFile(wxT("cisnd.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+       
+       wxMemoryInputStream cikeystream(icons_cikey_png, sizeof(icons_cikey_png));
+       ciicon_png.LoadFile(cikeystream, wxBITMAP_TYPE_PNG);
+       wxMemoryFSHandler::AddFile(wxT("cikey.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+       
+       wxMemoryInputStream civenstream(icons_civen_png, sizeof(icons_civen_png));
+       ciicon_png.LoadFile(civenstream, wxBITMAP_TYPE_PNG);
+       wxMemoryFSHandler::AddFile(wxT("civen.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+       
+       wxMemoryInputStream ciextstream(icons_ciext_png, sizeof(icons_ciext_png));
+       ciicon_png.LoadFile(ciextstream, wxBITMAP_TYPE_PNG);
+       wxMemoryFSHandler::AddFile(wxT("ciext.png"), ciicon_png, wxBITMAP_TYPE_PNG);
+
+       LoadPreferences();
+
+}
+
+void frmMain::UpdateSearchContactLists(wxCommandEvent& event){
+
+       // Go through each of the search windows and 
+       // send the required notification to update the
+       // contact information.
+       
+       // Get the event notification data.
+       
+       UCNotif *ucd = (UCNotif*)event.GetClientData();
+       
+       // Process each search window giving the new details.
+               
+       for (std::map<void*,wxString>::iterator switer = SearchWindowList.begin(); 
+       switer != SearchWindowList.end(); switer++){
+       
+               // Duplicate the event notification data.
+               
+               UCNotif *ucd2 = new UCNotif;
+               
+               ucd2->ContactAccount = ucd->ContactAccount;
+               ucd2->ContactFilename = ucd->ContactFilename;
+               ucd2->ContactName = ucd->ContactName;
+               ucd2->ContactNickname = ucd->ContactNickname;
+               ucd2->ContactNameArray = ucd->ContactNameArray;
+               
+               // Pass the data to the search window for processing.
+       
+               frmSearch *frameSCH = static_cast<frmSearch*>(switer->first);
+               wxCommandEvent schupdate(SE_UPDATERESULT);
+               schupdate.SetClientData(ucd2);
+               wxPostEvent(frameSCH, schupdate);
+               
+               // Clear up the pointer prior to variable deletion.
+               
+               frameSCH = NULL;
+       
+       }
+       
+       delete ucd;
+       ucd = NULL;
+
+}
+
+void frmMain::OpenFindContactsWindow(wxCommandEvent& event){
+
+       WindowMenuItemID++;
+
+       frmSearch *frameSCH = new frmSearch ( this );
+       frameSCH->SetUID(WindowMenuItemID);
+       frameSCH->Show(true);
+       
+       WindowData *WData = new WindowData;
+
+       WData->DataType = 2;
+       WData->WindowPointer = (void*)frameSCH;
+       WData->WindowID = WindowMenuItemID;
+
+       wxCommandEvent addevent(WINDOW_ADD);
+       addevent.SetClientData(WData);
+       wxPostEvent(this, addevent);
+       
+       // Add pointer to the list of open search windows.
+       
+       SearchWindowList.insert(std::make_pair(frameSCH, wxT("Search")));
+       
+       WData = NULL;
+
+}
+
+void frmMain::RemoveContactsWindowPointer(wxCommandEvent& event){
+
+       //frmSearch *frameSCH = static_cast<frmSearch*>(ActMgrPtr);
+       void *frameSCH = (void*)event.GetClientData();
+
+       SearchWindowList.erase(frameSCH);
+       
+       frameSCH = NULL;
+
+}
+
+void frmMain::RemoveContactEditorWindowPointer(wxCommandEvent& event){
+
+       void *frameSCH = (void*)event.GetClientData();
+
+       SearchWindowList.erase(frameSCH);
+       
+       frameSCH = NULL;
+
+}
+
+void frmMain::UpdateWindowList(wxCommandEvent& event){
+
+       // Update the Window List.
+       
+       // Delete the existing items in the window menu.
+
+       // Get the list of contacts.
+       
+       // Insert a separator.
+       
+       // Get the list of search windows.
+
+}
+
+void frmMain::RevealContact(wxCommandEvent& event){
+
+       UCNotif *uc = (UCNotif*)event.GetClientData();
+       
+       // Switch the account to the one passed.
+
+       wxTreeItemIdValue cookie;
+       wxTreeItemId next = treAccounts->GetRootItem();
+       wxTreeItemId nextChild;
+       
+       for (int i = 0; i < prefaccounts.GetCount(); i++){
+      
+               if (!nextChild){
+                   nextChild = treAccounts->GetFirstChild(next, cookie);
+               } else {
+                   nextChild = treAccounts->GetNextSibling(nextChild);
+               }
+       
+               //AccountName = treAccounts->GetItemText(nextChild);            
+       
+               if (uc->ContactAccount == AccountAccDirList[i]){
+
+                       //AccControl->();               
+                       treAccounts->SelectItem(nextChild, TRUE);
+                       AccCtrl->SetText(treAccounts->GetItemText(nextChild));
+               
+               }
+       
+       }
+       
+       // Switch the contact to the one passed.
+
+       long longSelected = -1;
+       int intSelectedData = 0;
+
+       for (;;){
+       
+               longSelected = lstContacts->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_DONTCARE);
+                       
+               if (longSelected == -1){
+                       
+                       break;
+                       
+               }
+                               
+               intSelectedData = lstContacts->GetItemData(longSelected);
+               
+               // Compare the filename with the one received.
+               // If they match then select it.
+       
+               if (ContactsFileIndex[intSelectedData] == uc->ContactFilename){
+               
+                       // Select.
+               
+                       lstContacts->SetItemState(longSelected, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
+                       lstContacts->EnsureVisible(longSelected);
+               
+                       break;
+               
+               }
+
+       }
+
+}
+
+void frmMain::DeleteContact(wxCommandEvent& event){
+
+       // Check if a contact is selected.
+
+       long intSelected = -1;
+       int intSelectedData = 0;
+       long intContactSeekNum = -1;
+       wxString wxSContactName;
+       
+       intSelected = lstContacts->GetNextItem(intSelected, 
+       wxLIST_NEXT_ALL,
+       wxLIST_STATE_SELECTED); 
+
+       if (intSelected == -1){
+               return;
+       }
+
+       frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+
+       // Get the item data of the contact.
+
+       intContactSeekNum = lstContacts->GetItemData(intSelected);
+
+       // Get the name of the contact.
+       
+       wxSContactName = lstContacts->GetItemText(intSelected);
+
+       // Display a message confirming if the contact should
+       // be deleted.
+       
+       int QuestionResponse;
+
+       QuestionResponse = wxMessageBox(_("Are you sure you want to delete this contact?"), _("Delete contact"), wxYES_NO, this);
+
+       if (QuestionResponse == wxNO){
+
+               // Exit the subroutine
+
+               return;
+
+       }
+       
+       // Delete the contact.
+
+       if (!wxRemoveFile(ContactsFileIndex[intContactSeekNum])){
+       
+               wxMessageBox(_("Unable to delete the contact."), _("Cannot delete contact"), wxOK, this);
+               return;
+       
+       }
+
+       // Remove the contact from the list.
+
+       lstContacts->DeleteItem(intSelected);
+       
+       // Update the search windows, removing the deleted
+       // contact.
+       
+       UCNotif *ucd = new UCNotif;
+               
+       ucd->ContactAccount = ActiveAccount;
+       ucd->ContactFilename = ContactsFileIndex[intContactSeekNum];
+       
+       for (std::map<void*,wxString>::iterator switer = SearchWindowList.begin(); 
+       switer != SearchWindowList.end(); switer++){
+       
+               // Duplicate the event notification data.
+       
+               UCNotif *ucd2 = new UCNotif;
+
+               ucd2->ContactAccount = ucd->ContactAccount;
+               ucd2->ContactFilename = ucd->ContactFilename;
+               
+               // Pass the data to the search window for processing.
+       
+               frmSearch *frameSCH = static_cast<frmSearch*>(switer->first);
+               wxCommandEvent schdelete(SE_DELETERESULT);
+               schdelete.SetClientData(ucd2);
+               wxPostEvent(frameSCH, schdelete);
+               
+               // Clear up the pointer prior to variable deletion.
+               
+               frameSCH = NULL;
+               ucd2 = NULL;
+       
+       }
+       
+       // Clear the wxHTMLWindow.
+       
+       wxString EmptyPage = wxT("");
+       
+       htmContactData->SetPage(EmptyPage);
+       
+       wxStringTokenizer wSTFilename(ContactsFileIndex[intContactSeekNum], wxT("/"));
+       
+       wxString wxSplitFilename;
+       wxString wxSDataURL;
+    
+       while(wSTFilename.HasMoreTokens()){
+    
+               wxSplitFilename = wSTFilename.GetNextToken();
+    
+       }
+
+       if (ActiveAccountType == wxT("CardDAV") || ActiveAccountType == wxT("carddav")){
+
+               // Update the ETagDB and mark it as deleted.
+
+               ETagDB *ETagDBPtr = ETagProcTimer.GetPointer(ActiveAccount);
+
+               ETagDBPtr->UpdateETag(wxSplitFilename, wxT("DELETED"));
+
+               // Get the Data URL.
+
+               wxTreeItemIdValue cookie;
+               wxTreeItemId next = treAccounts->GetRootItem();
+
+               wxTreeItemId selectedChild = treAccounts->GetSelection();
+               wxTreeItemId nextChild;
+
+               for (int i = 0; i < prefaccounts.GetCount(); i++){
+
+                       if (!nextChild){
+                               nextChild = treAccounts->GetFirstChild(next, cookie);
+                       }
+                       else {
+                               nextChild = treAccounts->GetNextSibling(nextChild);
+                       }
+
+                       if (nextChild == selectedChild){
+                               wxSDataURL = prefaccounts.GetAccountDirPrefix(i) + wxT("/") + wxSplitFilename;
+
+                       }
+
+               }
+
+               // Add task to the activity monitor to delete the contact.
+
+               frameActMgr->AddTask(2, wxSContactName, ActiveAccount, wxSDataURL, wxSplitFilename, ContactsFileIndex[intContactSeekNum], wxT(""));
+
+       }
+       
+       // Clear the variable. Don't delete as it will mess things up.
+       
+       ContactsFileIndex[intContactSeekNum] = wxT("");
+       
+       delete ucd;
+       ucd = NULL;
+
+}
+
+void frmMain::EmptyServerDialog(wxCommandEvent& event){
+
+       QRNotif *qrn = (QRNotif *)event.GetClientData();                
+
+       int QResponse = wxMessageBox(_("The list of contacts on the server is empty. Upload all locally stored contacts for this account now?"), _("No contacts on server"), wxYES_NO, this);
+
+       wxCommandEvent event2(ACTMGR_RESUMEPROC);
+       event2.SetInt(*qrn->QResponse);
+       event2.SetClientData(qrn->PausePtr);
+
+       frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+
+       wxPostEvent(frameActMgr, event2);
+
+}
+
+void frmMain::DeleteContactSync(wxString &Account, wxString &Filename){
+
+       // Remove the contact from the window after syncronising.
+
+       // Check which account is currently active in the window.
+       // If it is different from the one passed to this subroutine then
+       // exit from the subroutine.
+       
+       if (Account != ActiveAccount){
+               return;
+       }
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
+
+       for (;;){
+       
+               longSelected = lstContacts->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_DONTCARE);
+                       
+               if (longSelected == -1){
+                       
+                       break;
+                       
+               }
+                               
+               intSelectedData = lstContacts->GetItemData(longSelected);
+               
+               // Compare the filename with the one received.
+               // If they match then select it.
+       
+               if (ContactsFileIndex[intSelectedData] == Filename){
+               
+                       // Remove the contact from the window.
+               
+                       lstContacts->DeleteItem(intSelectedData);
+               
+                       // Check if contact is the selected contact in the HTML window and
+                       // if it is then clear the window.
+               
+                       if (ActiveFilename == Filename){
+                       
+                               wxString EmptyPage = wxT("");
+                               htmContactData->SetPage(EmptyPage);
+                       
+                       }
+               
+                       break;
+               
+               }
+
+       }       
+
+}
+
+
+
+void frmMain::SortFNLN( wxCommandEvent& event ) {
+
+       wxTreeEvent NullEvent;
+       SortMode = 1;
+       LoadContactList(NullEvent);
+
+}
+
+void frmMain::SortLNFN( wxCommandEvent& event ) {
+
+       wxTreeEvent NullEvent;
+       SortMode = 2;
+       LoadContactList(NullEvent);
+
+}
+
+void frmMain::SortNickname( wxCommandEvent& event ) {
+
+       wxTreeEvent NullEvent;
+       SortMode = 3;
+       LoadContactList(NullEvent);
+
+}
+
+void frmMain::SortDisplayAs( wxCommandEvent& event ) {
+
+       wxTreeEvent NullEvent;
+       SortMode = 4;
+       LoadContactList(NullEvent);
+
+}
+
+void frmMain::SortAscending( wxCommandEvent& event ) {
+
+       wxTreeEvent NullEvent;
+       AscendingMode = TRUE;
+       LoadContactList(NullEvent);
+
+}
+
+void frmMain::SortDescending( wxCommandEvent& event ) {
+
+       wxTreeEvent NullEvent;
+       AscendingMode = FALSE;
+       LoadContactList(NullEvent);
+
+} 
+
+void frmMain::ToggleStatusBar( wxCommandEvent& event ) {
+
+       if (stbBottom->IsShown() == TRUE){
+       
+               stbBottom->Hide();
+       
+       } else {
+       
+               stbBottom->Show();
+       
+       }
+
+       this->Layout();
+
+}
+
+void frmMain::ActivityIconStart( wxCommandEvent& event ){
+
+       // Display the activity icon.
+
+       imgActivityStatus->SetBitmap(*imgActIcon1);
+       ActivityIconStatus = 0;
+
+}
+
+void frmMain::ActivityIconShuffle( wxCommandEvent& event ){
+
+       switch (ActivityIconStatus){
+       
+               case 0:
+                       imgActivityStatus->SetBitmap(*imgActIcon1);
+                       ActivityIconStatus = 1;
+                       break;
+               case 1:
+                       imgActivityStatus->SetBitmap(*imgActIcon2);
+                       ActivityIconStatus = 2;
+                       break;
+               case 2:
+                       imgActivityStatus->SetBitmap(*imgActIcon3);
+                       ActivityIconStatus = 3;
+                       break;
+               case 3:
+                       imgActivityStatus->SetBitmap(*imgActIcon4);
+                       ActivityIconStatus = 0;
+                       break;
+               default:
+                       ActivityIconStatus = 0;
+       
+       }
+
+}
+
+void frmMain::ActivityIconStop( wxCommandEvent& event ){
+
+       // Display the sleep icon.
+
+       imgActivityStatus->SetBitmap(*imgActIconSleep);
+
+}
+
+void frmMain::UpdateSBIconPlacement( wxSizeEvent& event ){
+
+       if (imgConnStatus == 0 || imgSSLStatus == 0 || imgActivityStatus == 0){
+       
+               return;
+       
+       }
+
+       wxRect rectOnline;
+       wxRect rectSSL;
+       wxRect rectActivity;
+       stbBottom->GetFieldRect(1, rectOnline);
+       stbBottom->GetFieldRect(2, rectSSL);
+       stbBottom->GetFieldRect(3, rectActivity);
+
+       imgConnStatus->Move(rectOnline.GetX(),rectOnline.GetY());
+       imgSSLStatus->Move(rectSSL.GetX(),rectSSL.GetY());
+       imgActivityStatus->Move(rectActivity.GetX(),rectActivity.GetY());
+
+}
+
+XABViewMode frmMain::GetViewMode(){
+
+       XABViewMode xvm;
+       
+       xvm.SortMode = SortMode;
+       xvm.AscendingMode = AscendingMode;
+       
+       return xvm;
+       
+}
+
+void frmMain::WindowAdd( wxCommandEvent &event ){
+
+       WindowData *WData = (WindowData*)event.GetClientData();
+
+       size_t pos;
+       
+       if (WData->DataType == 0){
+       
+               // Contact Window
+
+               int intID = mnuContactWindows->GetId();
+
+               mnuWindow->FindChildItem(intID, &pos);
+               wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, wxT("Contact Window #") + wxString::Format(wxT("%i"), WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL);
+               mnuNewItem->SetId(WData->WindowID);
+               WindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem));
+               WindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer));
+               WindowListType.insert(std::make_pair(WData->WindowID, 0));
+               mnuWindow->Insert((pos + 1), mnuNewItem);
+               this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactWindow));
+       
+       } else if (WData->DataType == 1){
+       
+               // Contact Editor Window
+
+               int intID = mnuContactEditorWindows->GetId();
+
+               mnuWindow->FindChildItem(intID, &pos);
+               wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, wxT("Contact Editor Window #") + wxString::Format(wxT("%i"), WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL);
+               mnuNewItem->SetId(WData->WindowID);
+               WindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem));
+               WindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer));
+               WindowListType.insert(std::make_pair(WData->WindowID, 1));
+               mnuWindow->Insert((pos + 1), mnuNewItem);
+               this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactEditorWindow));
+       
+       } else if (WData->DataType == 2){
+               
+               // Search Window
+       
+               int intID = mnuSearchWindows->GetId();
+               
+               mnuWindow->FindChildItem(intID, &pos);
+               wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, wxT("Search Window #") + wxString::Format(wxT("%i"), WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL);
+               mnuNewItem->SetId(WData->WindowID);
+               WindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem));
+               WindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer));
+               WindowListType.insert(std::make_pair(WData->WindowID, 2));
+               mnuWindow->Insert((pos + 1), mnuNewItem);
+               this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowSearchWindow));
+       
+       }
+       
+       delete WData;
+       WData = NULL;
+
+}
+
+void frmMain::WindowEdit( wxCommandEvent &event ){
+
+       WindowData *WData = (WindowData*)event.GetClientData();
+
+       if (WData->DataType == 0){
+       
+               // Contact Window
+
+               int intID = mnuContactWindows->GetId();
+
+               // Get the window title and use that.
+
+               frmContact *frmContactPtr = static_cast<frmContact*>(WData->WindowPointer);
+
+               wxString WindowTitle = frmContactPtr->GetTitle();
+
+               std::map<int, wxMenuItem*>::iterator MenuIter = WindowListPointersMenu.find(WData->WindowID);
+               
+               MenuIter->second->SetItemLabel(WindowTitle);
+
+               //mnuWindow->FindChildItem(intID, &pos);
+               //wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, WindowTitle, WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL);
+               //mnuNewItem->SetId(WData->WindowID);
+               //ContactWindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem));
+               //ContactWindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer));
+               //mnuWindow->Insert((pos + 1), mnuNewItem);
+               //this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactWindow));
+       
+       } else if (WData->DataType == 1){
+       
+               // Contact Editor Window
+
+               int intID = mnuContactEditorWindows->GetId();
+
+               // Get the window title and use that.
+
+               frmContactEditor *frmCEPtr = static_cast<frmContactEditor*>(WData->WindowPointer);
+
+               wxString WindowTitle = frmCEPtr->GetTitle();
+
+               std::map<int, wxMenuItem*>::iterator MenuIter = WindowListPointersMenu.find(WData->WindowID);
+               
+               if (WindowTitle.IsEmpty()){
+
+                       MenuIter->second->SetItemLabel(_("Unnamed Contact"));
+
+               } else {
+
+                       MenuIter->second->SetItemLabel(WindowTitle);
+
+               }
+
+               //mnuWindow->FindChildItem(intID, &pos);
+               //wxMenuItem *mnuNewItem = new wxMenuItem(NULL, WData->WindowID, WindowTitle, WData->WindowID), wxEmptyString, wxITEM_NORMAL, NULL);
+               //mnuNewItem->SetId(WData->WindowID);
+               //ContactEditorWindowListPointersMenu.insert(std::make_pair(WData->WindowID, mnuNewItem));
+               //ContactEditorWindowListPointers.insert(std::make_pair(WData->WindowID, WData->WindowPointer));
+               //mnuWindow->Insert((pos + 1), mnuNewItem);
+               //this->Connect(mnuNewItem->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(frmMain::ShowContactEditorWindow));
+       
+       }
+
+       delete WData;
+       WData = NULL;
+       
+}
+
+void frmMain::WindowDelete( wxCommandEvent &event ){
+
+       WindowData *WData = (WindowData*)event.GetClientData();
+       
+       std::map<int, wxMenuItem*>::iterator MenuIter = WindowListPointersMenu.find(WData->WindowID);
+
+       mnuWindow->Remove(MenuIter->second);
+
+       delete MenuIter->second;
+       MenuIter->second = NULL;
+       
+       WindowListPointersMenu.erase(WData->WindowID);
+       WindowListPointers.erase(WData->WindowID);
+       WindowListType.erase(WData->WindowID);
+
+       delete WData;
+       WData = NULL;
+
+}
+
+void frmMain::ShowContactWindow( wxCommandEvent &event ){
+
+       std::map<int, void*>::iterator WindowIter = WindowListPointers.find(event.GetId());
+
+       frmContact *frmContactPtr = static_cast<frmContact*>(WindowIter->second);
+       
+       frmContactPtr->Show();
+       frmContactPtr->Raise();
+
+}
+
+void frmMain::ShowContactEditorWindow( wxCommandEvent &event ){
+
+       std::map<int, void*>::iterator WindowIter = WindowListPointers.find(event.GetId());
+
+       frmContactEditor *frmCEPtr = static_cast<frmContactEditor*>(WindowIter->second);
+       
+       frmCEPtr->Show();
+       frmCEPtr->Raise();
+
+}
+
+void frmMain::ShowSearchWindow( wxCommandEvent &event ){
+
+       // Look through the Search Window List Pointers, grab the
+       // window point and show the window.
+
+       std::map<int, void*>::iterator WindowIter = WindowListPointers.find(event.GetId());
+
+       frmSearch *frmSearchPtr = static_cast<frmSearch*>(WindowIter->second);
+       
+       frmSearchPtr->Show();
+       frmSearchPtr->Raise();
+
+}
+
+void frmMain::ToggleConnectionStatus( wxCommandEvent &event ){
+
+       frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+       wxCommandEvent toggconn(ACTMGR_TOGGLECONN);
+       wxPostEvent(frameActMgr, toggconn);
+
+}
+
+void frmMain::ShowSSLCertificates( wxCommandEvent &event ){
+
+       // Check the account type before continuing.
+       
+       wxString SeekAccount;
+       wxString AccTypeLower;
+       wxString AccType;
+       std::map<int, SSLCertCollection>::iterator SSLColIter;
+       
+       for (int i = 0; i < prefaccounts.GetCount(); i++){
+
+               SeekAccount.Append(prefaccounts.GetAccountDirectory(i));
+               AccType.Append(prefaccounts.GetAccountType(i));
+               AccTypeLower = AccType.MakeLower();
+               SeekAccount.Append(wxT("."));
+               SeekAccount.Append(AccTypeLower);
+                               
+               if (SeekAccount == ActiveAccount){
+               
+                       if (AccTypeLower == wxT("local")){
+                       
+                               return;
+                       
+                       }
+                       
+                       SSLColIter = AccountSSLData.find(i);
+
+                       SSLCertCollection SSLCertInfo = SSLColIter->second;
+                       
+                       frmSSLCertificate *frameSSLCert = new frmSSLCertificate ( this );
+                       frameSSLCert->StartCertFrom(0);
+                       frameSSLCert->SetupCerts(SSLCertInfo);
+                       frameSSLCert->ShowModal();
+               
+                       delete frameSSLCert;
+                       frameSSLCert = NULL;
+               
+               }
+               
+               SeekAccount.Clear();
+               AccTypeLower.Clear();
+               AccType.clear();
+               
+       }
+
+}
+
+void frmMain::ShowSSLInfo( wxCommandEvent &event ){
+
+       // Check the account type before continuing.
+
+}
+
+void frmMain::HideSSLInfo( wxCommandEvent &event ){
+
+       // Check the account type before continuing.
+
+}
+
+void frmMain::UpdateConnectionStatus( wxCommandEvent &event ){
+
+       if (event.GetInt() == 0){
+       
+               imgConnStatus->SetBitmap(*imgOnline);
+       
+       } else {
+
+               imgConnStatus->SetBitmap(*imgOffline);
+       
+       }       
+
+}
+
+void frmMain::SetupSSLStatus( int AccountID ){
+
+       // Check if account ID given is
+       // the active account and if not, do nothing.
+       
+       wxString AccType;
+       wxString AccTypeLower;
+       
+       AccType = prefaccounts.GetAccountType(AccountID);
+       AccTypeLower = AccType.MakeLower();
+       
+       wxString AccountIDName = prefaccounts.GetAccountDirectory(AccountID) + wxT(".") +
+                               AccTypeLower;
+
+       if (AccountIDName != ActiveAccount){
+       
+               return;
+       
+       }
+
+       // Check if the account has SSL enabled.
+       
+       bool SSLInUse = prefaccounts.GetAccountSSL(AccountID);
+       
+       if (SSLInUse == FALSE){
+       
+               SSLToolTip->SetTip(wxT("SSL is not enabled for this account"));
+               imgSSLStatus->SetBitmap(*imgNoSSL);
+       
+       } else {
+       
+               // Get the SSL Collection Data.
+
+               std::map<int,int>::iterator SSLResultIter = AccountSSLResult.find(AccountID);
+
+               if (SSLResultIter->second == 1){
+               
+                       imgSSLStatus->SetBitmap(*imgSSLWarning);
+                       SSLToolTip->SetTip(wxT("Invalid certificate(s) received for '") + 
+                               prefaccounts.GetAccountName(AccountID) +
+                               wxT("' (Connection denied by user)\n\nDouble click for more information."));
+                       
+               
+               } else if (SSLResultIter->second == 0){
+               
+                       imgSSLStatus->SetBitmap(*imgSSL);
+                       SSLToolTip->SetTip(wxT("Account '") + 
+                               prefaccounts.GetAccountName(AccountID) +
+                               wxT("' secured using SSL\n\nDouble click for more information."));
+               
+               }
+       
+       }
+
+}
+
+void frmMain::InvalidSSLCertificate( wxCommandEvent &event ){
+
+       frmInvalidSSLCertificate *frameISC = new frmInvalidSSLCertificate ( this );
+       SSLInvalidCertNotifObj *SSLICNObj = (SSLInvalidCertNotifObj*)event.GetClientData();
+       SSLCertCollection SSLCCData = SSLICNObj->CertCollection;
+       wxString AccountName = SSLICNObj->AccountName;
+       frameISC->LoadData(SSLCCData, AccountName);
+       frameISC->ShowModal();
+       
+       int FinalConflictResult = frameISC->GetResult();
+       
+       wxCommandEvent event2(ACTMGR_RESUMEPROC);
+       event2.SetClientData(SSLICNObj->QRNotifData);
+       event2.SetInt(FinalConflictResult);
+       
+       delete frameISC;
+       frameISC = NULL;
+
+       frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);  
+       wxPostEvent(frameActMgr, event2);
+}
+
+void frmMain::PauseAllTimers(){
+
+       for (std::map<wxString, wxAccountSyncTimer*>::iterator ASTiter = AccountSyncTimers.begin(); 
+       ASTiter != AccountSyncTimers.end(); ASTiter++){
+       
+               ASTiter->second->Stop();
+       
+       }
+
+}
+
+void frmMain::ResumeAllTimers(){
+
+       for (std::map<wxString, wxAccountSyncTimer*>::iterator ASTiter = AccountSyncTimers.begin(); 
+       ASTiter != AccountSyncTimers.end(); ASTiter++){
+       
+               ASTiter->second->Start();
+       
+       }
+
+}
+
+void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, SSLCertCollection SSLCertInc){
+
+       // Delete existing data.
+
+       AccountSSLData.erase(AccountID);
+       AccountSSLResult.erase(AccountID);
+
+       // Insert new data.
+       
+       AccountSSLData.insert(std::make_pair(AccountID, SSLCertInc));
+       AccountSSLResult.insert(std::make_pair(AccountID, SSLStatus));
+
+}
+
+void frmMain::CheckUpdates( wxCommandEvent& event ){
+
+       frmUpdate *frameUpdate = new frmUpdate ( this );
+       frameUpdate->FetchData();
+       frameUpdate->ShowModal();
+
+}
+
+void frmMain::OpenImportDialog( wxCommandEvent& event ){
+       
+       // Run the import contacts system.
+
+       ImportRun(this);
+
+}
+
+void frmMain::OpenExportDialog( wxCommandEvent& event ){
+
+       // Check if an account and at least one contact is selected
+       // before continuing.
+       
+       wxArrayString ArrData;
+       
+       if (ActiveAccount.IsEmpty()){
+    
+               return;
+    
+       }
+       
+       int ContactSelected = 0;
+       int ContactsCollected = 0;
+       long longSelected = -1;
+       
+       for (;;){
+               
+               longSelected = lstContacts->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+                       
+               if (longSelected == -1){
+               
+                       break;
+                       
+               }
+               
+               int FileID = lstContacts->GetItemData(longSelected);
+               
+               ArrData.Insert(ContactsFileIndex[FileID],
+                       ContactsCollected, 1);
+       
+               ContactSelected++;
+               
+       }
+
+       if (ContactSelected == 0){
+       
+               return;
+       
+       }
+       
+       // Run the export contacts system.
+
+       ExportRun(this, &ArrData);
+
+}
+
+void frmMain::GetListControl(wxListCtrl *lstContactsPtr, 
+       wxArrayString *ContactsFileIndexPtr){
+
+       lstContactsPtr = lstContacts;
+       ContactsFileIndexPtr = &ContactsFileIndex;
+       
+}
+
+void frmMain::GetSelectedList( wxCommandEvent& event ){
+
+       // Get the array of contact filenames. 
+
+       wxArrayString *ArrData = (wxArrayString*)event.GetClientData();
+       
+       // Process them into an array of files. 
+
+       long longSelected = -1;
+       int ContactsCollected = 0;
+       wxString ContactFilename;
+
+       for (;;){
+               
+               longSelected = lstContacts->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_SELECTED);
+               
+               if (longSelected == -1){
+               
+                       break;
+                       
+               }
+
+               // Get the file information and add to the list.
+               
+               int FileID = lstContacts->GetItemData(longSelected);
+               
+               ArrData->Insert(ContactsFileIndex[FileID],
+                       ContactsCollected, 1);
+               
+               ContactsCollected++;
+               ContactFilename.Clear();        
+               
+       }
+       
+       event.SetInt(1);
+
+}
+
+void frmMain::SyncAccount( wxCommandEvent& event ){
+
+       wxString *AccNameInc = (wxString*)event.GetClientData();
+
+       frmActivityMgr *frameActMgr = static_cast<frmActivityMgr*>(ActMgrPtr);
+       frameActMgr->AddTask(3, wxT(""), *AccNameInc, 
+            wxT(""), wxT(""), wxT(""), wxT(""));
+
+}
+
+void frmMain::ShowHelp( wxCommandEvent& event ){
+
+       // Based on the operating system, work out where 
+       // the documentation should be.
+
+//#ifdef __APPLE__
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+
+
+#else
+
+       if (wxFileExists("/usr/share/doc/xestiaab/index.html")){
+       
+               wxLaunchDefaultBrowser(wxT("file:///usr/share/doc/xestiaab/index.html"));
+               return;
+
+#if XSDAB_RELEASE == 0
+
+       } else if (wxFileExists("/usr/local/share/doc/xestiaab/index.html")){
+       
+               wxLaunchDefaultBrowser(wxT("file:///usr/local/share/doc/xestiaab/index.html"));
+               return;
+
+#endif 
+
+       }
+       
+#endif
+       
+#if XSDAB_RELEASE == 0
+
+       wxMessageBox(_("The help documentation is not available.\n\nYou can view the documentation that came with your source package."), _("Help documentation missing!"));
+
+#else
+
+       wxMessageBox(_("The help documentation is not available in the usual locations on the system. Please visit http://documentation.xestia.co.uk/xestiaab/ for documentation"), _("Help documentation missing!"));
+       
+#endif
+
+}
\ No newline at end of file
diff --git a/source/frmMain.h b/source/frmMain.h
new file mode 100644 (file)
index 0000000..1838300
--- /dev/null
@@ -0,0 +1,233 @@
+#ifndef __frmMain__
+#define __frmMain__
+
+/**
+@file
+Subclass of frmMainADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "common/preferences.h"
+#include <map>
+#include <utility>
+#include <wx/timer.h>
+#include <wx/filesys.h>
+#include <wx/combo.h>
+#include <wx/treectrl.h>
+#include <wx/treebase.h>
+#include <wx/imaglist.h>
+#include <wx/mstream.h>
+#include <wx/tooltip.h>
+
+#include "common/timers.h"
+#include "common/events.h"
+#include "common/etag.h"
+#include "widgets/XABAccountView.h"
+#include "bitmaps.h"
+#include "common/sslcertstructs.h"
+
+//// end generated include
+
+DECLARE_EVENT_TYPE(CE_UPDATECONTACTLIST, wxID_ANY)
+DECLARE_EVENT_TYPE(CE_UPDATEACCOUNTLIST, wxID_ANY)
+DECLARE_EVENT_TYPE(SE_UPDATECONTACTNOTIF, wxID_ANY)
+DECLARE_EVENT_TYPE(CE_OPENCONTACT, wxID_ANY)
+DECLARE_EVENT_TYPE(CE_EDITCONTACT, wxID_ANY)
+DECLARE_EVENT_TYPE(CE_REVEALCONTACT, wxID_ANY)
+DECLARE_EVENT_TYPE(CE_REMOVESEARCH, wxID_ANY)
+DECLARE_EVENT_TYPE(CE_REMOVECONTACT, wxID_ANY)
+DECLARE_EVENT_TYPE(SYNC_EMPTYSERVER, wxID_ANY)
+DECLARE_EVENT_TYPE(ACTMGR_START, wxID_ANY);
+DECLARE_EVENT_TYPE(ACTMGR_SHUFFLE, wxID_ANY);
+DECLARE_EVENT_TYPE(ACTMGR_STOP, wxID_ANY);
+DECLARE_EVENT_TYPE(WINDOW_ADD, wxID_ANY);
+DECLARE_EVENT_TYPE(WINDOW_EDIT, wxID_ANY);
+//DECLARE_EVENT_TYPE(WINDOW_DELETE, wxID_ANY);
+DECLARE_EVENT_TYPE(WINDOW_CLOSE, wxID_ANY);
+DECLARE_EVENT_TYPE(CONNSTAT_UPDATE, wxID_ANY);
+DECLARE_EVENT_TYPE(INVALIDSSLCERT, wxID_ANY);
+DECLARE_EVENT_TYPE(GETSELECTEDLIST, wxID_ANY);
+DECLARE_EVENT_TYPE(SYNCACCOUNT, wxID_ANY);
+
+struct UCNotif{
+       wxString ContactAccount;
+       wxString ContactFilename;
+       wxString ContactName;
+       wxString ContactNameField;
+       wxString ContactNickname;
+       vCardName ContactNameArray;
+};
+
+struct SWCloseNotif{
+       void *SCHWinPtr;
+};
+
+struct QRNotif{
+       int *QResponse;
+       bool *PausePtr;
+};
+
+struct XABViewMode{
+
+       int SortMode;
+       bool AscendingMode;
+
+};
+
+struct WindowData{
+
+       int DataType;
+       void *WindowPointer;
+       int WindowID;
+
+};
+
+/** Implementing frmMainADT */
+class frmMain : public frmMainADT
+{
+       private:
+               XABPrefAccounts prefaccounts;
+               wxArrayString ContactsFileIndex;
+               std::map<wxString, bool> WindowList;
+               std::map<int, wxTimer> AccountRefreshList;
+               std::map<int, wxString> AccountAccDirList;
+               std::map<int, SSLCertCollection> AccountSSLData;
+               std::map<int, int> AccountSSLResult;
+               std::multimap<int, int> AccountGroupList;
+               std::multimap<int, wxString> AccountGroupFilename;
+               std::multimap<wxTreeItemId, int> AccountGroupTreeId;
+               std::map<wxString, wxAccountSyncTimer*> AccountSyncTimers;
+               void *ActMgrPtr;
+               wxString ActiveAccount;
+               wxString ActiveAccountType;
+               wxString ActiveFilename;
+               wxETagProcessTimer ETagProcTimer;
+               std::map<wxString,wxString> MemoryFileList;
+               std::map<void*,wxString> ContactWindowList;
+               std::map<void*,wxString> ContactEditorWindowList;
+               std::map<void*,wxString> SearchWindowList;
+               std::map<int,wxMenuItem*> WindowListPointersMenu;
+               std::map<int,void*> WindowListPointers;
+               std::map<int,int> WindowListType;
+               //std::map<int,int> WindowListType;
+               wxMenuItem *mnuContactWindows;
+               wxMenuItem *mnuContactEditorWindows;
+               wxMenuItem *mnuSearchWindows;
+               wxToolTip *SSLToolTip;
+               bool RevealWait = FALSE;
+               wxString SessionID;
+               wxString OldSessionID;
+               wxIcon IconEmp;
+               //wxIcon Emp;
+               //wxComboCtrl* AccControl = new wxGenericComboCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize);
+               //wxComboCtrl* AccControl = new wxComboCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCB_READONLY|wxEXPAND|wxCC_STD_BUTTON);
+               //wxStaticBitmap* AccIcon = new wxStaticBitmap(this, wxID_ANY, IconEmp, wxDefaultPosition, wxSize(16,16), wxALL|wxEXPAND, wxStaticBitmapNameStr);
+               XABAccountView* treAccounts = new XABAccountView();
+               wxImageList *AccImgList =  new wxImageList(16,16,true);
+               wxImageList *ActMgrImgList = new wxImageList(16,16,true);
+               //wxIcon wxIAccInet;
+               int AccountID;
+               int AccountNetID;
+               int AccountGrpID;
+               int AccountNoneID;
+               bool ReloadAccounts = FALSE;
+               bool AscendingMode = FALSE;
+               int SortMode = 1;
+               wxStaticBitmap *imgConnStatus = NULL;
+               wxStaticBitmap *imgSSLStatus = NULL;
+               wxStaticBitmap *imgActivityStatus = NULL;
+               wxBitmap *imgActIcon1 = NULL;
+               wxBitmap *imgActIcon2 = NULL;
+               wxBitmap *imgActIcon3 = NULL;
+               wxBitmap *imgActIcon4 = NULL;
+               wxBitmap *imgActIconSleep = NULL;
+               wxBitmap *imgSSL = NULL;
+               wxBitmap *imgNoSSL = NULL;
+               wxBitmap *imgSSLWarning = NULL;
+               wxBitmap *imgOnline = NULL;
+               wxBitmap *imgOffline = NULL;
+               int ActivityIconStatus = 0;
+               int SearchUID = 0;
+               int ContactUID = 0;
+               int ContactEditorUID = 0;
+               int WindowMenuItemID = 0;
+       protected:
+               // Handlers for frmMainADT events.
+               void QuitApp( wxCommandEvent& event );
+               void QuitApp();
+               void ShowAboutWindow( wxCommandEvent& event );
+               void OpenPreferences( wxCommandEvent& event );
+               void OpenNewABDialog( wxCommandEvent& event );
+               void LoadPreferences( wxActivateEvent& event );
+               void LoadPreferences();
+               void LoadContactList( wxTreeEvent& event );
+               void ShowContactInfo( wxListEvent& event );
+               void OpenContactInfo( wxListEvent& event );
+               void OpenContactInfo( wxCommandEvent& event );
+               void ShowContactEditorNew( wxCommandEvent& event );             
+               void ShowContactEditorEdit( wxCommandEvent& event );
+               void RefreshAddressBook( wxCommandEvent& event );
+               void ShowActivityWindow( wxCommandEvent& event );               
+               wxTreeItemId FindItemNamed(wxTreeCtrl &tree, 
+                             const std::wstring &name);
+               void ConflictResolution( wxCommandEvent& event );
+               void UpdateContactList( wxCommandEvent& event );
+               void UpdateAccountList( wxCommandEvent& event );
+               void UpdateSearchContactLists( wxCommandEvent& event );
+               void OpenFindContactsWindow(wxCommandEvent& event);
+               void RevealContact( wxCommandEvent& event );
+               void RemoveContactsWindowPointer(wxCommandEvent& event);
+               void RemoveContactEditorWindowPointer(wxCommandEvent& event);
+               void UpdateWindowList(wxCommandEvent& event);
+               void RemoveContactSearchWindows(wxCommandEvent& event);
+               void DeleteContact(wxCommandEvent& event);
+               void EmptyServerDialog(wxCommandEvent& event);
+               void DeleteContactSync(wxString &Account, wxString &Filename);
+               void SortFNLN( wxCommandEvent& event );
+               void SortLNFN( wxCommandEvent& event );
+               void SortNickname( wxCommandEvent& event );
+               void SortDisplayAs( wxCommandEvent& event );
+               void SortAscending( wxCommandEvent& event );
+               void SortDescending( wxCommandEvent& event );
+               void ToggleStatusBar( wxCommandEvent& event );
+               void UpdateSBIconPlacement( wxSizeEvent& event );
+               void WindowAdd( wxCommandEvent& event );
+               void WindowEdit( wxCommandEvent& event );
+               void WindowDelete( wxCommandEvent& event );
+               void ShowContactWindow( wxCommandEvent& event );
+               void ShowContactEditorWindow( wxCommandEvent& event );
+               void ShowSearchWindow( wxCommandEvent& event );
+               void ToggleConnectionStatus( wxCommandEvent& event );
+               void ShowSSLCertificates( wxCommandEvent& event );
+               void ShowSSLInfo( wxCommandEvent& event );
+               void HideSSLInfo( wxCommandEvent& event );
+               void UpdateConnectionStatus( wxCommandEvent& event );
+               void SetupSSLStatus( int AccountID );
+               void InvalidSSLCertificate( wxCommandEvent& event );
+               void CheckUpdates( wxCommandEvent& event );
+               void OpenImportDialog( wxCommandEvent& event );
+               void OpenExportDialog( wxCommandEvent& event );
+               void GetSelectedList( wxCommandEvent& event );
+               void SyncAccount( wxCommandEvent& event );
+               void ShowHelp( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmMain( wxWindow* parent );
+               int ShowConflictDialog(vCard *LocalObj, vCard *ServerObj);
+               void SetupPointers(void *ActMgr);
+               void SetupForm();
+               void ActivityIconStart( wxCommandEvent& event );
+               void ActivityIconShuffle( wxCommandEvent& event );
+               void ActivityIconStop( wxCommandEvent& event );
+               void PauseAllTimers();
+               void ResumeAllTimers();
+               void UpdateSSLAccountStatus(int AccountID, int SSLStatus, SSLCertCollection SSLCertInc);
+               void GetListControl(wxListCtrl *lstContactsPtr, wxArrayString *ContactsFileIndexPtr);
+               XABViewMode GetViewMode();
+               DECLARE_EVENT_TABLE()
+
+       //// end generated class members
+       
+};
+
+#endif // __frmMain__
diff --git a/source/frmMain.h~ b/source/frmMain.h~
new file mode 100644 (file)
index 0000000..41d120f
--- /dev/null
@@ -0,0 +1,40 @@
+#ifndef __frmMain__
+#define __frmMain__
+
+/**
+@file
+Subclass of frmMainADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "common/preferences.h"
+
+//// end generated include
+
+/** Implementing frmMainADT */
+class frmMain : public frmMainADT
+{
+       private:
+               XABPrefAccounts prefaccounts;
+               wxArrayString ContactsFileIndex;
+       protected:
+               // Handlers for frmMainADT events.
+               void QuitApp( wxCommandEvent& event );
+               void QuitApp();
+               void ShowAboutWindow( wxCommandEvent& event );
+               void OpenPreferences( wxCommandEvent& event );
+               void OpenNewABDialog( wxCommandEvent& event );
+               void LoadPreferences( wxActivateEvent& event );
+               void LoadContactList( wxTreeEvent& event );
+               void ShowContactInfo( wxCommandEvent& event );
+               void OpenContactInfo( wxCommandEvent& event );
+               wxTreeItemId FindItemNamed(wxTreeCtrl &tree, 
+                             const std::wstring &name);
+       public:
+               /** Constructor */
+               frmMain( wxWindow* parent );
+       //// end generated class members
+       
+};
+
+#endif // __frmMain__
diff --git a/source/frmNewAccount.cpp b/source/frmNewAccount.cpp
new file mode 100644 (file)
index 0000000..30c6fa2
--- /dev/null
@@ -0,0 +1,490 @@
+#include "frmNewAccount.h"
+#include <thread>
+#include <cstdlib>
+#include <wx/filefn.h>
+#include <wx/fileconf.h>
+
+#include "carddav/carddav.h"
+#include "common/dirs.h"
+
+frmNewAccount::frmNewAccount( wxWindow* parent )
+:
+frmNewAccountADT( parent )
+{
+       btnPrevious->Disable();
+}
+
+void frmNewAccount::CheckAccountName( wxCommandEvent& event )
+{
+
+       wxString CheckAccName = txtAccountName->GetValue();
+
+       if (txtAccountName->IsEmpty() && PageSeek == 2 || CheckAccName.Len() < 4){
+       
+               btnNext->Disable();
+       
+       } else {
+       
+               btnNext->Enable();
+       
+       }
+       
+}
+
+void frmNewAccount::ProcessPrevious( wxCommandEvent& event )
+{
+       PageSeek--;
+       
+       if (PageSeek == 0){
+       
+               // Currently at the Connection test screen.
+               
+               //tbkAccount->ChangeSelection(0);
+               tabConn->Hide();
+               tabFinish->Hide();
+               tabType->Show();
+               szrNewAccount->RecalcSizes();
+               
+               btnPrevious->Disable();
+               btnNext->Enable();
+       
+       } else if (PageSeek == 1){
+       
+               if (cmbServerType->GetCurrentSelection() == 0){
+               
+                       tabConn->Hide();
+                       tabFinish->Hide();
+                       tabType->Show();
+                       PageSeek = 0;
+                       btnPrevious->Disable();
+                       btnNext->Enable();
+                       btnNext->SetLabel(_("Next >"));                 
+                       return;
+               
+               }
+       
+               // Currently at the Finish screen.
+               
+               tabType->Hide();
+               tabConn->Show();
+               tabFinish->Hide();
+               szrNewAccount->RecalcSizes();
+               
+               btnNext->SetLabel(_("Next >"));
+               btnNext->Enable();
+       
+       }       
+       
+}
+
+void frmNewAccount::ProcessNext( wxCommandEvent& event )
+{
+       PageSeek++;
+       
+       if (PageSeek == 1){
+       
+               if (cmbServerType->GetCurrentSelection() == 0){
+               
+                       tabType->Hide();
+                       tabConn->Hide();
+                       tabFinish->Show();
+                       PageSeek = 2;
+                       btnPrevious->Enable();
+                       szrNewAccount->RecalcSizes();
+                       btnNext->Disable();
+                       btnNext->SetLabel(_("Finish"));
+                       return;
+               
+               }
+       
+               btnNext->Disable();
+       
+               bool ServerResult = FALSE;
+               bool ServerAction = FALSE;
+               bool UseSSL = TRUE;
+               wxString ServerMessage;
+       
+               // Connection test screen.
+               
+               tabType->Hide();
+               tabConn->Show();
+               tabFinish->Hide();
+               szrNewAccount->RecalcSizes();
+               btnPrevious->Enable();
+               
+               // Reset screen.
+
+               lblServerConnResult->SetLabel(wxT(""));
+               lblServerResponse->SetLabel(wxT(""));
+               lblServerSSLResult->SetLabel(wxT(""));
+               lblServerSSLValid->SetLabel(wxT(""));
+               lblAbleToLoginResult->SetLabel(wxT(""));
+               lblCardDAVSupportResult->SetLabel(wxT(""));
+
+               // Spawn a thread and check if server supports CardDAV.
+               
+               CardDAV CardDAVConn;
+               
+               lblServerConnResult->SetLabel(_("Testing..."));
+               
+               UseSSL = chkUseSSL->GetValue();
+               
+               CardDAVConn.SetupConnection(txtServerAddress->GetValue(), 
+                       wxAtoi(txtServerPort->GetValue()), 
+                       txtUsername->GetValue(), 
+                       txtPassword->GetValue(),
+                       UseSSL);
+               CardDAVConn.SetupResultBools(&ServerResult, &ServerAction);
+               
+               std::thread ConnTest(&CardDAV::Connect, &CardDAVConn);
+               
+               ConnTest.join();
+               
+               if (ServerResult == FALSE){
+               
+                       lblServerConnResult->SetLabel(_("Failed"));
+                       wxMessageBox(CardDAVConn.GetErrorMessage());
+                       return;
+               
+               } else {
+               
+                       lblServerConnResult->SetLabel(_("Connected"));
+               
+               }
+               
+               if (CardDAVConn.HasValidResponse() == TRUE){
+               
+                       lblServerResponse->SetLabel(_("Yes"));
+               
+               } else {
+               
+                       lblServerResponse->SetLabel(_("No"));
+               
+               }               
+               
+               if (CardDAVConn.CanDoSSL() == TRUE){
+               
+                       lblCardDAVSupportResult->SetLabel(_("Used"));
+               
+               } else {
+               
+                       lblServerSSLResult->SetLabel(_("Not Used"));
+                       lblServerSSLValid->SetLabel(_("Not Applicable"));
+               
+               }               
+               
+               if (CardDAVConn.SSLVerify() == TRUE && CardDAVConn.CanDoSSL() == TRUE){
+
+                       lblCardDAVSupportResult->SetLabel(_("Verified"));
+               
+               } else if (CardDAVConn.SSLVerify() == FALSE && CardDAVConn.CanDoSSL() == TRUE) {
+               
+                       lblServerSSLResult->SetLabel(_("Unable to verify"));
+               
+               }
+               
+               if (CardDAVConn.CanDoCardDAV() == TRUE){
+               
+                       lblCardDAVSupportResult->SetLabel(_("Supported"));
+               
+               } else {
+               
+                       lblCardDAVSupportResult->SetLabel(_("Unsupported"));            
+               
+               }
+               
+               if (CardDAVConn.AbleToLogin() == TRUE){
+               
+                       lblAbleToLoginResult->SetLabel(_("Yes"));
+               
+               } else {
+               
+                       lblAbleToLoginResult->SetLabel(_("No"));
+               
+               }
+               
+               // Get the address to process CardDAV requests.
+               
+               ServerPrefix = CardDAVConn.GetDefaultAddressBookURL();
+               
+               wxMessageBox(ServerPrefix);
+
+               if (ServerResult == TRUE && CardDAVConn.HasValidResponse() == TRUE &&
+               //CardDAVConn.CanDoSSL() == TRUE && CardDAVConn.SSLVerify() == TRUE &&
+               CardDAVConn.CanDoCardDAV() == TRUE && CardDAVConn.AbleToLogin() == TRUE){
+               
+                       btnNext->Enable();
+                       
+                       lblConnectionResultText->SetLabel(_("Click on Next to set the account name."));
+               
+               } else {
+               
+                       lblConnectionResultText->SetLabel(_("A problem has occured whilst connecting to the CardDAV server.\nPlease review the above information and change the server details if needed.\nIf there are still problems, please speak to your system administrator(s)."));
+               
+               }
+       
+       } else if (PageSeek == 2){
+       
+               // Finish screen.
+               
+               tabType->Hide();
+               tabConn->Hide();
+               tabFinish->Show();
+               szrNewAccount->RecalcSizes();
+               
+               btnNext->Disable();
+               btnNext->SetLabel(_("Finish"));
+               if (txtAccountName->IsEmpty() && PageSeek == 2){
+                       btnNext->Disable();
+               } else {
+                       btnNext->Enable();
+               }
+       
+       } else if (PageSeek == 3){
+       
+               // Finished.
+               
+               wxString XestiaABPrefDirectory;
+               wxString AccountSettingsFile;
+               //wxFile ASFile;
+               wxString RandomNumberSuffix = wxString::Format(wxT("%i"), rand() % 32767);
+               bool DirectoryCreated = FALSE;
+
+#if defined(__HAIKU__)
+    
+               //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+               XestiaABPrefDirectory = GetUserPrefDir();
+
+               AccountSettingsFile = XestiaABPrefDirectory + wxT("accounts");
+
+               // Open the file for writing.
+
+               wxFileConfig *cfgfile = new wxFileConfig("", "", AccountSettingsFile);
+
+               // Check if account name already exists and return an error message
+               // if this is the case.
+
+               wxString AccountName;
+               long itemindex = 0;
+               bool ContinueAcc;       
+               ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex);
+
+               while (ContinueAcc){
+
+                       if (txtAccountName->GetValue() == AccountName){
+
+                               wxMessageBox(_("The selected account name is already used, please use another account name."), _("Account name already used"), wxICON_ERROR);
+                               return;
+
+                       }
+
+                       cfgfile->SetPath(wxT("/"));
+                       ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex);
+
+               }
+
+               cfgfile->SetPath(txtAccountName->GetValue());
+               cfgfile->Write(wxT("address"), txtServerAddress->GetValue());
+               cfgfile->Write(wxT("port"), txtServerPort->GetValue());
+               cfgfile->Write(wxT("username"), txtUsername->GetValue());
+               cfgfile->Write(wxT("password"), txtPassword->GetValue());
+               cfgfile->Write(wxT("prefix"), ServerPrefix);
+
+               if (chkUseSSL->GetValue() == TRUE){
+
+                       cfgfile->Write(wxT("ssl"), wxT("true"));
+
+               } else {
+
+                       cfgfile->Write(wxT("ssl"), wxT("false"));
+
+               }
+
+               cfgfile->Write(wxT("refresh"), wxT("1800"));
+
+               if (cmbServerType->GetCurrentSelection() == 1){
+
+                       cfgfile->Write(wxT("type"), wxT("CardDAV"));
+
+                       while(DirectoryCreated == FALSE){
+
+                               wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix;
+                               wxString XestiaABUserDirectory = GetUserDir();
+
+                               if (wxMkdir(XestiaABUserDirectory + wxT("\\accounts\\") + DirectoryName + wxT(".carddav"), 0740) == TRUE){
+
+                                       DirectoryCreated = TRUE;
+                                       cfgfile->Write(wxT("accountdir"), DirectoryName);
+
+                               } else {
+
+
+
+                               }
+
+                       }
+
+               } else if (cmbServerType->GetCurrentSelection() == 0){
+
+                       // Create the account directory.
+
+                       cfgfile->Write(wxT("type"), wxT("Local"));
+
+                       while(DirectoryCreated == FALSE){
+
+                               wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix;
+                               wxString XestiaABUserDirectory = GetUserDir();
+
+                               if (wxMkdir(XestiaABUserDirectory + wxT("\\accounts\\") + DirectoryName + wxT(".local"), 0740) == TRUE){
+
+                                       DirectoryCreated = TRUE;
+                                       cfgfile->Write(wxT("accountdir"), DirectoryName);
+
+                               }
+
+                       }
+
+               }
+
+               delete cfgfile;
+               cfgfile = NULL;
+
+               ReloadAccountConfig = TRUE;             
+
+#else
+
+               XestiaABUserDirectory = GetUserPrefDir();
+
+               AccountSettingsFile = XestiaABUserDirectory + wxT("accounts");
+               
+               // Open the file for writing.
+               
+               wxFileConfig *cfgfile = new wxFileConfig("", "", AccountSettingsFile);
+               
+               // Check if account name already exists and return an error message
+               // if this is the case.
+               
+               wxString AccountName;
+               long itemindex = 0;
+               bool ContinueAcc;       
+               ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex);
+
+               while (ContinueAcc){
+               
+                       if (txtAccountName->GetValue() == AccountName){
+                       
+                               wxMessageBox(_("The selected account name is already used, please use another account name."), _("Account name already used"), wxICON_ERROR);
+                               return;
+                       
+                       }
+               
+                       cfgfile->SetPath(wxT("/"));
+                       ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex);
+               
+               }
+               
+               cfgfile->SetPath(txtAccountName->GetValue());
+               cfgfile->Write(wxT("address"), txtServerAddress->GetValue());
+               cfgfile->Write(wxT("port"), txtServerPort->GetValue());
+               cfgfile->Write(wxT("username"), txtUsername->GetValue());
+               cfgfile->Write(wxT("password"), txtPassword->GetValue());
+               cfgfile->Write(wxT("prefix"), ServerPrefix);
+               
+               if (chkUseSSL->GetValue() == TRUE){
+               
+                       cfgfile->Write(wxT("ssl"), wxT("true"));
+               
+               } else {
+               
+                       cfgfile->Write(wxT("ssl"), wxT("false"));
+               
+               }
+
+               cfgfile->Write(wxT("refresh"), wxT("1800"));
+
+               if (cmbServerType->GetCurrentSelection() == 1){
+               
+                       while(DirectoryCreated == FALSE){
+
+                               wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix;
+       
+                               if (wxMkdir(XestiaABUserDirectory + wxT("/accounts/") + DirectoryName + wxT(".carddav"), 0740) == TRUE){
+               
+                                       DirectoryCreated = TRUE;
+                                       cfgfile->Write(wxT("accountdir"), DirectoryName);
+               
+                               }
+                       
+                       }
+               
+               } else if (cmbServerType->GetCurrentSelection() == 0){
+               
+                       // Create the account directory.
+                       
+                       while(DirectoryCreated == FALSE){
+                       
+                               wxString DirectoryName = txtAccountName->GetValue().Mid(0, 30) + RandomNumberSuffix;
+                       
+                               if (wxMkdir(XestiaABUserDirectory + wxT("/accounts/") + DirectoryName + wxT(".carddav"), 0740) == TRUE){
+                               
+                                       DirectoryCreated = TRUE;
+                                       cfgfile->Write(wxT("accountdir"), DirectoryName);
+                               
+                               }
+                       
+                       }
+                       
+               }
+
+               delete cfgfile;
+               cfgfile = NULL;
+               
+               ReloadAccountConfig = TRUE;
+
+#endif
+
+               this->Close();
+       
+       }
+
+}
+
+void frmNewAccount::CloseWindow( wxCommandEvent& event )
+{
+       ReloadAccountConfig = FALSE;
+       this->Close();
+}
+
+void frmNewAccount::UpdateRequirements( wxCommandEvent& event )
+{
+
+       // Update the options.
+       
+       if (cmbServerType->GetCurrentSelection() == 1){
+
+               txtServerAddress->Enable();
+               txtServerPort->Enable();
+               txtUsername->Enable();
+               txtPassword->Enable();
+               chkUseSSL->Enable();
+       
+       } else if (cmbServerType->GetCurrentSelection() == 0){
+       
+               txtServerAddress->Disable();
+               txtServerPort->Disable();
+               txtUsername->Disable();
+               txtPassword->Disable();
+               chkUseSSL->Disable();
+       
+       }
+
+}
+
+void frmNewAccount::SetupPointers(bool *ReloadAccountInc){
+
+       ReloadAccountConfig = ReloadAccountInc;
+
+}
\ No newline at end of file
diff --git a/source/frmNewAccount.h b/source/frmNewAccount.h
new file mode 100644 (file)
index 0000000..a94ee7c
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef __frmNewAccount__
+#define __frmNewAccount__
+
+/**
+@file
+Subclass of frmNewAccountADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+
+//// end generated include
+
+/** Implementing frmNewAccountADT */
+class frmNewAccount : public frmNewAccountADT
+{
+       protected:
+               // Handlers for frmNewAccountADT events.
+               void CheckAccountName( wxCommandEvent& event );         
+               void ProcessPrevious( wxCommandEvent& event );
+               void ProcessNext( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+               void UpdateRequirements( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmNewAccount( wxWindow* parent );
+               void SetupPointers(bool *ReloadAccountInc);
+       //// end generated class members
+       private:
+               int PageSeek = 0;
+               wxString ServerPrefix;
+               bool ReloadAccountConfig = FALSE;
+};
+
+#endif // __frmNewAccount__
diff --git a/source/frmPreferences.cpp b/source/frmPreferences.cpp
new file mode 100644 (file)
index 0000000..0244d49
--- /dev/null
@@ -0,0 +1,400 @@
+#include "frmPreferences.h"
+#include "frmEditAccount.h"    
+#include "frmNewAccount.h"
+#include "frmMain.h"
+#include "common/preferences.h"
+#include "common/dirs.h"
+#include "bitmaps.h"
+
+#include "import/import.h"
+#include "export/export.h"
+
+#include <wx/wx.h>
+#include <wx/mstream.h>
+#include <wx/dialog.h>
+#include <wx/msgdlg.h>
+#include <wx/fileconf.h>
+
+
+frmPreferences::frmPreferences( wxWindow* parent )
+:
+frmPreferencesADT( parent )
+{
+
+       wxMemoryInputStream astream(icons_accinet_png, sizeof(icons_accinet_png));
+       wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png));
+       
+       wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccInet(icons_accinet_png, -1);
+       wxIcon wxIAccInet;
+       wxIAccInet.CopyFromBitmap(AccInet);
+
+       wxImage icons_acclocal_png(bstream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccNIcon(icons_acclocal_png, -1);
+       wxIcon wxIAccNIcon;
+       wxIAccNIcon.CopyFromBitmap(AccNIcon);
+       
+       AccountID = AccImgList->Add(wxIAccNIcon);
+       AccountNetID = AccImgList->Add(wxIAccInet);
+
+       NbtPreferences->RemovePage(1);
+
+}
+
+frmPreferences::~frmPreferences(){
+
+       delete AccImgList;
+       AccImgList = NULL;
+
+}
+
+void frmPreferences::EnableABButtons( wxListEvent& event )
+{
+    btnAccountModify->Enable(TRUE);
+    btnAccountDelete->Enable(TRUE);    
+}
+
+void frmPreferences::DisableABButtons( wxListEvent& event )
+{
+    btnAccountModify->Enable(FALSE);
+    btnAccountDelete->Enable(FALSE);    
+}
+
+void frmPreferences::AddABAccount(wxCommandEvent& event)
+{
+
+       bool ReloadAccountsData = FALSE;
+
+       frmNewAccount *frameNewAccount = new frmNewAccount(this);
+       frameNewAccount->SetupPointers(&ReloadAccountsData);
+       frameNewAccount->ShowModal();
+       delete frameNewAccount;
+       frameNewAccount = NULL;
+
+       if (ReloadAccountsData == TRUE){
+
+               // Reload the accounts as a change has been made within
+               // the application.
+
+               ReloadAccounts();
+               *ReloadAccountConfig = TRUE;
+
+       }
+
+}
+
+void frmPreferences::ModifyABAccount( wxCommandEvent& event )
+{
+
+    // Get the settings for the account, setup the form for
+    // editing the account and then display the window
+    // with the settings.
+    
+    long lstAccountsIndex = -1;
+    wxString AccFilename = GetAccountsFile();
+    wxString AccName;
+    
+    wxFileConfig *cfgfile = new wxFileConfig("", "", AccFilename);
+    
+    // Get the account name.
+    
+    lstAccountsIndex = lstAccounts->GetNextItem(lstAccountsIndex,
+                               wxLIST_NEXT_ALL,
+                               wxLIST_STATE_SELECTED);
+    
+    AccName = preferences->accounts.GetAccountName(lstAccountsIndex);
+    
+    frmEditAccount *frameEditAccount = new frmEditAccount ( this );
+    frameEditAccount->LoadPointers(cfgfile);
+    frameEditAccount->LoadSettings(AccName);
+    frameEditAccount->ShowModal();
+
+    delete frameEditAccount;
+    frameEditAccount = NULL;
+    delete cfgfile;
+    cfgfile = NULL;
+
+    // Reload the account list in the preferences window.
+
+    ReloadAccounts();
+    *ReloadAccountConfig = TRUE;
+
+}
+
+void frmPreferences::DeleteABAccount( wxCommandEvent& event )
+{
+    // Display a confirmation dialog to confirm deletion.
+    
+    long lstAccountsIndex = -1;
+    wxMessageDialog dlgdel(this, wxT("Are you sure you want to delete this account?\r\n\r\nAll data that is stored locally will be removed."), wxT("Delete account"), wxYES_NO | wxICON_EXCLAMATION);
+    
+    if (dlgdel.ShowModal() == wxID_YES){
+       // Remove the selected item from the accounts list
+       // and mark in the accounts list as deleted (Don't write to
+       // accounts file).
+       
+       lstAccountsIndex = lstAccounts->GetNextItem(lstAccountsIndex,
+                                         wxLIST_NEXT_ALL,
+                                         wxLIST_STATE_SELECTED);
+       
+       bool ContinueAcc = TRUE;
+       wxString AccountDir;
+       wxString AccountType;
+       wxString AccountDirFull;
+       wxString AccountDirDelFull;
+       wxString AccountName;
+       wxString AccName;
+       long itemindex = 0;
+       
+       wxString AccFilename = GetAccountsFile();
+    
+       wxFileConfig *cfgfile = new wxFileConfig("", "", AccFilename);
+       
+       AccName = preferences->accounts.GetAccountName(lstAccountsIndex);
+       
+       // Get the account directory name and account type..
+       
+       ContinueAcc = cfgfile->GetFirstGroup(AccountName, itemindex);
+       
+       while (ContinueAcc){
+
+               if (AccountName == AccName){
+
+                       cfgfile->SetPath(AccountName);
+                       
+                       cfgfile->Read("accountdir", &AccountDir);
+                       cfgfile->Read("type", &AccountType);
+               
+                       break;
+
+               }
+               
+               cfgfile->SetPath(wxT("/"));
+               ContinueAcc = cfgfile->GetNextGroup(AccountName, itemindex);
+
+       }
+       
+       AccountDirFull.Append(AccountDir);
+       AccountDirFull.Append(wxT("."));
+       
+       if (AccountType == wxT("CardDAV")){
+       
+               AccountDirFull.Append(wxT("local"));
+       
+       } else if (AccountType == wxT("Local")){
+       
+               AccountDirFull.Append(wxT("carddav"));
+       
+       }
+       
+       lstAccounts->DeleteItem(lstAccountsIndex);
+       
+       // Delete the directory that contains the account information.
+       
+       if (!AccountDirFull.IsEmpty()){
+       
+               AccountDirDelFull.Append(wxString::FromUTF8(getenv("HOME")));
+               AccountDirDelFull.Append(wxT("/.xestiaab/accounts/"));
+               AccountDirDelFull.Append(AccountDirFull);
+       
+               wxRmDir(AccountDirDelFull);
+       
+       }
+       
+       // Delete the account from the configuration file.
+       
+       cfgfile->SetPath(wxT("/"));
+       cfgfile->DeleteGroup(AccountName);
+       cfgfile->Flush();
+       
+       // Set flag for reloading accounts on window closure.
+    
+       *ReloadAccountConfig = TRUE;
+    
+    }
+
+}
+
+void frmPreferences::LoadPreferences( wxInitDialogEvent& event )
+{
+
+// Setup the preferences filename string. Default is the
+// *nix systems one (/home/$USER/.xestiaab/preferences)
+    
+       preffilename = GetUserPrefDir();
+
+    preferences = new XABPreferences(preffilename);
+  
+    // Setup the General Tab.
+    
+    bool SaveWindowPos = preferences->GetBoolData(wxT("SaveWindowPosition"));
+    bool HideLocalABs = preferences->GetBoolData(wxT("HideLocalAddressBooks"));
+    
+    if (SaveWindowPos == TRUE){
+    
+       chkSaveWindowPosition->SetValue(TRUE);
+    
+    }
+    
+    if (HideLocalABs == TRUE){
+    
+       chkHideLocal->SetValue(TRUE);
+    
+    }
+    
+    // Setup the Themes tab.
+
+    wxListItem themecol0;
+    
+    themecol0.SetId(0);
+    themecol0.SetWidth(250);
+    themecol0.SetText(_("Theme"));
+    lstThemes->InsertColumn(0,themecol0);
+    
+    // Setup the Accounts tab.
+    
+    ReloadAccounts();   
+    
+}
+
+void frmPreferences::ReloadAccounts(){
+
+    if (FirstLoad == FALSE){
+       delete preferences;
+       preferences = NULL;
+       preferences = new XABPreferences(preffilename);    
+    } else {
+       FirstLoad = FALSE;
+    }
+
+    wxListItem accountscol0, accountscol1, accountscol2, accountscol3;
+
+    lstAccounts->ClearAll();
+
+    accountscol0.SetId(0);
+    accountscol0.SetWidth(24);
+    lstAccounts->InsertColumn(0,accountscol0);
+    lstAccounts->SetImageList(AccImgList, wxIMAGE_LIST_SMALL);
+
+    accountscol1.SetId(1);
+    accountscol1.SetText(_("Name"));
+    accountscol1.SetWidth(224);    
+    lstAccounts->InsertColumn(1,accountscol1);   
+
+    accountscol2.SetId(2);
+    accountscol2.SetText(_("Type"));
+    accountscol2.SetWidth(96);
+    lstAccounts->InsertColumn(2,accountscol2);
+    
+    /*accountscol1.SetId(1);
+    accountscol1.SetText(_(""));
+    accountscol1.SetWidth(32);
+    lstAccounts->InsertColumn(1,accountscol1);
+    
+    accountscol2.SetId(2);
+    accountscol2.SetText(_("Name"));
+    accountscol2.SetWidth(224);    
+    lstAccounts->InsertColumn(2,accountscol2);
+    
+    accountscol3.SetId(3);
+    accountscol3.SetText(_("Type"));
+    accountscol3.SetWidth(96);
+    lstAccounts->InsertColumn(3,accountscol3);*/
+    
+    wxString AccType;
+    
+    for (int i = 0; i < preferences->accounts.GetCount() ; i++){
+
+       wxListItem col0;
+       col0.SetId(i);
+       if (preferences->accounts.GetAccountType(i) == wxT("CardDAV")){
+       
+               col0.SetImage(AccountNetID);
+       
+       } else if (preferences->accounts.GetAccountType(i) == wxT("Local")){
+       
+               col0.SetImage(AccountID);
+       
+       }
+    
+       //col0.SetText( wxString::Format(wxT("%i"),i) );
+       //col0.SetText(preferences.accounts.GetAccountName(i));
+       
+       long itemindex = lstAccounts->InsertItem( col0 );
+       
+       //AccType = preferences.accounts.GetAccountType(i);
+       //AccType.Trim();
+       
+       lstAccounts->SetItem(itemindex, 1, preferences->accounts.GetAccountName(i));
+       lstAccounts->SetItem(itemindex, 2, preferences->accounts.GetAccountType(i));
+       //lstAccounts->SetItem(itemindex, 3, AccType);
+       
+    }
+    
+}
+
+void frmPreferences::SetupPointers(bool *ReloadAccountInc){
+
+       ReloadAccountConfig = ReloadAccountInc;
+
+}
+
+void frmPreferences::SavePreferences(wxCommandEvent &event){
+
+       // Load up the preferences file.
+
+       wxString SetFilename = GetSettingsFile();
+
+       wxFileConfig *cfgfile = new wxFileConfig("", "", SetFilename);
+
+       // Update the settings file.
+               
+       cfgfile->DeleteEntry(wxT("SaveWindowPosition"));
+       cfgfile->DeleteEntry(wxT("WindowPositionX"));
+       cfgfile->DeleteEntry(wxT("WindowPositionY"));
+       cfgfile->DeleteEntry(wxT("WindowPositionHeight"));
+       cfgfile->DeleteEntry(wxT("WindowPositionWidth"));
+       
+       if (chkSaveWindowPosition->GetValue() == TRUE){
+       
+               cfgfile->Write(wxT("SaveWindowPosition"), wxT("true"));
+       
+               // Get parent window details.
+               
+               frmMain *frmMainPtr = (frmMain*)this->GetParent();
+
+               // Get main window position data and save it.
+       
+               wxRect frmMainPos = frmMainPtr->GetRect();
+       
+               cfgfile->Write(wxT("WindowPositionX"), frmMainPos.GetX());
+               cfgfile->Write(wxT("WindowPositionY"), frmMainPos.GetY());
+               cfgfile->Write(wxT("WindowPositionHeight"), frmMainPos.GetHeight());
+               cfgfile->Write(wxT("WindowPositionWidth"), frmMainPos.GetWidth());
+
+       } else {
+       
+               cfgfile->Write(wxT("SaveWindowPosition"), wxT("false"));
+       
+       }
+       
+       cfgfile->DeleteEntry(wxT("HideLocalAddressBooks"));
+       
+       if (chkHideLocal->GetValue() == TRUE){
+
+               cfgfile->Write(wxT("HideLocalAddressBooks"), wxT("true"));
+               *ReloadAccountConfig = TRUE;
+       
+       } else {
+       
+               cfgfile->Write(wxT("HideLocalAddressBooks"), wxT("false"));
+               *ReloadAccountConfig = TRUE;
+       
+       }
+
+       delete cfgfile;
+       cfgfile = NULL;
+
+       this->Close();
+
+}
\ No newline at end of file
diff --git a/source/frmPreferences.h b/source/frmPreferences.h
new file mode 100644 (file)
index 0000000..a563667
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef __frmPreferences__
+#define __frmPreferences__
+
+/**
+@file
+Subclass of frmPreferencesADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "common/preferences.h"
+
+//// end generated include
+
+/** Implementing frmPreferencesADT */
+class frmPreferences : public frmPreferencesADT
+{
+       protected:
+               void LoadPreferences( wxInitDialogEvent& event );
+               void EnableABButtons( wxListEvent& event );
+               void DisableABButtons( wxListEvent& event );
+               void DeleteABAccount( wxCommandEvent& event );
+               void ModifyABAccount( wxCommandEvent& event );
+               void SavePreferences( wxCommandEvent &event );
+               void AddABAccount( wxCommandEvent &event );
+       private:
+               void ReloadAccounts();
+               wxImageList *AccImgList =  new wxImageList(16,16,true,wxIMAGE_LIST_SMALL);
+               int AccountID = 0;
+               int AccountNetID = 0;
+               XABPreferences *preferences;
+               wxString preffilename;
+               bool FirstLoad = TRUE;
+               bool *ReloadAccountConfig;
+       public:
+               /** Constructor */
+               frmPreferences( wxWindow* parent );
+               ~frmPreferences();
+               void SetupPointers( bool *ReloadAccountInc );
+       //// end generated class members
+       
+};
+
+#endif // __frmPreferences__
diff --git a/source/frmSSLCertificate.cpp b/source/frmSSLCertificate.cpp
new file mode 100644 (file)
index 0000000..2c2f9dd
--- /dev/null
@@ -0,0 +1,246 @@
+#include "frmSSLCertificate.h"
+#include <wx/wx.h>
+
+frmSSLCertificate::frmSSLCertificate( wxWindow* parent )
+:
+frmSSLCertificateADT( parent )
+{
+
+}
+
+void frmSSLCertificate::SetupCerts(SSLCertCollection SSLCertsInc)
+{
+
+       /*// Grab the certificates, start from the one requested and show.
+               
+       lblValidityStatus->Hide();
+       
+       std::map<int, struct SSLCertData>::iterator SCDIter;
+       SCDIter = SSLCertsInc.SSLCollection.find(StartFrom); 
+       
+       // Setup the summary tab.
+       
+       // Split the subject data down.
+       
+       std::map<wxString, wxString>::iterator SDIter = SCDIter->second.CertData.find(wxT("Subject"));
+       std::map<wxString, wxString> SubjectData = GetSubjectData(SDIter->second);
+       
+       // Get the common name (CN).
+       
+       std::map<wxString, wxString>::iterator CNiter = SubjectData.find(wxT("CN"));
+       
+       lblCertName->SetLabel(CNiter->second);
+       
+       // Split the issuer data down.
+       
+       // Attempt to grab the organisation name first then
+       // the common name if it doesn't exist.
+       
+       if (SubjectData.count(wxT("O")) == 1){
+       
+               std::map<wxString, wxString>::iterator Oiter = SubjectData.find(wxT("O"));              
+               lblIssuedToData->SetLabel(Oiter->second);
+       
+       } else {
+       
+               lblIssuedToData->SetLabel(CNiter->second);
+       
+       }
+       
+       // Setup the valid from date.
+
+       std::map<wxString, wxString>::iterator Validiter = SCDIter->second.CertData.find(wxT("Start date"));
+       
+       wxDateTime ValidFromDate;
+       ValidFromDate.ParseDate(Validiter->second);
+       
+       lblValidFromData->SetLabel(ValidFromDate.FormatDate());
+       
+       // Setup the expiry date.
+       
+       std::map<wxString, wxString>::iterator Expiryiter = SCDIter->second.CertData.find(wxT("Expire date"));
+       
+       wxDateTime ExpiryDate;
+       ExpiryDate.ParseDate(Expiryiter->second);
+       
+       lblValidUntilData->SetLabel(ExpiryDate.FormatDate());
+       
+       // Setup the detail tab.
+
+       wxListItem ColumnDataName;
+       ColumnDataName.SetId(0);
+       ColumnDataName.SetText(wxT("Name"));
+       ColumnDataName.SetWidth(115);
+       lstValues->InsertColumn(0, ColumnDataName);
+
+       wxListItem ColumnDataValue;
+       ColumnDataValue.SetId(0);
+       ColumnDataValue.SetText(wxT("Value"));
+       ColumnDataValue.SetWidth(115);
+       lstValues->InsertColumn(0, ColumnDataValue);
+
+       int SSLIndex = 0;
+
+       for (std::map<wxString, wxString>::iterator iter = SCDIter->second.CertData.begin(); 
+       iter != SCDIter->second.CertData.end(); ++iter){
+       
+           // Ignore certificate data.
+       
+           if (iter->first == wxT("Cert")){
+           
+               continue;
+           
+           }
+       
+           wxListItem SSLInfo;
+      
+           SSLInfo.SetId(0);
+           SSLInfo.SetText(_("Mooo"));             
+           SSLIndex = lstValues->InsertItem(SSLInfo);
+    
+           lstValues->SetItem(SSLIndex, 0, iter->first);
+           lstValues->SetItem(SSLIndex, 1, iter->second);
+       
+       }
+       
+       // Setup the hierachy tab.
+       
+       wxTreeItemId CertTreeId;
+       wxTreeItemId PrevCertTreeId;
+       
+       for (std::map<int, struct SSLCertData>::reverse_iterator iter = SSLCertsInc.SSLCollection.rbegin(); 
+       iter != SSLCertsInc.SSLCollection.rend(); ++iter){
+       
+               if (iter->first < StartFrom){
+               
+                       continue;
+               
+               }
+       
+               // Get the common name of the certificate. (Fetch subject).
+               
+               std::map<wxString, wxString>::iterator CSDIter = iter->second.CertData.find(wxT("Subject"));
+               std::map<wxString, wxString> CertSubjectData = GetSubjectData(CSDIter->second);
+       
+               // Get the common name (CN).
+       
+               std::map<wxString, wxString>::iterator CertCNiter = CertSubjectData.find(wxT("CN"));
+       
+               // Add to the hierachy.
+               
+               SSLCertItemData *SSLCertID = new SSLCertItemData((iter->first + 1));
+               
+               CertTreeId = treHierarchy->AppendItem(PrevCertTreeId, CertCNiter->second, 0, -1, SSLCertID);
+               PrevCertTreeId = CertTreeId;
+       
+       }
+       
+       treHierarchy->ExpandAll();
+       
+       SSLCertData = SSLCertsInc;*/
+
+}
+
+std::map<wxString,wxString> frmSSLCertificate::GetSubjectData(wxString SubjectData)
+{
+
+       std::map<wxString,wxString> SubjectDataFinal;
+       wxStringTokenizer SubjectDataToken(SubjectData, wxT(";"));
+       wxString StringData;
+       wxString SettingName;
+       wxString SettingValue;
+       
+       while(SubjectDataToken.HasMoreTokens())
+       {
+       
+               StringData = SubjectDataToken.GetNextToken();
+       
+               // Split the data down between the equals sign.
+               
+               wxStringTokenizer DataSplitToken(StringData, wxT("="));
+       
+               while (DataSplitToken.HasMoreTokens()){
+               
+                       SettingName = DataSplitToken.GetNextToken();
+                       SettingValue = DataSplitToken.GetNextToken();
+                       SettingName.Trim(TRUE);
+                       SettingName.Trim(FALSE);
+                       SettingValue.Trim(TRUE);
+                       SettingValue.Trim(FALSE);
+                       
+                       SubjectDataFinal.insert(std::make_pair(SettingName, SettingValue));
+               
+               }
+               
+               StringData.Clear();
+               SettingName.Clear();
+               SettingValue.Clear();
+       
+       }
+       
+       return SubjectDataFinal;
+
+}
+
+void frmSSLCertificate::LoadValueData( wxListEvent& event )
+{
+       
+       // Get the value data and display it in the text at the bottom.
+       
+       long intSelected = -1;
+       int intSelectedData = 0;
+       long SSLDataSeekNum = -1;
+       wxString SSLSettingValue;
+     
+       intSelected = lstValues->GetNextItem(intSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+       
+       SSLSettingValue = lstValues->GetItemText(intSelected, 1);
+       
+       txtValueData->SetValue(SSLSettingValue);
+       
+       //SSLDataSeekNum = lstValues->GetItemData(intSelected);
+
+}
+
+void frmSSLCertificate::ViewCertificate( wxCommandEvent& event )
+{
+
+       // Get the internal certificate ID number.
+
+       wxTreeItemId SelectedChild = treHierarchy->GetSelection();
+
+       SSLCertItemData *ActiveSSLData = (SSLCertItemData*)treHierarchy->GetItemData(SelectedChild);
+       
+       if (ActiveSSLData->GetCertID() == (StartFrom + 1)){
+       
+               wxBell();
+       
+       } else {
+       
+               frmSSLCertificate *frameSSLCert = new frmSSLCertificate ( this );
+               frameSSLCert->StartCertFrom((ActiveSSLData->GetCertID() - 1));
+               frameSSLCert->SetupCerts(SSLCertData);
+               frameSSLCert->ShowModal();
+       
+       }
+       
+}
+
+void frmSSLCertificate::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmSSLCertificate::StartCertFrom(int StartFromInc){
+       StartFrom = StartFromInc;
+}
+
+void frmSSLCertificate::CheckCertificate( wxTreeEvent& event ){
+
+       wxTreeItemId SelectedChild = treHierarchy->GetSelection();
+
+       SSLCertItemData *ActiveSSLData = (SSLCertItemData*)treHierarchy->GetItemData(SelectedChild);
+
+}
\ No newline at end of file
diff --git a/source/frmSSLCertificate.h b/source/frmSSLCertificate.h
new file mode 100644 (file)
index 0000000..d01a043
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef __frmSSLCertificate__
+#define __frmSSLCertificate__
+
+/**
+@file
+Subclass of frmSSLCertificateADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "common/sslcertstructs.h"
+#include <map>
+#include <wx/tokenzr.h>
+#include <wx/msgdlg.h>
+
+//// end generated include
+
+/** Implementing frmSSLCertificateADT */
+class frmSSLCertificate : public frmSSLCertificateADT
+{
+       protected:
+               // Handlers for frmSSLCertificateADT events.
+               void LoadValueData( wxListEvent& event );
+               void ViewCertificate( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+               void CheckCertificate( wxTreeEvent& event );
+       public:
+               void SetupCerts(SSLCertCollection SSLCertInc);
+               void StartCertFrom(int StartFromInc);
+               /** Constructor */
+               frmSSLCertificate( wxWindow* parent );
+       private:
+               int StartFrom = 0;
+               SSLCertCollection SSLCertData;
+               std::map<wxString,wxString> GetSubjectData(wxString SubjectData);
+               class SSLCertItemData : public wxTreeItemData
+               {
+
+                       protected:
+                               int SSLCertID;
+                       public:
+                               SSLCertItemData(int SSLCertIDInc){ SSLCertID = SSLCertIDInc; };
+                               int GetCertID(){ return SSLCertID; };
+                               ~SSLCertItemData(){};
+       
+
+               };
+       //// end generated class members
+       
+};
+
+#endif // __frmSSLCertificate__
diff --git a/source/frmSearch.cpp b/source/frmSearch.cpp
new file mode 100644 (file)
index 0000000..50d8b5c
--- /dev/null
@@ -0,0 +1,1668 @@
+#include "frmSearch.h"
+#include "frmMain.h"
+#include "search/XABSearchPanel.h"
+#include "search/frmSearchAccounts.h"
+#include "common/preferences.h"
+#include "common/dirs.h"
+#include "vcard/vcard.h"
+
+#include <thread>
+/*#include <boost/filesystem.hpp>
+#include <boost/filesystem/fstream.hpp>
+#include <boost/filesystem/path.hpp>*/
+#include <wx/tokenzr.h>
+#include <wx/dir.h>
+
+DEFINE_EVENT_TYPE(SE_ADDSEARCHSETTING);
+DEFINE_EVENT_TYPE(SE_REMOVESEARCHSETTING);
+DEFINE_EVENT_TYPE(SE_RELOADACCOUNTS);
+DEFINE_EVENT_TYPE(SE_ADDRESULT);
+DEFINE_EVENT_TYPE(SE_SBUPDATE);
+DEFINE_EVENT_TYPE(SE_SEARCHFINISHED);
+DEFINE_EVENT_TYPE(SE_UPDATERESULT);
+DEFINE_EVENT_TYPE(SE_DELETERESULT);
+
+BEGIN_EVENT_TABLE(frmSearch, wxFrame)
+  EVT_COMMAND(wxID_ANY, SE_ADDSEARCHSETTING, frmSearch::AddSearchSetting)
+  EVT_COMMAND(wxID_ANY, SE_REMOVESEARCHSETTING, frmSearch::RemoveSearchSetting)
+  EVT_COMMAND(wxID_ANY, SE_RELOADACCOUNTS, frmSearch::ReloadAccountList)
+  EVT_COMMAND(wxID_ANY, SE_ADDRESULT, frmSearch::AddResult)
+  EVT_COMMAND(wxID_ANY, SE_SBUPDATE, frmSearch::SearchBarUpdate)
+  EVT_COMMAND(wxID_ANY, SE_SEARCHFINISHED, frmSearch::SearchFinished)
+  EVT_COMMAND(wxID_ANY, SE_UPDATERESULT, frmSearch::UpdateResult)
+  EVT_COMMAND(wxID_ANY, SE_DELETERESULT, frmSearch::DeleteResult)
+END_EVENT_TABLE()
+
+//namespace boostfs = boost::filesystem;
+
+frmSearch::frmSearch( wxWindow* parent )
+:
+frmSearchADT( parent )
+{
+       
+       XABSearchPanel *InitPanel = new XABSearchPanel( tabSearch );
+       InitPanel->EnableButtons(TRUE, FALSE);
+       InitPanel->SetupPointers(this);
+       InitPanel->SetupInteger(ScrollGen);
+       szrSearch->Add(InitPanel, 1, wxEXPAND, 0);
+       szrSearch->Fit(tabSearch);
+       SearchFrames.insert(std::make_pair(ScrollGen, InitPanel));
+       ScrollGen++;
+       
+       // Get the list of accounts and mark them as true.
+
+       wxString preffilename = GetUserPrefDir();
+
+       XABPreferences preferences(preffilename);       
+       
+       wxString AccDir;
+       wxString AccDirFull;
+       wxString AccDirFullSfx;
+       
+       for (int i = 0; i < preferences.accounts.GetCount(); i++){
+               AccDir = preferences.accounts.GetAccountDirectory(i);
+               AccDirFull = preferences.accounts.GetAccountDirectory(i);
+               AccDirFull.Trim();
+               AccDirFull.Append(wxT("."));
+               AccDirFullSfx.Append(preferences.accounts.GetAccountType(i));
+               AccDirFullSfx.LowerCase();
+               AccDirFullSfx.Trim();
+               AccDirFull.Append(AccDirFullSfx);
+               SearchAccountsPaths.insert(std::make_pair(AccDir, AccDirFull));
+               SearchAccounts.insert(std::make_pair(AccDir, TRUE));
+               SearchAccountsNames.insert(std::make_pair(AccDir,
+                       preferences.accounts.GetAccountName(i)));
+               AccDirFull.clear();
+               AccDirFullSfx.clear();
+               AccDir.clear();
+       }
+       
+       // Setup the columns.
+       
+       wxListItem item;
+       item.SetId(0);
+       item.SetText(_("Name"));
+       item.SetWidth(228);
+       
+       lstResults->InsertColumn(0, item);
+       
+       item.SetId(1);
+       item.SetText(_("Nickname"));
+       item.SetWidth(128);
+       
+       lstResults->InsertColumn(1, item);
+       
+       item.SetId(2);
+       item.SetText(_("Account"));
+       item.SetWidth(128);
+       
+       lstResults->InsertColumn(2, item);
+       
+}
+
+void frmSearch::SelectAccounts( wxCommandEvent& event )
+{
+
+       // Create the form and display as modal.
+
+       frmSearchAccounts *frameSAccount = new frmSearchAccounts ( this );
+       frameSAccount->LoadSearchAccounts(&SearchAccounts, &SearchAccountsNames);
+       frameSAccount->ShowModal();
+       delete frameSAccount;
+       frameSAccount = NULL;
+
+}
+
+void frmSearch::SearchContactsThread(){
+
+       // Go through each account and find contacts based on the
+       // matched settings.
+       
+       std::map<wxString,bool>::iterator SAiter;
+       std::map<wxString,wxString>::iterator SAPiter;
+       int intResultFound = 0;
+       
+       for (std::map<wxString, wxString>::iterator SALiter = SearchAccountsNames.begin(); 
+               SALiter != SearchAccountsNames.end();
+               SALiter++){
+       
+               // Double check that we are searching in this account.
+               // If not, skip to the next one.
+               
+               SAiter = SearchAccounts.find(SALiter->first);
+               SAPiter = SearchAccountsPaths.find(SAiter->first);
+               
+               
+               if (SAiter->second == FALSE){
+               
+                       // Not looking in this account. Go to next account.
+               
+                       continue;
+               
+               }
+               
+               wxCommandEvent sbupdate (SE_SBUPDATE);
+               
+               wxString *SBData = new wxString;
+               *SBData = _("Searching ") + SALiter->second + _("...");
+               
+               sbupdate.SetClientData(SBData);         
+               wxPostEvent(this, sbupdate);
+               
+               if (StopMode == FALSE){
+               
+                       wxCommandEvent sbstop (SE_SBUPDATE);
+               
+                       wxString *SBStopStr = new wxString;
+                       *SBStopStr = _("Search stopped.");
+               
+                       sbstop.SetClientData(SBStopStr);                
+                       wxPostEvent(this, sbstop);
+                       return;
+               
+               }
+               
+               // Get the list of contact files and process each
+               // one of them.
+               
+               wxString AccountDir = GetAccountDir(SAPiter->second, FALSE);
+               
+               //boostfs::path vcarddir(AccountDir.c_str());
+               //boostfs::directory_iterator dir_end;    
+
+               //boostfs::path vcardfilename;
+               wxString vcardfilenamewxs;
+               wxStringTokenizer vcardfileline;
+               //std::string l;
+               wxString lwxs;
+               wxString setname, setvalue;
+               long ContactIndex = 1;
+               long ContactSeekPoint = 0;
+               wxString vCardFilename;
+               wxString vCardFilenameFull;
+               
+               //if (boostfs::exists(vcarddir)){
+               if (wxDirExists(AccountDir)){
+               
+                       wxDir vcardaccdir(AccountDir);
+               
+                       bool ProcFiles = vcardaccdir.GetFirst(&vCardFilename, wxEmptyString, wxDIR_FILES);
+                       while(ProcFiles){
+                       //for (boostfs::directory_iterator vcarddir_iter(vcarddir);
+                       //     vcarddir_iter != dir_end ; ++vcarddir_iter){
+
+                               if (StopMode == FALSE){
+
+                                       wxCommandEvent sbstop(SE_SBUPDATE);
+
+                                       wxString *SBStopStr = new wxString;
+                                       *SBStopStr = _("Search stopped.");
+
+                                       sbstop.SetClientData(SBStopStr);
+                                       wxPostEvent(this, sbstop);
+                                       return;
+
+                               }
+
+                               if (vCardFilename.Right(4) == wxT(".vcf") || 
+                                       vCardFilename.Right(4) == wxT(".VCF") || 
+                                       vCardFilename.Right(5) == wxT(".vcard") || 
+                                       vCardFilename.Right(5) == wxT(".VCARD")){
+       
+                                       vCard Person;           
+                                       vCardFilenameFull.Append(AccountDir);
+                                       vCardFilenameFull.Append(vCardFilename);
+
+
+                                       Person.LoadFile(vCardFilenameFull);
+
+                                   /*if (boostfs::path(vcarddir_iter->path()).extension() == ".vcf" ||
+                                       boostfs::path(vcarddir_iter->path()).extension() == ".VCF" ||
+                                       boostfs::path(vcarddir_iter->path()).extension() == ".vcard" ||
+                                       boostfs::path(vcarddir_iter->path()).extension() == ".VCARD"){*/
+               
+                                       vcardfilenamewxs = vCardFilenameFull;
+               
+                                       /*vCard Person;
+                                       std::fstream vcardfile;
+
+                                       vcardfilename = boostfs::path(vcarddir_iter->path()).filename();
+                                       vcardfilenamewxs.Append(AccountDir);            
+                                       vcardfilenamewxs.Append(wxString::FromUTF8(vcardfilename.c_str()));         
+           
+                                       // Open the vCard file up and get the setting names and values from the
+                                       // file.
+               
+                                       vcardfile.open(vcardfilenamewxs.mb_str(), std::ios::in);
+               
+                                       while(getline(vcardfile, l)){
+                 
+                                           lwxs.Clear();
+                                           setname.Clear();
+                                           setvalue.Clear();
+                                           lwxs.Append(wxString::FromUTF8(l.c_str()));
+                                           vcardfileline.SetString(lwxs, wxT(":"));
+                                           setname = vcardfileline.GetNextToken();
+                                           setvalue = vcardfileline.GetString();
+                   
+                                           Person.Add(setname, setvalue, TRUE);
+                                   
+                                       }
+               
+                                       vcardfile.close();*/
+
+                                       // Check if file has version 4.0, first name (FN)
+                                       // begin and end vCard portions.
+               
+                                       // Don't search unless these conditions have been met.          
+               
+                                       if (Person.MeetBaseSpecification()){
+               
+                                               // Go through each of the search settings and check
+                                               // if they match with contact details.
+                                       
+                                               // If it matches then add to the search results.
+                                       
+                                               int SelOpt = 0;
+                                               bool chkOpt = FALSE;
+                                               wxString StrOpt;
+                                               int StrOptLen = 0;
+                                               ArrayvCardOutData ArrayData;
+                                               ArrayvCardOutData NicknameArrayData;
+                                               vCardName NameArray = Person.GetName();
+                                               wxString ContactFinalNickname;
+                                               NicknameArrayData = Person.GetByPartial(wxT("NICKNAME"));
+                                       
+                                               if (NicknameArrayData.PropCount != 0){
+                                                       ContactFinalNickname = NicknameArrayData.PropValues[0];
+                                               }               
+                                       
+                                               for (std::map<int, void*>::iterator siter = SearchFrames.begin();
+                                               siter != SearchFrames.end(); siter++){
+                                       
+                                                       // Get the settings from the form.
+                                               
+                                                       XABSearchPanel *XABSPPtr = static_cast<XABSearchPanel*>(siter->second);
+                                               
+                                                       // Get Selected Option and Setting.
+                                               
+                                                       SelOpt = XABSPPtr->GetSelectionOption();
+                                               
+                                                       if (SelOpt < 12){
+                                               
+                                                               StrOpt = XABSPPtr->GetStringSetting();
+                                                               StrOptLen = StrOpt.Len();
+                                               
+                                                               if (SelOpt == 0 || SelOpt == 4 || SelOpt == 8){
+                                               
+                                                                       // Matching string that beings with...
+                                                               
+                                                                       // Double check the std::map inserts for each section.
+                                                               
+                                                                       if (SelOpt == 0){
+                                                               
+                                                                               // Get the forename from the first N.
+                                                               
+                                                                               if (NameArray.Forename.Mid(0, StrOptLen) == StrOpt){
+                                                                       
+                                                                                       if (CheckDuplicate(vcardfilenamewxs,
+                                                                                               SAPiter->second, 
+                                                                                               &SearchResultAccount,
+                                                                                               &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                               SelOpt = 0;
+                                                                                               chkOpt = FALSE;
+                                                                                               StrOpt.Clear();
+                                                                                               StrOptLen = 0;
+                                                                                               ArrayData.PropData.Clear();
+                                                                                               ArrayData.PropValues.Clear();
+                                                                                               ArrayData.PropCount = 0;
+                                                                                               continue;
+                                                                                       
+                                                                                       }
+                                                                       
+                                                                                       SRNotif *sradd = new SRNotif;
+                                                                                       sradd->ContactName = NameArray;
+                                                                                       sradd->ContactNickname = ContactFinalNickname;
+                                                                                       sradd->ContactAccount = SAPiter->second;
+                                                                                       sradd->ContactAccountName = SALiter->second;
+                                                                                       sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                       sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                       SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                       SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                       intResultFound++;
+                                                                       
+                                                                                       wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                       sraddenv.SetClientData(sradd);
+                                                                                       wxPostEvent(this, sraddenv);
+                                                                       
+                                                                               }
+                                                               
+                                                                       } else if (SelOpt == 4){
+                                                               
+                                                                               if (NameArray.Surname.Mid(0, StrOptLen) == StrOpt){
+                                                                       
+                                                                                       if (CheckDuplicate(vcardfilenamewxs,
+                                                                                               SAPiter->second, 
+                                                                                               &SearchResultAccount,
+                                                                                               &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                               SelOpt = 0;
+                                                                                               chkOpt = FALSE;
+                                                                                               StrOpt.Clear();
+                                                                                               StrOptLen = 0;
+                                                                                               ArrayData.PropData.Clear();
+                                                                                               ArrayData.PropValues.Clear();
+                                                                                               ArrayData.PropCount = 0;
+                                                                                               continue;
+                                                                                       
+                                                                                       }
+                                                                       
+                                                                                       SRNotif *sradd = new SRNotif;
+                                                                                       sradd->ContactName = NameArray;
+                                                                                       sradd->ContactNickname = ContactFinalNickname;
+                                                                                       sradd->ContactAccount = SAPiter->second;
+                                                                                       sradd->ContactAccountName = SALiter->second;
+                                                                                       sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                       sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                       SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                       SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                       intResultFound++;
+                                                                       
+                                                                                       wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                       sraddenv.SetClientData(sradd);
+                                                                                       wxPostEvent(this, sraddenv);
+                                                                       
+                                                                               }
+                                                               
+                                                                       } else if (SelOpt == 8){
+                                                               
+                                                                               wxString NicknameData;
+                                                                       
+                                                                               for (int i = 0; i < NicknameArrayData.PropCount; i++){
+                                                                       
+                                                                                       NicknameData = NicknameArrayData.PropValues[i];
+
+                                                                                       if (NicknameData.Mid(0, StrOptLen) == StrOpt){
+                                                                               
+                                                                                               if (CheckDuplicate(vcardfilenamewxs,
+                                                                                                       SAPiter->second, 
+                                                                                                       &SearchResultAccount,
+                                                                                                       &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                                       SelOpt = 0;
+                                                                                                       chkOpt = FALSE;
+                                                                                                       StrOpt.Clear();
+                                                                                                       StrOptLen = 0;
+                                                                                                       ArrayData.PropData.Clear();
+                                                                                                       ArrayData.PropValues.Clear();
+                                                                                                       ArrayData.PropCount = 0;
+                                                                                                       continue;
+                                                                                       
+                                                                                               }
+                                                                               
+                                                                                               SRNotif *sradd = new SRNotif;
+                                                                                               sradd->ContactName = NameArray;
+                                                                                               sradd->ContactNickname = ContactFinalNickname;
+                                                                                               sradd->ContactAccount = SAPiter->second;
+                                                                                               sradd->ContactAccountName = SALiter->second;
+                                                                                               sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                               sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                               SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                               SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                               intResultFound++;
+                                                                       
+                                                                                               wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                               sraddenv.SetClientData(sradd);
+                                                                                               wxPostEvent(this, sraddenv);
+                                                                                       
+                                                                                               break;
+                                                                               
+                                                                                       }
+                                                               
+                                                                               }
+                                                               
+                                                                       }
+                                               
+                                                               } else if (SelOpt == 1 || SelOpt == 5 || SelOpt == 9){
+                                               
+                                                                       // Matching string that ends with...
+                                                               
+                                                                       if (SelOpt == 1){
+                                                               
+                                                                               // Check the forename.
+                                                                       
+                                                                               if (NameArray.Forename.Right(StrOptLen) == StrOpt){
+                                                                       
+                                                                                       if (CheckDuplicate(vcardfilenamewxs,
+                                                                                               SAPiter->second, 
+                                                                                               &SearchResultAccount,
+                                                                                               &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                               SelOpt = 0;
+                                                                                               chkOpt = FALSE;
+                                                                                               StrOpt.Clear();
+                                                                                               StrOptLen = 0;
+                                                                                               ArrayData.PropData.Clear();
+                                                                                               ArrayData.PropValues.Clear();
+                                                                                               ArrayData.PropCount = 0;
+                                                                                               continue;
+                                                                                       
+                                                                                       }
+                                                                       
+                                                                                       SRNotif *sradd = new SRNotif;
+                                                                                       sradd->ContactName = NameArray;
+                                                                                       sradd->ContactNickname = ContactFinalNickname;
+                                                                                       sradd->ContactAccount = SAPiter->second;
+                                                                                       sradd->ContactAccountName = SALiter->second;
+                                                                                       sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                       sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                       SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                       SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                       intResultFound++;
+                                                                       
+                                                                                       wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                       sraddenv.SetClientData(sradd);
+                                                                                       wxPostEvent(this, sraddenv);
+                                                                       
+                                                                               }
+                                                               
+                                                                       } else if (SelOpt == 5){
+                                                               
+                                                                               if (NameArray.Surname.Right(StrOptLen) == StrOpt){
+                                                                       
+                                                                                       if (CheckDuplicate(vcardfilenamewxs,
+                                                                                               SAPiter->second, 
+                                                                                               &SearchResultAccount,
+                                                                                               &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                               SelOpt = 0;
+                                                                                               chkOpt = FALSE;
+                                                                                               StrOpt.Clear();
+                                                                                               StrOptLen = 0;
+                                                                                               ArrayData.PropData.Clear();
+                                                                                               ArrayData.PropValues.Clear();
+                                                                                               ArrayData.PropCount = 0;
+                                                                                               continue;
+                                                                                       
+                                                                                       }
+                                                                       
+                                                                                       SRNotif *sradd = new SRNotif;
+                                                                                       sradd->ContactName = NameArray;
+                                                                                       sradd->ContactNickname = ContactFinalNickname;
+                                                                                       sradd->ContactAccount = SAPiter->second;
+                                                                                       sradd->ContactAccountName = SALiter->second;
+                                                                                       sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                       sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                       SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                       SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                       intResultFound++;
+                                                                       
+                                                                                       wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                       sraddenv.SetClientData(sradd);
+                                                                                       wxPostEvent(this, sraddenv);
+                                                                       
+                                                                               }
+                                                               
+                                                                       } else if (SelOpt == 9){
+                                                               
+                                                                               wxString NicknameData;
+                                                                       
+                                                                               for (int i = 0; i < NicknameArrayData.PropCount; i++){
+                                                                       
+                                                                                       NicknameData = NicknameArrayData.PropValues[i];
+                                                                                       NicknameData.Trim();
+
+                                                                                       if (NicknameData.Right(StrOptLen) == StrOpt){
+                                                                               
+                                                                                               if (CheckDuplicate(vcardfilenamewxs,
+                                                                                                       SAPiter->second, 
+                                                                                                       &SearchResultAccount,
+                                                                                                       &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                                       SelOpt = 0;
+                                                                                                       chkOpt = FALSE;
+                                                                                                       StrOpt.Clear();
+                                                                                                       StrOptLen = 0;
+                                                                                                       ArrayData.PropData.Clear();
+                                                                                                       ArrayData.PropValues.Clear();
+                                                                                                       ArrayData.PropCount = 0;
+                                                                                                       continue;
+                                                                                       
+                                                                                               }
+                                                                               
+                                                                                               SRNotif *sradd = new SRNotif;
+                                                                                               sradd->ContactName = NameArray;
+                                                                                               sradd->ContactNickname = ContactFinalNickname;
+                                                                                               sradd->ContactAccount = SAPiter->second;
+                                                                                               sradd->ContactAccountName = SALiter->second;
+                                                                                               sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                               sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                               SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                               SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                               intResultFound++;
+                                                                       
+                                                                                               wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                               sraddenv.SetClientData(sradd);
+                                                                                               wxPostEvent(this, sraddenv);
+                                                                                       
+                                                                                               break;
+                                                                               
+                                                                                       }
+                                                               
+                                                                               }
+                                                               
+                                                                       }
+                                               
+                                                               } else if (SelOpt == 2 || SelOpt == 6 || SelOpt == 10){
+                                               
+                                                                       // Matching string that contains...
+                                               
+                                                                       if (SelOpt == 2){
+                                                               
+                                                                               if (NameArray.Forename.Find(StrOpt) != wxNOT_FOUND){
+                                                                       
+                                                                                       if (CheckDuplicate(vcardfilenamewxs,
+                                                                                               SAPiter->second, 
+                                                                                               &SearchResultAccount,
+                                                                                               &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                               SelOpt = 0;
+                                                                                               chkOpt = FALSE;
+                                                                                               StrOpt.Clear();
+                                                                                               StrOptLen = 0;
+                                                                                               ArrayData.PropData.Clear();
+                                                                                               ArrayData.PropValues.Clear();
+                                                                                               ArrayData.PropCount = 0;
+                                                                                               continue;
+                                                                                       
+                                                                                       }
+                                                                       
+                                                                                       SRNotif *sradd = new SRNotif;
+                                                                                       sradd->ContactName = NameArray;
+                                                                                       sradd->ContactNickname = ContactFinalNickname;
+                                                                                       sradd->ContactAccount = SAPiter->second;
+                                                                                       sradd->ContactAccountName = SALiter->second;
+                                                                                       sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                       sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                       SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                       SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                       intResultFound++;
+                                                                       
+                                                                                       wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                       sraddenv.SetClientData(sradd);
+                                                                                       wxPostEvent(this, sraddenv);
+                                                                       
+                                                                               }
+                                                               
+                                                                       } else if (SelOpt == 6){
+                                                               
+                                                                               if (NameArray.Surname.Find(StrOpt) != wxNOT_FOUND){
+                                                                       
+                                                                                       if (CheckDuplicate(vcardfilenamewxs,
+                                                                                               SAPiter->second, 
+                                                                                               &SearchResultAccount,
+                                                                                               &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                               SelOpt = 0;
+                                                                                               chkOpt = FALSE;
+                                                                                               StrOpt.Clear();
+                                                                                               StrOptLen = 0;
+                                                                                               ArrayData.PropData.Clear();
+                                                                                               ArrayData.PropValues.Clear();
+                                                                                               ArrayData.PropCount = 0;
+                                                                                               continue;
+                                                                                       
+                                                                                       }
+                                                                       
+                                                                                       SRNotif *sradd = new SRNotif;
+                                                                                       sradd->ContactName = NameArray;
+                                                                                       sradd->ContactNickname = ContactFinalNickname;
+                                                                                       sradd->ContactAccount = SAPiter->second;
+                                                                                       sradd->ContactAccountName = SALiter->second;
+                                                                                       sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                       sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                       SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                       SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                       intResultFound++;
+                                                                       
+                                                                                       wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                       sraddenv.SetClientData(sradd);
+                                                                                       wxPostEvent(this, sraddenv);
+                                                                       
+                                                                               }
+                                                               
+                                                                       } else if (SelOpt == 10){
+                                                               
+                                                                               wxString NicknameData;
+                                                                       
+                                                                               for (int i = 0; i < NicknameArrayData.PropCount; i++){
+                                                                       
+                                                                                       NicknameData = NicknameArrayData.PropValues[i];
+                                                                                       NicknameData.Trim();
+
+                                                                                       if (NicknameData.Find(StrOpt) != wxNOT_FOUND){
+                                                                               
+                                                                                               if (CheckDuplicate(vcardfilenamewxs,
+                                                                                                       SAPiter->second, 
+                                                                                                       &SearchResultAccount,
+                                                                                                       &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                                       SelOpt = 0;
+                                                                                                       chkOpt = FALSE;
+                                                                                                       StrOpt.Clear();
+                                                                                                       StrOptLen = 0;
+                                                                                                       ArrayData.PropData.Clear();
+                                                                                                       ArrayData.PropValues.Clear();
+                                                                                                       ArrayData.PropCount = 0;
+                                                                                                       continue;
+                                                                                       
+                                                                                               }
+                                                                               
+                                                                                               SRNotif *sradd = new SRNotif;
+                                                                                               sradd->ContactName = NameArray;
+                                                                                               sradd->ContactNickname = ContactFinalNickname;
+                                                                                               sradd->ContactAccount = SAPiter->second;
+                                                                                               sradd->ContactAccountName = SALiter->second;
+                                                                                               sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                               sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                               SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                               SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                               intResultFound++;
+                                                                       
+                                                                                               wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                               sraddenv.SetClientData(sradd);
+                                                                                               wxPostEvent(this, sraddenv);
+                                                                                       
+                                                                                               break;
+                                                                               
+                                                                                       }
+                                                               
+                                                                               }
+                                                               
+                                                                       }
+                                               
+                                                               } else if (SelOpt == 3 || SelOpt == 7 || SelOpt == 11){
+                                               
+                                                                       // Matching String that doesn't contain...
+                                               
+                                                                       if (SelOpt == 3){
+                                                               
+                                                                               // Process the nickname data.
+                                                               
+                                                                               if (NameArray.Forename.Find(StrOpt) == wxNOT_FOUND){
+                                                                       
+                                                                                       if (CheckDuplicate(vcardfilenamewxs,
+                                                                                               SAPiter->second, 
+                                                                                               &SearchResultAccount,
+                                                                                               &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                               SelOpt = 0;
+                                                                                               chkOpt = FALSE;
+                                                                                               StrOpt.Clear();
+                                                                                               StrOptLen = 0;
+                                                                                               ArrayData.PropData.Clear();
+                                                                                               ArrayData.PropValues.Clear();
+                                                                                               ArrayData.PropCount = 0;
+                                                                                               continue;
+                                                                                       
+                                                                                       }
+                                                                       
+                                                                                       SRNotif *sradd = new SRNotif;
+                                                                                       sradd->ContactName = NameArray;
+                                                                                       sradd->ContactNickname = ContactFinalNickname;
+                                                                                       sradd->ContactAccount = SAPiter->second;
+                                                                                       sradd->ContactAccountName = SALiter->second;
+                                                                                       sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                       sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                       SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                       SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                       intResultFound++;
+                                                                       
+                                                                                       wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                       sraddenv.SetClientData(sradd);
+                                                                                       wxPostEvent(this, sraddenv);
+                                                                       
+                                                                               }
+                                                               
+                                                                       } else if (SelOpt == 7){
+                                                               
+                                                                               if (!NameArray.Surname.Find(StrOpt) == wxNOT_FOUND){
+                                                                       
+                                                                                       if (CheckDuplicate(vcardfilenamewxs,
+                                                                                               SAPiter->second, 
+                                                                                               &SearchResultAccount,
+                                                                                               &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                               SelOpt = 0;
+                                                                                               chkOpt = FALSE;
+                                                                                               StrOpt.Clear();
+                                                                                               StrOptLen = 0;
+                                                                                               ArrayData.PropData.Clear();
+                                                                                               ArrayData.PropValues.Clear();
+                                                                                               ArrayData.PropCount = 0;
+                                                                                               continue;
+                                                                                       
+                                                                                       }
+                                                                       
+                                                                                       SRNotif *sradd = new SRNotif;
+                                                                                       sradd->ContactName = NameArray;
+                                                                                       sradd->ContactNickname = ContactFinalNickname;
+                                                                                       sradd->ContactAccount = SAPiter->second;
+                                                                                       sradd->ContactAccountName = SALiter->second;
+                                                                                       sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                       sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                       SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                       SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                       intResultFound++;
+                                                                       
+                                                                                       wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                       sraddenv.SetClientData(sradd);
+                                                                                       wxPostEvent(this, sraddenv);
+                                                                       
+                                                                               }
+                                                               
+                                                                       } else if (SelOpt == 11){
+                                                               
+                                                                               wxString NicknameData;
+                                                                       
+                                                                               for (int i = 0; i < NicknameArrayData.PropCount; i++){
+                                                                       
+                                                                                       NicknameData = NicknameArrayData.PropValues[i];
+                                                                                       NicknameData.Trim();
+
+                                                                                       if (NicknameData.Find(StrOpt) == wxNOT_FOUND){
+                                                                               
+                                                                                               if (CheckDuplicate(vcardfilenamewxs,
+                                                                                                       SAPiter->second, 
+                                                                                                       &SearchResultAccount,
+                                                                                                       &SearchResultFilename) == TRUE){
+                                                                               
+                                                                                                       SelOpt = 0;
+                                                                                                       chkOpt = FALSE;
+                                                                                                       StrOpt.Clear();
+                                                                                                       StrOptLen = 0;
+                                                                                                       ArrayData.PropData.Clear();
+                                                                                                       ArrayData.PropValues.Clear();
+                                                                                                       ArrayData.PropCount = 0;
+                                                                                                       continue;
+                                                                                       
+                                                                                               }
+                                                                               
+                                                                                               SRNotif *sradd = new SRNotif;
+                                                                                               sradd->ContactName = NameArray;
+                                                                                               sradd->ContactNickname = ContactFinalNickname;
+                                                                                               sradd->ContactAccount = SAPiter->second;
+                                                                                               sradd->ContactAccountName = SALiter->second;
+                                                                                               sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                                               sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                                               SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                                               SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                                               intResultFound++;
+                                                                       
+                                                                                               wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                                               sraddenv.SetClientData(sradd);
+                                                                                               wxPostEvent(this, sraddenv);
+                                                                                       
+                                                                                               break;
+                                                                               
+                                                                                       }
+                                                               
+                                                                               }
+                                                               
+                                                                       }
+                                               
+                                                               }
+                                               
+                                                       } else {
+
+                                                               chkOpt = XABSPPtr->GetCheckboxSetting();
+                                                       
+                                                               if (SelOpt == 12){
+                                                       
+                                                                       // Search should check if it has a photo or not.
+                                                       
+                                                                       ArrayData = Person.GetByPartial(wxT("PHOTO"));
+                                                       
+                                                                       if ((ArrayData.PropCount >= 1 &&
+                                                                       chkOpt == TRUE) || 
+                                                                       (ArrayData.PropCount == 0 &&
+                                                                       chkOpt == FALSE)){
+                                                               
+                                                                               if (CheckDuplicate(vcardfilenamewxs,
+                                                                                       SAPiter->second, 
+                                                                                       &SearchResultAccount,
+                                                                                       &SearchResultFilename) == TRUE){
+                                                                       
+                                                                                       SelOpt = 0;
+                                                                                       chkOpt = FALSE;
+                                                                                       StrOpt.Clear();
+                                                                                       StrOptLen = 0;
+                                                                                       ArrayData.PropData.Clear();
+                                                                                       ArrayData.PropValues.Clear();
+                                                                                       ArrayData.PropCount = 0;
+                                                                                       continue;
+                                                                               
+                                                                               }
+                                                               
+                                                                               SRNotif *sradd = new SRNotif;
+                                                               
+                                                                               sradd->ContactName = NameArray;
+                                                                               sradd->ContactNickname = ContactFinalNickname;
+                                                                               sradd->ContactAccount = SAPiter->second;
+                                                                               sradd->ContactAccountName = SALiter->second;
+                                                                               sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                               sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                               SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                               SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                               intResultFound++;
+                                                                       
+                                                                               wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                               sraddenv.SetClientData(sradd);
+                                                                               wxPostEvent(this, sraddenv);
+                                                               
+                                                                       }
+                                                       
+                                                               } else if (SelOpt == 13){
+                                                       
+                                                                       // Search should check if it has a logo or not.
+                                                               
+                                                                       ArrayData = Person.GetByPartial(wxT("LOGO"));
+                                                       
+                                                                       if ((ArrayData.PropCount >= 1 &&
+                                                                       chkOpt == TRUE) || 
+                                                                       (ArrayData.PropCount == 0 &&
+                                                                       chkOpt == FALSE)){
+                                                               
+                                                                               if (CheckDuplicate(vcardfilenamewxs,
+                                                                                       SAPiter->second, 
+                                                                                       &SearchResultAccount,
+                                                                                       &SearchResultFilename) == TRUE){
+                                                                       
+                                                                                       SelOpt = 0;
+                                                                                       chkOpt = FALSE;
+                                                                                       StrOpt.Clear();
+                                                                                       StrOptLen = 0;
+                                                                                       ArrayData.PropData.Clear();
+                                                                                       ArrayData.PropValues.Clear();
+                                                                                       ArrayData.PropCount = 0;
+                                                                                       continue;
+                                                                               
+                                                                               }
+                                                               
+                                                                               SRNotif *sradd = new SRNotif;
+                                                               
+                                                                               sradd->ContactName = NameArray;
+                                                                               sradd->ContactNickname = ContactFinalNickname;
+                                                                               sradd->ContactAccount = SAPiter->second;
+                                                                               sradd->ContactAccountName = SALiter->second;
+                                                                               sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                               sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                               SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                               SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                               intResultFound++;
+                                                                       
+                                                                               wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                               sraddenv.SetClientData(sradd);
+                                                                               wxPostEvent(this, sraddenv);
+                                                               
+                                                                       }
+                                                       
+                                                               } else if (SelOpt == 14){
+                                                       
+                                                                       // Search should check if it has sound or not.
+                                                               
+                                                                       ArrayData = Person.GetByPartial(wxT("SOUND"));
+                                                       
+                                                                       if ((ArrayData.PropCount >= 1 &&
+                                                                       chkOpt == TRUE) || 
+                                                                       (ArrayData.PropCount == 0 &&
+                                                                       chkOpt == FALSE)){
+                                                               
+                                                                               if (CheckDuplicate(vcardfilenamewxs,
+                                                                                       SAPiter->second, 
+                                                                                       &SearchResultAccount,
+                                                                                       &SearchResultFilename) == TRUE){
+                                                                       
+                                                                                       SelOpt = 0;
+                                                                                       chkOpt = FALSE;
+                                                                                       StrOpt.Clear();
+                                                                                       StrOptLen = 0;
+                                                                                       ArrayData.PropData.Clear();
+                                                                                       ArrayData.PropValues.Clear();
+                                                                                       ArrayData.PropCount = 0;
+                                                                                       continue;
+                                                                               
+                                                                               }
+                                                               
+                                                                               SRNotif *sradd = new SRNotif;
+                                                               
+                                                                               sradd->ContactName = NameArray;
+                                                                               sradd->ContactNickname = ContactFinalNickname;
+                                                                               sradd->ContactAccount = SAPiter->second;
+                                                                               sradd->ContactAccountName = SALiter->second;
+                                                                               sradd->ContactFullFilename = vcardfilenamewxs;
+                                                                               sradd->SearchResultID = intResultFound;
+                                                                       
+                                                                               SearchResultAccount.insert(std::make_pair(sradd->SearchResultID, sradd->ContactAccount));
+                                                                               SearchResultFilename.insert(std::make_pair(sradd->SearchResultID, sradd->ContactFullFilename));
+                                                                       
+                                                                               intResultFound++;
+                                                                       
+                                                                               wxCommandEvent sraddenv(SE_ADDRESULT);
+                                                                               sraddenv.SetClientData(sradd);
+                                                                               wxPostEvent(this, sraddenv);
+                                                               
+                                                                       }
+                                                       
+                                                               }
+                                               
+                                                       }
+                                       
+                                                       SelOpt = 0;
+                                                       chkOpt = FALSE;
+                                                       StrOpt.Clear();
+                                                       StrOptLen = 0;
+                                                       ArrayData.PropData.Clear();
+                                                       ArrayData.PropValues.Clear();
+                                                       ArrayData.PropCount = 0;
+                                                                                               
+                                               }
+               
+                                       } else {
+               
+                                       }
+               
+                               }
+
+                               vCardFilename.Clear();
+                               vCardFilenameFull.Clear();
+                               ProcFiles = vcardaccdir.GetNext(&vCardFilename);
+         
+                       }
+       
+               } else {
+
+               }
+               
+       }
+       
+       // Finished searching... clear up.
+       
+       wxCommandEvent sbfinstr (SE_SBUPDATE);
+               
+       wxString *SBFinish = new wxString;
+       
+       if (intResultFound == 0){
+       
+               *SBFinish = _("No contacts found.");
+       
+       } else if (intResultFound == 1){
+       
+               *SBFinish = _("1 contact found.");
+       
+       } else {
+       
+               *SBFinish = wxString::Format(wxT("%i"), intResultFound) + _(" contacts found.");
+       
+       }
+               
+       sbfinstr.SetClientData(SBFinish);
+       wxPostEvent(this, sbfinstr);
+
+       wxCommandEvent sbfinish (SE_SEARCHFINISHED);
+       wxPostEvent(this, sbfinish);
+
+}
+
+void frmSearch::SearchContacts( wxCommandEvent& event )
+{
+
+       // Change the button to stop.
+       
+       if (StopMode == FALSE){
+       
+               // Clear the list of search results.
+               
+               lstResults->DeleteAllItems();
+               SearchResultAccount.clear();
+               SearchResultFilename.clear();
+       
+               // Button clicked on as 'Search'.
+       
+               DisableAllSearchSettings(TRUE);
+               StopMode = TRUE;
+               btnSearch->SetLabel(_("Stop")); 
+               
+               // Spawn a thread so that searching can proceed
+               // without blocking the GUI (and allow the
+               // search to stop when needed).
+               
+               std::thread SearchThread(&frmSearch::SearchContactsThread, this);
+               SearchThread.detach();
+       
+       } else {
+       
+               // Button clicked on as 'Stop'.
+       
+               StopMode = FALSE;
+               btnSearch->SetLabel(_("Search"));
+               DisableAllSearchSettings(FALSE);
+       
+       }
+
+}
+
+void frmSearch::ResetContacts( wxCommandEvent& event )
+{
+
+       // Clear all the search settings.
+
+       for (std::map<int,void*>::iterator iter = SearchFrames.begin(); 
+        iter != SearchFrames.end(); ++iter){
+        
+               XABSearchPanel *XABSPPtr;
+        
+               XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+               szrSearch->Detach(XABSPPtr);
+
+               // Remove the frame from the memory and the list.
+       
+               delete XABSPPtr;
+               XABSPPtr = NULL;
+               
+               SearchFrames.erase(iter->first);
+                
+       }
+       
+       // Clear the list of search results.
+       
+       lstResults->DeleteAllItems();
+       
+       // Clear the account settings.
+
+       for (std::map<wxString, bool>::iterator iter = SearchAccounts.begin();
+               iter != SearchAccounts.end(); iter++){
+       
+               iter->second = TRUE;
+               
+       }
+
+       // Add a search settings with the default things.
+       
+       ScrollGen = 0;
+
+       XABSearchPanel *NewPanel = new XABSearchPanel( tabSearch );
+       NewPanel->EnableButtons(TRUE, FALSE);
+       NewPanel->SetupPointers(this);
+       NewPanel->SetupInteger(ScrollGen);
+       szrSearch->Add(NewPanel, 1, wxEXPAND, 0);
+       szrSearch->Fit(tabSearch);
+       SearchFrames.insert(std::make_pair(ScrollGen, NewPanel));
+       ScrollGen++;
+
+}
+
+void frmSearch::AddSearchSetting( wxCommandEvent& event )
+{
+
+       // Add a search setting frame to the list.
+
+       XABSearchPanel *NewPanel = new XABSearchPanel( tabSearch );
+       NewPanel->EnableButtons(TRUE, TRUE);
+       NewPanel->SetupPointers(this);
+       NewPanel->SetupInteger(ScrollGen);
+       szrSearch->Add(NewPanel, 1, wxEXPAND|wxGROW, 5);
+       //szrSearch->Fit(tabSearch);
+       szrSearch->FitInside(tabSearch);
+       szrSearch->Layout();
+       szrSearch->RecalcSizes();
+       tabSearch->Layout();
+       SearchFrames.insert(std::make_pair(ScrollGen, NewPanel));
+       ScrollGen++;
+       
+       // Check if number of search settings is 15 (or over).
+       // If it is, disable the option of adding extra settings
+       // for all frames until one is removed.
+
+       XABSearchPanel *XABSPPtr;
+       
+       if (SearchFrames.size() >= 15){
+       
+               for (std::map<int,void*>::iterator iter = SearchFrames.begin(); 
+               iter != SearchFrames.end(); ++iter){
+        
+                       XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+        
+                       XABSPPtr->EnableButtons(FALSE, TRUE);
+        
+               }
+       
+       } else if (SearchFrames.size() >= 2){
+
+               for (std::map<int,void*>::iterator iter = SearchFrames.begin(); 
+               iter != SearchFrames.end(); ++iter){
+        
+                       XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+        
+                       XABSPPtr->EnableButtons(TRUE, TRUE);
+        
+               }
+       
+       }
+
+       //tabSearch->SetScrollbar(wxVERTICAL, 32768, 25, 32768, false);
+       tabSearch->Update();
+       //tabSearch->ScrollToLine(tabSearch->GetLineCount());
+       
+}
+
+void frmSearch::RemoveSearchSetting( wxCommandEvent& event )
+{
+
+       // Get the integer from the event.
+       
+       std::map<int,void*>::iterator iter;
+       iter = SearchFrames.find(event.GetInt());
+
+       // Remove a search setting frame from the list.
+
+       XABSearchPanel *XABSPPtr;
+       XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+       
+       szrSearch->Detach(XABSPPtr);
+
+       // Remove the frame from the memory and the list.
+
+       SearchFrames.erase(event.GetInt());
+       
+       delete XABSPPtr;
+       XABSPPtr = NULL;
+       
+       //szrSearch->Fit(tabSearch);
+       
+       if (SearchFrames.size() < 15 && SearchFrames.size() > 1){
+       
+               for (std::map<int,void*>::iterator iter = SearchFrames.begin(); 
+               iter != SearchFrames.end(); ++iter){
+        
+                       XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+        
+                       XABSPPtr->EnableButtons(TRUE, TRUE);
+        
+               }
+       
+       } else if (SearchFrames.size() == 1){
+
+               for (std::map<int,void*>::iterator iter = SearchFrames.begin(); 
+               iter != SearchFrames.end(); ++iter){
+        
+                       XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+        
+                       XABSPPtr->EnableButtons(TRUE, FALSE);
+        
+               }
+       
+       }
+
+       szrSearch->FitInside(tabSearch);
+       szrSearch->Layout();
+       szrSearch->RecalcSizes();
+       tabSearch->Layout();
+
+}
+
+void frmSearch::ReloadAccountList( wxCommandEvent& event ){
+
+}
+
+void frmSearch::AddResult( wxCommandEvent& event ){
+
+       SRNotif *srnotif = (SRNotif*)event.GetClientData();
+       
+       // Process Data and add to the list of results.
+       
+       wxListItem item;
+       
+       // Setup the contact name.
+       
+       wxString ContactNameFinal;
+       
+       if (!srnotif->ContactName.Title.IsEmpty()){
+       
+               ContactNameFinal.append(srnotif->ContactName.Title);
+               ContactNameFinal.Trim();
+               ContactNameFinal.append(wxT(" "));
+       
+       }
+       
+       if (!srnotif->ContactName.Forename.IsEmpty()){
+       
+               ContactNameFinal.append(srnotif->ContactName.Forename);
+               ContactNameFinal.Trim();
+               ContactNameFinal.append(wxT(" "));
+       
+       }
+
+       if (!srnotif->ContactName.Surname.IsEmpty()){
+       
+               ContactNameFinal.append(srnotif->ContactName.Surname);
+               ContactNameFinal.Trim();
+               ContactNameFinal.append(wxT(" "));
+       
+       }
+       
+       if (!srnotif->ContactName.Suffix.IsEmpty()){
+       
+               ContactNameFinal.append(srnotif->ContactName.Suffix);
+               ContactNameFinal.Trim();
+       
+       }
+       
+       item.SetId(0);
+       item.SetText(ContactNameFinal);
+       item.SetData(srnotif->SearchResultID);
+       
+       long ListCtrlIndex = lstResults->InsertItem(item);
+       
+       //SearchResultAccount.insert(std::make_pair(srnotif->SearchResultID, srnotif->ContactAccount));
+       //SearchResultFilename.insert(std::make_pair(srnotif->SearchResultID, srnotif->ContactFullFilename));
+       
+       srnotif->ContactNickname.Trim();
+
+       lstResults->SetItem(ListCtrlIndex, 1, srnotif->ContactNickname);
+       lstResults->SetItem(ListCtrlIndex, 2, srnotif->ContactAccountName);     
+       
+       delete srnotif;
+       srnotif = NULL;
+
+}
+
+void frmSearch::SearchBarUpdate( wxCommandEvent& event ){
+
+       wxString *SBData = (wxString*)event.GetClientData();
+
+       stbBottom->SetStatusText(*SBData, 0);
+       
+       delete SBData;
+       SBData = NULL;
+
+}
+
+void frmSearch::SearchFinished( wxCommandEvent& event ){
+
+       StopMode = FALSE;
+       btnSearch->SetLabel(_("Search"));
+       DisableAllSearchSettings(FALSE);
+
+}
+
+void frmSearch::DisableAllSearchSettings(bool Enable){
+
+       for (std::map<int, void*>::iterator siter = SearchFrames.begin();
+               siter != SearchFrames.end(); siter++){
+       
+               XABSearchPanel *XABSPPtr = static_cast<XABSearchPanel*>(siter->second);
+               
+               if (Enable == FALSE){
+               
+                       wxCommandEvent enboxes(XABSP_ENABLECONTROLS);
+                       wxPostEvent(XABSPPtr, enboxes);
+               
+               } else if (Enable == TRUE){
+               
+                       wxCommandEvent disboxes(XABSP_DISABLECONTROLS);
+                       wxPostEvent(XABSPPtr, disboxes);
+               
+               }
+               
+       }
+
+}
+
+void frmSearch::OpenContact( wxCommandEvent& event ){
+       
+       // Check if a contact has been selected.
+
+       long intSelected = -1;
+       int intSelectedData = 0;
+       long intContactSeekNum = -1;
+
+       intSelected = lstResults->GetNextItem(intSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       if (intSelected == -1){
+               return;
+       }
+
+       intContactSeekNum = lstResults->GetItemData(intSelected);
+
+       UCNotif *uc = new UCNotif;
+
+       uc->ContactAccount = SearchResultAccount[intContactSeekNum];
+       uc->ContactFilename = SearchResultFilename[intContactSeekNum];
+
+       wxCommandEvent oc(CE_OPENCONTACT);
+       oc.SetClientData(uc);
+       wxPostEvent(this->GetParent(), oc);
+
+}
+
+void frmSearch::EditContact( wxCommandEvent& event ){
+
+       // Check if a contact has been selected.
+
+       long intSelected = -1;
+       int intSelectedData = 0;
+       long intContactSeekNum = -1;
+
+       intSelected = lstResults->GetNextItem(intSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       if (intSelected == -1){
+               return;
+       }
+
+       intContactSeekNum = lstResults->GetItemData(intSelected);
+
+       UCNotif *uc = new UCNotif;
+
+       uc->ContactAccount = SearchResultAccount[intContactSeekNum];
+       uc->ContactFilename = SearchResultFilename[intContactSeekNum];
+
+       wxCommandEvent ec(CE_EDITCONTACT);
+       ec.SetClientData(uc);
+       ec.SetInt(1);
+       wxPostEvent(this->GetParent(), ec);
+
+}
+
+void frmSearch::RevealContact( wxCommandEvent& event ){
+
+       // Check if a contact has been selected.
+
+       long intSelected = -1;
+       int intSelectedData = 0;
+       long intContactSeekNum = -1;
+
+       intSelected = lstResults->GetNextItem(intSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       if (intSelected == -1){
+               return;
+       }
+
+       intContactSeekNum = lstResults->GetItemData(intSelected);
+
+       UCNotif *uc = new UCNotif;
+
+       uc->ContactAccount = SearchResultAccount[intContactSeekNum];
+       uc->ContactFilename = SearchResultFilename[intContactSeekNum];
+
+       wxCommandEvent rc(CE_REVEALCONTACT);
+       rc.SetClientData(uc);
+       rc.SetInt(1);
+       wxPostEvent(this->GetParent(), rc);
+
+}
+
+void frmSearch::CloseWindow( wxCloseEvent& event ){
+
+       // Hide the window so users don't panic
+       // whilst clearing up.
+
+       this->Hide();
+       
+       // Clear up.
+       
+       for (std::map<int,void*>::iterator iter = SearchFrames.begin(); 
+        iter != SearchFrames.end(); ++iter){
+        
+               XABSearchPanel *XABSPPtr;
+        
+               XABSPPtr = static_cast<XABSearchPanel*>(iter->second);
+               szrSearch->Detach(XABSPPtr);
+
+               // Remove the frame from the memory and the list.
+       
+               delete XABSPPtr;
+               XABSPPtr = NULL;
+                
+       }
+
+       SearchFrames.clear();
+       
+       // Close window.
+       
+       WindowData *WData = new WindowData;
+
+       WData->DataType = 2;
+       WData->WindowPointer = this;
+       WData->WindowID = SearchUID;
+
+       wxCommandEvent delevent(WINDOW_CLOSE);
+       delevent.SetClientData(WData);
+       wxPostEvent(GetParent(), delevent);
+               
+       wxCommandEvent rs(CE_REMOVESEARCH);
+       wxPostEvent(this, rs);
+       
+       WData = NULL;
+       
+       this->Destroy();
+
+}
+
+void frmSearch::CloseWindow( wxCommandEvent& event ){
+
+       this->Close();
+
+}
+
+void frmSearch::UpdateResult( wxCommandEvent& event ){
+
+       UCNotif *uc = (UCNotif*)event.GetClientData();
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
+               
+       for (;;){
+
+               longSelected = lstResults->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_DONTCARE);
+               
+               if (longSelected == -1){
+               
+                       break;
+               
+               }
+               
+               // Get the filename/ID information.
+               
+               intSelectedData = lstResults->GetItemData(longSelected);
+               
+               if (uc->ContactFilename == SearchResultFilename[intSelectedData]){
+               
+                       // Process the contact name
+               
+                       wxString ContactNameFinal;
+                       
+                       if (!uc->ContactNameArray.Title.IsEmpty()){
+       
+                               ContactNameFinal.append(uc->ContactNameArray.Title);
+                               ContactNameFinal.Trim();
+                               ContactNameFinal.append(wxT(" "));
+       
+                       }
+       
+                       if (!uc->ContactNameArray.Forename.IsEmpty()){
+       
+                               ContactNameFinal.append(uc->ContactNameArray.Forename);
+                               ContactNameFinal.Trim();
+                               ContactNameFinal.append(wxT(" "));
+       
+                       }
+
+                       if (!uc->ContactNameArray.Surname.IsEmpty()){
+       
+                               ContactNameFinal.append(uc->ContactNameArray.Surname);
+                               ContactNameFinal.Trim();
+                               ContactNameFinal.append(wxT(" "));
+       
+                       }
+       
+                       if (!uc->ContactNameArray.Suffix.IsEmpty()){
+       
+                               ContactNameFinal.append(uc->ContactNameArray.Suffix);
+                               ContactNameFinal.Trim();
+       
+                       }
+               
+                       lstResults->SetItem(longSelected, 0, ContactNameFinal);
+                       lstResults->SetItem(longSelected, 1, uc->ContactNickname);
+               
+               }
+       
+       }
+       
+       delete uc;
+       uc = NULL;
+
+}
+
+bool frmSearch::CheckDuplicate(wxString Filename,
+       wxString Account, 
+       std::map<long,wxString> *SRAcc,
+       std::map<long,wxString> *SRFN){
+       
+       std::map<long,wxString>::iterator fniter;
+       
+       // Check comparison code.
+       
+       for (std::map<long,wxString>::iterator aciter = SRAcc->begin();
+               aciter != SRAcc->end(); aciter++){
+               
+               fniter = SRFN->find(aciter->first);
+
+               if (Filename == fniter->second && 
+                       Account == aciter->second){
+               
+                       return TRUE;
+                       
+               }
+               
+       }
+       
+       return FALSE;
+       
+}
+
+void frmSearch::DeleteResult(wxCommandEvent &event){
+
+       UCNotif *uc = (UCNotif*)event.GetClientData();
+
+       long longSelected = -1;
+       int intSelectedData = 0;
+               
+       for (;;){
+
+               longSelected = lstResults->GetNextItem(longSelected, 
+                       wxLIST_NEXT_ALL,
+                       wxLIST_STATE_DONTCARE);
+               
+               if (longSelected == -1){
+               
+                       break;
+               
+               }
+               
+               // Get the filename/ID information.
+               
+               intSelectedData = lstResults->GetItemData(longSelected);
+               
+               if (uc->ContactFilename == SearchResultFilename[intSelectedData]){
+               
+                       // Delete the result from the search list and
+                       // update the total search results.
+
+                       // Remove DeleteResultEvent and find out where the uc
+                       // data is still being used as it crashes on delete. 
+
+                       lstResults->DeleteItem(longSelected);
+                       
+                       // Update the number of search results.
+                                               
+                       wxCommandEvent sbu(SE_SBUPDATE);
+                       wxString *SBUpdate = new wxString;
+
+                       // Get the number of results.
+
+                       int intResultFound = lstResults->GetItemCount();
+       
+                       // Prepare the status bar message.
+       
+                       if (intResultFound == 0){
+       
+                               *SBUpdate = _("No contacts found.");
+       
+                       } else if (intResultFound == 1){
+       
+                               *SBUpdate = _("1 contact found.");
+       
+                       } else {
+       
+                               *SBUpdate = wxString::Format(wxT("%i"), intResultFound) + _(" contacts found.");
+       
+                       }
+               
+                       sbu.SetClientData(SBUpdate);
+                       wxPostEvent(this, sbu);
+               
+                       break;
+               
+               }
+       
+       }
+
+       delete uc;
+       uc = NULL;
+
+}
+
+void frmSearch::SetUID(int UID){
+
+       SearchUID = UID;
+
+}
\ No newline at end of file
diff --git a/source/frmSearch.h b/source/frmSearch.h
new file mode 100644 (file)
index 0000000..4153719
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef __frmSearch__
+#define __frmSearch__
+
+/**
+@file
+Subclass of frmSearchADT, which is generated by wxFormBuilder.
+*/
+
+#include "AppXestiaAddrBk.h"
+#include "vcard/vcard.h"
+
+#include <map>
+
+
+//// end generated include
+
+DECLARE_EVENT_TYPE(SE_ADDSEARCHSETTING, wxID_ANY)
+DECLARE_EVENT_TYPE(SE_REMOVESEARCHSETTING, wxID_ANY)
+DECLARE_EVENT_TYPE(SE_RELOADACCOUNTS, wxID_ANY)
+DECLARE_EVENT_TYPE(SE_ADDRESULT, wxID_ANY)
+DECLARE_EVENT_TYPE(SE_SBUPDATE, wxID_ANY)
+DECLARE_EVENT_TYPE(SE_SEARCHFINISHED, wxID_ANY)
+DECLARE_EVENT_TYPE(SE_UPDATERESULT, wxID_ANY)
+DECLARE_EVENT_TYPE(SE_DELETERESULT, wxID_ANY)
+
+struct SRNotif{
+       vCardName ContactName;
+       wxString ContactNickname;
+       wxString ContactAccount;
+       wxString ContactAccountName;
+       wxString ContactFullFilename;
+       long SearchResultID;
+};
+
+/** Implementing frmSearchADT */
+class frmSearch : public frmSearchADT
+{
+       private:
+               std::map<int, void*> SearchFrames;
+               std::map<wxString, bool> SearchAccounts;
+               std::map<wxString, wxString> SearchAccountsNames;
+               std::map<wxString, wxString> SearchAccountsPaths;
+               std::map<long, wxString> SearchResultAccount;
+               std::map<long, wxString> SearchResultFilename;
+               int ScrollGen = 0;
+               int SearchUID = 0;
+               bool SearchEnabled = FALSE;
+               bool StopMode = FALSE;
+               bool CheckDuplicate(wxString Filename, 
+                       wxString Account,
+                       std::map<long,wxString> *SRAcc,
+                       std::map<long,wxString> *SRFN);
+       protected:
+               // Handlers for frmSearchADT events.
+               void SelectAccounts( wxCommandEvent& event );
+               void SearchContacts( wxCommandEvent& event );
+               void ResetContacts( wxCommandEvent& event );
+               void AddSearchSetting( wxCommandEvent& event );
+               void RemoveSearchSetting( wxCommandEvent& event );
+               void ReloadAccountList( wxCommandEvent& event );
+               void AddResult( wxCommandEvent& event );
+               void SearchBarUpdate( wxCommandEvent& event );
+               void SearchFinished( wxCommandEvent& event );
+               void SearchContactsThread();
+               void DisableAllSearchSettings(bool Enable);
+               void OpenContact( wxCommandEvent& event );
+               void EditContact( wxCommandEvent& event );
+               void RevealContact( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+               void UpdateResult( wxCommandEvent& event );
+               void DeleteResult( wxCommandEvent& event );
+               void CloseWindow( wxCloseEvent& event );
+       public:
+               /** Constructor */
+               frmSearch( wxWindow* parent );
+               void SetUID(int UID);
+               DECLARE_EVENT_TABLE()
+       //// end generated class members
+       
+};
+
+#endif // __frmSearch__
diff --git a/source/frmUpdate.cpp b/source/frmUpdate.cpp
new file mode 100644 (file)
index 0000000..ded6244
--- /dev/null
@@ -0,0 +1,188 @@
+#include <wx/wx.h>
+#include <curl/curl.h>
+
+#include "frmUpdate.h"
+#include "version.h"
+
+size_t WritebackFuncUpdate(char *ptr, size_t size, size_t nmemb, wxString *stream){
+       
+       wxString Data;
+       //wxString *PageInput;
+       Data = wxString::FromUTF8((char *)ptr);
+       
+       stream->Append(Data);
+       
+       return size * nmemb;
+
+}
+
+frmUpdate::frmUpdate( wxWindow* parent )
+:
+frmUpdateADT( parent )
+{
+
+}
+
+void frmUpdate::CloseWindow( wxCommandEvent& event )
+{
+
+       this->Close();
+
+}
+
+void frmUpdate::FetchData()
+{
+
+       // Connect to the update server and grab the
+       // build type information.
+
+       CURL *conn;
+       conn = curl_easy_init();
+       CURLcode conncode;
+
+       wxString PageData;
+       wxString PageHeader;
+
+       wxString UpdateAddress = wxT("http://update.xestia.co.uk/");
+       UpdateAddress.Append(XSDAB_SOURCE);
+
+       curl_easy_setopt(conn, CURLOPT_URL, (const char*)UpdateAddress.mb_str(wxConvUTF8));
+       curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 0);
+       curl_easy_setopt(conn, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
+       curl_easy_setopt(conn, CURLOPT_TIMEOUT, 3);
+       curl_easy_setopt(conn, CURLOPT_FAILONERROR, TRUE);
+       curl_easy_setopt(conn, CURLOPT_USERAGENT, XSDAB_USERAGENT);
+       curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFuncUpdate);
+       curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);
+       curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);
+       curl_easy_setopt(conn, CURLOPT_NOSIGNAL, 1);
+       curl_easy_setopt(conn, CURLOPT_NOPROGRESS, 1);
+
+       conncode = (curl_easy_perform(conn));
+
+       // Split the data received.
+       
+       PageData.Trim();
+       
+       wxString SupportCode = PageData.Left(1);
+       wxString VersionCode = PageData.Mid(1, wxString::npos);
+       wxString RunningVer = wxString::Format(wxT("%s"), XSDAB_VERSION);
+       double VersionCodeDouble;
+       double CurrentVerDouble;
+
+       // Setup the running version.
+       
+       lblRunningVer->SetLabel(RunningVer);
+
+       // Setup the build type.
+
+       wxString BuildType = wxT(XSDAB_SOURCE);
+       lblBuildType->SetLabel(BuildType);
+       
+       if (conncode != CURLE_OK){
+       
+               lblAvailableVer->SetLabel(wxT("Unable to determine."));
+               curl_easy_cleanup(conn);
+               curl_global_cleanup();
+
+               lblUpdateMessage->SetLabel(wxT("An error has occurred. The error message is: ") + wxString::Format(wxT("%s"), curl_easy_strerror(conncode)));
+
+               return;                 
+       
+       }
+
+       // Cleanup connections.
+
+       curl_easy_cleanup(conn);
+       curl_global_cleanup();
+
+       // Setup the avaiable version.
+
+       RunningVer.ToDouble(&CurrentVerDouble);
+
+       if (VersionCode.ToDouble(&VersionCodeDouble)){
+
+               lblAvailableVer->SetLabel(VersionCode);
+
+       } else {
+       
+               lblAvailableVer->SetLabel(wxT("Unable to determine."));
+
+               lblUpdateMessage->SetLabel(wxT("Cannot determine the available version at this time. Please retry in a while."));
+
+               return;
+       
+       }
+       
+       // Set a message.
+       
+       if (BuildType == wxT("source")){
+       
+               // Write message about getting the update
+               // from Xestia Gelforn.
+               
+               if (CurrentVerDouble >= VersionCodeDouble){
+               
+                       lblUpdateMessage->SetLabel(wxT("Xestia Address Book is up to date.\n\nFor a small yearly cost, prebuilt packages and support is available from Xestia PREMIUM (https://premium.xestia.co.uk)."));
+               
+               } else {
+               
+                       lblUpdateMessage->SetLabel(wxT("An updated version of Xestia Address Book is available from Xestia Gelforn (https://gelforn.xestia.co.uk/).\n\nFor a small yearly cost, prebuilt packages and support is available from Xestia PREMIUM (https://premium.xestia.co.uk)."));
+       
+               }
+               
+       } else {
+       
+               btnVisitGelforn->Hide();
+       
+               // Display message based on type returned.
+               
+               if (CurrentVerDouble >= VersionCodeDouble){
+               
+                       wxString UpdateMessage = wxT("Xestia Address Book is up to date.\n\n");
+               
+                       if (SupportCode == wxT("U")){
+
+                               UpdateMessage.Append(wxT("An updated version of Xestia Address Book is available from Xestia PREMIUM (https://premium.xestia.co.uk) but will require your operating system to be updated."));
+               
+                       } else if (SupportCode == wxT("X")){
+
+                               UpdateMessage.Append(wxT("Xestia Address Book is no longer supported on the operating system you are using. Please visit the Xestia PREMIUM website (https://premium.xestia.co.uk) for a list of supported operating systems."));
+               
+                       }
+               
+                       lblUpdateMessage->SetLabel(UpdateMessage);
+               
+                       
+               
+               }
+               
+               if (SupportCode == wxT("S")){
+
+                       lblUpdateMessage->SetLabel(wxT("An updated version of Xestia Address Book for your system is available from Xestia PREMIUM (https://premium.xestia.co.uk)"));
+               
+               } else if (SupportCode == wxT("U")){
+
+                       lblUpdateMessage->SetLabel(wxT("An updated version of Xestia Address Book is available from Xestia PREMIUM (https://premium.xestia.co.uk) but will require your operating system to be updated."));
+               
+               } else if (SupportCode == wxT("X")){
+
+                       lblUpdateMessage->SetLabel(wxT("Xestia Address Book is no longer supported on the operating system you are using. Please visit the Xestia PREMIUM website (https://premium.xestia.co.uk) for a list of supported operating systems."));
+               
+               }
+       
+       }
+
+}
+
+void frmUpdate::VisitGelforn( wxCommandEvent &event ){
+
+       wxLaunchDefaultBrowser(wxT("https://gelforn.xestia.co.uk/"));
+
+}
+
+void frmUpdate::VisitPREMIUM( wxCommandEvent &event ){
+
+       wxLaunchDefaultBrowser(wxT("https://premium.xestia.co.uk/"));
+
+}
\ No newline at end of file
diff --git a/source/frmUpdate.h b/source/frmUpdate.h
new file mode 100644 (file)
index 0000000..49faee6
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __frmUpdate__
+#define __frmUpdate__
+
+/**
+@file
+Subclass of frmUpdateADT, which is generated by wxFormBuilder.
+*/
+#include <wx/wx.h>
+#include "AppXestiaAddrBk.h"
+
+//// end generated include
+
+/** Implementing frmUpdateADT */
+class frmUpdate : public frmUpdateADT
+{
+
+       protected:
+               // Handlers for frmUpdateADT events.
+               void CloseWindow( wxCommandEvent& event );
+               void VisitGelforn( wxCommandEvent& event );
+               void VisitPREMIUM( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmUpdate( wxWindow* parent );
+               void FetchData();
+       //// end generated class members
+       
+};
+
+#endif // __frmUpdate__
diff --git a/source/import/frmImportContacts.cpp b/source/import/frmImportContacts.cpp
new file mode 100644 (file)
index 0000000..2c2e19e
--- /dev/null
@@ -0,0 +1,241 @@
+#include <wx/icon.h>
+#include <wx/mstream.h>
+
+#include "frmImportContacts.h"
+#include "import-struct.h"
+#include "../common/preferences.h"
+#include "../bitmaps.h"
+#include "../vcard/vcard.h"
+#include "../common/dirs.h"
+
+frmImportContacts::frmImportContacts( wxWindow* parent )
+:
+frmImportContactsADT( parent )
+{
+
+       // Setup the account selection control.
+       
+       AccControl->SetPopupMaxHeight(175);
+       AccControl->SetPopupControl(treAccounts);
+       
+       szrAccount->Insert(1, AccControl, 1, wxEXPAND, 5);
+       szrAccount->Layout();
+
+       wxMemoryInputStream astream(icons_accinet_png, sizeof(icons_accinet_png));
+       wxMemoryInputStream bstream(icons_acclocal_png, sizeof(icons_acclocal_png));
+       wxMemoryInputStream cstream(icons_accgroup_png, sizeof(icons_accgroup_png));
+
+       wxImage icons_accinet_png(astream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccInet(icons_accinet_png, -1);
+       wxIcon wxIAccInet;
+       wxIAccInet.CopyFromBitmap(AccInet);
+
+       wxImage icons_acclocal_png(bstream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccNIcon(icons_acclocal_png, -1);
+       wxIcon wxIAccNIcon;
+       wxIAccNIcon.CopyFromBitmap(AccNIcon);
+
+       wxImage icons_accgroup_png(cstream, wxBITMAP_TYPE_PNG);
+       wxBitmap AccGrp(icons_accgroup_png, -1);
+       wxIcon wxIAccGrp;
+       wxIAccGrp.CopyFromBitmap(AccGrp);
+       
+       AccountID = AccImgList->Add(wxIAccNIcon);
+       AccountNetID = AccImgList->Add(wxIAccInet);
+       AccountGrpID = AccImgList->Add(wxIAccGrp);
+       
+       treAccounts->AssignImageList(AccImgList);
+
+    // Load the preferences.
+    
+       wxString preffilename = GetUserPrefDir();
+    
+    XABPreferences preferences(preffilename);
+
+    // Setup the main window position (if needed).
+    
+    bool SaveWindowPos = preferences.GetBoolData(wxT("SaveWindowPosition"));
+    bool HideLocalABs = preferences.GetBoolData(wxT("HideLocalAddressBooks"));
+    
+    if (SaveWindowPos == TRUE){
+    
+       this->SetSize(preferences.GetMainWindowData());
+    
+    }
+    
+    treAccounts->DeleteAllItems();
+    
+    wxTreeItemId RootNode = treAccounts->AddRoot(wxT("Root Item"));
+
+    /*    
+    for (int i = (preferences.accounts.GetCount() - 1); i > 0; --i){
+       treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i));
+    }
+    */
+
+    wxString AccDir;
+    wxString AccDirFull;
+    wxString AccDirFullSfx;
+    wxString AccName;
+    wxString AccDirFinal;
+    wxTreeItemId AccountTreeId;
+    wxTreeItemId GroupTreeId;
+    int intGroupID = 0;
+
+    for (int i = 0; i < preferences.accounts.GetCount(); i++){
+    
+       if ((preferences.accounts.GetAccountType(i) == wxT("Local") || 
+               preferences.accounts.GetAccountType(i) == wxT("local")) && HideLocalABs == TRUE){
+               
+               continue;
+               
+       }
+    
+       AccDir = preferences.accounts.GetAccountDirectory(i);
+       AccDirFull = preferences.accounts.GetAccountDirectory(i);
+       AccDirFull.Trim();
+       AccDirFull.Append(wxT("."));
+       AccDirFullSfx.Append(preferences.accounts.GetAccountType(i));
+       AccDirFullSfx.LowerCase();
+       AccDirFullSfx.Trim();
+       AccDirFull.Append(AccDirFullSfx);
+       AccName = preferences.accounts.GetAccountName(i);
+       AccName.Trim();
+       AccountAccDirList.insert(std::make_pair(i, AccDirFull));
+       
+       if (preferences.accounts.GetAccountType(i) == wxT("CardDAV") ||
+       preferences.accounts.GetAccountType(i) == wxT("carddav")){
+       
+               AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountNetID, -1);
+       
+       } else {
+               
+               AccountTreeId = treAccounts->AppendItem(RootNode, preferences.accounts.GetAccountName(i), AccountID, -1);
+       
+       }
+       
+       // Clearup for next account.
+       
+       AccDir.clear();
+       AccDirFull.clear();
+       AccDirFullSfx.clear();
+       AccDirFinal.clear();
+       AccName.clear();
+       
+    }
+
+}
+
+void frmImportContacts::GetResult()
+{
+
+}
+
+void frmImportContacts::GetContacts()
+{
+
+}
+
+void frmImportContacts::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmImportContacts::ImportContacts( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmImportContacts::SetupList(std::map<int,ImportDataContact>* ContactDataInc)
+{
+        
+        // Go through the list and setup each contact for the list.
+        
+        int Seek = 0;
+        
+        for (std::map<int,ImportDataContact>::iterator iter = ContactDataInc->begin();
+               iter != ContactDataInc->end(); iter++){
+
+               ImportDataContact *Moo = &iter->second;
+        
+               vCard ContactLoad;
+               ContactLoad.LoadString(Moo->ContactData);
+
+               // Alter the data on this. (FN instead of Name?)
+
+               wxString ContactName = ContactLoad.Get(wxT("FN"));
+               iter->second.FriendlyName = ContactName;
+
+               lstContacts->InsertItems(1, &ContactName, Seek);
+        
+               Seek++;
+        
+        }
+
+       for (int i = 0; i < lstContacts->GetCount(); i++){
+       
+               lstContacts->Check(i, TRUE);
+       
+       }
+        
+}
+
+void frmImportContacts::GetResults(std::map<int,ImportDataContact>* ContactDataInc)
+{
+       
+       int ItemIndex = 0;
+               
+       for (std::map<int, ImportDataContact>::iterator DataIter = ContactDataInc->begin(); 
+               DataIter != ContactDataInc->end(); ++DataIter){
+
+               if (lstContacts->IsChecked(ItemIndex) == FALSE){
+
+                       DataIter->second.ContactSelected = FALSE;
+
+               }
+               
+               ItemIndex++;
+       
+       }
+
+}
+
+wxString frmImportContacts::GetAccount()
+{
+
+       wxString preffilename = GetUserPrefDir();
+
+       XABPreferences preferences(preffilename);
+
+       wxString AccountName;
+       
+       //XABPrefAccounts prefaccounts;
+       
+       wxTreeItemIdValue cookie;
+       wxTreeItemId next = treAccounts->GetRootItem();
+
+       wxTreeItemId selectedChild = treAccounts->GetSelection();
+       wxTreeItemId nextChild;
+
+       for (int i = 0; i < preferences.accounts.GetCount(); i++){
+
+               if (!nextChild){
+                       nextChild = treAccounts->GetFirstChild(next, cookie);
+               } else {
+                       nextChild = treAccounts->GetNextSibling(nextChild);
+               }
+               
+               if (nextChild == selectedChild){
+       
+                       std::map<int, wxString>::iterator AccNameIter = AccountAccDirList.find(i);
+                       
+                       AccountName = AccNameIter->second;
+       
+               }
+       
+
+       }
+       
+       return AccountName;
+
+}
\ No newline at end of file
diff --git a/source/import/frmImportContacts.h b/source/import/frmImportContacts.h
new file mode 100644 (file)
index 0000000..4ee0fcf
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef __frmImportContacts__
+#define __frmImportContacts__
+
+/**
+@file
+Subclass of frmImportContactsADT, which is generated by wxFormBuilder.
+*/
+
+#include <map>
+
+#include "../AppXestiaAddrBk.h"
+#include "../widgets/XABAccountView.h"
+#include "import-struct.h"
+
+//// end generated include
+
+/** Implementing frmImportContactsADT */
+class frmImportContacts : public frmImportContactsADT
+{
+       private:
+               wxComboCtrl* AccControl = new wxComboCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxCB_READONLY|wxEXPAND);
+               XABAccountView* treAccounts = new XABAccountView();
+               std::map<int, wxString> AccountAccDirList;
+               wxImageList *AccImgList =  new wxImageList(16,16,true);
+               int AccountID;
+               int AccountNetID;
+               int AccountGrpID;
+       protected:
+               // Handlers for frmImportContactsADT events.
+               void CloseWindow( wxCommandEvent& event );
+               void ImportContacts( wxCommandEvent& event );
+               void GetResult();
+               void GetContacts();
+       public:
+               /** Constructor */
+               frmImportContacts( wxWindow* parent );
+               void SetupList(std::map<int,ImportDataContact>* ContactDataInc);
+               void GetResults(std::map<int,ImportDataContact>* ContactDataInc);
+               wxString GetAccount();
+       //// end generated class members
+       
+};
+
+#endif // __frmImportContacts__
diff --git a/source/import/frmImportResults.cpp b/source/import/frmImportResults.cpp
new file mode 100644 (file)
index 0000000..3dc09d4
--- /dev/null
@@ -0,0 +1,54 @@
+#include <map>
+#include <wx/wx.h>
+#include <wx/clipbrd.h>
+#include <wx/dataobj.h>
+
+#include "frmImportResults.h"
+
+frmImportResults::frmImportResults( wxWindow* parent )
+:
+frmImportResultsADT( parent )
+{
+
+}
+
+void frmImportResults::CopyClipboard( wxCommandEvent& event )
+{
+
+       if (wxTheClipboard->Open()){
+       
+               wxTextDataObject ResultData;
+       
+               ResultData.SetText(txtResults->GetValue());
+       
+               wxTheClipboard->SetData(&ResultData);
+               wxTheClipboard->Close();
+       
+               wxMessageBox(_("The results have been copied to the clipboard."), _("Results copied to clipboard"));
+       
+       } else {
+       
+               wxMessageBox(_("The results have not been copied to the clipboard due to an error."), _("Results not copied to clipboard"));
+       
+       }
+       
+}
+
+void frmImportResults::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
+
+void frmImportResults::LoadData(std::map<int,wxString> *ResultDataInc)
+{
+
+       wxString ResultDataText;
+       
+       for (std::map<int,wxString>::iterator iter = ResultDataInc->begin(); 
+       iter != ResultDataInc->end(); iter++){
+       
+               ResultDataText.Append(iter->second + wxT("\n"));
+       
+       }
+
+}
\ No newline at end of file
diff --git a/source/import/frmImportResults.h b/source/import/frmImportResults.h
new file mode 100644 (file)
index 0000000..aa7bbab
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef __frmImportResults__
+#define __frmImportResults__
+
+/**
+@file
+Subclass of frmImportResultsADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+
+//// end generated include
+
+/** Implementing frmImportResultsADT */
+class frmImportResults : public frmImportResultsADT
+{
+       protected:
+               // Handlers for frmImportResultsADT events.
+               void CopyClipboard( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmImportResults( wxWindow* parent );
+               void LoadData(std::map<int,wxString> *ResultDataInc);
+       //// end generated class members
+       
+};
+
+#endif // __frmImportResults__
diff --git a/source/import/import-struct.h b/source/import/import-struct.h
new file mode 100644 (file)
index 0000000..b35b335
--- /dev/null
@@ -0,0 +1,15 @@
+#include <wx/wx.h>
+
+#ifndef IMPORT_STRUCT_H
+#define IMPORT_STRUCT_H
+
+struct ImportDataContact{
+       wxString Filename;
+       int FilenameIndex;
+       bool ContactSelected = TRUE;
+       wxString ContactData;
+       wxString UIDValue;
+       wxString FriendlyName;
+};
+
+#endif
\ No newline at end of file
diff --git a/source/import/import-vcard3.cpp b/source/import/import-vcard3.cpp
new file mode 100644 (file)
index 0000000..0151004
--- /dev/null
@@ -0,0 +1,65 @@
+#include <map>
+#include <wx/wx.h>
+
+#include "../vcard/vcard.h"
+#include "../vcard/vcard34conv.h"
+#include "import-struct.h"
+
+std::map<int,ImportDataContact> ImportVCard3(wxArrayString *FileListInc){
+
+       std::map<int,ImportDataContact> FinalData;
+       
+       // Go through each of the file names, load them up and collect the
+       // contact information.
+       
+       std::map<int,wxString>* CardData;
+       
+       for (int i = 0; i < FileListInc->GetCount(); i++){
+       
+               vCard ContactData;
+               
+               ContactData.LoadFile(FileListInc->Item(i));
+               
+               CardData = ContactData.GetAllCards();
+               int FileIndex = 0;
+               
+               for(std::map<int,wxString>::iterator iter = CardData->begin(); 
+                       iter != CardData->end();
+                       iter++){
+               
+                       // Check if contact really is a vCard 4.0 contact.
+                       
+                       vCard ContactCheck;
+                       ContactCheck.LoadString(iter->second);
+                       
+                       wxString ContactVer = ContactCheck.Get(wxT("VERSION"));
+                       
+                       if (ContactVer != wxT("3.0")){
+                       
+                               continue;
+                       
+                       }
+               
+                       wxString ContactDatav3;
+                       vCard ContactDatav4;
+                       
+                       vCard34Conv vCardConvObj;               
+                       vCardConvObj.ConvertToV4(&ContactDatav3, &ContactDatav4);
+               
+                       // Convert data from vCard 3.0 to vCard 4.0
+               
+                       ImportDataContact SelectedContact;
+                       SelectedContact.Filename = FileListInc->Item(i);
+                       SelectedContact.FilenameIndex = FileIndex;
+                       SelectedContact.ContactData = ContactDatav4.WriteString();
+                       SelectedContact.UIDValue = ContactDatav4.Get(wxT("UID"));
+               
+                       FileIndex++;
+               
+               }
+               
+       }
+       
+       return FinalData;
+
+} 
diff --git a/source/import/import-vcard3.h b/source/import/import-vcard3.h
new file mode 100644 (file)
index 0000000..8106092
--- /dev/null
@@ -0,0 +1,11 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#include "import-struct.h"
+
+#ifndef IMPORT_VCARD3_H
+#define IMPORT_VCARD3_H
+
+std::map<int,ImportDataContact> ImportVCard3(wxArrayString *FileListInc);
+
+#endif 
diff --git a/source/import/import-vcard4.cpp b/source/import/import-vcard4.cpp
new file mode 100644 (file)
index 0000000..fc28b6f
--- /dev/null
@@ -0,0 +1,61 @@
+#include <map>
+#include <wx/wx.h>
+
+#include "../vcard/vcard.h"
+#include "import-struct.h"
+
+std::map<int,ImportDataContact> ImportVCard4(wxArrayString *FileListInc){
+
+       std::map<int,ImportDataContact> FinalData;
+       
+       // Go through each of the file names, load them up and collect the
+       // contact information.
+       
+       std::map<int,wxString>* CardData;
+       
+       for (int i = 0; i < FileListInc->GetCount(); i++){
+       
+               vCard ContactData;
+               
+               ContactData.LoadFile(FileListInc->Item(i));
+               
+               CardData = ContactData.GetAllCards();
+               int FileIndex = 0;
+               
+               for(std::map<int,wxString>::iterator iter = CardData->begin(); 
+                       iter != CardData->end();
+                       iter++){
+               
+                       // Check if contact really is a vCard 4.0 contact.
+                       
+                       vCard ContactCheck;
+                       ContactCheck.LoadString(iter->second);
+                       
+                       wxString ContactVer = ContactCheck.Get(wxT("VERSION"));
+       
+                       if (ContactVer != wxT("4.0")){
+                       
+                               continue;
+                       
+                       }
+                       
+                       // If contact is vCard 4.0 then continue otherwise
+                       // go to the next contact.
+               
+                       ImportDataContact SelectedContact;
+                       SelectedContact.Filename = FileListInc->Item(i);
+                       SelectedContact.FilenameIndex = FileIndex;
+                       SelectedContact.ContactData = iter->second;
+                       SelectedContact.UIDValue = ContactCheck.Get(wxT("UID"));
+               
+                       FinalData.insert(std::make_pair(FileIndex, SelectedContact));
+               
+                       FileIndex++;
+
+               }
+               
+       }
+       
+       return FinalData;
+
+} 
diff --git a/source/import/import-vcard4.h b/source/import/import-vcard4.h
new file mode 100644 (file)
index 0000000..c6f0abb
--- /dev/null
@@ -0,0 +1,12 @@
+#include <iostream>
+#include <wx/wx.h>
+#include <map>
+
+#include "import.h"
+#include "import-struct.h"
+
+#ifndef IMPORT_VCARD4_H
+#define IMPORT_VCARD4_H
+
+std::map<int,ImportDataContact> ImportVCard4(wxArrayString *FileListInc);
+#endif 
diff --git a/source/import/import.cpp b/source/import/import.cpp
new file mode 100644 (file)
index 0000000..416a39f
--- /dev/null
@@ -0,0 +1,302 @@
+#include <wx/filedlg.h>
+#include <wx/filename.h>
+#include <wx/regex.h>
+#include <wx/tokenzr.h>
+#include <wx/ffile.h>
+#include <map>
+
+#include "import-vcard3.h"
+#include "import-vcard4.h"
+#include "import-struct.h"
+#include "../frmMain.h"
+#include "frmImportContacts.h"
+#include "frmImportResults.h"
+#include "../common/uuid.h"
+#include "../common/dirs.h"
+
+void ImportRun(frmMain *frmMainPtrInc){
+
+       // Bring up a dialog selecting one or multiple 
+       // files for processing based on type.
+
+       struct ImportResultData{
+               
+       };
+
+       frmMainPtrInc->PauseAllTimers();
+
+       wxString FileTypes;
+       
+       long ContactsExported = 0;
+       long ContactsCollected = 0;
+       int ExportType = 0;
+       int ExportCount = 0;
+       wxString FinalFilename;
+       wxArrayString SelectedFileList;
+       wxString SelectedFileDirectory;
+       wxString AccountName;
+       int ImportErrorCount = 0;
+       
+       std::map<int,wxString> ResultData;
+       
+       FileTypes.Append(wxT("vCard 4.0 Contact(s) (*.vcf)"));
+       FileTypes.Append(wxT("|*.vcf|"));
+       FileTypes.Append(wxT("vCard 3.0 Contact(s) (*.vcf)"));
+       FileTypes.Append(wxT("|*.vcf"));
+
+       // Open up the dialog to export file data.
+       
+       wxFileDialog ExportDlg(frmMainPtrInc, wxT("Import Contacts"), wxT(""), wxT(""),
+               FileTypes, wxFD_OPEN|wxFD_MULTIPLE);
+       
+       if (ExportDlg.ShowModal() == wxID_CANCEL){
+       
+               frmMainPtrInc->ResumeAllTimers();
+               return;
+       
+       }
+
+       // Get the list of filenames.
+
+       ExportDlg.GetPaths(SelectedFileList);
+       
+       // Find which data type is being used.
+               
+       ExportType = ExportDlg.GetFilterIndex();
+
+       std::map<int, ImportDataContact> ContactData;
+
+       if (ExportType == 0){
+       
+               ContactData = ImportVCard4(&SelectedFileList);
+       
+               //ImportVCard4(DirMode, FinalFilename, FileListInc, &ExportCount);
+       
+       }
+       
+       // vCard 3.0 export
+       
+       if (ExportType == 1){
+       
+               ContactData = ImportVCard3(&SelectedFileList);
+       
+               //ImportVCard3(DirMode, FinalFilename, FileListInc, &ExportCount);
+
+       }
+
+       // Check how many contacts are in the set. If zero, throw an error
+       // message and exit.
+       
+       if (ContactData.size() == 0){
+       
+               wxMessageBox(_("No valid contacts within the file(s) selected."), _("Unable to import"));
+       
+               return;
+       
+       }
+
+       // Show a form to let the user select the
+       // contacts needed to import and which account
+       // they go to.
+
+       frmImportContacts *frmIC = new frmImportContacts(frmMainPtrInc);
+       
+       frmIC->SetupList(&ContactData);
+       frmIC->ShowModal();
+       frmIC->GetResults(&ContactData);
+       AccountName = frmIC->GetAccount();
+
+       // Import the contacts into the selected account.
+
+       int ImportCount = 0;
+       int ImportSeek = 0;
+       
+       // Setup the directory for writing into.
+       
+       wxString AccountDirFinal = GetAccountDir(AccountName, FALSE);
+       
+       wxString GeneratedFilename;
+       wxString OutputFilename;
+       wxString UIDValueFinal;
+       wxString UIDToken;
+       bool UIDFilterOK = FALSE;
+       int FilterCount = 0;
+       
+       GeneratedFilename.Clear();
+       OutputFilename.Clear();
+
+       static wxString BadCharList = wxFileName::GetForbiddenChars(wxPATH_NATIVE);
+       wxString BadCharListFinal;
+       BadCharListFinal.Append(wxT("["));
+       BadCharListFinal.Append(BadCharList);
+       BadCharListFinal.Append(wxT("]"));
+       
+       wxRegEx BadCharRex;
+       BadCharRex.Compile(BadCharListFinal);
+       
+       for(std::map<int,ImportDataContact>::iterator iter = ContactData.begin();
+       iter != ContactData.end(); iter++){
+       
+               if (iter->second.ContactSelected == TRUE){
+               
+                       // Workout the file name.
+                       // Get the UID value and check if it is empty.
+                       // If it isn't empty, check it can be used for a valid
+                       // filename other wise generate a file name for the purposes
+                       // of storage.
+                       
+                       // Filter UID incase writing outside the
+                       // directory is attempted.
+                       
+#if defined(__HAIKU__)
+    
+    //preffilename = wxT("noo");
+
+#elif defined(__WIN32__)
+
+                       wxStringTokenizer UIDValueCheck(iter->second.UIDValue, wxT("\\"));
+                       while (UIDValueCheck.HasMoreTokens()){
+                               UIDValueCheck.GetNextToken();
+                               FilterCount++;
+                       }
+
+#else
+
+                       wxStringTokenizer UIDValueCheck(iter->second.UIDValue, wxT("/"));
+                       while (UIDValueCheck.HasMoreTokens()){
+                               UIDValueCheck.GetNextToken();
+                               FilterCount++;
+                       }
+       
+#endif
+                       
+                       if (FilterCount == 1){
+                               UIDFilterOK = TRUE;
+                       }
+                       
+                       if (BadCharRex.Matches(iter->second.UIDValue) && UIDFilterOK == TRUE){
+                       
+                               bool NewFileExists = TRUE;
+                               
+                               while (NewFileExists){
+                               
+                                       // Generate the UID and check if it exists.
+                                       
+                                       wxString CheckFilename;
+                                       
+                                       UIDToken = GenerateUUID();
+                                       
+                                       CheckFilename.Append(AccountDirFinal);
+                                       CheckFilename.Append(UIDToken);
+                                       CheckFilename.Append(wxT(".vcf"));
+                               
+                                       if (!wxFileExists(CheckFilename)){
+                                       
+                                               NewFileExists = FALSE;
+                                       
+                                       }
+                               
+                               }
+                       
+                       } else {
+                       
+                               UIDToken = iter->second.UIDValue;
+                       
+                       }
+                       
+                       //GenerateUUID();
+                       
+                       /*if (iter->second.ContactSelected.UIDValue.IsEmpty()){
+                       
+                       
+                       
+                       }*/
+               
+                       // Check if the file exists in the directory already.
+               
+                       OutputFilename.Append(AccountDirFinal);
+                       OutputFilename.Append(wxT("/"));
+                       OutputFilename.Append(UIDToken);
+                       OutputFilename.Append(wxT(".vcf"));
+               
+                       if(wxFileExists(OutputFilename)){
+                       
+                               // File already exists so mark as an error.
+                               
+                               ResultData.insert(std::make_pair(ImportSeek, wxString::Format(_("Unable to import '%s'(%s): "), iter->second.FriendlyName, UIDToken)));
+                               ImportErrorCount++;
+                               ImportSeek++;
+                               GeneratedFilename.Clear();
+                               OutputFilename.Clear();
+                               UIDValueFinal.Clear();
+                               UIDFilterOK = FALSE;
+                               FilterCount = 0;
+                               continue;
+                       
+                       } else {
+                       
+                               // Write to the file.
+                               
+                               wxFFile OutputFile;
+                       
+#if wxABI_VERSION < 20900
+                               OutputFile.Open(OutputFilename, wxT("w"));
+#else
+                               OutputFile.Open(OutputFilename, wxT("w"));
+#endif
+                       
+                               OutputFile.Write(iter->second.ContactData, wxConvAuto());
+                       
+                               OutputFile.Close();
+                               
+                               ResultData.insert(std::make_pair(ImportSeek, wxString::Format(_("Contact '%s'(%s) was successfully imported."))));
+                       
+                       }
+                       
+                       // Check if there is a UID value set. If there is not a UID
+                       // value set then generate a new one.
+               
+                       ImportCount++;
+               
+                       ImportSeek++;
+               
+                       GeneratedFilename.Clear();
+                       OutputFilename.Clear();
+                       UIDValueFinal.Clear();
+                       UIDToken.Clear();
+                       UIDFilterOK = FALSE;
+                       FilterCount = 0;
+               
+               }
+       
+       }
+
+       // Check if the import error count is more than 0. If it is, then
+       // display the results dialog.
+       
+       frmImportResults *frmIR = new frmImportResults(frmMainPtrInc);
+       frmIR->LoadData(&ResultData);
+       frmIR->ShowModal();
+               
+       delete frmIR;
+       frmIR = NULL;
+
+       delete frmIC;
+       frmIC = NULL;
+       
+       // Syncronise the account which the contacts got imported to.
+       
+       wxString *AccNamePostEventPtr = new wxString;
+       
+       wxCommandEvent accevent(SYNCACCOUNT);
+       accevent.SetClientData(AccNamePostEventPtr);
+       
+       wxPostEvent(frmMainPtrInc, accevent);
+       
+       //wxPostEvent
+       
+       // Resume the timers.
+       
+       frmMainPtrInc->ResumeAllTimers();
+
+}
diff --git a/source/import/import.h b/source/import/import.h
new file mode 100644 (file)
index 0000000..e459a62
--- /dev/null
@@ -0,0 +1,11 @@
+#include <iostream>
+#include <wx/wx.h>
+
+#include "../frmMain.h"
+
+#ifndef IMPORT_IMPORT_H
+#define IMPORT_IMPORT_H
+
+void ImportRun(frmMain *frmMainPtrInc);
+
+#endif 
diff --git a/source/main.cpp b/source/main.cpp
new file mode 100644 (file)
index 0000000..ed4e656
--- /dev/null
@@ -0,0 +1,141 @@
+#include <stdlib.h>
+
+#include <wx/wx.h>
+#include <wx/icon.h>
+#include <wx/mstream.h>
+#include <wx/cmdline.h>
+#include <wx/wxprec.h>
+#include <wx/filename.h>
+#include <curl/curl.h>
+
+#include "contacteditor/frmContactEditor.h"
+#include "frmMain.h"
+#include "bitmaps.h"
+#include "version.h"
+#include "frmActivityMgr.h"
+#include "common/timers.h"
+#include "common/defaults.h"
+
+class XestiaABApp: public wxApp
+{
+    virtual bool OnInit();
+};
+
+IMPLEMENT_APP(XestiaABApp);
+
+bool XestiaABApp::OnInit()
+{
+
+       // Check that on Win32 systems that.
+
+#if defined(__WIN32__)
+
+#include <xestiacc.h>
+
+       XCCVer XCCRequiredVer;
+       XCCRequiredVer.MajorVer = 1;
+       XCCRequiredVer.MinorVer = 0;
+
+       XCCVer XCCRetrievedVer = GetXCCLibraryVersion();
+
+       if (XCCRetrievedVer < XCCRequiredVer){
+               MessageBox(0, L"The version of Xestia Common Components installed is an older version not supported by this version of Xestia Address Book.\n\nPlease visit http://xestia.co.uk/commoncomponents and follow the page instructions to download the version required.", L"Older version of Xestia Common Components installed", MB_OK|MB_ICONSTOP);
+               this->Exit();
+       }
+
+#endif
+
+    static const wxCmdLineEntryDesc g_cmdLineDesc [] =
+    {
+         { wxCMD_LINE_SWITCH, wxT_2("h"), wxT_2("help"), wxTRANSLATE("Displays help on command line parameters"),
+             wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
+         { wxCMD_LINE_OPTION, wxT_2("e"), wxT_2("edit"), wxTRANSLATE("Edit a vCard 4.0 formatted contact"),
+             wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, 
+         { wxCMD_LINE_SWITCH, wxT_2("s"), wxT_2("search"), wxTRANSLATE("Display the search window instead of starting normally"),
+             wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
+         { wxCMD_LINE_SWITCH, wxT_2("v"), wxT_2("version"), wxTRANSLATE("Displays version number"),
+             wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL },
+         { wxCMD_LINE_NONE }
+    };
+
+    wxString wxSContactFilename;
+    wxCmdLineParser XABArgs (g_cmdLineDesc, argc, argv);
+    XABArgs.Parse();
+    
+    if (XABArgs.Found(wxT("h"))){
+    
+       return false;
+    
+    }
+    
+    if (XABArgs.Found(wxT("v"))){
+    
+       exit(0);
+    
+    }
+    
+    wxInitAllImageHandlers();
+    
+    if (XABArgs.Found(wxT("e"), &wxSContactFilename)){
+       
+       // Check if the filename exists.
+       
+       //wxImage::AddHandler(new wxPNGHandler);
+
+       wxFileName contactfile(wxSContactFilename);
+       
+       if (!contactfile.FileExists()){
+       
+               return false;
+       
+       }
+       
+       curl_global_init(CURL_GLOBAL_ALL);
+       
+       wxMemoryInputStream istream(bigimgs_contactpersonicon48_png, sizeof(bigimgs_contactpersonicon48_png));
+       wxImage bigimgs_contactpersonicon48i(istream, wxBITMAP_TYPE_PNG);
+       wxBitmap contacticonbmp(bigimgs_contactpersonicon48i, -1);
+       wxIcon contacticon;
+       contacticon.CopyFromBitmap(contacticonbmp); 
+
+       // Get the filename of the selected contact.
+
+       frmContactEditor *ContactEditor = new frmContactEditor( NULL );
+       ContactEditor->SetupHeaders();    
+       ContactEditor->LoadContact(wxSContactFilename);
+       //ContactEditor->SetupContact(ActiveAccount);
+       ContactEditor->SetIcon(contacticon);
+       ContactEditor->Show(true);
+       
+       SetTopWindow(ContactEditor);
+       
+       return true;
+    
+    }
+    
+    // Setup default settings and accounts if they don't exist.
+    
+    SetupDirectories();
+    SetupDefaultSettings();
+    SetupDefaultAddressBook();
+
+    //wxImage::AddHandler(new wxPNGHandler); 
+    wxMemoryInputStream istream(bigimgs_appicon48_png, sizeof(bigimgs_appicon_png));
+    wxImage bigimgs_appicon48i(istream, wxBITMAP_TYPE_PNG);
+    wxBitmap appiconbmp(bigimgs_appicon48i, -1);    
+    wxIcon appicon;
+    
+    appicon.CopyFromBitmap(appiconbmp);
+    frmMain *frame = new frmMain( NULL );
+       frame->Show(true);
+    frmActivityMgr *frameActMgr = new frmActivityMgr ( frame );
+    frame->SetupPointers(frameActMgr);
+    frame->SetupForm();
+    frame->SetIcon(appicon);
+   
+    SetTopWindow(frame);
+   
+    return true;
+
+}
+
diff --git a/source/photo.log b/source/photo.log
new file mode 100644 (file)
index 0000000..22427e9
--- /dev/null
@@ -0,0 +1,16 @@
+GNU gdb (GDB; openSUSE 13.2) 7.8
+Copyright (C) 2014 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+This is free software: you are free to change and redistribute it.
+There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
+and "show warranty" for details.
+This GDB was configured as "x86_64-suse-linux".
+Type "show configuration" for configuration details.
+For bug reporting instructions, please see:
+<http://bugs.opensuse.org/>.
+Find the GDB manual and other documentation resources online at:
+<http://www.gnu.org/software/gdb/documentation/>.
+For help, type "help".
+Type "apropos word" to search for commands related to "word"...
+Reading symbols from ./xestiaab...done.
+(gdb) ^C(gdb) ^C(gdb) quit
diff --git a/source/search/XABSearchPanel.cpp b/source/search/XABSearchPanel.cpp
new file mode 100644 (file)
index 0000000..d15fc36
--- /dev/null
@@ -0,0 +1,176 @@
+#include "XABSearchPanel.h"
+#include "../bitmaps.h"
+
+#include <wx/mstream.h>
+
+
+
+DEFINE_EVENT_TYPE(XABSP_ENABLECONTROLS);
+DEFINE_EVENT_TYPE(XABSP_DISABLECONTROLS);
+
+BEGIN_EVENT_TABLE(XABSearchPanel, wxPanel)
+  EVT_COMMAND(wxID_ANY, XABSP_ENABLECONTROLS, XABSearchPanel::EnableControls)
+  EVT_COMMAND(wxID_ANY, XABSP_DISABLECONTROLS, XABSearchPanel::DisableControls)
+END_EVENT_TABLE()
+
+XABSearchPanel::XABSearchPanel( wxWindow* parent )
+:
+XABSearchPanelADT( parent )
+{
+
+       // Setup the images for the add and delete buttons.
+       
+       wxMemoryInputStream astream(buttons_add_png, sizeof(buttons_add_png));
+       wxImage buttons_add_png(astream, wxBITMAP_TYPE_PNG);
+       wxBitmap addbmp(buttons_add_png, -1);
+       
+       wxMemoryInputStream bstream(buttons_minus_png, sizeof(buttons_minus_png));
+       wxImage buttons_minus_png(bstream, wxBITMAP_TYPE_PNG);
+       wxBitmap delbmp(buttons_minus_png, -1);
+
+       btnAdd->SetBitmapLabel(addbmp);
+       btnDelete->SetBitmapLabel(delbmp);
+
+       // Insert the options into the combo box.
+       
+       choOption->Append(_("Forename begins with"));
+       choOption->Append(_("Forename ends with"));
+       choOption->Append(_("Forename contains"));
+       choOption->Append(_("Forename doesn't contain"));
+       choOption->Append(_("Surname begins with"));
+       choOption->Append(_("Surname ends with"));
+       choOption->Append(_("Surname contains"));
+       choOption->Append(_("Surname doesn't contain"));
+       choOption->Append(_("Nickname begins with"));
+       choOption->Append(_("Nickname ends with"));
+       choOption->Append(_("Nickname contains"));
+       choOption->Append(_("Nickname doesn't contain"));
+       choOption->Append(_("Does/Doesn't have photo"));
+       choOption->Append(_("Does/Doesn't have logo"));
+       choOption->Append(_("Does/Doesn't have sound"));
+       
+       chkActive->Hide();
+       chkActive->SetValue(FALSE);
+       txtSearch->Show();
+       szrSSet->Layout();
+       
+       choOption->SetSelection(0);
+
+}
+
+void XABSearchPanel::UpdateOptions( wxCommandEvent& event )
+{
+       
+       if (choOption->GetSelection() == 12 ||
+       choOption->GetSelection() == 13 ||
+       choOption->GetSelection() == 14 ){
+       
+               chkActive->Show();
+               txtSearch->Hide();
+               txtSearch->Clear();
+               szrSSet->Layout();
+       
+       } else {
+       
+               chkActive->Hide();
+               chkActive->SetValue(FALSE);
+               txtSearch->Show();
+               szrSSet->Layout();
+       
+       }
+       
+}
+
+void XABSearchPanel::AddSearchWidget( wxCommandEvent& event )
+{
+
+       frmSearch *SCHWin = static_cast<frmSearch*>(SCHWinPtr);
+
+       wxCommandEvent eventsend(SE_ADDSEARCHSETTING);
+       wxPostEvent(SCHWin, eventsend);
+
+}
+
+void XABSearchPanel::RemoveSearchWidget( wxCommandEvent& event )
+{
+
+       frmSearch *SCHWin = static_cast<frmSearch*>(SCHWinPtr);
+       
+       wxCommandEvent eventsend(SE_REMOVESEARCHSETTING);
+       eventsend.SetInt(this->GetInteger());
+       wxPostEvent(SCHWin, eventsend);
+       
+}
+
+void XABSearchPanel::EnableButtons(bool AddButton, bool DeleteButton)
+{
+
+       if (AddButton == TRUE){
+               btnAdd->Enable();
+       } else {
+               btnAdd->Disable();
+       }
+       
+       if (DeleteButton == TRUE){
+               btnDelete->Enable();
+       } else {
+               btnDelete->Disable();
+       }
+
+}
+
+void XABSearchPanel::SetupPointers(void* SCHWinPtrInc){
+
+       SCHWinPtr = SCHWinPtrInc;
+
+}
+
+void XABSearchPanel::SetupInteger(int IntInc){
+
+       SCHInt = IntInc;
+
+}
+
+int XABSearchPanel::GetInteger(){
+
+       return SCHInt;
+
+}
+
+void XABSearchPanel::DisableControls(wxCommandEvent &event){
+
+       choOption->Disable();
+       chkActive->Disable();
+       txtSearch->Disable();
+       btnAdd->Disable();
+       btnDelete->Disable();
+
+}
+
+void XABSearchPanel::EnableControls(wxCommandEvent &event){
+
+       choOption->Enable();
+       chkActive->Enable();
+       txtSearch->Enable();
+       btnAdd->Enable();
+       btnDelete->Enable();
+
+}
+
+int XABSearchPanel::GetSelectionOption(){
+
+       return choOption->GetSelection();
+
+}
+
+bool XABSearchPanel::GetCheckboxSetting(){
+
+       return chkActive->IsChecked();
+
+}
+
+wxString XABSearchPanel::GetStringSetting(){
+
+       return txtSearch->GetValue();
+
+}
\ No newline at end of file
diff --git a/source/search/XABSearchPanel.h b/source/search/XABSearchPanel.h
new file mode 100644 (file)
index 0000000..8a3f4ae
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef __XABSearchPanel__
+#define __XABSearchPanel__
+
+/**
+@file
+Subclass of XABSearchPanelADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+#include "../frmSearch.h"
+
+//// end generated include
+
+DECLARE_EVENT_TYPE(XABSP_ENABLECONTROLS, wxID_ANY)
+DECLARE_EVENT_TYPE(XABSP_DISABLECONTROLS, wxID_ANY)
+
+/** Implementing XABSearchPanelADT */
+class XABSearchPanel : public XABSearchPanelADT
+{
+       private:
+               void *SCHWinPtr;
+               int SCHInt;
+       protected:
+               // Handlers for XABSearchPanelADT events.
+               void UpdateOptions( wxCommandEvent& event );
+               void AddSearchWidget( wxCommandEvent& event );
+               void RemoveSearchWidget( wxCommandEvent& event );
+               void DisableControls(wxCommandEvent &event);
+               void EnableControls(wxCommandEvent &event);
+       public:
+               /** Constructor */
+               XABSearchPanel( wxWindow* parent );
+               
+               void EnableButtons(bool AddButton, bool DeleteButton);
+               void SetupPointers(void* SCHWinPtrInc);
+               void SetupInteger(int IntInc);
+               int GetInteger();
+               int GetSelectionOption();
+               bool GetCheckboxSetting();
+               wxString GetStringSetting();
+               
+               DECLARE_EVENT_TABLE()
+       //// end generated class members
+       
+};
+
+#endif // __XABSearchPanel__
diff --git a/source/search/frmSearchAccounts.cpp b/source/search/frmSearchAccounts.cpp
new file mode 100644 (file)
index 0000000..be4b9fe
--- /dev/null
@@ -0,0 +1,99 @@
+#include "frmSearchAccounts.h"
+#include "../frmMain.h"
+
+frmSearchAccounts::frmSearchAccounts( wxWindow* parent )
+:
+frmSearchAccountsADT( parent )
+{
+
+}
+
+frmSearchAccounts::~frmSearchAccounts(){       
+
+}
+
+void frmSearchAccounts::LoadSearchAccounts(std::map<wxString, bool> *SearchAccounts,
+       std::map<wxString, wxString> *SearchAccountsList)
+{
+
+       SAPtr = SearchAccounts;
+       SALPtr = SearchAccountsList;
+       std::map<wxString, wxString>::iterator SALiter;
+       wxString AccDir;
+       
+       // Load the search accounts into the Checklist.
+       
+       wxArrayString AccList;
+       
+       for (std::map<wxString, bool>::iterator iter = SAPtr->begin(); 
+               iter != SAPtr->end(); ++iter){
+               
+               SALiter = SALPtr->find(iter->first);
+               
+               AccList.Add(SALiter->second, 1);
+               
+       }
+
+       chlAccounts->Append(AccList);
+       //chlAccounts->SetSelection(wxNOT_FOUND);
+
+       // Check if each account is selected.
+       
+       for (int i = 0; i < chlAccounts->GetCount(); i++){
+       
+               AccDir = chlAccounts->GetString(i);
+               
+               for (std::map<wxString, bool>::iterator iter = SAPtr->begin(); 
+                       iter != SAPtr->end(); ++iter){
+               
+                       SALiter = SALPtr->find(iter->first);
+
+                       if (AccDir == SALiter->second){
+                       
+                               chlAccounts->Check(i, iter->second);
+                       
+                       }
+               
+               }
+       
+       }
+
+}
+
+void frmSearchAccounts::UpdateSelectedAccounts( wxCommandEvent& event )
+{
+
+       // Process each of the items in the Checklist box.
+       // Compare each with the ones in the std::map
+       // and adjust the bool value accordingly.
+       
+       wxString AccDir;
+       std::map<wxString, wxString>::iterator SALiter;
+       
+       for (int i = 0; i < chlAccounts->GetCount(); i++){
+       
+               AccDir = chlAccounts->GetString(i);
+               
+               for (std::map<wxString, bool>::iterator iter = SAPtr->begin(); 
+                       iter != SAPtr->end(); ++iter){
+               
+                       SALiter = SALPtr->find(iter->first);
+
+                       if (AccDir == SALiter->second){
+                       
+                               iter->second = chlAccounts->IsChecked(i);
+                       
+                       }
+               
+               }
+       
+       }
+       
+       this->Close();
+
+}
+
+void frmSearchAccounts::CloseWindow( wxCommandEvent& event )
+{
+       this->Close();
+}
diff --git a/source/search/frmSearchAccounts.h b/source/search/frmSearchAccounts.h
new file mode 100644 (file)
index 0000000..76f54f0
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef __frmSearchAccounts__
+#define __frmSearchAccounts__
+
+/**
+@file
+Subclass of frmSearchAccountsADT, which is generated by wxFormBuilder.
+*/
+
+#include "../AppXestiaAddrBk.h"
+#include <map>
+
+//// end generated include
+
+/** Implementing frmSearchAccountsADT */
+class frmSearchAccounts : public frmSearchAccountsADT
+{
+       private:
+               std::map<wxString,bool> *SAPtr;
+               std::map<wxString,wxString> *SALPtr;
+       protected:
+               // Handlers for frmSearchAccountsADT events.
+               void UpdateSelectedAccounts( wxCommandEvent& event );
+               void CloseWindow( wxCommandEvent& event );
+       public:
+               /** Constructor */
+               frmSearchAccounts( wxWindow* parent );
+               ~frmSearchAccounts();
+               void LoadSearchAccounts(std::map<wxString, bool> *SearchAccounts,
+                       std::map<wxString, wxString> *SearchAccountsList);
+       //// end generated class members
+       
+};
+
+#endif // __frmSearchAccounts__
diff --git a/source/tools/bitmapcode.cpp b/source/tools/bitmapcode.cpp
new file mode 100644 (file)
index 0000000..f7eecc1
--- /dev/null
@@ -0,0 +1,563 @@
+//-------------------------------------------------------------------
+// bitmapcode: Helper application which coverts PNG files into
+// C++ code outputting binary code.
+//
+// This application also is a simple test if the wxWidgets & Boost
+// header files and library files are there.
+//
+// This file is licenced under the GNU General Public License
+// version 3 only. (GPLv3 only).
+//-------------------------------------------------------------------
+
+#include <iostream>
+#include <fstream>
+#include <iomanip>
+#include <ios>
+
+/*#include <boost/filesystem.hpp>
+#include <boost/filesystem/path.hpp>
+#include <boost/filesystem/fstream.hpp>*/
+#include <wx/wx.h>
+#include <wx/dir.h>
+#include <wx/tokenzr.h>
+#include <string.h>
+
+using namespace std;
+//namespace boostfs = boost::filesystem;
+
+void CreateCPPFile(wxString dirfilename, wxString PNGFilename, int* counter)
+{
+//-------------------------------------------------------------------
+// CreateCPPFile: Create a CPP file from the filename given.
+//
+// dirfilename wxString of the directory name.
+// filename    wxString of the filename.
+// counter     Pointer to a integer counter.
+//-------------------------------------------------------------------
+    char pngfile_char;
+    int pageseek = 0;
+    /*boostfs::path PNGFilename(filename.c_str());
+    boostfs::path CPPFilename = PNGFilename;
+    boostfs::path CPPFilenameOnly(CPPFilename.filename());
+    boostfs::path DirFilename(dirfilename.c_str());
+    boostfs::path DirFilenameOnly(DirFilename.filename());
+    CPPFilename.replace_extension(".cpp");*/
+    wxString outname;
+       wxString CPPFilename;
+       CPPFilename = PNGFilename;
+       CPPFilename.RemoveLast(4);
+       CPPFilename.Append(wxT(".cpp"));
+    
+       wxString DirFilenameOnly;
+       wxString CPPFilenameOnly;
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+       wxStringTokenizer CPPFilenameTokens(CPPFilename, wxT("\\"));
+       wxStringTokenizer DirFilenameTokens(dirfilename, wxT("\\"));
+
+#else
+
+       wxStringTokenizer CPPFilenameTokens(CPPFilename, wxT("/"));
+       wxStringTokenizer DirFilenameTokens(dirfilename, wxT("/"));
+
+#endif
+
+       while (CPPFilenameTokens.HasMoreTokens()){
+
+               CPPFilenameOnly = CPPFilenameTokens.GetNextToken();
+
+       }
+
+       while (DirFilenameTokens.HasMoreTokens()){
+
+               DirFilenameOnly = DirFilenameTokens.GetNextToken();
+
+       }
+
+    // Setup the PNG file reading and cpp file.
+    
+    fstream cppfile, pngfile;
+    pngfile.open(PNGFilename.wc_str(), ios::in | ios::binary );
+    cppfile.open(CPPFilename.wc_str(), ios::out | ios::trunc );
+
+    outname.Append(wxString::FromUTF8(DirFilenameOnly.c_str()));
+    outname.Append(wxT("_"));
+    outname.Append(wxString::FromUTF8(CPPFilenameOnly.c_str()));
+    outname.MakeUpper();
+       outname.RemoveLast(4);
+
+    // Setup the inclusion guard.
+    
+    cppfile << "#include <iostream>" << endl << endl;    
+    cppfile << "#ifndef " << outname.c_str() << "_CPP" << endl;
+    cppfile << "#define " << outname.c_str() << "_CPP" << endl << endl;
+    
+    outname.Clear();
+    outname.Append(wxString::FromUTF8(DirFilenameOnly.c_str()));
+    outname.Append(wxT("_"));
+    outname.Append(wxString::FromUTF8(CPPFilenameOnly.c_str()));
+       outname.RemoveLast(4);
+       outname.Append(wxT("_png"));
+    outname.MakeLower();
+    
+    // Convert the PNG file into an unsigned char array.
+    
+    cppfile << "static unsigned char " << outname.c_str() <<
+       "[] = {" << endl;
+    
+       while (pngfile){
+               pngfile.get(pngfile_char);
+               cppfile << "0x";
+
+               if ((unsigned short)pngfile_char > 255){
+
+                       cppfile << hex << setw(2) << setfill('0') <<
+                               ((unsigned short)pngfile_char - 65280);
+
+               } else {
+
+                       cppfile << hex << setw(2) << setfill('0') <<
+                               (unsigned short)pngfile_char;
+
+               }
+
+               cppfile << ", ";
+               pageseek++;
+
+               if (pageseek == 8){
+                       cppfile << endl;
+                       pageseek = 0;
+               }
+
+       }
+    
+    // End the file, close it and increment the counter.
+    
+    cppfile << "};" << endl << endl;
+    cppfile << "#endif" << endl << endl;
+    cppfile.close();
+    
+    cout << "CPP\t" << CPPFilename.c_str() << endl;    
+    
+    ++*counter;
+    
+}
+
+void CreateHPPFileDir(wxString dirfilename, wxArrayString filelist, 
+                       int* counter)
+{
+//-------------------------------------------------------------------
+// CreateHPPFileDir:   Create a HPP Directory with the directory
+//                     filename and list of files in the directory
+//                     given.
+//
+// dirfilename wxString of the directory name.
+// filelist    wxArrayString of the directory filelist.
+// counter     Pointer to a integer counter.
+//-------------------------------------------------------------------  
+   /* boostfs::path HPPFilename(dirfilename.c_str());
+    boostfs::path CPPFile;
+    boostfs::path CPPFileOnly(CPPFile.filename());
+    boostfs::path DirFilename(dirfilename.c_str());
+    boostfs::path DirFilenameOnly(DirFilename.filename());
+    HPPFilename.replace_extension(".h");*/
+    fstream hppfile;
+    
+    bool fmatch = FALSE;
+    wxString finaldirname;
+       wxString HPPFilename = dirfilename.c_str();
+
+       wxString DirFilenameOnly;
+       wxString HPPFilenameOnly;
+       wxString CPPFilename;
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+       wxStringTokenizer HPPFilenameTokens(HPPFilename, wxT("\\"));
+       wxStringTokenizer DirFilenameTokens(dirfilename, wxT("\\"));
+
+#else
+
+       wxStringTokenizer HPPFilenameTokens(HPPFilename, wxT("/"));
+       wxStringTokenizer DirFilenameTokens(dirfilename, wxT("/"));
+
+#endif
+
+       while (HPPFilenameTokens.HasMoreTokens()){
+
+               HPPFilenameOnly = HPPFilenameTokens.GetNextToken();
+
+       }
+
+       while (DirFilenameTokens.HasMoreTokens()){
+
+               DirFilenameOnly = DirFilenameTokens.GetNextToken();
+
+       }
+
+    // Make the directory filename upper case for writing to the
+    // header file.
+    
+       wxString CPPFileOnly;
+
+    finaldirname.Append(wxString::FromUTF8(DirFilenameOnly.c_str()));
+    finaldirname.MakeUpper();
+    
+    // Write out the header file inclusion guard.
+
+       HPPFilename.Append(wxT(".h"));
+
+    hppfile.open(HPPFilename.wc_str(), ios::out | ios::trunc );
+    
+    hppfile << "#include <iostream>" << endl << endl;
+    hppfile << "#ifndef " << finaldirname.c_str() << "_H" << endl;
+    hppfile << "#define " << finaldirname.c_str() << "_H" << endl << endl;
+    hppfile << "// List all CPP files in the directory." << endl << endl;
+    
+    // Write each CPP file into the header file.
+    
+       for (int f = 0; f < filelist.GetCount() ; f++){
+
+               CPPFilename = filelist[f];
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+               wxStringTokenizer CPPFilenameTokenizer(CPPFilename, wxT("\\"));
+
+#else
+
+               wxStringTokenizer CPPFilenameTokenizer(CPPFilename, wxT("/"));
+
+#endif
+
+               while (CPPFilenameTokenizer.HasMoreTokens()){
+
+                       CPPFileOnly = CPPFilenameTokenizer.GetNextToken();
+
+               }
+
+               CPPFileOnly.RemoveLast(4);
+               CPPFileOnly.Append(wxT(".cpp"));
+
+               hppfile << "#include \"" << DirFilenameOnly.c_str() <<
+                       "/" << CPPFileOnly.c_str() << "\"" << endl;
+
+       }
+
+       /*for (int f = 0; f < filelist.GetCount(); f++){
+               boostfs::path CPPFile(filelist[f].c_str());
+               boostfs::path CPPFileOnly(CPPFile.filename());
+               CPPFileOnly.replace_extension(".cpp");
+
+               for (boostfs::path::iterator filet = CPPFile.begin();
+                       filet != CPPFile.end(); ++filet){
+                       if (*filet == DirFilename.filename()){
+                               fmatch = TRUE;
+
+                       }
+                       if (fmatch == TRUE){
+
+                       }
+               }
+
+               hppfile << "#include \"" << DirFilenameOnly.c_str() <<
+                       "/" << CPPFileOnly.c_str() << "\"" << endl;
+       }*/
+    
+    // Write the end if and close the file.
+    
+    hppfile << endl << "#endif" << endl << endl;
+    hppfile.close();
+    
+    // Increment the HPP file counter.
+
+    cout << "HPPDIR\t" << HPPFilename.c_str() << endl;
+    ++*counter;
+    
+}
+
+int main(int argc, char *argv[])
+{
+    int fp = 0;
+    int cppg = 0;
+    int hppg = 0;
+    
+    wxArrayString dirlist;
+    wxArrayString filelist;
+       wxString BitmapHeaderFilename;
+    wxString DirFilenameWxS;
+    
+       // Check if completed file exists before doing anything
+       // else and write an error message if it does exist.
+
+       if (wxFileExists(wxT("bitmapsdone"))){
+
+               std::cout << "Bitmap files have already been generated!" << std::endl << std::endl;
+               std::cout << "To regenerate the files simply delete the bitmapsdone file where this helper application is run." << std::endl;
+
+
+               return 0;
+
+       }
+
+    fstream finalhppfile;
+
+       if (!argv[1]){
+               std::cout << "Error: No directory name given!" << std::endl;
+               return -1;
+       }
+  
+    // Look in the subdirectories of the bitmaps directory and
+    // collect the names of the directories.
+    
+    std::cout << "Working out directories in bitmaps directory..." << 
+       std::endl;
+
+       const char *dirarg = argv[1];
+
+       wxString BitmapDirName = wxString(dirarg, wxConvUTF8);
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+       BitmapHeaderFilename.Append(BitmapDirName);
+       BitmapHeaderFilename.Append(wxT("\\..\\bitmaps.h"));
+
+#else
+
+       BitmapFilename.Append(BitmapDirName);
+       BitmapFilename.Append(wxT("/../bitmaps.h"));
+
+#endif
+
+    /*boostfs::path BitmapsDir(argv[1]);
+    boostfs::path BitmapsDirSubName;
+    boostfs::path BitmapsFilename;
+    boostfs::directory_iterator dir_end;*/
+
+    if ( wxDirExists(BitmapDirName) ){
+    
+               wxDir BitmapDir(BitmapDirName);
+
+               wxString BitmapSubDir;
+               wxString BitmapSubDirFull;
+
+               bool ContinueProcess = BitmapDir.GetFirst(&BitmapSubDir, wxEmptyString, wxDIR_DEFAULT);
+               
+               while (ContinueProcess){
+
+#if defined(__HAIKU__)
+
+                       BitmapSubDirFull.Append(BitmapSubDir);
+                       BitmapSubDirFull.Append();
+
+#elif defined(__WIN32__)
+
+                       BitmapSubDirFull.Append(BitmapDirName);
+                       BitmapSubDirFull.Append(wxT("\\"));
+                       BitmapSubDirFull.Append(BitmapSubDir);
+
+#else
+
+                       BitmapSubDirFull.Append(BitmapDirName);
+                       BitmapSubDirFull.Append(wxT("/"));
+                       BitmapSubDirFull.Append(BitmapSubDirFull);
+
+#endif
+
+                       if (wxDirExists(BitmapSubDirFull)){
+                               dirlist.Add(BitmapSubDirFull);
+                       }
+
+                       ContinueProcess = BitmapDir.GetNext(&BitmapSubDir);
+
+                       BitmapSubDirFull.Clear();
+
+               }
+
+               /*for (boostfs::directory_iterator bitmapsidr_iter(BitmapsDir);
+                       bitmapsidr_iter != dir_end; ++bitmapsidr_iter){
+
+                       if (boostfs::is_directory(bitmapsidr_iter->status())){
+
+                               BitmapsDirSubName = boostfs::path(bitmapsidr_iter->path()).filename();
+                               DirFilenameWxS.Append(wxString::FromUTF8(argv[1]));
+                               DirFilenameWxS.Append(wxString::FromUTF8(BitmapsDirSubName.c_str()));
+                               dirlist.Add(DirFilenameWxS, 1);
+                               DirFilenameWxS = wxT("");
+
+                       }
+
+               }*/
+      
+       } else {
+               std::cout << "Error: Bitmaps Directory doesn't exist!" << std::endl;
+               return 1;
+       }
+    
+    // Process each directory, generating a .cpp and .hpp file 
+    // for each image and then a final .hpp for the directory
+    // containing the .hpp's for the directories.
+    
+       if (dirlist.GetCount() == 0){
+               cout << "Error: No directories in the bitmaps folder. Unexpected behaviour!" << endl;
+               return 1;
+       }
+    
+    std::cout << "Looking in bitmaps folder for PNGs..." << std::endl;
+    
+    DirFilenameWxS.Empty();
+
+       std::cout << BitmapHeaderFilename.c_str() << std::endl;
+
+    finalhppfile.open(BitmapHeaderFilename.wc_str(), ios::out | ios::trunc);
+    finalhppfile << "#include <iostream>" << endl << endl;
+    finalhppfile << "#ifndef BITMAPS_H" << endl;
+    finalhppfile << "#define BITMAPS_H" << endl << endl;
+    
+       for (int bi = 0; bi < dirlist.GetCount(); bi++)
+       {
+
+               wxString BitmapSubDirName = wxString::FromUTF8(dirlist[bi]);
+               wxString BitmapFilename;
+               wxDir BitmapSubDir(BitmapSubDirName);
+
+               bool ContinueProcess = BitmapSubDir.GetFirst(&BitmapFilename, wxEmptyString, wxDIR_DEFAULT);
+
+               while (ContinueProcess){
+
+                       if (BitmapFilename.Right(4) == wxT(".PNG") ||
+                               BitmapFilename.Right(4) == wxT(".png")){
+
+#if defined(__HAIKU__)
+
+                               BitmapSubDirFull.Append(BitmapSubDir);
+                               BitmapSubDirFull.Append();
+
+#elif defined(__WIN32__)
+
+                               DirFilenameWxS.Append(wxString::FromUTF8(dirlist[bi].c_str()));
+                               DirFilenameWxS.Append(wxT("\\"));
+                               DirFilenameWxS.Append(wxString::FromUTF8(BitmapFilename.c_str()));
+
+#else
+
+                               DirFilenameWxS.Append(wxString::FromUTF8(dirlist[bi].c_str()));
+                               DirFilenameWxS.Append(wxString::FromUTF8("/"));
+                               DirFilenameWxS.Append(wxString::FromUTF8(BitmapFilename.c_str()));
+
+#endif
+
+                               filelist.Add(DirFilenameWxS);
+
+                       }
+
+                       DirFilenameWxS.Clear();
+                       ContinueProcess = BitmapSubDir.GetNext(&BitmapFilename);
+
+               }
+
+               /*boostfs::path BitmapsSubDir(dirlist[bi].c_str());
+               for (boostfs::directory_iterator bitmapsidr_iter(BitmapsSubDir);
+                       bitmapsidr_iter != dir_end;
+                       ++bitmapsidr_iter){
+
+                       if (boostfs::path(bitmapsidr_iter->path()).extension() == ".png" ||
+                               boostfs::path(bitmapsidr_iter->path()).extension() == ".PNG"){
+
+                               BitmapsFilename = boostfs::path(bitmapsidr_iter->path()).filename();
+                               DirFilenameWxS.Append(wxString::FromUTF8(dirlist[bi].mb_str()));
+                               DirFilenameWxS.Append(wxString::FromUTF8("/"));
+                               DirFilenameWxS.Append(wxString::FromUTF8(BitmapsFilename.c_str()));
+
+                               filelist.Add(DirFilenameWxS, 1);
+                               DirFilenameWxS = wxT("");
+
+
+
+                       }
+
+               }*/
+
+               for (int fi = 0; fi < filelist.GetCount(); fi++)
+               {
+                       CreateCPPFile(dirlist[bi].wc_str(), filelist[fi].wc_str(), &cppg);
+                       fp++;
+               }
+
+               if (filelist.GetCount() > 0)
+               {
+                       CreateHPPFileDir(dirlist[bi].wc_str(), filelist, &hppg);
+               }
+
+               filelist.Clear();
+
+               wxString DirNameSplit;
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+               wxStringTokenizer DirListFile(dirlist[bi], wxT("\\"));
+
+#else
+
+               wxStringTokenizer DirListFile(dirlist[bi], wxT("/"));
+
+
+#endif
+
+               while (DirListFile.HasMoreTokens()){
+
+                       DirNameSplit = DirListFile.GetNextToken();
+
+               }
+
+#if defined(__HAIKU__)
+
+#elif defined(__WIN32__)
+
+               finalhppfile << "#include \"bitmaps\\" << DirNameSplit.c_str() <<
+                       ".h\"" << endl;
+
+#else
+
+               finalhppfile << "#include \"bitmaps/" << DirNameSplit.c_str() <<
+                       ".h\"" << endl;
+
+#endif
+
+       }
+    
+    finalhppfile << endl << "#endif" << endl;
+    finalhppfile.close();
+    ++hppg;
+    
+    // Print out the results.
+
+    std::cout << "Finished processing PNGs into code." << std::endl;
+    std::cout << fp << " files processed." << std::endl;
+    std::cout << cppg << " .cpp files generated." << std::endl;
+    std::cout << hppg << " .hpp files generated." << std::endl;
+    
+       // Write a success flag so that future runs won't take
+       // place thus speeding up the compilation process as
+       // required.
+
+       fstream bitmapflag;
+
+       bitmapflag.open("bitmapsdone", ios::out | ios::trunc);
+       bitmapflag << "Bitmaps as code generated. To recreate, simply delete this file and run the bitmap code generation tool again." << endl;
+       bitmapflag.close();
+
+    return 0;
+
+}
diff --git a/source/tools/bitmapcode.cpp~ b/source/tools/bitmapcode.cpp~
new file mode 100644 (file)
index 0000000..ea786c1
--- /dev/null
@@ -0,0 +1,301 @@
+//-------------------------------------------------------------------
+// bitmapcode: Helper application which coverts PNG files into
+// C++ code outputting binary code.
+//
+// This application also is a simple test if the wxWidgets & Boost
+// header files and library files are there.
+//
+// This file is licenced under the GNU General Public License
+// version 3 only. (GPLv3 only).
+//-------------------------------------------------------------------
+
+#include <iostream>
+#include <iomanip>
+#include <ios>
+
+#include <boost/filesystem.hpp>
+#include <boost/filesystem/path.hpp>
+#include <boost/filesystem/fstream.hpp>
+#include <wx/wx.h>
+#include <string.h>
+
+using namespace std;
+namespace boostfs = boost::filesystem;
+
+void CreateCPPFile(wxString dirfilename, wxString filename, int* counter)
+{
+//-------------------------------------------------------------------
+// CreateCPPFile: Create a CPP file from the filename given.
+//
+// dirfilename wxString of the directory name.
+// filename    wxString of the filename.
+// counter     Pointer to a integer counter.
+//-------------------------------------------------------------------
+    char pngfile_char;
+    int pageseek = 0;
+    boostfs::path PNGFilename(filename.c_str());
+    boostfs::path CPPFilename = PNGFilename;
+    boostfs::path CPPFilenameOnly(CPPFilename.filename());
+    boostfs::path DirFilename(dirfilename.c_str());
+    boostfs::path DirFilenameOnly(DirFilename.filename());
+    CPPFilename.replace_extension(".cpp");
+    wxString outname;
+    
+    // Setup the PNG file reading and cpp file.
+    
+    fstream cppfile, pngfile;
+    pngfile.open(PNGFilename.c_str(), ios::in | ios::binary );
+    cppfile.open(CPPFilename.c_str(), ios::out | ios::trunc );
+    
+    CPPFilenameOnly.replace_extension();
+    
+    outname.Append(wxString::FromUTF8(DirFilenameOnly.c_str()));
+    outname.Append(wxT("_"));
+    outname.Append(wxString::FromUTF8(CPPFilenameOnly.c_str()));
+    outname.MakeUpper();
+    
+    // Setup the inclusion guard.
+    
+    cppfile << "#include <iostream>" << endl << endl;    
+    cppfile << "#ifndef " << outname.mb_str() << "_CPP" << endl;
+    cppfile << "#define " << outname.mb_str() << "_CPP" << endl << endl;
+    
+    outname.Clear();
+    outname.Append(wxString::FromUTF8(DirFilenameOnly.c_str()));
+    outname.Append(wxT("_"));
+    outname.Append(wxString::FromUTF8(CPPFilenameOnly.c_str()));
+    outname.Append(wxT("_png"));
+    outname.MakeLower();
+    
+    // Convert the PNG file into an unsigned char array.
+    
+    cppfile << "static unsigned char " << outname.mb_str() <<
+       "[] = {" << endl;
+    
+    while(pngfile){
+       pngfile.get(pngfile_char);
+       cppfile << "0x";
+          
+       if ((unsigned short)pngfile_char > 255){
+       
+           cppfile << hex << setw(2) << setfill('0')  << 
+               ((unsigned short)pngfile_char - 65280);
+           
+       } else {
+        
+           cppfile << hex << setw(2) << setfill('0')  << 
+               (unsigned short)pngfile_char;     
+         
+       }
+           
+       cppfile << ", ";
+       pageseek++;
+       
+       if (pageseek == 8){
+           cppfile << endl;
+           pageseek = 0;
+       }
+    }
+    
+    // End the file, close it and increment the counter.
+    
+    cppfile << "};" << endl << endl;
+    cppfile << "#endif" << endl << endl;
+    cppfile.close();
+    
+    cout << "CPP\t" << CPPFilename.c_str() << endl;    
+    
+    ++*counter;
+    
+}
+
+int CreateHPPFileDir(wxString dirfilename, wxArrayString filelist, 
+                       int* counter)
+{
+//-------------------------------------------------------------------
+// CreateHPPFileDir:   Create a HPP Directory with the directory
+//                     filename and list of files in the directory
+//                     given.
+//
+// dirfilename wxString of the directory name.
+// filelist    wxArrayString of the directory filelist.
+// counter     Pointer to a integer counter.
+//-------------------------------------------------------------------  
+    boostfs::path HPPFilename(dirfilename.c_str());
+    boostfs::path CPPFile;
+    boostfs::path CPPFileOnly(CPPFile.filename());
+    boostfs::path DirFilename(dirfilename.c_str());
+    boostfs::path DirFilenameOnly(DirFilename.filename());
+    HPPFilename.replace_extension(".h");
+    fstream hppfile;
+    
+    bool fmatch = FALSE;
+    wxString finaldirname;
+    
+    // Make the directory filename upper case for writing to the
+    // header file.
+    
+    finaldirname.Append(wxString::FromUTF8(DirFilenameOnly.c_str()));
+    finaldirname.MakeUpper();
+    
+    // Write out the header file inclusion guard.
+    
+    hppfile.open(HPPFilename.c_str(), ios::out | ios::trunc );
+    
+    hppfile << "#include <iostream>" << endl << endl;
+    hppfile << "#ifndef " << finaldirname.mb_str() << "_H" << endl;
+    hppfile << "#define " << finaldirname.mb_str() << "_H" << endl << endl;
+    hppfile << "// List all CPP files in the directory." << endl << endl;
+    
+    // Write each CPP file into the header file.
+    
+    for (int f = 0; f < filelist.GetCount() ; f++){
+       boostfs::path CPPFile(filelist[f].c_str());
+       boostfs::path CPPFileOnly(CPPFile.filename());
+       CPPFileOnly.replace_extension(".cpp");
+       
+       for (boostfs::path::iterator filet=CPPFile.begin(); 
+            filet != CPPFile.end(); ++filet){
+           if (*filet == DirFilename.filename()){
+               fmatch = TRUE;
+               
+           }
+           if (fmatch == TRUE){
+               
+           }
+       }
+       
+       hppfile << "#include \"" << DirFilenameOnly.c_str() << 
+           "/" << CPPFileOnly.c_str() << "\"" << endl;
+    }
+    
+    // Write the end if and close the file.
+    
+    hppfile << endl << "#endif" << endl << endl;
+    hppfile.close();
+    
+    // Increment the HPP file counter.
+
+    cout << "HPPDIR\t" << HPPFilename.c_str() << endl;
+    ++*counter;
+    
+}
+
+int main()
+{
+    int fp = 0;
+    int cppg = 0;
+    int hppg = 0;
+    
+    wxArrayString dirlist;
+    wxArrayString filelist;
+    wxString DirFilenameWxS;
+    
+    fstream finalhppfile;
+  
+    // Look in the subdirectories of the bitmaps directory and
+    // collect the names of the directories.
+    
+    std::cout << "Working out directories in bitmaps directory..." << 
+       std::endl;
+    
+    boostfs::path BitmapsDir("../bitmaps");
+    boostfs::path BitmapsDirSubName;
+    boostfs::path BitmapsFilename;
+    boostfs::directory_iterator dir_end;
+    
+    if ( boostfs::exists(BitmapsDir) ){
+    
+       for (boostfs::directory_iterator bitmapsidr_iter(BitmapsDir); 
+           bitmapsidr_iter != dir_end ; ++bitmapsidr_iter){
+           
+           if (boostfs::is_directory(bitmapsidr_iter->status())){
+               
+               BitmapsDirSubName = boostfs::path(bitmapsidr_iter->path()).filename();
+               DirFilenameWxS.Append(wxString::FromUTF8("../bitmaps/"));               
+               DirFilenameWxS.Append(wxString::FromUTF8(BitmapsDirSubName.c_str()));
+               dirlist.Add(DirFilenameWxS, 1);
+               DirFilenameWxS = wxT("");
+
+           }
+           
+       }
+      
+    } else {
+       std::cout << "Error: Bitmaps Directory doesn't exist!" << std::endl;
+       return 1;
+    }
+    
+    // Process each directory, generating a .cpp and .hpp file 
+    // for each image and then a final .hpp for the directory
+    // containing the .hpp's for the directories.
+    
+    if (dirlist.GetCount() == 0){
+       cout << "Error: No directories in the bitmaps folder. Unexpected behaviour!" << endl;
+       return 1;
+    }
+    
+    std::cout << "Looking in bitmaps folder for PNGs..." << std::endl;
+    
+    DirFilenameWxS.Empty();
+    
+    finalhppfile.open("../bitmaps.h", ios::out | ios::trunc );
+    finalhppfile << "#include <iostream>" << endl << endl;
+    finalhppfile << "#ifndef BITMAPS_H" << endl;
+    finalhppfile << "#define BITMAPS_H" << endl << endl;
+    
+    for (int bi = 0; bi<dirlist.GetCount() ; bi++)
+    {
+       boostfs::path BitmapsSubDir(dirlist[bi].c_str());
+       for (boostfs::directory_iterator bitmapsidr_iter(BitmapsSubDir); 
+               bitmapsidr_iter != dir_end ;
+               ++bitmapsidr_iter){
+           
+           if (boostfs::path(bitmapsidr_iter->path()).extension() == ".png" ||
+             boostfs::path(bitmapsidr_iter->path()).extension() == ".PNG" ){
+                             
+               BitmapsFilename = boostfs::path(bitmapsidr_iter->path()).filename();
+               DirFilenameWxS.Append(wxString::FromUTF8(dirlist[bi].mb_str()));
+               DirFilenameWxS.Append(wxString::FromUTF8("/"));
+               DirFilenameWxS.Append(wxString::FromUTF8(BitmapsFilename.c_str()));
+               
+               filelist.Add(DirFilenameWxS, 1);
+               DirFilenameWxS = wxT("");
+               
+
+               
+           }
+        
+       }
+       
+       for (int fi = 0; fi < filelist.GetCount() ; fi++)
+       {
+           CreateCPPFile(dirlist[bi].c_str(), filelist[fi], &cppg);        
+           fp++;
+       }
+       
+       if (filelist.GetCount() > 0)
+       {
+           CreateHPPFileDir(dirlist[bi].c_str(), filelist, &hppg);
+       }       
+               
+       filelist.Clear();
+
+       finalhppfile << "#include \"bitmaps/"<< BitmapsSubDir.filename().c_str() <<
+           ".h\"" << endl;
+      
+    }
+    
+    finalhppfile << endl << "#endif" << endl;
+    finalhppfile.close();
+    ++hppg;
+    
+    // Print out the results.
+
+    std::cout << "Finished processing PNGs into code." << std::endl;
+    std::cout << fp << " files processed." << std::endl;
+    std::cout << cppg << " .cpp files generated." << std::endl;
+    std::cout << hppg << " .hpp files generated." << std::endl;
+    
+    return 0;
+}
\ No newline at end of file
diff --git a/source/vcard/vcard.cpp b/source/vcard/vcard.cpp
new file mode 100644 (file)
index 0000000..1322c3a
--- /dev/null
@@ -0,0 +1,749 @@
+#include "vcard.h"
+#include <wx/file.h>
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <cmath>
+
+// vcard.cpp - Deals with vCard 4.0 formatted files meeting the
+// RFC 6350 specification.
+
+vCard::vCard(){
+    vCardBegin = FALSE;
+    vCardEnd = FALSE;
+    vCardFN = FALSE;
+    vCardVersion = 0.0;
+    SettingCount = 0;
+}
+
+void vCard::Add(wxString SettingName, wxString SettingValue, bool ReplaceMode){  
+    
+    // Check for backslashes used for commas, newlines and
+    // backslashes used for values.
+    
+    if (ReplaceMode == TRUE){
+    
+       SettingValue.Replace(wxT("\\n"), wxT("\n"));
+       SettingValue.Replace(wxT("\\,"), wxT(","));
+       SettingValue.Replace(wxT("\\:"), wxT(":"));
+       SettingValue.Replace(wxT("\\\\"), wxT("\\"));
+    
+    } else {
+
+       SettingValue.Replace(wxT("\\"), wxT("\\\\"));
+       SettingValue.Replace(wxT("\n"), wxT("\\n"));
+       SettingValue.Replace(wxT(","), wxT("\\,"));
+       SettingValue.Replace(wxT(":"), wxT("\\:"));
+       SettingValue = SettingValue + wxT("\n");
+    
+    }
+  
+    // Check data to make sure that it meets the required
+    // vCard 4.0 specifications.
+    
+       if (SettingName == wxT("BEGIN") && SettingValue == wxT("VCARD")){
+               vCardBegin = TRUE;
+       }
+    
+       if (SettingName == wxT("END") && SettingValue == wxT("VCARD")){
+               vCardEnd = TRUE;
+       }
+    
+       if (SettingName == wxT("FN")){
+               vCardFN = TRUE;
+       }
+    
+       if (SettingName == wxT("VERSION") && SettingValue == wxT("4.0")){
+               vCardVersion = 4.0;
+       }
+    
+       if (SettingName == wxT("VERSION") && SettingValue == wxT("3.0")){
+               vCardVersion = 3.0;
+       }
+    
+       if (SettingName == wxT("VERSION") && SettingValue == wxT("3.0")){
+               vCardVersion = 2.0;
+       }
+    
+    SettingValue.Trim();    
+    
+    if (SettingValue.Right(2) != wxT("\r\n")){
+    
+       SettingValue.Append(wxT("\r\n"));
+    
+    }
+    
+    SettingNames.Add(SettingName, 1);
+    SettingValues.Add(SettingValue, 1);      
+    
+    ++SettingCount;
+}
+
+void vCard::AddRaw(wxString SettingName, wxString SettingValue){  
+  
+    // Check data to make sure that it meets the required
+    // vCard 4.0 specifications.
+    
+    if (SettingName == wxT("BEGIN") && SettingValue == wxT("VCARD")){
+       vCardBegin = TRUE;
+    }
+    
+    if (SettingName == wxT("END") && SettingValue == wxT("VCARD")){
+       vCardEnd = TRUE;
+    }
+    
+    if (SettingName == wxT("FN")){
+       vCardFN = TRUE;
+    }
+    
+    if (SettingName == wxT("VERSION") && SettingValue == wxT("4.0")){   
+       vCardVersion = 4.0;
+    }
+
+    if (SettingName == wxT("VERSION") && SettingValue == wxT("3.0")){   
+       vCardVersion = 3.0;
+    }
+    
+    if (SettingName == wxT("VERSION") && SettingValue == wxT("3.0")){   
+       vCardVersion = 2.0;
+    }
+    
+    SettingValue.Trim();
+    
+    if (SettingValue.Right(2) != wxT("\r\n")){
+    
+       SettingValue.Append(wxT("\r\n"));
+    
+    }
+        
+    SettingNames.Add(SettingName, 1);
+    SettingValues.Add(SettingValue, 1);      
+    
+    ++SettingCount;
+}
+
+wxString vCard::Get(wxString SettingName){
+  
+    wxString SettingValue;
+    
+    // Look for the setting name.
+    
+    for (int i = 0; i < SettingCount; i++){
+      
+       if (SettingNames[i] == SettingName){
+       
+           SettingValue = SettingValues[i];
+           SettingValue.Trim(TRUE);
+                   
+           while (SettingValues[(i + 1)].Mid(0, 1) == wxT(" ") || SettingValues[(i + 1)].Mid(0, 1) == wxT("\t")){
+               
+               SettingValue.Trim();
+               SettingValue.Append(SettingValues[(i + 1)]);
+               
+               i++;
+           }
+           
+           return SettingValue;
+       }
+    }
+
+       return wxEmptyString;
+
+}
+
+vCardName vCard::GetName(){
+
+       vCardName NameData;
+       ArrayvCardOutData NameArray = this->GetByPartial(wxT("N"));
+       //wxString NameDataGet = NameArray.PropValues[0];
+       wxString NameDataGet = NameArray.PropValues[0];
+       std::map<int, int> SplitPoints;
+       std::map<int, int> SplitLength;
+       std::map<int, int>::iterator SLiter;
+       
+       // Process the name data to get the required information.
+       
+       int intPropertyLen = NameDataGet.Len();
+       int intSplitSeek = 0;
+       int intSplitsFound = 0;
+       int intSplitSize = 0;
+       int intPrevValue = 0;                                   
+       
+       for (int i = 0; i <= intPropertyLen; i++){
+
+               intSplitSize++;
+       
+               if (NameDataGet.Mid(i, 1) == wxT(";") && NameDataGet.Mid((i - 1), 1) != wxT("\\")){
+       
+                       intSplitsFound++;
+                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                       
+                       if (intSplitsFound == 4){ 
+                       
+                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                               break; 
+                               
+                       } else {
+                       
+                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                       
+                       }
+                       
+                       intSplitSize = 0;                                       
+       
+               }
+
+       }
+       
+       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+       intiter != SplitPoints.end(); ++intiter){
+       
+               if (intiter->first == 1){
+               
+                       // Deal with family name.
+                       
+                       SLiter = SplitLength.find(1);
+
+                       NameData.Surname = NameDataGet.Mid(0, SLiter->second);                          
+                       intPrevValue = intiter->second;
+               
+               } else if (intiter->first == 2){
+               
+                       // Deal with given names.
+                       
+                       SLiter = SplitLength.find(2);
+
+                       NameData.Forename = NameDataGet.Mid(intPrevValue, SLiter->second);                      
+                       intPrevValue = intiter->second;
+
+               
+               } else if (intiter->first == 3){
+               
+                       // Deal with additional names.
+                       
+                       SLiter = SplitLength.find(3);
+
+                       NameData.OtherNames = NameDataGet.Mid(intPrevValue, SLiter->second);
+                       intPrevValue = intiter->second;
+               
+               } else if (intiter->first == 4){
+               
+                       // Deal with honorifix prefixes and suffixes.
+                       SLiter = SplitLength.find(4);
+
+                       NameData.Title = NameDataGet.Mid(intPrevValue, SLiter->second);                 
+                       intPrevValue = intiter->second;
+                       NameData.Suffix = NameDataGet.Mid(intPrevValue);
+               
+               }
+       
+       }
+       
+       return NameData;
+       
+
+}
+
+ArrayvCardOutData vCard::GetByPartial(wxString SettingName){
+
+    ArrayvCardOutData vCardOutData;
+    wxArrayString SettingList;
+    wxString SettingValueCurrent;
+    wxString SettingValue;
+    int SettingNameLen;
+    int SettingNameSeek;
+    bool FirstToken = TRUE;
+    
+    SettingNameLen = SettingName.Len();
+
+    for (int i = 0; i < SettingCount; i++){
+    
+       if (SettingNames[i].Mid(0, SettingNameLen) == SettingName){
+           
+           SettingValue = SettingValues[i];
+           SettingNameSeek = i;            
+           
+           while (SettingValues[(i + 1)].Mid(0, 1) == wxT(" ") || SettingValues[(i + 1)].Mid(0, 1) == wxT("\t")){
+               
+               if (FirstToken == TRUE){
+               
+                       SettingValue.Trim(FALSE);
+                       SettingValue.Trim(TRUE);                                
+                       FirstToken = FALSE;
+               
+               }
+               
+               SettingValueCurrent = SettingValues[(i + 1)];
+               SettingValueCurrent.Trim(FALSE);
+               SettingValueCurrent.Trim(TRUE);         
+               
+               SettingValue.Append(SettingValueCurrent);
+               
+               i++;
+               
+           }
+           
+           //SettingList.Add(SettingNames[SettingNameSeek] + wxT(":") + SettingValue);
+           vCardOutData.PropData.Add(SettingNames[SettingNameSeek]);
+           vCardOutData.PropValues.Add(SettingValue);
+           vCardOutData.PropCount++;
+           
+       }
+    }
+    
+    /*for (int i = 0; i < SettingCount; i++){
+       if (SettingNames[i].Mid(0, SettingNameLen) == SettingName){
+           
+           SettingValue = SettingValues[i];
+           SettingNameSeek = i;            
+           
+           while (SettingValues[(i + 1)].Mid(0, 1) == wxT(" ") || SettingValues[(i + 1)].Mid(0, 1) == wxT("\t")){
+               
+               SettingValueCurrent = SettingValues[(i + 1)];
+               SettingValueCurrent.Trim(FALSE);
+               SettingValueCurrent.Trim(TRUE);         
+               
+               SettingValue.Append(SettingValueCurrent);
+               
+               i++;
+               
+           }
+           
+           //SettingList.Add(SettingNames[SettingNameSeek] + wxT(":") + SettingValue);
+           vCardOutData.PropData.Add(SettingName);
+           vCardOutData.PropData.Add(SettingValue);
+           
+       }
+    }*/
+    
+    return vCardOutData;
+
+}
+
+wxString vCard::GetById(int id){
+       // Unimplemented.
+       return wxT("");
+}
+
+int vCard::WriteFile(wxString WriteFilename){
+
+    // Open the file and begin writing data into the file.
+    
+    wxString SettingName;
+    wxString SettingValue;
+    wxString SettingLine;
+    
+    SettingCount = SettingNames.GetCount();
+    
+    wxFile ContactFile;
+    if (ContactFile.Create(WriteFilename, TRUE, wxS_DEFAULT) == FALSE){
+       return 1;
+    }
+    
+    for (int i = 0; i < SettingCount; i++){
+    
+       SettingLine = SettingNames[i] + wxT(":") + SettingValues[i];
+    
+       int SettingLineLen = SettingLine.Len();
+       int intDivider = 74;
+       int intTimes = floor((SettingLine.Len() / intDivider));
+       int intSeek = 0;
+       int intLineSeek = 0;
+       int intPrevLine;
+       bool FirstLine = TRUE;
+    
+       // Remember to round down the calculation.
+
+       while (intSeek < SettingLineLen){
+       
+               if ((intLineSeek == intDivider && FirstLine == TRUE) ||
+               (intLineSeek == (intDivider - 1) && FirstLine == FALSE)){
+               
+                       SettingLine.insert(intSeek, wxT("\r\n "));
+                       intSeek = intSeek + 3;
+                       SettingLineLen = SettingLineLen + 3;
+                       intLineSeek = 0;
+                       intPrevLine = intSeek;
+                       FirstLine = FALSE;
+               
+               }
+       
+               intSeek++;
+               intLineSeek++;
+       
+       }
+
+       /*
+
+       for (int x = 0; x < intTimes; x++){     
+       
+           if (x == 0){
+               SettingLine.insert((intDivider - 1), wxT("\r\n "));
+           } else if (x == intTimes){
+           
+           } else {
+               if (x < intDivider){
+                       SettingLine.insert((intDivider * (x+1)) + (x * 3), wxT("\r\n "));
+               }
+           }
+           
+           intTimes = floor(SettingLine.Len() / intDivider);
+       
+       }
+       
+       */
+       
+       ContactFile.Write(SettingLine);
+       
+    }
+    
+    ContactFile.Close();
+
+    return 0;
+
+}
+
+int vCard::LoadFile(wxString LoadFilename){
+
+    wxFFile ContactFile;
+  
+    wxString wxSContactString;
+  
+    vCardFilename = LoadFilename;
+       
+    // Check if we are using wxWidgets version 2.8 or less and
+    // execute the required command accordingly.
+    
+#if wxABI_VERSION < 20900
+    ContactFile.Open(LoadFilename.c_str(), wxT("r"));
+#else
+    ContactFile.Open(LoadFilename, wxT("r"));
+#endif 
+       
+    if (ContactFile.IsOpened() == FALSE){
+       
+               return 1;
+       
+    }
+       
+    ContactFile.ReadAll(&wxSContactString, wxConvAuto());
+    
+    ContactFile.Close();
+    
+    ProcessString(&wxSContactString);
+
+       return 0;
+
+}
+
+int vCard::LoadString(wxString ContactData){
+
+    ProcessString(&ContactData);
+
+       return 0;
+
+}
+
+void vCard::ProcessString(wxString *ContactDataInc){
+
+    // Split the vCards (if there are more than one vCard in the file).
+
+    wxString ContactLine;
+
+    int ContactLineLen;
+    bool ExtraLineSeek = FALSE;
+    int QuoteBreakPoint = 0;
+    
+    bool PropertyFind = FALSE;
+    bool QuoteMode = FALSE;
+   
+    wxString wxSPropertyNextLine;
+    wxString wxSProperty;
+    wxString wxSPropertySeg1;
+    wxString wxSPropertySeg2;
+    
+    bool FoundBegin = FALSE;
+    bool FoundEnd = FALSE;
+    bool FirstContact = TRUE;
+    wxString FirstContactData;
+    wxString ContactData;
+    int ContactCount = 0;
+    
+    wxStringTokenizer wSTContactFileLines(*ContactDataInc, wxT("\r\n"));
+    
+    while(wSTContactFileLines.HasMoreTokens() == TRUE){
+    
+       ContactLine = wSTContactFileLines.GetNextToken();
+       
+       if (ContactLine == wxT("BEGIN:VCARD")){
+               
+               if (FoundBegin == TRUE){
+               
+                       // No END:VCARD was found so discard current data.
+                       
+                       ContactData.Clear();
+               
+                       if (FirstContact == TRUE){
+                       
+                               FirstContactData.Clear();
+                       
+                       }
+               
+               }
+               
+               FoundBegin = TRUE;
+               
+               FirstContactData.Append(ContactLine + wxT("\r\n"));
+               ContactData.Append(ContactLine + wxT("\r\n"));
+               
+       } else if (ContactLine == wxT("END:VCARD") && FoundBegin == TRUE){
+       
+               if (FirstContact == TRUE){
+               
+                       FirstContact = FALSE;
+                       FirstContactData.Append(ContactLine + wxT("\r\n"));
+               
+               }
+               
+               ContactData.Append(ContactLine + wxT("\r\n"));
+                               
+               Cards.insert(std::make_pair(ContactCount, ContactData));
+       
+               ContactCount++;
+       
+       } else if (FoundBegin == TRUE){
+       
+               if (FirstContact == TRUE){
+               
+                       FirstContactData.Append(ContactLine + wxT("\r\n"));
+               
+               }
+               
+               ContactData.Append(ContactLine + wxT("\r\n"));
+       
+       }
+    
+    }
+
+    ContactLine.Clear();
+    
+    // Split the lines.
+       
+    std::map<int, wxString> ContactFileLines;
+    std::map<int, wxString>::iterator striter;
+       
+    wxStringTokenizer wSTFirstContactLines(FirstContactData, wxT("\r\n"));
+
+    int ContactLineSeek = 0;
+
+    while (wSTFirstContactLines.HasMoreTokens() == TRUE){
+
+       ContactLine = wSTFirstContactLines.GetNextToken();
+       ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine));
+       ContactLineSeek++;              
+       
+    }
+    
+    for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
+       iter != ContactFileLines.end(); ++iter){
+
+       // Find the colon which splits the start bit from the data part.
+       
+       ContactLine = iter->second;
+       
+       while (ExtraLineSeek == TRUE){
+       
+           // Check if there is extra data on the next line 
+           // (indicated by space or tab at the start) and add data.
+       
+           iter++;
+               
+           if (iter == ContactFileLines.end()){
+               
+               iter--;
+               break;
+               
+           }                   
+       
+           wxSPropertyNextLine = iter->second;
+               
+       
+           if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+       
+               wxSPropertyNextLine.Remove(0, 1);
+               //wxSPropertyNextLine.Trim(FALSE);
+               //ContactLine.Trim();
+               ContactLine.Append(wxSPropertyNextLine);
+       
+           } else {
+               
+               iter--;
+               ExtraLineSeek = FALSE;
+               
+           }
+       
+       }
+
+       ContactLineLen = ContactLine.Len();
+       
+       // Make sure we are not in quotation mode.
+       // Make sure colon does not have \ or \\ before it.
+       
+       for (int i = 0; i <= ContactLineLen; i++){
+       
+           if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+               
+                       PropertyFind = FALSE;
+               
+           } else if (PropertyFind == TRUE){
+               
+                       wxSProperty.Append(ContactLine.Mid(i, 1));
+               
+           }           
+       
+           if (ContactLine.Mid(i, 1) == wxT("\"")){
+               
+               if (QuoteMode == TRUE){
+                       
+                   QuoteMode = FALSE;
+                       
+               } else {
+               
+                   QuoteMode = TRUE;
+                               
+               }
+               
+           }
+               
+           if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+               
+               QuoteBreakPoint = i;
+               break;
+               
+           }
+       
+       }
+       
+       // Split that line at the point into two variables (ignore the colon).
+       
+       wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
+       wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
+       
+       // Insert both into the vCard data file.
+       
+       AddRaw(wxSPropertySeg1, wxSPropertySeg2);
+       
+       QuoteMode = FALSE;
+       PropertyFind = TRUE;
+       ExtraLineSeek = TRUE;
+       ContactLineLen = 0;
+       QuoteBreakPoint = 0;
+       ContactLine.Clear();
+       wxSProperty.Clear();
+       
+    }
+
+
+}
+
+wxString vCard::WriteString(){
+
+    // Open the file and begin writing data into the file.
+    
+    wxString SettingName;
+    wxString SettingValue;
+    wxString SettingLine;
+    wxString SettingFinal;
+    
+    SettingCount = SettingNames.GetCount();
+    
+    for (int i = 0; i < SettingCount; i++){
+    
+       SettingLine = SettingNames[i] + wxT(":") + SettingValues[i];
+    
+       int SettingLineLen = SettingLine.Len();
+       int intDivider = 74;
+       int intTimes = floor((SettingLine.Len() / intDivider));
+       int intSeek = 0;
+       int intLineSeek = 0;
+       int intPrevLine;
+       bool FirstLine = TRUE;
+    
+       // Remember to round down the calculation.
+
+       while (intSeek < SettingLineLen){
+       
+               if ((intLineSeek == intDivider && FirstLine == TRUE) ||
+               (intLineSeek == (intDivider - 1) && FirstLine == FALSE)){
+               
+                       SettingLine.insert(intSeek, wxT("\r\n "));
+                       intSeek = intSeek + 3;
+                       SettingLineLen = SettingLineLen + 3;
+                       intLineSeek = 0;
+                       intPrevLine = intSeek;
+                       FirstLine = FALSE;
+               
+               }
+       
+               intSeek++;
+               intLineSeek++;
+       
+       }
+       
+       SettingFinal.Append(SettingLine);
+       
+    }
+    
+    return SettingFinal;
+
+}
+
+bool vCard::MeetBaseSpecification(){
+    // Check and see if the vCard object meets the base specification
+    // of vCard 4.0.
+    
+    if (vCardBegin == TRUE && vCardEnd == TRUE && vCardFN == TRUE &&
+       vCardVersion == 4.0){
+       return TRUE;
+    } else {
+       return FALSE;
+    }
+    
+}
+
+wxString vCard::Convert(wxString SettingValue, bool ReplaceMode){  
+    
+    // Check for backslashes used for commas, newlines and
+    // backslashes used for values.
+    
+    if (ReplaceMode == TRUE){
+    
+       SettingValue.Replace(wxT("\\n"), wxT("\n"));
+       SettingValue.Replace(wxT("\\,"), wxT(","));
+       SettingValue.Replace(wxT("\\;"), wxT(";"));
+       SettingValue.Replace(wxT("\\\\"), wxT("\\"));
+    
+    } else {
+
+       SettingValue.Replace(wxT("\\"), wxT("\\\\"));
+       SettingValue.Replace(wxT("\n"), wxT("\\n"));
+       SettingValue.Replace(wxT(","), wxT("\\,"));
+       SettingValue.Replace(wxT(";"), wxT("\\;"));
+       SettingValue = SettingValue + wxT("\n");
+    
+    }
+    
+    return SettingValue;
+    
+}
+
+wxString vCard::GetFilename(){
+
+    return vCardFilename;
+
+}
+
+std::map<int,wxString>* vCard::GetAllCards(){
+
+    return &Cards;
+
+}
\ No newline at end of file
diff --git a/source/vcard/vcard.cpp~ b/source/vcard/vcard.cpp~
new file mode 100644 (file)
index 0000000..878c2b9
--- /dev/null
@@ -0,0 +1,88 @@
+#include "vcard.h" 
+
+// vcard.cpp - Deals with vCard 4.0 formatted files meeting the
+// RFC 6350 specification.
+
+vCard::vCard(){
+    vCardBegin = FALSE;
+    vCardEnd = FALSE;
+    vCardFN = FALSE;
+    vCardVersion = 0.0;
+    SettingCount = 0;
+}
+
+void vCard::Add(wxString SettingName, wxString SettingValue){  
+    
+    // Check for backslashes used for commas, newlines and
+    // backslashes used for values.
+    
+    SettingValue.Replace(wxT("\\n"), wxT("\n"));
+    SettingValue.Replace(wxT("\\,"), wxT(","));
+    SettingValue.Replace(wxT("\\\\"), wxT("\\"));    
+  
+    // Check data to make sure that it meets the required
+    // vCard 4.0 specifications.
+    
+    //wxPuts(wxString::Format("%x", SettingValue));
+    
+    if (SettingName == wxT("BEGIN") && SettingValue == wxT("VCARD")){
+       vCardBegin = TRUE;
+    }
+    
+    if (SettingName == wxT("END") && SettingValue == wxT("VCARD")){      
+       vCardEnd = TRUE;
+    }
+    
+    if (SettingName == wxT("FN")){
+       vCardFN = TRUE;
+    }
+    
+    if (SettingName == wxT("VERSION") && SettingValue == wxT("4.0")){
+       vCardVersion = 4.0;
+    }
+    
+    SettingNames.Add(SettingName, 1);
+    SettingValues.Add(SettingValue, 1);      
+    
+    ++SettingCount;
+}
+
+wxString vCard::Get(wxString SettingName){
+  
+    wxString SettingValue;
+  
+    wxPuts(wxT("IN THAR"));
+    
+    // Look for the setting name.
+    
+    for (int i = 0; i < SettingCount; i++){
+       wxPuts(wxT("Looking"));
+      
+       if (SettingNames[i] == SettingName){
+           SettingValue = SettingValues[i];
+           wxPuts(wxT("Here we are"));
+           wxPuts(SettingValue);
+           SettingValue.Trim(TRUE);
+           wxPuts(SettingValue);
+           return SettingValue;
+       }
+    }
+  
+}
+
+wxString vCard::GetById(int id){
+  
+}
+
+bool vCard::MeetBaseSpecification(){
+    // Check and see if the vCard object meets the base specification
+    // of vCard 4.0.
+    
+    if (vCardBegin == TRUE && vCardEnd == TRUE && vCardFN == TRUE &&
+       vCardVersion == 4.0){
+       return TRUE;
+    } else {
+       return FALSE;
+    }
+    
+}
\ No newline at end of file
diff --git a/source/vcard/vcard.h b/source/vcard/vcard.h
new file mode 100644 (file)
index 0000000..b7c4e02
--- /dev/null
@@ -0,0 +1,53 @@
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/arrstr.h>
+#include <map>
+
+#ifndef VCARD_H
+#define VCARD_H
+
+struct ArrayvCardOutData {
+       wxArrayString PropData;
+       wxArrayString PropValues;
+       int PropCount = 0;
+};
+
+struct vCardName{
+       wxString Forename;
+       wxString Surname;
+       wxString OtherNames;
+       wxString Title;
+       wxString Suffix;
+};
+
+class vCard{
+private:
+    wxArrayString SettingNames;
+    wxArrayString SettingValues;
+    int SettingCount;
+    bool vCardBegin;
+    bool vCardEnd;
+    bool vCardFN;
+    float vCardVersion;
+    wxString vCardFilename;
+    std::map<int,wxString> Cards;
+    void ProcessString(wxString *ContactData);
+public:
+    vCard();
+    void Add(wxString SettingName, wxString SettingValue, bool ReplaceMode);
+    void AddRaw(wxString SettingName, wxString SettingValue);    
+    wxString Get(wxString SettingName);
+    vCardName GetName();
+    wxString GetById(int id);
+    ArrayvCardOutData GetByPartial(wxString SettingName);
+    int WriteFile(wxString WriteFilename);
+    int LoadFile(wxString LoadFilename);
+    int LoadString(wxString ContactData);
+    wxString WriteString();
+    bool MeetBaseSpecification();
+    wxString Convert(wxString SettingValue, bool ReplaceMode);
+    wxString GetFilename();
+    std::map<int,wxString>* GetAllCards();
+};
+
+#endif
\ No newline at end of file
diff --git a/source/vcard/vcard.hpp~ b/source/vcard/vcard.hpp~
new file mode 100644 (file)
index 0000000..d4202a9
--- /dev/null
@@ -0,0 +1,20 @@
+
+class vCard{
+private:
+    
+public:
+    vCard(int settingsize);
+    ~vCard();
+}
+
+class vCardSetting{
+private:
+    wxString   SettingName;
+    wxString   SettingValue;
+public:
+    vCardSetting(
+       wxString SettingName, 
+       wxString SettingValue
+    );
+    ~vCardSetting();
+}
diff --git a/source/vcard/vcard.h~ b/source/vcard/vcard.h~
new file mode 100644 (file)
index 0000000..3ab41a1
--- /dev/null
@@ -0,0 +1,27 @@
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/arrstr.h>
+
+#ifndef VCARD_H
+#define VCARD_H
+
+class vCard{
+private:
+    wxArrayString SettingNames;
+    wxArrayString SettingValues;
+    int SettingCount;
+    bool vCardBegin;
+    bool vCardEnd;
+    bool vCardFN;
+    float vCardVersion;
+public:
+    vCard();
+    void Add(wxString SettingName, wxString SettingValue);
+    wxString Get(wxString SettingName);
+    wxString GetById(int id);
+    wxArrayString GetByPartial(wxString SettingName);
+    int WriteFile(wxString Filename);
+    bool MeetBaseSpecification();
+};
+
+#endif
\ No newline at end of file
diff --git a/source/vcard/vcard34conv.cpp b/source/vcard/vcard34conv.cpp
new file mode 100644 (file)
index 0000000..62efc90
--- /dev/null
@@ -0,0 +1,9973 @@
+#include "vcard34conv.h"
+#include "vcard.h"
+#include "../version.h"
+#include "../common/textprocessing.h"
+#include <wx/file.h>
+#include <cmath>
+#include <map>
+
+#include <wx/ffile.h>
+#include <wx/tokenzr.h>
+#include <wx/datetime.h>
+#include <wx/wx.h>
+
+// vcard.cpp - Deals with vCard 4.0 formatted files meeting the
+// RFC 6350 specification.
+
+vCard34Conv::vCard34Conv(){
+    vCardBegin = FALSE;
+    vCardEnd = FALSE;
+    vCardFN = FALSE;
+    vCardVersion = 0.0;
+    SettingCount = 0;
+}
+
+bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){
+
+       wxString V3Data;
+       wxString V4Data;
+       
+       // Load the contact into the contact editor.
+       
+       wxFFile ContactFile;
+       wxString wxSContactString;
+       wxString ContactLine;
+       vCard ContactData;
+
+       vCard ContactDatav3;
+       
+       //wxSContactFilename = Filename;
+       
+       // Check if we are using wxWidgets version 2.8 or less and
+       // execute the required command accordingly.
+       
+#if wxABI_VERSION < 20900
+       ContactFile.Open(Filename.c_str(), wxT("r"));
+#else
+       ContactFile.Open(Filename, wxT("r"));
+#endif 
+       
+       if (ContactFile.IsOpened() == FALSE){
+
+               return FALSE;
+       
+       }
+       
+       ContactFile.ReadAll(&wxSContactString, wxConvAuto());
+       
+       // Split the lines.
+       
+       std::map<int, wxString> ContactFileLines;
+       std::map<int, wxString>::iterator striter;
+       
+       wxStringTokenizer wSTContactFileLines(wxSContactString, wxT("\r\n"));
+
+       int ContactLineSeek = 0;
+
+       while (wSTContactFileLines.HasMoreTokens() == TRUE){
+
+               ContactLine = wSTContactFileLines.GetNextToken();
+               ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine));
+               ContactLineSeek++;              
+       
+       }
+
+       // Get the line.
+
+       bool QuoteMode = FALSE;
+       bool PropertyFind = TRUE;
+       bool HasExtraNicknames = FALSE;
+       bool IgnoreGender = FALSE;
+       bool ExtraLineSeek = TRUE;
+       bool BirthdayProcessed = FALSE;
+       bool AnniversaryProcessed = FALSE;
+       bool FNProcessed = FALSE;
+       bool GenderProcessed = FALSE;
+       bool NameProcessed = FALSE;
+       bool KindProcessed = FALSE;
+       bool FNFirst = FALSE;
+       bool NicknameFirst = FALSE;
+       bool TitleFirst = FALSE;
+       bool OrganisationFirst = FALSE;
+       bool NoteFirst = FALSE;
+       bool PhotoFirst = FALSE;
+       bool LogoFirst = FALSE;
+       int intExtraNickname = 0;
+       wxString wxSProperty;
+       wxString wxSPropertySeg1;
+       wxString wxSPropertySeg2;
+       wxString wxSPropertyNextLine;
+       int ContactLineLen = 0;
+       int QuoteBreakPoint = 0;
+       int FNCount = 0;
+       int NameCount = 0;
+       int NicknameCount = 0;
+       int ADRCount = 0;
+       int EmailCount = 0;
+       int IMPPCount = 0;
+       int TelCount = 0;
+       int LangCount = 0;
+       int TZCount = 0;
+       int GeoCount = 0;
+       int URLCount = 0;
+       int RelatedCount = 0;
+       int TitleCount = 0;
+       int RoleCount = 0;
+       int OrgCount = 0;
+       int NoteCount = 0;
+       int CategoryCount = 0;
+       int PhotoCount = 0;
+       int LogoCount = 0;
+       int SoundCount = 0;
+       int CalAdrCount = 0;
+       int CalReqAdrCount = 0;
+       int FreeBusyCount = 0;
+       int KeyCount = 0;
+       int VendorCount = 0;
+       int XTokenCount = 0;
+       int ItemSeek = 1;
+       //int intValueSeek = 1;
+       
+       wxString strVer;
+    
+    // Setup the version string.
+       
+       strVer.Append(wxT("-//Xestia//Address Book Version "));
+       strVer.Append(wxT(XSDAB_VERSION));
+       strVer.Append(wxT("//KW"));
+       
+       ContactDatav3.AddRaw(wxT("BEGIN"), wxT("VCARD"));
+       ContactDatav3.AddRaw(wxT("VERSION"), wxT("3.0"));
+       ContactDatav3.AddRaw(wxT("PRODID"), strVer);
+
+       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
+        iter != ContactFileLines.end(); ++iter){
+       
+               // Find the colon which splits the start bit from the data part.
+               
+               ContactLine = iter->second;
+               
+               while (ExtraLineSeek == TRUE){
+               
+                       // Check if there is extra data on the next line 
+                       // (indicated by space or tab at the start) and add data.
+               
+                       iter++;
+                       
+                       if (iter == ContactFileLines.end()){
+                       
+                               iter--;
+                               break;
+                       
+                       }                       
+               
+                       wxSPropertyNextLine = iter->second;
+                       
+               
+                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+               
+                               wxSPropertyNextLine.Remove(0, 1);
+                               //wxSPropertyNextLine.Trim(FALSE);
+                               //ContactLine.Trim();
+                               ContactLine.Append(wxSPropertyNextLine);
+               
+                       } else {
+                       
+                               iter--;
+                               ExtraLineSeek = FALSE;
+                       
+                       }
+               
+               }
+
+               ContactLineLen = ContactLine.Len();
+               
+               // Make sure we are not in quotation mode.
+               // Make sure colon does not have \ or \\ before it.
+               
+               wxSProperty.Clear();
+               
+               for (int i = 0; i <= ContactLineLen; i++){
+               
+                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+                       
+                               PropertyFind = FALSE;
+                       
+                       } else if (PropertyFind == TRUE){
+                       
+                               wxSProperty.Append(ContactLine.Mid(i, 1));
+                       
+                       }               
+               
+                       if (ContactLine.Mid(i, 1) == wxT("\"")){
+                       
+                               if (QuoteMode == TRUE){
+                               
+                                       QuoteMode = FALSE;
+                               
+                               } else {
+                       
+                                       QuoteMode = TRUE;
+                                       
+                               }
+                       
+                       }
+                       
+                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+                       
+                               QuoteBreakPoint = i;
+                               break;
+                       
+                       }
+               
+               }
+               
+               // Split that line at the point into two variables (ignore the colon).
+               
+               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
+               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
+               
+               // Add the data into the contact editor depending on what it is.
+               
+               if (wxSProperty == wxT("FN")){
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 4;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       //SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 3;
+                       
+                       if (FNFirst == FALSE){
+
+                               ContactDatav3.AddRaw(wxT("FN"), wxSPropertySeg2);
+                               
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-FN;X-FIRST=TRUE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                                                               
+                               }
+                               FNFirst = TRUE;
+                       
+                       } else {
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-FN"), wxSPropertySeg2);
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-FN;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))),
+                                               wxSPropertySeg2);
+                               
+                               }
+                       
+                       }       
+               
+               } else if (wxSProperty == wxT("N") && NameProcessed == FALSE){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 3;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+
+                       intPrevValue = 2;
+
+                       ContactDatav3.AddRaw(wxT("N"), wxSPropertySeg2);
+                       
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+
+
+                       } else {
+                       
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-N;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
+                       
+                       }
+                       
+                       NameProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){
+               
+                       // Process Data.
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+
+                       intPrevValue = 4;
+               
+                       ContactDatav3.AddRaw(wxT("X-ADDRESSBOOKSERVER-KIND"), wxSPropertySeg2);
+               
+                       KindProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("MEMBER")){
+               
+                       // Process Data.
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+
+                       intPrevValue = 6;
+
+                       ContactDatav3.AddRaw(wxT("X-ADDRESSBOOKSERVER-MEMBER"), wxSPropertySeg2);
+               
+               } else if (wxSProperty == wxT("NICKNAME")){
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 10;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+
+                       intPrevValue = 9;
+                       
+                       if (NicknameFirst == FALSE){
+
+                               ContactDatav3.AddRaw(wxT("NICKNAME"), wxSPropertySeg2);
+                               
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME;X-FIRST=TRUE;") 
+                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
+                               
+                               }
+                               NicknameFirst = TRUE;
+                               ItemSeek++;
+                       
+                       } else {
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME"), wxSPropertySeg2);
+
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
+                                               wxSPropertySeg2);
+                                                               
+                               }
+                       
+                       }
+                       
+
+               } else if (wxSProperty == wxT("GENDER") && GenderProcessed == FALSE){
+               
+                       // Do PID/ALTID/LANG things.
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 8;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 7;
+                       
+                       if (wxSPropertySeg2.Mid(1, 1) == wxT(";")){
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;X-GENDERTEXT=\"") + wxSPropertySeg2.Mid(2) + wxT("\""), wxSPropertySeg2.Mid(0, 1));
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;X-GENDERTEXT=\"") + wxSPropertySeg2.Mid(2) + wxT("\";") 
+                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), 
+                                               wxSPropertySeg2.Mid(0, 1));                             
+                                                               
+                               }
+                       
+                       } else {
+
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER"), wxSPropertySeg2);
+       
+                               } else {
+                                       
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                                                               
+                               }
+                       
+                       }
+                       
+                       GenderProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("BDAY") && BirthdayProcessed == FALSE){
+
+                       // Process date. Preserve the remainder in the string.
+                               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool BirthdayText = FALSE;
+                       bool FirstToken = TRUE;
+                       bool NoYear = FALSE;            
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       wxString strResults;            
+               
+                       intPrevValue = 5;
+               
+                       // Look for type before continuing.
+
+                       if (wxSPropertySeg2.Mid(0, 2) == wxT("--")){
+                       
+                               strResults.Append(wxT("1604-"));
+                               NoYear = TRUE;
+
+                               strResults.Append(wxSPropertySeg2.Mid(2, 2) + wxT("-"));
+                               strResults.Append(wxSPropertySeg2.Mid(4, 2));
+                       
+                       } else {
+                       
+                               strResults.Append(wxSPropertySeg2.Mid(0, 4) + wxT("-"));
+                               strResults.Append(wxSPropertySeg2.Mid(4, 2) + wxT("-"));
+                               strResults.Append(wxSPropertySeg2.Mid(6, 2));
+
+                       }
+                       
+
+                       
+                       if (NoYear == TRUE){
+
+                               ContactDatav3.AddRaw(wxT("BDAY;X-APPLE-OMIT-YEAR=1604"), strResults);
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY"), wxSPropertySeg2);
+       
+                               } else {
+                                       
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                               
+                               }
+                       
+                       } else {
+                       
+                               ContactDatav3.AddRaw(wxT("BDAY"), strResults);
+
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY"), wxSPropertySeg2);
+
+                               } else {
+                                       
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                                                               
+                               }
+                       
+                       }
+                       
+                       BirthdayProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("ANNIVERSARY") && AnniversaryProcessed == FALSE){
+                       
+                       // Process date. Preserve the remainder in the string.
+                               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool AnniversaryText = FALSE;
+                       bool FirstToken = TRUE;                         
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 13;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       wxString strResults;
+                       bool NoYear = FALSE;
+               
+                       intPrevValue = 12;
+               
+                       // Look for type before continuing.
+               
+                       if (wxSPropertySeg2.Mid(0, 2) == wxT("--")){
+                       
+                               strResults.Append(wxT("1604-"));
+                               NoYear = TRUE;
+
+                               strResults.Append(wxSPropertySeg2.Mid(2, 2) + wxT("-"));
+                               strResults.Append(wxSPropertySeg2.Mid(4, 2));
+                       
+                       } else {
+                       
+                               strResults.Append(wxSPropertySeg2.Mid(0, 4) + wxT("-"));
+                               strResults.Append(wxSPropertySeg2.Mid(4, 2) + wxT("-"));
+                               strResults.Append(wxSPropertySeg2.Mid(6, 2));
+
+                       }
+                       
+
+                       
+                       if (NoYear == TRUE){
+
+                               ContactDatav3.AddRaw(wxT("ANNIVERSARY;X-APPLE-OMIT-YEAR=1604"), strResults);
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY"), wxSPropertySeg2);
+
+                               } else {
+                                       
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                                                               
+                               }
+                       
+                       } else {
+                       
+                               ContactDatav3.AddRaw(wxT("ANNIVERSARY"), strResults);
+
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY"), wxSPropertySeg2);
+       
+                               } else {
+                                       
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                               
+                               }
+                       
+                       }
+                       
+                       AnniversaryProcessed = TRUE;
+               
+               } else if (wxSProperty == wxT("TZ")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 4;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 3;
+                       
+                       // Look for type before continuing.
+                       
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-TZ"), wxSPropertySeg2);
+       
+                       } else {
+                                       
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-TZ;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                               
+                       }
+               
+               } else if (wxSProperty == wxT("ADR")){
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString AddressLabel;
+                       wxString AddressLang;
+                       wxString AddressAltID;
+                       wxString AddressPID;
+                       wxString AddressTokens;
+                       wxString AddressGeo;
+                       wxString AddressTimezone;
+                       wxString AddressType;
+                       wxString AddressMediatype;
+                       wxString AddressPOBox;
+                       wxString AddressExtended;
+                       wxString AddressStreet;
+                       wxString AddressLocality;
+                       wxString AddressCity;
+                       wxString AddressRegion;
+                       wxString AddressPostalCode;
+                       wxString AddressCountry;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 4;
+                       
+                        // TODO: Check in value for X-ABLabel and use it if it is there.
+                    
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".ADR"), wxSPropertySeg2);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Address"));
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-ADR"), wxSPropertySeg2);
+       
+                       } else {
+
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".ADR"), wxSPropertySeg2);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Address"));
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-ADR;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                                                               
+                       }
+                       
+                       ItemSeek++;
+               
+               } else if (wxSProperty == wxT("EMAIL")){
+               
+                       // TODO: Continue from here! See ADR for good example (Replace initer with intPrevValue).
+                       // Remove inserted comma for Extra Tokens in frmContactEditor.cpp
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;
+                       std::map<int, int>::iterator SPoint;
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString AddressLabel;
+                       wxString AddressLang;
+                       wxString AddressAltID;
+                       wxString AddressPID;
+                       wxString AddressTokens;
+                       wxString AddressGeo;
+                       wxString AddressTimezone;
+                       wxString AddressType;
+                       wxString AddressMediatype;
+                       wxString AddressPOBox;
+                       wxString AddressExtended;
+                       wxString AddressStreet;
+                       wxString AddressLocality;
+                       wxString AddressCity;
+                       wxString AddressRegion;
+                       wxString AddressPostalCode;
+                       wxString AddressCountry;
+                       bool AfterFirstProperty = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitSeek = 0;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitPoint = 0;
+
+                       
+                       intPrevValue = 6;
+                       
+                    // TODO: Check in value for X-ABLabel and use it if it is there.
+                    
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2);
+                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address"));
+                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL"), wxSPropertySeg2);
+                                                
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2);
+                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address"));
+                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                        
+                    }
+                    
+                    ItemSeek++;
+               
+               } else if (wxSProperty == wxT("IMPP")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;
+                       std::map<int, int>::iterator SPoint;
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString IMPPType;
+                       wxString IMPPAddress;
+                       bool AfterFirstProperty = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitSeek = 0;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;
+                       int intType = 0;
+                       int intSplitPoint = 0;
+
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       intPrevValue = 5;
+                       
+                        // TODO: Check in value for X-ABLabel and use it if it is there.
+                   
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".IMPP"), wxSPropertySeg2);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Instant Message"));
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-IMPP"), wxSPropertySeg2);
+       
+                       } else {
+
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".IMPP"), wxSPropertySeg2);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Instant Message"));
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-IMPP;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                                                               
+                       }
+                    
+                        ItemSeek++;
+               
+               } else if (wxSProperty == wxT("TEL")){
+               
+                       // Check TEL and make sure it is functioning properly.
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int> TypeSplitPoints;
+                       std::map<int, int> TypeSplitLength;
+                       std::map<int, int>::iterator SLiter;
+                       std::map<int, int>::iterator SPoint;                    
+                       std::map<int, int>::iterator TSLiter;
+                       std::map<int, int>::iterator TSPoint;
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString TelType;
+                       wxString TelNumber;
+                       wxString TelTypeUI;
+                       wxString TelTypeDetail;
+                       wxString TelTypeOut;
+                       wxString FinalFriendlyString;
+                       bool AfterFirstProperty = FALSE;
+                       bool FirstToken = TRUE;
+                       bool SkipFirst = TRUE;          
+                       int intSplitSeek = 0;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitPoint = 0;
+
+                       
+                       intPrevValue = 4;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       // Look for type before continuing.
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               intPrevValue = intiter->second;
+                               
+                               if (PropertyName == wxT("TYPE")){
+                               
+                                       // Process each value in type and translate each
+                                       // part.
+                               
+                                       // Strip out the quotes if they are there.
+
+                                       int intPropertyValueLen = PropertyValue.Len();
+                               
+                                       if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
+                                       
+                                               PropertyValue.Trim();
+                                               PropertyValue.RemoveLast();
+                                       
+                                       }                               
+                               
+                                       if (PropertyValue.Mid(0, 1) == wxT("\"")){
+                                       
+                                               PropertyValue.Remove(0, 1);
+                                       
+                                       }
+                                       
+                                       TelTypeDetail = PropertyValue;
+                                       
+                                       intSplitSize = 0;
+                                       intSplitsFound = 0;
+                                       intSplitPoint = 0;
+                                       
+                                       for (int i = 0; i <= intPropertyValueLen; i++){
+                       
+                                               intSplitSize++;
+                       
+                                               if (PropertyValue.Mid(i, 1) == wxT(",") && PropertyValue.Mid((i - 1), 1) != wxT("\\")){
+                       
+                                                       if (intSplitsFound == 0){
+
+                                                               TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
+                                                               TypeSplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                                       } else {
+                                       
+                                                               TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
+                                                               TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));
+                                       
+                                                       }                       
+
+                                                       intSplitsFound++;
+                                                       i++;
+                                                       intSplitPoint = i;
+                                                       intSplitSize = 0;
+                       
+                                               }
+                       
+                                       }
+                                       
+                                       TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
+                                       TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));                                                           
+                               
+                                       int intTypeSeek = 0;
+                               
+                                       for (std::map<int, int>::iterator typeiter = TypeSplitPoints.begin(); 
+                                       typeiter != TypeSplitPoints.end(); ++typeiter){
+
+                                               wxString TypePropertyName;
+                                               
+                                               TSLiter = TypeSplitLength.find(typeiter->first);
+                                               
+                                               TypePropertyName = PropertyValue.Mid(typeiter->second, TSLiter->second);
+                                               
+                                               if (intTypeSeek == 0){
+                                               
+                                               
+                                               } else {
+                                                                                               
+                                                       TelTypeUI.Append(wxT(","));                                                     
+                                               
+                                               }
+                                       
+                                               if (TypePropertyName == wxT("home")){
+                                               
+                                                       intType = 1;
+                                               
+                                               } else if (TypePropertyName == wxT("work")){
+                                               
+                                                       intType = 2;
+                                               
+                                               }
+                                               
+                                               if (TypePropertyName == wxT("text")){                                           
+
+                                                       if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Text")); } else { FinalFriendlyString.Append(_("Text")); }
+
+                                                       TelTypeOut.Append(wxT(";"));                                            
+                                                       TelTypeOut.Append(wxT("type=TEXT"));
+                                               
+                                               } else if (TypePropertyName == wxT("voice")){
+                                               
+                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Voice")); } else { FinalFriendlyString.Append(_("Voice")); }
+
+                                                       TelTypeOut.Append(wxT(";"));                                            
+                                                       TelTypeOut.Append(wxT("type=VOICE"));
+
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("fax")){
+                                               
+                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Fax")); } else { FinalFriendlyString.Append(_("Fax")); }
+                                               
+                                                       TelTypeOut.Append(wxT(";"));
+                                                       TelTypeOut.Append(wxT("type=FAX"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("cell")){
+                                               
+                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Mobile")); } else { FinalFriendlyString.Append(_("Mobile")); }
+                                               
+                                                       TelTypeOut.Append(wxT(";"));
+                                                       TelTypeOut.Append(wxT("type=CELL"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("video")){
+                                               
+                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Video")); } else { FinalFriendlyString.Append(_("Video")); }
+
+                                                       TelTypeOut.Append(wxT(";"));
+                                                       TelTypeOut.Append(wxT("type=VIDEO"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("pager")){
+                                               
+                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Pager")); } else { FinalFriendlyString.Append(_("Pager")); }
+
+                                                       TelTypeOut.Append(wxT(";"));
+                                                       TelTypeOut.Append(wxT("type=PAGER"));
+                                                       intTypeSeek++;
+                                               
+                                               } else if (TypePropertyName == wxT("textphone")){
+                                               
+                                                       //if (!TelTypeOut.IsEmpty()){ TelTypeOut.Append(wxT(";")); }
+                                               
+                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Textphone")); } else { FinalFriendlyString.Append(_("Textphone")); }
+                                               
+                                                       TelTypeOut.Append(wxT(";"));
+                                                       TelTypeOut.Append(wxT("type=TEXTPHONE"));
+                                                       intTypeSeek++;
+                                               
+                                               }
+                                               
+                                               
+                                       
+                                       }
+                               
+                               }
+                               
+                               
+                       
+                       }
+                       
+                       wxString FinalTel;
+                       
+                       // Remove 'tel:' if it is being used.
+                       
+                       if (wxSPropertySeg2.Mid(0, 4) == wxT("tel:")){
+                       
+                               FinalTel = wxSPropertySeg2.Mid(4);
+                       
+                       } else {
+                       
+                               FinalTel = wxSPropertySeg2;
+                       
+                       }
+                       
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                       
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".TEL") + TelTypeOut, FinalTel);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), FinalFriendlyString);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-TEL"), wxSPropertySeg2);
+       
+                       } else {
+
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".TEL") + TelTypeOut, FinalTel);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), FinalFriendlyString);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-TEL;") + wxSPropertySeg1.Mid(4), wxSPropertySeg2);
+                               
+                       }
+                       
+                       ItemSeek++;
+               
+               } else if (wxSProperty == wxT("LANG")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 5;
+                       
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-LANG"), wxSPropertySeg2);
+                        
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-LANG;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                        
+                    }
+               
+               } else if (wxSProperty == wxT("GEO")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString GeoType;
+                       wxString GeoData;                       
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 4;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       wxString strFinalGeoValue;
+                       wxString strFinalType;
+                       
+                       if (wxSPropertySeg2.Mid(0, 3) == wxT("geo")){
+                       
+                               strFinalGeoValue = wxSPropertySeg2.Mid(5);
+                               strFinalType = wxT("geo");
+                       
+                       } else {
+                       
+                               wxStringTokenizer wSTSplit(wxSPropertySeg2, wxT(":")); 
+                               strFinalType = wSTSplit.GetNextToken();
+                               strFinalGeoValue = wSTSplit.GetNextToken();
+                       
+                       }
+                       
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType, wxSPropertySeg2);
+                        
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                        
+                    }
+               
+               } else if (wxSProperty == wxT("RELATED")){
+                       
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString RelatedType;
+                       wxString RelatedTypeOriginal;                   
+                       wxString RelatedName;           
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 9;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 8;
+                       
+                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
+                       
+                       wxString strDetail;
+                       
+                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+                       intiter != SplitPoints.end(); ++intiter){
+                       
+                               SLiter = SplitLength.find(intiter->first);
+                       
+                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second - 1));
+                               
+                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();                          
+                               PropertyValue = PropertyElement.GetNextToken();
+                               
+                               if (PropertyName == wxT("TYPE") && FirstToken == TRUE){
+                               
+                                       if (PropertyValue == wxT("contact")){
+               
+                                               strDetail = _("Contact");
+               
+                                       } else if (PropertyValue == wxT("acquaintance")){
+               
+                                               strDetail = _("Acquaintance");
+               
+                                       } else if (PropertyValue == wxT("friend")){
+               
+                                               strDetail = _("Friend");
+               
+                                       } else if (PropertyValue == wxT("met")){
+               
+                                               strDetail = _("Met");
+               
+                                       } else if (PropertyValue == wxT("co-worker")){
+               
+                                               strDetail = _("Co-worker");
+               
+                                       } else if (PropertyValue == wxT("colleague")){
+               
+                                               strDetail = _("Colleague");
+               
+                                       } else if (PropertyValue == wxT("co-resident")){
+               
+                                               strDetail = _("Co-resident");
+               
+                                       } else if (PropertyValue == wxT("neighbor")){
+               
+                                               strDetail = _("Neighbour");
+               
+                                       } else if (PropertyValue == wxT("child")){
+               
+                                               strDetail = _("Child");
+               
+                                       } else if (PropertyValue == wxT("parent")){
+               
+                                               strDetail = _("Parent");
+               
+                                       } else if (PropertyValue == wxT("sibling")){
+               
+                                               strDetail = _("Sibling");
+               
+                                       } else if (PropertyValue == wxT("spouse")){
+               
+                                               strDetail = _("Spouse");
+               
+                                       } else if (PropertyValue == wxT("kin")){
+               
+                                               strDetail = _("Kin");
+               
+                                       } else if (PropertyValue == wxT("muse")){
+               
+                                               strDetail = _("Muse");
+               
+                                       } else if (PropertyValue == wxT("crush")){
+               
+                                               strDetail = _("Crush");
+               
+                                       } else if (PropertyValue == wxT("date")){
+               
+                                               strDetail = _("Date");
+               
+                                       } else if (PropertyValue == wxT("sweetheart")){
+               
+                                               strDetail = _("Sweetheart");
+               
+                                       } else if (PropertyValue == wxT("me")){
+               
+                                               strDetail = _("Me");
+               
+                                       } else if (PropertyValue == wxT("agent")){
+               
+                                               strDetail = _("Agent");
+               
+                                       } else if (PropertyValue == wxT("emergency")){
+               
+                                               strDetail = _("Emergency");
+               
+                                       } else {
+               
+                                               strDetail = PropertyValue;
+               
+                                       }
+                                       
+                                       FirstToken = FALSE;
+                               
+                               }
+                               
+                       }
+                       
+                       if (strDetail.IsEmpty()){
+                       
+                               strDetail = _("Relation");
+                       
+                       }
+                       
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                       
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABRELATEDNAMES"), wxSPropertySeg2);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), strDetail);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-RELATED"), wxSPropertySeg2);
+       
+                       } else {
+
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABRELATEDNAMES"), wxSPropertySeg2);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), strDetail);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-RELATED;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                                                               
+                       }
+                       
+                       ItemSeek++;
+               
+               } else if (wxSProperty == wxT("URL")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 4;
+                       
+                       // Todo: Check for X-ABLabel.
+                       
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                       
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".URL"), wxSPropertySeg2);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("URL"));
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-URL"), wxSPropertySeg2);
+       
+                       } else {
+
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".URL"), wxSPropertySeg2);
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("URL"));
+                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-URL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                               
+                       }
+                       
+                       ItemSeek++;
+               
+               } else if (wxSProperty == wxT("TITLE")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 6;
+                       
+                       // Look for type before continuing.
+                       
+                       if (TitleFirst == FALSE){
+
+                               ContactDatav3.AddRaw(wxT("TITLE"), wxSPropertySeg2);
+                               
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE;X-FIRST=TRUE;") 
+                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
+                               
+                               }
+                               TitleFirst = TRUE;
+                               ItemSeek++;
+                       
+                       } else {
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE"), wxSPropertySeg2);
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
+                                               wxSPropertySeg2);
+                               
+                               }
+                       
+                       }
+                       
+               } else if (wxSProperty == wxT("ROLE")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 5;
+                       
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-ROLE"), wxSPropertySeg2);
+
+                       } else {
+                                       
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-ROLE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                               
+                       }
+                       
+               } else if (wxSProperty == wxT("ORG")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 4;
+                       
+                       if (OrganisationFirst == FALSE){
+
+                               ContactDatav3.AddRaw(wxT("ORG"), wxSPropertySeg2);
+                               
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ORG;X-FIRST=TRUE;") 
+                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
+                               
+                               }
+                               OrganisationFirst = TRUE;
+                               ItemSeek++;
+                       
+                       } else {
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ORG"), wxSPropertySeg2);
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ORG;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
+                                               wxSPropertySeg2);
+                               
+                               }
+                       
+                       }
+                       
+               } else if (wxSProperty == wxT("NOTE")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 5;
+                       
+                       if (NoteFirst == FALSE){
+
+                               ContactDatav3.AddRaw(wxT("NOTE"), wxSPropertySeg2);
+                               
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE;X-FIRST=TRUE;") 
+                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
+                                                               
+                               }
+                               NoteFirst = TRUE;
+                               ItemSeek++;
+                       
+                       } else {
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE"), wxSPropertySeg2);
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
+                                               wxSPropertySeg2);
+                               
+                               }
+                       
+                       }
+                       
+               } else if (wxSProperty == wxT("CATEGORIES")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       wxString PropertyType;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 12;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 11;
+                       
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES"), wxSPropertySeg2);
+   
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+
+                    }
+                       
+               } else if (wxSProperty == wxT("PHOTO")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool FirstToken = TRUE;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPropertyLen = wxSPropertySeg2.Len();
+                       SplitPoints.clear();
+                       SplitLength.clear();
+                       intSplitsFound = 0;
+                       intSplitSize = 0;                       
+                       
+                       CaptureString(&wxSPropertySeg2, FALSE);
+                       
+                       for (int i = 0; i <= intPropertyLen; i++){
+               
+                               intSplitSize++;
+                       
+                               if (wxSPropertySeg2.Mid(i, 1) == wxT(";")){
+                       
+                                       intSplitsFound++;
+                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
+                                       
+                                       if (intSplitsFound == 6){ 
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                               break; 
+                                               
+                                       } else {
+                                       
+                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                                       
+                                       }
+                                       
+                                       intSplitSize = 0;                                       
+                       
+                               }
+               
+                       }
+                       
+                       wxString wxSPhotoURI;
+                       wxString wxSPhotoMIME;
+                       wxString wxSPhotoEncoding;
+                       wxString wxSPhotoData;
+                       std::string base64enc;
+                       
+                       if (intSplitsFound = 0){
+                       
+                       } else {
+                       
+                               std::map<int, int>::iterator striter;
+                       
+                               striter = SplitLength.find(1);
+                       
+                               wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":"));
+                       
+                               while (wSTDataType.HasMoreTokens() == TRUE){
+                               
+                                       wxSPhotoURI = wSTDataType.GetNextToken();
+                                       wxSPhotoMIME = wSTDataType.GetNextToken();
+                                       break;
+                               
+                               }                       
+                       
+                               wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(","));                    
+                       
+                               while (wSTDataInfo.HasMoreTokens() == TRUE){
+                               
+                                       wxSPhotoEncoding = wSTDataInfo.GetNextToken();
+                                       wxSPhotoData = wSTDataInfo.GetNextToken();                                      
+                                       base64enc = wxSPhotoData.mb_str();
+                                       break;
+                               
+                               }
+                       
+                       }
+                       
+                       
+                       if (PhotoFirst == FALSE){
+
+                               bool PhotoKeepData = FALSE;
+
+                               wxString wxSPhotoMIMEF;
+                               
+                               if (wxSPhotoMIME == wxT("image/png")){
+                                       wxSPhotoMIMEF = wxT("PNG");
+                               } else if (wxSPhotoMIME == wxT("image/jpeg")){
+                                       wxSPhotoMIMEF = wxT("JPEG");
+                               } else if (wxSPhotoMIME == wxT("image/gif")){
+                                       wxSPhotoMIMEF = wxT("GIF");
+                               } else if (wxSPhotoMIME == wxT("image/bmp")){
+                                       wxSPhotoMIMEF = wxT("BMP");                     
+                               } else {
+                                       wxSPhotoMIMEF = wxT("UNKNOWN");
+                                       PhotoKeepData = TRUE;
+                               }
+
+                               ContactDatav3.AddRaw(wxT("PHOTO;ENCODING=b;TYPE=") + wxSPhotoMIMEF, wxSPhotoData);
+
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+       
+                               } else {
+
+                                       if (PhotoKeepData == TRUE){
+                               
+                                               ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;X-FIRST=TRUE;") 
+                                                       + ContactLine.Mid((intPrevValue - 1), ((QuoteBreakPoint + 1) - (intPrevValue))), wxSPropertySeg2);
+                                               
+                                       } else {
+
+                                               ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;X-FIRST=TRUE;") 
+                                                       + ContactLine.Mid((intPrevValue - 1), ((QuoteBreakPoint + 1) - (intPrevValue))), wxT(""));
+                                       
+                                       }
+                               
+                               }
+                               PhotoFirst = TRUE;
+                               ItemSeek++;
+                       
+                       } else {
+                       
+                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO"), wxSPropertySeg2);
+       
+                               } else {
+                               
+                                       ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
+                                               wxSPropertySeg2);
+                               }
+                       
+                       }
+                       
+               } else if (wxSProperty == wxT("LOGO")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool FirstToken = TRUE;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 6;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 5;
+                       
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-LOGO"), wxSPropertySeg2);
+
+                       } else {
+                        
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-LOGO;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                        
+                       }
+                       
+               } else if (wxSProperty == wxT("SOUND")) {
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool FirstToken = TRUE;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 6;
+                       
+                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-SOUND"), wxSPropertySeg2);
+
+                       } else {
+                        
+                               ContactDatav3.AddRaw(wxT("X-VCARD4-SOUND;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+                        
+                       }
+                       
+               } else if (wxSProperty == wxT("CALURI")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 8;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 7;
+                       
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI"), wxSPropertySeg2);
+
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+
+                    }
+               
+               } else if (wxSProperty == wxT("CALADRURI")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 11;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 10;
+                       
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI"), wxSPropertySeg2);
+
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+
+                    }
+               
+               } else if (wxSProperty == wxT("FBURL")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;                 
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 7;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 6;
+                       
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL"), wxSPropertySeg2);
+
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+
+                    }
+               
+               } else if (wxSProperty == wxT("KEY")){
+               
+                       int intPropertyLen = wxSPropertySeg1.Len();
+                       std::map<int, int> SplitPoints;
+                       std::map<int, int> SplitLength;
+                       std::map<int, int>::iterator SLiter;                    
+                       wxString PropertyData;
+                       wxString PropertyName;
+                       wxString PropertyValue;
+                       wxString PropertyTokens;
+                       bool AfterFirstToken = FALSE;
+                       bool FirstToken = TRUE;
+                       int intSplitsFound = 0;
+                       int intSplitSize = 0;
+                       int intPrevValue = 5;
+                       int intPref = 0;                        
+                       int intType = 0;
+                       int intSplitSeek = 0;
+
+                       
+                       intPrevValue = 4;
+                                               
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-KEY"), wxSPropertySeg2);
+
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-KEY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+
+                    }
+               
+               } else if (wxSProperty == wxT("UID")){
+               
+                       ContactDatav3.AddRaw(wxT("UID"), wxSPropertySeg2);
+               
+               } else if (wxSProperty.Mid(0, 3) == wxT("VND")){
+               
+                       // Split the Vendor three ways.
+                       
+                       wxStringTokenizer wSTVendorDetails(wxSPropertySeg1, wxT("-"));
+                       
+                       wxString wxSVNDID;
+                       wxString wxSVNDPropName;
+
+                       
+                       int intPrevValue = (wxSProperty.Len() + 1);
+
+                       while (wSTVendorDetails.HasMoreTokens() == TRUE){
+                       
+                               wSTVendorDetails.GetNextToken();
+                               wxSVNDID = wSTVendorDetails.GetNextToken();
+                               wxSVNDPropName = wSTVendorDetails.GetNextToken();
+                               break;
+                       
+                       }
+
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty, wxSPropertySeg2);
+
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+
+                    }
+               
+               } else if (wxSProperty.Mid(0, 2) == wxT("X-")){
+               
+
+                       
+                       int intPrevValue = (wxSProperty.Len() + 1);
+                       
+                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
+                        
+                        ContactDatav3.AddRaw(wxSProperty, wxSPropertySeg2);
+
+                    } else {
+                        
+                        ContactDatav3.AddRaw(wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
+
+                    }
+                       
+               }
+               
+               // Reset the variables.
+               
+               QuoteMode = FALSE;
+               PropertyFind = TRUE;
+               ExtraLineSeek = TRUE;
+               ContactLineLen = 0;
+               QuoteBreakPoint = 0;
+               ContactLine.Clear();
+               wxSProperty.Clear();    
+       
+       }
+       
+       ContactDatav3.AddRaw(wxT("END"), wxT("VCARD"));
+       *wxSData = ContactDatav3.WriteString();
+       
+       return TRUE;
+       
+}
+
+bool vCard34Conv::ConvertToV4(wxString *wxSData, vCard *vCardOut){
+       
+       std::map<int, wxString> ContactFileLines;
+       std::map<int, bool> ContactFileProcessed;
+       std::map<int, bool> ContactFileProcessedWorking;
+       std::map<int, wxString>::iterator striter;
+       std::map<int,bool>::iterator iterbool;
+       std::map<int,bool>::iterator iterboolsub;
+       wxString ContactLineRec;
+
+       // Process the received data.
+       
+       wxStringTokenizer wSTContactFileLines(*wxSData, wxT("\r\n"));
+
+       int ContactLineSeek = 0;
+
+       while (wSTContactFileLines.HasMoreTokens() == TRUE){
+
+               ContactLineRec = wSTContactFileLines.GetNextToken();
+               ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLineRec));
+               ContactFileProcessed.insert(std::make_pair(ContactLineSeek, FALSE));
+               ContactLineSeek++;              
+       
+       }
+       
+       bool QuoteMode = FALSE;
+       bool PropertyFind = TRUE;
+       bool HasExtraNicknames = FALSE;
+       bool IgnoreGender = FALSE;
+       bool ExtraLineSeek = TRUE;
+       bool ExtraLineSeekSub = TRUE;
+       bool BirthdayProcessed = FALSE;
+       bool AnniversaryProcessed = FALSE;
+       bool FNProcessed = FALSE;
+       bool GenderProcessed = FALSE;
+       bool NameProcessed = FALSE;
+       bool FNFirst = FALSE;
+       bool NicknameFirst = FALSE;
+       bool TitleFirst = FALSE;
+       bool OrganisationFirst = FALSE;
+       bool NoteFirst = FALSE;
+       bool PhotoFirst = FALSE;
+       bool LogoFirst = FALSE;
+       bool NameFirst = FALSE;
+       bool FoundData = FALSE;
+       int intExtraNickname = 0;
+       wxString wxSProperty;
+       wxString wxSPropertyVCARD4;
+       wxString wxSPropertySeg1;
+       wxString wxSPropertySeg2;
+       wxString wxSPropertyNextLine;
+       wxString ContactLine;
+       wxString ContactLineSub;
+       wxString PropertyName;
+       wxString PropertyValue;
+       wxString PropertyDataStr;
+       int ContactLineLen = 0;
+       int ContactLineSubLen = 0;
+       int QuoteBreakPoint = 0;
+       int intPrevValueSub = 0;
+
+       std::map<wxString, wxString> PropertyData;
+       std::map<wxString, bool> PropertyLock;
+       std::map<wxString, wxString> TempPropertyData;
+       std::map<wxString, bool> TempPropertyLock;
+       std::map<int, int> TempSplitPoints;
+       std::map<int, int> TempSplitLength;
+       std::map<int, int>::iterator SLiter;
+
+       wxString PropertFindSub;
+       wxString wxSPropertySub;
+       wxString wxSPropertySeg1Sub;
+       wxString wxSPropertySeg2Sub;
+       wxString wxSPropertyValues;
+       wxString wxSPropertyData;
+       wxString wxSPropertyNameConv;
+       wxString wxSPropertyXVCard4Value;
+       wxString ItemProcString;
+       
+       bool XVCard4Value = FALSE;
+       bool VCard3Value = FALSE;
+       bool SeekItemData = FALSE;
+       
+       wxString strVer;
+    
+       // Setup the version string.
+       
+       strVer.Append(wxT("-//Xestia//Address Book Version "));
+       strVer.Append(wxT(XSDAB_VERSION));
+       strVer.Append(wxT("//KW"));
+       
+       vCardOut->AddRaw(wxT("BEGIN"), wxT("VCARD"));
+       vCardOut->AddRaw(wxT("VERSION"), wxT("4.0"));
+       vCardOut->AddRaw(wxT("PRODID"), strVer);
+       
+               // FN
+               // NICKNAME
+               // TITLE
+               // ORG
+               // NOTE
+               // PHOTO
+               
+       // Process the properties which have X-FIRST.
+       
+       // Clone the ContactFileProcessed into ContactFileProcessedWorking.
+
+       ContactFileProcessedWorking.insert(ContactFileProcessed.begin(), ContactFileProcessed.end());
+
+       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
+        iter != ContactFileLines.end(); ++iter){
+        
+               ExtraLineSeek = TRUE;
+
+               iterbool = ContactFileProcessed.find(iter->first);
+               
+               ContactLine = iter->second;
+               
+               // Ignore certain variables as they are not needed.
+               
+               if (ContactLine == wxT("BEGIN:VCARD") || 
+               ContactLine == wxT("END:VCARD") || 
+               ContactLine.Mid(0, 8) == wxT("VERSION:") || 
+               ContactLine.Mid(0, 7) == wxT("PRODID:") || 
+               ContactLine.Mid(0, 5) == wxT("X-AIM") || 
+               ContactLine.Mid(0, 5) == wxT("X-MSN") || 
+               ContactLine.Mid(0, 5) == wxT("X-ICQ") || 
+               ContactLine.Mid(0, 10) == wxT("X-GADUGADU") || 
+               ContactLine.Mid(0, 7) == wxT("X-YAHOO") || 
+               ContactLine.Mid(0, 7) == wxT("X-SKYPE") || 
+               ContactLine.Mid(0, 8) == wxT("X-JABBER") ||
+               ContactLine.Mid(0, 4) == wxT("REV:")){
+                       
+                       iterbool->second = TRUE;
+                       continue;
+                       
+               }
+               
+               if (iterbool->second == TRUE){
+                       
+                       continue;
+                       
+               }
+               
+               if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){
+               
+                       continue;
+               
+               }
+       
+               if (ContactLine.Mid(0, 4) == wxT("item")){
+               
+                       // Line is a itemn... so ignore.
+               
+                       continue;
+               
+               }
+               
+               std::map<int,int> DataLineProcess;
+               std::map<int, bool>::iterator DLSLiter;
+               std::map<int,int> DataLineProcessOriginal;
+               int DataLineSeek = 0;
+               int DataLineSeekOrig = 0;
+
+               std::map<int,wxString>::iterator itersub = iter;
+               DataLineProcessOriginal.insert(std::make_pair(DataLineSeekOrig, iterbool->first));
+               DataLineSeekOrig++;
+
+               while (ExtraLineSeek == TRUE){
+               
+                       // Check if there is extra data on the next line 
+                       // (indicated by space or tab at the start) and add data.
+               
+                       itersub++;
+
+                       if (itersub == ContactFileLines.end()){
+
+                               break;
+
+                       }
+
+                       iterboolsub = ContactFileProcessed.find(itersub->first);
+
+                       if (iterboolsub == ContactFileProcessed.end()){
+                       
+                               break;
+                       
+                       }
+                       
+                       if (iterboolsub->second == TRUE){
+                       
+                               continue;
+                       
+                       }               
+               
+                       wxSPropertyNextLine = itersub->second;
+               
+                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+               
+                               wxSPropertyNextLine.Remove(0, 1);
+                               //wxSPropertyNextLine.Trim(FALSE);
+                               //ContactLine.Trim();
+                               ContactLine.Append(wxSPropertyNextLine);
+                               DataLineProcessOriginal.insert(std::make_pair(DataLineSeekOrig, iterboolsub->first));
+                               DataLineSeekOrig++;
+                               //iterboolsub->second = TRUE;
+               
+                       } else {
+                       
+                               ExtraLineSeek = FALSE;
+                       
+                       }
+               
+               }
+               
+               ContactLineLen = ContactLine.Len();
+               
+               for (int i = 0; i <= ContactLineLen; i++){
+               
+                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+                       
+                               PropertyFind = FALSE;
+                       
+                       } else if (PropertyFind == TRUE){
+                       
+                               wxSProperty.Append(ContactLine.Mid(i, 1));
+                       
+                       }               
+               
+                       if (ContactLine.Mid(i, 1) == wxT("\"")){
+                       
+                               if (QuoteMode == TRUE){
+                               
+                                       QuoteMode = FALSE;
+                               
+                               } else {
+                       
+                                       QuoteMode = TRUE;
+                                       
+                               }
+                       
+                       }
+                       
+                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+                       
+                               QuoteBreakPoint = i;
+                               break;
+                       
+                       }
+               
+               }
+
+               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
+               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
+
+               wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1, wxT(";"));
+               wxSProperty = wxSPropertySegSplit.GetNextToken();
+                       
+               // Check what type of property it is.
+               
+               FoundData = FALSE;
+               
+               if ((wxSProperty == wxT("PHOTO") && PhotoFirst == FALSE) ||
+               (wxSProperty == wxT("NICKNAME") && NicknameFirst == FALSE) || 
+               (wxSProperty == wxT("TITLE") && TitleFirst == FALSE) || 
+               (wxSProperty == wxT("FN") && FNFirst == FALSE) || 
+               (wxSProperty == wxT("ORG") && OrganisationFirst == FALSE) ||
+               (wxSProperty == wxT("NOTE") && NoteFirst == FALSE)){
+                       
+                       wxSPropertyVCARD4 = wxT("X-VCARD4-") + wxSProperty;
+                       intPrevValueSub = (wxSPropertyVCARD4.Len() + 2);
+                       
+                       for (std::map<int,wxString>::iterator itersub = ContactFileLines.begin(); 
+                       itersub != ContactFileLines.end(); ++itersub){
+               
+                               //DataLineProcess = DataLineProcessOriginal;
+                               //DataLineSeek = DataLineSeekOrig;
+               
+                               ContactLineSub = itersub->second;
+               
+                               ExtraLineSeekSub = TRUE;
+
+                               iterboolsub = ContactFileProcessed.find(itersub->first);
+                               std::map<int,bool>::iterator iterorig = ContactFileProcessed.find(itersub->first);
+                               //std::map<int,bool>::iterator itersuborig;
+               
+                               // Ignore certain variables as they are not needed.
+               
+                               if (ContactLineSub == wxT("BEGIN:VCARD") || 
+                               ContactLineSub == wxT("END:VCARD") || 
+                               ContactLineSub.Mid(0, 8) == wxT("VERSION:") || 
+                               ContactLineSub.Mid(0, 7) == wxT("PRODID:") || 
+                               ContactLineSub.Mid(0, 5) == wxT("X-AIM") || 
+                               ContactLineSub.Mid(0, 5) == wxT("X-MSN") || 
+                               ContactLineSub.Mid(0, 5) == wxT("X-ICQ") || 
+                               ContactLineSub.Mid(0, 10) == wxT("X-GADUGADU") || 
+                               ContactLineSub.Mid(0, 7) == wxT("X-YAHOO") || 
+                               ContactLineSub.Mid(0, 7) == wxT("X-SKYPE") || 
+                               ContactLineSub.Mid(0, 8) == wxT("X-JABBER") ||
+                               ContactLineSub.Mid(0, 4) == wxT("REV:")){
+                       
+                                       iterboolsub->second = TRUE;
+                                       continue;
+                       
+                               }
+               
+                               if (iterboolsub->second == TRUE){
+
+                                       continue;
+                       
+                               }
+               
+                               if (ContactLineSub.Mid(0, 1) == wxT(" ") || ContactLineSub.Mid(0, 1) == wxT("\t")){
+               
+                                       continue;
+               
+                               }
+       
+                               if (ContactLineSub.Mid(0, 4) == wxT("item")){
+               
+                                       // Line is a itemn... so ignore.
+               
+                                       continue;
+               
+                               }
+               
+                               //std::map<int,wxString>::iterator itersub = iter;
+                               
+                               DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first));
+                               DataLineSeek++;
+
+
+
+                               while (ExtraLineSeekSub == TRUE){
+
+                                       if (itersub == ContactFileLines.end()){
+                                               ExtraLineSeekSub;
+                                               continue;
+                                       } else {
+                                               itersub++;
+
+                                       }
+
+                                       iterboolsub = ContactFileProcessedWorking.find(itersub->first);
+
+                                       wxSPropertyNextLine = itersub->second;
+
+                                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+
+                                               wxSPropertyNextLine.Remove(0, 1);
+                                               //wxSPropertyNextLine.Trim(FALSE);
+                                               //ContactLine.Trim();
+                                               ContactLineSub.Append(wxSPropertyNextLine);
+                                               //iterboolsub->second = TRUE;
+                                               DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first));
+                                               DataLineSeek++;
+
+                                       } else {
+
+                                               itersub--;
+                                               ExtraLineSeekSub = FALSE;
+
+                                       }
+
+                               }
+
+                               /*while (ExtraLineSeekSub == TRUE && iterboolsub != ContactFileProcessedWorking.end()){
+               
+                                       // Check if there is extra data on the next line 
+                                       // (indicated by space or tab at the start) and add data.
+               
+                                       itersub++;
+
+                                       iterboolsub = ContactFileProcessedWorking.find(itersub->first);
+                       
+                                       if (iterboolsub->second == TRUE){
+                       
+                                               continue;
+                       
+                                       }
+                       
+                                       if (itersub == ContactFileLines.end()){
+                       
+                                               break;
+                       
+                                       }                       
+               
+                                       wxSPropertyNextLine = itersub->second;
+               
+                                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+               
+                                               wxSPropertyNextLine.Remove(0, 1);
+                                               //wxSPropertyNextLine.Trim(FALSE);
+                                               //ContactLine.Trim();
+                                               ContactLineSub.Append(wxSPropertyNextLine);
+                                               //iterboolsub->second = TRUE;
+                                               DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first));
+                                               DataLineSeek++;
+               
+                                       } else {
+                       
+                                               itersub--;
+                                               ExtraLineSeekSub = FALSE;
+                       
+                                       }
+
+                                       if (iterboolsub == ContactFileProcessedWorking.end()){
+
+                                               break;
+                                               ExtraLineSeekSub = FALSE;
+
+                                       }
+               
+                               }*/
+               
+                               ContactLineSubLen = ContactLineSub.Len();
+                               PropertyFind = TRUE;
+                               wxSPropertySub.clear();
+                       
+                               for (int i = 0; i <= ContactLineSubLen; i++){
+               
+                                       if ((ContactLineSub.Mid(i, 1) == wxT(";") || ContactLineSub.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+                       
+                                               PropertyFind = FALSE;
+                       
+                                       } else if (PropertyFind == TRUE){
+                       
+                                               wxSPropertySub.Append(ContactLineSub.Mid(i, 1));
+                       
+                                       }               
+               
+                                       if (ContactLineSub.Mid(i, 1) == wxT("\"")){
+                       
+                                               if (QuoteMode == TRUE){
+                                
+                                                       QuoteMode = FALSE;
+                               
+                                               } else {
+                       
+                                                       QuoteMode = TRUE;
+                                       
+                                               }
+                       
+                                       }
+                       
+                                       if (ContactLineSub.Mid(i, 1) == wxT(":") && ContactLineSub.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+                       
+                                               QuoteBreakPoint = i;
+                                               break;
+                       
+                                       }
+               
+                               }
+
+                               if (wxSPropertySub != wxSPropertyVCARD4){
+                       
+                                       wxSPropertySub.clear();
+                                       DataLineSeek = 0;
+                                       DataLineProcess.clear();
+                                       continue;
+                       
+                               }
+
+                               wxSPropertySeg1Sub = ContactLineSub.Mid(0, QuoteBreakPoint);
+                               wxSPropertySeg2Sub = ContactLineSub.Mid((QuoteBreakPoint + 1));
+
+                               // Split the property name data.
+                       
+                               // Strip the X-VCARD4- from the variable.
+                               
+                               wxString wxSPropertyChopped =  wxSPropertySeg1Sub.Mid(9);
+                       
+                               intPrevValueSub = (wxSProperty.Len() + 2);
+                               
+                               SplitValuesData(&wxSPropertyChopped, &TempSplitPoints, &TempSplitLength, intPrevValueSub, &TempPropertyData);
+                               
+                               // Process the splitted data into temporary property data.
+                       
+                               bool FirstToken = TRUE;
+                       
+                               // Look for certain property names and the X-FIRST
+                               // property name.
+                                       
+                               bool ProcessData = FALSE;
+                       
+                               // Check for X-FIRST.
+                       
+                               for (std::map<wxString, wxString>::iterator xfiter = TempPropertyData.begin(); 
+                               xfiter != TempPropertyData.end(); ++xfiter){
+                       
+                                       PropertyName = xfiter->first;
+                                       PropertyValue = xfiter->second;
+                                               
+                                       if (PropertyName == wxT("X-FIRST") && PropertyValue == wxT("TRUE")){
+                               
+                                               ProcessData = TRUE;
+                                               
+                                               if (wxSProperty == wxT("PHOTO")){ PhotoFirst = TRUE; }
+                                               else if (wxSProperty == wxT("NICKNAME")){ NicknameFirst = TRUE; }
+                                               else if (wxSProperty == wxT("TITLE")){ TitleFirst = TRUE; }
+                                               else if (wxSProperty == wxT("FN")){ FNFirst = TRUE; }
+                                               else if (wxSProperty == wxT("ORG")){ OrganisationFirst = TRUE; }
+                                               else if (wxSProperty == wxT("NOTE")){ NoteFirst = TRUE; }
+                                               break;
+                               
+                                       }
+                       
+                               }
+                       
+                               if (ProcessData == FALSE){
+                       
+                                       DataLineProcess.clear();
+                                       DataLineSeek = 0;
+                                       TempPropertyData.clear();
+                       
+                               } else {
+                               
+                                       wxT("PHOTODANCEMATCH!");
+                       
+                                       for (std::map<wxString, wxString>::iterator xfiter = TempPropertyData.begin(); 
+                                       xfiter != TempPropertyData.end(); ++xfiter){
+                       
+                                               PropertyName = xfiter->first;
+                                               PropertyValue = xfiter->second;
+                       
+                                               if (PropertyName == wxT("X-FIRST")){
+                               
+                                                       continue;
+                               
+                                               }
+                               
+                                               PropertyData.insert(std::make_pair(PropertyName, PropertyValue));
+                                               PropertyLock.insert(std::make_pair(PropertyName, FALSE));
+                       
+                                       }
+                               
+                                       // Mark all lines as processed.
+                                       
+                                       for (std::map<int,int>::iterator dpiter = DataLineProcess.begin(); 
+                                       dpiter != DataLineProcess.end(); ++dpiter){
+                                       
+                                               DLSLiter = ContactFileProcessed.find(dpiter->second);
+                                               DLSLiter->second = TRUE;
+                                       
+                                       }
+                                       
+                                       for (std::map<int,int>::iterator dpoiter = DataLineProcessOriginal.begin(); 
+                                       dpoiter != DataLineProcessOriginal.end(); ++dpoiter){
+                                       
+                                               DLSLiter = ContactFileProcessed.find(dpoiter->second);
+                                               DLSLiter->second = TRUE;
+                                       
+                                       }
+                                       
+                                       DataLineProcess.clear();
+                                       DataLineProcessOriginal.clear();
+                                       DataLineSeek = 0;
+                                       DataLineSeekOrig = 0;
+                                       TempSplitPoints.clear();
+                                       TempSplitLength.clear();
+                                       TempPropertyData.clear();
+                                       FoundData = TRUE;
+                                       
+                                       break;
+                       
+                               }
+                               
+                       }
+               
+               } else {
+               
+                       wxSProperty.clear();
+                       wxSPropertySub.Clear();
+                       wxSPropertySeg1.Clear();
+                       wxSPropertySeg2.Clear();
+                       wxSPropertySeg1Sub.Clear();
+                       wxSPropertySeg2Sub.Clear();
+                       wxSPropertyValues.Clear();
+                       wxSPropertyData.Clear();
+                       wxSPropertyXVCard4Value.Clear();
+                       wxSPropertyNameConv.Clear();
+                       PropertyData.clear();
+                       PropertyLock.clear();
+                       ContactLine.clear();
+                       ContactLineSub.clear();
+                       DataLineProcess.clear();
+                       DataLineProcessOriginal.clear();
+                       TempSplitPoints.clear();
+                       TempSplitLength.clear();
+                       wxSPropertyVCARD4.clear();
+                       DataLineSeek = 0;
+                       DataLineSeekOrig = 0;
+                       XVCard4Value = FALSE;
+                       VCard3Value = FALSE;
+               
+               }
+               
+               if (FoundData == FALSE){
+               
+                       wxSProperty.clear();
+                       wxSPropertySub.Clear();
+                       wxSPropertySeg1.Clear();
+                       wxSPropertySeg2.Clear();
+                       wxSPropertySeg1Sub.Clear();
+                       wxSPropertySeg2Sub.Clear();
+                       wxSPropertyValues.Clear();
+                       wxSPropertyData.Clear();
+                       wxSPropertyXVCard4Value.Clear();
+                       wxSPropertyNameConv.Clear();
+                       PropertyData.clear();
+                       PropertyLock.clear();
+                       ContactLine.clear();
+                       ContactLineSub.clear();
+                       DataLineProcess.clear();
+                       DataLineProcessOriginal.clear();
+                       TempSplitPoints.clear();
+                       TempSplitLength.clear();
+                       wxSPropertyVCARD4.clear();
+                       DataLineSeek = 0;
+                       DataLineSeekOrig = 0;
+                       XVCard4Value = FALSE;
+                       VCard3Value = FALSE;
+               
+               }
+               
+               ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1, &wxSPropertySeg2, 
+                       &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, 
+                       &wxSPropertyNameConv, &PropertyData, &PropertyLock, FALSE, &VCard3Value, &XVCard4Value);
+               
+               wxString FinalPropertyData;
+       
+               FinalPropertyData.Append(wxSPropertyNameConv);
+       
+               for (std::map<wxString, wxString>::iterator striter = PropertyData.begin(); 
+               striter != PropertyData.end(); ++striter){
+
+                       FinalPropertyData.Append(wxT(";"));             
+                       FinalPropertyData.Append(striter->first);
+                       FinalPropertyData.Append(wxT("="));
+                       FinalPropertyData.Append(striter->second);
+               
+               }
+               
+               wxString FinalPropValue;
+               
+               if (wxSPropertyXVCard4Value.IsEmpty()){
+               
+                       FinalPropValue = wxSPropertyData;
+               
+               } else {
+               
+                       if (wxSPropertyXVCard4Value != wxSPropertyData){
+               
+                               FinalPropValue = wxSPropertyXVCard4Value;
+                       
+                       }
+               
+               }
+                       
+               if (FinalPropertyData.IsEmpty() && FinalPropValue.IsEmpty()){
+               
+                       continue;
+               
+               }
+               
+               vCardOut->AddRaw(FinalPropertyData, FinalPropValue);
+
+               wxSProperty.clear();
+               wxSPropertySub.Clear();
+               wxSPropertySeg1.Clear();
+               wxSPropertySeg2.Clear();
+               wxSPropertySeg1Sub.Clear();
+               wxSPropertySeg2Sub.Clear();
+               wxSPropertyValues.Clear();
+               wxSPropertyData.Clear();
+               wxSPropertyXVCard4Value.Clear();
+               wxSPropertyNameConv.Clear();
+               //FinalPropertyData.clear();
+               //FinalPropValue.clear();
+               PropertyData.clear();
+               PropertyLock.clear();
+               ContactLine.clear();
+               ContactLineSub.clear();
+               DataLineProcess.clear();
+               DataLineProcessOriginal.clear();
+               wxSPropertyVCARD4.clear();
+               DataLineSeek = 0;
+               DataLineSeekOrig = 0;
+               XVCard4Value = FALSE;
+               VCard3Value = FALSE;
+       
+       }
+       
+       // Process the non-itemn values.
+       
+       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
+        iter != ContactFileLines.end(); ++iter){
+       
+               ExtraLineSeek = TRUE;
+
+               iterbool = ContactFileProcessed.find(iter->first);
+               
+               ContactLine = iter->second;
+               
+               // Ignore certain variables as they are not needed.
+               
+               if (ContactLine == wxT("BEGIN:VCARD") || 
+               ContactLine == wxT("END:VCARD") || 
+               ContactLine.Mid(0, 8) == wxT("VERSION:") || 
+               ContactLine.Mid(0, 7) == wxT("PRODID:") || 
+               ContactLine.Mid(0, 5) == wxT("X-AIM") || 
+               ContactLine.Mid(0, 5) == wxT("X-MSN") || 
+               ContactLine.Mid(0, 5) == wxT("X-ICQ") || 
+               ContactLine.Mid(0, 10) == wxT("X-GADUGADU") || 
+               ContactLine.Mid(0, 7) == wxT("X-YAHOO") || 
+               ContactLine.Mid(0, 7) == wxT("X-SKYPE") || 
+               ContactLine.Mid(0, 8) == wxT("X-JABBER") ||
+               ContactLine.Mid(0, 4) == wxT("REV:")){
+                       
+                       iterbool->second = TRUE;
+                       continue;
+                       
+               }
+               
+               if (iterbool->second == TRUE){
+                       
+                       continue;
+                       
+               }
+               
+               if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){
+               
+                       continue;
+               
+               }
+       
+               if (ContactLine.Mid(0, 4) == wxT("item")){
+               
+                       // Line is a itemn... so ignore.
+               
+                       continue;
+               
+               }
+               
+               std::map<int,wxString>::iterator itersub = iter;
+
+               while (ExtraLineSeek == TRUE){
+               
+                       // Check if there is extra data on the next line 
+                       // (indicated by space or tab at the start) and add data.
+
+                       if (itersub == ContactFileLines.end()){
+                               ExtraLineSeekSub;
+                               continue;
+                       }
+                       else {
+                               itersub++;
+
+                       }
+
+                       iterboolsub = ContactFileProcessedWorking.find(itersub->first);
+
+                       if (iterboolsub == ContactFileProcessedWorking.end()){
+                       
+                               break;
+                       
+                       }
+                       
+                       if (iterboolsub->second == TRUE){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (itersub == ContactFileLines.end()){
+                       
+                               break;
+                       
+                       }                       
+               
+                       wxSPropertyNextLine = itersub->second;
+               
+                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+               
+                               wxSPropertyNextLine.Remove(0, 1);
+                               //wxSPropertyNextLine.Trim(FALSE);
+                               //ContactLine.Trim();
+                               ContactLine.Append(wxSPropertyNextLine);
+                               iterboolsub->second = TRUE;
+               
+                       } else {
+                       
+                               ExtraLineSeek = FALSE;
+                       
+                       }
+               
+               }
+               
+               ContactLineLen = ContactLine.Len();
+               
+               for (int i = 0; i <= ContactLineLen; i++){
+               
+                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+                       
+                               PropertyFind = FALSE;
+                       
+                       } else if (PropertyFind == TRUE){
+                       
+                               wxSProperty.Append(ContactLine.Mid(i, 1));
+                       
+                       }               
+               
+                       if (ContactLine.Mid(i, 1) == wxT("\"")){
+                       
+                               if (QuoteMode == TRUE){
+                               
+                                       QuoteMode = FALSE;
+                               
+                               } else {
+                       
+                                       QuoteMode = TRUE;
+                                       
+                               }
+                       
+                       }
+                       
+                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+                       
+                               QuoteBreakPoint = i;
+                               break;
+                       
+                       }
+               
+               }
+
+               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
+               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
+
+               wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1, wxT(";"));
+               wxSProperty = wxSPropertySegSplit.GetNextToken();
+
+               std::map<int,int> DataLineProcess;
+               std::map<int, bool>::iterator DLSLiter;
+               int DataLineSeek = 0;
+               
+               // Look for the X-VCARD4-(variablename) equivilant.
+               
+               wxSPropertyVCARD4 = wxT("X-VCARD4-") + wxSProperty;
+                       
+               // Sort out remainder of the types.
+               
+               ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1, &wxSPropertySeg2, 
+                       &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, 
+                       &wxSPropertyNameConv, &PropertyData, &PropertyLock, FALSE, &VCard3Value, &XVCard4Value);
+               
+               wxString FinalPropertyData;
+       
+               FinalPropertyData.Append(wxSPropertyNameConv);
+       
+               for (std::map<wxString, wxString>::iterator striter = PropertyData.begin(); 
+               striter != PropertyData.end(); ++striter){
+
+                       FinalPropertyData.Append(wxT(";"));             
+                       FinalPropertyData.Append(striter->first);
+                       FinalPropertyData.Append(wxT("="));
+                       FinalPropertyData.Append(striter->second);
+               
+               }
+               
+               wxString FinalPropValue;
+               
+               if (wxSPropertyXVCard4Value.IsEmpty()){
+               
+                       FinalPropValue = wxSPropertyData;
+               
+               } else {
+               
+                       if (wxSPropertyXVCard4Value != wxSPropertyData){
+               
+                               FinalPropValue = wxSPropertyXVCard4Value;
+                       
+                       }
+               
+               }
+               
+               vCardOut->AddRaw(FinalPropertyData, FinalPropValue);
+
+               wxSProperty.clear();
+               wxSPropertySub.Clear();
+               wxSPropertySeg1.Clear();
+               wxSPropertySeg2.Clear();
+               wxSPropertyValues.Clear();
+               wxSPropertyData.Clear();
+               wxSPropertyXVCard4Value.Clear();
+               wxSPropertyNameConv.Clear();
+               //FinalPropertyData.clear();
+               //FinalPropValue.clear();
+               PropertyData.clear();
+               PropertyLock.clear();
+               ContactLine.clear();
+               XVCard4Value = FALSE;
+               VCard3Value = FALSE;
+       
+       }
+       
+       int FNCount = 0;
+       int NameCount = 0;
+       int NicknameCount = 0;
+       int ADRCount = 0;
+       int EmailCount = 0;
+       int IMPPCount = 0;
+       int TelCount = 0;
+       int LangCount = 0;
+       int TZCount = 0;
+       int GeoCount = 0;
+       int URLCount = 0;
+       int RelatedCount = 0;
+       int TitleCount = 0;
+       int RoleCount = 0;
+       int OrgCount = 0;
+       int NoteCount = 0;
+       int CategoryCount = 0;
+       int PhotoCount = 0;
+       int LogoCount = 0;
+       int SoundCount = 0;
+       int CalAdrCount = 0;
+       int CalReqAdrCount = 0;
+       int FreeBusyCount = 0;
+       int KeyCount = 0;
+       int VendorCount = 0;
+       int XTokenCount = 0;
+       int ItemSeek = 1;
+       int MaxItemNumber = 0;
+       int ItemOrdered = 0;
+       int ItemUnordered = 0;
+       int ItemNumber = 0;
+       int ItemStringSeekLen = 0;
+       int ItemSeekSub = 0;
+       int ItemSeekSecSub = 0;
+       //int intValueSeek = 1;
+       
+       std::map<int, wxString> NumberedName;
+       std::map<int, wxString> NumberedData;
+       std::map<int, wxString> NumberedPropValues;
+       std::map<int, wxString> NumberedPropOldValue;
+       
+       std::map<int, wxString> UnNumberedName;
+       std::map<int, wxString> UnNumberedData;
+       std::map<int, wxString> UnNumberedPropValues;
+       std::map<int, wxString> UnNumberedPropOldValue;
+
+       // Part 1: Get the itemn number.
+       
+       std::map<int,bool>::iterator iterboolsecsub;
+       std::map<int,wxString>::iterator itersub;
+       std::map<int, wxString> TempData;
+       PropertyData.clear();
+       PropertyLock.clear();
+       wxString ItemString;
+       wxString ItemStringSeek;
+       wxString ItemPropName;
+       ContactLineSeek = 0;
+       
+       ContactLineSub.clear();
+       ExtraLineSeekSub = 0;
+       wxString wxSPropertyNextLineSub;
+       ContactLineSubLen = 0;
+       int ContactLineSeekSub = 0;
+       int ItemIndex = 0;
+       PropertFindSub.clear();
+       wxSPropertySub.clear();
+       wxSPropertySeg1Sub.clear();
+       wxSPropertySeg2Sub.clear();
+       wxSPropertyValues.clear();
+       wxSPropertyData.clear();
+       wxSPropertyNameConv.clear();
+       wxSPropertyXVCard4Value.clear();
+       ItemProcString.clear();
+       
+       XVCard4Value = FALSE;
+       VCard3Value = FALSE;
+       SeekItemData = FALSE;
+       
+       std::map<wxString, void*> ItemMapIndex;
+       //std::map<wxString, wxString> ItemNameIndex;
+       
+       // Look for item in the initial line, process into a proper line then
+       // look for other lines with the same item association.
+       
+       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin();
+               iter != ContactFileLines.end(); ++iter){
+       
+               ExtraLineSeek = TRUE;
+               
+               iterbool = ContactFileProcessed.find(iter->first);
+               
+               if (iterbool->second == TRUE){
+               
+                       continue;
+               
+               }
+               
+               ContactLine = iter->second;
+               
+               if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){
+               
+                       continue;
+               
+               }
+               
+               if (ContactLine.Mid(0, 4) != wxT("item")){
+               
+                       continue;
+               
+               }
+               
+               // Get Item data.
+
+               //ContactLineSeekSub = ContactLineSeek;
+               std::map<int,wxString>::iterator itersub = iter;
+
+               while (ExtraLineSeek == TRUE){
+               
+                       // Check if there is extra data on the next line 
+                       // (indicated by space or tab at the start) and add data.
+               
+                       itersub++;
+                       iterboolsub = ContactFileProcessed.find(itersub->first);
+
+                       if (iterboolsub == ContactFileProcessed.end()){
+                       
+                               break;
+                       
+                       }
+                       
+                       if (iterboolsub->second == TRUE){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (itersub == ContactFileLines.end()){
+                       
+                               break;
+                       
+                       }                       
+               
+                       wxSPropertyNextLine = itersub->second;
+               
+                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
+               
+                               wxSPropertyNextLine.Remove(0, 1);
+                               //wxSPropertyNextLine.Trim(FALSE);
+                               //ContactLine.Trim();
+                               ContactLine.Append(wxSPropertyNextLine);
+                               iterboolsub->second = TRUE;
+               
+                       } else {
+                       
+                               ExtraLineSeek = FALSE;
+                       
+                       }
+               
+               }
+               
+               ContactLineLen = ContactLine.Len();
+               
+               for (int i = 0; i <= ContactLineLen; i++){
+               
+                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+                       
+                               PropertyFind = FALSE;
+                       
+                       } else if (PropertyFind == TRUE){
+                       
+                               wxSProperty.Append(ContactLine.Mid(i, 1));
+                       
+                       }               
+               
+                       if (ContactLine.Mid(i, 1) == wxT("\"")){
+                       
+                               if (QuoteMode == TRUE){
+                               
+                                       QuoteMode = FALSE;
+                               
+                               } else {
+                       
+                                       QuoteMode = TRUE;
+                                       
+                               }
+                       
+                       }
+                       
+                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+                       
+                               QuoteBreakPoint = i;
+                               break;
+                       
+                       }
+               
+               }
+
+               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
+               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
+               
+               // Go through the lines and collect the lines like itemn.
+               
+               std::map<int,wxString> *ItemListData;
+               ItemListData = new std::map<int,wxString>;
+               
+               wxStringTokenizer ItemData(wxSPropertySeg1, wxT("."));
+               
+               ItemString = ItemData.GetNextToken();
+               ItemStringSeek = wxT("item") + ItemString.Mid(4);
+               
+               wxStringTokenizer ItemPropSplit(ItemData.GetNextToken(), wxT(";"));
+               
+               ItemPropName = ItemPropSplit.GetNextToken();
+               
+               ItemStringSeekLen = ItemStringSeek.Len();
+               
+               ItemIndex = 0;
+               
+               for (std::map<int,wxString>::iterator itersec = ContactFileLines.begin();
+               itersec != ContactFileLines.end(); ++itersec){
+               
+                       ExtraLineSeek = TRUE;
+               
+                       iterboolsub = ContactFileProcessed.find(itersec->first);
+               
+                       if (iterboolsub->second == TRUE){
+                       
+                               continue;
+                       
+                       }
+               
+                       ContactLineSub = itersec->second;
+                       
+                       wxStringTokenizer ItemProcData(ContactLineSub, wxT("."));
+                       ItemProcString = ItemData.GetNextToken();
+                       
+                       if (ItemStringSeek != ContactLineSub.Mid(0, ItemStringSeekLen)){
+                       
+                               continue;
+                       
+                       }
+                       
+                       ItemIndex++;
+                       
+                       ItemListData->insert(std::make_pair(ItemIndex, ContactLineSub));
+                       
+                       iterboolsub->second = TRUE;
+               
+               }
+               
+               //ItemNameIndex.insert(std::make_pair(ItemStringSeek, ItemPropName));
+               ItemListData->insert(std::make_pair(ItemIndex, ContactLineSub));
+               ItemMapIndex.insert(std::make_pair(ItemStringSeek, ItemListData));
+               
+       }
+       
+       // Process each itemn set.
+       
+       for (std::map<wxString, void*>::iterator iter = ItemMapIndex.begin();
+               iter != ItemMapIndex.end(); ++iter){
+                       
+               std::map<int, wxString> *ItemDataPtr;
+
+               ItemDataPtr = (std::map<int,wxString>*)iter->second;
+               
+               for (std::map<int,wxString>::iterator itersub = ItemDataPtr->begin();
+                       itersub != ItemDataPtr->end(); ++itersub){
+                       
+                       ContactLine = itersub->second;
+                       
+                       ContactLineLen = ContactLine.Len();
+               
+                       for (int i = 0; i <= ContactLineLen; i++){
+               
+                               if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
+                       
+                                       PropertyFind = FALSE;
+                       
+                               } else if (PropertyFind == TRUE){
+                       
+                                       wxSProperty.Append(ContactLine.Mid(i, 1));
+                       
+                               }               
+               
+                               if (ContactLine.Mid(i, 1) == wxT("\"")){
+                       
+                                       if (QuoteMode == TRUE){
+                               
+                                               QuoteMode = FALSE;
+                               
+                                       } else {
+                       
+                                               QuoteMode = TRUE;
+                                       
+                                       }
+                       
+                               }
+                       
+                               if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
+                       
+                                       QuoteBreakPoint = i;
+                                       break;
+                       
+                               }
+               
+                       }
+                       
+                       wxSPropertySeg1Sub = ContactLine.Mid(0, QuoteBreakPoint);
+                       wxSPropertySeg2Sub = ContactLine.Mid((QuoteBreakPoint + 1));
+                       
+                       wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1Sub, wxT(";"));
+                       wxSProperty = wxSPropertySegSplit.GetNextToken();
+                       
+                       // Sort out remainder of the types.
+                       
+                       // Skip certain X-* IM variables as they are processed via
+                       // IMPP.
+                       
+                       if (wxSProperty == wxT("X-AIM") || wxSProperty == wxT("X-MSN") || 
+                       wxSProperty == wxT("X-ICQ") || wxSProperty == wxT("X-GADUGADU") || 
+                       wxSProperty == wxT("X-YAHOO") || wxSProperty == wxT("X-SKYPE") || 
+                       wxSProperty == wxT("X-JABBER")){
+               
+                               wxSProperty.clear();
+                               wxSPropertySub.Clear();
+                               wxSPropertySeg1.Clear();
+                               wxSPropertySeg2.Clear();
+                               wxSPropertyValues.Clear();
+                               wxSPropertyData.Clear();
+                               wxSPropertyXVCard4Value.Clear();
+                               wxSPropertyNameConv.Clear();
+                               //FinalPropertyData.clear();
+                               //FinalPropValue.clear();
+                               PropertyData.clear();
+                               PropertyLock.clear();
+                               ContactLine.clear();
+                               XVCard4Value = FALSE;
+                               VCard3Value = FALSE;
+                               continue;
+               
+                       }
+                       
+                       ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1Sub, &wxSPropertySeg2Sub, 
+                       &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, 
+                       &wxSPropertyNameConv, &PropertyData, &PropertyLock, TRUE, &VCard3Value, &XVCard4Value);
+                       
+               }
+               
+               if (wxSPropertyNameConv.IsEmpty()){
+               
+                       wxSProperty.clear();
+                       wxSPropertySub.Clear();
+                       wxSPropertySeg1.Clear();
+                       wxSPropertySeg2.Clear();
+                       wxSPropertyValues.Clear();
+                       wxSPropertyData.Clear();
+                       wxSPropertyXVCard4Value.Clear();
+                       wxSPropertyNameConv.Clear();
+                       //FinalPropertyData.clear();
+                       //FinalPropValue.clear();
+                       PropertyData.clear();
+                       PropertyLock.clear();
+                       ContactLine.clear();
+                       XVCard4Value = FALSE;
+                       VCard3Value = FALSE;
+                       continue;
+               
+               }
+               
+               wxString FinalPropertyData;
+       
+               FinalPropertyData.Append(wxSPropertyNameConv);
+       
+               for (std::map<wxString, wxString>::iterator striter = PropertyData.begin(); 
+               striter != PropertyData.end(); ++striter){
+
+                       FinalPropertyData.Append(wxT(";"));             
+                       FinalPropertyData.Append(striter->first);
+                       FinalPropertyData.Append(wxT("="));
+                       FinalPropertyData.Append(striter->second);
+               
+               }
+               
+               wxString FinalPropValue;
+               
+               if (wxSPropertyXVCard4Value.IsEmpty()){
+               
+                       FinalPropValue = wxSPropertyData;
+               
+               } else {
+               
+                       if (wxSPropertyXVCard4Value != wxSPropertyData){
+                       
+                               FinalPropValue = wxSPropertyData;
+                               
+                       } else {
+               
+                               FinalPropValue = wxSPropertyXVCard4Value;
+               
+                       }
+               
+               }
+               
+               vCardOut->AddRaw(FinalPropertyData, FinalPropValue);
+               
+               wxSProperty.clear();
+               wxSPropertySub.Clear();
+               wxSPropertySeg1Sub.Clear();
+               wxSPropertySeg2Sub.Clear();
+               wxSPropertyValues.Clear();
+               wxSPropertyData.Clear();
+               wxSPropertyXVCard4Value.Clear();
+               wxSPropertyNameConv.Clear();
+               FinalPropertyData.clear();
+               FinalPropValue.clear();
+               PropertyData.clear();
+               PropertyLock.clear();
+               ContactLine.clear();
+               XVCard4Value = FALSE;
+               VCard3Value = FALSE;
+       
+               TempData.clear();
+               //PropertyData.clear();
+               //PropertyLock.clear();
+               
+       }
+       
+       // Delete data.
+       
+       std::map<int, wxString> *ItemEraseData;
+       
+       for (std::map<wxString, void*>::iterator iter = ItemMapIndex.begin();
+               iter != ItemMapIndex.end(); ++iter){
+               
+               ItemEraseData = (std::map<int,wxString>*)iter->second;
+
+               delete ItemEraseData;
+               ItemEraseData = NULL;
+               
+       }
+
+       ItemMapIndex.clear();
+       
+       vCardOut->AddRaw(wxT("END"), wxT("VCARD"));
+
+       return TRUE;
+
+}
+
+void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName, 
+       wxString *wxSPropertySeg1Ptr, wxString *wxSPropertySeg2Ptr, 
+       wxString *wxSPropertyPropValuesOut, wxString *wxSPropertyDataOut, 
+       wxString *wxSPropertyXVCard4Value, wxString *wxSPropertyDataNameOut,
+       std::map<wxString,wxString> *PropertyDataMap, 
+       std::map<wxString,bool> *PropertyLockMap,
+       bool ProcessItemData, bool *VCardV3Value, bool *XVCardV4Value){
+
+       wxString wxSProperty;
+       wxString wxSPropertySeg1Chopped;
+       
+       if (ProcessItemData == TRUE){
+               
+               wxStringTokenizer wxSPropertySplit(*wxSPropertyName, wxT("."));
+       
+               wxSPropertySplit.GetNextToken();
+               wxSProperty = wxSPropertySplit.GetNextToken();
+       
+               // Look for . in wxSPropertySeg1Ptr and remove all data before
+               // the .
+       
+               int ItemSeek = wxSPropertySeg1Ptr->Find(wxT("."));
+               wxSPropertySeg1Chopped = wxSPropertySeg1Ptr->Mid((ItemSeek + 1));
+               
+       
+       } else {
+       
+               wxSProperty = *wxSPropertyName;
+       
+       }
+
+       
+       // Go through each of the vCard 3.0 properties.
+       
+       // EMAIL
+       
+       if (wxSProperty == wxT("EMAIL")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 7;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("EMAIL");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       if (PropertyName == wxT("type") && PropertyValue == wxT("INTERNET")){
+                               continue;
+                       }
+                               
+                       if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               
+                               if (ProcessItemData == FALSE){
+                                       PropertyName = wxT("PREF");
+                                       PropertyValue = wxT("50");
+                               } else {
+                                       continue;
+                               }
+                               
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               PropertyValue = wxT("home");
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               PropertyValue = wxT("work");
+                       }
+
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               PropertyName = wxT("X-TYPE");
+                               PropertyValue = wxT("other");
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // ADR
+       
+       if (wxSProperty == wxT("ADR")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 5;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("ADR");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                               
+                       if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               
+                               if (ProcessItemData == FALSE){
+                                       PropertyName = wxT("PREF");
+                                       PropertyValue = wxT("50");
+                               } else {
+                                       continue;
+                               }
+                               
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               PropertyValue = wxT("home");
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               PropertyValue = wxT("work");
+                       }
+
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               PropertyName = wxT("X-TYPE");
+                               PropertyValue = wxT("other");
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // LABEL
+       
+       if (wxSProperty == wxT("LABEL")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 7;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("ADR");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                               
+                       if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               continue;
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               PropertyValue = wxT("home");
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               PropertyValue = wxT("work");
+                       }
+
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               PropertyName = wxT("X-TYPE");
+                               PropertyValue = wxT("other");
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+               
+               PropertyDataMap->insert(std::make_pair(wxT("X-LABEL"), wxT("TRUE")));
+       
+       }
+       
+       // IMPP
+       
+       if (wxSProperty == wxT("IMPP")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 6;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxStringTokenizer IMPPSplit(*wxSPropertySeg2Ptr, wxT(":"));
+               wxString IMPPType;
+               wxString IMPPData;
+               
+               IMPPType = IMPPSplit.GetNextToken();
+               
+               if (IMPPSplit.HasMoreTokens()){
+               
+                       IMPPData = IMPPSplit.GetNextToken();
+               
+                       if (IMPPType == wxT("ymsgr")){
+                       
+                               IMPPType = wxT("yahoo");
+                       
+                       }
+                       
+                       *wxSPropertySeg2Ptr = IMPPType + wxT(":") + IMPPData;
+               
+               }
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("IMPP");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                               
+                       if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               continue;
+                       }
+                       
+                       if (PropertyName == wxT("X-SERVICE-TYPE")){
+                               continue;
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               PropertyValue = wxT("home");
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               PropertyValue = wxT("work");
+                       }
+
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               PropertyName = wxT("X-TYPE");
+                               PropertyValue = wxT("other");
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // TEL
+       
+       if (wxSProperty == wxT("TEL")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, wxString> TelType;                   
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 5;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(wxT("tel:"));
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("TEL");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                               
+                       if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               continue;
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               TelType.insert(std::make_pair(wxT("home"), wxT("home")));
+                               continue;
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               TelType.insert(std::make_pair(wxT("work"), wxT("work")));
+                               continue;
+                       }
+
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               PropertyName = wxT("X-TYPE");
+                               PropertyValue = wxT("other");
+                       }
+                       
+                       // Process the telephone type options.
+                       
+                       // text
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("TEXT") || PropertyValue == wxT("text"))){
+                               TelType.insert(std::make_pair(wxT("text"), wxT("text")));
+                               continue;
+                       }
+                       
+                       // voice
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("VOICE") || PropertyValue == wxT("voice"))){
+                               TelType.insert(std::make_pair(wxT("voice"), wxT("voice")));
+                               continue;
+                       }
+                       
+                       // fax
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("FAX") || PropertyValue == wxT("fax"))){
+                               TelType.insert(std::make_pair(wxT("fax"), wxT("fax")));
+                               continue;
+                       }
+                       
+                       // cell
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("CELL") || PropertyValue == wxT("cell"))){
+                               TelType.insert(std::make_pair(wxT("cell"), wxT("cell")));
+                               continue;
+                       }
+                       
+                       // video
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("VIDEO") || PropertyValue == wxT("video"))){
+                               TelType.insert(std::make_pair(wxT("video"), wxT("video")));
+                               continue;
+                       }
+                       
+                       // pager
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("PAGER") || PropertyValue == wxT("pager"))){
+                               TelType.insert(std::make_pair(wxT("pager"), wxT("pager")));
+                               continue;
+                       }
+                       
+                       // textphone
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("TEXTPHONE") || PropertyValue == wxT("textphone"))){
+                               TelType.insert(std::make_pair(wxT("textphone"), wxT("textphone")));
+                               continue;
+                       }
+                       
+                       if (PropertyName == wxT("type") && PropertyValue.Find(wxT(",")) != wxNOT_FOUND){
+                               wxStringTokenizer TypeSplit(PropertyValue, wxT(","));
+                               wxString TypeSplitData;
+                               while (TypeSplit.HasMoreTokens()){
+                               
+                                       TypeSplitData = TypeSplit.GetNextToken();
+                                       TelType.insert(std::make_pair(TypeSplitData, TypeSplitData));
+                                       TypeSplitData.clear();
+                               
+                               }
+                               
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+               
+               wxString TelFinalString;
+               bool TelFirstToken = TRUE;
+               
+               for (std::map<wxString, wxString>::iterator intiter = TelType.begin(); 
+               intiter != TelType.end(); ++intiter){
+               
+                       // Process the type data into a single value. (e.g. TYPE="work,voice,cell").
+                       
+                       if (TelFirstToken == TRUE){
+                       
+                               TelFinalString.Append(wxT("\""));
+                               TelFinalString.Append(intiter->first);
+                               TelFirstToken = FALSE;
+                       
+                       } else {
+                       
+                               TelFinalString.Append(wxT(","));
+                               TelFinalString.Append(intiter->first);
+                       
+                       }
+               
+               }
+               
+               if (TelFirstToken == FALSE){
+               
+                       TelFinalString.Append(wxT("\""));
+               
+               }
+               
+               if (!TelFinalString.IsEmpty()){
+               
+                       if (PropertyDataMap->find(wxT("TYPE")) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(wxT("type"), TelFinalString));
+                               PropertyLockMap->insert(std::make_pair(wxT("type"), TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(wxT("type"), TelFinalString));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(wxT("type"), TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // RELATED
+       
+       if (wxSProperty == wxT("X-ABRELATEDNAMES")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 18;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("RELATED");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                               
+                       if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               continue;
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // URL
+       
+       if (wxSProperty == wxT("URL")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 5;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("URL");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                               
+                       if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               continue;
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               PropertyValue = wxT("home");
+                       }
+                       
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               PropertyValue = wxT("work");
+                       }
+
+                       if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               PropertyName = wxT("X-TYPE");
+                               PropertyValue = wxT("other");
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // TITLE
+       
+       if (wxSProperty == wxT("TITLE")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 7;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("TITLE");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // FN
+       
+       if (wxSProperty == wxT("FN")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 4;
+               int intPref = 0;                        
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("FN");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // N
+       
+       if (wxSProperty == wxT("N")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 3;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("N");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // UID
+
+       if (wxSProperty == wxT("UID")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 5;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("UID");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                                               
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // NICKNAME
+       
+       if (wxSProperty == wxT("NICKNAME")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 10;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("NICKNAME");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                                               
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // GENDER
+       
+       if (wxSProperty == wxT("GENDER")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 8;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("GENDER");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // BDAY
+       
+       if (wxSProperty == wxT("BDAY")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               wxString PropertyXOmitYear;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 6;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               *wxSPropertyDataNameOut = wxT("BDAY");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       if (PropertyName == wxT("X-APPLE-OMIT-YEAR")){
+                               PropertyXOmitYear = PropertyValue;
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+               
+               // Convert the date from YYYY-MM-DD to YYYYMMDD or --MMDD depending on if the
+               // year matches the X-APPLE-OMIT-YEAR value.
+               
+               wxStringTokenizer DateSplit(*wxSPropertySeg2Ptr, wxT("-"));
+               
+               wxString DateProc;
+               wxString FinalDate;
+               
+               DateProc = DateSplit.GetNextToken();
+               
+               if (DateProc == PropertyXOmitYear){
+               
+                       FinalDate.Append(wxT("--"));
+               
+               } else {
+               
+                       FinalDate.Append(DateProc);
+               
+               }
+               
+               DateProc.clear();
+               DateProc = DateSplit.GetNextToken();
+               
+               FinalDate.Append(DateProc);
+
+               DateProc.clear();
+               DateProc = DateSplit.GetNextToken();            
+               
+               FinalDate.Append(DateProc);
+               
+               wxSPropertyDataOut->Append(FinalDate);
+       
+       }
+       
+       // ANNIVERSARY
+       
+       if (wxSProperty == wxT("ANNIVERSARY")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               wxString PropertyXOmitYear;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 13;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               *wxSPropertyDataNameOut = wxT("ANNIVERSARY");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       if (PropertyName == wxT("X-APPLE-OMIT-YEAR")){
+                               PropertyXOmitYear = PropertyValue;
+                       }
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+               
+               // Convert the date from YYYY-MM-DD to YYYYMMDD or --MMDD depending on if the
+               // year matches the X-APPLE-OMIT-YEAR value.
+               
+               wxStringTokenizer DateSplit(*wxSPropertySeg2Ptr, wxT("-"));
+               
+               wxString DateProc;
+               wxString FinalDate;
+               
+               DateProc = DateSplit.GetNextToken();
+               
+               if (DateProc == PropertyXOmitYear){
+               
+                       FinalDate.Append(wxT("--"));
+               
+               } else {
+               
+                       FinalDate.Append(DateProc);
+               
+               }
+               
+               DateProc.clear();
+               DateProc = DateSplit.GetNextToken();
+               
+               FinalDate.Append(DateProc);
+
+               DateProc.clear();
+               DateProc = DateSplit.GetNextToken();            
+               
+               FinalDate.Append(DateProc);
+               
+               wxSPropertyDataOut->Append(FinalDate);
+       
+       }
+       
+       // TZ - Not sure how to process this correctly. So data
+       // is kept as X-VCARD3-TZ for the time being.
+       
+       if (wxSProperty == wxT("TZ")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               wxString PropertyXOmitYear;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 4;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("X-VCARD3-TZ");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // ROLE
+       
+       if (wxSProperty == wxT("ROLE")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               wxString PropertyXOmitYear;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 6;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("ROLE");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // ORG
+       
+       if (wxSProperty == wxT("ORG")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               wxString PropertyXOmitYear;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 5;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("ORG");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // NOTE
+       
+       if (wxSProperty == wxT("NOTE")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               wxString PropertyXOmitYear;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 6;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+               *wxSPropertyDataNameOut = wxT("NOTE");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+       
+       }
+       
+       // PHOTO
+       
+       if (wxSProperty == wxT("PHOTO")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, wxString> SplitData;                         
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               wxString PropertyXOmitYear;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 7;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               *wxSPropertyDataNameOut = wxT("PHOTO");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValuesData(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue, &SplitData);
+                       
+               } else {
+                       
+                       SplitValuesData(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue, &SplitData);
+                       
+               }
+               
+               wxString wxSMIMEType;
+               wxString wxSEncType;
+               
+               for (std::map<wxString, wxString>::iterator intiter = SplitData.begin();
+               intiter != SplitData.end(); ++intiter){
+               
+                       PropertyName = intiter->first;                          
+                       PropertyValue = intiter->second;
+
+                       if (PropertyName == wxT("ENCODING") && PropertyValue == wxT("b")){
+                               wxSEncType = wxT("base64");
+                               continue;
+                       }
+                       
+                       if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type")) && PropertyValue == wxT("PNG")){
+                               wxSMIMEType = wxT("image/png");
+                               continue;
+                       } else if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type")) && PropertyValue == wxT("JPEG")){
+                               wxSMIMEType = wxT("image/jpeg");
+                               continue;
+                       } else if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type")) && PropertyValue == wxT("GIF")){
+                               wxSMIMEType = wxT("image/gif");
+                               continue;
+                       } else if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type")) && PropertyValue == wxT("BMP")){
+                               wxSMIMEType = wxT("image/bmp");
+                               continue;
+                       } else if (PropertyName == wxT("TYPE") || PropertyName == wxT("type")) {
+                               wxSMIMEType = wxT("image/unknown");
+                               continue;
+                       }
+                       
+                       //intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+               
+               wxSPropertyDataOut->Append(wxT("data:"));
+               wxSPropertyDataOut->Append(wxSMIMEType);
+               wxSPropertyDataOut->Append(wxT(";"));
+               wxSPropertyDataOut->Append(wxSEncType);
+               wxSPropertyDataOut->Append(wxT(","));
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+       
+       }
+       
+       // SOUND
+       
+       if (wxSProperty == wxT("SOUND")){
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               wxString PropertyXOmitYear;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;         
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 7;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               *wxSPropertyDataNameOut = wxT("SOUND");
+               *VCardV3Value = TRUE;
+               
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               wxString wxSMIMEType;
+               wxString wxSEncType;
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {                        
+                               
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                       
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       if (PropertyName == wxT("ENCODING") && PropertyValue == wxT("b")){
+                               wxSEncType = wxT("base64");
+                               continue;
+                       }
+                       
+                       if ((PropertyName == wxT("TYPE") || PropertyName == wxT("type"))){
+                               wxSMIMEType = PropertyValue;
+                               continue;
+                       }
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+       
+                       } else {
+                       
+                               PropertyDataMap->erase(PropertyName);
+                               PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyLockMap->erase(PropertyName);
+                               PropertyLockMap->insert(std::make_pair(PropertyName, TRUE));
+                       
+                       }
+               
+               }
+               
+               wxSPropertyDataOut->Append(wxT("data:"));
+               wxSPropertyDataOut->Append(wxSMIMEType);
+               wxSPropertyDataOut->Append(wxT(";"));
+               wxSPropertyDataOut->Append(wxSEncType);
+               wxSPropertyDataOut->Append(wxT(","));
+               wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
+       
+       }
+       
+       // Look for backward compatability vCard 4.0 properties.
+       
+       // X-VCARD4-FN
+       
+       if (wxSProperty == wxT("X-VCARD4-FN")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+                               *wxSPropertyDataNameOut = wxT("FN");
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 13;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-N
+       
+       if (wxSProperty == wxT("X-VCARD4-N")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 12;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("N");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-NICKNAME
+       
+       if (wxSProperty == wxT("X-VCARD4-NICKNAME")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 19;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("NICKNAME");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-GENDER
+       
+       if (wxSProperty == wxT("X-VCARD4-GENDER")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 17;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("GENDER");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-BDAY
+       
+       if (wxSProperty == wxT("X-VCARD4-BDAY")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 15;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("BDAY");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+
+       // X-VCARD4-ANNIVERSARY
+       
+       if (wxSProperty == wxT("X-VCARD4-ANNIVERSARY")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 22;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("ANNIVERSARY");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+
+       // X-VCARD4-TZ
+       
+       if (wxSProperty == wxT("X-VCARD4-TZ")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 13;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("TZ");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-ADR
+       
+       if (wxSProperty == wxT("X-VCARD4-ADR")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 14;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("ADR");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-EMAIL
+       
+       if (wxSProperty == wxT("X-VCARD4-EMAIL")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 16;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("EMAIL");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-IMPP
+       
+       if (wxSProperty == wxT("X-VCARD4-IMPP")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 15;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("IMPP");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-TEL
+       
+       if (wxSProperty == wxT("X-VCARD4-TEL")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 14;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("TEL");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-LANG
+       
+       if (wxSProperty == wxT("X-VCARD4-LANG")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 15;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("LANG");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-GEO
+       
+       if (wxSProperty == wxT("X-VCARD4-GEO")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 14;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("GEO");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-RELATED
+       
+       if (wxSProperty == wxT("X-VCARD4-RELATED")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 18;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("RELATED");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-URL
+       
+       if (wxSProperty == wxT("X-VCARD4-URL")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 14;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("URL");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-TITLE
+       
+       if (wxSProperty == wxT("X-VCARD4-TITLE")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 16;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("TITLE");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-ROLE
+       
+       if (wxSProperty == wxT("X-VCARD4-ROLE")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 15;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("ROLE");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-ORG
+       
+       if (wxSProperty == wxT("X-VCARD4-ORG")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 14;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("ORG");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-NOTE
+       
+       if (wxSProperty == wxT("X-VCARD4-NOTE")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 15;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("NOTE");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-CATEGORIES
+       
+       if (wxSProperty == wxT("X-VCARD4-CATEGORIES")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 21;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("CATEGORIES");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-PHOTO
+       
+       if (wxSProperty == wxT("X-VCARD4-PHOTO")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 16;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("PHOTO");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-LOGO
+       
+       if (wxSProperty == wxT("X-VCARD4-LOGO")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 15;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("LOGO");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-SOUND
+       
+       if (wxSProperty == wxT("X-VCARD4-SOUND")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 16;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("SOUND");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-CALURI
+       
+       if (wxSProperty == wxT("X-VCARD4-CALURI")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 17;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("CALURI");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-CALADRURI
+       
+       if (wxSProperty == wxT("X-VCARD4-CALADRURI")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 20;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("CALADRURI");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-FBURL
+       
+       if (wxSProperty == wxT("X-VCARD4-FBURL")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 16;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("FBURL");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-KEY
+       
+       if (wxSProperty == wxT("X-VCARD4-KEY")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 14;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxT("KEY");
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+               
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+                               
+       }
+       
+       // X-VCARD4-VND-*
+       
+       if (wxSProperty.Mid(0, 12) == wxT("X-VCARD4-VND")){
+       
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 14;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       *wxSPropertyDataNameOut = wxSProperty.Mid(9);
+                       
+               }
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;          
+       
+       }
+       
+       // X-ADDRESSBOOKSERVER-KIND
+       
+       if (wxSProperty == wxT("X-ADDRESSBOOKSERVER-KIND")){
+               
+               // Process Data.
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 26;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               *wxSPropertyDataNameOut = wxT("KIND");
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+               
+       }
+       
+       // X-ADDRESSBOOKSERVER-MEMBER
+       
+       if (wxSProperty == wxT("X-ADDRESSBOOKSERVER-MEMBER")){
+               
+               // Process Data.
+               
+               int intPropertyLen;
+               
+               if (ProcessItemData == TRUE){
+       
+                       intPropertyLen = wxSPropertySeg1Chopped.Len();          
+               
+               } else {
+               
+                       intPropertyLen = wxSPropertySeg1Ptr->Len();
+               
+               }
+               
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;
+               std::map<wxString, bool>::iterator BIter;;                      
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 28;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+
+               if (ProcessItemData == TRUE){
+               
+                       SplitValues(&wxSPropertySeg1Chopped, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               } else {
+                       
+                       SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+                       
+               }
+               
+               *wxSPropertyDataNameOut = wxT("MEMBER");
+               
+               for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
+               intiter != SplitPoints.end(); ++intiter){
+               
+                       SLiter = SplitLength.find(intiter->first);
+               
+                       if (ProcessItemData == TRUE){
+
+                               if (FirstToken == TRUE){
+               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Chopped.Mid((intPrevValue), (SLiter->second));
+                               
+                               }
+                       
+                       } else {
+                       
+                               if (FirstToken == TRUE){
+                       
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue - 1), (SLiter->second));
+                                       FirstToken = FALSE;
+                                                               
+                               } else {
+                               
+                                       PropertyData = wxSPropertySeg1Ptr->Mid((intPrevValue), (SLiter->second));
+                                       
+                               }
+                       
+                       }
+                       
+                       wxStringTokenizer PropertyElement (PropertyData, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();                          
+                       PropertyValue = PropertyElement.GetNextToken();
+                       
+                       //ProcessCaptureStrings(&PropertyValue);
+                       
+                       intPrevValue = intiter->second;
+                       
+                       // Process properties.
+                       
+                       // Check if there is a lock on the property value. If there is a lock then
+                       // the property value cannot be changed.
+                       
+                       if (PropertyName.IsEmpty()){
+                       
+                               continue;
+                       
+                       }
+                       
+                       if (PropertyLockMap->find(PropertyName) == PropertyLockMap->end()){
+                       
+                               if (PropertyDataMap->find(PropertyName) == PropertyDataMap->end()){
+                       
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               } else {
+                       
+                                       PropertyDataMap->erase(PropertyName);
+                                       PropertyDataMap->insert(std::make_pair(PropertyName, PropertyValue));
+                       
+                               }
+                               
+                       }
+                       
+                       //wxSPropertyPropValuesOut->Append(wxT(";"));
+                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
+               
+               }
+               
+               wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
+               *XVCardV4Value = TRUE;
+               
+               
+       }
+       
+       // Deal with X-ABLabel specifically.
+       
+       if (wxSProperty == wxT("X-ABLabel") && ProcessItemData == TRUE){
+       
+               int intPropertyLen = wxSPropertySeg1Ptr->Len();
+               std::map<int, int> SplitPoints;
+               std::map<int, int> SplitLength;
+               std::map<int, int>::iterator SLiter;                    
+               wxString PropertyData;
+               wxString PropertyName;
+               wxString PropertyValue;
+               wxString PropertyTokens;
+               bool AfterFirstToken = FALSE;
+               bool FirstToken = TRUE;                 
+               int intSplitsFound = 0;
+               int intSplitSize = 0;
+               int intPrevValue = 11;
+               int intPref = 0;
+               int intType = 0;
+               int intSplitSeek = 0;
+
+               
+               SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
+               
+               //EscapeString(wxSPropertySeg2Ptr, FALSE);
+               PropertyDataMap->insert(std::make_pair(wxT("X-ABLabel"), *wxSPropertySeg2Ptr));
+                               
+       }
+
+}
+
+void vCard34Conv::ProcessCaptureStringsProc(wxString *strCapture){
+
+    CaptureString(strCapture, FALSE);
+
+}
+
+void vCard34Conv::SplitValues(wxString *PropertyLine, 
+       std::map<int,int> *SplitPoints, 
+       std::map<int,int> *SplitLength, 
+       int intSize){
+       
+       int intPropertyLen = PropertyLine->Len();               
+       int intSplitsFound = 0;
+       int intSplitSize = 0;
+       int intSplitSeek = 0;
+       
+       for (int i = intSize; i <= intPropertyLen; i++){
+
+               intSplitSize++;
+       
+               if (PropertyLine->Mid(i, 1) == wxT(";") &&
+                   PropertyLine->Mid((i - 1), 1) != wxT("\\")){
+          
+                   if (intSplitsFound == 0){
+           
+                       SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize)));
+         
+                   } else {
+          
+                       SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+           
+                   }
+           
+                   SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1)));
+           
+                   intSplitsFound++;
+                   intSplitSeek = i;
+                   intSplitSize = 0;
+           
+               }
+
+       }
+
+       if (intSplitsFound == 0){
+
+               SplitPoints->insert(std::make_pair(intSplitsFound, (8 + 1)));
+               SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize));
+
+       } else {
+
+               SplitPoints->insert(std::make_pair(intSplitsFound, (intSplitSeek + 1)));
+               SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize));
+
+       }
+
+}
+
+void vCard34Conv::SplitValuesData(wxString *PropertyLine, 
+       std::map<int,int> *SplitPoints, 
+       std::map<int,int> *SplitLength, 
+       int intSize,
+       std::map<wxString,wxString> *SplitData){
+       
+       wxString DataStr;
+       wxStringTokenizer PropertyElement;
+       wxString PropertyName;
+       wxString PropertyValue;
+       int intPropertyLen = PropertyLine->Len();               
+       int intSplitsFound = 0;
+       int intSplitSize = 0;
+       int intSplitSeek = (intSize - 1);
+       
+       for (int i = intSize; i <= intPropertyLen; i++){
+
+               intSplitSize++;
+       
+               if (PropertyLine->Mid(i, 1) == wxT(";") &&
+                   PropertyLine->Mid((i - 1), 1) != wxT("\\")){
+          
+                   if (intSplitsFound == 0){
+           
+                               DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize));
+                               SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize)));
+         
+                       } else {
+
+                               DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize - 1));
+                               SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+
+                       }
+                   
+                   SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1)));
+           
+                   intSplitsFound++;
+                   intSplitSeek = (i + 1);
+                   intSplitSize = 0;
+                   
+                   if (!DataStr.IsEmpty()){
+                   
+                       PropertyElement.SetString(DataStr, wxT("="));
+                       PropertyName = PropertyElement.GetNextToken();
+                       PropertyValue = PropertyElement.GetNextToken();
+                       SplitData->insert(std::make_pair(PropertyName, PropertyValue));
+                   
+                   }
+                   
+                   DataStr.clear();
+                   PropertyName.clear();
+                   PropertyValue.clear();
+           
+               }
+
+       }
+
+       if (intSplitsFound == 0){
+
+               DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize));
+
+               SplitPoints->insert(std::make_pair(intSplitsFound, (8 + 1)));
+               SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize));
+
+       } else {
+               
+               DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize - 1));
+
+               SplitPoints->insert(std::make_pair(intSplitsFound, (intSplitSeek + 1)));
+               SplitLength->insert(std::make_pair(intSplitsFound, intSplitSize));
+
+       }
+
+       if (!DataStr.IsEmpty()){
+               
+               PropertyElement.SetString(DataStr, wxT("="));
+               PropertyName = PropertyElement.GetNextToken();
+               PropertyValue = PropertyElement.GetNextToken();
+               SplitData->insert(std::make_pair(PropertyName, PropertyValue));         
+               
+       }
+
+}
\ No newline at end of file
diff --git a/source/vcard/vcard34conv.h b/source/vcard/vcard34conv.h
new file mode 100644 (file)
index 0000000..e916b8a
--- /dev/null
@@ -0,0 +1,61 @@
+#include <iostream>
+#include <wx/wx.h>
+#include <wx/arrstr.h>
+#include <map>
+#include "vcard.h"
+
+#ifndef VCARD34CONV_H
+#define VCARD34CONV_H
+
+class vCard34Conv{
+private:
+    wxArrayString SettingNames;
+    wxArrayString SettingValues;
+    int SettingCount;
+    bool vCardBegin;
+    bool vCardEnd;
+    bool vCardFN;
+    float vCardVersion;
+public:
+    vCard34Conv();
+    bool ConvertToV3(wxString Filename, wxString *wxSData);
+    bool ConvertToV4(wxString *wxSData, vCard *vCardOut);
+private:
+    void SplitValues(wxString *PropertyLine, 
+       std::map<int,int> *SplitPoints, 
+       std::map<int,int> *SplitLength, 
+       int intSize);
+    void SplitValuesData(wxString *PropertyLine, 
+       std::map<int,int> *SplitPoints, 
+       std::map<int,int> *SplitLength, 
+       int intSize,
+       std::map<wxString, wxString> *SplitData);
+    void ConvertV4PropertyProc(wxString *wxSPropertyName, 
+       wxString *wxSPropertySeg1Ptr, wxString *wxSPropertySeg2Ptr, 
+       wxString *wxSPropertyPropValuesOut, wxString *wxSPropertyDataOut, 
+       wxString *wxSPropertyXVCard4Value, wxString *wxSPropertyDataNameOut,
+       std::map<wxString, wxString> *PropertyData, 
+       std::map<wxString, bool> *PropertyLock,
+       bool ProcessItemData, bool *VCardV3Value, bool *XVCardV4Value);
+       void ProcessCaptureStringsB () {} ;     
+       void ProcessCaptureStringsProc(wxString *strCapture);
+       
+       template<typename StringCapture, typename... Args>
+       void ProcessCaptureStringsB(StringCapture *string, Args*... args) {
+
+               ProcessCaptureStringsProc(string);
+               ProcessCaptureStringsB(args...);
+
+       }
+               
+       template<typename... Args>
+       void ProcessCaptureStrings(Args*... args) {
+
+               //int intSeekSelectedData = 0;
+
+               ProcessCaptureStringsB(args...);
+       
+       }
+};
+
+#endif
\ No newline at end of file
diff --git a/source/version.h b/source/version.h
new file mode 100644 (file)
index 0000000..5d814f1
--- /dev/null
@@ -0,0 +1,12 @@
+// IMPORTANT FRIENDLY REMINDER THAT IS MOSTLY IN UPPERCASE!
+//
+// IF YOU CHANGE ANY AND - WE MEAN ANY - OF THESE SETTINGS
+// IT IS STRONGLY RECOMMENDED THAT YOU RUN 'make clean' AND
+// THEN 'make' AFTERWARDS.
+//
+// THANK YOU FOR YOUR ATTENTION!
+
+#define XSDAB_VERSION "0.01"
+#define XSDAB_USERAGENT "XestiaAddressBook/0.01"
+#define XSDAB_SOURCE "source"
+#define XSDAB_RELEASE 0
\ No newline at end of file
diff --git a/source/widgets/XABAccountView.cpp b/source/widgets/XABAccountView.cpp
new file mode 100644 (file)
index 0000000..7020a4d
--- /dev/null
@@ -0,0 +1,97 @@
+#include "XABAccountView.h"
+
+BEGIN_EVENT_TABLE(XABAccountView, wxTreeCtrl)
+       //EVT_LEFT_UP(XABAccountView::OnMouseClick)
+       EVT_LEFT_DCLICK(XABAccountView::OnMouseClick)
+       EVT_TREE_ITEM_EXPANDED(-1, XABAccountView::ExpColProc)
+       EVT_TREE_ITEM_COLLAPSED(-1, XABAccountView::ExpColProc)
+END_EVENT_TABLE()
+
+void XABAccountView::Init(){
+
+       idx = -1;
+
+}
+
+bool XABAccountView::Create(wxWindow* parent){
+
+       return wxTreeCtrl::Create(parent, 1, wxPoint(0,0), wxSize(100,100), wxTR_DEFAULT_STYLE|wxTR_HIDE_ROOT);
+
+}
+
+wxWindow* XABAccountView::GetControl(){
+
+       return this;
+
+}
+
+void XABAccountView::SetStringValue(const wxString& s){
+
+       tid = wxTreeCtrl::GetSelection();
+
+}
+
+wxString XABAccountView::GetStringValue() const{
+
+       if (tid.IsOk()){
+               wxString wxStrName = wxTreeCtrl::GetItemText(tid);
+               return wxStrName;
+       }
+       return wxEmptyString;
+
+}
+
+void XABAccountView::OnMouseClick(wxMouseEvent& WXUNUSED(event)){
+
+       // Update control.
+
+       // Check if item expanding or collapsed
+       // has occured before dismissing.
+
+       if (ixp == FALSE){
+
+               // Item expansion/collapsing didn't occur.
+
+               tid = wxTreeCtrl::GetSelection();
+               Dismiss();
+
+       }
+
+       ixp = FALSE;
+       
+}
+
+void XABAccountView::SetAccount(){
+
+       tid = wxTreeCtrl::GetSelection();
+       Dismiss();
+
+}
+
+// Needed by SetStringValue
+wxTreeItemId XABAccountView::FindItemByText(wxTreeItemId parent, const wxString& text)
+{
+       wxTreeItemIdValue cookie;
+       wxTreeItemId child = GetFirstChild(parent, cookie);
+       while (child.IsOk())
+       {
+               if (GetItemText(child) == text)
+               {
+                       return child;
+               }
+               if (ItemHasChildren(child))
+               {
+                       wxTreeItemId found = FindItemByText(child, text);
+                       if (found.IsOk())
+                               return found;
+               }
+               child = GetNextChild(parent, cookie);
+       }
+       return wxTreeItemId();
+}
+
+void XABAccountView::ExpColProc(wxTreeEvent& event){
+
+       ixp = TRUE;
+
+}
\ No newline at end of file
diff --git a/source/widgets/XABAccountView.h b/source/widgets/XABAccountView.h
new file mode 100644 (file)
index 0000000..fa44082
--- /dev/null
@@ -0,0 +1,38 @@
+#include <wx/combo.h>
+#include <wx/treectrl.h>
+#include <wx/treebase.h>
+#include <wx/wx.h>
+
+#ifndef __WIDGETS_XABACCOUNTVIEW_H__
+#define __WIDGETS_XABACCOUNTVIEW_H__
+
+class XABAccountView : public wxTreeCtrl, public wxComboPopup
+{
+
+protected:
+
+       int idx;
+       bool ixp = FALSE;
+       wxTreeItemId tid;
+
+public:
+
+       virtual void Init();
+       virtual bool Create(wxWindow* parent);
+       virtual wxWindow* GetControl();
+
+       // Process wxString into a list selection.
+       virtual void SetStringValue(const wxString& s);
+
+       // Get list selection as a wxString.
+       virtual wxString GetStringValue() const;
+       wxTreeItemId FindItemByText(wxTreeItemId parent, const wxString& text);
+       void OnMouseClick(wxMouseEvent& WXUNUSED(event));
+       void ExpColProc(wxTreeEvent& event);
+       void SetAccount();
+private:
+       DECLARE_EVENT_TABLE();
+
+};
+
+#endif
\ No newline at end of file
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy