diff --git a/stepmania/src/smlobby/ConnectDlg.cpp b/stepmania/src/smlobby/ConnectDlg.cpp new file mode 100644 index 0000000000..155de8b450 --- /dev/null +++ b/stepmania/src/smlobby/ConnectDlg.cpp @@ -0,0 +1,84 @@ +// ConnectDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "resource2.h" +#include "ConnectDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CConnectDlg dialog + + +CConnectDlg::CConnectDlg(CWnd* pParent /*=NULL*/) + : CDialog(CConnectDlg::IDD, pParent) +{ + //{{AFX_DATA_INIT(CConnectDlg) + m_sFullName = _T(""); + m_sNick = _T(""); + m_sPassword = _T(""); + m_uiPort = 0; + m_sServer = _T(""); + m_sUserID = _T(""); + //}}AFX_DATA_INIT +} + + +void CConnectDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CConnectDlg) + DDX_Text(pDX, IDC_FULLNAME, m_sFullName); + DDX_Text(pDX, IDC_NICK, m_sNick); + DDX_Text(pDX, IDC_PASSWORD, m_sPassword); + DDX_Text(pDX, IDC_PORT, m_uiPort); + DDX_Text(pDX, IDC_SERVER, m_sServer); + DDX_Text(pDX, IDC_USERID, m_sUserID); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CConnectDlg, CDialog) + //{{AFX_MSG_MAP(CConnectDlg) + ON_EN_CHANGE(IDC_FULLNAME, OnChange) + ON_EN_CHANGE(IDC_NICK, OnChange) + ON_EN_CHANGE(IDC_PASSWORD, OnChange) + ON_EN_CHANGE(IDC_PORT, OnChange) + ON_EN_CHANGE(IDC_SERVER, OnChange) + ON_EN_CHANGE(IDC_USERID, OnChange) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CConnectDlg message handlers + +void CConnectDlg::OnChange() +{ + UpdateButtons(); +} + +void CConnectDlg::UpdateButtons() +{ + GetDlgItem(IDOK)->EnableWindow( + GetDlgItem(IDC_FULLNAME)->GetWindowTextLength() > 0 && + GetDlgItem(IDC_NICK)->GetWindowTextLength() > 0 && + GetDlgItem(IDC_SERVER)->GetWindowTextLength() > 0 && + GetDlgItem(IDC_USERID)->GetWindowTextLength() > 0 && + GetDlgItemInt(IDC_PORT) != 0 + ); +} + +BOOL CConnectDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + UpdateButtons(); + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} diff --git a/stepmania/src/smlobby/ConnectDlg.h b/stepmania/src/smlobby/ConnectDlg.h new file mode 100644 index 0000000000..ee72ebf499 --- /dev/null +++ b/stepmania/src/smlobby/ConnectDlg.h @@ -0,0 +1,53 @@ +#if !defined(AFX_CONNECTDLG_H__04D8BFFC_9C8D_4610_8AFF_4736EB7397BE__INCLUDED_) +#define AFX_CONNECTDLG_H__04D8BFFC_9C8D_4610_8AFF_4736EB7397BE__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// ConnectDlg.h : header file +// + +///////////////////////////////////////////////////////////////////////////// +// CConnectDlg dialog + +class CConnectDlg : public CDialog +{ +// Construction +public: + CConnectDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CConnectDlg) + enum { IDD = IDD_CONNECT }; + CString m_sFullName; + CString m_sNick; + CString m_sPassword; + UINT m_uiPort; + CString m_sServer; + CString m_sUserID; + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CConnectDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + void UpdateButtons(); + + // Generated message map functions + //{{AFX_MSG(CConnectDlg) + afx_msg void OnChange(); + virtual BOOL OnInitDialog(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_CONNECTDLG_H__04D8BFFC_9C8D_4610_8AFF_4736EB7397BE__INCLUDED_) diff --git a/stepmania/src/smlobby/CrossThreadsMessagingDevice.cpp b/stepmania/src/smlobby/CrossThreadsMessagingDevice.cpp new file mode 100644 index 0000000000..0642603ce8 --- /dev/null +++ b/stepmania/src/smlobby/CrossThreadsMessagingDevice.cpp @@ -0,0 +1,98 @@ +// CrossThreadsMessagingDevice.cpp + +#include "stdafx.h" +#include "CrossThreadsMessagingDevice.h" + + +LPCTSTR CCrossThreadsMessagingDevice::m_lpszClassName = _T("CCrossThreadsMessagingDevice_HiddenWindow"); +int CCrossThreadsMessagingDevice::m_iCount = 0; + + +CCrossThreadsMessagingDevice::CCrossThreadsMessagingDevice() + : m_hWnd(NULL), m_pMonitor(NULL) +{ + if( m_iCount++ == 0 ) + { + const WNDCLASS wc = + { + 0, + HiddenWindowProc, + sizeof(DWORD) * 2, + sizeof(DWORD) * 2, + GetModuleHandle(NULL), + (HICON)NULL, + (HCURSOR)NULL, + (HBRUSH)(COLOR_WINDOW + 1), + (LPCTSTR)NULL, + m_lpszClassName + }; + + if( !RegisterClass(&wc) ) + return; + } + + m_hWnd = CreateWindow( + m_lpszClassName, + _T(""), + WS_OVERLAPPED, + 0, 0, 0, 0, + (HWND)NULL, + (HMENU)NULL, + GetModuleHandle(NULL), + this + ); +} + +CCrossThreadsMessagingDevice::~CCrossThreadsMessagingDevice() +{ + if( ::IsWindow(m_hWnd) ) + DestroyWindow(m_hWnd); + + if( --m_iCount == 0 ) + { + UnregisterClass(m_lpszClassName, GetModuleHandle(NULL)); + } +} + +void CCrossThreadsMessagingDevice::Post(WPARAM wParam, LPARAM lParam) +{ + ASSERT(::IsWindow(m_hWnd)); + PostMessage(m_hWnd, HWM_DATA, wParam, lParam); +} + +LRESULT WINAPI CCrossThreadsMessagingDevice::HiddenWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +{ + LRESULT rc = 0; + + CCrossThreadsMessagingDevice* pThis = + (CCrossThreadsMessagingDevice*)GetWindowLong(hWnd, GWL_USERDATA); + + switch( uMsg ) + { + case WM_NCCREATE : + { + LPCREATESTRUCT lpcs = (LPCREATESTRUCT)lParam; + ASSERT(lpcs->lpCreateParams != NULL); + SetWindowLong(hWnd, GWL_USERDATA, (LONG)lpcs->lpCreateParams); + rc = TRUE; + break; + } + + case HWM_DATA : + { + ASSERT(pThis != NULL); + if( pThis->m_pMonitor ) + pThis->m_pMonitor->OnCrossThreadsMessage(wParam, lParam); + break; + } + + default : + { + rc = DefWindowProc(hWnd, uMsg, wParam, lParam); + break; + } + } + + return rc; +} + diff --git a/stepmania/src/smlobby/CrossThreadsMessagingDevice.h b/stepmania/src/smlobby/CrossThreadsMessagingDevice.h new file mode 100644 index 0000000000..16f38ff553 --- /dev/null +++ b/stepmania/src/smlobby/CrossThreadsMessagingDevice.h @@ -0,0 +1,36 @@ +// CrossThreadsMessagingDevice.h + +#ifndef _CrossThreadsMessagingDevice_H_ +#define _CrossThreadsMessagingDevice_H_ + + +class CCrossThreadsMessagingDevice +{ +public : + struct ICrossThreadsMessagingDeviceMonitor + { + virtual void OnCrossThreadsMessage(WPARAM wParam, LPARAM lParam) = 0; + }; + + CCrossThreadsMessagingDevice(); + virtual ~CCrossThreadsMessagingDevice(); + + void SetMonitor(ICrossThreadsMessagingDeviceMonitor* pMonitor) { m_pMonitor = pMonitor; } + void Post(WPARAM wParam, LPARAM lParam); + + operator bool() const { return ::IsWindow(m_hWnd)==TRUE; } + +private : + enum { HWM_DATA = WM_USER + 1000 }; + static LPCTSTR m_lpszClassName; + static int m_iCount; + HWND m_hWnd; + ICrossThreadsMessagingDeviceMonitor* m_pMonitor; + + static LRESULT WINAPI HiddenWindowProc(HWND, UINT, WPARAM, LPARAM); +}; + + + +#endif // _CrossThreadsMessagingDevice_H_ + diff --git a/stepmania/src/smlobby/DirectoryDialog.cpp b/stepmania/src/smlobby/DirectoryDialog.cpp new file mode 100644 index 0000000000..d573ecc244 --- /dev/null +++ b/stepmania/src/smlobby/DirectoryDialog.cpp @@ -0,0 +1,88 @@ +// DirectoryDialog.cpp : implementation file +// + +#include "stdafx.h" +#include "smlobby.h" +#include "DirectoryDialog.h" +#include "dlgs.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CDirectoryDialog + +IMPLEMENT_DYNAMIC(CDirectoryDialog, CFileDialog) + +CDirectoryDialog::CDirectoryDialog(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, + DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) : + CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd) +{ +} + + +BEGIN_MESSAGE_MAP(CDirectoryDialog, CFileDialog) + //{{AFX_MSG_MAP(CDirectoryDialog) + ON_WM_PAINT() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + + +void CDirectoryDialog::OnPaint() +{ + CPaintDC dc(this); // device context for painting + + // TODO: Add your message handler code here + +//This code makes the directory listbox "highlight" an entry when it first +//comes up. W/O this code, the focus is on the directory listbox, but no +//focus rectangle is drawn and no entries are selected. Ho hum. + + if (m_bDlgJustCameUp) + { + m_bDlgJustCameUp=FALSE; + SendDlgItemMessage(lst2, LB_SETCURSEL, 0, 0L); + } + + // Do not call CFileDialog::OnPaint() for painting messages +} + +BOOL CDirectoryDialog::OnInitDialog() +{ + CenterWindow(); + +//Let's hide these windows so the user cannot tab to them. Note that in +//the private template (in cddemo.dlg) the coordinates for these guys are +//*outside* the coordinates of the dlg window itself. Without the following +//ShowWindow()'s you would not see them, but could still tab to them. + + GetDlgItem(stc2)->ShowWindow(SW_HIDE); + GetDlgItem(stc3)->ShowWindow(SW_HIDE); + GetDlgItem(edt1)->ShowWindow(SW_HIDE); + GetDlgItem(lst1)->ShowWindow(SW_HIDE); + GetDlgItem(cmb1)->ShowWindow(SW_HIDE); + +//We must put something in this field, even though it is hidden. This is +//because if this field is empty, or has something like "*.txt" in it, +//and the user hits OK, the dlg will NOT close. We'll jam something in +//there (like "Junk") so when the user hits OK, the dlg terminates. +//Note that we'll deal with the "Junk" during return processing (see below) + + SetDlgItemText(edt1, "Junk"); + +//Now set the focus to the directories listbox. Due to some painting +//problems, we *must* also process the first WM_PAINT that comes through +//and set the current selection at that point. Setting the selection +//here will NOT work. See comment below in the on paint handler. + + GetDlgItem(lst2)->SetFocus(); + + m_bDlgJustCameUp=TRUE; + + CFileDialog::OnInitDialog(); + + return(FALSE); +} diff --git a/stepmania/src/smlobby/DirectoryDialog.h b/stepmania/src/smlobby/DirectoryDialog.h new file mode 100644 index 0000000000..be111f469b --- /dev/null +++ b/stepmania/src/smlobby/DirectoryDialog.h @@ -0,0 +1,41 @@ +#if !defined(AFX_DIRECTORYDIALOG_H__1692F649_A71E_4EA5_9DE0_0A3F2A30B1E6__INCLUDED_) +#define AFX_DIRECTORYDIALOG_H__1692F649_A71E_4EA5_9DE0_0A3F2A30B1E6__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// DirectoryDialog.h : header file +// + +#include "resource2.h" + +///////////////////////////////////////////////////////////////////////////// +// CDirectoryDialog dialog + +class CDirectoryDialog : public CFileDialog +{ + DECLARE_DYNAMIC(CDirectoryDialog) + +public: + BOOL m_bDlgJustCameUp; + +public: + CDirectoryDialog(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs + LPCTSTR lpszDefExt = NULL, + LPCTSTR lpszFileName = NULL, + DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, + LPCTSTR lpszFilter = NULL, + CWnd* pParentWnd = NULL); + +protected: + //{{AFX_MSG(CDirectoryDialog) + afx_msg void OnPaint(); + virtual BOOL OnInitDialog(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_DIRECTORYDIALOG_H__1692F649_A71E_4EA5_9DE0_0A3F2A30B1E6__INCLUDED_) diff --git a/stepmania/src/smlobby/EditChat.cpp b/stepmania/src/smlobby/EditChat.cpp new file mode 100644 index 0000000000..045914cf5b --- /dev/null +++ b/stepmania/src/smlobby/EditChat.cpp @@ -0,0 +1,96 @@ +// EditChat.cpp : implementation file +// + +#include "stdafx.h" +#include "smlobby.h" +#include "EditChat.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +//external object +extern irc::CIrcSession g_ircSession; + +///////////////////////////////////////////////////////////////////////////// +// CEditChat + +CEditChat::CEditChat() +{ +} + +CEditChat::~CEditChat() +{ +} + + +BEGIN_MESSAGE_MAP(CEditChat, CEdit) + //{{AFX_MSG_MAP(CEditChat) + ON_WM_GETDLGCODE() + ON_WM_KEYUP() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CEditChat message handlers + +UINT CEditChat::OnGetDlgCode() +{ + UINT code = CEdit::OnGetDlgCode(); + + code |= DLGC_WANTMESSAGE; + + return code; +} + +void CEditChat::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) +{ + switch (nChar) + { + //User presses the return key + case VK_RETURN: + SendChatMesg(); + break; + } + + CEdit::OnKeyUp(nChar, nRepCnt, nFlags); +} + +void CEditChat::SendChatMesg() +{ + CString s, name; + bool isIncoming = false; + + this->GetWindowText(s); + + if( s.GetLength() == 0 ) return; + + if( s[0] != '/' ) + { + //Make sure were in a chat room + if( g_ircSession.GetInfo().sCurrentChatRoom.length() == 0) + { + s = "You are not currently in a chat room"; + name = g_ircSession.GetInfo().sNick.c_str(); + isIncoming = true; + } + else + { + name = g_ircSession.GetInfo().sCurrentChatRoom.c_str(); + } + + s = "PRIVMSG " + name + " :" + s; + } + else + { + s = s.Mid(1); + } + + if( g_ircSession ) + g_ircSession << irc::CIrcMessage(s, isIncoming); + + this->SetWindowText(_T("")); +} \ No newline at end of file diff --git a/stepmania/src/smlobby/EditChat.h b/stepmania/src/smlobby/EditChat.h new file mode 100644 index 0000000000..1c0643719c --- /dev/null +++ b/stepmania/src/smlobby/EditChat.h @@ -0,0 +1,50 @@ +#if !defined(AFX_EDITCHAT_H__68A3B363_25AE_45B1_8519_9FE70839EFC4__INCLUDED_) +#define AFX_EDITCHAT_H__68A3B363_25AE_45B1_8519_9FE70839EFC4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// EditChat.h : header file +// + +///////////////////////////////////////////////////////////////////////////// +// CEditChat window + +class CEditChat : public CEdit +{ +// Construction +public: + CEditChat(); + +// Attributes +public: + +// Operations +public: + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CEditChat) + //}}AFX_VIRTUAL + +// Implementation +public: + virtual ~CEditChat(); + void SendChatMesg(); + + // Generated message map functions +protected: + //{{AFX_MSG(CEditChat) + afx_msg UINT OnGetDlgCode(); + afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags); + //}}AFX_MSG + + DECLARE_MESSAGE_MAP() +}; + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_EDITCHAT_H__68A3B363_25AE_45B1_8519_9FE70839EFC4__INCLUDED_) diff --git a/stepmania/src/smlobby/SendFileDialog.cpp b/stepmania/src/smlobby/SendFileDialog.cpp new file mode 100644 index 0000000000..5db19b3399 --- /dev/null +++ b/stepmania/src/smlobby/SendFileDialog.cpp @@ -0,0 +1,77 @@ +// SendFileDialog.cpp : implementation file +// + +#include "stdafx.h" +#include "smlobby.h" +#include "SendFileDialog.h" +#include "irc.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CSendFileDialog dialog + + +CSendFileDialog::CSendFileDialog(CWnd* pParent /*=NULL*/) + : CDialog(CSendFileDialog::IDD, pParent) +{ + //{{AFX_DATA_INIT(CSendFileDialog) + m_BytesSent = _T(""); + m_Filesize = _T(""); + m_FolderName = _T(""); + m_FileName = _T(""); + m_RecvrName = _T(""); + m_TimeLeft = _T(""); + m_XferRate = _T(""); + m_XferStatus = _T(""); + m_SentRecvd = _T(""); + m_ToFrom = _T(""); + //}}AFX_DATA_INIT + + m_pDCCServer = NULL; +} + + +void CSendFileDialog::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CSendFileDialog) + DDX_Control(pDX, IDC_PROGRESS1, m_ProgressFile); + DDX_Text(pDX, IDC_BYTESSENT, m_BytesSent); + DDX_Text(pDX, IDC_FILESIZE, m_Filesize); + DDX_Text(pDX, IDC_FOLDERNAME, m_FolderName); + DDX_Text(pDX, IDC_FILENAME, m_FileName); + DDX_Text(pDX, IDC_RECVRNAME, m_RecvrName); + DDX_Text(pDX, IDC_TIMELEFT, m_TimeLeft); + DDX_Text(pDX, IDC_XFERRATE, m_XferRate); + DDX_Text(pDX, IDC_XFERSTATUS, m_XferStatus); + DDX_Text(pDX, IDC_SENTRECVD, m_SentRecvd); + DDX_Text(pDX, IDC_TOFROM, m_ToFrom); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CSendFileDialog, CDialog) + //{{AFX_MSG_MAP(CSendFileDialog) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CSendFileDialog message handlers + +void CSendFileDialog::OnCancel() +{ + //Tell the DCC Server to abort as the file isn't transfering + // or the user has beome impatient :) + if (m_pDCCServer) + { + CIrcDCCServer* pServer = (CIrcDCCServer *)m_pDCCServer; + pServer->Stop(0); + } + + CDialog::OnCancel(); +} diff --git a/stepmania/src/smlobby/SendFileDialog.h b/stepmania/src/smlobby/SendFileDialog.h new file mode 100644 index 0000000000..cb838c1bc5 --- /dev/null +++ b/stepmania/src/smlobby/SendFileDialog.h @@ -0,0 +1,64 @@ +#if !defined(AFX_SENDFILEDIALOG_H__6AA4B205_EDA8_4960_9424_1C5743093120__INCLUDED_) +#define AFX_SENDFILEDIALOG_H__6AA4B205_EDA8_4960_9424_1C5743093120__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// SendFileDialog.h : header file +// + +#include "resource2.h" + +///////////////////////////////////////////////////////////////////////////// +// CSendFileDialog dialog + +class CSendFileDialog : public CDialog +{ +// Construction +public: + CSendFileDialog(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CSendFileDialog) + enum { IDD = IDD_FILEXFER }; + CProgressCtrl m_ProgressFile; + CString m_BytesSent; + CString m_Filesize; + CString m_FolderName; + CString m_FileName; + CString m_RecvrName; + CString m_TimeLeft; + CString m_XferRate; + CString m_XferStatus; + CString m_SentRecvd; + CString m_ToFrom; + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CSendFileDialog) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +public: + void AssignDCCServer(void* pServer) { m_pDCCServer = pServer; } + +protected: + void* m_pDCCServer; + +protected: + + // Generated message map functions + //{{AFX_MSG(CSendFileDialog) + virtual void OnCancel(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_SENDFILEDIALOG_H__6AA4B205_EDA8_4960_9424_1C5743093120__INCLUDED_) diff --git a/stepmania/src/smlobby/StdAfx.cpp b/stepmania/src/smlobby/StdAfx.cpp new file mode 100644 index 0000000000..11c469b42f --- /dev/null +++ b/stepmania/src/smlobby/StdAfx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// gimplobby.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + + diff --git a/stepmania/src/smlobby/StdAfx.h b/stepmania/src/smlobby/StdAfx.h new file mode 100644 index 0000000000..1f4f59565a --- /dev/null +++ b/stepmania/src/smlobby/StdAfx.h @@ -0,0 +1,26 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__FDE20029_172C_49E9_9553_68F48CF8C2BF__INCLUDED_) +#define AFX_STDAFX_H__FDE20029_172C_49E9_9553_68F48CF8C2BF__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC core and standard components +#include // MFC extensions +#include // MFC support for Internet Explorer 4 Common Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__FDE20029_172C_49E9_9553_68F48CF8C2BF__INCLUDED_) diff --git a/stepmania/src/smlobby/irc.cpp b/stepmania/src/smlobby/irc.cpp new file mode 100644 index 0000000000..204edceb9a --- /dev/null +++ b/stepmania/src/smlobby/irc.cpp @@ -0,0 +1,830 @@ +// irc.cpp + +#include "stdafx.h" +#include "irc.h" + +using namespace irc; + +//////////////////////////////////////////////////////////////////// + +CIrcMessage::CIrcMessage(const char* lpszCmdLine, bool bIncoming) + : m_bIncoming(bIncoming) +{ + ParseIrcCommand(lpszCmdLine); +} + +CIrcMessage::CIrcMessage(const CIrcMessage& m) + : sCommand(m.sCommand), + parameters(m.parameters), + m_bIncoming(m.m_bIncoming) +{ + prefix.sNick = m.prefix.sNick; + prefix.sUser = m.prefix.sUser; + prefix.sHost = m.prefix.sHost; +} + +void CIrcMessage::Reset() +{ + prefix.sNick = prefix.sUser = prefix.sHost = sCommand = ""; + m_bIncoming = false; + parameters.clear(); +} + +CIrcMessage& CIrcMessage::operator = (const CIrcMessage& m) +{ + if( &m != this ) + { + sCommand = m.sCommand; + parameters = m.parameters; + prefix.sNick = m.prefix.sNick; + prefix.sUser = m.prefix.sUser; + prefix.sHost = m.prefix.sHost; + m_bIncoming = m.m_bIncoming; + } + return *this; +} + +CIrcMessage& CIrcMessage::operator = (const char* lpszCmdLine) +{ + Reset(); + ParseIrcCommand(lpszCmdLine); + return *this; +} + +void CIrcMessage::ParseIrcCommand(const char* lpszCmdLine) +{ + const char* p1 = lpszCmdLine; + const char* p2 = lpszCmdLine; + + ASSERT(lpszCmdLine != NULL); + ASSERT(*lpszCmdLine); + + // prefix exists ? + if( *p1 == ':' ) + { // break prefix into its components (nick!user@host) + p2 = ++p1; + while( *p2 && !strchr(" !", *p2) ) + ++p2; + prefix.sNick.assign(p1, p2 - p1); + if( *p2 != '!' ) + goto end_of_prefix; + p1 = ++p2; + while( *p2 && !strchr(" @", *p2) ) + ++p2; + prefix.sUser.assign(p1, p2 - p1); + if( *p2 != '@' ) + goto end_of_prefix; + p1 = ++p2; + while( *p2 && !isspace(*p2) ) + ++p2; + prefix.sHost.assign(p1, p2 - p1); +end_of_prefix : + while( *p2 && isspace(*p2) ) + ++p2; + p1 = p2; + } + + // get command + ASSERT(*p1 != '\0'); + p2 = p1; + while( *p2 && !isspace(*p2) ) + ++p2; + sCommand.assign(p1, p2 - p1); + _strupr((char*)sCommand.c_str()); + while( *p2 && isspace(*p2) ) + ++p2; + p1 = p2; + + // get parameters + while( *p1 ) + { + if( *p1 == ':' ) + { + ++p1; + // seek end-of-message + while( *p2 ) + ++p2; + parameters.push_back(String(p1, p2 - p1)); + break; + } + else + { + // seek end of parameter + while( *p2 && !isspace(*p2) ) + ++p2; + parameters.push_back(String(p1, p2 - p1)); + // see next parameter + while( *p2 && isspace(*p2) ) + ++p2; + p1 = p2; + } + } // end parameters loop +} + +String CIrcMessage::AsString() const +{ + String s; + + if( prefix.sNick.length() ) + { + s += ":" + prefix.sNick; + if( prefix.sUser.length() && prefix.sHost.length() ) + s += "!" + prefix.sUser + "@" + prefix.sHost; + s += " "; + } + + s += sCommand; + + for(int i=0; i < parameters.size(); i++) + { + s += " "; + if( i == parameters.size() - 1 ) // is last parameter ? + s += ":"; + s += parameters[i]; + } + + s += endl; + + return s; +} + +//////////////////////////////////////////////////////////////////// + +CIrcSession::CIrcSession(IIrcSessionMonitor* pMonitor) + : m_hThread(NULL) +{ + InitializeCriticalSection(&m_cs); +} + +CIrcSession::~CIrcSession() +{ + Disconnect(); + DeleteCriticalSection(&m_cs); +} + +bool CIrcSession::Connect(const CIrcSessionInfo& info) +{ + ASSERT(m_hThread==NULL && !m_socket); + + try + { +// if( !m_socket.Create() ) +// throw "Failed to create socket!"; + + InetAddr addr(info.sServer.c_str(), info.iPort); + if( !m_socket.Connect(addr) ) + { + m_socket.Close(); + throw "Failed to connect to host!"; + } + + m_info = info; + + // start receiving messages from host + m_hThread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL); + Sleep(100); + + if( info.sPassword.length() ) + m_socket.Send("PASS %s\r\n", info.sPassword.c_str()); + + m_socket.Send("NICK %s\r\n", info.sNick.c_str()); + + TCHAR szHostName[MAX_PATH]; + DWORD cbHostName = sizeof(szHostName); + GetComputerName(szHostName, &cbHostName); + + m_socket.Send("USER %s %s %s :%s\r\n", + info.sUserID.c_str(), szHostName, "server", info.sFullName.c_str()); + } + catch( const char* ) + { + Disconnect(); + } + catch( ... ) + { + Disconnect(); + } + + return (bool)m_socket; +} + +void CIrcSession::Disconnect(const char* lpszMessage) +{ + static const DWORD dwServerTimeout = 5 * 1000; + + if( !m_hThread ) + return; + + m_socket.Send("QUIT :%s\r\n", lpszMessage ? lpszMessage : "Bye!"); + + if( m_hThread && WaitForSingleObject(m_hThread, dwServerTimeout) != WAIT_OBJECT_0 ) + { + m_socket.Close(); + Sleep(100); + if( m_hThread && WaitForSingleObject(m_hThread, dwServerTimeout) != WAIT_OBJECT_0 ) + { + TerminateThread(m_hThread, 1); + CloseHandle(m_hThread); + m_hThread = NULL; + m_info.Reset(); + } + } +} + +void CIrcSession::Notify(const CIrcMessage* pmsg) +{ + // forward message to monitor objects + EnterCriticalSection(&m_cs); + for(std::set::iterator it = m_monitors.begin(); + it != m_monitors.end(); + it++ + ) + { + (*it)->OnIrcMessage(pmsg); + } + LeaveCriticalSection(&m_cs); +} + +void CIrcSession::DoReceive() +{ + CIrcIdentServer m_identServer; + char chBuf[1024*4+1]; + int cbInBuf = 0; + + if( m_info.bIdentServer ) + m_identServer.Start(m_info.sUserID.c_str()); + + while( m_socket ) + { + int cbRead; + int nLinesProcessed = 0; + + cbRead = m_socket.Receive((unsigned char*)chBuf+cbInBuf, sizeof(chBuf)-cbInBuf-1); + if( cbRead <= 0 ) + break; + cbInBuf += cbRead; + chBuf[cbInBuf] = '\0'; + + char* pStart = chBuf; + while( *pStart ) + { + char* pEnd; + + // seek end-of-line + for(pEnd=pStart; *pEnd && *pEnd != '\r' && *pEnd != '\n'; ++pEnd) + ; + if( *pEnd == '\0' ) + break; // uncomplete message. stop parsing. + + ++nLinesProcessed; + + // replace end-of-line with NULLs and skip + while( *pEnd == '\r' || *pEnd == '\n' ) + *pEnd++ = '\0'; + + if( *pStart ) + { + // process single message by monitor objects + CIrcMessage msg(pStart, true); + Notify(&msg); + } + + cbInBuf -= pEnd - pStart; + ASSERT(cbInBuf >= 0); + + pStart = pEnd; + } + + // discard processed messages + if( nLinesProcessed != 0 ) + memmove(chBuf, pStart, cbInBuf+1); + } + + if( m_socket ) + m_socket.Close(); + + if( m_info.bIdentServer ) + m_identServer.Stop(); + + // notify monitor objects that the connection has been closed + Notify(NULL); +} + +DWORD WINAPI CIrcSession::ThreadProc(LPVOID pparam) +{ + CIrcSession* pThis = (CIrcSession*)pparam; + try { pThis->DoReceive(); } catch( ... ) {} + pThis->m_info.Reset(); + CloseHandle(pThis->m_hThread); + pThis->m_hThread = NULL; + return 0; +} + +void CIrcSession::AddMonitor(IIrcSessionMonitor* pMonitor) +{ + ASSERT(pMonitor != NULL); + EnterCriticalSection(&m_cs); + m_monitors.insert(pMonitor); + LeaveCriticalSection(&m_cs); +} + +void CIrcSession::RemoveMonitor(IIrcSessionMonitor* pMonitor) +{ + ASSERT(pMonitor != NULL); + EnterCriticalSection(&m_cs); + m_monitors.erase(pMonitor); + LeaveCriticalSection(&m_cs); +} + +//////////////////////////////////////////////////////////////////// + +CIrcSessionInfo::CIrcSessionInfo() + : iPort(0), bIdentServer(false), iIdentServerPort(0) +{ +} + +CIrcSessionInfo::CIrcSessionInfo(const CIrcSessionInfo& si) + : sServer(si.sServer), + sServerName(si.sServerName), + iPort(si.iPort), + sNick(si.sNick), + sUserID(si.sUserID), + sFullName(si.sFullName), + sPassword(si.sPassword), + bIdentServer(si.bIdentServer), + sIdentServerType(si.sIdentServerType), + iIdentServerPort(si.iIdentServerPort) +{ +} + +void CIrcSessionInfo::Reset() +{ + sServer = ""; + sServerName = ""; + iPort = 0; + sNick = ""; + sUserID = ""; + sFullName = ""; + sPassword = ""; + bIdentServer = false; + sIdentServerType = ""; + iIdentServerPort = 0; +} + +//////////////////////////////////////////////////////////////////// + +CIrcIdentServer::CIrcIdentServer() + : m_uiPort(0), m_hThread(NULL) +{ +} + +CIrcIdentServer::~CIrcIdentServer() +{ + Stop(); +} + +bool CIrcIdentServer::Start( + const char* lpszUserID, + unsigned int uiPort, + const char* lpszResponseType + ) +{ + if( m_socket ) + return false; + + if( !m_socket.Bind(InetAddr(uiPort)) ) + { + m_socket.Close(); + return false; + } + + m_sResponseType = lpszResponseType; + m_sUserID = lpszUserID; + m_uiPort = uiPort; + + m_hThread = CreateThread(NULL, 0, ListenProc, this, 0, NULL); + Sleep(100); + + return true; +} + +void CIrcIdentServer::Stop() +{ + if( m_hThread ) + { + m_socket.Close(); + if( WaitForSingleObject(m_hThread, 5000) != WAIT_OBJECT_0 && m_hThread ) + { + TerminateThread(m_hThread, 1); + CloseHandle(m_hThread); + m_hThread = NULL; + } + } +} + +void CIrcIdentServer::DoThread() +{ + m_socket.Listen(); + + while( (bool)m_socket ) + { + Socket s = m_socket.Accept(); + if( !s ) + break; + + char szBuf[1024]; + int cbRead = s.Receive((unsigned char*)szBuf, sizeof(szBuf)-1); + if( cbRead <= 0 ) + continue; + szBuf[cbRead] = '\0'; + + // strip CRLF from query + for(char* p = szBuf; *p && *p != '\r' && *p != '\n'; ++p) + ; + *p = '\0'; + + s.Send("%s : USERID : %s : %s\r\n", + szBuf, m_sResponseType.c_str(), m_sUserID.c_str()); + Sleep(500); + s.Close(); + } + + m_socket.Close(); +} + +DWORD WINAPI CIrcIdentServer::ListenProc(LPVOID pparam) +{ + CIrcIdentServer* pThis = (CIrcIdentServer*)pparam; + + try { pThis->DoThread(); } catch( ... ) {} + + pThis->m_sResponseType = ""; + pThis->m_sUserID = ""; + pThis->m_uiPort = 0; + + CloseHandle(pThis->m_hThread); + pThis->m_hThread = NULL; + + return 0; +} + +//////////////////////////////////////////////////////////////////// + +CIrcDCCServer::CIrcDCCServer() + : m_uiPort(0), m_hThread(NULL), m_bIsSender(false), + m_ulPartnerIP(0L), m_ulFileSize(0L), + m_pSendFileDialog(NULL), m_ulStartTime(0L), + m_ulBytesSent(0L), m_uiXferRate(0) +{ +} + +CIrcDCCServer::~CIrcDCCServer() +{ + Stop(); +} + +bool CIrcDCCServer::Start( + const CString fileName, + const CString directory, + const CString partner, + unsigned long ulPartnerIP, + unsigned short uiPort, + unsigned long ulFileSize, + unsigned short uiXferRate, + const bool bIsSender + ) +{ + //Clean up old send file dialog + if (m_pSendFileDialog) + { + delete m_pSendFileDialog; + m_pSendFileDialog = NULL; + } + + if( m_socket ) + return false; + + //Setup the connection info vars + m_fileName = fileName; + m_directory = directory; + m_partnerName = partner; + m_ulPartnerIP = ulPartnerIP; + m_uiPort = uiPort; + m_ulFileSize = ulFileSize; + m_bIsSender = bIsSender; + m_ulBytesSent = 0L; + m_uiXferRate = uiXferRate; + + //Remember when we started + m_ulStartTime = GetTickCount(); + + //Create a file transfer dialog + m_pSendFileDialog = new CSendFileDialog(AfxGetMainWnd()); + m_pSendFileDialog->m_BytesSent = "0 bytes"; + m_pSendFileDialog->m_ProgressFile.SetRange(0, 100); + m_pSendFileDialog->m_ProgressFile.SetPos(0); + sprintf(m_pSendFileDialog->m_Filesize.GetBuffer(32), "%lu bytes", m_ulFileSize); + m_pSendFileDialog->m_FolderName = m_directory; + m_pSendFileDialog->m_FileName = m_fileName; + m_pSendFileDialog->m_RecvrName = m_partnerName; + m_pSendFileDialog->m_TimeLeft = "Infinite"; + m_pSendFileDialog->m_XferRate = "0 bytes/sec"; + m_pSendFileDialog->m_XferStatus = "Waiting to Connect..."; + + //Some fields in the + if (m_bIsSender) + { + m_pSendFileDialog->m_SentRecvd = "Sent:"; + m_pSendFileDialog->m_ToFrom = "To:"; + } + else + { + m_pSendFileDialog->m_SentRecvd = "Recv'd:"; + m_pSendFileDialog->m_ToFrom = "From:"; + } + + //Show the dialog and tell it about this server + m_pSendFileDialog->AssignDCCServer(this); + m_pSendFileDialog->ShowWindow(SW_SHOW); + + //Fire off the thread + m_hThread = CreateThread(NULL, 0, ListenProc, this, 0, NULL); + Sleep(100); + + return true; +} + +void CIrcDCCServer::Stop(DWORD timeout) +{ + if( m_hThread ) + { + m_socket.Close(); + if( WaitForSingleObject(m_hThread, timeout) != WAIT_OBJECT_0 && m_hThread ) + { + TerminateThread(m_hThread, 1); + CloseHandle(m_hThread); + m_hThread = NULL; + } + } +} + +void CIrcDCCServer::DoThreadRecv() +{ + char szBuf[8193]; + unsigned long cbRead, cbSent; + float fracSent; + unsigned long seconds, minutes, hours, rate; + + //Create an active socket to retrieve data from (close listening socket) + InetAddr addr; + addr.host = m_ulPartnerIP; + addr.port = m_uiPort; + m_socket.Connect(addr); + if ( !m_socket ) return; + + //Tell user file transfer has started + m_pSendFileDialog->m_XferStatus = "Recieving File..."; + + //Create a file to write incoming data to + CString filename = m_directory+"\\"+m_fileName; + FILE* fp = fopen(filename, "wb"); + if ( !fp ) return; + + //Start grabbing data blocks + while(m_ulBytesSent < m_ulFileSize) + { + //Grab the next buffer + cbRead = m_socket.Receive((unsigned char*)szBuf, sizeof(szBuf)-1); + + if( cbRead <= 0 ) continue; + else szBuf[cbRead] = '\0'; + + //Update the file transfer statistics + m_ulBytesSent += cbRead; + fracSent = float(m_ulBytesSent)/float(m_ulFileSize); + seconds = (GetTickCount() - m_ulStartTime)/1000; + rate = m_ulBytesSent / seconds; + seconds = (unsigned long)(float(seconds)/fracSent); + minutes = (seconds/60) % 60; + hours = (seconds/3600); + seconds = seconds % 60; + + //Update the file transfer window + sprintf(m_pSendFileDialog->m_BytesSent.GetBuffer(64), "%lu bytes", m_ulBytesSent); + sprintf(m_pSendFileDialog->m_TimeLeft.GetBuffer(32), "%luh%lum%lus", + hours, minutes, seconds); + sprintf(m_pSendFileDialog->m_XferRate.GetBuffer(64), "%lubytes/sec", rate); + m_pSendFileDialog->m_ProgressFile.SetPos(int(fracSent*100.F)); + + //Write it to file + fwrite(szBuf, cbRead, 1, fp); + + //Tell the sender how many bytes we received + cbRead = htonl(cbRead); + cbSent = 0; + while ( cbSent <= 0 ) + cbSent = m_socket.Send((unsigned char *)&cbRead, 4); + } + + //Close our data transfer socket + m_socket.Close(); + + //Close our file + fclose(fp); +} + +void CIrcDCCServer::DoThreadSend() +{ + char szBuf[8193]; + unsigned long cbSend, cbRead, numAck; + float fracSent; + unsigned long seconds, minutes, hours, rate; + + //Wait for someone to connect to us + //on a pre-arranged port + m_socket.Bind(InetAddr(m_uiPort)); + m_socket.Listen(); + + //Create an active socket to write data from (close listening socket) + Socket sock = m_socket.Accept(); + if ( !sock ) return; + m_socket.Close(); + + //Tell user file transfer has started + m_pSendFileDialog->m_XferStatus = "Sending File..."; + + //Create a file to read incoming data from + CString filename = m_directory+"\\"+m_fileName; + FILE* fp = fopen(filename, "rb"); + if ( !fp ) return; + + + //Start grapping data blocks + while( m_ulBytesSent < m_ulFileSize ) + { + //Pull a data block from the file + fread(szBuf, m_uiXferRate, 1, fp); + + //Send the next chunk out + cbSend = 0; + while (cbSend <= 0) + cbSend = sock.Send((unsigned char *)szBuf, m_uiXferRate); + + //Make sure chunk gets acknowledged + cbRead = 0; + while( cbRead <= 0) + cbRead = m_socket.Receive((unsigned char*)&numAck, 4); + + //Update that statistics + m_ulBytesSent += ntohl(numAck); + fracSent = float(m_ulBytesSent)/float(m_ulFileSize); + seconds = (GetTickCount() - m_ulStartTime)/1000; + rate = m_ulBytesSent / seconds; + seconds = (unsigned long)(float(seconds)/fracSent); + minutes = (seconds/60) % 60; + hours = (seconds/3600); + seconds = seconds % 60; + + //Update the file transfer window + sprintf(m_pSendFileDialog->m_BytesSent.GetBuffer(64), "%lu bytes", m_ulBytesSent); + sprintf(m_pSendFileDialog->m_TimeLeft.GetBuffer(32), "%luh%lum%lus", + hours, minutes, seconds); + sprintf(m_pSendFileDialog->m_XferRate.GetBuffer(64), "%lubytes/sec", rate); + m_pSendFileDialog->m_ProgressFile.SetPos(int(fracSent*100.F)); + } + + //Close our data transfer socket + sock.Close(); + + //Close our file + fclose(fp); +} + +DWORD WINAPI CIrcDCCServer::ListenProc(LPVOID pparam) +{ + CIrcDCCServer* pThis = (CIrcDCCServer*)pparam; + + if (pThis->IsSender()) + try { pThis->DoThreadSend(); } catch( ... ) {} + else + try { pThis->DoThreadRecv(); } catch( ... ) {} + + CloseHandle(pThis->m_hThread); + pThis->m_hThread = NULL; + + return 0; +} + +//////////////////////////////////////////////////////////////////// + +CIrcMonitor::HandlersMap CIrcMonitor::m_handlers; +CIrcMonitor::IrcCommandsMapsListEntry CIrcMonitor::m_handlersMapsListEntry + = { &CIrcMonitor::m_handlers, NULL }; + + +CIrcMonitor::CIrcMonitor(CIrcSession& session) + : m_session(session) +{ + m_xPost.SetMonitor(this); +} + +CIrcMonitor::~CIrcMonitor() +{ +} + +void CIrcMonitor::OnIrcMessage(const CIrcMessage* pmsg) +{ + CIrcMessage* pMsgCopy = NULL; + if( pmsg ) + pMsgCopy = new CIrcMessage(*pmsg); + m_xPost.Post(0, (LPARAM)pMsgCopy); +} + +void CIrcMonitor::OnCrossThreadsMessage(WPARAM wParam, LPARAM lParam) +{ + CIrcMessage* pmsg = (CIrcMessage*)lParam; + + OnIrcAll(pmsg); + + if( pmsg ) + { + PfnIrcMessageHandler pfn = FindMethod(pmsg->sCommand.c_str()); + if( pfn ) + { + // call member function. if it returns 'false', + // call the default handling + if( !(this->*pfn)(pmsg) ) + OnIrcDefault(pmsg); + } + else // handler not found. call default handler + OnIrcDefault(pmsg); + delete pmsg; + } + else + OnIrcDisconnected(); +} + +CIrcMonitor::PfnIrcMessageHandler CIrcMonitor::FindMethod(const char* lpszName) +{ + // call the recursive version with the most derived map + return FindMethod(GetIrcCommandsMap(), lpszName); +} + +CIrcMonitor::PfnIrcMessageHandler CIrcMonitor::FindMethod(IrcCommandsMapsListEntry* pMapsList, const char* lpszName) +{ + HandlersMap::iterator it = pMapsList->pHandlersMap->find(lpszName); + if( it != pMapsList->pHandlersMap->end() ) + return it->second; // found ! + else if( pMapsList->pBaseHandlersMap ) + return FindMethod(pMapsList->pBaseHandlersMap, lpszName); // try at base class + return NULL; // not found in any map +} + +//////////////////////////////////////////////////////////////////// + +DECLARE_IRC_MAP(CIrcDefaultMonitor, CIrcMonitor) + +CIrcDefaultMonitor::CIrcDefaultMonitor(CIrcSession& session) + : CIrcMonitor(session) +{ + IRC_MAP_ENTRY(CIrcDefaultMonitor, "NICK", OnIrc_NICK) + IRC_MAP_ENTRY(CIrcDefaultMonitor, "PING", OnIrc_PING) + IRC_MAP_ENTRY(CIrcDefaultMonitor, "002", OnIrc_YOURHOST) + IRC_MAP_ENTRY(CIrcDefaultMonitor, "005", OnIrc_BOUNCE) +} + +bool CIrcDefaultMonitor::OnIrc_NICK(const CIrcMessage* pmsg) +{ + if( (m_session.GetInfo().sNick == pmsg->prefix.sNick) && (pmsg->parameters.size() > 0) ) + m_session.m_info.sNick = pmsg->parameters[0]; + return false; +} + +bool CIrcDefaultMonitor::OnIrc_PING(const CIrcMessage* pmsg) +{ + char szResponse[100]; + sprintf(szResponse, "PONG %s", pmsg->parameters[0].c_str()); + m_session << CIrcMessage(szResponse); + return false; +} + +bool CIrcDefaultMonitor::OnIrc_YOURHOST(const CIrcMessage* pmsg) +{ + static const char* lpszFmt = "Your host is %[^ \x5b,], running version %s"; + char szHostName[100], szVersion[100]; + if( sscanf(pmsg->parameters[1].c_str(), lpszFmt, &szHostName, &szVersion) > 0 ) + m_session.m_info.sServerName = szHostName; + + return false; +} + +bool CIrcDefaultMonitor::OnIrc_BOUNCE(const CIrcMessage* pmsg) +{ + static const char* lpszFmt = "Try server %[^ ,], port %d"; + char szAltServer[100]; + int iAltPort = 0; + if( sscanf(pmsg->parameters[1].c_str(), lpszFmt, &szAltServer, &iAltPort) == 2 ) + { + } + return false; +} diff --git a/stepmania/src/smlobby/irc.h b/stepmania/src/smlobby/irc.h new file mode 100644 index 0000000000..cfb46a4fdc --- /dev/null +++ b/stepmania/src/smlobby/irc.h @@ -0,0 +1,304 @@ +// irc.h + +#ifndef _IRC_H_ +#define _IRC_H_ + +/* + IRC (RFC #1459) Client Implementation +*/ + +#pragma warning (disable: 4786) + +#include "socket.h" +#include +#include +#include +#include +#include "CrossThreadsMessagingDevice.h" +#include "SendFileDialog.h" + +//////////////////////////////////////////////////////////////////// +namespace irc { +//////////////////////////////////////////////////////////////////// + +typedef std::string String; + +static const char* endl = "\r\n"; + +//////////////////////////////////////////////////////////////////// + +class CIrcMessage +{ +public : + struct Prefix + { + String sNick, sUser, sHost; + } prefix; + String sCommand; + std::vector parameters; + bool m_bIncoming; + + CIrcMessage() : m_bIncoming(false) {} // default constructor + CIrcMessage(const char* lpszCmdLine, bool bIncoming=false); // parser constructor + CIrcMessage(const CIrcMessage& m); // copy constructor + + void Reset(); + + CIrcMessage& operator = (const CIrcMessage& m); + CIrcMessage& operator = (const char* lpszCmdLine); + + String AsString() const; + +private : + void ParseIrcCommand(const char* lpszCmdLine); +}; + +//////////////////////////////////////////////////////////////////// + +struct IIrcSessionMonitor +{ + virtual void OnIrcMessage(const CIrcMessage* pmsg) = 0; +}; + +//////////////////////////////////////////////////////////////////// + +struct CIrcSessionInfo +{ + String sServer; + String sServerName; + unsigned int iPort; + String sNick; + String sUserID; + String sFullName; + String sPassword; + String sCurrentChatRoom; + bool bIdentServer; + String sIdentServerType; + unsigned int iIdentServerPort; + + CIrcSessionInfo(); + CIrcSessionInfo(const CIrcSessionInfo& si); + + void Reset(); +}; + +//////////////////////////////////////////////////////////////////// + +class CIrcDefaultMonitor; // foreward + +class CIrcSession +{ +public : + friend class CIrcDefaultMonitor; + + CIrcSession(IIrcSessionMonitor* pMonitor = NULL); + virtual ~CIrcSession(); + + void AddMonitor(IIrcSessionMonitor* pMonitor); + void RemoveMonitor(IIrcSessionMonitor* pMonitor); + + bool Connect(const CIrcSessionInfo& info); + void Disconnect(const char* lpszMessage = "Bye!"); + + CIrcSessionInfo& GetInfo() const + { return (CIrcSessionInfo&)m_info; } + + operator bool() const { return (bool)m_socket; } + + // send-to-stream operators + friend CIrcSession& operator << (CIrcSession& os, const CIrcMessage& m); + +protected : + Socket m_socket; + CIrcSessionInfo m_info; + + void DoReceive(); + +private : + std::set m_monitors; + HANDLE m_hThread; + CRITICAL_SECTION m_cs; // protect m_monitors + + void Notify(const CIrcMessage* pmsg); + static DWORD WINAPI ThreadProc(LPVOID pparam); +}; + + +__inline CIrcSession& operator << (CIrcSession& os, const CIrcMessage& m) +{ + if( os ) + { + os.m_socket.Send(m.AsString().c_str()); + os.Notify(&m); + } + return os; +} + +//////////////////////////////////////////////////////////////////// + +// RFC's Identity Server (RFC #1413) +class CIrcIdentServer +{ +public : + CIrcIdentServer(); + virtual ~CIrcIdentServer(); + + bool Start( + const char* lpszUserID, + unsigned int uiPort = 113, + const char* lpszResponseType = "UNIX" + ); + void Stop(); + +protected : + String m_sResponseType; + unsigned int m_uiPort; + String m_sUserID; + + void DoThread(); + +private : + Socket m_socket; + HANDLE m_hThread; + + static DWORD WINAPI ListenProc(LPVOID pparam); +}; + +//////////////////////////////////////////////////////////////////// + +class CIrcDCCServer +{ +public : + CIrcDCCServer(); + virtual ~CIrcDCCServer(); + + bool Start( + const CString fileName, + const CString directory, + const CString partner, + unsigned long ulPartnerIP, + unsigned short uiPort, + unsigned long ulFileSize, + unsigned short uiXferRate, + const bool bIsSender = false + ); + + void Stop(DWORD timeout = 5000L); + + bool IsSender() { return m_bIsSender; } + +protected : + bool m_bIsSender; + CString m_fileName; + CString m_directory; + CString m_partnerName; + unsigned long m_ulPartnerIP; + unsigned int m_uiPort; + unsigned long m_ulFileSize; + unsigned long m_ulBytesSent; + unsigned long m_ulStartTime; + unsigned int m_uiXferRate; + CSendFileDialog* m_pSendFileDialog; + + void DoThreadSend(); + void DoThreadRecv(); + +private : + Socket m_socket; + HANDLE m_hThread; + + static DWORD WINAPI ListenProc(LPVOID pparam); +}; + +//////////////////////////////////////////////////////////////////// + +class CIrcMonitor : + public IIrcSessionMonitor, + private CCrossThreadsMessagingDevice::ICrossThreadsMessagingDeviceMonitor +{ +public : + typedef bool (CIrcMonitor::*PfnIrcMessageHandler)(const CIrcMessage* pmsg); + struct LessString + { + bool operator()(const char* s1, const char* s2) const + { return stricmp(s1, s2) < 0; } + }; + typedef std::map HandlersMap; + struct IrcCommandsMapsListEntry + { + HandlersMap* pHandlersMap; + IrcCommandsMapsListEntry* pBaseHandlersMap; + }; + + CIrcMonitor(CIrcSession& session); + virtual ~CIrcMonitor(); + + virtual void OnIrcMessage(const CIrcMessage* pmsg); + +protected : + CIrcSession& m_session; + + virtual IrcCommandsMapsListEntry* GetIrcCommandsMap() + { return &m_handlersMapsListEntry; } + + virtual void OnIrcAll(const CIrcMessage* pmsg) {} + virtual void OnIrcDefault(const CIrcMessage* pmsg) {} + virtual void OnIrcDisconnected() {} + +private : + CCrossThreadsMessagingDevice m_xPost; + static IrcCommandsMapsListEntry m_handlersMapsListEntry; + static HandlersMap m_handlers; + + PfnIrcMessageHandler FindMethod(const char* lpszName); + PfnIrcMessageHandler FindMethod(IrcCommandsMapsListEntry* pMapsList, const char* lpszName); + + virtual void OnCrossThreadsMessage(WPARAM wParam, LPARAM lParam); +}; + +// define an IRC command-to-member map. +// put that macro inside the class definition (.H file) +#define DEFINE_IRC_MAP() \ +protected : \ + virtual IrcCommandsMapsListEntry* GetIrcCommandsMap() \ + { return &m_handlersMapsListEntry; } \ +protected : \ + static CIrcMonitor::IrcCommandsMapsListEntry m_handlersMapsListEntry; \ + static CIrcMonitor::HandlersMap m_handlers; \ +protected : + +// IRC command-to-member map's declaration. +// add this macro to the class's .CPP file +#define DECLARE_IRC_MAP(this_class, base_class) \ + CIrcMonitor::HandlersMap this_class##::m_handlers; \ + CIrcMonitor::IrcCommandsMapsListEntry this_class##::m_handlersMapsListEntry \ + = { &this_class##::m_handlers, &base_class##::m_handlersMapsListEntry }; + +// map actual member functions to their associated IRC command. +// put any number of this macro in the class's constructor. +#define IRC_MAP_ENTRY(class_name, name, member) \ + m_handlers[(name)] = (PfnIrcMessageHandler)&class_name##::member; + +//////////////////////////////////////////////////////////////////// + +class CIrcDefaultMonitor : public CIrcMonitor +{ +public : + CIrcDefaultMonitor(CIrcSession& session); + + DEFINE_IRC_MAP() + +protected : + bool OnIrc_NICK(const CIrcMessage* pmsg); + bool OnIrc_PING(const CIrcMessage* pmsg); + bool OnIrc_YOURHOST(const CIrcMessage* pmsg); + bool OnIrc_BOUNCE(const CIrcMessage* pmsg); +}; + +//////////////////////////////////////////////////////////////////// +}; // end of namespace irc +//////////////////////////////////////////////////////////////////// + +#endif // _IRC_H_ + + diff --git a/stepmania/src/smlobby/res/smlobby.ico b/stepmania/src/smlobby/res/smlobby.ico new file mode 100644 index 0000000000..7eef0bcbe6 Binary files /dev/null and b/stepmania/src/smlobby/res/smlobby.ico differ diff --git a/stepmania/src/smlobby/res/smlobby.rc2 b/stepmania/src/smlobby/res/smlobby.rc2 new file mode 100644 index 0000000000..218cb33942 --- /dev/null +++ b/stepmania/src/smlobby/res/smlobby.rc2 @@ -0,0 +1,13 @@ +// +// GIMPLOBBY.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/stepmania/src/smlobby/resource2.h b/stepmania/src/smlobby/resource2.h new file mode 100644 index 0000000000..4d9e72dad7 --- /dev/null +++ b/stepmania/src/smlobby/resource2.h @@ -0,0 +1,51 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by smlobby.rc +// +#define IDM_ABOUTBOX 0x0010 +#define IDD_ABOUTBOX 100 +#define IDS_ABOUTBOX 101 +#define IDD_GIMPLOBBY_DIALOG 102 +#define IDR_MAINFRAME 128 +#define IDD_SMLOBBY_DIALOG 129 +#define IDD_CONNECT 130 +#define IDD_FILEXFER 131 +#define IDC_SERVER 1000 +#define IDC_PORT 1001 +#define IDC_EDIT_ENTRY 1001 +#define IDC_NICK 1002 +#define IDC_USERID 1003 +#define IDC_LIST_GAMES 1003 +#define IDC_FULLNAME 1004 +#define IDC_EDIT_GAME_INFO 1004 +#define IDC_PASSWORD 1005 +#define IDC_COMBO_MUSIC 1005 +#define IDC_BUTTON_CREATE_GAME 1006 +#define IDC_LIST_USERS 1007 +#define IDC_EDIT_GAME_NAME 1008 +#define IDC_BUTTON_BEGIN_GAME 1009 +#define IDC_EDIT_CHAT_MESSAGES 1012 +#define IDC_BUTTON_SEND 1013 +#define IDC_PROGRESS1 1014 +#define IDC_FILENAME 1015 +#define IDC_FILESIZE 1016 +#define IDC_FOLDERNAME 1017 +#define IDC_RECVRNAME 1018 +#define IDC_BYTESSENT 1019 +#define IDC_TIMELEFT 1020 +#define IDC_XFERRATE 1021 +#define IDC_XFERSTATUS 1022 +#define IDC_TOFROM 1023 +#define IDC_SENTRECVD 1024 +#define IDD_DIRECTORY 1536 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 136 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1029 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/stepmania/src/smlobby/smlobby.aps b/stepmania/src/smlobby/smlobby.aps new file mode 100644 index 0000000000..ba2cdfca1b Binary files /dev/null and b/stepmania/src/smlobby/smlobby.aps differ diff --git a/stepmania/src/smlobby/smlobby.clw b/stepmania/src/smlobby/smlobby.clw new file mode 100644 index 0000000000..18295a9846 --- /dev/null +++ b/stepmania/src/smlobby/smlobby.clw @@ -0,0 +1,2956 @@ +; CLW file contains information for the MFC ClassWizard + +[General Info] +Version=1 +LastClass=CDirectoryDialog +LastTemplate=CFileDialog +NewFileInclude1=#include "stdafx.h" +NewFileInclude2=#include "smlobby.h" +LastPage=0 + +ClassCount=7 +Class1=CConnectDlg +Class2=CEditChat +Class3=CSmlobbyApp +Class4=CAboutDlg +Class5=CSmlobbyDlg + +ResourceCount=2786 +Resource1=IDD_CONNECT (Unknown language: 0xD +Resource2=IDD_CONNECT (Unknown language: 0xD +Resource3=IDD_CONNECT (Unknown language: 0xD +Resource4=IDD_CONNECT (Unknown language: 0xD +Resource5=IDD_CONNECT (Unknown language: 0xD +Resource6=IDD_CONNECT (Unknown language: 0xD +Resource7=IDD_CONNECT (Unknown language: 0xD +Resource8=IDD_CONNECT (Unknown language: 0xD +Resource9=IDD_CONNECT (Unknown language: 0xD +Resource10=IDD_CONNECT (Unknown language: 0xD +Resource11=IDD_CONNECT (Unknown language: 0xD +Resource12=IDD_CONNECT (Unknown language: 0xD +Resource13=IDD_CONNECT (Unknown language: 0xD +Resource14=IDD_CONNECT (Unknown language: 0xD +Resource15=IDD_CONNECT (Unknown language: 0xD +Resource16=IDD_CONNECT (Unknown language: 0xD +Resource17=IDD_CONNECT (Unknown language: 0xD +Resource18=IDD_CONNECT (Unknown language: 0xD +Resource19=IDD_CONNECT (Unknown language: 0xD +Resource20=IDD_CONNECT (Unknown language: 0xD +Resource21=IDD_CONNECT (Unknown language: 0xD +Resource22=IDD_CONNECT (Unknown language: 0xD +Resource23=IDD_CONNECT (Unknown language: 0xD +Resource24=IDD_CONNECT (Unknown language: 0xD +Resource25=IDD_CONNECT (Unknown language: 0xD +Resource26=IDD_CONNECT (Unknown language: 0xD +Resource27=IDD_CONNECT (Unknown language: 0xD +Resource28=IDD_CONNECT (Unknown language: 0xD +Resource29=IDD_CONNECT (Unknown language: 0xD +Resource30=IDD_CONNECT (Unknown language: 0xD +Resource31=IDD_CONNECT (Unknown language: 0xD +Resource32=IDD_CONNECT (Unknown language: 0xD +Resource33=IDD_CONNECT (Unknown language: 0xD +Resource34=IDD_CONNECT (Unknown language: 0xD +Resource35=IDD_CONNECT (Unknown language: 0xD +Resource36=IDD_CONNECT (Unknown language: 0xD +Resource37=IDD_CONNECT (Unknown language: 0xD +Resource38=IDD_CONNECT (Unknown language: 0xD +Resource39=IDD_CONNECT (Unknown language: 0xD +Resource40=IDD_CONNECT (Unknown language: 0xD +Resource41=IDD_CONNECT (Unknown language: 0xD +Resource42=IDD_CONNECT (Unknown language: 0xD +Resource43=IDD_CONNECT (Unknown language: 0xD +Resource44=IDD_CONNECT (Unknown language: 0xD +Resource45=IDD_CONNECT (Unknown language: 0xD +Resource46=IDD_CONNECT (Unknown language: 0xD +Resource47=IDD_CONNECT (Unknown language: 0xD +Resource48=IDD_CONNECT (Unknown language: 0xD +Resource49=IDD_CONNECT (Unknown language: 0xD +Resource50=IDD_CONNECT (Unknown language: 0xD +Resource51=IDD_CONNECT (Unknown language: 0xD +Resource52=IDD_CONNECT (Unknown language: 0xD +Resource53=IDD_CONNECT (Unknown language: 0xD +Resource54=IDD_CONNECT (Unknown language: 0xD +Resource55=IDD_CONNECT (Unknown language: 0xD +Resource56=IDD_CONNECT (Unknown language: 0xD +Resource57=IDD_CONNECT (Unknown language: 0xD +Resource58=IDD_CONNECT (Unknown language: 0xD +Resource59=IDD_CONNECT (Unknown language: 0xD +Resource60=IDD_CONNECT (Unknown language: 0xD +Resource61=IDD_CONNECT (Unknown language: 0xD +Resource62=IDD_CONNECT (Unknown language: 0xD +Resource63=IDD_CONNECT (Unknown language: 0xD +Resource64=IDD_CONNECT (Unknown language: 0xD +Resource65=IDD_CONNECT (Unknown language: 0xD +Resource66=IDD_CONNECT (Unknown language: 0xD +Resource67=IDD_CONNECT (Unknown language: 0xD +Resource68=IDD_CONNECT (Unknown language: 0xD +Resource69=IDD_CONNECT (Unknown language: 0xD +Resource70=IDD_CONNECT (Unknown language: 0xD +Resource71=IDD_CONNECT (Unknown language: 0xD +Resource72=IDD_CONNECT (Unknown language: 0xD +Resource73=IDD_CONNECT (Unknown language: 0xD +Resource74=IDD_CONNECT (Unknown language: 0xD +Resource75=IDD_CONNECT (Unknown language: 0xD +Resource76=IDD_CONNECT (Unknown language: 0xD +Resource77=IDD_CONNECT (Unknown language: 0xD +Resource78=IDD_CONNECT (Unknown language: 0xD +Resource79=IDD_CONNECT (Unknown language: 0xD +Resource80=IDD_CONNECT (Unknown language: 0xD +Resource81=IDD_CONNECT (Unknown language: 0xD +Resource82=IDD_CONNECT (Unknown language: 0xD +Resource83=IDD_CONNECT (Unknown language: 0xD +Resource84=IDD_CONNECT (Unknown language: 0xD +Resource85=IDD_CONNECT (Unknown language: 0xD +Resource86=IDD_CONNECT (Unknown language: 0xD +Resource87=IDD_CONNECT (Unknown language: 0xD +Resource88=IDD_CONNECT (Unknown language: 0xD +Resource89=IDD_CONNECT (Unknown language: 0xD +Resource90=IDD_CONNECT (Unknown language: 0xD +Resource91=IDD_CONNECT (Unknown language: 0xD +Resource92=IDD_CONNECT (Unknown language: 0xD +Resource93=IDD_CONNECT (Unknown language: 0xD +Resource94=IDD_CONNECT (Unknown language: 0xD +Resource95=IDD_CONNECT (Unknown language: 0xD +Resource96=IDD_CONNECT (Unknown language: 0xD +Resource97=IDD_CONNECT (Unknown language: 0xD +Resource98=IDD_CONNECT (Unknown language: 0xD +Resource99=IDD_CONNECT (Unknown language: 0xD +Resource100=IDD_CONNECT (Unknown language: 0xD +Resource101=IDD_CONNECT (Unknown language: 0xD +Resource102=IDD_CONNECT (Unknown language: 0xD +Resource103=IDD_CONNECT (Unknown language: 0xD +Resource104=IDD_CONNECT (Unknown language: 0xD +Resource105=IDD_CONNECT (Unknown language: 0xD +Resource106=IDD_CONNECT (Unknown language: 0xD +Resource107=IDD_CONNECT (Unknown language: 0xD +Resource108=IDD_CONNECT (Unknown language: 0xD +Resource109=IDD_CONNECT (Unknown language: 0xD +Resource110=IDD_CONNECT (Unknown language: 0xD +Resource111=IDD_CONNECT (Unknown language: 0xD +Resource112=IDD_CONNECT (Unknown language: 0xD +Resource113=IDD_CONNECT (Unknown language: 0xD +Resource114=IDD_CONNECT (Unknown language: 0xD +Resource115=IDD_CONNECT (Unknown language: 0xD +Resource116=IDD_CONNECT (Unknown language: 0xD +Resource117=IDD_CONNECT (Unknown language: 0xD +Resource118=IDD_CONNECT (Unknown language: 0xD +Resource119=IDD_CONNECT (Unknown language: 0xD +Resource120=IDD_CONNECT (Unknown language: 0xD +Resource121=IDD_CONNECT (Unknown language: 0xD +Resource122=IDD_CONNECT (Unknown language: 0xD +Resource123=IDD_CONNECT (Unknown language: 0xD +Resource124=IDD_CONNECT (Unknown language: 0xD +Resource125=IDD_CONNECT (Unknown language: 0xD +Resource126=IDD_CONNECT (Unknown language: 0xD +Resource127=IDD_CONNECT (Unknown language: 0xD +Resource128=IDD_CONNECT (Unknown language: 0xD +Resource129=IDD_CONNECT (Unknown language: 0xD +Resource130=IDD_CONNECT (Unknown language: 0xD +Resource131=IDD_CONNECT (Unknown language: 0xD +Resource132=IDD_CONNECT (Unknown language: 0xD +Resource133=IDD_CONNECT (Unknown language: 0xD +Resource134=IDD_CONNECT (Unknown language: 0xD +Resource135=IDD_CONNECT (Unknown language: 0xD +Resource136=IDD_CONNECT (Unknown language: 0xD +Resource137=IDD_CONNECT (Unknown language: 0xD +Resource138=IDD_CONNECT (Unknown language: 0xD +Resource139=IDD_CONNECT (Unknown language: 0xD +Resource140=IDD_CONNECT (Unknown language: 0xD +Resource141=IDD_CONNECT (Unknown language: 0xD +Resource142=IDD_CONNECT (Unknown language: 0xD +Resource143=IDD_CONNECT (Unknown language: 0xD +Resource144=IDD_CONNECT (Unknown language: 0xD +Resource145=IDD_CONNECT (Unknown language: 0xD +Resource146=IDD_CONNECT (Unknown language: 0xD +Resource147=IDD_CONNECT (Unknown language: 0xD +Resource148=IDD_CONNECT (Unknown language: 0xD +Resource149=IDD_CONNECT (Unknown language: 0xD +Resource150=IDD_CONNECT (Unknown language: 0xD +Resource151=IDD_CONNECT (Unknown language: 0xD +Resource152=IDD_CONNECT (Unknown language: 0xD +Resource153=IDD_CONNECT (Unknown language: 0xD +Resource154=IDD_CONNECT (Unknown language: 0xD +Resource155=IDD_CONNECT (Unknown language: 0xD +Resource156=IDD_CONNECT (Unknown language: 0xD +Resource157=IDD_CONNECT (Unknown language: 0xD +Resource158=IDD_CONNECT (Unknown language: 0xD +Resource159=IDD_CONNECT (Unknown language: 0xD +Resource160=IDD_CONNECT (Unknown language: 0xD +Resource161=IDD_CONNECT (Unknown language: 0xD +Resource162=IDD_CONNECT (Unknown language: 0xD +Resource163=IDD_CONNECT (Unknown language: 0xD +Resource164=IDD_CONNECT (Unknown language: 0xD +Resource165=IDD_CONNECT (Unknown language: 0xD +Resource166=IDD_CONNECT (Unknown language: 0xD +Resource167=IDD_CONNECT (Unknown language: 0xD +Resource168=IDD_CONNECT (Unknown language: 0xD +Resource169=IDD_CONNECT (Unknown language: 0xD +Resource170=IDD_CONNECT (Unknown language: 0xD +Resource171=IDD_CONNECT (Unknown language: 0xD +Resource172=IDD_CONNECT (Unknown language: 0xD +Resource173=IDD_CONNECT (Unknown language: 0xD +Resource174=IDD_CONNECT (Unknown language: 0xD +Resource175=IDD_CONNECT (Unknown language: 0xD +Resource176=IDD_CONNECT (Unknown language: 0xD +Resource177=IDD_CONNECT (Unknown language: 0xD +Resource178=IDD_CONNECT (Unknown language: 0xD +Resource179=IDD_CONNECT (Unknown language: 0xD +Resource180=IDD_CONNECT (Unknown language: 0xD +Resource181=IDD_CONNECT (Unknown language: 0xD +Resource182=IDD_CONNECT (Unknown language: 0xD +Resource183=IDD_CONNECT (Unknown language: 0xD +Resource184=IDD_CONNECT (Unknown language: 0xD +Resource185=IDD_CONNECT (Unknown language: 0xD +Resource186=IDD_CONNECT (Unknown language: 0xD +Resource187=IDD_CONNECT (Unknown language: 0xD +Resource188=IDD_CONNECT (Unknown language: 0xD +Resource189=IDD_CONNECT (Unknown language: 0xD +Resource190=IDD_CONNECT (Unknown language: 0xD +Resource191=IDD_CONNECT (Unknown language: 0xD +Resource192=IDD_CONNECT (Unknown language: 0xD +Resource193=IDD_CONNECT (Unknown language: 0xD +Resource194=IDD_CONNECT (Unknown language: 0xD +Resource195=IDD_CONNECT (Unknown language: 0xD +Resource196=IDD_CONNECT (Unknown language: 0xD +Resource197=IDD_CONNECT (Unknown language: 0xD +Resource198=IDD_CONNECT (Unknown language: 0xD +Resource199=IDD_CONNECT (Unknown language: 0xD +Resource200=IDD_CONNECT (Unknown language: 0xD +Resource201=IDD_CONNECT (Unknown language: 0xD +Resource202=IDD_CONNECT (Unknown language: 0xD +Resource203=IDD_CONNECT (Unknown language: 0xD +Resource204=IDD_CONNECT (Unknown language: 0xD +Resource205=IDD_CONNECT (Unknown language: 0xD +Resource206=IDD_CONNECT (Unknown language: 0xD +Resource207=IDD_CONNECT (Unknown language: 0xD +Resource208=IDD_CONNECT (Unknown language: 0xD +Resource209=IDD_CONNECT (Unknown language: 0xD +Resource210=IDD_CONNECT (Unknown language: 0xD +Resource211=IDD_CONNECT (Unknown language: 0xD +Resource212=IDD_CONNECT (Unknown language: 0xD +Resource213=IDD_CONNECT (Unknown language: 0xD +Resource214=IDD_CONNECT (Unknown language: 0xD +Resource215=IDD_CONNECT (Unknown language: 0xD +Resource216=IDD_CONNECT (Unknown language: 0xD +Resource217=IDD_CONNECT (Unknown language: 0xD +Resource218=IDD_CONNECT (Unknown language: 0xD +Resource219=IDD_CONNECT (Unknown language: 0xD +Resource220=IDD_CONNECT (Unknown language: 0xD +Resource221=IDD_CONNECT (Unknown language: 0xD +Resource222=IDD_CONNECT (Unknown language: 0xD +Resource223=IDD_CONNECT (Unknown language: 0xD +Resource224=IDD_CONNECT (Unknown language: 0xD +Resource225=IDD_CONNECT (Unknown language: 0xD +Resource226=IDD_CONNECT (Unknown language: 0xD +Resource227=IDD_CONNECT (Unknown language: 0xD +Resource228=IDD_CONNECT (Unknown language: 0xD +Resource229=IDD_CONNECT (Unknown language: 0xD +Resource230=IDD_CONNECT (Unknown language: 0xD +Resource231=IDD_CONNECT (Unknown language: 0xD +Resource232=IDD_CONNECT (Unknown language: 0xD +Resource233=IDD_CONNECT (Unknown language: 0xD +Resource234=IDD_CONNECT (Unknown language: 0xD +Resource235=IDD_CONNECT (Unknown language: 0xD +Resource236=IDD_CONNECT (Unknown language: 0xD +Resource237=IDD_CONNECT (Unknown language: 0xD +Resource238=IDD_CONNECT (Unknown language: 0xD +Resource239=IDD_CONNECT (Unknown language: 0xD +Resource240=IDD_CONNECT (Unknown language: 0xD +Resource241=IDD_CONNECT (Unknown language: 0xD +Resource242=IDD_CONNECT (Unknown language: 0xD +Resource243=IDD_CONNECT (Unknown language: 0xD +Resource244=IDD_CONNECT (Unknown language: 0xD +Resource245=IDD_CONNECT (Unknown language: 0xD +Resource246=IDD_CONNECT (Unknown language: 0xD +Resource247=IDD_CONNECT (Unknown language: 0xD +Resource248=IDD_CONNECT (Unknown language: 0xD +Resource249=IDD_CONNECT (Unknown language: 0xD +Resource250=IDD_CONNECT (Unknown language: 0xD +Resource251=IDD_CONNECT (Unknown language: 0xD +Resource252=IDD_CONNECT (Unknown language: 0xD +Resource253=IDD_CONNECT (Unknown language: 0xD +Resource254=IDD_CONNECT (Unknown language: 0xD +Resource255=IDD_CONNECT (Unknown language: 0xD +Resource256=IDD_CONNECT (Unknown language: 0xD +Resource257=IDD_CONNECT (Unknown language: 0xD +Resource258=IDD_CONNECT (Unknown language: 0xD +Resource259=IDD_CONNECT (Unknown language: 0xD +Resource260=IDD_CONNECT (Unknown language: 0xD +Resource261=IDD_CONNECT (Unknown language: 0xD +Resource262=IDD_CONNECT (Unknown language: 0xD +Resource263=IDD_CONNECT (Unknown language: 0xD +Resource264=IDD_CONNECT (Unknown language: 0xD +Resource265=IDD_CONNECT (Unknown language: 0xD +Resource266=IDD_CONNECT (Unknown language: 0xD +Resource267=IDD_CONNECT (Unknown language: 0xD +Resource268=IDD_CONNECT (Unknown language: 0xD +Resource269=IDD_CONNECT (Unknown language: 0xD +Resource270=IDD_CONNECT (Unknown language: 0xD +Resource271=IDD_CONNECT (Unknown language: 0xD +Resource272=IDD_CONNECT (Unknown language: 0xD +Resource273=IDD_CONNECT (Unknown language: 0xD +Resource274=IDD_CONNECT (Unknown language: 0xD +Resource275=IDD_CONNECT (Unknown language: 0xD +Resource276=IDD_CONNECT (Unknown language: 0xD +Resource277=IDD_CONNECT (Unknown language: 0xD +Resource278=IDD_CONNECT (Unknown language: 0xD +Resource279=IDD_CONNECT (Unknown language: 0xD +Resource280=IDD_CONNECT (Unknown language: 0xD +Resource281=IDD_CONNECT (Unknown language: 0xD +Resource282=IDD_CONNECT (Unknown language: 0xD +Resource283=IDD_CONNECT (Unknown language: 0xD +Resource284=IDD_CONNECT (Unknown language: 0xD +Resource285=IDD_CONNECT (Unknown language: 0xD +Resource286=IDD_CONNECT (Unknown language: 0xD +Resource287=IDD_CONNECT (Unknown language: 0xD +Resource288=IDD_CONNECT (Unknown language: 0xD +Resource289=IDD_CONNECT (Unknown language: 0xD +Resource290=IDD_CONNECT (Unknown language: 0xD +Resource291=IDD_CONNECT (Unknown language: 0xD +Resource292=IDD_CONNECT (Unknown language: 0xD +Resource293=IDD_CONNECT (Unknown language: 0xD +Resource294=IDD_CONNECT (Unknown language: 0xD +Resource295=IDD_CONNECT (Unknown language: 0xD +Resource296=IDD_CONNECT (Unknown language: 0xD +Resource297=IDD_CONNECT (Unknown language: 0xD +Resource298=IDD_CONNECT (Unknown language: 0xD +Resource299=IDD_CONNECT (Unknown language: 0xD +Resource300=IDD_CONNECT (Unknown language: 0xD +Resource301=IDD_CONNECT (Unknown language: 0xD +Resource302=IDD_CONNECT (Unknown language: 0xD +Resource303=IDD_CONNECT (Unknown language: 0xD +Resource304=IDD_CONNECT (Unknown language: 0xD +Resource305=IDD_CONNECT (Unknown language: 0xD +Resource306=IDD_CONNECT (Unknown language: 0xD +Resource307=IDD_CONNECT (Unknown language: 0xD +Resource308=IDD_CONNECT (Unknown language: 0xD +Resource309=IDD_CONNECT (Unknown language: 0xD +Resource310=IDD_CONNECT (Unknown language: 0xD +Resource311=IDD_CONNECT (Unknown language: 0xD +Resource312=IDD_CONNECT (Unknown language: 0xD +Resource313=IDD_CONNECT (Unknown language: 0xD +Resource314=IDD_CONNECT (Unknown language: 0xD +Resource315=IDD_CONNECT (Unknown language: 0xD +Resource316=IDD_CONNECT (Unknown language: 0xD +Resource317=IDD_CONNECT (Unknown language: 0xD +Resource318=IDD_CONNECT (Unknown language: 0xD +Resource319=IDD_CONNECT (Unknown language: 0xD +Resource320=IDD_CONNECT (Unknown language: 0xD +Resource321=IDD_CONNECT (Unknown language: 0xD +Resource322=IDD_CONNECT (Unknown language: 0xD +Resource323=IDD_CONNECT (Unknown language: 0xD +Resource324=IDD_CONNECT (Unknown language: 0xD +Resource325=IDD_CONNECT (Unknown language: 0xD +Resource326=IDD_CONNECT (Unknown language: 0xD +Resource327=IDD_CONNECT (Unknown language: 0xD +Resource328=IDD_CONNECT (Unknown language: 0xD +Resource329=IDD_CONNECT (Unknown language: 0xD +Resource330=IDD_CONNECT (Unknown language: 0xD +Resource331=IDD_CONNECT (Unknown language: 0xD +Resource332=IDD_CONNECT (Unknown language: 0xD +Resource333=IDD_CONNECT (Unknown language: 0xD +Resource334=IDD_CONNECT (Unknown language: 0xD +Resource335=IDD_CONNECT (Unknown language: 0xD +Resource336=IDD_CONNECT (Unknown language: 0xD +Resource337=IDD_CONNECT (Unknown language: 0xD +Resource338=IDD_CONNECT (Unknown language: 0xD +Resource339=IDD_CONNECT (Unknown language: 0xD +Resource340=IDD_CONNECT (Unknown language: 0xD +Resource341=IDD_CONNECT (Unknown language: 0xD +Resource342=IDD_CONNECT (Unknown language: 0xD +Resource343=IDD_CONNECT (Unknown language: 0xD +Resource344=IDD_CONNECT (Unknown language: 0xD +Resource345=IDD_CONNECT (Unknown language: 0xD +Resource346=IDD_CONNECT (Unknown language: 0xD +Resource347=IDD_CONNECT (Unknown language: 0xD +Resource348=IDD_CONNECT (Unknown language: 0xD +Resource349=IDD_CONNECT (Unknown language: 0xD +Resource350=IDD_CONNECT (Unknown language: 0xD +Resource351=IDD_CONNECT (Unknown language: 0xD +Resource352=IDD_CONNECT (Unknown language: 0xD +Resource353=IDD_CONNECT (Unknown language: 0xD +Resource354=IDD_CONNECT (Unknown language: 0xD +Resource355=IDD_CONNECT (Unknown language: 0xD +Resource356=IDD_CONNECT (Unknown language: 0xD +Resource357=IDD_CONNECT (Unknown language: 0xD +Resource358=IDD_CONNECT (Unknown language: 0xD +Resource359=IDD_CONNECT (Unknown language: 0xD +Resource360=IDD_CONNECT (Unknown language: 0xD +Resource361=IDD_CONNECT (Unknown language: 0xD +Resource362=IDD_CONNECT (Unknown language: 0xD +Resource363=IDD_CONNECT (Unknown language: 0xD +Resource364=IDD_CONNECT (Unknown language: 0xD +Resource365=IDD_CONNECT (Unknown language: 0xD +Resource366=IDD_CONNECT (Unknown language: 0xD +Resource367=IDD_CONNECT (Unknown language: 0xD +Resource368=IDD_CONNECT (Unknown language: 0xD +Resource369=IDD_CONNECT (Unknown language: 0xD +Resource370=IDD_CONNECT (Unknown language: 0xD +Resource371=IDD_CONNECT (Unknown language: 0xD +Resource372=IDD_CONNECT (Unknown language: 0xD +Resource373=IDD_CONNECT (Unknown language: 0xD +Resource374=IDD_CONNECT (Unknown language: 0xD +Resource375=IDD_CONNECT (Unknown language: 0xD +Resource376=IDD_CONNECT (Unknown language: 0xD +Resource377=IDD_CONNECT (Unknown language: 0xD +Resource378=IDD_CONNECT (Unknown language: 0xD +Resource379=IDD_CONNECT (Unknown language: 0xD +Resource380=IDD_CONNECT (Unknown language: 0xD +Resource381=IDD_CONNECT (Unknown language: 0xD +Resource382=IDD_CONNECT (Unknown language: 0xD +Resource383=IDD_CONNECT (Unknown language: 0xD +Resource384=IDD_CONNECT (Unknown language: 0xD +Resource385=IDD_CONNECT (Unknown language: 0xD +Resource386=IDD_CONNECT (Unknown language: 0xD +Resource387=IDD_CONNECT (Unknown language: 0xD +Resource388=IDD_CONNECT (Unknown language: 0xD +Resource389=IDD_CONNECT (Unknown language: 0xD +Resource390=IDD_CONNECT (Unknown language: 0xD +Resource391=IDD_CONNECT (Unknown language: 0xD +Resource392=IDD_CONNECT (Unknown language: 0xD +Resource393=IDD_CONNECT (Unknown language: 0xD +Resource394=IDD_CONNECT (Unknown language: 0xD +Resource395=IDD_CONNECT (Unknown language: 0xD +Resource396=IDD_CONNECT (Unknown language: 0xD +Resource397=IDD_CONNECT (Unknown language: 0xD +Resource398=IDD_CONNECT (Unknown language: 0xD +Resource399=IDD_CONNECT (Unknown language: 0xD +Resource400=IDD_CONNECT (Unknown language: 0xD +Resource401=IDD_CONNECT (Unknown language: 0xD +Resource402=IDD_CONNECT (Unknown language: 0xD +Resource403=IDD_CONNECT (Unknown language: 0xD +Resource404=IDD_CONNECT (Unknown language: 0xD +Resource405=IDD_CONNECT (Unknown language: 0xD +Resource406=IDD_CONNECT (Unknown language: 0xD +Resource407=IDD_CONNECT (Unknown language: 0xD +Resource408=IDD_CONNECT (Unknown language: 0xD +Resource409=IDD_CONNECT (Unknown language: 0xD +Resource410=IDD_CONNECT (Unknown language: 0xD +Resource411=IDD_CONNECT (Unknown language: 0xD +Resource412=IDD_CONNECT (Unknown language: 0xD +Resource413=IDD_CONNECT (Unknown language: 0xD +Resource414=IDD_CONNECT (Unknown language: 0xD +Resource415=IDD_CONNECT (Unknown language: 0xD +Resource416=IDD_CONNECT (Unknown language: 0xD +Resource417=IDD_CONNECT (Unknown language: 0xD +Resource418=IDD_CONNECT (Unknown language: 0xD +Resource419=IDD_CONNECT (Unknown language: 0xD +Resource420=IDD_CONNECT (Unknown language: 0xD +Resource421=IDD_CONNECT (Unknown language: 0xD +Resource422=IDD_CONNECT (Unknown language: 0xD +Resource423=IDD_CONNECT (Unknown language: 0xD +Resource424=IDD_CONNECT (Unknown language: 0xD +Resource425=IDD_CONNECT (Unknown language: 0xD +Resource426=IDD_CONNECT (Unknown language: 0xD +Resource427=IDD_CONNECT (Unknown language: 0xD +Resource428=IDD_CONNECT (Unknown language: 0xD +Resource429=IDD_CONNECT (Unknown language: 0xD +Resource430=IDD_CONNECT (Unknown language: 0xD +Resource431=IDD_CONNECT (Unknown language: 0xD +Resource432=IDD_CONNECT (Unknown language: 0xD +Resource433=IDD_CONNECT (Unknown language: 0xD +Resource434=IDD_CONNECT (Unknown language: 0xD +Resource435=IDD_CONNECT (Unknown language: 0xD +Resource436=IDD_CONNECT (Unknown language: 0xD +Resource437=IDD_CONNECT (Unknown language: 0xD +Resource438=IDD_CONNECT (Unknown language: 0xD +Resource439=IDD_CONNECT (Unknown language: 0xD +Resource440=IDD_CONNECT (Unknown language: 0xD +Resource441=IDD_CONNECT (Unknown language: 0xD +Resource442=IDD_CONNECT (Unknown language: 0xD +Resource443=IDD_CONNECT (Unknown language: 0xD +Resource444=IDD_CONNECT (Unknown language: 0xD +Resource445=IDD_CONNECT (Unknown language: 0xD +Resource446=IDD_CONNECT (Unknown language: 0xD +Resource447=IDD_CONNECT (Unknown language: 0xD +Resource448=IDD_CONNECT (Unknown language: 0xD +Resource449=IDD_CONNECT (Unknown language: 0xD +Resource450=IDD_CONNECT (Unknown language: 0xD +Resource451=IDD_CONNECT (Unknown language: 0xD +Resource452=IDD_CONNECT (Unknown language: 0xD +Resource453=IDD_CONNECT (Unknown language: 0xD +Resource454=IDD_CONNECT (Unknown language: 0xD +Resource455=IDD_CONNECT (Unknown language: 0xD +Resource456=IDD_CONNECT (Unknown language: 0xD +Resource457=IDD_CONNECT (Unknown language: 0xD +Resource458=IDD_CONNECT (Unknown language: 0xD +Resource459=IDD_CONNECT (Unknown language: 0xD +Resource460=IDD_CONNECT (Unknown language: 0xD +Resource461=IDD_CONNECT (Unknown language: 0xD +Resource462=IDD_CONNECT (Unknown language: 0xD +Resource463=IDD_CONNECT (Unknown language: 0xD +Resource464=IDD_CONNECT (Unknown language: 0xD +Resource465=IDD_CONNECT (Unknown language: 0xD +Resource466=IDD_CONNECT (Unknown language: 0xD +Resource467=IDD_CONNECT (Unknown language: 0xD +Resource468=IDD_CONNECT (Unknown language: 0xD +Resource469=IDD_CONNECT (Unknown language: 0xD +Resource470=IDD_CONNECT (Unknown language: 0xD +Resource471=IDD_CONNECT (Unknown language: 0xD +Resource472=IDD_CONNECT (Unknown language: 0xD +Resource473=IDD_CONNECT (Unknown language: 0xD +Resource474=IDD_CONNECT (Unknown language: 0xD +Resource475=IDD_CONNECT (Unknown language: 0xD +Resource476=IDD_CONNECT (Unknown language: 0xD +Resource477=IDD_CONNECT (Unknown language: 0xD +Resource478=IDD_CONNECT (Unknown language: 0xD +Resource479=IDD_CONNECT (Unknown language: 0xD +Resource480=IDD_CONNECT (Unknown language: 0xD +Resource481=IDD_CONNECT (Unknown language: 0xD +Resource482=IDD_CONNECT (Unknown language: 0xD +Resource483=IDD_CONNECT (Unknown language: 0xD +Resource484=IDD_CONNECT (Unknown language: 0xD +Resource485=IDD_CONNECT (Unknown language: 0xD +Resource486=IDD_CONNECT (Unknown language: 0xD +Resource487=IDD_CONNECT (Unknown language: 0xD +Resource488=IDD_CONNECT (Unknown language: 0xD +Resource489=IDD_CONNECT (Unknown language: 0xD +Resource490=IDD_CONNECT (Unknown language: 0xD +Resource491=IDD_CONNECT (Unknown language: 0xD +Resource492=IDD_CONNECT (Unknown language: 0xD +Resource493=IDD_CONNECT (Unknown language: 0xD +Resource494=IDD_CONNECT (Unknown language: 0xD +Resource495=IDD_CONNECT (Unknown language: 0xD +Resource496=IDD_CONNECT (Unknown language: 0xD +Resource497=IDD_CONNECT (Unknown language: 0xD +Resource498=IDD_CONNECT (Unknown language: 0xD +Resource499=IDD_CONNECT (Unknown language: 0xD +Resource500=IDD_CONNECT (Unknown language: 0xD +Resource501=IDD_CONNECT (Unknown language: 0xD +Resource502=IDD_CONNECT (Unknown language: 0xD +Resource503=IDD_CONNECT (Unknown language: 0xD +Resource504=IDD_CONNECT (Unknown language: 0xD +Resource505=IDD_CONNECT (Unknown language: 0xD +Resource506=IDD_CONNECT (Unknown language: 0xD +Resource507=IDD_CONNECT (Unknown language: 0xD +Resource508=IDD_CONNECT (Unknown language: 0xD +Resource509=IDD_CONNECT (Unknown language: 0xD +Resource510=IDD_CONNECT (Unknown language: 0xD +Resource511=IDD_CONNECT (Unknown language: 0xD +Resource512=IDD_CONNECT (Unknown language: 0xD +Resource513=IDD_CONNECT (Unknown language: 0xD +Resource514=IDD_CONNECT (Unknown language: 0xD +Resource515=IDD_CONNECT (Unknown language: 0xD +Resource516=IDD_CONNECT (Unknown language: 0xD +Resource517=IDD_CONNECT (Unknown language: 0xD +Resource518=IDD_CONNECT (Unknown language: 0xD +Resource519=IDD_CONNECT (Unknown language: 0xD +Resource520=IDD_CONNECT (Unknown language: 0xD +Resource521=IDD_CONNECT (Unknown language: 0xD +Resource522=IDD_CONNECT (Unknown language: 0xD +Resource523=IDD_CONNECT (Unknown language: 0xD +Resource524=IDD_CONNECT (Unknown language: 0xD +Resource525=IDD_CONNECT (Unknown language: 0xD +Resource526=IDD_CONNECT (Unknown language: 0xD +Resource527=IDD_CONNECT (Unknown language: 0xD +Resource528=IDD_CONNECT (Unknown language: 0xD +Resource529=IDD_CONNECT (Unknown language: 0xD +Resource530=IDD_CONNECT (Unknown language: 0xD +Resource531=IDD_CONNECT (Unknown language: 0xD +Resource532=IDD_CONNECT (Unknown language: 0xD +Resource533=IDD_CONNECT (Unknown language: 0xD +Resource534=IDD_CONNECT (Unknown language: 0xD +Resource535=IDD_CONNECT (Unknown language: 0xD +Resource536=IDD_CONNECT (Unknown language: 0xD +Resource537=IDD_CONNECT (Unknown language: 0xD +Resource538=IDD_CONNECT (Unknown language: 0xD +Resource539=IDD_CONNECT (Unknown language: 0xD +Resource540=IDD_CONNECT (Unknown language: 0xD +Resource541=IDD_CONNECT (Unknown language: 0xD +Resource542=IDD_CONNECT (Unknown language: 0xD +Resource543=IDD_CONNECT (Unknown language: 0xD +Resource544=IDD_CONNECT (Unknown language: 0xD +Resource545=IDD_CONNECT (Unknown language: 0xD +Resource546=IDD_CONNECT (Unknown language: 0xD +Resource547=IDD_CONNECT (Unknown language: 0xD +Resource548=IDD_CONNECT (Unknown language: 0xD +Resource549=IDD_CONNECT (Unknown language: 0xD +Resource550=IDD_CONNECT (Unknown language: 0xD +Resource551=IDD_CONNECT (Unknown language: 0xD +Resource552=IDD_CONNECT (Unknown language: 0xD +Resource553=IDD_CONNECT (Unknown language: 0xD +Resource554=IDD_CONNECT (Unknown language: 0xD +Resource555=IDD_CONNECT (Unknown language: 0xD +Resource556=IDD_CONNECT (Unknown language: 0xD +Resource557=IDD_CONNECT (Unknown language: 0xD +Resource558=IDD_CONNECT (Unknown language: 0xD +Resource559=IDD_CONNECT (Unknown language: 0xD +Resource560=IDD_CONNECT (Unknown language: 0xD +Resource561=IDD_CONNECT (Unknown language: 0xD +Resource562=IDD_CONNECT (Unknown language: 0xD +Resource563=IDD_CONNECT (Unknown language: 0xD +Resource564=IDD_CONNECT (Unknown language: 0xD +Resource565=IDD_CONNECT (Unknown language: 0xD +Resource566=IDD_CONNECT (Unknown language: 0xD +Resource567=IDD_CONNECT (Unknown language: 0xD +Resource568=IDD_CONNECT (Unknown language: 0xD +Resource569=IDD_CONNECT (Unknown language: 0xD +Resource570=IDD_CONNECT (Unknown language: 0xD +Resource571=IDD_CONNECT (Unknown language: 0xD +Resource572=IDD_CONNECT (Unknown language: 0xD +Resource573=IDD_CONNECT (Unknown language: 0xD +Resource574=IDD_CONNECT (Unknown language: 0xD +Resource575=IDD_CONNECT (Unknown language: 0xD +Resource576=IDD_CONNECT (Unknown language: 0xD +Resource577=IDD_CONNECT (Unknown language: 0xD +Resource578=IDD_CONNECT (Unknown language: 0xD +Resource579=IDD_CONNECT (Unknown language: 0xD +Resource580=IDD_CONNECT (Unknown language: 0xD +Resource581=IDD_CONNECT (Unknown language: 0xD +Resource582=IDD_CONNECT (Unknown language: 0xD +Resource583=IDD_CONNECT (Unknown language: 0xD +Resource584=IDD_CONNECT (Unknown language: 0xD +Resource585=IDD_CONNECT (Unknown language: 0xD +Resource586=IDD_CONNECT (Unknown language: 0xD +Resource587=IDD_CONNECT (Unknown language: 0xD +Resource588=IDD_CONNECT (Unknown language: 0xD +Resource589=IDD_CONNECT (Unknown language: 0xD +Resource590=IDD_CONNECT (Unknown language: 0xD +Resource591=IDD_CONNECT (Unknown language: 0xD +Resource592=IDD_CONNECT (Unknown language: 0xD +Resource593=IDD_CONNECT (Unknown language: 0xD +Resource594=IDD_CONNECT (Unknown language: 0xD +Resource595=IDD_CONNECT (Unknown language: 0xD +Resource596=IDD_CONNECT (Unknown language: 0xD +Resource597=IDD_CONNECT (Unknown language: 0xD +Resource598=IDD_CONNECT (Unknown language: 0xD +Resource599=IDD_CONNECT (Unknown language: 0xD +Resource600=IDD_CONNECT (Unknown language: 0xD +Resource601=IDD_CONNECT (Unknown language: 0xD +Resource602=IDD_CONNECT (Unknown language: 0xD +Resource603=IDD_CONNECT (Unknown language: 0xD +Resource604=IDD_CONNECT (Unknown language: 0xD +Resource605=IDD_CONNECT (Unknown language: 0xD +Resource606=IDD_CONNECT (Unknown language: 0xD +Resource607=IDD_CONNECT (Unknown language: 0xD +Resource608=IDD_CONNECT (Unknown language: 0xD +Resource609=IDD_CONNECT (Unknown language: 0xD +Resource610=IDD_CONNECT (Unknown language: 0xD +Resource611=IDD_CONNECT (Unknown language: 0xD +Resource612=IDD_CONNECT (Unknown language: 0xD +Resource613=IDD_CONNECT (Unknown language: 0xD +Resource614=IDD_CONNECT (Unknown language: 0xD +Resource615=IDD_CONNECT (Unknown language: 0xD +Resource616=IDD_CONNECT (Unknown language: 0xD +Resource617=IDD_CONNECT (Unknown language: 0xD +Resource618=IDD_CONNECT (Unknown language: 0xD +Resource619=IDD_CONNECT (Unknown language: 0xD +Resource620=IDD_CONNECT (Unknown language: 0xD +Resource621=IDD_CONNECT (Unknown language: 0xD +Resource622=IDD_CONNECT (Unknown language: 0xD +Resource623=IDD_CONNECT (Unknown language: 0xD +Resource624=IDD_CONNECT (Unknown language: 0xD +Resource625=IDD_CONNECT (Unknown language: 0xD +Resource626=IDD_CONNECT (Unknown language: 0xD +Resource627=IDD_CONNECT (Unknown language: 0xD +Resource628=IDD_CONNECT (Unknown language: 0xD +Resource629=IDD_CONNECT (Unknown language: 0xD +Resource630=IDD_CONNECT (Unknown language: 0xD +Resource631=IDD_CONNECT (Unknown language: 0xD +Resource632=IDD_CONNECT (Unknown language: 0xD +Resource633=IDD_CONNECT (Unknown language: 0xD +Resource634=IDD_CONNECT (Unknown language: 0xD +Resource635=IDD_CONNECT (Unknown language: 0xD +Resource636=IDD_CONNECT (Unknown language: 0xD +Resource637=IDD_CONNECT (Unknown language: 0xD +Resource638=IDD_CONNECT (Unknown language: 0xD +Resource639=IDD_CONNECT (Unknown language: 0xD +Resource640=IDD_CONNECT (Unknown language: 0xD +Resource641=IDD_CONNECT (Unknown language: 0xD +Resource642=IDD_CONNECT (Unknown language: 0xD +Resource643=IDD_CONNECT (Unknown language: 0xD +Resource644=IDD_CONNECT (Unknown language: 0xD +Resource645=IDD_CONNECT (Unknown language: 0xD +Resource646=IDD_CONNECT (Unknown language: 0xD +Resource647=IDD_CONNECT (Unknown language: 0xD +Resource648=IDD_CONNECT (Unknown language: 0xD +Resource649=IDD_CONNECT (Unknown language: 0xD +Resource650=IDD_CONNECT (Unknown language: 0xD +Resource651=IDD_CONNECT (Unknown language: 0xD +Resource652=IDD_CONNECT (Unknown language: 0xD +Resource653=IDD_CONNECT (Unknown language: 0xD +Resource654=IDD_CONNECT (Unknown language: 0xD +Resource655=IDD_CONNECT (Unknown language: 0xD +Resource656=IDD_CONNECT (Unknown language: 0xD +Resource657=IDD_CONNECT (Unknown language: 0xD +Resource658=IDD_CONNECT (Unknown language: 0xD +Resource659=IDD_CONNECT (Unknown language: 0xD +Resource660=IDD_CONNECT (Unknown language: 0xD +Resource661=IDD_CONNECT (Unknown language: 0xD +Resource662=IDD_CONNECT (Unknown language: 0xD +Resource663=IDD_CONNECT (Unknown language: 0xD +Resource664=IDD_CONNECT (Unknown language: 0xD +Resource665=IDD_CONNECT (Unknown language: 0xD +Resource666=IDD_CONNECT (Unknown language: 0xD +Resource667=IDD_CONNECT (Unknown language: 0xD +Resource668=IDD_CONNECT (Unknown language: 0xD +Resource669=IDD_CONNECT (Unknown language: 0xD +Resource670=IDD_CONNECT (Unknown language: 0xD +Resource671=IDD_CONNECT (Unknown language: 0xD +Resource672=IDD_CONNECT (Unknown language: 0xD +Resource673=IDD_CONNECT (Unknown language: 0xD +Resource674=IDD_CONNECT (Unknown language: 0xD +Resource675=IDD_CONNECT (Unknown language: 0xD +Resource676=IDD_CONNECT (Unknown language: 0xD +Resource677=IDD_CONNECT (Unknown language: 0xD +Resource678=IDD_CONNECT (Unknown language: 0xD +Resource679=IDD_CONNECT (Unknown language: 0xD +Resource680=IDD_CONNECT (Unknown language: 0xD +Resource681=IDD_CONNECT (Unknown language: 0xD +Resource682=IDD_CONNECT (Unknown language: 0xD +Resource683=IDD_CONNECT (Unknown language: 0xD +Resource684=IDD_CONNECT (Unknown language: 0xD +Resource685=IDD_CONNECT (Unknown language: 0xD +Resource686=IDD_CONNECT (Unknown language: 0xD +Resource687=IDD_CONNECT (Unknown language: 0xD +Resource688=IDD_CONNECT (Unknown language: 0xD +Resource689=IDD_CONNECT (Unknown language: 0xD +Resource690=IDD_CONNECT (Unknown language: 0xD +Resource691=IDD_CONNECT (Unknown language: 0xD +Resource692=IDD_CONNECT (Unknown language: 0xD +Resource693=IDD_CONNECT (Unknown language: 0xD +Resource694=IDD_CONNECT (Unknown language: 0xD +Resource695=IDD_CONNECT (Unknown language: 0xD +Resource696=IDD_CONNECT (Unknown language: 0xD +Resource697=IDD_CONNECT (Unknown language: 0xD +Resource698=IDD_CONNECT (Unknown language: 0xD +Resource699=IDD_CONNECT (Unknown language: 0xD +Resource700=IDD_CONNECT (Unknown language: 0xD +Resource701=IDD_CONNECT (Unknown language: 0xD +Resource702=IDD_CONNECT (Unknown language: 0xD +Resource703=IDD_CONNECT (Unknown language: 0xD +Resource704=IDD_CONNECT (Unknown language: 0xD +Resource705=IDD_CONNECT (Unknown language: 0xD +Resource706=IDD_CONNECT (Unknown language: 0xD +Resource707=IDD_CONNECT (Unknown language: 0xD +Resource708=IDD_CONNECT (Unknown language: 0xD +Resource709=IDD_CONNECT (Unknown language: 0xD +Resource710=IDD_CONNECT (Unknown language: 0xD +Resource711=IDD_CONNECT (Unknown language: 0xD +Resource712=IDD_CONNECT (Unknown language: 0xD +Resource713=IDD_CONNECT (Unknown language: 0xD +Resource714=IDD_CONNECT (Unknown language: 0xD +Resource715=IDD_CONNECT (Unknown language: 0xD +Resource716=IDD_CONNECT (Unknown language: 0xD +Resource717=IDD_CONNECT (Unknown language: 0xD +Resource718=IDD_CONNECT (Unknown language: 0xD +Resource719=IDD_CONNECT (Unknown language: 0xD +Resource720=IDD_CONNECT (Unknown language: 0xD +Resource721=IDD_CONNECT (Unknown language: 0xD +Resource722=IDD_CONNECT (Unknown language: 0xD +Resource723=IDD_CONNECT (Unknown language: 0xD +Resource724=IDD_CONNECT (Unknown language: 0xD +Resource725=IDD_CONNECT (Unknown language: 0xD +Resource726=IDD_CONNECT (Unknown language: 0xD +Resource727=IDD_CONNECT (Unknown language: 0xD +Resource728=IDD_CONNECT (Unknown language: 0xD +Resource729=IDD_CONNECT (Unknown language: 0xD +Resource730=IDD_CONNECT (Unknown language: 0xD +Resource731=IDD_CONNECT (Unknown language: 0xD +Resource732=IDD_CONNECT (Unknown language: 0xD +Resource733=IDD_CONNECT (Unknown language: 0xD +Resource734=IDD_CONNECT (Unknown language: 0xD +Resource735=IDD_CONNECT (Unknown language: 0xD +Resource736=IDD_CONNECT (Unknown language: 0xD +Resource737=IDD_CONNECT (Unknown language: 0xD +Resource738=IDD_CONNECT (Unknown language: 0xD +Resource739=IDD_CONNECT (Unknown language: 0xD +Resource740=IDD_CONNECT (Unknown language: 0xD +Resource741=IDD_CONNECT (Unknown language: 0xD +Resource742=IDD_CONNECT (Unknown language: 0xD +Resource743=IDD_CONNECT (Unknown language: 0xD +Resource744=IDD_CONNECT (Unknown language: 0xD +Resource745=IDD_CONNECT (Unknown language: 0xD +Resource746=IDD_CONNECT (Unknown language: 0xD +Resource747=IDD_CONNECT (Unknown language: 0xD +Resource748=IDD_CONNECT (Unknown language: 0xD +Resource749=IDD_CONNECT (Unknown language: 0xD +Resource750=IDD_CONNECT (Unknown language: 0xD +Resource751=IDD_CONNECT (Unknown language: 0xD +Resource752=IDD_CONNECT (Unknown language: 0xD +Resource753=IDD_CONNECT (Unknown language: 0xD +Resource754=IDD_CONNECT (Unknown language: 0xD +Resource755=IDD_CONNECT (Unknown language: 0xD +Resource756=IDD_CONNECT (Unknown language: 0xD +Resource757=IDD_CONNECT (Unknown language: 0xD +Resource758=IDD_CONNECT (Unknown language: 0xD +Resource759=IDD_CONNECT (Unknown language: 0xD +Resource760=IDD_CONNECT (Unknown language: 0xD +Resource761=IDD_CONNECT (Unknown language: 0xD +Resource762=IDD_CONNECT (Unknown language: 0xD +Resource763=IDD_CONNECT (Unknown language: 0xD +Resource764=IDD_CONNECT (Unknown language: 0xD +Resource765=IDD_CONNECT (Unknown language: 0xD +Resource766=IDD_CONNECT (Unknown language: 0xD +Resource767=IDD_CONNECT (Unknown language: 0xD +Resource768=IDD_CONNECT (Unknown language: 0xD +Resource769=IDD_CONNECT (Unknown language: 0xD +Resource770=IDD_CONNECT (Unknown language: 0xD +Resource771=IDD_CONNECT (Unknown language: 0xD +Resource772=IDD_CONNECT (Unknown language: 0xD +Resource773=IDD_CONNECT (Unknown language: 0xD +Resource774=IDD_CONNECT (Unknown language: 0xD +Resource775=IDD_CONNECT (Unknown language: 0xD +Resource776=IDD_CONNECT (Unknown language: 0xD +Resource777=IDD_CONNECT (Unknown language: 0xD +Resource778=IDD_CONNECT (Unknown language: 0xD +Resource779=IDD_CONNECT (Unknown language: 0xD +Resource780=IDD_CONNECT (Unknown language: 0xD +Resource781=IDD_CONNECT (Unknown language: 0xD +Resource782=IDD_CONNECT (Unknown language: 0xD +Resource783=IDD_CONNECT (Unknown language: 0xD +Resource784=IDD_CONNECT (Unknown language: 0xD +Resource785=IDD_CONNECT (Unknown language: 0xD +Resource786=IDD_CONNECT (Unknown language: 0xD +Resource787=IDD_CONNECT (Unknown language: 0xD +Resource788=IDD_CONNECT (Unknown language: 0xD +Resource789=IDD_CONNECT (Unknown language: 0xD +Resource790=IDD_CONNECT (Unknown language: 0xD +Resource791=IDD_CONNECT (Unknown language: 0xD +Resource792=IDD_CONNECT (Unknown language: 0xD +Resource793=IDD_CONNECT (Unknown language: 0xD +Resource794=IDD_CONNECT (Unknown language: 0xD +Resource795=IDD_CONNECT (Unknown language: 0xD +Resource796=IDD_CONNECT (Unknown language: 0xD +Resource797=IDD_CONNECT (Unknown language: 0xD +Resource798=IDD_CONNECT (Unknown language: 0xD +Resource799=IDD_CONNECT (Unknown language: 0xD +Resource800=IDD_CONNECT (Unknown language: 0xD +Resource801=IDD_CONNECT (Unknown language: 0xD +Resource802=IDD_CONNECT (Unknown language: 0xD +Resource803=IDD_CONNECT (Unknown language: 0xD +Resource804=IDD_CONNECT (Unknown language: 0xD +Resource805=IDD_CONNECT (Unknown language: 0xD +Resource806=IDD_CONNECT (Unknown language: 0xD +Resource807=IDD_CONNECT (Unknown language: 0xD +Resource808=IDD_CONNECT (Unknown language: 0xD +Resource809=IDD_CONNECT (Unknown language: 0xD +Resource810=IDD_CONNECT (Unknown language: 0xD +Resource811=IDD_CONNECT (Unknown language: 0xD +Resource812=IDD_CONNECT (Unknown language: 0xD +Resource813=IDD_CONNECT (Unknown language: 0xD +Resource814=IDD_CONNECT (Unknown language: 0xD +Resource815=IDD_CONNECT (Unknown language: 0xD +Resource816=IDD_CONNECT (Unknown language: 0xD +Resource817=IDD_CONNECT (Unknown language: 0xD +Resource818=IDD_CONNECT (Unknown language: 0xD +Resource819=IDD_CONNECT (Unknown language: 0xD +Resource820=IDD_CONNECT (Unknown language: 0xD +Resource821=IDD_CONNECT (Unknown language: 0xD +Resource822=IDD_CONNECT (Unknown language: 0xD +Resource823=IDD_CONNECT (Unknown language: 0xD +Resource824=IDD_CONNECT (Unknown language: 0xD +Resource825=IDD_CONNECT (Unknown language: 0xD +Resource826=IDD_CONNECT (Unknown language: 0xD +Resource827=IDD_CONNECT (Unknown language: 0xD +Resource828=IDD_CONNECT (Unknown language: 0xD +Resource829=IDD_CONNECT (Unknown language: 0xD +Resource830=IDD_CONNECT (Unknown language: 0xD +Resource831=IDD_CONNECT (Unknown language: 0xD +Resource832=IDD_CONNECT (Unknown language: 0xD +Resource833=IDD_CONNECT (Unknown language: 0xD +Resource834=IDD_CONNECT (Unknown language: 0xD +Resource835=IDD_CONNECT (Unknown language: 0xD +Resource836=IDD_CONNECT (Unknown language: 0xD +Resource837=IDD_CONNECT (Unknown language: 0xD +Resource838=IDD_CONNECT (Unknown language: 0xD +Resource839=IDD_CONNECT (Unknown language: 0xD +Resource840=IDD_CONNECT (Unknown language: 0xD +Resource841=IDD_CONNECT (Unknown language: 0xD +Resource842=IDD_CONNECT (Unknown language: 0xD +Resource843=IDD_CONNECT (Unknown language: 0xD +Resource844=IDD_CONNECT (Unknown language: 0xD +Resource845=IDD_CONNECT (Unknown language: 0xD +Resource846=IDD_CONNECT (Unknown language: 0xD +Resource847=IDD_CONNECT (Unknown language: 0xD +Resource848=IDD_CONNECT (Unknown language: 0xD +Resource849=IDD_CONNECT (Unknown language: 0xD +Resource850=IDD_CONNECT (Unknown language: 0xD +Resource851=IDD_CONNECT (Unknown language: 0xD +Resource852=IDD_CONNECT (Unknown language: 0xD +Resource853=IDD_CONNECT (Unknown language: 0xD +Resource854=IDD_CONNECT (Unknown language: 0xD +Resource855=IDD_CONNECT (Unknown language: 0xD +Resource856=IDD_CONNECT (Unknown language: 0xD +Resource857=IDD_CONNECT (Unknown language: 0xD +Resource858=IDD_CONNECT (Unknown language: 0xD +Resource859=IDD_CONNECT (Unknown language: 0xD +Resource860=IDD_CONNECT (Unknown language: 0xD +Resource861=IDD_CONNECT (Unknown language: 0xD +Resource862=IDD_CONNECT (Unknown language: 0xD +Resource863=IDD_CONNECT (Unknown language: 0xD +Resource864=IDD_CONNECT (Unknown language: 0xD +Resource865=IDD_CONNECT (Unknown language: 0xD +Resource866=IDD_CONNECT (Unknown language: 0xD +Resource867=IDD_CONNECT (Unknown language: 0xD +Resource868=IDD_CONNECT (Unknown language: 0xD +Resource869=IDD_CONNECT (Unknown language: 0xD +Resource870=IDD_CONNECT (Unknown language: 0xD +Resource871=IDD_CONNECT (Unknown language: 0xD +Resource872=IDD_CONNECT (Unknown language: 0xD +Resource873=IDD_CONNECT (Unknown language: 0xD +Resource874=IDD_CONNECT (Unknown language: 0xD +Resource875=IDD_CONNECT (Unknown language: 0xD +Resource876=IDD_CONNECT (Unknown language: 0xD +Resource877=IDD_CONNECT (Unknown language: 0xD +Resource878=IDD_CONNECT (Unknown language: 0xD +Resource879=IDD_CONNECT (Unknown language: 0xD +Resource880=IDD_CONNECT (Unknown language: 0xD +Resource881=IDD_CONNECT (Unknown language: 0xD +Resource882=IDD_CONNECT (Unknown language: 0xD +Resource883=IDD_CONNECT (Unknown language: 0xD +Resource884=IDD_CONNECT (Unknown language: 0xD +Resource885=IDD_CONNECT (Unknown language: 0xD +Resource886=IDD_CONNECT (Unknown language: 0xD +Resource887=IDD_CONNECT (Unknown language: 0xD +Resource888=IDD_CONNECT (Unknown language: 0xD +Resource889=IDD_CONNECT (Unknown language: 0xD +Resource890=IDD_CONNECT (Unknown language: 0xD +Resource891=IDD_CONNECT (Unknown language: 0xD +Resource892=IDD_CONNECT (Unknown language: 0xD +Resource893=IDD_CONNECT (Unknown language: 0xD +Resource894=IDD_CONNECT (Unknown language: 0xD +Resource895=IDD_CONNECT (Unknown language: 0xD +Resource896=IDD_CONNECT (Unknown language: 0xD +Resource897=IDD_CONNECT (Unknown language: 0xD +Resource898=IDD_CONNECT (Unknown language: 0xD +Resource899=IDD_CONNECT (Unknown language: 0xD +Resource900=IDD_CONNECT (Unknown language: 0xD +Resource901=IDD_CONNECT (Unknown language: 0xD +Resource902=IDD_CONNECT (Unknown language: 0xD +Resource903=IDD_CONNECT (Unknown language: 0xD +Resource904=IDD_CONNECT (Unknown language: 0xD +Resource905=IDD_CONNECT (Unknown language: 0xD +Resource906=IDD_CONNECT (Unknown language: 0xD +Resource907=IDD_CONNECT (Unknown language: 0xD +Resource908=IDD_CONNECT (Unknown language: 0xD +Resource909=IDD_CONNECT (Unknown language: 0xD +Resource910=IDD_CONNECT (Unknown language: 0xD +Resource911=IDD_CONNECT (Unknown language: 0xD +Resource912=IDD_CONNECT (Unknown language: 0xD +Resource913=IDD_CONNECT (Unknown language: 0xD +Resource914=IDD_CONNECT (Unknown language: 0xD +Resource915=IDD_CONNECT (Unknown language: 0xD +Resource916=IDD_CONNECT (Unknown language: 0xD +Resource917=IDD_CONNECT (Unknown language: 0xD +Resource918=IDD_CONNECT (Unknown language: 0xD +Resource919=IDD_CONNECT (Unknown language: 0xD +Resource920=IDD_CONNECT (Unknown language: 0xD +Resource921=IDD_CONNECT (Unknown language: 0xD +Resource922=IDD_CONNECT (Unknown language: 0xD +Resource923=IDD_CONNECT (Unknown language: 0xD, 0x1) +Resource924=IDD_CONNECT (Unknown language: 0xD +Resource925=IDD_CONNECT (Unknown language: 0xD +Resource926=IDD_CONNECT (Unknown language: 0xD +Resource927=IDD_CONNECT (Unknown language: 0xD +Resource928=IDD_CONNECT (Unknown language: 0xD +Resource929=IDD_CONNECT (Unknown language: 0xD +Resource930=IDD_CONNECT (Unknown language: 0xD +Resource931=IDD_CONNECT (Unknown language: 0xD +Resource932=IDD_CONNECT (Unknown language: 0xD +Resource933=IDD_CONNECT (Unknown language: 0xD +Resource934=IDD_CONNECT (Unknown language: 0xD +Resource935=IDD_CONNECT (Unknown language: 0xD +Resource936=IDD_CONNECT (Unknown language: 0xD +Resource937=IDD_CONNECT (Unknown language: 0xD +Resource938=IDD_CONNECT (Unknown language: 0xD +Resource939=IDD_CONNECT (Unknown language: 0xD +Resource940=IDD_CONNECT (Unknown language: 0xD +Resource941=IDD_CONNECT (Unknown language: 0xD +Resource942=IDD_CONNECT (Unknown language: 0xD +Resource943=IDD_CONNECT (Unknown language: 0xD +Resource944=IDD_CONNECT (Unknown language: 0xD +Resource945=IDD_CONNECT (Unknown language: 0xD +Resource946=IDD_CONNECT (Unknown language: 0xD +Resource947=IDD_CONNECT (Unknown language: 0xD +Resource948=IDD_CONNECT (Unknown language: 0xD +Resource949=IDD_CONNECT (Unknown language: 0xD +Resource950=IDD_CONNECT (Unknown language: 0xD +Resource951=IDD_CONNECT (Unknown language: 0xD +Resource952=IDD_CONNECT (Unknown language: 0xD +Resource953=IDD_CONNECT (Unknown language: 0xD +Resource954=IDD_CONNECT (Unknown language: 0xD +Resource955=IDD_CONNECT (Unknown language: 0xD +Resource956=IDD_CONNECT (Unknown language: 0xD +Resource957=IDD_CONNECT (Unknown language: 0xD +Resource958=IDD_CONNECT (Unknown language: 0xD +Resource959=IDD_CONNECT (Unknown language: 0xD +Resource960=IDD_CONNECT (Unknown language: 0xD +Resource961=IDD_CONNECT (Unknown language: 0xD +Resource962=IDD_CONNECT (Unknown language: 0xD +Resource963=IDD_CONNECT (Unknown language: 0xD +Resource964=IDD_CONNECT (Unknown language: 0xD +Resource965=IDD_CONNECT (Unknown language: 0xD +Resource966=IDD_CONNECT (Unknown language: 0xD +Resource967=IDD_CONNECT (Unknown language: 0xD +Resource968=IDD_CONNECT (Unknown language: 0xD +Resource969=IDD_CONNECT (Unknown language: 0xD +Resource970=IDD_CONNECT (Unknown language: 0xD +Class6=CSendFileDialog +Resource971=IDD_CONNECT (Unknown language: 0xD +Resource972=IDD_CONNECT (Unknown language: 0xD +Resource973=IDD_CONNECT (Unknown language: 0xD +Resource974=IDD_CONNECT (Unknown language: 0xD +Resource975=IDD_CONNECT (Unknown language: 0xD +Resource976=IDD_CONNECT (Unknown language: 0xD +Resource977=IDD_CONNECT (Unknown language: 0xD +Resource978=IDD_CONNECT (Unknown language: 0xD +Resource979=IDD_CONNECT (Unknown language: 0xD +Resource980=IDD_CONNECT (Unknown language: 0xD +Resource981=IDD_CONNECT (Unknown language: 0xD +Resource982=IDD_CONNECT (Unknown language: 0xD +Resource983=IDD_CONNECT (Unknown language: 0xD +Resource984=IDD_CONNECT (Unknown language: 0xD +Resource985=IDD_CONNECT (Unknown language: 0xD +Resource986=IDD_CONNECT (Unknown language: 0xD +Resource987=IDD_CONNECT (Unknown language: 0xD +Resource988=IDD_CONNECT (Unknown language: 0xD +Resource989=IDD_CONNECT (Unknown language: 0xD +Resource990=IDD_CONNECT (Unknown language: 0xD +Resource991=IDD_CONNECT (Unknown language: 0xD +Resource992=IDD_CONNECT (Unknown language: 0xD +Resource993=IDD_CONNECT (Unknown language: 0xD +Resource994=IDD_CONNECT (Unknown language: 0xD +Resource995=IDD_CONNECT (Unknown language: 0xD +Resource996=IDD_CONNECT (Unknown language: 0xD +Resource997=IDD_CONNECT (Unknown language: 0xD +Resource998=IDD_CONNECT (Unknown language: 0xD +Resource999=IDD_CONNECT (Unknown language: 0xD +Resource1000=IDD_CONNECT (Unknown language: 0xD +Resource1001=IDD_CONNECT (Unknown language: 0xD +Resource1002=IDD_CONNECT (Unknown language: 0xD +Resource1003=IDD_CONNECT (Unknown language: 0xD +Resource1004=IDD_CONNECT (Unknown language: 0xD +Resource1005=IDD_CONNECT (Unknown language: 0xD +Resource1006=IDD_CONNECT (Unknown language: 0xD +Resource1007=IDD_CONNECT (Unknown language: 0xD +Resource1008=IDD_CONNECT (Unknown language: 0xD +Resource1009=IDD_CONNECT (Unknown language: 0xD +Resource1010=IDD_CONNECT (Unknown language: 0xD +Resource1011=IDD_CONNECT (Unknown language: 0xD +Resource1012=IDD_CONNECT (Unknown language: 0xD +Resource1013=IDD_CONNECT (Unknown language: 0xD +Resource1014=IDD_CONNECT (Unknown language: 0xD +Resource1015=IDD_CONNECT (Unknown language: 0xD +Resource1016=IDD_CONNECT (Unknown language: 0xD +Resource1017=IDD_CONNECT (Unknown language: 0xD +Resource1018=IDD_CONNECT (Unknown language: 0xD +Resource1019=IDD_CONNECT (Unknown language: 0xD +Resource1020=IDD_CONNECT (Unknown language: 0xD +Resource1021=IDD_CONNECT (Unknown language: 0xD +Resource1022=IDD_CONNECT (Unknown language: 0xD +Resource1023=IDD_CONNECT (Unknown language: 0xD +Resource1024=IDD_CONNECT (Unknown language: 0xD +Resource1025=IDD_CONNECT (Unknown language: 0xD +Resource1026=IDD_CONNECT (Unknown language: 0xD +Resource1027=IDD_CONNECT (Unknown language: 0xD +Resource1028=IDD_CONNECT (Unknown language: 0xD +Resource1029=IDD_CONNECT (Unknown language: 0xD +Resource1030=IDD_CONNECT (Unknown language: 0xD +Resource1031=IDD_CONNECT (Unknown language: 0xD +Resource1032=IDD_CONNECT (Unknown language: 0xD +Resource1033=IDD_CONNECT (Unknown language: 0xD +Resource1034=IDD_CONNECT (Unknown language: 0xD +Resource1035=IDD_CONNECT (Unknown language: 0xD +Resource1036=IDD_CONNECT (Unknown language: 0xD +Resource1037=IDD_CONNECT (Unknown language: 0xD +Resource1038=IDD_CONNECT (Unknown language: 0xD +Resource1039=IDD_CONNECT (Unknown language: 0xD +Resource1040=IDD_CONNECT (Unknown language: 0xD +Resource1041=IDD_CONNECT (Unknown language: 0xD +Resource1042=IDD_CONNECT (Unknown language: 0xD +Resource1043=IDD_CONNECT (Unknown language: 0xD +Resource1044=IDD_CONNECT (Unknown language: 0xD +Resource1045=IDD_CONNECT (Unknown language: 0xD +Resource1046=IDD_CONNECT (Unknown language: 0xD +Resource1047=IDD_CONNECT (Unknown language: 0xD +Resource1048=IDD_CONNECT (Unknown language: 0xD +Resource1049=IDD_CONNECT (Unknown language: 0xD +Resource1050=IDD_CONNECT (Unknown language: 0xD +Resource1051=IDD_CONNECT (Unknown language: 0xD +Resource1052=IDD_CONNECT (Unknown language: 0xD +Resource1053=IDD_CONNECT (Unknown language: 0xD +Resource1054=IDD_CONNECT (Unknown language: 0xD +Resource1055=IDD_CONNECT (Unknown language: 0xD +Resource1056=IDD_CONNECT (Unknown language: 0xD +Resource1057=IDD_CONNECT (Unknown language: 0xD +Resource1058=IDD_CONNECT (Unknown language: 0xD +Resource1059=IDD_CONNECT (Unknown language: 0xD +Resource1060=IDD_CONNECT (Unknown language: 0xD +Resource1061=IDD_CONNECT (Unknown language: 0xD +Resource1062=IDD_CONNECT (Unknown language: 0xD +Resource1063=IDD_CONNECT (Unknown language: 0xD +Resource1064=IDD_CONNECT (Unknown language: 0xD +Resource1065=IDD_CONNECT (Unknown language: 0xD +Resource1066=IDD_CONNECT (Unknown language: 0xD +Resource1067=IDD_CONNECT (Unknown language: 0xD +Resource1068=IDD_CONNECT (Unknown language: 0xD +Resource1069=IDD_CONNECT (Unknown language: 0xD +Resource1070=IDD_CONNECT (Unknown language: 0xD +Resource1071=IDD_CONNECT (Unknown language: 0xD +Resource1072=IDD_CONNECT (Unknown language: 0xD +Resource1073=IDD_CONNECT (Unknown language: 0xD +Resource1074=IDD_CONNECT (Unknown language: 0xD +Resource1075=IDD_CONNECT (Unknown language: 0xD +Resource1076=IDD_CONNECT (Unknown language: 0xD +Resource1077=IDD_CONNECT (Unknown language: 0xD +Resource1078=IDD_CONNECT (Unknown language: 0xD +Resource1079=IDD_CONNECT (Unknown language: 0xD +Resource1080=IDD_CONNECT (Unknown language: 0xD +Resource1081=IDD_CONNECT (Unknown language: 0xD +Resource1082=IDD_CONNECT (Unknown language: 0xD +Resource1083=IDD_CONNECT (Unknown language: 0xD +Resource1084=IDD_CONNECT (Unknown language: 0xD +Resource1085=IDD_CONNECT (Unknown language: 0xD +Resource1086=IDD_CONNECT (Unknown language: 0xD +Resource1087=IDD_CONNECT (Unknown language: 0xD +Resource1088=IDD_CONNECT (Unknown language: 0xD +Resource1089=IDD_CONNECT (Unknown language: 0xD +Resource1090=IDD_CONNECT (Unknown language: 0xD +Resource1091=IDD_CONNECT (Unknown language: 0xD +Resource1092=IDD_CONNECT (Unknown language: 0xD +Resource1093=IDD_CONNECT (Unknown language: 0xD +Resource1094=IDD_CONNECT (Unknown language: 0xD +Resource1095=IDD_CONNECT (Unknown language: 0xD +Resource1096=IDD_CONNECT (Unknown language: 0xD +Resource1097=IDD_CONNECT (Unknown language: 0xD +Resource1098=IDD_CONNECT (Unknown language: 0xD +Resource1099=IDD_CONNECT (Unknown language: 0xD +Resource1100=IDD_CONNECT (Unknown language: 0xD +Resource1101=IDD_CONNECT (Unknown language: 0xD +Resource1102=IDD_CONNECT (Unknown language: 0xD +Resource1103=IDD_CONNECT (Unknown language: 0xD +Resource1104=IDD_CONNECT (Unknown language: 0xD +Resource1105=IDD_CONNECT (Unknown language: 0xD +Resource1106=IDD_CONNECT (Unknown language: 0xD +Resource1107=IDD_CONNECT (Unknown language: 0xD +Resource1108=IDD_CONNECT (Unknown language: 0xD +Resource1109=IDD_CONNECT (Unknown language: 0xD +Resource1110=IDD_CONNECT (Unknown language: 0xD +Resource1111=IDD_CONNECT (Unknown language: 0xD +Resource1112=IDD_CONNECT (Unknown language: 0xD +Resource1113=IDD_CONNECT (Unknown language: 0xD +Resource1114=IDD_CONNECT (Unknown language: 0xD +Resource1115=IDD_CONNECT (Unknown language: 0xD +Resource1116=IDD_CONNECT (Unknown language: 0xD +Resource1117=IDD_CONNECT (Unknown language: 0xD +Resource1118=IDD_CONNECT (Unknown language: 0xD +Resource1119=IDD_CONNECT (Unknown language: 0xD +Resource1120=IDD_CONNECT (Unknown language: 0xD +Resource1121=IDD_CONNECT (Unknown language: 0xD +Resource1122=IDD_CONNECT (Unknown language: 0xD +Resource1123=IDD_CONNECT (Unknown language: 0xD +Resource1124=IDD_CONNECT (Unknown language: 0xD +Resource1125=IDD_CONNECT (Unknown language: 0xD +Resource1126=IDD_CONNECT (Unknown language: 0xD +Resource1127=IDD_CONNECT (Unknown language: 0xD +Resource1128=IDD_CONNECT (Unknown language: 0xD +Resource1129=IDD_CONNECT (Unknown language: 0xD +Resource1130=IDD_CONNECT (Unknown language: 0xD +Resource1131=IDD_CONNECT (Unknown language: 0xD +Resource1132=IDD_CONNECT (Unknown language: 0xD +Resource1133=IDD_CONNECT (Unknown language: 0xD +Resource1134=IDD_CONNECT (Unknown language: 0xD +Resource1135=IDD_CONNECT (Unknown language: 0xD +Resource1136=IDD_CONNECT (Unknown language: 0xD +Resource1137=IDD_CONNECT (Unknown language: 0xD +Resource1138=IDD_CONNECT (Unknown language: 0xD +Resource1139=IDD_CONNECT (Unknown language: 0xD +Resource1140=IDD_CONNECT (Unknown language: 0xD +Resource1141=IDD_CONNECT (Unknown language: 0xD +Resource1142=IDD_CONNECT (Unknown language: 0xD +Resource1143=IDD_CONNECT (Unknown language: 0xD +Resource1144=IDD_CONNECT (Unknown language: 0xD +Resource1145=IDD_CONNECT (Unknown language: 0xD +Resource1146=IDD_CONNECT (Unknown language: 0xD +Resource1147=IDD_CONNECT (Unknown language: 0xD +Resource1148=IDD_CONNECT (Unknown language: 0xD +Resource1149=IDD_CONNECT (Unknown language: 0xD +Resource1150=IDD_CONNECT (Unknown language: 0xD +Resource1151=IDD_CONNECT (Unknown language: 0xD +Resource1152=IDD_CONNECT (Unknown language: 0xD +Resource1153=IDD_CONNECT (Unknown language: 0xD +Resource1154=IDD_CONNECT (Unknown language: 0xD +Resource1155=IDD_CONNECT (Unknown language: 0xD +Resource1156=IDD_CONNECT (Unknown language: 0xD +Resource1157=IDD_CONNECT (Unknown language: 0xD +Resource1158=IDD_CONNECT (Unknown language: 0xD +Resource1159=IDD_CONNECT (Unknown language: 0xD +Resource1160=IDD_CONNECT (Unknown language: 0xD +Resource1161=IDD_CONNECT (Unknown language: 0xD +Resource1162=IDD_CONNECT (Unknown language: 0xD +Resource1163=IDD_CONNECT (Unknown language: 0xD +Resource1164=IDD_CONNECT (Unknown language: 0xD +Resource1165=IDD_CONNECT (Unknown language: 0xD +Resource1166=IDD_CONNECT (Unknown language: 0xD +Resource1167=IDD_CONNECT (Unknown language: 0xD +Resource1168=IDD_CONNECT (Unknown language: 0xD +Resource1169=IDD_CONNECT (Unknown language: 0xD +Resource1170=IDD_CONNECT (Unknown language: 0xD +Resource1171=IDD_CONNECT (Unknown language: 0xD +Resource1172=IDD_CONNECT (Unknown language: 0xD +Resource1173=IDD_CONNECT (Unknown language: 0xD +Resource1174=IDD_CONNECT (Unknown language: 0xD +Resource1175=IDD_CONNECT (Unknown language: 0xD +Resource1176=IDD_CONNECT (Unknown language: 0xD +Resource1177=IDD_CONNECT (Unknown language: 0xD +Resource1178=IDD_CONNECT (Unknown language: 0xD +Resource1179=IDD_CONNECT (Unknown language: 0xD +Resource1180=IDD_CONNECT (Unknown language: 0xD +Resource1181=IDD_CONNECT (Unknown language: 0xD +Resource1182=IDD_CONNECT (Unknown language: 0xD +Resource1183=IDD_CONNECT (Unknown language: 0xD +Resource1184=IDD_CONNECT (Unknown language: 0xD +Resource1185=IDD_CONNECT (Unknown language: 0xD +Resource1186=IDD_CONNECT (Unknown language: 0xD +Resource1187=IDD_CONNECT (Unknown language: 0xD +Resource1188=IDD_CONNECT (Unknown language: 0xD +Resource1189=IDD_CONNECT (Unknown language: 0xD +Resource1190=IDD_CONNECT (Unknown language: 0xD +Resource1191=IDD_CONNECT (Unknown language: 0xD +Resource1192=IDD_CONNECT (Unknown language: 0xD +Resource1193=IDD_CONNECT (Unknown language: 0xD +Resource1194=IDD_CONNECT (Unknown language: 0xD +Resource1195=IDD_CONNECT (Unknown language: 0xD +Resource1196=IDD_CONNECT (Unknown language: 0xD +Resource1197=IDD_CONNECT (Unknown language: 0xD +Resource1198=IDD_CONNECT (Unknown language: 0xD +Resource1199=IDD_CONNECT (Unknown language: 0xD +Resource1200=IDD_CONNECT (Unknown language: 0xD +Resource1201=IDD_CONNECT (Unknown language: 0xD +Resource1202=IDD_CONNECT (Unknown language: 0xD +Resource1203=IDD_CONNECT (Unknown language: 0xD +Resource1204=IDD_CONNECT (Unknown language: 0xD +Resource1205=IDD_CONNECT (Unknown language: 0xD +Resource1206=IDD_CONNECT (Unknown language: 0xD +Resource1207=IDD_CONNECT (Unknown language: 0xD +Resource1208=IDD_CONNECT (Unknown language: 0xD +Resource1209=IDD_CONNECT (Unknown language: 0xD +Resource1210=IDD_CONNECT (Unknown language: 0xD +Resource1211=IDD_CONNECT (Unknown language: 0xD +Resource1212=IDD_CONNECT (Unknown language: 0xD +Resource1213=IDD_CONNECT (Unknown language: 0xD +Resource1214=IDD_CONNECT (Unknown language: 0xD +Resource1215=IDD_CONNECT (Unknown language: 0xD +Resource1216=IDD_CONNECT (Unknown language: 0xD +Resource1217=IDD_CONNECT (Unknown language: 0xD +Resource1218=IDD_CONNECT (Unknown language: 0xD +Resource1219=IDD_CONNECT (Unknown language: 0xD +Resource1220=IDD_CONNECT (Unknown language: 0xD +Resource1221=IDD_CONNECT (Unknown language: 0xD +Resource1222=IDD_CONNECT (Unknown language: 0xD +Resource1223=IDD_CONNECT (Unknown language: 0xD +Resource1224=IDD_CONNECT (Unknown language: 0xD +Resource1225=IDD_CONNECT (Unknown language: 0xD +Resource1226=IDD_CONNECT (Unknown language: 0xD +Resource1227=IDD_CONNECT (Unknown language: 0xD +Resource1228=IDD_CONNECT (Unknown language: 0xD +Resource1229=IDD_CONNECT (Unknown language: 0xD +Resource1230=IDD_CONNECT (Unknown language: 0xD +Resource1231=IDD_CONNECT (Unknown language: 0xD +Resource1232=IDD_CONNECT (Unknown language: 0xD +Resource1233=IDD_CONNECT (Unknown language: 0xD +Resource1234=IDD_CONNECT (Unknown language: 0xD +Resource1235=IDD_CONNECT (Unknown language: 0xD +Resource1236=IDD_CONNECT (Unknown language: 0xD +Resource1237=IDD_CONNECT (Unknown language: 0xD +Resource1238=IDD_CONNECT (Unknown language: 0xD +Resource1239=IDD_CONNECT (Unknown language: 0xD +Resource1240=IDD_CONNECT (Unknown language: 0xD +Resource1241=IDD_CONNECT (Unknown language: 0xD +Resource1242=IDD_CONNECT (Unknown language: 0xD +Resource1243=IDD_CONNECT (Unknown language: 0xD +Resource1244=IDD_CONNECT (Unknown language: 0xD +Resource1245=IDD_CONNECT (Unknown language: 0xD +Resource1246=IDD_CONNECT (Unknown language: 0xD +Resource1247=IDD_CONNECT (Unknown language: 0xD +Resource1248=IDD_CONNECT (Unknown language: 0xD +Resource1249=IDD_CONNECT (Unknown language: 0xD +Resource1250=IDD_CONNECT (Unknown language: 0xD +Resource1251=IDD_CONNECT (Unknown language: 0xD +Resource1252=IDD_CONNECT (Unknown language: 0xD +Resource1253=IDD_CONNECT (Unknown language: 0xD +Resource1254=IDD_CONNECT (Unknown language: 0xD +Resource1255=IDD_CONNECT (Unknown language: 0xD +Resource1256=IDD_CONNECT (Unknown language: 0xD +Resource1257=IDD_CONNECT (Unknown language: 0xD +Resource1258=IDD_CONNECT (Unknown language: 0xD +Resource1259=IDD_CONNECT (Unknown language: 0xD +Resource1260=IDD_CONNECT (Unknown language: 0xD +Resource1261=IDD_CONNECT (Unknown language: 0xD +Resource1262=IDD_CONNECT (Unknown language: 0xD +Resource1263=IDD_CONNECT (Unknown language: 0xD +Resource1264=IDD_CONNECT (Unknown language: 0xD +Resource1265=IDD_CONNECT (Unknown language: 0xD +Resource1266=IDD_CONNECT (Unknown language: 0xD +Resource1267=IDD_CONNECT (Unknown language: 0xD +Resource1268=IDD_CONNECT (Unknown language: 0xD +Resource1269=IDD_CONNECT (Unknown language: 0xD +Resource1270=IDD_CONNECT (Unknown language: 0xD +Resource1271=IDD_CONNECT (Unknown language: 0xD +Resource1272=IDD_CONNECT (Unknown language: 0xD +Resource1273=IDD_CONNECT (Unknown language: 0xD +Resource1274=IDD_CONNECT (Unknown language: 0xD +Resource1275=IDD_CONNECT (Unknown language: 0xD +Resource1276=IDD_CONNECT (Unknown language: 0xD +Resource1277=IDD_CONNECT (Unknown language: 0xD +Resource1278=IDD_CONNECT (Unknown language: 0xD +Resource1279=IDD_CONNECT (Unknown language: 0xD +Resource1280=IDD_CONNECT (Unknown language: 0xD +Resource1281=IDD_CONNECT (Unknown language: 0xD +Resource1282=IDD_CONNECT (Unknown language: 0xD +Resource1283=IDD_CONNECT (Unknown language: 0xD +Resource1284=IDD_CONNECT (Unknown language: 0xD +Resource1285=IDD_CONNECT (Unknown language: 0xD +Resource1286=IDD_CONNECT (Unknown language: 0xD +Resource1287=IDD_CONNECT (Unknown language: 0xD +Resource1288=IDD_CONNECT (Unknown language: 0xD +Resource1289=IDD_CONNECT (Unknown language: 0xD +Resource1290=IDD_CONNECT (Unknown language: 0xD +Resource1291=IDD_CONNECT (Unknown language: 0xD +Resource1292=IDD_CONNECT (Unknown language: 0xD +Resource1293=IDD_CONNECT (Unknown language: 0xD +Resource1294=IDD_CONNECT (Unknown language: 0xD +Resource1295=IDD_CONNECT (Unknown language: 0xD +Resource1296=IDD_CONNECT (Unknown language: 0xD +Resource1297=IDD_CONNECT (Unknown language: 0xD +Resource1298=IDD_CONNECT (Unknown language: 0xD +Resource1299=IDD_CONNECT (Unknown language: 0xD +Resource1300=IDD_CONNECT (Unknown language: 0xD +Resource1301=IDD_CONNECT (Unknown language: 0xD +Resource1302=IDD_CONNECT (Unknown language: 0xD +Resource1303=IDD_CONNECT (Unknown language: 0xD +Resource1304=IDD_CONNECT (Unknown language: 0xD +Resource1305=IDD_CONNECT (Unknown language: 0xD +Resource1306=IDD_CONNECT (Unknown language: 0xD +Resource1307=IDD_CONNECT (Unknown language: 0xD +Resource1308=IDD_CONNECT (Unknown language: 0xD +Resource1309=IDD_CONNECT (Unknown language: 0xD +Resource1310=IDD_CONNECT (Unknown language: 0xD +Resource1311=IDD_CONNECT (Unknown language: 0xD +Resource1312=IDD_CONNECT (Unknown language: 0xD +Resource1313=IDD_CONNECT (Unknown language: 0xD +Resource1314=IDD_CONNECT (Unknown language: 0xD +Resource1315=IDD_CONNECT (Unknown language: 0xD +Resource1316=IDD_CONNECT (Unknown language: 0xD +Resource1317=IDD_CONNECT (Unknown language: 0xD +Resource1318=IDD_CONNECT (Unknown language: 0xD +Resource1319=IDD_CONNECT (Unknown language: 0xD +Resource1320=IDD_CONNECT (Unknown language: 0xD +Resource1321=IDD_CONNECT (Unknown language: 0xD +Resource1322=IDD_CONNECT (Unknown language: 0xD +Resource1323=IDD_CONNECT (Unknown language: 0xD +Resource1324=IDD_CONNECT (Unknown language: 0xD +Resource1325=IDD_CONNECT (Unknown language: 0xD +Resource1326=IDD_CONNECT (Unknown language: 0xD +Resource1327=IDD_CONNECT (Unknown language: 0xD +Resource1328=IDD_CONNECT (Unknown language: 0xD +Resource1329=IDD_CONNECT (Unknown language: 0xD +Resource1330=IDD_CONNECT (Unknown language: 0xD +Resource1331=IDD_CONNECT (Unknown language: 0xD +Resource1332=IDD_CONNECT (Unknown language: 0xD +Resource1333=IDD_CONNECT (Unknown language: 0xD +Resource1334=IDD_CONNECT (Unknown language: 0xD +Resource1335=IDD_CONNECT (Unknown language: 0xD +Resource1336=IDD_CONNECT (Unknown language: 0xD +Resource1337=IDD_CONNECT (Unknown language: 0xD +Resource1338=IDD_CONNECT (Unknown language: 0xD +Resource1339=IDD_CONNECT (Unknown language: 0xD +Resource1340=IDD_CONNECT (Unknown language: 0xD +Resource1341=IDD_CONNECT (Unknown language: 0xD +Resource1342=IDD_CONNECT (Unknown language: 0xD +Resource1343=IDD_CONNECT (Unknown language: 0xD +Resource1344=IDD_CONNECT (Unknown language: 0xD +Resource1345=IDD_CONNECT (Unknown language: 0xD +Resource1346=IDD_CONNECT (Unknown language: 0xD +Resource1347=IDD_CONNECT (Unknown language: 0xD +Resource1348=IDD_CONNECT (Unknown language: 0xD +Resource1349=IDD_CONNECT (Unknown language: 0xD +Resource1350=IDD_CONNECT (Unknown language: 0xD +Resource1351=IDD_CONNECT (Unknown language: 0xD +Resource1352=IDD_CONNECT (Unknown language: 0xD +Resource1353=IDD_CONNECT (Unknown language: 0xD +Resource1354=IDD_CONNECT (Unknown language: 0xD +Resource1355=IDD_CONNECT (Unknown language: 0xD +Resource1356=IDD_CONNECT (Unknown language: 0xD +Resource1357=IDD_CONNECT (Unknown language: 0xD +Resource1358=IDD_CONNECT (Unknown language: 0xD +Resource1359=IDD_CONNECT (Unknown language: 0xD +Resource1360=IDD_CONNECT (Unknown language: 0xD +Resource1361=IDD_CONNECT (Unknown language: 0xD +Resource1362=IDD_CONNECT (Unknown language: 0xD +Resource1363=IDD_CONNECT (Unknown language: 0xD +Resource1364=IDD_CONNECT (Unknown language: 0xD +Resource1365=IDD_CONNECT (Unknown language: 0xD +Resource1366=IDD_CONNECT (Unknown language: 0xD +Resource1367=IDD_CONNECT (Unknown language: 0xD +Resource1368=IDD_CONNECT (Unknown language: 0xD +Resource1369=IDD_CONNECT (Unknown language: 0xD +Resource1370=IDD_CONNECT (Unknown language: 0xD +Resource1371=IDD_CONNECT (Unknown language: 0xD +Resource1372=IDD_CONNECT (Unknown language: 0xD +Resource1373=IDD_CONNECT (Unknown language: 0xD +Resource1374=IDD_CONNECT (Unknown language: 0xD +Resource1375=IDD_CONNECT (Unknown language: 0xD +Resource1376=IDD_CONNECT (Unknown language: 0xD +Resource1377=IDD_CONNECT (Unknown language: 0xD +Resource1378=IDD_CONNECT (Unknown language: 0xD +Resource1379=IDD_CONNECT (Unknown language: 0xD +Resource1380=IDD_CONNECT (Unknown language: 0xD +Resource1381=IDD_CONNECT (Unknown language: 0xD +Resource1382=IDD_CONNECT (Unknown language: 0xD +Resource1383=IDD_CONNECT (Unknown language: 0xD +Resource1384=IDD_CONNECT (Unknown language: 0xD +Resource1385=IDD_CONNECT (Unknown language: 0xD +Resource1386=IDD_CONNECT (Unknown language: 0xD +Resource1387=IDD_CONNECT (Unknown language: 0xD +Resource1388=IDD_CONNECT (Unknown language: 0xD +Resource1389=IDD_CONNECT (Unknown language: 0xD +Resource1390=IDD_CONNECT (Unknown language: 0xD +Resource1391=IDD_CONNECT (Unknown language: 0xD +Resource1392=IDD_CONNECT (Unknown language: 0xD +Resource1393=IDD_CONNECT (Unknown language: 0xD +Resource1394=IDD_CONNECT (Unknown language: 0xD +Resource1395=IDD_CONNECT (Unknown language: 0xD +Resource1396=IDD_CONNECT (Unknown language: 0xD +Resource1397=IDD_CONNECT (Unknown language: 0xD +Resource1398=IDD_CONNECT (Unknown language: 0xD +Resource1399=IDD_CONNECT (Unknown language: 0xD +Resource1400=IDD_CONNECT (Unknown language: 0xD +Resource1401=IDD_CONNECT (Unknown language: 0xD +Resource1402=IDD_CONNECT (Unknown language: 0xD +Resource1403=IDD_CONNECT (Unknown language: 0xD +Resource1404=IDD_CONNECT (Unknown language: 0xD +Resource1405=IDD_CONNECT (Unknown language: 0xD +Resource1406=IDD_CONNECT (Unknown language: 0xD +Resource1407=IDD_CONNECT (Unknown language: 0xD +Resource1408=IDD_CONNECT (Unknown language: 0xD +Resource1409=IDD_CONNECT (Unknown language: 0xD +Resource1410=IDD_CONNECT (Unknown language: 0xD +Resource1411=IDD_CONNECT (Unknown language: 0xD +Resource1412=IDD_CONNECT (Unknown language: 0xD +Resource1413=IDD_CONNECT (Unknown language: 0xD +Resource1414=IDD_CONNECT (Unknown language: 0xD +Resource1415=IDD_CONNECT (Unknown language: 0xD +Resource1416=IDD_CONNECT (Unknown language: 0xD +Resource1417=IDD_CONNECT (Unknown language: 0xD +Resource1418=IDD_CONNECT (Unknown language: 0xD +Resource1419=IDD_CONNECT (Unknown language: 0xD +Resource1420=IDD_CONNECT (Unknown language: 0xD +Resource1421=IDD_CONNECT (Unknown language: 0xD +Resource1422=IDD_CONNECT (Unknown language: 0xD +Resource1423=IDD_CONNECT (Unknown language: 0xD +Resource1424=IDD_CONNECT (Unknown language: 0xD +Resource1425=IDD_CONNECT (Unknown language: 0xD +Resource1426=IDD_CONNECT (Unknown language: 0xD +Resource1427=IDD_CONNECT (Unknown language: 0xD +Resource1428=IDD_CONNECT (Unknown language: 0xD +Resource1429=IDD_CONNECT (Unknown language: 0xD +Resource1430=IDD_CONNECT (Unknown language: 0xD +Resource1431=IDD_CONNECT (Unknown language: 0xD +Resource1432=IDD_CONNECT (Unknown language: 0xD +Resource1433=IDD_CONNECT (Unknown language: 0xD +Resource1434=IDD_CONNECT (Unknown language: 0xD +Resource1435=IDD_CONNECT (Unknown language: 0xD +Resource1436=IDD_CONNECT (Unknown language: 0xD +Resource1437=IDD_CONNECT (Unknown language: 0xD +Resource1438=IDD_CONNECT (Unknown language: 0xD +Resource1439=IDD_CONNECT (Unknown language: 0xD +Resource1440=IDD_CONNECT (Unknown language: 0xD +Resource1441=IDD_CONNECT (Unknown language: 0xD +Resource1442=IDD_CONNECT (Unknown language: 0xD +Resource1443=IDD_CONNECT (Unknown language: 0xD +Resource1444=IDD_CONNECT (Unknown language: 0xD +Resource1445=IDD_CONNECT (Unknown language: 0xD +Resource1446=IDD_CONNECT (Unknown language: 0xD +Resource1447=IDD_CONNECT (Unknown language: 0xD +Resource1448=IDD_CONNECT (Unknown language: 0xD +Resource1449=IDD_CONNECT (Unknown language: 0xD +Resource1450=IDD_CONNECT (Unknown language: 0xD +Resource1451=IDD_CONNECT (Unknown language: 0xD +Resource1452=IDD_CONNECT (Unknown language: 0xD +Resource1453=IDD_CONNECT (Unknown language: 0xD +Resource1454=IDD_CONNECT (Unknown language: 0xD +Resource1455=IDD_CONNECT (Unknown language: 0xD +Resource1456=IDD_CONNECT (Unknown language: 0xD +Resource1457=IDD_CONNECT (Unknown language: 0xD +Resource1458=IDD_CONNECT (Unknown language: 0xD +Resource1459=IDD_CONNECT (Unknown language: 0xD +Resource1460=IDD_CONNECT (Unknown language: 0xD +Resource1461=IDD_CONNECT (Unknown language: 0xD +Resource1462=IDD_CONNECT (Unknown language: 0xD +Resource1463=IDD_CONNECT (Unknown language: 0xD +Resource1464=IDD_CONNECT (Unknown language: 0xD +Resource1465=IDD_CONNECT (Unknown language: 0xD +Resource1466=IDD_CONNECT (Unknown language: 0xD +Resource1467=IDD_CONNECT (Unknown language: 0xD +Resource1468=IDD_CONNECT (Unknown language: 0xD +Resource1469=IDD_CONNECT (Unknown language: 0xD +Resource1470=IDD_CONNECT (Unknown language: 0xD +Resource1471=IDD_CONNECT (Unknown language: 0xD +Resource1472=IDD_CONNECT (Unknown language: 0xD +Resource1473=IDD_CONNECT (Unknown language: 0xD +Resource1474=IDD_CONNECT (Unknown language: 0xD +Resource1475=IDD_CONNECT (Unknown language: 0xD +Resource1476=IDD_CONNECT (Unknown language: 0xD +Resource1477=IDD_CONNECT (Unknown language: 0xD +Resource1478=IDD_CONNECT (Unknown language: 0xD +Resource1479=IDD_CONNECT (Unknown language: 0xD +Resource1480=IDD_CONNECT (Unknown language: 0xD +Resource1481=IDD_CONNECT (Unknown language: 0xD +Resource1482=IDD_CONNECT (Unknown language: 0xD +Resource1483=IDD_CONNECT (Unknown language: 0xD +Resource1484=IDD_CONNECT (Unknown language: 0xD +Resource1485=IDD_CONNECT (Unknown language: 0xD +Resource1486=IDD_CONNECT (Unknown language: 0xD +Resource1487=IDD_CONNECT (Unknown language: 0xD +Resource1488=IDD_CONNECT (Unknown language: 0xD +Resource1489=IDD_CONNECT (Unknown language: 0xD +Resource1490=IDD_CONNECT (Unknown language: 0xD +Resource1491=IDD_CONNECT (Unknown language: 0xD +Resource1492=IDD_CONNECT (Unknown language: 0xD +Resource1493=IDD_CONNECT (Unknown language: 0xD +Resource1494=IDD_CONNECT (Unknown language: 0xD +Resource1495=IDD_CONNECT (Unknown language: 0xD +Resource1496=IDD_CONNECT (Unknown language: 0xD +Resource1497=IDD_CONNECT (Unknown language: 0xD +Resource1498=IDD_CONNECT (Unknown language: 0xD +Resource1499=IDD_CONNECT (Unknown language: 0xD +Resource1500=IDD_CONNECT (Unknown language: 0xD +Resource1501=IDD_CONNECT (Unknown language: 0xD +Resource1502=IDD_CONNECT (Unknown language: 0xD +Resource1503=IDD_CONNECT (Unknown language: 0xD +Resource1504=IDD_CONNECT (Unknown language: 0xD +Resource1505=IDD_CONNECT (Unknown language: 0xD +Resource1506=IDD_CONNECT (Unknown language: 0xD +Resource1507=IDD_CONNECT (Unknown language: 0xD +Resource1508=IDD_CONNECT (Unknown language: 0xD +Resource1509=IDD_CONNECT (Unknown language: 0xD +Resource1510=IDD_CONNECT (Unknown language: 0xD +Resource1511=IDD_CONNECT (Unknown language: 0xD +Resource1512=IDD_CONNECT (Unknown language: 0xD +Resource1513=IDD_CONNECT (Unknown language: 0xD +Resource1514=IDD_CONNECT (Unknown language: 0xD +Resource1515=IDD_CONNECT (Unknown language: 0xD +Resource1516=IDD_CONNECT (Unknown language: 0xD +Resource1517=IDD_CONNECT (Unknown language: 0xD +Resource1518=IDD_CONNECT (Unknown language: 0xD +Resource1519=IDD_CONNECT (Unknown language: 0xD +Resource1520=IDD_CONNECT (Unknown language: 0xD +Resource1521=IDD_CONNECT (Unknown language: 0xD +Resource1522=IDD_CONNECT (Unknown language: 0xD +Resource1523=IDD_CONNECT (Unknown language: 0xD +Resource1524=IDD_CONNECT (Unknown language: 0xD +Resource1525=IDD_CONNECT (Unknown language: 0xD +Resource1526=IDD_CONNECT (Unknown language: 0xD +Resource1527=IDD_CONNECT (Unknown language: 0xD +Resource1528=IDD_CONNECT (Unknown language: 0xD +Resource1529=IDD_CONNECT (Unknown language: 0xD +Resource1530=IDD_CONNECT (Unknown language: 0xD +Resource1531=IDD_CONNECT (Unknown language: 0xD +Resource1532=IDD_CONNECT (Unknown language: 0xD +Resource1533=IDD_CONNECT (Unknown language: 0xD +Resource1534=IDD_CONNECT (Unknown language: 0xD +Resource1535=IDD_CONNECT (Unknown language: 0xD +Resource1536=IDD_CONNECT (Unknown language: 0xD +Resource1537=IDD_CONNECT (Unknown language: 0xD +Resource1538=IDD_CONNECT (Unknown language: 0xD +Resource1539=IDD_CONNECT (Unknown language: 0xD +Resource1540=IDD_CONNECT (Unknown language: 0xD +Resource1541=IDD_CONNECT (Unknown language: 0xD +Resource1542=IDD_CONNECT (Unknown language: 0xD +Resource1543=IDD_CONNECT (Unknown language: 0xD +Resource1544=IDD_CONNECT (Unknown language: 0xD +Resource1545=IDD_CONNECT (Unknown language: 0xD +Resource1546=IDD_CONNECT (Unknown language: 0xD +Resource1547=IDD_CONNECT (Unknown language: 0xD +Resource1548=IDD_CONNECT (Unknown language: 0xD +Resource1549=IDD_CONNECT (Unknown language: 0xD +Resource1550=IDD_CONNECT (Unknown language: 0xD +Resource1551=IDD_CONNECT (Unknown language: 0xD +Resource1552=IDD_CONNECT (Unknown language: 0xD +Resource1553=IDD_CONNECT (Unknown language: 0xD +Resource1554=IDD_CONNECT (Unknown language: 0xD +Resource1555=IDD_CONNECT (Unknown language: 0xD +Resource1556=IDD_CONNECT (Unknown language: 0xD +Resource1557=IDD_CONNECT (Unknown language: 0xD +Resource1558=IDD_CONNECT (Unknown language: 0xD +Resource1559=IDD_CONNECT (Unknown language: 0xD +Resource1560=IDD_CONNECT (Unknown language: 0xD +Resource1561=IDD_CONNECT (Unknown language: 0xD +Resource1562=IDD_CONNECT (Unknown language: 0xD +Resource1563=IDD_CONNECT (Unknown language: 0xD +Resource1564=IDD_CONNECT (Unknown language: 0xD +Resource1565=IDD_CONNECT (Unknown language: 0xD +Resource1566=IDD_CONNECT (Unknown language: 0xD +Resource1567=IDD_CONNECT (Unknown language: 0xD +Resource1568=IDD_CONNECT (Unknown language: 0xD +Resource1569=IDD_CONNECT (Unknown language: 0xD +Resource1570=IDD_CONNECT (Unknown language: 0xD +Resource1571=IDD_CONNECT (Unknown language: 0xD +Resource1572=IDD_CONNECT (Unknown language: 0xD +Resource1573=IDD_CONNECT (Unknown language: 0xD +Resource1574=IDD_CONNECT (Unknown language: 0xD +Resource1575=IDD_CONNECT (Unknown language: 0xD +Resource1576=IDD_CONNECT (Unknown language: 0xD +Resource1577=IDD_CONNECT (Unknown language: 0xD +Resource1578=IDD_CONNECT (Unknown language: 0xD +Resource1579=IDD_CONNECT (Unknown language: 0xD +Resource1580=IDD_CONNECT (Unknown language: 0xD +Resource1581=IDD_CONNECT (Unknown language: 0xD +Resource1582=IDD_CONNECT (Unknown language: 0xD +Resource1583=IDD_CONNECT (Unknown language: 0xD +Resource1584=IDD_CONNECT (Unknown language: 0xD +Resource1585=IDD_CONNECT (Unknown language: 0xD +Resource1586=IDD_CONNECT (Unknown language: 0xD +Resource1587=IDD_CONNECT (Unknown language: 0xD +Resource1588=IDD_CONNECT (Unknown language: 0xD +Resource1589=IDD_CONNECT (Unknown language: 0xD +Resource1590=IDD_CONNECT (Unknown language: 0xD +Resource1591=IDD_CONNECT (Unknown language: 0xD +Resource1592=IDD_CONNECT (Unknown language: 0xD +Resource1593=IDD_CONNECT (Unknown language: 0xD +Resource1594=IDD_CONNECT (Unknown language: 0xD +Resource1595=IDD_CONNECT (Unknown language: 0xD +Resource1596=IDD_CONNECT (Unknown language: 0xD +Resource1597=IDD_CONNECT (Unknown language: 0xD +Resource1598=IDD_CONNECT (Unknown language: 0xD +Resource1599=IDD_CONNECT (Unknown language: 0xD +Resource1600=IDD_CONNECT (Unknown language: 0xD +Resource1601=IDD_CONNECT (Unknown language: 0xD +Resource1602=IDD_CONNECT (Unknown language: 0xD +Resource1603=IDD_CONNECT (Unknown language: 0xD +Resource1604=IDD_CONNECT (Unknown language: 0xD +Resource1605=IDD_CONNECT (Unknown language: 0xD +Resource1606=IDD_CONNECT (Unknown language: 0xD +Resource1607=IDD_CONNECT (Unknown language: 0xD +Resource1608=IDD_CONNECT (Unknown language: 0xD +Resource1609=IDD_CONNECT (Unknown language: 0xD +Resource1610=IDD_CONNECT (Unknown language: 0xD +Resource1611=IDD_CONNECT (Unknown language: 0xD +Resource1612=IDD_CONNECT (Unknown language: 0xD +Resource1613=IDD_CONNECT (Unknown language: 0xD +Resource1614=IDD_CONNECT (Unknown language: 0xD +Resource1615=IDD_CONNECT (Unknown language: 0xD +Resource1616=IDD_CONNECT (Unknown language: 0xD +Resource1617=IDD_CONNECT (Unknown language: 0xD +Resource1618=IDD_CONNECT (Unknown language: 0xD +Resource1619=IDD_CONNECT (Unknown language: 0xD +Resource1620=IDD_CONNECT (Unknown language: 0xD +Resource1621=IDD_CONNECT (Unknown language: 0xD +Resource1622=IDD_CONNECT (Unknown language: 0xD +Resource1623=IDD_CONNECT (Unknown language: 0xD +Resource1624=IDD_CONNECT (Unknown language: 0xD +Resource1625=IDD_CONNECT (Unknown language: 0xD +Resource1626=IDD_CONNECT (Unknown language: 0xD +Resource1627=IDD_CONNECT (Unknown language: 0xD +Resource1628=IDD_CONNECT (Unknown language: 0xD +Resource1629=IDD_CONNECT (Unknown language: 0xD +Resource1630=IDD_CONNECT (Unknown language: 0xD +Resource1631=IDD_CONNECT (Unknown language: 0xD +Resource1632=IDD_CONNECT (Unknown language: 0xD +Resource1633=IDD_CONNECT (Unknown language: 0xD +Resource1634=IDD_CONNECT (Unknown language: 0xD +Resource1635=IDD_CONNECT (Unknown language: 0xD +Resource1636=IDD_CONNECT (Unknown language: 0xD +Resource1637=IDD_CONNECT (Unknown language: 0xD +Resource1638=IDD_CONNECT (Unknown language: 0xD +Resource1639=IDD_CONNECT (Unknown language: 0xD +Resource1640=IDD_CONNECT (Unknown language: 0xD +Resource1641=IDD_CONNECT (Unknown language: 0xD +Resource1642=IDD_CONNECT (Unknown language: 0xD +Resource1643=IDD_CONNECT (Unknown language: 0xD +Resource1644=IDD_CONNECT (Unknown language: 0xD +Resource1645=IDD_CONNECT (Unknown language: 0xD +Resource1646=IDD_CONNECT (Unknown language: 0xD +Resource1647=IDD_CONNECT (Unknown language: 0xD +Resource1648=IDD_CONNECT (Unknown language: 0xD +Resource1649=IDD_CONNECT (Unknown language: 0xD +Resource1650=IDD_CONNECT (Unknown language: 0xD +Resource1651=IDD_CONNECT (Unknown language: 0xD +Resource1652=IDD_CONNECT (Unknown language: 0xD +Resource1653=IDD_CONNECT (Unknown language: 0xD +Resource1654=IDD_CONNECT (Unknown language: 0xD +Resource1655=IDD_CONNECT (Unknown language: 0xD +Resource1656=IDD_CONNECT (Unknown language: 0xD +Resource1657=IDD_CONNECT (Unknown language: 0xD +Resource1658=IDD_CONNECT (Unknown language: 0xD +Resource1659=IDD_CONNECT (Unknown language: 0xD +Resource1660=IDD_CONNECT (Unknown language: 0xD +Resource1661=IDD_CONNECT (Unknown language: 0xD +Resource1662=IDD_CONNECT (Unknown language: 0xD +Resource1663=IDD_CONNECT (Unknown language: 0xD +Resource1664=IDD_CONNECT (Unknown language: 0xD +Resource1665=IDD_CONNECT (Unknown language: 0xD +Resource1666=IDD_CONNECT (Unknown language: 0xD +Resource1667=IDD_CONNECT (Unknown language: 0xD +Resource1668=IDD_CONNECT (Unknown language: 0xD +Resource1669=IDD_CONNECT (Unknown language: 0xD +Resource1670=IDD_CONNECT (Unknown language: 0xD +Resource1671=IDD_CONNECT (Unknown language: 0xD +Resource1672=IDD_CONNECT (Unknown language: 0xD +Resource1673=IDD_CONNECT (Unknown language: 0xD +Resource1674=IDD_CONNECT (Unknown language: 0xD +Resource1675=IDD_CONNECT (Unknown language: 0xD +Resource1676=IDD_CONNECT (Unknown language: 0xD +Resource1677=IDD_CONNECT (Unknown language: 0xD +Resource1678=IDD_CONNECT (Unknown language: 0xD +Resource1679=IDD_CONNECT (Unknown language: 0xD +Resource1680=IDD_CONNECT (Unknown language: 0xD +Resource1681=IDD_CONNECT (Unknown language: 0xD +Resource1682=IDD_CONNECT (Unknown language: 0xD +Resource1683=IDD_CONNECT (Unknown language: 0xD +Resource1684=IDD_CONNECT (Unknown language: 0xD +Resource1685=IDD_CONNECT (Unknown language: 0xD +Resource1686=IDD_CONNECT (Unknown language: 0xD +Resource1687=IDD_CONNECT (Unknown language: 0xD +Resource1688=IDD_CONNECT (Unknown language: 0xD +Resource1689=IDD_CONNECT (Unknown language: 0xD +Resource1690=IDD_CONNECT (Unknown language: 0xD +Resource1691=IDD_CONNECT (Unknown language: 0xD +Resource1692=IDD_CONNECT (Unknown language: 0xD +Resource1693=IDD_CONNECT (Unknown language: 0xD +Resource1694=IDD_CONNECT (Unknown language: 0xD +Resource1695=IDD_CONNECT (Unknown language: 0xD +Resource1696=IDD_CONNECT (Unknown language: 0xD +Resource1697=IDD_CONNECT (Unknown language: 0xD +Resource1698=IDD_CONNECT (Unknown language: 0xD +Resource1699=IDD_CONNECT (Unknown language: 0xD +Resource1700=IDD_CONNECT (Unknown language: 0xD +Resource1701=IDD_CONNECT (Unknown language: 0xD +Resource1702=IDD_CONNECT (Unknown language: 0xD +Resource1703=IDD_CONNECT (Unknown language: 0xD +Resource1704=IDD_CONNECT (Unknown language: 0xD +Resource1705=IDD_CONNECT (Unknown language: 0xD +Resource1706=IDD_CONNECT (Unknown language: 0xD +Resource1707=IDD_CONNECT (Unknown language: 0xD +Resource1708=IDD_CONNECT (Unknown language: 0xD +Resource1709=IDD_CONNECT (Unknown language: 0xD +Resource1710=IDD_CONNECT (Unknown language: 0xD +Resource1711=IDD_CONNECT (Unknown language: 0xD +Resource1712=IDD_CONNECT (Unknown language: 0xD +Resource1713=IDD_CONNECT (Unknown language: 0xD +Resource1714=IDD_CONNECT (Unknown language: 0xD +Resource1715=IDD_CONNECT (Unknown language: 0xD +Resource1716=IDD_CONNECT (Unknown language: 0xD +Resource1717=IDD_CONNECT (Unknown language: 0xD +Resource1718=IDD_CONNECT (Unknown language: 0xD +Resource1719=IDD_CONNECT (Unknown language: 0xD +Resource1720=IDD_CONNECT (Unknown language: 0xD +Resource1721=IDD_CONNECT (Unknown language: 0xD +Resource1722=IDD_CONNECT (Unknown language: 0xD +Resource1723=IDD_CONNECT (Unknown language: 0xD +Resource1724=IDD_CONNECT (Unknown language: 0xD +Resource1725=IDD_CONNECT (Unknown language: 0xD +Resource1726=IDD_CONNECT (Unknown language: 0xD +Resource1727=IDD_CONNECT (Unknown language: 0xD +Resource1728=IDD_CONNECT (Unknown language: 0xD +Resource1729=IDD_CONNECT (Unknown language: 0xD +Resource1730=IDD_CONNECT (Unknown language: 0xD +Resource1731=IDD_CONNECT (Unknown language: 0xD +Resource1732=IDD_CONNECT (Unknown language: 0xD +Resource1733=IDD_CONNECT (Unknown language: 0xD +Resource1734=IDD_CONNECT (Unknown language: 0xD +Resource1735=IDD_CONNECT (Unknown language: 0xD +Resource1736=IDD_CONNECT (Unknown language: 0xD +Resource1737=IDD_CONNECT (Unknown language: 0xD +Resource1738=IDD_CONNECT (Unknown language: 0xD +Resource1739=IDD_CONNECT (Unknown language: 0xD +Resource1740=IDD_CONNECT (Unknown language: 0xD +Resource1741=IDD_CONNECT (Unknown language: 0xD +Resource1742=IDD_CONNECT (Unknown language: 0xD +Resource1743=IDD_CONNECT (Unknown language: 0xD +Resource1744=IDD_CONNECT (Unknown language: 0xD +Resource1745=IDD_CONNECT (Unknown language: 0xD +Resource1746=IDD_CONNECT (Unknown language: 0xD +Resource1747=IDD_CONNECT (Unknown language: 0xD +Resource1748=IDD_CONNECT (Unknown language: 0xD +Resource1749=IDD_CONNECT (Unknown language: 0xD +Resource1750=IDD_CONNECT (Unknown language: 0xD +Resource1751=IDD_CONNECT (Unknown language: 0xD +Resource1752=IDD_CONNECT (Unknown language: 0xD +Resource1753=IDD_CONNECT (Unknown language: 0xD +Resource1754=IDD_CONNECT (Unknown language: 0xD +Resource1755=IDD_CONNECT (Unknown language: 0xD +Resource1756=IDD_CONNECT (Unknown language: 0xD +Resource1757=IDD_CONNECT (Unknown language: 0xD +Resource1758=IDD_CONNECT (Unknown language: 0xD +Resource1759=IDD_CONNECT (Unknown language: 0xD +Resource1760=IDD_CONNECT (Unknown language: 0xD +Resource1761=IDD_CONNECT (Unknown language: 0xD +Resource1762=IDD_CONNECT (Unknown language: 0xD +Resource1763=IDD_CONNECT (Unknown language: 0xD +Resource1764=IDD_CONNECT (Unknown language: 0xD +Resource1765=IDD_CONNECT (Unknown language: 0xD +Resource1766=IDD_CONNECT (Unknown language: 0xD +Resource1767=IDD_CONNECT (Unknown language: 0xD +Resource1768=IDD_CONNECT (Unknown language: 0xD +Resource1769=IDD_CONNECT (Unknown language: 0xD +Resource1770=IDD_CONNECT (Unknown language: 0xD +Resource1771=IDD_CONNECT (Unknown language: 0xD +Resource1772=IDD_CONNECT (Unknown language: 0xD +Resource1773=IDD_CONNECT (Unknown language: 0xD +Resource1774=IDD_CONNECT (Unknown language: 0xD +Resource1775=IDD_CONNECT (Unknown language: 0xD +Resource1776=IDD_CONNECT (Unknown language: 0xD +Resource1777=IDD_CONNECT (Unknown language: 0xD +Resource1778=IDD_CONNECT (Unknown language: 0xD +Resource1779=IDD_CONNECT (Unknown language: 0xD +Resource1780=IDD_CONNECT (Unknown language: 0xD +Resource1781=IDD_CONNECT (Unknown language: 0xD +Resource1782=IDD_CONNECT (Unknown language: 0xD +Resource1783=IDD_CONNECT (Unknown language: 0xD +Resource1784=IDD_CONNECT (Unknown language: 0xD +Resource1785=IDD_CONNECT (Unknown language: 0xD +Resource1786=IDD_CONNECT (Unknown language: 0xD +Resource1787=IDD_CONNECT (Unknown language: 0xD +Resource1788=IDD_CONNECT (Unknown language: 0xD +Resource1789=IDD_CONNECT (Unknown language: 0xD +Resource1790=IDD_CONNECT (Unknown language: 0xD +Resource1791=IDD_CONNECT (Unknown language: 0xD +Resource1792=IDD_CONNECT (Unknown language: 0xD +Resource1793=IDD_CONNECT (Unknown language: 0xD +Resource1794=IDD_CONNECT (Unknown language: 0xD +Resource1795=IDD_CONNECT (Unknown language: 0xD +Resource1796=IDD_CONNECT (Unknown language: 0xD +Resource1797=IDD_CONNECT (Unknown language: 0xD +Resource1798=IDD_CONNECT (Unknown language: 0xD +Resource1799=IDD_CONNECT (Unknown language: 0xD +Resource1800=IDD_CONNECT (Unknown language: 0xD +Resource1801=IDD_CONNECT (Unknown language: 0xD +Resource1802=IDD_CONNECT (Unknown language: 0xD +Resource1803=IDD_CONNECT (Unknown language: 0xD +Resource1804=IDD_CONNECT (Unknown language: 0xD +Resource1805=IDD_CONNECT (Unknown language: 0xD +Resource1806=IDD_CONNECT (Unknown language: 0xD +Resource1807=IDD_CONNECT (Unknown language: 0xD +Resource1808=IDD_CONNECT (Unknown language: 0xD +Resource1809=IDD_CONNECT (Unknown language: 0xD +Resource1810=IDD_CONNECT (Unknown language: 0xD +Resource1811=IDD_CONNECT (Unknown language: 0xD +Resource1812=IDD_CONNECT (Unknown language: 0xD +Resource1813=IDD_CONNECT (Unknown language: 0xD +Resource1814=IDD_CONNECT (Unknown language: 0xD +Resource1815=IDD_CONNECT (Unknown language: 0xD +Resource1816=IDD_CONNECT (Unknown language: 0xD +Resource1817=IDD_CONNECT (Unknown language: 0xD +Resource1818=IDD_CONNECT (Unknown language: 0xD +Resource1819=IDD_CONNECT (Unknown language: 0xD +Resource1820=IDD_CONNECT (Unknown language: 0xD +Resource1821=IDD_CONNECT (Unknown language: 0xD +Resource1822=IDD_CONNECT (Unknown language: 0xD +Resource1823=IDD_CONNECT (Unknown language: 0xD +Resource1824=IDD_CONNECT (Unknown language: 0xD +Resource1825=IDD_CONNECT (Unknown language: 0xD +Resource1826=IDD_CONNECT (Unknown language: 0xD +Resource1827=IDD_CONNECT (Unknown language: 0xD +Resource1828=IDD_CONNECT (Unknown language: 0xD +Resource1829=IDD_CONNECT (Unknown language: 0xD +Resource1830=IDD_CONNECT (Unknown language: 0xD +Resource1831=IDD_CONNECT (Unknown language: 0xD +Resource1832=IDD_CONNECT (Unknown language: 0xD +Resource1833=IDD_CONNECT (Unknown language: 0xD +Resource1834=IDD_CONNECT (Unknown language: 0xD +Resource1835=IDD_CONNECT (Unknown language: 0xD +Resource1836=IDD_CONNECT (Unknown language: 0xD +Resource1837=IDD_CONNECT (Unknown language: 0xD +Resource1838=IDD_CONNECT (Unknown language: 0xD +Resource1839=IDD_CONNECT (Unknown language: 0xD +Resource1840=IDD_CONNECT (Unknown language: 0xD +Resource1841=IDD_CONNECT (Unknown language: 0xD +Resource1842=IDD_CONNECT (Unknown language: 0xD +Resource1843=IDD_CONNECT (Unknown language: 0xD +Resource1844=IDD_CONNECT (Unknown language: 0xD +Resource1845=IDD_CONNECT (Unknown language: 0xD +Resource1846=IDD_CONNECT (Unknown language: 0xD +Resource1847=IDD_CONNECT (Unknown language: 0xD +Resource1848=IDD_CONNECT (Unknown language: 0xD +Resource1849=IDD_CONNECT (Unknown language: 0xD +Resource1850=IDD_CONNECT (Unknown language: 0xD +Resource1851=IDD_CONNECT (Unknown language: 0xD +Resource1852=IDD_CONNECT (Unknown language: 0xD +Resource1853=IDD_CONNECT (Unknown language: 0xD +Resource1854=IDD_CONNECT (Unknown language: 0xD +Resource1855=IDD_CONNECT (Unknown language: 0xD +Resource1856=IDD_CONNECT (Unknown language: 0xD +Resource1857=IDD_CONNECT (Unknown language: 0xD +Resource1858=IDD_CONNECT (Unknown language: 0xD +Resource1859=IDD_CONNECT (Unknown language: 0xD +Resource1860=IDD_CONNECT (Unknown language: 0xD +Resource1861=IDD_CONNECT (Unknown language: 0xD +Resource1862=IDD_CONNECT (Unknown language: 0xD +Resource1863=IDD_CONNECT (Unknown language: 0xD +Resource1864=IDD_CONNECT (Unknown language: 0xD +Resource1865=IDD_CONNECT (Unknown language: 0xD +Resource1866=IDD_CONNECT (Unknown language: 0xD +Resource1867=IDD_CONNECT (Unknown language: 0xD +Resource1868=IDD_CONNECT (Unknown language: 0xD +Resource1869=IDD_CONNECT (Unknown language: 0xD +Resource1870=IDD_CONNECT (Unknown language: 0xD +Resource1871=IDD_CONNECT (Unknown language: 0xD +Resource1872=IDD_CONNECT (Unknown language: 0xD +Resource1873=IDD_CONNECT (Unknown language: 0xD +Resource1874=IDD_CONNECT (Unknown language: 0xD +Resource1875=IDD_CONNECT (Unknown language: 0xD +Resource1876=IDD_CONNECT (Unknown language: 0xD +Resource1877=IDD_CONNECT (Unknown language: 0xD +Resource1878=IDD_CONNECT (Unknown language: 0xD +Resource1879=IDD_CONNECT (Unknown language: 0xD +Resource1880=IDD_CONNECT (Unknown language: 0xD +Resource1881=IDD_CONNECT (Unknown language: 0xD +Resource1882=IDD_CONNECT (Unknown language: 0xD +Resource1883=IDD_CONNECT (Unknown language: 0xD +Resource1884=IDD_CONNECT (Unknown language: 0xD +Resource1885=IDD_CONNECT (Unknown language: 0xD +Resource1886=IDD_CONNECT (Unknown language: 0xD +Resource1887=IDD_CONNECT (Unknown language: 0xD +Resource1888=IDD_CONNECT (Unknown language: 0xD +Resource1889=IDD_CONNECT (Unknown language: 0xD +Resource1890=IDD_CONNECT (Unknown language: 0xD +Resource1891=IDD_CONNECT (Unknown language: 0xD +Resource1892=IDD_CONNECT (Unknown language: 0xD +Resource1893=IDD_CONNECT (Unknown language: 0xD +Resource1894=IDD_CONNECT (Unknown language: 0xD +Resource1895=IDD_CONNECT (Unknown language: 0xD +Resource1896=IDD_CONNECT (Unknown language: 0xD +Resource1897=IDD_CONNECT (Unknown language: 0xD +Resource1898=IDD_CONNECT (Unknown language: 0xD +Resource1899=IDD_CONNECT (Unknown language: 0xD +Resource1900=IDD_CONNECT (Unknown language: 0xD +Resource1901=IDD_CONNECT (Unknown language: 0xD +Resource1902=IDD_CONNECT (Unknown language: 0xD +Resource1903=IDD_CONNECT (Unknown language: 0xD +Resource1904=IDD_CONNECT (Unknown language: 0xD +Resource1905=IDD_CONNECT (Unknown language: 0xD +Resource1906=IDD_CONNECT (Unknown language: 0xD +Resource1907=IDD_CONNECT (Unknown language: 0xD +Resource1908=IDD_CONNECT (Unknown language: 0xD +Resource1909=IDD_CONNECT (Unknown language: 0xD +Resource1910=IDD_CONNECT (Unknown language: 0xD +Resource1911=IDD_CONNECT (Unknown language: 0xD +Resource1912=IDD_CONNECT (Unknown language: 0xD +Resource1913=IDD_CONNECT (Unknown language: 0xD +Resource1914=IDD_CONNECT (Unknown language: 0xD +Resource1915=IDD_CONNECT (Unknown language: 0xD +Resource1916=IDD_CONNECT (Unknown language: 0xD +Resource1917=IDD_CONNECT (Unknown language: 0xD +Resource1918=IDD_CONNECT (Unknown language: 0xD +Resource1919=IDD_CONNECT (Unknown language: 0xD +Resource1920=IDD_CONNECT (Unknown language: 0xD +Resource1921=IDD_CONNECT (Unknown language: 0xD +Resource1922=IDD_CONNECT (Unknown language: 0xD +Resource1923=IDD_CONNECT (Unknown language: 0xD +Resource1924=IDD_CONNECT (Unknown language: 0xD +Resource1925=IDD_CONNECT (Unknown language: 0xD +Resource1926=IDD_CONNECT (Unknown language: 0xD +Resource1927=IDD_CONNECT (Unknown language: 0xD +Resource1928=IDD_CONNECT (Unknown language: 0xD +Resource1929=IDD_CONNECT (Unknown language: 0xD +Resource1930=IDD_CONNECT (Unknown language: 0xD +Resource1931=IDD_CONNECT (Unknown language: 0xD +Resource1932=IDD_CONNECT (Unknown language: 0xD +Resource1933=IDD_CONNECT (Unknown language: 0xD +Resource1934=IDD_CONNECT (Unknown language: 0xD +Resource1935=IDD_CONNECT (Unknown language: 0xD +Resource1936=IDD_CONNECT (Unknown language: 0xD +Resource1937=IDD_CONNECT (Unknown language: 0xD +Resource1938=IDD_CONNECT (Unknown language: 0xD +Resource1939=IDD_CONNECT (Unknown language: 0xD +Resource1940=IDD_CONNECT (Unknown language: 0xD +Resource1941=IDD_CONNECT (Unknown language: 0xD +Resource1942=IDD_CONNECT (Unknown language: 0xD +Resource1943=IDD_CONNECT (Unknown language: 0xD +Resource1944=IDD_CONNECT (Unknown language: 0xD +Resource1945=IDD_CONNECT (Unknown language: 0xD +Resource1946=IDD_CONNECT (Unknown language: 0xD +Resource1947=IDD_CONNECT (Unknown language: 0xD +Resource1948=IDD_CONNECT (Unknown language: 0xD +Resource1949=IDD_CONNECT (Unknown language: 0xD +Resource1950=IDD_CONNECT (Unknown language: 0xD +Resource1951=IDD_CONNECT (Unknown language: 0xD +Resource1952=IDD_CONNECT (Unknown language: 0xD +Resource1953=IDD_CONNECT (Unknown language: 0xD +Resource1954=IDD_CONNECT (Unknown language: 0xD +Resource1955=IDD_CONNECT (Unknown language: 0xD +Resource1956=IDD_CONNECT (Unknown language: 0xD +Resource1957=IDD_CONNECT (Unknown language: 0xD +Resource1958=IDD_CONNECT (Unknown language: 0xD +Resource1959=IDD_CONNECT (Unknown language: 0xD +Resource1960=IDD_CONNECT (Unknown language: 0xD +Resource1961=IDD_CONNECT (Unknown language: 0xD +Resource1962=IDD_CONNECT (Unknown language: 0xD +Resource1963=IDD_CONNECT (Unknown language: 0xD +Resource1964=IDD_CONNECT (Unknown language: 0xD +Resource1965=IDD_CONNECT (Unknown language: 0xD +Resource1966=IDD_CONNECT (Unknown language: 0xD +Resource1967=IDD_CONNECT (Unknown language: 0xD +Resource1968=IDD_CONNECT (Unknown language: 0xD +Resource1969=IDD_CONNECT (Unknown language: 0xD +Resource1970=IDD_CONNECT (Unknown language: 0xD +Resource1971=IDD_CONNECT (Unknown language: 0xD +Resource1972=IDD_CONNECT (Unknown language: 0xD +Resource1973=IDD_CONNECT (Unknown language: 0xD +Resource1974=IDD_CONNECT (Unknown language: 0xD +Resource1975=IDD_CONNECT (Unknown language: 0xD +Resource1976=IDD_CONNECT (Unknown language: 0xD +Resource1977=IDD_CONNECT (Unknown language: 0xD +Resource1978=IDD_CONNECT (Unknown language: 0xD +Resource1979=IDD_CONNECT (Unknown language: 0xD +Resource1980=IDD_CONNECT (Unknown language: 0xD +Resource1981=IDD_CONNECT (Unknown language: 0xD +Resource1982=IDD_CONNECT (Unknown language: 0xD +Resource1983=IDD_CONNECT (Unknown language: 0xD +Resource1984=IDD_CONNECT (Unknown language: 0xD +Resource1985=IDD_CONNECT (Unknown language: 0xD +Resource1986=IDD_CONNECT (Unknown language: 0xD +Resource1987=IDD_CONNECT (Unknown language: 0xD +Resource1988=IDD_CONNECT (Unknown language: 0xD +Resource1989=IDD_CONNECT (Unknown language: 0xD +Resource1990=IDD_CONNECT (Unknown language: 0xD +Resource1991=IDD_CONNECT (Unknown language: 0xD +Resource1992=IDD_CONNECT (Unknown language: 0xD +Resource1993=IDD_CONNECT (Unknown language: 0xD +Resource1994=IDD_CONNECT (Unknown language: 0xD +Resource1995=IDD_CONNECT (Unknown language: 0xD +Resource1996=IDD_CONNECT (Unknown language: 0xD +Resource1997=IDD_CONNECT (Unknown language: 0xD +Resource1998=IDD_CONNECT (Unknown language: 0xD +Resource1999=IDD_CONNECT (Unknown language: 0xD +Resource2000=IDD_CONNECT (Unknown language: 0xD +Resource2001=IDD_CONNECT (Unknown language: 0xD +Resource2002=IDD_CONNECT (Unknown language: 0xD +Resource2003=IDD_CONNECT (Unknown language: 0xD +Resource2004=IDD_CONNECT (Unknown language: 0xD +Resource2005=IDD_CONNECT (Unknown language: 0xD +Resource2006=IDD_CONNECT (Unknown language: 0xD +Resource2007=IDD_CONNECT (Unknown language: 0xD +Resource2008=IDD_CONNECT (Unknown language: 0xD +Resource2009=IDD_CONNECT (Unknown language: 0xD +Resource2010=IDD_CONNECT (Unknown language: 0xD +Resource2011=IDD_CONNECT (Unknown language: 0xD +Resource2012=IDD_CONNECT (Unknown language: 0xD +Resource2013=IDD_CONNECT (Unknown language: 0xD +Resource2014=IDD_CONNECT (Unknown language: 0xD +Resource2015=IDD_CONNECT (Unknown language: 0xD +Resource2016=IDD_CONNECT (Unknown language: 0xD +Resource2017=IDD_CONNECT (Unknown language: 0xD +Resource2018=IDD_CONNECT (Unknown language: 0xD +Resource2019=IDD_CONNECT (Unknown language: 0xD +Resource2020=IDD_CONNECT (Unknown language: 0xD +Resource2021=IDD_CONNECT (Unknown language: 0xD +Resource2022=IDD_CONNECT (Unknown language: 0xD +Resource2023=IDD_CONNECT (Unknown language: 0xD +Resource2024=IDD_CONNECT (Unknown language: 0xD +Resource2025=IDD_CONNECT (Unknown language: 0xD +Resource2026=IDD_CONNECT (Unknown language: 0xD +Resource2027=IDD_CONNECT (Unknown language: 0xD +Resource2028=IDD_CONNECT (Unknown language: 0xD +Resource2029=IDD_CONNECT (Unknown language: 0xD +Resource2030=IDD_CONNECT (Unknown language: 0xD +Resource2031=IDD_CONNECT (Unknown language: 0xD +Resource2032=IDD_CONNECT (Unknown language: 0xD +Resource2033=IDD_CONNECT (Unknown language: 0xD +Resource2034=IDD_CONNECT (Unknown language: 0xD +Resource2035=IDD_CONNECT (Unknown language: 0xD +Resource2036=IDD_CONNECT (Unknown language: 0xD +Resource2037=IDD_CONNECT (Unknown language: 0xD +Resource2038=IDD_CONNECT (Unknown language: 0xD +Resource2039=IDD_CONNECT (Unknown language: 0xD +Resource2040=IDD_CONNECT (Unknown language: 0xD +Resource2041=IDD_CONNECT (Unknown language: 0xD +Resource2042=IDD_CONNECT (Unknown language: 0xD +Resource2043=IDD_CONNECT (Unknown language: 0xD +Resource2044=IDD_CONNECT (Unknown language: 0xD +Resource2045=IDD_CONNECT (Unknown language: 0xD +Resource2046=IDD_CONNECT (Unknown language: 0xD +Resource2047=IDD_CONNECT (Unknown language: 0xD +Resource2048=IDD_CONNECT (Unknown language: 0xD +Resource2049=IDD_CONNECT (Unknown language: 0xD +Resource2050=IDD_CONNECT (Unknown language: 0xD +Resource2051=IDD_CONNECT (Unknown language: 0xD +Resource2052=IDD_CONNECT (Unknown language: 0xD +Resource2053=IDD_CONNECT (Unknown language: 0xD +Resource2054=IDD_CONNECT (Unknown language: 0xD +Resource2055=IDD_CONNECT (Unknown language: 0xD +Resource2056=IDD_CONNECT (Unknown language: 0xD +Resource2057=IDD_CONNECT (Unknown language: 0xD +Resource2058=IDD_CONNECT (Unknown language: 0xD +Resource2059=IDD_CONNECT (Unknown language: 0xD +Resource2060=IDD_CONNECT (Unknown language: 0xD +Resource2061=IDD_CONNECT (Unknown language: 0xD +Resource2062=IDD_CONNECT (Unknown language: 0xD +Resource2063=IDD_CONNECT (Unknown language: 0xD +Resource2064=IDD_CONNECT (Unknown language: 0xD +Resource2065=IDD_CONNECT (Unknown language: 0xD +Resource2066=IDD_CONNECT (Unknown language: 0xD +Resource2067=IDD_CONNECT (Unknown language: 0xD +Resource2068=IDD_CONNECT (Unknown language: 0xD +Resource2069=IDD_CONNECT (Unknown language: 0xD +Resource2070=IDD_CONNECT (Unknown language: 0xD +Resource2071=IDD_CONNECT (Unknown language: 0xD +Resource2072=IDD_CONNECT (Unknown language: 0xD +Resource2073=IDD_CONNECT (Unknown language: 0xD +Resource2074=IDD_CONNECT (Unknown language: 0xD +Resource2075=IDD_CONNECT (Unknown language: 0xD +Resource2076=IDD_CONNECT (Unknown language: 0xD +Resource2077=IDD_CONNECT (Unknown language: 0xD +Resource2078=IDD_CONNECT (Unknown language: 0xD +Resource2079=IDD_CONNECT (Unknown language: 0xD +Resource2080=IDD_CONNECT (Unknown language: 0xD +Resource2081=IDD_CONNECT (Unknown language: 0xD +Resource2082=IDD_CONNECT (Unknown language: 0xD +Resource2083=IDD_CONNECT (Unknown language: 0xD +Resource2084=IDD_CONNECT (Unknown language: 0xD +Resource2085=IDD_CONNECT (Unknown language: 0xD +Resource2086=IDD_CONNECT (Unknown language: 0xD +Resource2087=IDD_CONNECT (Unknown language: 0xD +Resource2088=IDD_CONNECT (Unknown language: 0xD +Resource2089=IDD_CONNECT (Unknown language: 0xD +Resource2090=IDD_CONNECT (Unknown language: 0xD +Resource2091=IDD_CONNECT (Unknown language: 0xD +Resource2092=IDD_CONNECT (Unknown language: 0xD +Resource2093=IDD_CONNECT (Unknown language: 0xD +Resource2094=IDD_CONNECT (Unknown language: 0xD +Resource2095=IDD_CONNECT (Unknown language: 0xD +Resource2096=IDD_CONNECT (Unknown language: 0xD +Resource2097=IDD_CONNECT (Unknown language: 0xD +Resource2098=IDD_CONNECT (Unknown language: 0xD +Resource2099=IDD_CONNECT (Unknown language: 0xD +Resource2100=IDD_CONNECT (Unknown language: 0xD +Resource2101=IDD_CONNECT (Unknown language: 0xD +Resource2102=IDD_CONNECT (Unknown language: 0xD +Resource2103=IDD_CONNECT (Unknown language: 0xD +Resource2104=IDD_CONNECT (Unknown language: 0xD +Resource2105=IDD_CONNECT (Unknown language: 0xD +Resource2106=IDD_CONNECT (Unknown language: 0xD +Resource2107=IDD_CONNECT (Unknown language: 0xD +Resource2108=IDD_CONNECT (Unknown language: 0xD +Resource2109=IDD_CONNECT (Unknown language: 0xD +Resource2110=IDD_CONNECT (Unknown language: 0xD +Resource2111=IDD_CONNECT (Unknown language: 0xD +Resource2112=IDD_CONNECT (Unknown language: 0xD +Resource2113=IDD_CONNECT (Unknown language: 0xD +Resource2114=IDD_CONNECT (Unknown language: 0xD +Resource2115=IDD_CONNECT (Unknown language: 0xD +Resource2116=IDD_CONNECT (Unknown language: 0xD +Resource2117=IDD_CONNECT (Unknown language: 0xD +Resource2118=IDD_CONNECT (Unknown language: 0xD +Resource2119=IDD_CONNECT (Unknown language: 0xD +Resource2120=IDD_CONNECT (Unknown language: 0xD +Resource2121=IDD_CONNECT (Unknown language: 0xD +Resource2122=IDD_CONNECT (Unknown language: 0xD +Resource2123=IDD_CONNECT (Unknown language: 0xD +Resource2124=IDD_CONNECT (Unknown language: 0xD +Resource2125=IDD_CONNECT (Unknown language: 0xD +Resource2126=IDD_CONNECT (Unknown language: 0xD +Resource2127=IDD_CONNECT (Unknown language: 0xD +Resource2128=IDD_CONNECT (Unknown language: 0xD +Resource2129=IDD_CONNECT (Unknown language: 0xD +Resource2130=IDD_CONNECT (Unknown language: 0xD +Resource2131=IDD_CONNECT (Unknown language: 0xD +Resource2132=IDD_CONNECT (Unknown language: 0xD +Resource2133=IDD_CONNECT (Unknown language: 0xD +Resource2134=IDD_CONNECT (Unknown language: 0xD +Resource2135=IDD_CONNECT (Unknown language: 0xD +Resource2136=IDD_CONNECT (Unknown language: 0xD +Resource2137=IDD_CONNECT (Unknown language: 0xD +Resource2138=IDD_CONNECT (Unknown language: 0xD +Resource2139=IDD_CONNECT (Unknown language: 0xD +Resource2140=IDD_CONNECT (Unknown language: 0xD +Resource2141=IDD_CONNECT (Unknown language: 0xD +Resource2142=IDD_CONNECT (Unknown language: 0xD +Resource2143=IDD_CONNECT (Unknown language: 0xD +Resource2144=IDD_CONNECT (Unknown language: 0xD +Resource2145=IDD_CONNECT (Unknown language: 0xD +Resource2146=IDD_CONNECT (Unknown language: 0xD +Resource2147=IDD_CONNECT (Unknown language: 0xD +Resource2148=IDD_CONNECT (Unknown language: 0xD +Resource2149=IDD_CONNECT (Unknown language: 0xD +Resource2150=IDD_CONNECT (Unknown language: 0xD +Resource2151=IDD_CONNECT (Unknown language: 0xD +Resource2152=IDD_CONNECT (Unknown language: 0xD +Resource2153=IDD_CONNECT (Unknown language: 0xD +Resource2154=IDD_CONNECT (Unknown language: 0xD +Resource2155=IDD_CONNECT (Unknown language: 0xD +Resource2156=IDD_CONNECT (Unknown language: 0xD +Resource2157=IDD_CONNECT (Unknown language: 0xD +Resource2158=IDD_CONNECT (Unknown language: 0xD +Resource2159=IDD_CONNECT (Unknown language: 0xD +Resource2160=IDD_CONNECT (Unknown language: 0xD +Resource2161=IDD_CONNECT (Unknown language: 0xD +Resource2162=IDD_CONNECT (Unknown language: 0xD +Resource2163=IDD_CONNECT (Unknown language: 0xD +Resource2164=IDD_CONNECT (Unknown language: 0xD +Resource2165=IDD_CONNECT (Unknown language: 0xD +Resource2166=IDD_CONNECT (Unknown language: 0xD +Resource2167=IDD_CONNECT (Unknown language: 0xD +Resource2168=IDD_CONNECT (Unknown language: 0xD +Resource2169=IDD_CONNECT (Unknown language: 0xD +Resource2170=IDD_CONNECT (Unknown language: 0xD +Resource2171=IDD_CONNECT (Unknown language: 0xD +Resource2172=IDD_CONNECT (Unknown language: 0xD +Resource2173=IDD_CONNECT (Unknown language: 0xD +Resource2174=IDD_CONNECT (Unknown language: 0xD +Resource2175=IDD_CONNECT (Unknown language: 0xD +Resource2176=IDD_CONNECT (Unknown language: 0xD +Resource2177=IDD_CONNECT (Unknown language: 0xD +Resource2178=IDD_CONNECT (Unknown language: 0xD +Resource2179=IDD_CONNECT (Unknown language: 0xD +Resource2180=IDD_CONNECT (Unknown language: 0xD +Resource2181=IDD_CONNECT (Unknown language: 0xD +Resource2182=IDD_CONNECT (Unknown language: 0xD +Resource2183=IDD_CONNECT (Unknown language: 0xD +Resource2184=IDD_CONNECT (Unknown language: 0xD +Resource2185=IDD_CONNECT (Unknown language: 0xD +Resource2186=IDD_CONNECT (Unknown language: 0xD +Resource2187=IDD_CONNECT (Unknown language: 0xD +Resource2188=IDD_CONNECT (Unknown language: 0xD +Resource2189=IDD_CONNECT (Unknown language: 0xD +Resource2190=IDD_CONNECT (Unknown language: 0xD +Resource2191=IDD_CONNECT (Unknown language: 0xD +Resource2192=IDD_CONNECT (Unknown language: 0xD +Resource2193=IDD_CONNECT (Unknown language: 0xD +Resource2194=IDD_CONNECT (Unknown language: 0xD +Resource2195=IDD_CONNECT (Unknown language: 0xD +Resource2196=IDD_CONNECT (Unknown language: 0xD +Resource2197=IDD_CONNECT (Unknown language: 0xD +Resource2198=IDD_CONNECT (Unknown language: 0xD +Resource2199=IDD_CONNECT (Unknown language: 0xD +Resource2200=IDD_CONNECT (Unknown language: 0xD +Resource2201=IDD_CONNECT (Unknown language: 0xD +Resource2202=IDD_CONNECT (Unknown language: 0xD +Resource2203=IDD_CONNECT (Unknown language: 0xD +Resource2204=IDD_CONNECT (Unknown language: 0xD +Resource2205=IDD_CONNECT (Unknown language: 0xD +Resource2206=IDD_CONNECT (Unknown language: 0xD +Resource2207=IDD_CONNECT (Unknown language: 0xD +Resource2208=IDD_CONNECT (Unknown language: 0xD +Resource2209=IDD_CONNECT (Unknown language: 0xD +Resource2210=IDD_CONNECT (Unknown language: 0xD +Resource2211=IDD_CONNECT (Unknown language: 0xD +Resource2212=IDD_CONNECT (Unknown language: 0xD +Resource2213=IDD_CONNECT (Unknown language: 0xD +Resource2214=IDD_CONNECT (Unknown language: 0xD +Resource2215=IDD_CONNECT (Unknown language: 0xD +Resource2216=IDD_CONNECT (Unknown language: 0xD +Resource2217=IDD_CONNECT (Unknown language: 0xD +Resource2218=IDD_CONNECT (Unknown language: 0xD +Resource2219=IDD_CONNECT (Unknown language: 0xD +Resource2220=IDD_CONNECT (Unknown language: 0xD +Resource2221=IDD_CONNECT (Unknown language: 0xD +Resource2222=IDD_CONNECT (Unknown language: 0xD +Resource2223=IDD_CONNECT (Unknown language: 0xD +Resource2224=IDD_CONNECT (Unknown language: 0xD +Resource2225=IDD_CONNECT (Unknown language: 0xD +Resource2226=IDD_CONNECT (Unknown language: 0xD +Resource2227=IDD_CONNECT (Unknown language: 0xD +Resource2228=IDD_CONNECT (Unknown language: 0xD +Resource2229=IDD_CONNECT (Unknown language: 0xD +Resource2230=IDD_CONNECT (Unknown language: 0xD +Resource2231=IDD_CONNECT (Unknown language: 0xD +Resource2232=IDD_CONNECT (Unknown language: 0xD +Resource2233=IDD_CONNECT (Unknown language: 0xD +Resource2234=IDD_CONNECT (Unknown language: 0xD +Resource2235=IDD_CONNECT (Unknown language: 0xD +Resource2236=IDD_CONNECT (Unknown language: 0xD +Resource2237=IDD_CONNECT (Unknown language: 0xD +Resource2238=IDD_CONNECT (Unknown language: 0xD +Resource2239=IDD_CONNECT (Unknown language: 0xD +Resource2240=IDD_CONNECT (Unknown language: 0xD +Resource2241=IDD_CONNECT (Unknown language: 0xD +Resource2242=IDD_CONNECT (Unknown language: 0xD +Resource2243=IDD_CONNECT (Unknown language: 0xD +Resource2244=IDD_CONNECT (Unknown language: 0xD +Resource2245=IDD_CONNECT (Unknown language: 0xD +Resource2246=IDD_CONNECT (Unknown language: 0xD +Resource2247=IDD_CONNECT (Unknown language: 0xD +Resource2248=IDD_CONNECT (Unknown language: 0xD +Resource2249=IDD_CONNECT (Unknown language: 0xD +Resource2250=IDD_CONNECT (Unknown language: 0xD +Resource2251=IDD_CONNECT (Unknown language: 0xD +Resource2252=IDD_CONNECT (Unknown language: 0xD +Resource2253=IDD_CONNECT (Unknown language: 0xD +Resource2254=IDD_CONNECT (Unknown language: 0xD +Resource2255=IDD_CONNECT (Unknown language: 0xD +Resource2256=IDD_CONNECT (Unknown language: 0xD +Resource2257=IDD_CONNECT (Unknown language: 0xD +Resource2258=IDD_CONNECT (Unknown language: 0xD +Resource2259=IDD_CONNECT (Unknown language: 0xD +Resource2260=IDD_CONNECT (Unknown language: 0xD +Resource2261=IDD_CONNECT (Unknown language: 0xD +Resource2262=IDD_CONNECT (Unknown language: 0xD +Resource2263=IDD_CONNECT (Unknown language: 0xD +Resource2264=IDD_CONNECT (Unknown language: 0xD +Resource2265=IDD_CONNECT (Unknown language: 0xD +Resource2266=IDD_CONNECT (Unknown language: 0xD +Resource2267=IDD_CONNECT (Unknown language: 0xD +Resource2268=IDD_CONNECT (Unknown language: 0xD +Resource2269=IDD_CONNECT (Unknown language: 0xD +Resource2270=IDD_CONNECT (Unknown language: 0xD +Resource2271=IDD_CONNECT (Unknown language: 0xD +Resource2272=IDD_CONNECT (Unknown language: 0xD +Resource2273=IDD_CONNECT (Unknown language: 0xD +Resource2274=IDD_CONNECT (Unknown language: 0xD +Resource2275=IDD_CONNECT (Unknown language: 0xD +Resource2276=IDD_CONNECT (Unknown language: 0xD +Resource2277=IDD_CONNECT (Unknown language: 0xD +Resource2278=IDD_CONNECT (Unknown language: 0xD +Resource2279=IDD_CONNECT (Unknown language: 0xD +Resource2280=IDD_CONNECT (Unknown language: 0xD +Resource2281=IDD_CONNECT (Unknown language: 0xD +Resource2282=IDD_CONNECT (Unknown language: 0xD +Resource2283=IDD_CONNECT (Unknown language: 0xD +Resource2284=IDD_CONNECT (Unknown language: 0xD +Resource2285=IDD_CONNECT (Unknown language: 0xD +Resource2286=IDD_CONNECT (Unknown language: 0xD +Resource2287=IDD_CONNECT (Unknown language: 0xD +Resource2288=IDD_CONNECT (Unknown language: 0xD +Resource2289=IDD_CONNECT (Unknown language: 0xD +Resource2290=IDD_CONNECT (Unknown language: 0xD +Resource2291=IDD_CONNECT (Unknown language: 0xD +Resource2292=IDD_CONNECT (Unknown language: 0xD +Resource2293=IDD_CONNECT (Unknown language: 0xD +Resource2294=IDD_CONNECT (Unknown language: 0xD +Resource2295=IDD_CONNECT (Unknown language: 0xD +Resource2296=IDD_CONNECT (Unknown language: 0xD +Resource2297=IDD_CONNECT (Unknown language: 0xD +Resource2298=IDD_CONNECT (Unknown language: 0xD +Resource2299=IDD_CONNECT (Unknown language: 0xD +Resource2300=IDD_CONNECT (Unknown language: 0xD +Resource2301=IDD_CONNECT (Unknown language: 0xD +Resource2302=IDD_CONNECT (Unknown language: 0xD +Resource2303=IDD_CONNECT (Unknown language: 0xD +Resource2304=IDD_CONNECT (Unknown language: 0xD +Resource2305=IDD_CONNECT (Unknown language: 0xD +Resource2306=IDD_CONNECT (Unknown language: 0xD +Resource2307=IDD_CONNECT (Unknown language: 0xD +Resource2308=IDD_CONNECT (Unknown language: 0xD +Resource2309=IDD_CONNECT (Unknown language: 0xD +Resource2310=IDD_CONNECT (Unknown language: 0xD +Resource2311=IDD_CONNECT (Unknown language: 0xD +Resource2312=IDD_CONNECT (Unknown language: 0xD +Resource2313=IDD_CONNECT (Unknown language: 0xD +Resource2314=IDD_CONNECT (Unknown language: 0xD +Resource2315=IDD_CONNECT (Unknown language: 0xD +Resource2316=IDD_CONNECT (Unknown language: 0xD +Resource2317=IDD_CONNECT (Unknown language: 0xD +Resource2318=IDD_CONNECT (Unknown language: 0xD +Resource2319=IDD_CONNECT (Unknown language: 0xD +Resource2320=IDD_CONNECT (Unknown language: 0xD +Resource2321=IDD_CONNECT (Unknown language: 0xD +Resource2322=IDD_CONNECT (Unknown language: 0xD +Resource2323=IDD_CONNECT (Unknown language: 0xD +Resource2324=IDD_CONNECT (Unknown language: 0xD +Resource2325=IDD_CONNECT (Unknown language: 0xD +Resource2326=IDD_CONNECT (Unknown language: 0xD +Resource2327=IDD_CONNECT (Unknown language: 0xD +Resource2328=IDD_CONNECT (Unknown language: 0xD +Resource2329=IDD_CONNECT (Unknown language: 0xD +Resource2330=IDD_CONNECT (Unknown language: 0xD +Resource2331=IDD_CONNECT (Unknown language: 0xD +Resource2332=IDD_CONNECT (Unknown language: 0xD +Resource2333=IDD_CONNECT (Unknown language: 0xD +Resource2334=IDD_CONNECT (Unknown language: 0xD +Resource2335=IDD_CONNECT (Unknown language: 0xD +Resource2336=IDD_CONNECT (Unknown language: 0xD +Resource2337=IDD_CONNECT (Unknown language: 0xD +Resource2338=IDD_CONNECT (Unknown language: 0xD +Resource2339=IDD_CONNECT (Unknown language: 0xD +Resource2340=IDD_CONNECT (Unknown language: 0xD +Resource2341=IDD_CONNECT (Unknown language: 0xD +Resource2342=IDD_CONNECT (Unknown language: 0xD +Resource2343=IDD_CONNECT (Unknown language: 0xD +Resource2344=IDD_CONNECT (Unknown language: 0xD +Resource2345=IDD_CONNECT (Unknown language: 0xD +Resource2346=IDD_CONNECT (Unknown language: 0xD +Resource2347=IDD_CONNECT (Unknown language: 0xD +Resource2348=IDD_CONNECT (Unknown language: 0xD +Resource2349=IDD_CONNECT (Unknown language: 0xD +Resource2350=IDD_CONNECT (Unknown language: 0xD +Resource2351=IDD_CONNECT (Unknown language: 0xD +Resource2352=IDD_CONNECT (Unknown language: 0xD +Resource2353=IDD_CONNECT (Unknown language: 0xD +Resource2354=IDD_CONNECT (Unknown language: 0xD +Resource2355=IDD_CONNECT (Unknown language: 0xD +Resource2356=IDD_CONNECT (Unknown language: 0xD +Resource2357=IDD_CONNECT (Unknown language: 0xD +Resource2358=IDD_CONNECT (Unknown language: 0xD +Resource2359=IDD_CONNECT (Unknown language: 0xD +Resource2360=IDD_CONNECT (Unknown language: 0xD +Resource2361=IDD_CONNECT (Unknown language: 0xD +Resource2362=IDD_CONNECT (Unknown language: 0xD +Resource2363=IDD_CONNECT (Unknown language: 0xD +Resource2364=IDD_CONNECT (Unknown language: 0xD +Resource2365=IDD_CONNECT (Unknown language: 0xD +Resource2366=IDD_CONNECT (Unknown language: 0xD +Resource2367=IDD_CONNECT (Unknown language: 0xD +Resource2368=IDD_CONNECT (Unknown language: 0xD +Resource2369=IDD_CONNECT (Unknown language: 0xD +Resource2370=IDD_CONNECT (Unknown language: 0xD +Resource2371=IDD_CONNECT (Unknown language: 0xD +Resource2372=IDD_CONNECT (Unknown language: 0xD +Resource2373=IDD_CONNECT (Unknown language: 0xD +Resource2374=IDD_CONNECT (Unknown language: 0xD +Resource2375=IDD_CONNECT (Unknown language: 0xD +Resource2376=IDD_CONNECT (Unknown language: 0xD +Resource2377=IDD_CONNECT (Unknown language: 0xD +Resource2378=IDD_CONNECT (Unknown language: 0xD +Resource2379=IDD_CONNECT (Unknown language: 0xD +Resource2380=IDD_CONNECT (Unknown language: 0xD +Resource2381=IDD_CONNECT (Unknown language: 0xD +Resource2382=IDD_CONNECT (Unknown language: 0xD +Resource2383=IDD_CONNECT (Unknown language: 0xD +Resource2384=IDD_CONNECT (Unknown language: 0xD +Resource2385=IDD_CONNECT (Unknown language: 0xD +Resource2386=IDD_CONNECT (Unknown language: 0xD +Resource2387=IDD_CONNECT (Unknown language: 0xD +Resource2388=IDD_CONNECT (Unknown language: 0xD +Resource2389=IDD_CONNECT (Unknown language: 0xD +Resource2390=IDD_CONNECT (Unknown language: 0xD +Resource2391=IDD_CONNECT (Unknown language: 0xD +Resource2392=IDD_CONNECT (Unknown language: 0xD +Resource2393=IDD_CONNECT (Unknown language: 0xD +Resource2394=IDD_CONNECT (Unknown language: 0xD +Resource2395=IDD_CONNECT (Unknown language: 0xD +Resource2396=IDD_CONNECT (Unknown language: 0xD +Resource2397=IDD_CONNECT (Unknown language: 0xD +Resource2398=IDD_CONNECT (Unknown language: 0xD +Resource2399=IDD_CONNECT (Unknown language: 0xD +Resource2400=IDD_CONNECT (Unknown language: 0xD +Resource2401=IDD_CONNECT (Unknown language: 0xD +Resource2402=IDD_CONNECT (Unknown language: 0xD +Resource2403=IDD_CONNECT (Unknown language: 0xD +Resource2404=IDD_CONNECT (Unknown language: 0xD +Resource2405=IDD_CONNECT (Unknown language: 0xD +Resource2406=IDD_CONNECT (Unknown language: 0xD +Resource2407=IDD_CONNECT (Unknown language: 0xD +Resource2408=IDD_CONNECT (Unknown language: 0xD +Resource2409=IDD_CONNECT (Unknown language: 0xD +Resource2410=IDD_CONNECT (Unknown language: 0xD +Resource2411=IDD_CONNECT (Unknown language: 0xD +Resource2412=IDD_CONNECT (Unknown language: 0xD +Resource2413=IDD_CONNECT (Unknown language: 0xD +Resource2414=IDD_CONNECT (Unknown language: 0xD +Resource2415=IDD_CONNECT (Unknown language: 0xD +Resource2416=IDD_CONNECT (Unknown language: 0xD +Resource2417=IDD_CONNECT (Unknown language: 0xD +Resource2418=IDD_CONNECT (Unknown language: 0xD +Resource2419=IDD_CONNECT (Unknown language: 0xD +Resource2420=IDD_CONNECT (Unknown language: 0xD +Resource2421=IDD_CONNECT (Unknown language: 0xD +Resource2422=IDD_CONNECT (Unknown language: 0xD +Resource2423=IDD_CONNECT (Unknown language: 0xD +Resource2424=IDD_CONNECT (Unknown language: 0xD +Resource2425=IDD_CONNECT (Unknown language: 0xD +Resource2426=IDD_CONNECT (Unknown language: 0xD +Resource2427=IDD_CONNECT (Unknown language: 0xD +Resource2428=IDD_CONNECT (Unknown language: 0xD +Class7=CDirectoryDialog +Resource2429=IDD_CONNECT (Unknown language: 0xD +Resource2430=IDD_CONNECT (Unknown language: 0xD +Resource2431=IDD_CONNECT (Unknown language: 0xD +Resource2432=IDD_CONNECT (Unknown language: 0xD +Resource2433=IDD_CONNECT (Unknown language: 0xD +Resource2434=IDD_CONNECT (Unknown language: 0xD +Resource2435=IDD_CONNECT (Unknown language: 0xD +Resource2436=IDD_CONNECT (Unknown language: 0xD +Resource2437=IDD_CONNECT (Unknown language: 0xD +Resource2438=IDD_CONNECT (Unknown language: 0xD +Resource2439=IDD_CONNECT (Unknown language: 0xD +Resource2440=IDD_CONNECT (Unknown language: 0xD +Resource2441=IDD_CONNECT (Unknown language: 0xD +Resource2442=IDD_CONNECT (Unknown language: 0xD +Resource2443=IDD_CONNECT (Unknown language: 0xD +Resource2444=IDD_CONNECT (Unknown language: 0xD +Resource2445=IDD_CONNECT (Unknown language: 0xD +Resource2446=IDD_CONNECT (Unknown language: 0xD +Resource2447=IDD_CONNECT (Unknown language: 0xD +Resource2448=IDD_CONNECT (Unknown language: 0xD +Resource2449=IDD_CONNECT (Unknown language: 0xD +Resource2450=IDD_CONNECT (Unknown language: 0xD +Resource2451=IDD_CONNECT (Unknown language: 0xD +Resource2452=IDD_CONNECT (Unknown language: 0xD +Resource2453=IDD_CONNECT (Unknown language: 0xD +Resource2454=IDD_CONNECT (Unknown language: 0xD +Resource2455=IDD_CONNECT (Unknown language: 0xD +Resource2456=IDD_CONNECT (Unknown language: 0xD +Resource2457=IDD_CONNECT (Unknown language: 0xD +Resource2458=IDD_CONNECT (Unknown language: 0xD +Resource2459=IDD_CONNECT (Unknown language: 0xD +Resource2460=IDD_CONNECT (Unknown language: 0xD +Resource2461=IDD_CONNECT (Unknown language: 0xD +Resource2462=IDD_CONNECT (Unknown language: 0xD +Resource2463=IDD_CONNECT (Unknown language: 0xD +Resource2464=IDD_CONNECT (Unknown language: 0xD +Resource2465=IDD_CONNECT (Unknown language: 0xD +Resource2466=IDD_CONNECT (Unknown language: 0xD +Resource2467=IDD_CONNECT (Unknown language: 0xD +Resource2468=IDD_CONNECT (Unknown language: 0xD +Resource2469=IDD_CONNECT (Unknown language: 0xD +Resource2470=IDD_CONNECT (Unknown language: 0xD +Resource2471=IDD_CONNECT (Unknown language: 0xD +Resource2472=IDD_CONNECT (Unknown language: 0xD +Resource2473=IDD_CONNECT (Unknown language: 0xD +Resource2474=IDD_CONNECT (Unknown language: 0xD +Resource2475=IDD_CONNECT (Unknown language: 0xD +Resource2476=IDD_CONNECT (Unknown language: 0xD +Resource2477=IDD_CONNECT (Unknown language: 0xD +Resource2478=IDD_CONNECT (Unknown language: 0xD +Resource2479=IDD_CONNECT (Unknown language: 0xD +Resource2480=IDD_CONNECT (Unknown language: 0xD +Resource2481=IDD_CONNECT (Unknown language: 0xD +Resource2482=IDD_CONNECT (Unknown language: 0xD +Resource2483=IDD_CONNECT (Unknown language: 0xD +Resource2484=IDD_CONNECT (Unknown language: 0xD +Resource2485=IDD_CONNECT (Unknown language: 0xD +Resource2486=IDD_CONNECT (Unknown language: 0xD +Resource2487=IDD_CONNECT (Unknown language: 0xD +Resource2488=IDD_CONNECT (Unknown language: 0xD +Resource2489=IDD_CONNECT (Unknown language: 0xD +Resource2490=IDD_CONNECT (Unknown language: 0xD +Resource2491=IDD_CONNECT (Unknown language: 0xD +Resource2492=IDD_CONNECT (Unknown language: 0xD +Resource2493=IDD_CONNECT (Unknown language: 0xD +Resource2494=IDD_CONNECT (Unknown language: 0xD +Resource2495=IDD_CONNECT (Unknown language: 0xD +Resource2496=IDD_CONNECT (Unknown language: 0xD +Resource2497=IDD_CONNECT (Unknown language: 0xD +Resource2498=IDD_CONNECT (Unknown language: 0xD +Resource2499=IDD_CONNECT (Unknown language: 0xD +Resource2500=IDD_CONNECT (Unknown language: 0xD +Resource2501=IDD_CONNECT (Unknown language: 0xD +Resource2502=IDD_CONNECT (Unknown language: 0xD +Resource2503=IDD_CONNECT (Unknown language: 0xD +Resource2504=IDD_CONNECT (Unknown language: 0xD +Resource2505=IDD_CONNECT (Unknown language: 0xD +Resource2506=IDD_CONNECT (Unknown language: 0xD +Resource2507=IDD_CONNECT (Unknown language: 0xD +Resource2508=IDD_CONNECT (Unknown language: 0xD +Resource2509=IDD_CONNECT (Unknown language: 0xD +Resource2510=IDD_CONNECT (Unknown language: 0xD +Resource2511=IDD_CONNECT (Unknown language: 0xD +Resource2512=IDD_CONNECT (Unknown language: 0xD +Resource2513=IDD_CONNECT (Unknown language: 0xD +Resource2514=IDD_CONNECT (Unknown language: 0xD +Resource2515=IDD_CONNECT (Unknown language: 0xD +Resource2516=IDD_CONNECT (Unknown language: 0xD +Resource2517=IDD_CONNECT (Unknown language: 0xD +Resource2518=IDD_CONNECT (Unknown language: 0xD +Resource2519=IDD_CONNECT (Unknown language: 0xD +Resource2520=IDD_CONNECT (Unknown language: 0xD +Resource2521=IDD_CONNECT (Unknown language: 0xD +Resource2522=IDD_CONNECT (Unknown language: 0xD +Resource2523=IDD_CONNECT (Unknown language: 0xD +Resource2524=IDD_CONNECT (Unknown language: 0xD +Resource2525=IDD_CONNECT (Unknown language: 0xD +Resource2526=IDD_CONNECT (Unknown language: 0xD +Resource2527=IDD_CONNECT (Unknown language: 0xD +Resource2528=IDD_CONNECT (Unknown language: 0xD +Resource2529=IDD_CONNECT (Unknown language: 0xD +Resource2530=IDD_CONNECT (Unknown language: 0xD +Resource2531=IDD_CONNECT (Unknown language: 0xD +Resource2532=IDD_CONNECT (Unknown language: 0xD +Resource2533=IDD_CONNECT (Unknown language: 0xD +Resource2534=IDD_CONNECT (Unknown language: 0xD +Resource2535=IDD_CONNECT (Unknown language: 0xD +Resource2536=IDD_CONNECT (Unknown language: 0xD +Resource2537=IDD_CONNECT (Unknown language: 0xD +Resource2538=IDD_CONNECT (Unknown language: 0xD +Resource2539=IDD_CONNECT (Unknown language: 0xD +Resource2540=IDD_CONNECT (Unknown language: 0xD +Resource2541=IDD_CONNECT (Unknown language: 0xD +Resource2542=IDD_CONNECT (Unknown language: 0xD +Resource2543=IDD_CONNECT (Unknown language: 0xD +Resource2544=IDD_CONNECT (Unknown language: 0xD +Resource2545=IDD_CONNECT (Unknown language: 0xD +Resource2546=IDD_CONNECT (Unknown language: 0xD +Resource2547=IDD_CONNECT (Unknown language: 0xD +Resource2548=IDD_CONNECT (Unknown language: 0xD +Resource2549=IDD_CONNECT (Unknown language: 0xD +Resource2550=IDD_CONNECT (Unknown language: 0xD +Resource2551=IDD_CONNECT (Unknown language: 0xD +Resource2552=IDD_CONNECT (Unknown language: 0xD +Resource2553=IDD_CONNECT (Unknown language: 0xD +Resource2554=IDD_CONNECT (Unknown language: 0xD +Resource2555=IDD_CONNECT (Unknown language: 0xD +Resource2556=IDD_CONNECT (Unknown language: 0xD +Resource2557=IDD_CONNECT (Unknown language: 0xD +Resource2558=IDD_CONNECT (Unknown language: 0xD +Resource2559=IDD_CONNECT (Unknown language: 0xD +Resource2560=IDD_CONNECT (Unknown language: 0xD +Resource2561=IDD_CONNECT (Unknown language: 0xD +Resource2562=IDD_CONNECT (Unknown language: 0xD +Resource2563=IDD_CONNECT (Unknown language: 0xD +Resource2564=IDD_CONNECT (Unknown language: 0xD +Resource2565=IDD_CONNECT (Unknown language: 0xD +Resource2566=IDD_CONNECT (Unknown language: 0xD +Resource2567=IDD_CONNECT (Unknown language: 0xD +Resource2568=IDD_CONNECT (Unknown language: 0xD +Resource2569=IDD_CONNECT (Unknown language: 0xD +Resource2570=IDD_CONNECT (Unknown language: 0xD +Resource2571=IDD_CONNECT (Unknown language: 0xD +Resource2572=IDD_CONNECT (Unknown language: 0xD +Resource2573=IDD_CONNECT (Unknown language: 0xD +Resource2574=IDD_CONNECT (Unknown language: 0xD +Resource2575=IDD_CONNECT (Unknown language: 0xD +Resource2576=IDD_CONNECT (Unknown language: 0xD +Resource2577=IDD_CONNECT (Unknown language: 0xD +Resource2578=IDD_CONNECT (Unknown language: 0xD +Resource2579=IDD_CONNECT (Unknown language: 0xD +Resource2580=IDD_CONNECT (Unknown language: 0xD +Resource2581=IDD_CONNECT (Unknown language: 0xD +Resource2582=IDD_CONNECT (Unknown language: 0xD +Resource2583=IDD_CONNECT (Unknown language: 0xD +Resource2584=IDD_CONNECT (Unknown language: 0xD +Resource2585=IDD_CONNECT (Unknown language: 0xD +Resource2586=IDD_CONNECT (Unknown language: 0xD +Resource2587=IDD_CONNECT (Unknown language: 0xD +Resource2588=IDD_CONNECT (Unknown language: 0xD +Resource2589=IDD_CONNECT (Unknown language: 0xD +Resource2590=IDD_CONNECT (Unknown language: 0xD +Resource2591=IDD_CONNECT (Unknown language: 0xD +Resource2592=IDD_CONNECT (Unknown language: 0xD +Resource2593=IDD_CONNECT (Unknown language: 0xD +Resource2594=IDD_CONNECT (Unknown language: 0xD +Resource2595=IDD_CONNECT (Unknown language: 0xD +Resource2596=IDD_CONNECT (Unknown language: 0xD +Resource2597=IDD_CONNECT (Unknown language: 0xD +Resource2598=IDD_CONNECT (Unknown language: 0xD +Resource2599=IDD_CONNECT (Unknown language: 0xD +Resource2600=IDD_CONNECT (Unknown language: 0xD +Resource2601=IDD_CONNECT (Unknown language: 0xD +Resource2602=IDD_CONNECT (Unknown language: 0xD +Resource2603=IDD_CONNECT (Unknown language: 0xD +Resource2604=IDD_CONNECT (Unknown language: 0xD +Resource2605=IDD_CONNECT (Unknown language: 0xD +Resource2606=IDD_CONNECT (Unknown language: 0xD +Resource2607=IDD_CONNECT (Unknown language: 0xD +Resource2608=IDD_CONNECT (Unknown language: 0xD +Resource2609=IDD_CONNECT (Unknown language: 0xD +Resource2610=IDD_CONNECT (Unknown language: 0xD +Resource2611=IDD_CONNECT (Unknown language: 0xD +Resource2612=IDD_CONNECT (Unknown language: 0xD +Resource2613=IDD_CONNECT (Unknown language: 0xD +Resource2614=IDD_CONNECT (Unknown language: 0xD +Resource2615=IDD_CONNECT (Unknown language: 0xD +Resource2616=IDD_CONNECT (Unknown language: 0xD +Resource2617=IDD_CONNECT (Unknown language: 0xD +Resource2618=IDD_CONNECT (Unknown language: 0xD +Resource2619=IDD_CONNECT (Unknown language: 0xD +Resource2620=IDD_CONNECT (Unknown language: 0xD +Resource2621=IDD_CONNECT (Unknown language: 0xD +Resource2622=IDD_CONNECT (Unknown language: 0xD +Resource2623=IDD_CONNECT (Unknown language: 0xD +Resource2624=IDD_CONNECT (Unknown language: 0xD +Resource2625=IDD_CONNECT (Unknown language: 0xD +Resource2626=IDD_CONNECT (Unknown language: 0xD +Resource2627=IDD_CONNECT (Unknown language: 0xD +Resource2628=IDD_CONNECT (Unknown language: 0xD +Resource2629=IDD_CONNECT (Unknown language: 0xD +Resource2630=IDD_CONNECT (Unknown language: 0xD +Resource2631=IDD_CONNECT (Unknown language: 0xD +Resource2632=IDD_CONNECT (Unknown language: 0xD +Resource2633=IDD_CONNECT (Unknown language: 0xD +Resource2634=IDD_CONNECT (Unknown language: 0xD +Resource2635=IDD_CONNECT (Unknown language: 0xD +Resource2636=IDD_CONNECT (Unknown language: 0xD +Resource2637=IDD_CONNECT (Unknown language: 0xD +Resource2638=IDD_CONNECT (Unknown language: 0xD +Resource2639=IDD_CONNECT (Unknown language: 0xD +Resource2640=IDD_CONNECT (Unknown language: 0xD +Resource2641=IDD_CONNECT (Unknown language: 0xD +Resource2642=IDD_CONNECT (Unknown language: 0xD +Resource2643=IDD_CONNECT (Unknown language: 0xD +Resource2644=IDD_CONNECT (Unknown language: 0xD +Resource2645=IDD_CONNECT (Unknown language: 0xD +Resource2646=IDD_CONNECT (Unknown language: 0xD +Resource2647=IDD_CONNECT (Unknown language: 0xD +Resource2648=IDD_CONNECT (Unknown language: 0xD +Resource2649=IDD_CONNECT (Unknown language: 0xD +Resource2650=IDD_CONNECT (Unknown language: 0xD +Resource2651=IDD_CONNECT (Unknown language: 0xD +Resource2652=IDD_CONNECT (Unknown language: 0xD +Resource2653=IDD_CONNECT (Unknown language: 0xD +Resource2654=IDD_CONNECT (Unknown language: 0xD +Resource2655=IDD_CONNECT (Unknown language: 0xD +Resource2656=IDD_CONNECT (Unknown language: 0xD +Resource2657=IDD_CONNECT (Unknown language: 0xD +Resource2658=IDD_CONNECT (Unknown language: 0xD +Resource2659=IDD_CONNECT (Unknown language: 0xD +Resource2660=IDD_CONNECT (Unknown language: 0xD +Resource2661=IDD_CONNECT (Unknown language: 0xD +Resource2662=IDD_CONNECT (Unknown language: 0xD +Resource2663=IDD_CONNECT (Unknown language: 0xD +Resource2664=IDD_CONNECT (Unknown language: 0xD +Resource2665=IDD_CONNECT (Unknown language: 0xD +Resource2666=IDD_CONNECT (Unknown language: 0xD +Resource2667=IDD_CONNECT (Unknown language: 0xD +Resource2668=IDD_CONNECT (Unknown language: 0xD +Resource2669=IDD_CONNECT (Unknown language: 0xD +Resource2670=IDD_CONNECT (Unknown language: 0xD +Resource2671=IDD_CONNECT (Unknown language: 0xD +Resource2672=IDD_CONNECT (Unknown language: 0xD +Resource2673=IDD_CONNECT (Unknown language: 0xD +Resource2674=IDD_CONNECT (Unknown language: 0xD +Resource2675=IDD_CONNECT (Unknown language: 0xD +Resource2676=IDD_CONNECT (Unknown language: 0xD +Resource2677=IDD_CONNECT (Unknown language: 0xD +Resource2678=IDD_CONNECT (Unknown language: 0xD +Resource2679=IDD_CONNECT (Unknown language: 0xD +Resource2680=IDD_CONNECT (Unknown language: 0xD +Resource2681=IDD_CONNECT (Unknown language: 0xD +Resource2682=IDD_CONNECT (Unknown language: 0xD +Resource2683=IDD_CONNECT (Unknown language: 0xD +Resource2684=IDD_CONNECT (Unknown language: 0xD +Resource2685=IDD_CONNECT (Unknown language: 0xD +Resource2686=IDD_CONNECT (Unknown language: 0xD +Resource2687=IDD_CONNECT (Unknown language: 0xD +Resource2688=IDD_CONNECT (Unknown language: 0xD +Resource2689=IDD_CONNECT (Unknown language: 0xD +Resource2690=IDD_CONNECT (Unknown language: 0xD +Resource2691=IDD_CONNECT (Unknown language: 0xD +Resource2692=IDD_CONNECT (Unknown language: 0xD +Resource2693=IDD_CONNECT (Unknown language: 0xD +Resource2694=IDD_CONNECT (Unknown language: 0xD +Resource2695=IDD_CONNECT (Unknown language: 0xD +Resource2696=IDD_CONNECT (Unknown language: 0xD +Resource2697=IDD_CONNECT (Unknown language: 0xD +Resource2698=IDD_CONNECT (Unknown language: 0xD +Resource2699=IDD_CONNECT (Unknown language: 0xD +Resource2700=IDD_CONNECT (Unknown language: 0xD +Resource2701=IDD_CONNECT (Unknown language: 0xD +Resource2702=IDD_CONNECT (Unknown language: 0xD +Resource2703=IDD_CONNECT (Unknown language: 0xD +Resource2704=IDD_CONNECT (Unknown language: 0xD +Resource2705=IDD_CONNECT (Unknown language: 0xD +Resource2706=IDD_CONNECT (Unknown language: 0xD +Resource2707=IDD_CONNECT (Unknown language: 0xD +Resource2708=IDD_CONNECT (Unknown language: 0xD +Resource2709=IDD_CONNECT (Unknown language: 0xD +Resource2710=IDD_CONNECT (Unknown language: 0xD +Resource2711=IDD_CONNECT (Unknown language: 0xD +Resource2712=IDD_CONNECT (Unknown language: 0xD +Resource2713=IDD_CONNECT (Unknown language: 0xD +Resource2714=IDD_CONNECT (Unknown language: 0xD +Resource2715=IDD_CONNECT (Unknown language: 0xD +Resource2716=IDD_CONNECT (Unknown language: 0xD +Resource2717=IDD_CONNECT (Unknown language: 0xD +Resource2718=IDD_CONNECT (Unknown language: 0xD +Resource2719=IDD_CONNECT (Unknown language: 0xD +Resource2720=IDD_CONNECT (Unknown language: 0xD +Resource2721=IDD_CONNECT (Unknown language: 0xD +Resource2722=IDD_CONNECT (Unknown language: 0xD +Resource2723=IDD_CONNECT (Unknown language: 0xD +Resource2724=IDD_CONNECT (Unknown language: 0xD +Resource2725=IDD_CONNECT (Unknown language: 0xD +Resource2726=IDD_CONNECT (Unknown language: 0xD +Resource2727=IDD_CONNECT (Unknown language: 0xD +Resource2728=IDD_CONNECT (Unknown language: 0xD +Resource2729=IDD_CONNECT (Unknown language: 0xD +Resource2730=IDD_CONNECT (Unknown language: 0xD +Resource2731=IDD_CONNECT (Unknown language: 0xD +Resource2732=IDD_CONNECT (Unknown language: 0xD +Resource2733=IDD_CONNECT (Unknown language: 0xD +Resource2734=IDD_CONNECT (Unknown language: 0xD +Resource2735=IDD_CONNECT (Unknown language: 0xD +Resource2736=IDD_CONNECT (Unknown language: 0xD +Resource2737=IDD_CONNECT (Unknown language: 0xD +Resource2738=IDD_CONNECT (Unknown language: 0xD +Resource2739=IDD_CONNECT (Unknown language: 0xD +Resource2740=IDD_CONNECT (Unknown language: 0xD +Resource2741=IDD_CONNECT (Unknown language: 0xD +Resource2742=IDD_CONNECT (Unknown language: 0xD +Resource2743=IDD_CONNECT (Unknown language: 0xD +Resource2744=IDD_CONNECT (Unknown language: 0xD +Resource2745=IDD_CONNECT (Unknown language: 0xD +Resource2746=IDD_CONNECT (Unknown language: 0xD +Resource2747=IDD_CONNECT (Unknown language: 0xD +Resource2748=IDD_CONNECT (Unknown language: 0xD +Resource2749=IDD_CONNECT (Unknown language: 0xD +Resource2750=IDD_CONNECT (Unknown language: 0xD +Resource2751=IDD_CONNECT (Unknown language: 0xD +Resource2752=IDD_CONNECT (Unknown language: 0xD +Resource2753=IDD_CONNECT (Unknown language: 0xD +Resource2754=IDD_CONNECT (Unknown language: 0xD +Resource2755=IDD_CONNECT (Unknown language: 0xD +Resource2756=IDD_CONNECT (Unknown language: 0xD +Resource2757=IDD_CONNECT (Unknown language: 0xD +Resource2758=IDD_CONNECT (Unknown language: 0xD +Resource2759=IDD_CONNECT (Unknown language: 0xD +Resource2760=IDD_CONNECT (Unknown language: 0xD +Resource2761=IDD_CONNECT (Unknown language: 0xD +Resource2762=IDD_CONNECT (Unknown language: 0xD +Resource2763=IDD_CONNECT (Unknown language: 0xD +Resource2764=IDD_CONNECT (Unknown language: 0xD +Resource2765=IDD_CONNECT (Unknown language: 0xD +Resource2766=IDD_CONNECT (Unknown language: 0xD +Resource2767=IDD_CONNECT (Unknown language: 0xD +Resource2768=IDD_CONNECT (Unknown language: 0xD +Resource2769=IDD_CONNECT (Unknown language: 0xD +Resource2770=IDD_CONNECT (Unknown language: 0xD +Resource2771=IDD_CONNECT (Unknown language: 0xD +Resource2772=IDD_CONNECT (Unknown language: 0xD +Resource2773=IDD_CONNECT (Unknown language: 0xD +Resource2774=IDD_CONNECT (Unknown language: 0xD +Resource2775=IDD_CONNECT (Unknown language: 0xD +Resource2776=IDD_CONNECT (Unknown language: 0xD +Resource2777=IDD_CONNECT (Unknown language: 0xD +Resource2778=IDD_CONNECT (Unknown language: 0xD +Resource2779=IDD_CONNECT (Unknown language: 0xD +Resource2780=IDD_CONNECT (Unknown language: 0xD +Resource2781=IDD_CONNECT (Unknown language: 0xD +Resource2782=IDD_ABOUTBOX +Resource2783=IDD_SMLOBBY_DIALOG +Resource2784=IDD_FILEXFER +Resource2785=IDD_DIRECTORY +Resource2786=IDD_CONNECT (Unknown language: 0xD, 0x1) + +[CLS:CConnectDlg] +Type=0 +BaseClass=CDialog +HeaderFile=ConnectDlg.h +ImplementationFile=ConnectDlg.cpp + +[CLS:CEditChat] +Type=0 +BaseClass=CEdit +HeaderFile=EditChat.h +ImplementationFile=EditChat.cpp + +[CLS:CSmlobbyApp] +Type=0 +BaseClass=CWinApp +HeaderFile=smlobby.h +ImplementationFile=smlobby.cpp + +[CLS:CAboutDlg] +Type=0 +BaseClass=CDialog +HeaderFile=smlobbyDlg.cpp +ImplementationFile=smlobbyDlg.cpp +LastObject=CAboutDlg + +[CLS:CSmlobbyDlg] +Type=0 +BaseClass=CDialog +HeaderFile=smlobbyDlg.h +ImplementationFile=smlobbyDlg.cpp +LastObject=CSmlobbyDlg +Filter=D +VirtualFilter=dWC + +[DLG:IDD_CONNECT] +Type=1 +Class=CConnectDlg + +[DLG:IDD_ABOUTBOX] +Type=1 +Class=CAboutDlg +ControlCount=4 +Control1=IDC_STATIC,static,1342177283 +Control2=IDC_STATIC,static,1342308480 +Control3=IDC_STATIC,static,1342308352 +Control4=IDOK,button,1342373889 + +[DLG:IDD_SMLOBBY_DIALOG] +Type=1 +Class=CSmlobbyDlg +ControlCount=15 +Control1=IDC_EDIT_ENTRY,edit,1350631552 +Control2=IDC_STATIC,button,1342177287 +Control3=IDC_STATIC,button,1342177287 +Control4=IDC_LIST_GAMES,listbox,1352728835 +Control5=IDC_STATIC,button,1342177287 +Control6=IDC_EDIT_GAME_INFO,edit,1350631428 +Control7=IDC_STATIC,button,1342177287 +Control8=IDC_COMBO_MUSIC,combobox,1344340226 +Control9=IDC_STATIC,static,1342308352 +Control10=IDC_BUTTON_CREATE_GAME,button,1342242816 +Control11=IDC_LIST_USERS,listbox,1352728835 +Control12=IDC_EDIT_GAME_NAME,edit,1350631552 +Control13=IDC_STATIC,static,1342308352 +Control14=IDC_BUTTON_BEGIN_GAME,button,1342242816 +Control15=IDC_EDIT_CHAT_MESSAGES,edit,1352728644 + +[DLG:IDD_CONNECT (Unknown language: 0xD, 0x1)] +Type=1 +Class=? +ControlCount=16 +Control1=IDC_STATIC,static,1342308352 +Control2=IDC_SERVER,edit,1350631552 +Control3=IDC_STATIC,static,1342308352 +Control4=IDC_PORT,edit,1350639744 +Control5=IDC_STATIC,static,1342177296 +Control6=IDC_STATIC,static,1342308352 +Control7=IDC_NICK,edit,1350631552 +Control8=IDC_STATIC,static,1342308352 +Control9=IDC_USERID,edit,1350631552 +Control10=IDC_STATIC,static,1342308352 +Control11=IDC_FULLNAME,edit,1350631552 +Control12=IDC_STATIC,static,1342308352 +Control13=IDC_PASSWORD,edit,1350631552 +Control14=IDC_STATIC,static,1342177296 +Control15=IDOK,button,1342242817 +Control16=IDCANCEL,button,1342242816 + +[CLS:CSendFileDialog] +Type=0 +HeaderFile=SendFileDialog.h +ImplementationFile=SendFileDialog.cpp +BaseClass=CDialog +Filter=D +VirtualFilter=dWC +LastObject=CSendFileDialog + +[DLG:IDD_FILEXFER] +Type=1 +Class=CSendFileDialog +ControlCount=19 +Control1=IDCANCEL,button,1342242816 +Control2=IDC_STATIC,static,1342308352 +Control3=IDC_STATIC,static,1342308352 +Control4=IDC_STATIC,static,1342308352 +Control5=IDC_STATIC,static,1342308352 +Control6=IDC_TOFROM,static,1342308352 +Control7=IDC_PROGRESS1,msctls_progress32,1350565888 +Control8=IDC_SENTRECVD,static,1342308352 +Control9=IDC_STATIC,static,1342308352 +Control10=IDC_STATIC,static,1342308352 +Control11=IDC_STATIC,static,1342308352 +Control12=IDC_FILENAME,static,1342308352 +Control13=IDC_FILESIZE,static,1342308352 +Control14=IDC_FOLDERNAME,static,1342308352 +Control15=IDC_RECVRNAME,static,1342308352 +Control16=IDC_BYTESSENT,static,1342308352 +Control17=IDC_TIMELEFT,static,1342308352 +Control18=IDC_XFERRATE,static,1342308352 +Control19=IDC_XFERSTATUS,static,1342308352 + +[DLG:IDD_DIRECTORY] +Type=1 +Class=? +ControlCount=14 +Control1=1090,static,1342308352 +Control2=1152,edit,1350632576 +Control3=1120,listbox,1352732755 +Control4=65535,static,1342308352 +Control5=1088,static,1342308480 +Control6=1121,listbox,1352732755 +Control7=1089,static,1342308352 +Control8=1136,combobox,1352728643 +Control9=1091,static,1342308352 +Control10=1137,combobox,1352729427 +Control11=IDOK,button,1342373889 +Control12=IDCANCEL,button,1342373888 +Control13=1038,button,1342373888 +Control14=1040,button,1342373891 + +[CLS:CDirectoryDialog] +Type=0 +HeaderFile=DirectoryDialog.h +ImplementationFile=DirectoryDialog.cpp +BaseClass=CFileDialog +Filter=D +VirtualFilter=dWC +LastObject=CDirectoryDialog + diff --git a/stepmania/src/smlobby/smlobby.cpp b/stepmania/src/smlobby/smlobby.cpp new file mode 100644 index 0000000000..176ca1f146 --- /dev/null +++ b/stepmania/src/smlobby/smlobby.cpp @@ -0,0 +1,67 @@ +// smlobby.cpp : Defines the class behaviors for the application. +// + +#include "stdafx.h" +#include "smlobby.h" +#include "smlobbyDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +///////////////////////////////////////////////////////////////////////////// +// CSmlobbyApp + +BEGIN_MESSAGE_MAP(CSmlobbyApp, CWinApp) + //{{AFX_MSG_MAP(CSmlobbyApp) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG + ON_COMMAND(ID_HELP, CWinApp::OnHelp) +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CSmlobbyApp construction + +CSmlobbyApp::CSmlobbyApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only CSmlobbyApp object + +CSmlobbyApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CSmlobbyApp initialization + +BOOL CSmlobbyApp::InitInstance() +{ + // Standard initialization + // If you are not using these features and wish to reduce the size + // of your final executable, you should remove from the following + // the specific initialization routines you do not need. + +#ifdef _AFXDLL + Enable3dControls(); // Call this when using MFC in a shared DLL +#else + Enable3dControlsStatic(); // Call this when linking to MFC statically +#endif + + m_dlg = new CSmlobbyDlg(NULL); + m_pMainWnd = m_dlg; + + m_dlg->DoModal(); + + m_dlg->DestroyWindow(); + delete m_dlg; + + // Since the dialog has been closed, return FALSE so that we exit the + // application, rather than start the application's message pump. + return FALSE; + +} diff --git a/stepmania/src/smlobby/smlobby.dsp b/stepmania/src/smlobby/smlobby.dsp new file mode 100644 index 0000000000..188bae0303 --- /dev/null +++ b/stepmania/src/smlobby/smlobby.dsp @@ -0,0 +1,186 @@ +# Microsoft Developer Studio Project File - Name="smlobby" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Application" 0x0101 + +CFG=smlobby - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "smlobby.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "smlobby.mak" CFG="smlobby - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "smlobby - Win32 Release" (based on "Win32 (x86) Application") +!MESSAGE "smlobby - Win32 Debug" (based on "Win32 (x86) Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "smlobby - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 + +!ELSEIF "$(CFG)" == "smlobby - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "smlobby - Win32 Release" +# Name "smlobby - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\ConnectDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\CrossThreadsMessagingDevice.cpp +# End Source File +# Begin Source File + +SOURCE=.\DirectoryDialog.cpp +# End Source File +# Begin Source File + +SOURCE=.\EditChat.cpp +# End Source File +# Begin Source File + +SOURCE=.\irc.cpp +# End Source File +# Begin Source File + +SOURCE=.\SendFileDialog.cpp +# End Source File +# Begin Source File + +SOURCE=.\smlobby.cpp +# End Source File +# Begin Source File + +SOURCE=.\smlobby.rc +# End Source File +# Begin Source File + +SOURCE=.\smlobbyDlg.cpp +# End Source File +# Begin Source File + +SOURCE=.\socket.cpp +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\ConnectDlg.h +# End Source File +# Begin Source File + +SOURCE=.\CrossThreadsMessagingDevice.h +# End Source File +# Begin Source File + +SOURCE=.\DirectoryDialog.h +# End Source File +# Begin Source File + +SOURCE=.\EditChat.h +# End Source File +# Begin Source File + +SOURCE=.\irc.h +# End Source File +# Begin Source File + +SOURCE=.\SendFileDialog.h +# End Source File +# Begin Source File + +SOURCE=.\smlobby.h +# End Source File +# Begin Source File + +SOURCE=.\smlobbyDlg.h +# End Source File +# Begin Source File + +SOURCE=.\socket.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/stepmania/src/smlobby/smlobby.dsw b/stepmania/src/smlobby/smlobby.dsw new file mode 100644 index 0000000000..bd2ae194e1 --- /dev/null +++ b/stepmania/src/smlobby/smlobby.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "smlobby"=.\smlobby.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/stepmania/src/smlobby/smlobby.h b/stepmania/src/smlobby/smlobby.h new file mode 100644 index 0000000000..e278cfdf7d --- /dev/null +++ b/stepmania/src/smlobby/smlobby.h @@ -0,0 +1,54 @@ +// smlobby.h : main header file for the Smlobby application +// + +#if !defined(AFX_Smlobby_H__0D0E3C89_DD15_4558_AEA0_3711BD2EC0AA__INCLUDED_) +#define AFX_Smlobby_H__0D0E3C89_DD15_4558_AEA0_3711BD2EC0AA__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +#include "resource2.h" // main symbols + +#include "smlobbyDlg.h" + +///////////////////////////////////////////////////////////////////////////// +// CSmlobbyApp: +// See smlobby.cpp for the implementation of this class +// + +class CSmlobbyApp : public CWinApp +{ +private: + CSmlobbyDlg *m_dlg; + +public: + CSmlobbyApp(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CSmlobbyApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + +// Implementation + + //{{AFX_MSG(CSmlobbyApp) + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_Smlobby_H__0D0E3C89_DD15_4558_AEA0_3711BD2EC0AA__INCLUDED_) diff --git a/stepmania/src/smlobby/smlobby.ncb b/stepmania/src/smlobby/smlobby.ncb new file mode 100644 index 0000000000..954d0534b5 --- /dev/null +++ b/stepmania/src/smlobby/smlobby.ncb @@ -0,0 +1 @@ +Microsoft C/C++ program database 2.00 diff --git a/stepmania/src/smlobby/smlobby.opt b/stepmania/src/smlobby/smlobby.opt new file mode 100644 index 0000000000..4d3cb3d2eb Binary files /dev/null and b/stepmania/src/smlobby/smlobby.opt differ diff --git a/stepmania/src/smlobby/smlobby.rc b/stepmania/src/smlobby/smlobby.rc new file mode 100644 index 0000000000..de5dfbf9d4 --- /dev/null +++ b/stepmania/src/smlobby/smlobby.rc @@ -0,0 +1,329 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource2.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource2.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""res\\smlobby.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDR_MAINFRAME ICON DISCARDABLE "res\\smlobby.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_ABOUTBOX DIALOG DISCARDABLE 0, 0, 235, 55 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About smlobby" +FONT 8, "MS Sans Serif" +BEGIN + ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 + LTEXT "smlobby Version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX + LTEXT "Copyright (C) 2002",IDC_STATIC,40,25,119,8 + DEFPUSHBUTTON "OK",IDOK,178,7,50,14,WS_GROUP +END + +IDD_SMLOBBY_DIALOG DIALOGEX 0, 0, 464, 330 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_APPWINDOW +CAPTION "StepMania Lobby" +FONT 8, "MS Sans Serif", 0, 0, 0x1 +BEGIN + EDITTEXT IDC_EDIT_ENTRY,105,281,347,12,ES_AUTOHSCROLL + GROUPBOX "Chat",IDC_STATIC,5,140,453,160 + GROUPBOX "Waiting Games",IDC_STATIC,5,5,117,130 + LISTBOX IDC_LIST_GAMES,15,20,100,105,LBS_SORT | + LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Game Information",IDC_STATIC,143,5,107,130 + EDITTEXT IDC_EDIT_GAME_INFO,153,20,90,105,ES_MULTILINE + GROUPBOX "Create New Game",IDC_STATIC,271,5,185,130 + COMBOBOX IDC_COMBO_MUSIC,278,35,170,15,CBS_DROPDOWN | CBS_SORT | + WS_VSCROLL | WS_TABSTOP + LTEXT "Select Music:",IDC_STATIC,278,25,44,10 + PUSHBUTTON "Create Game",IDC_BUTTON_CREATE_GAME,338,100,56,20 + LISTBOX IDC_LIST_USERS,10,155,85,140,LBS_SORT | + LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_EDIT_GAME_NAME,277,70,171,15,ES_AUTOHSCROLL + LTEXT "Game Name:",IDC_STATIC,278,60,87,10 + PUSHBUTTON "Begin Game",IDC_BUTTON_BEGIN_GAME,213,305,49,20 + EDITTEXT IDC_EDIT_CHAT_MESSAGES,105,155,347,120,ES_MULTILINE | + ES_AUTOVSCROLL | WS_VSCROLL +END + +IDD_FILEXFER DIALOG DISCARDABLE 0, 0, 186, 173 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "File Transfer" +FONT 8, "MS Sans Serif" +BEGIN + PUSHBUTTON "Cancel",IDCANCEL,129,152,50,14 + LTEXT "Sending File",IDC_STATIC,7,7,41,9 + LTEXT "File:",IDC_STATIC,7,21,33,8 + LTEXT "Size:",IDC_STATIC,7,30,33,8 + LTEXT "Folder:",IDC_STATIC,7,40,33,8 + LTEXT "To:",IDC_TOFROM,7,49,33,8 + CONTROL "Progress1",IDC_PROGRESS1,"msctls_progress32",WS_BORDER, + 7,70,172,13 + LTEXT "Sent:",IDC_SENTRECVD,7,89,21,9 + LTEXT "Time left:",IDC_STATIC,7,98,33,8 + LTEXT "Rate:",IDC_STATIC,7,107,33,8 + LTEXT "Status:",IDC_STATIC,7,117,33,8 + LTEXT "",IDC_FILENAME,43,21,136,8 + LTEXT "",IDC_FILESIZE,43,30,136,8 + LTEXT "",IDC_FOLDERNAME,43,40,136,8 + LTEXT "",IDC_RECVRNAME,43,49,136,8 + LTEXT "",IDC_BYTESSENT,43,89,39,8 + LTEXT "",IDC_TIMELEFT,43,98,80,8 + LTEXT "",IDC_XFERRATE,43,107,71,8 + LTEXT "",IDC_XFERSTATUS,43,117,77,36 +END + +IDD_DIRECTORY DIALOG DISCARDABLE 109, 35, 165, 134 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Open" +FONT 8, "Helv" +BEGIN + LTEXT "File &Name:",1090,168,0,76,10 + EDITTEXT 1152,168,10,90,12,ES_AUTOHSCROLL | ES_OEMCONVERT + LISTBOX 1120,168,26,90,68,LBS_SORT | LBS_OWNERDRAWFIXED | + LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL | + WS_TABSTOP + LTEXT "&Directories:",-1,7,6,92,9 + LTEXT "",1088,7,18,92,9,SS_NOPREFIX + LISTBOX 1121,7,32,92,68,LBS_SORT | LBS_OWNERDRAWFIXED | + LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_VSCROLL | + WS_TABSTOP + LTEXT "List Files of &Type:",1089,168,98,90,9 + COMBOBOX 1136,168,108,90,36,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | + WS_BORDER | WS_VSCROLL | WS_TABSTOP + LTEXT "Dri&ves:",1091,7,104,92,9 + COMBOBOX 1137,7,114,92,68,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | + CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | + WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "OK",IDOK,105,6,50,14,WS_GROUP + PUSHBUTTON "Cancel",IDCANCEL,105,24,50,14,WS_GROUP + PUSHBUTTON "&Help",1038,105,46,50,14,WS_GROUP + CONTROL "&Read Only",1040,"Button",BS_AUTOCHECKBOX | WS_GROUP | + WS_TABSTOP,105,68,50,12 +END + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "\0" + VALUE "FileDescription", "smlobby MFC Application\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "smlobby\0" + VALUE "LegalCopyright", "Copyright (C) 2002\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "smlobby.EXE\0" + VALUE "ProductName", "smlobby Application\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_FILEXFER, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 179 + TOPMARGIN, 7 + BOTTOMMARGIN, 166 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ABOUTBOX "&About smlobby..." +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// Unknown language: 0xD, 0x1 resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_HEB) +#ifdef _WIN32 +LANGUAGE 0xD, 0x1 +#pragma code_page(1255) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_CONNECT DIALOG DISCARDABLE 0, 0, 185, 161 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Connect" +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "&Server",IDC_STATIC,7,9,22,8 + EDITTEXT IDC_SERVER,67,7,92,14,ES_AUTOHSCROLL + LTEXT "&Port",IDC_STATIC,7,26,14,8 + EDITTEXT IDC_PORT,67,24,54,14,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,46,171,1 + LTEXT "&Nick",IDC_STATIC,7,55,16,8 + EDITTEXT IDC_NICK,67,53,92,14,ES_AUTOHSCROLL + LTEXT "User &ID",IDC_STATIC,7,74,25,8 + EDITTEXT IDC_USERID,67,72,92,14,ES_AUTOHSCROLL + LTEXT "&Full Name",IDC_STATIC,7,92,32,8 + EDITTEXT IDC_FULLNAME,67,90,92,14,ES_AUTOHSCROLL + LTEXT "Pass&word",IDC_STATIC,7,111,32,8 + EDITTEXT IDC_PASSWORD,67,108,92,14,ES_AUTOHSCROLL + CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,131,171,1 + DEFPUSHBUTTON "Connect",IDOK,26,140,50,14 + PUSHBUTTON "Cancel",IDCANCEL,109,140,50,14 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_CONNECT, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 178 + TOPMARGIN, 7 + BOTTOMMARGIN, 154 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Unknown language: 0xD, 0x1 resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "res\smlobby.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/stepmania/src/smlobby/smlobbyDlg.cpp b/stepmania/src/smlobby/smlobbyDlg.cpp new file mode 100644 index 0000000000..8128f2a5a5 --- /dev/null +++ b/stepmania/src/smlobby/smlobbyDlg.cpp @@ -0,0 +1,628 @@ +// smlobbyDlg.cpp : implementation file +// + +#include "stdafx.h" +#include "smlobby.h" +#include "smlobbyDlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +#pragma comment(lib, "wsock32.lib") + + +#include "ConnectDlg.h" +#include "DirectoryDialog.h" + + +///////////////////////////////////////////////////////////////////////////// +// global objects +static const NetworkInit g_wsInit; +static const unsigned short FILE_XFER_RATE = 4096; + +irc::CIrcSession g_ircSession; + + +///////////////////////////////////////////////////////////////////////////// +// CAboutDlg dialog used for App About + +class CAboutDlg : public CDialog +{ +public: + CAboutDlg(); + +// Dialog Data + //{{AFX_DATA(CAboutDlg) + enum { IDD = IDD_ABOUTBOX }; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CAboutDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + //{{AFX_MSG(CAboutDlg) + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) +{ + //{{AFX_DATA_INIT(CAboutDlg) + //}}AFX_DATA_INIT +} + +void CAboutDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CAboutDlg) + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) + //{{AFX_MSG_MAP(CAboutDlg) + // No message handlers + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CSmlobbyDlg dialog + +CSmlobbyDlg::CSmlobbyDlg(CWnd* pParent /*=NULL*/) + : CDialog(CSmlobbyDlg::IDD, pParent), irc::CIrcDefaultMonitor(g_ircSession) +{ + //{{AFX_DATA_INIT(CSmlobbyDlg) + //}}AFX_DATA_INIT + // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 + m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); +} + +void CSmlobbyDlg::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CSmlobbyDlg) + DDX_Control(pDX, IDC_EDIT_GAME_NAME, m_editGameName); + DDX_Control(pDX, IDC_EDIT_GAME_INFO, m_editGameInfo); + DDX_Control(pDX, IDC_LIST_USERS, m_listUsers); + DDX_Control(pDX, IDC_EDIT_ENTRY, m_editEntry); + DDX_Control(pDX, IDC_EDIT_CHAT_MESSAGES, m_editChatMessages); + DDX_Control(pDX, IDC_LIST_GAMES, m_listGames); + //}}AFX_DATA_MAP +} + +BEGIN_MESSAGE_MAP(CSmlobbyDlg, CDialog) + //{{AFX_MSG_MAP(CSmlobbyDlg) + ON_WM_SYSCOMMAND() + ON_WM_QUERYDRAGICON() + ON_WM_PAINT() + ON_WM_DESTROY() + ON_LBN_DBLCLK(IDC_LIST_GAMES, OnDblclkListGames) + ON_LBN_SELCHANGE(IDC_LIST_GAMES, OnSelchangeListGames) + ON_BN_CLICKED(IDC_BUTTON_CREATE_GAME, OnButtonCreateGame) + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CSmlobbyDlg message handlers + +BOOL CSmlobbyDlg::OnInitDialog() +{ + CDialog::OnInitDialog(); + + //Tell windows we have no default push button + SetDefID(-1); + + // Add "About..." menu item to system menu. + + // IDM_ABOUTBOX must be in the system command range. + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != NULL) + { + CString strAboutMenu; + strAboutMenu.LoadString(IDS_ABOUTBOX); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + // Set the icon for this dialog. The framework does this automatically + // when the application's main window is not a dialog + SetIcon(m_hIcon, TRUE); // Set big icon + SetIcon(m_hIcon, FALSE); // Set small icon + + + //Add IRC reply call backs + IRC_MAP_ENTRY(CSmlobbyDlg, "JOIN", OnIrc_JOIN) + IRC_MAP_ENTRY(CSmlobbyDlg, "KICK", OnIrc_KICK) + IRC_MAP_ENTRY(CSmlobbyDlg, "MODE", OnIrc_MODE) + IRC_MAP_ENTRY(CSmlobbyDlg, "NICK", OnIrc_NICK) + IRC_MAP_ENTRY(CSmlobbyDlg, "PART", OnIrc_PART) + IRC_MAP_ENTRY(CSmlobbyDlg, "PRIVMSG", OnIrc_PRIVMSG) + IRC_MAP_ENTRY(CSmlobbyDlg, "002", OnIrc_YOURHOST) + IRC_MAP_ENTRY(CSmlobbyDlg, "321", OnIrc_RPL_LISTSTART) + IRC_MAP_ENTRY(CSmlobbyDlg, "322", OnIrc_RPL_LIST) + IRC_MAP_ENTRY(CSmlobbyDlg, "323", OnIrc_IgnoreMesg) //RPL_LISTEND + IRC_MAP_ENTRY(CSmlobbyDlg, "331", OnIrc_IgnoreMesg) //RPL_NOTOPIC + IRC_MAP_ENTRY(CSmlobbyDlg, "332", OnIrc_RPL_TOPIC) + IRC_MAP_ENTRY(CSmlobbyDlg, "353", OnIrc_RPL_NAMREPLY) + IRC_MAP_ENTRY(CSmlobbyDlg, "366", OnIrc_IgnoreMesg) //RPL_ENDOFNAMES + IRC_MAP_ENTRY(CSmlobbyDlg, "376", OnIrc_IgnoreMesg) //RPL_ENDOFMOTD + + + //Initialize IRC Server connection dialog + CConnectDlg dlg; + + dlg.m_sServer = _T("128.208.46.94"); + dlg.m_uiPort = 6667; + dlg.m_sNick = _T("smuser"); + dlg.m_sUserID = _T("vm"); + dlg.m_sFullName = _T("vm"); + + if( dlg.DoModal() != IDOK ) + return TRUE; + + // set this document object as the session's monitor + g_ircSession.AddMonitor(this); + + CIrcSessionInfo si; + si.sServer = dlg.m_sServer; + si.iPort = dlg.m_uiPort; + si.sNick = dlg.m_sNick; + si.sUserID = dlg.m_sUserID; + si.sFullName = dlg.m_sFullName; + si.sPassword = dlg.m_sPassword; + si.bIdentServer = true; + si.iIdentServerPort = 113; + si.sIdentServerType = "UNIX"; + si.sCurrentChatRoom = ""; + + bool m_bOk = g_ircSession.Connect(si); + if( !m_bOk ) + return FALSE; + + + return TRUE; // return TRUE unless you set the focus to a control +} + +void CSmlobbyDlg::OnSysCommand(UINT nID, LPARAM lParam) +{ + if ((nID & 0xFFF0) == IDM_ABOUTBOX) + { + CAboutDlg dlgAbout; + dlgAbout.DoModal(); + } + else + { + CDialog::OnSysCommand(nID, lParam); + } +} + +// If you add a minimize button to your dialog, you will need the code below +// to draw the icon. For MFC applications using the document/view model, +// this is automatically done for you by the framework. + +void CSmlobbyDlg::OnPaint() +{ + if (IsIconic()) + { + CPaintDC dc(this); // device context for painting + + SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); + + // Center icon in client rectangle + int cxIcon = GetSystemMetrics(SM_CXICON); + int cyIcon = GetSystemMetrics(SM_CYICON); + CRect rect; + GetClientRect(&rect); + int x = (rect.Width() - cxIcon + 1) / 2; + int y = (rect.Height() - cyIcon + 1) / 2; + + // Draw the icon + dc.DrawIcon(x, y, m_hIcon); + } + else + { + CDialog::OnPaint(); + } +} + +// The system calls this to obtain the cursor to display while the user drags +// the minimized window. +HCURSOR CSmlobbyDlg::OnQueryDragIcon() +{ + return (HCURSOR) m_hIcon; +} + + +bool CSmlobbyDlg::OnIrc_YOURHOST(const CIrcMessage* pmsg) +{ + CIrcDefaultMonitor::OnIrc_YOURHOST(pmsg); + + //query the server for a list of chat rooms + g_ircSession << irc::CIrcMessage(CString("list")); + + return false; +} + +bool CSmlobbyDlg::OnIrc_NICK(const CIrcMessage* pmsg) +{ + CIrcDefaultMonitor::OnIrc_NICK(pmsg); + + if( pmsg->prefix.sNick == m_session.GetInfo().sNick && (pmsg->parameters.size() > 0) ) + { + } + + return false; +} + +bool CSmlobbyDlg::OnIrc_PRIVMSG(const CIrcMessage* pmsg) +{ + //See if were being sent a DCC command + //STIL UNDER DEVELOPMENT! + //if (OnIrc_DCC_RECV(pmsg)) + // return true; + + UpdateChatMessages( pmsg ); + + return true; +} + +bool CSmlobbyDlg::OnIrc_DCC_RECV(const CIrcMessage *pmsg) +{ + //Make sure we have a parameter + if ( pmsg->parameters.size() < 1 ) + return false; + + //Make sure it's a DCC send + if ( std::string::npos == pmsg->parameters[1].find("\001DCC SEND") ) + return false; + + //Make sure we can read out the dcc send fields + const char* pszRawString = pmsg->parameters[1].c_str(); + char szFilename[256]; + unsigned long ulPartnerIP; + unsigned short uiPartnerPort; + unsigned long ulFileSize; + + if ( 4 != sscanf(pszRawString, "\001DCC SEND %255s %lu %u %lu", + &szFilename, &ulPartnerIP, &uiPartnerPort, &ulFileSize) ) + return false; + + //Open a dialog box so user can decide where to save file + CDirectoryDialog DirDlg(FALSE, NULL, NULL, OFN_SHOWHELP | OFN_HIDEREADONLY | + OFN_OVERWRITEPROMPT | OFN_ENABLETEMPLATE, NULL, + NULL); + DirDlg.m_ofn.hInstance = AfxGetInstanceHandle(); + DirDlg.m_ofn.lpTemplateName = MAKEINTRESOURCE(IDD_DIRECTORY); + + if ( IDOK != DirDlg.DoModal()) + return false; + + //We now have enough info to fire off a thread which downloads the file + CIrcDCCServer DCCServer; + CString filename(szFilename); + CString partner(pmsg->prefix.sNick.c_str()); + + //DCCServer.Start(filename, DirDlg.GetPathName(), partner, + // ulPartnerIP, uiPartnerPort, ulFileSize, FILE_XFER_RATE); + DCCServer.Start(filename, "C:", partner, + ulPartnerIP, uiPartnerPort, ulFileSize, FILE_XFER_RATE); + + return true; +} + +bool CSmlobbyDlg::OnIrc_JOIN(const CIrcMessage* pmsg) +{ + //Put update on message window + UpdateChatMessages( pmsg ); + + //Remember which chat room we joined + String chatRoomName(pmsg->parameters[0].c_str()); + g_ircSession.GetInfo().sCurrentChatRoom = chatRoomName; + + //query the server for a list of names in this room + g_ircSession << irc::CIrcMessage(CString("names ") + CString(chatRoomName.c_str())); + + //query the server for a list of rooms (could have changed) + g_ircSession << irc::CIrcMessage(CString("list")); + + return true; +} + +bool CSmlobbyDlg::OnIrc_PART(const CIrcMessage* pmsg) +{ + if( !pmsg->prefix.sNick.length() || pmsg->prefix.sNick == m_session.GetInfo().sNick ) + return false; + + //make sure to reset the names lists since were leaving current room + m_listUsers.ResetContent(); + + //forget which chat room we joined + g_ircSession.GetInfo().sCurrentChatRoom = ""; + + //query the server for a list of chat rooms + g_ircSession << irc::CIrcMessage(CString("list")); + + UpdateChatMessages( pmsg ); + + return true; +} + +bool CSmlobbyDlg::OnIrc_KICK(const CIrcMessage* pmsg) +{ + if( !pmsg->prefix.sNick.length() ) + return false; + + UpdateChatMessages( pmsg ); + + return true; +} + +bool CSmlobbyDlg::OnIrc_MODE(const CIrcMessage* pmsg) +{ + if( !pmsg->prefix.sNick.length() ) + return false; + if( pmsg->prefix.sNick == m_session.GetInfo().sNick ) + return false; + + UpdateChatMessages( pmsg ); + + return true; +} + +bool CSmlobbyDlg::OnIrc_RPL_LISTSTART(const CIrcMessage *pmsg) +{ + //Were going to be getting a new list of rooms + //so clear out the old ones + m_listGames.ResetContent(); + + return true; +} + +bool CSmlobbyDlg::OnIrc_RPL_LIST(const CIrcMessage *pmsg) +{ + //Add the current game to the list + //msg Format: " <# visible> :" + String name = pmsg->parameters[1] + " (" + pmsg->parameters[2] + ")"; + m_listGames.AddString(name.c_str()); + + return true; +} + +bool CSmlobbyDlg::OnIrc_RPL_TOPIC(const CIrcMessage *pmsg) +{ + //Clean out the game info box + m_editGameInfo.SetSel(0, -1); + m_editGameInfo.Clear(); + + //Put the info for a game up in the game info box + //msg Format: " :" + //topic format: "GameName\nserverIP\nServerIRCName\nSongHash" + std::vector vecGameParams; + const char* p1 = pmsg->parameters[2].c_str(); + const char* p2 = p1; + + //Extract all of the topic params + while( *p1 ) + { + // seek end of name + while( *p2 && *p2!=' ' ) p2++; + + //add name to the list + vecGameParams.push_back(String(p1, p2 - p1)); + + // eat white space + while( *p2 && *p2==' ' ) p2++; + p1 = p2; + } + + //somehow we lost some game info + if (vecGameParams.size() != 4) return false; + + //Display game info + m_editGameInfo.SetSel(-1, 0); + m_editGameInfo.ReplaceSel(("Game Name: " + vecGameParams[0] + "\n").c_str()); + m_editGameInfo.ReplaceSel(("Server IP: " + vecGameParams[1] + "\n").c_str()); + m_editGameInfo.ReplaceSel(("Host IRC Name: " + vecGameParams[2] + "\n").c_str()); + m_editGameInfo.ReplaceSel(("Song Hash: " + vecGameParams[3] + "\n").c_str()); + + return true; +} + +bool CSmlobbyDlg::OnIrc_RPL_NAMREPLY(const CIrcMessage *pmsg) +{ + //Reset the names list + m_listUsers.ResetContent(); + + //now dump all of the users into the user list + //msg format: " :[[@|+] [[@|+] [...]]]" + const char* p1 = pmsg->parameters[3].c_str(); + const char* p2 = p1; + + //keep trying to read off names while the list isn't null + while( *p1 ) + { + // seek end of name + while( *p2 && !isspace(*p2) ) p2++; + + //add name to the list + m_listUsers.AddString(String(p1, p2 - p1).c_str()); + + // eat white space + while( *p2 && isspace(*p2) ) p2++; + p1 = p2; + } + + return true; +} + +void CSmlobbyDlg::OnIrcDefault(const CIrcMessage* pmsg) +{ + CIrcDefaultMonitor::OnIrcDefault(pmsg); + + if( pmsg && m_session.GetInfo().sServerName.length() ) + { + UpdateChatMessages( pmsg ); + } +} + +void CSmlobbyDlg::OnIrcDisconnected() +{ + AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_FILE_CLOSE); +} + + +void CSmlobbyDlg::OnDestroy() +{ + CDialog::OnDestroy(); + + g_ircSession.Disconnect(); + g_ircSession.RemoveMonitor(this); + + //Close the parent application + AfxGetApp()->ExitInstance(); +} + + +void CSmlobbyDlg::UpdateChatMessages( const CIrcMessage* p ) +{ + if( p ) + { + m_editChatMessages.SetSel(-1, 0); + m_editChatMessages.SendMessage(EM_SCROLLCARET); + + #ifdef _DEBUG + m_editChatMessages.ReplaceSel((p->sCommand + " ").c_str()); + #endif + + if (p->sCommand == "NOTICE") + { + String param = p->parameters[1]; + + const char *c_param = param.c_str(); + p=p; + } + + if( p->prefix.sNick.length() ) + { + m_editChatMessages.ReplaceSel(("<" + p->prefix.sNick + "> ").c_str()); + } + + for(int i=1; i < p->parameters.size(); i++) + { + m_editChatMessages.ReplaceSel((p->parameters[i] + " ").c_str()); + } + m_editChatMessages.ReplaceSel("\r\n"); + } +} + + +void CSmlobbyDlg::OnDblclkListGames() +{ + //Get the game name that was currently selected + int nIndex = m_listGames.GetCurSel(); + CString strGameName; + + if (nIndex != LB_ERR) + { + m_listGames.GetText(nIndex, strGameName); + + //Tell the server that we wanted to join a chat room + g_ircSession << irc::CIrcMessage(CString("join ") + strGameName); + } +} + +void CSmlobbyDlg::OnSelchangeListGames() +{ + //Get the game name that was currently selected + int nIndex = m_listGames.GetCurSel(); + char szGameName[128]; + int nDummy; + + if (nIndex != LB_ERR) + { + m_listGames.GetText(nIndex, szGameName); + sscanf(szGameName, "%s (%d)", &szGameName, &nDummy); + + //Tell the server that we wanted to join a chat room + g_ircSession << irc::CIrcMessage(CString("topic ") + CString(szGameName)); + } +} + +void CSmlobbyDlg::OnButtonCreateGame() +{ + //Strip all non alphanumeric characters from the name + // so irc will be ok with it as a chat room name + CString gameName; + char szRawGameName[256]; + m_editGameName.GetLine(0, szRawGameName, 255); + + for (int i = 0; i < strlen(szRawGameName); i++) + { + if ( isalnum(szRawGameName[i]) ) + gameName += szRawGameName[i]; + } + + //Make sure user has given us a game name + if (gameName.GetLength() <= 0) + { + MessageBox("You need some letters or numbers in your name!"); + return; + } + + //Make sure no one else has this name + if (!IsUniqueGameName(gameName)) + { + MessageBox("Game already exists with that name!"); + return; + } + + //Tell the server that we wanted to create a chat room + g_ircSession << irc::CIrcMessage(CString("join ") + "#" + gameName); + + //Get the IP address of our machine + IPaddress ipaddr; + char szHostName[256]; + gethostname(szHostName, 256); + SDLNet_ResolveHost(&ipaddr, szHostName, 0); + unsigned char *ip = (unsigned char *)&(ipaddr.host); + char host_ip_str[20]; + sprintf(host_ip_str, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]); + + //Insert song name/hash code here + char songHash[12] = "0x00000000"; + + //Now tell the server our game info + g_ircSession << irc::CIrcMessage(CString("topic #") + gameName + CString(" :") + + gameName + CString(" ") + + CString(host_ip_str) + CString(" ") + + CString(g_ircSession.GetInfo().sNick.c_str()) + CString(" ") + + CString(songHash)); +} + +bool CSmlobbyDlg::IsUniqueGameName(const CString GameName) +{ + CString aName; + + //Search list of games to make sure ours is unique + for (int i = 0; i < m_listGames.GetCount(); i++) + { + m_listGames.GetText(i, aName); + if (aName == GameName) + return false; + } + + return true; +} diff --git a/stepmania/src/smlobby/smlobbyDlg.h b/stepmania/src/smlobby/smlobbyDlg.h new file mode 100644 index 0000000000..4549be748c --- /dev/null +++ b/stepmania/src/smlobby/smlobbyDlg.h @@ -0,0 +1,86 @@ +// smlobbyDlg.h : header file +// + +#if !defined(AFX_SmlobbyDLG_H__B8E7A228_8094_4516_894C_9E613B74B27F__INCLUDED_) +#define AFX_SmlobbyDLG_H__B8E7A228_8094_4516_894C_9E613B74B27F__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include "irc.h" +#include "EditChat.h" +#include + +using namespace irc; + +///////////////////////////////////////////////////////////////////////////// +// CSmlobbyDlg dialog + +class CSmlobbyDlg : public CDialog, public CIrcDefaultMonitor +{ +// Construction +public: + CSmlobbyDlg(CWnd* pParent = NULL); // standard constructor + +// Dialog Data + //{{AFX_DATA(CSmlobbyDlg) + enum { IDD = IDD_SMLOBBY_DIALOG }; + CEdit m_editGameName; + CEdit m_editGameInfo; + CListBox m_listUsers; + CEditChat m_editEntry; + CEdit m_editChatMessages; + CListBox m_listGames; + //}}AFX_DATA + + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CSmlobbyDlg) + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + //}}AFX_VIRTUAL + +// Implementation +protected: + HICON m_hIcon; + + // Generated message map functions + //{{AFX_MSG(CSmlobbyDlg) + afx_msg void OnSysCommand(UINT nID, LPARAM lParam); + afx_msg HCURSOR OnQueryDragIcon(); + virtual BOOL OnInitDialog(); + virtual void OnPaint(); + virtual void OnDestroy(); + afx_msg void OnDblclkListGames(); + afx_msg void OnSelchangeListGames(); + afx_msg void OnButtonCreateGame(); + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + + + bool OnIrc_YOURHOST(const CIrcMessage* pmsg); + bool OnIrc_NICK(const CIrcMessage* pmsg); + bool OnIrc_PRIVMSG(const CIrcMessage* pmsg); + bool OnIrc_JOIN(const CIrcMessage* pmsg); + bool OnIrc_PART(const CIrcMessage* pmsg); + bool OnIrc_KICK(const CIrcMessage* pmsg); + bool OnIrc_MODE(const CIrcMessage* pmsg); + bool OnIrc_RPL_LISTSTART(const CIrcMessage *pmsg); + bool OnIrc_RPL_LIST(const CIrcMessage *pmsg); + bool OnIrc_RPL_TOPIC(const CIrcMessage *pmsg); + bool OnIrc_RPL_NAMREPLY(const CIrcMessage *pmsg); + bool OnIrc_DCC_RECV(const CIrcMessage *pmsg); + bool OnIrc_IgnoreMesg(const CIrcMessage *pmsg) { return true; } + + virtual void OnIrcDefault(const CIrcMessage* pmsg); + virtual void OnIrcDisconnected(); + + void UpdateChatMessages( const CIrcMessage* p ); + + bool IsUniqueGameName(const CString GameName); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_SmlobbyDLG_H__B8E7A228_8094_4516_894C_9E613B74B27F__INCLUDED_) diff --git a/stepmania/src/smlobby/socket.cpp b/stepmania/src/smlobby/socket.cpp new file mode 100644 index 0000000000..dbea26db74 --- /dev/null +++ b/stepmania/src/smlobby/socket.cpp @@ -0,0 +1,127 @@ +// socket.cpp + +#include "StdAfx.h" +#include +#include "socket.h" + +////////////////////////////////////////////////////////////////////////// + +NetworkInit::NetworkInit() +{ + if (-1==SDL_Init(0)) + { + printf("SDL_Init: %s\n", SDL_GetError()); + exit(1); + } + + if (-1==SDLNet_Init()) + { + printf("SDLNet_Init: %s\n", SDLNet_GetError()); + exit(2); + } +} + +NetworkInit::~NetworkInit() +{ + SDLNet_Quit(); + SDL_Quit(); +} + +////////////////////////////////////////////////////////////////////////// + +InetAddr::InetAddr(short wPort) +{ + host = 0xFFFFFFFFL; + port = wPort; +} + +InetAddr::InetAddr(const char* lpszAddress, short wPort) +{ + Resolve(lpszAddress, wPort); +} + +InetAddr& InetAddr::operator = (char* lpszAddress) +{ + Resolve(lpszAddress); + return *this; +} + +void InetAddr::Resolve(const char* lpszAddress, short wPort) +{ + SDLNet_ResolveHost((IPaddress*)this, (char *)lpszAddress, wPort); +} + +////////////////////////////////////////////////////////////////////////// + +Socket::Socket() + : m_sock(NULL), m_bOwnSocket(false) +{ +} + +Socket::Socket(const Socket& s) + : m_sock(s.m_sock), m_bOwnSocket(false) +{ +} + +Socket::Socket(TCPsocket s) + : m_sock(s), m_bOwnSocket(false) +{ +} + +Socket::~Socket() +{ + if( m_bOwnSocket && m_sock != NULL ) + Close(); +} + +void Socket::Close() +{ + if (m_sock) SDLNet_TCP_Close(m_sock); + m_sock = NULL; +} + +bool Socket::Bind(const InetAddr& addr) +{ + m_bind_addr = addr; + return true; +} + +bool Socket::Connect(const InetAddr& ip) +{ + m_sock = SDLNet_TCP_Open((IPaddress *)&ip); + return m_sock != NULL; +} + +bool Socket::Listen() +{ + m_sock = SDLNet_TCP_Open((IPaddress *)&m_bind_addr); + return m_sock != NULL; +} + +Socket Socket::Accept() +{ + return Socket(SDLNet_TCP_Accept(m_sock)); +} + +int Socket::Send(const unsigned char* buf, int cbBuf) +{ + return SDLNet_TCP_Send(m_sock, (void *)buf, cbBuf); +} + +int Socket::Send(const char* fmt, ...) +{ + va_list marker; + va_start(marker, fmt); + + char szBuf[1024*4]; + vsprintf(szBuf, fmt, marker); + + va_end(marker); + + return Send((unsigned char*)szBuf, strlen(szBuf)); +} + +int Socket::Receive(unsigned char* buf, int cbBuf) +{ + return SDLNet_TCP_Recv(m_sock, (char*)buf, cbBuf); +} \ No newline at end of file diff --git a/stepmania/src/smlobby/socket.h b/stepmania/src/smlobby/socket.h new file mode 100644 index 0000000000..9d09dedee9 --- /dev/null +++ b/stepmania/src/smlobby/socket.h @@ -0,0 +1,71 @@ +// socket.h + +#ifndef SOCKET_H +#define SOCKET_H + +#pragma comment(lib, "sdl_net/lib/SDL.lib") +#pragma comment(lib, "sdl_net/lib/SDL_net.lib") + +#include "sdl_net/include/SDL_net.h" + +//HACK: SDL_net doesn't appear to have a way to get the host name +// which I need to resolve the machine's ip address +// (no. using "localhost" doesn't work. you'll get 127.0.0.1 @_@) +#ifdef WIN32 + //int FAR PASCAL gethostname(char FAR * name, int namelen); + #undef INADDR_ANY + #undef INADDR_NONE + #include +#elif UNIX + #include + #include +#endif + +class NetworkInit +{ +public : + NetworkInit(); + ~NetworkInit(); +}; + + +class InetAddr : public IPaddress +{ +public : + InetAddr(short wPort = 0); + InetAddr(const char* lpszAddress, short wPort = 0); + InetAddr& operator = (char* lpszAddress); + +protected : + void Resolve(const char* lpszAddress, short wPort = 0); +}; + +class Socket +{ +public : + Socket(); + Socket(TCPsocket s); + Socket(const Socket& s); + virtual ~Socket(); + + void Close(); + bool Bind(const InetAddr& addr); + bool Connect(const InetAddr& addr); + bool Listen(); + Socket Accept(); + int Send(const unsigned char* buf, int cbBuf); + int Send(const char* fmt, ...); + int Receive(unsigned char* buf, int cbBuf); + operator TCPsocket& () const { return (TCPsocket&)m_sock; } + operator bool() const { return m_sock != NULL; } + +protected: + InetAddr m_bind_addr; + TCPsocket m_sock; + +private : + bool m_bOwnSocket; +}; + + +#endif