changeset 85:ca74d41111f9 draft

First commit
author sirius-m <sirius-m@1a98c847-1fd6-4fd8-948a-caf3550aa51b>
date Sun, 30 Aug 2009 03:46:39 +0000
parents
children 78cf770387ab
files base58.h bignum.h db.cpp db.h headers.h irc.cpp irc.h key.h libeay32.dll license.txt main.cpp main.h makefile makefile.vc market.cpp market.h mingwm10.dll net.cpp net.h rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp readme.txt script.cpp script.h serialize.h sha.cpp sha.h ui.cpp ui.h ui.rc uibase.cpp uibase.h uint256.h uiproject.fbp util.cpp util.h
diffstat 45 files changed, 32239 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/base58.h
@@ -0,0 +1,201 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+
+//
+// Why base-58 instead of standard base-64 encoding?
+// - Don't want 0OIl characters that look the same in some fonts and
+//      could be used to create visually identical looking account numbers.
+// - A string with non-alphanumeric characters is not as easily accepted as an account number.
+// - E-mail usually won't line-break if there's no punctuation to break at.
+// - Doubleclicking selects the whole number as one word if it's all alphanumeric.
+//
+
+
+static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
+
+
+inline string EncodeBase58(const unsigned char* pbegin, const unsigned char* pend)
+{
+    CAutoBN_CTX pctx;
+    CBigNum bn58 = 58;
+    CBigNum bn0 = 0;
+
+    // Convert big endian data to little endian
+    // Extra zero at the end make sure bignum will interpret as a positive number
+    vector<unsigned char> vchTmp(pend-pbegin+1, 0);
+    reverse_copy(pbegin, pend, vchTmp.begin());
+
+    // Convert little endian data to bignum
+    CBigNum bn;
+    bn.setvch(vchTmp);
+
+    // Convert bignum to string
+    string str;
+    str.reserve((pend - pbegin) * 138 / 100 + 1);
+    CBigNum dv;
+    CBigNum rem;
+    while (bn > bn0)
+    {
+        if (!BN_div(&dv, &rem, &bn, &bn58, pctx))
+            throw bignum_error("EncodeBase58 : BN_div failed");
+        bn = dv;
+        unsigned int c = rem.getulong();
+        str += pszBase58[c];
+    }
+
+    // Leading zeroes encoded as base58 zeros
+    for (const unsigned char* p = pbegin; p < pend && *p == 0; p++)
+        str += pszBase58[0];
+
+    // Convert little endian string to big endian
+    reverse(str.begin(), str.end());
+    return str;
+}
+
+inline string EncodeBase58(const vector<unsigned char>& vch)
+{
+    return EncodeBase58(&vch[0], &vch[0] + vch.size());
+}
+
+inline bool DecodeBase58(const char* psz, vector<unsigned char>& vchRet)
+{
+    CAutoBN_CTX pctx;
+    vchRet.clear();
+    CBigNum bn58 = 58;
+    CBigNum bn = 0;
+    CBigNum bnChar;
+    while (isspace(*psz))
+        psz++;
+
+    // Convert big endian string to bignum
+    for (const char* p = psz; *p; p++)
+    {
+        const char* p1 = strchr(pszBase58, *p);
+        if (p1 == NULL)
+        {
+            while (isspace(*p))
+                p++;
+            if (*p != '\0')
+                return false;
+            break;
+        }
+        bnChar.setulong(p1 - pszBase58);
+        if (!BN_mul(&bn, &bn, &bn58, pctx))
+            throw bignum_error("DecodeBase58 : BN_mul failed");
+        bn += bnChar;
+    }
+
+    // Get bignum as little endian data
+    vector<unsigned char> vchTmp = bn.getvch();
+
+    // Trim off sign byte if present
+    if (vchTmp.size() >= 2 && vchTmp.end()[-1] == 0 && vchTmp.end()[-2] >= 0x80)
+        vchTmp.erase(vchTmp.end()-1);
+
+    // Restore leading zeros
+    int nLeadingZeros = 0;
+    for (const char* p = psz; *p == pszBase58[0]; p++)
+        nLeadingZeros++;
+    vchRet.assign(nLeadingZeros + vchTmp.size(), 0);
+
+    // Convert little endian data to big endian
+    reverse_copy(vchTmp.begin(), vchTmp.end(), vchRet.end() - vchTmp.size());
+    return true;
+}
+
+inline bool DecodeBase58(const string& str, vector<unsigned char>& vchRet)
+{
+    return DecodeBase58(str.c_str(), vchRet);
+}
+
+
+
+
+
+inline string EncodeBase58Check(const vector<unsigned char>& vchIn)
+{
+    // add 4-byte hash check to the end
+    vector<unsigned char> vch(vchIn);
+    uint256 hash = Hash(vch.begin(), vch.end());
+    vch.insert(vch.end(), (unsigned char*)&hash, (unsigned char*)&hash + 4);
+    return EncodeBase58(vch);
+}
+
+inline bool DecodeBase58Check(const char* psz, vector<unsigned char>& vchRet)
+{
+    if (!DecodeBase58(psz, vchRet))
+        return false;
+    if (vchRet.size() < 4)
+    {
+        vchRet.clear();
+        return false;
+    }
+    uint256 hash = Hash(vchRet.begin(), vchRet.end()-4);
+    if (memcmp(&hash, &vchRet.end()[-4], 4) != 0)
+    {
+        vchRet.clear();
+        return false;
+    }
+    vchRet.resize(vchRet.size()-4);
+    return true;
+}
+
+inline bool DecodeBase58Check(const string& str, vector<unsigned char>& vchRet)
+{
+    return DecodeBase58Check(str.c_str(), vchRet);
+}
+
+
+
+
+
+
+static const unsigned char ADDRESSVERSION = 0;
+
+inline string Hash160ToAddress(uint160 hash160)
+{
+    // add 1-byte version number to the front
+    vector<unsigned char> vch(1, ADDRESSVERSION);
+    vch.insert(vch.end(), UBEGIN(hash160), UEND(hash160));
+    return EncodeBase58Check(vch);
+}
+
+inline bool AddressToHash160(const char* psz, uint160& hash160Ret)
+{
+    vector<unsigned char> vch;
+    if (!DecodeBase58Check(psz, vch))
+        return false;
+    if (vch.empty())
+        return false;
+    unsigned char nVersion = vch[0];
+    if (vch.size() != sizeof(hash160Ret) + 1)
+        return false;
+    memcpy(&hash160Ret, &vch[1], sizeof(hash160Ret));
+    return (nVersion <= ADDRESSVERSION);
+}
+
+inline bool AddressToHash160(const string& str, uint160& hash160Ret)
+{
+    return AddressToHash160(str.c_str(), hash160Ret);
+}
+
+inline bool IsValidBitcoinAddress(const char* psz)
+{
+    uint160 hash160;
+    return AddressToHash160(psz, hash160);
+}
+
+inline bool IsValidBitcoinAddress(const string& str)
+{
+    return IsValidBitcoinAddress(str.c_str());
+}
+
+
+
+
+inline string PubKeyToAddress(const vector<unsigned char>& vchPubKey)
+{
+    return Hash160ToAddress(Hash160(vchPubKey));
+}
new file mode 100644
--- /dev/null
+++ b/bignum.h
@@ -0,0 +1,498 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include <stdexcept>
+#include <vector>
+#include <openssl/bn.h>
+
+
+
+
+
+class bignum_error : public std::runtime_error
+{
+public:
+    explicit bignum_error(const std::string& str) : std::runtime_error(str) {}
+};
+
+
+
+class CAutoBN_CTX
+{
+protected:
+    BN_CTX* pctx;
+    BN_CTX* operator=(BN_CTX* pnew) { return pctx = pnew; }
+
+public:
+    CAutoBN_CTX()
+    {
+        pctx = BN_CTX_new();
+        if (pctx == NULL)
+            throw bignum_error("CAutoBN_CTX : BN_CTX_new() returned NULL");
+    }
+
+    ~CAutoBN_CTX()
+    {
+        if (pctx != NULL)
+            BN_CTX_free(pctx);
+    }
+
+    operator BN_CTX*() { return pctx; }
+    BN_CTX& operator*() { return *pctx; }
+    BN_CTX** operator&() { return &pctx; }
+    bool operator!() { return (pctx == NULL); }
+};
+
+
+
+class CBigNum : public BIGNUM
+{
+public:
+    CBigNum()
+    {
+        BN_init(this);
+    }
+
+    CBigNum(const CBigNum& b)
+    {
+        BN_init(this);
+        if (!BN_copy(this, &b))
+        {
+            BN_clear_free(this);
+            throw bignum_error("CBigNum::CBigNum(const CBigNum&) : BN_copy failed");
+        }
+    }
+
+    explicit CBigNum(const std::string& str)
+    {
+        BN_init(this);
+        SetHex(str);
+    }
+
+    CBigNum& operator=(const CBigNum& b)
+    {
+        if (!BN_copy(this, &b))
+            throw bignum_error("CBigNum::operator= : BN_copy failed");
+        return (*this);
+    }
+
+    ~CBigNum()
+    {
+        BN_clear_free(this);
+    }
+
+    CBigNum(char n)             { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
+    CBigNum(short n)            { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
+    CBigNum(int n)              { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
+    CBigNum(long n)             { BN_init(this); if (n >= 0) setulong(n); else setint64(n); }
+    CBigNum(int64 n)            { BN_init(this); setint64(n); }
+    CBigNum(unsigned char n)    { BN_init(this); setulong(n); }
+    CBigNum(unsigned short n)   { BN_init(this); setulong(n); }
+    CBigNum(unsigned int n)     { BN_init(this); setulong(n); }
+    CBigNum(unsigned long n)    { BN_init(this); setulong(n); }
+    CBigNum(uint64 n)           { BN_init(this); setuint64(n); }
+    explicit CBigNum(uint256 n) { BN_init(this); setuint256(n); }
+
+    explicit CBigNum(const std::vector<unsigned char>& vch)
+    {
+        BN_init(this);
+        setvch(vch);
+    }
+
+    void setulong(unsigned long n)
+    {
+        if (!BN_set_word(this, n))
+            throw bignum_error("CBigNum conversion from unsigned long : BN_set_word failed");
+    }
+
+    unsigned long getulong() const
+    {
+        return BN_get_word(this);
+    }
+
+    unsigned int getuint() const
+    {
+        return BN_get_word(this);
+    }
+
+    int getint() const
+    {
+        unsigned long n = BN_get_word(this);
+        if (!BN_is_negative(this))
+            return (n > INT_MAX ? INT_MAX : n);
+        else
+            return (n > INT_MAX ? INT_MIN : -(int)n);
+    }
+
+    void setint64(int64 n)
+    {
+        unsigned char pch[sizeof(n) + 6];
+        unsigned char* p = pch + 4;
+        bool fNegative = false;
+        if (n < (int64)0)
+        {
+            n = -n;
+            fNegative = true;
+        }
+        bool fLeadingZeroes = true;
+        for (int i = 0; i < 8; i++)
+        {
+            unsigned char c = (n >> 56) & 0xff;
+            n <<= 8;
+            if (fLeadingZeroes)
+            {
+                if (c == 0)
+                    continue;
+                if (c & 0x80)
+                    *p++ = (fNegative ? 0x80 : 0);
+                else if (fNegative)
+                    c |= 0x80;
+                fLeadingZeroes = false;
+            }
+            *p++ = c;
+        }
+        unsigned int nSize = p - (pch + 4);
+        pch[0] = (nSize >> 24) & 0xff;
+        pch[1] = (nSize >> 16) & 0xff;
+        pch[2] = (nSize >> 8) & 0xff;
+        pch[3] = (nSize) & 0xff;
+        BN_mpi2bn(pch, p - pch, this);
+    }
+
+    void setuint64(uint64 n)
+    {
+        unsigned char pch[sizeof(n) + 6];
+        unsigned char* p = pch + 4;
+        bool fLeadingZeroes = true;
+        for (int i = 0; i < 8; i++)
+        {
+            unsigned char c = (n >> 56) & 0xff;
+            n <<= 8;
+            if (fLeadingZeroes)
+            {
+                if (c == 0)
+                    continue;
+                if (c & 0x80)
+                    *p++ = 0;
+                fLeadingZeroes = false;
+            }
+            *p++ = c;
+        }
+        unsigned int nSize = p - (pch + 4);
+        pch[0] = (nSize >> 24) & 0xff;
+        pch[1] = (nSize >> 16) & 0xff;
+        pch[2] = (nSize >> 8) & 0xff;
+        pch[3] = (nSize) & 0xff;
+        BN_mpi2bn(pch, p - pch, this);
+    }
+
+    void setuint256(uint256 n)
+    {
+        unsigned char pch[sizeof(n) + 6];
+        unsigned char* p = pch + 4;
+        bool fLeadingZeroes = true;
+        unsigned char* pbegin = (unsigned char*)&n;
+        unsigned char* psrc = pbegin + sizeof(n);
+        while (psrc != pbegin)
+        {
+            unsigned char c = *(--psrc);
+            if (fLeadingZeroes)
+            {
+                if (c == 0)
+                    continue;
+                if (c & 0x80)
+                    *p++ = 0;
+                fLeadingZeroes = false;
+            }
+            *p++ = c;
+        }
+        unsigned int nSize = p - (pch + 4);
+        pch[0] = (nSize >> 24) & 0xff;
+        pch[1] = (nSize >> 16) & 0xff;
+        pch[2] = (nSize >> 8) & 0xff;
+        pch[3] = (nSize >> 0) & 0xff;
+        BN_mpi2bn(pch, p - pch, this);
+    }
+
+    uint256 getuint256()
+    {
+        unsigned int nSize = BN_bn2mpi(this, NULL);
+        if (nSize < 4)
+            return 0;
+        std::vector<unsigned char> vch(nSize);
+        BN_bn2mpi(this, &vch[0]);
+        if (vch.size() > 4)
+            vch[4] &= 0x7f;
+        uint256 n = 0;
+        for (int i = 0, j = vch.size()-1; i < sizeof(n) && j >= 4; i++, j--)
+            ((unsigned char*)&n)[i] = vch[j];
+        return n;
+    }
+
+    void setvch(const std::vector<unsigned char>& vch)
+    {
+        std::vector<unsigned char> vch2(vch.size() + 4);
+        unsigned int nSize = vch.size();
+        vch2[0] = (nSize >> 24) & 0xff;
+        vch2[1] = (nSize >> 16) & 0xff;
+        vch2[2] = (nSize >> 8) & 0xff;
+        vch2[3] = (nSize >> 0) & 0xff;
+        reverse_copy(vch.begin(), vch.end(), vch2.begin() + 4);
+        BN_mpi2bn(&vch2[0], vch2.size(), this);
+    }
+
+    std::vector<unsigned char> getvch() const
+    {
+        unsigned int nSize = BN_bn2mpi(this, NULL);
+        if (nSize < 4)
+            return std::vector<unsigned char>();
+        std::vector<unsigned char> vch(nSize);
+        BN_bn2mpi(this, &vch[0]);
+        vch.erase(vch.begin(), vch.begin() + 4);
+        reverse(vch.begin(), vch.end());
+        return vch;
+    }
+
+    CBigNum& SetCompact(unsigned int nCompact)
+    {
+        unsigned int nSize = nCompact >> 24;
+        std::vector<unsigned char> vch(4 + nSize);
+        vch[3] = nSize;
+        if (nSize >= 1) vch[4] = (nCompact >> 16) & 0xff;
+        if (nSize >= 2) vch[5] = (nCompact >> 8) & 0xff;
+        if (nSize >= 3) vch[6] = (nCompact >> 0) & 0xff;
+        BN_mpi2bn(&vch[0], vch.size(), this);
+        return *this;
+    }
+
+    unsigned int GetCompact() const
+    {
+        unsigned int nSize = BN_bn2mpi(this, NULL);
+        std::vector<unsigned char> vch(nSize);
+        nSize -= 4;
+        BN_bn2mpi(this, &vch[0]);
+        unsigned int nCompact = nSize << 24;
+        if (nSize >= 1) nCompact |= (vch[4] << 16);
+        if (nSize >= 2) nCompact |= (vch[5] << 8);
+        if (nSize >= 3) nCompact |= (vch[6] << 0);
+        return nCompact;
+    }
+
+    void SetHex(const std::string& str)
+    {
+        // skip 0x
+        const char* psz = str.c_str();
+        while (isspace(*psz))
+            psz++;
+        bool fNegative = false;
+        if (*psz == '-')
+        {
+            fNegative = true;
+            psz++;
+        }
+        if (psz[0] == '0' && tolower(psz[1]) == 'x')
+            psz += 2;
+        while (isspace(*psz))
+            psz++;
+
+        // hex string to bignum
+        static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 };
+        *this = 0;
+        while (isxdigit(*psz))
+        {
+            *this <<= 4;
+            int n = phexdigit[*psz++];
+            *this += n;
+        }
+        if (fNegative)
+            *this = 0 - *this;
+    }
+
+    unsigned int GetSerializeSize(int nType=0, int nVersion=VERSION) const
+    {
+        return ::GetSerializeSize(getvch(), nType, nVersion);
+    }
+
+    template<typename Stream>
+    void Serialize(Stream& s, int nType=0, int nVersion=VERSION) const
+    {
+        ::Serialize(s, getvch(), nType, nVersion);
+    }
+
+    template<typename Stream>
+    void Unserialize(Stream& s, int nType=0, int nVersion=VERSION)
+    {
+        vector<unsigned char> vch;
+        ::Unserialize(s, vch, nType, nVersion);
+        setvch(vch);
+    }
+
+
+    bool operator!() const
+    {
+        return BN_is_zero(this);
+    }
+
+    CBigNum& operator+=(const CBigNum& b)
+    {
+        if (!BN_add(this, this, &b))
+            throw bignum_error("CBigNum::operator+= : BN_add failed");
+        return *this;
+    }
+
+    CBigNum& operator-=(const CBigNum& b)
+    {
+        *this = *this - b;
+        return *this;
+    }
+
+    CBigNum& operator*=(const CBigNum& b)
+    {
+        CAutoBN_CTX pctx;
+        if (!BN_mul(this, this, &b, pctx))
+            throw bignum_error("CBigNum::operator*= : BN_mul failed");
+        return *this;
+    }
+
+    CBigNum& operator/=(const CBigNum& b)
+    {
+        *this = *this / b;
+        return *this;
+    }
+
+    CBigNum& operator%=(const CBigNum& b)
+    {
+        *this = *this % b;
+        return *this;
+    }
+
+    CBigNum& operator<<=(unsigned int shift)
+    {
+        if (!BN_lshift(this, this, shift))
+            throw bignum_error("CBigNum:operator<<= : BN_lshift failed");
+        return *this;
+    }
+
+    CBigNum& operator>>=(unsigned int shift)
+    {
+        if (!BN_rshift(this, this, shift))
+            throw bignum_error("CBigNum:operator>>= : BN_rshift failed");
+        return *this;
+    }
+
+
+    CBigNum& operator++()
+    {
+        // prefix operator
+        if (!BN_add(this, this, BN_value_one()))
+            throw bignum_error("CBigNum::operator++ : BN_add failed");
+        return *this;
+    }
+
+    const CBigNum operator++(int)
+    {
+        // postfix operator
+        const CBigNum ret = *this;
+        ++(*this);
+        return ret;
+    }
+
+    CBigNum& operator--()
+    {
+        // prefix operator
+        CBigNum r;
+        if (!BN_sub(&r, this, BN_value_one()))
+            throw bignum_error("CBigNum::operator-- : BN_sub failed");
+        *this = r;
+        return *this;
+    }
+
+    const CBigNum operator--(int)
+    {
+        // postfix operator
+        const CBigNum ret = *this;
+        --(*this);
+        return ret;
+    }
+
+
+    friend inline const CBigNum operator-(const CBigNum& a, const CBigNum& b);
+    friend inline const CBigNum operator/(const CBigNum& a, const CBigNum& b);
+    friend inline const CBigNum operator%(const CBigNum& a, const CBigNum& b);
+};
+
+
+
+inline const CBigNum operator+(const CBigNum& a, const CBigNum& b)
+{
+    CBigNum r;
+    if (!BN_add(&r, &a, &b))
+        throw bignum_error("CBigNum::operator+ : BN_add failed");
+    return r;
+}
+
+inline const CBigNum operator-(const CBigNum& a, const CBigNum& b)
+{
+    CBigNum r;
+    if (!BN_sub(&r, &a, &b))
+        throw bignum_error("CBigNum::operator- : BN_sub failed");
+    return r;
+}
+
+inline const CBigNum operator-(const CBigNum& a)
+{
+    CBigNum r(a);
+    BN_set_negative(&r, !BN_is_negative(&r));
+    return r;
+}
+
+inline const CBigNum operator*(const CBigNum& a, const CBigNum& b)
+{
+    CAutoBN_CTX pctx;
+    CBigNum r;
+    if (!BN_mul(&r, &a, &b, pctx))
+        throw bignum_error("CBigNum::operator* : BN_mul failed");
+    return r;
+}
+
+inline const CBigNum operator/(const CBigNum& a, const CBigNum& b)
+{
+    CAutoBN_CTX pctx;
+    CBigNum r;
+    if (!BN_div(&r, NULL, &a, &b, pctx))
+        throw bignum_error("CBigNum::operator/ : BN_div failed");
+    return r;
+}
+
+inline const CBigNum operator%(const CBigNum& a, const CBigNum& b)
+{
+    CAutoBN_CTX pctx;
+    CBigNum r;
+    if (!BN_mod(&r, &a, &b, pctx))
+        throw bignum_error("CBigNum::operator% : BN_div failed");
+    return r;
+}
+
+inline const CBigNum operator<<(const CBigNum& a, unsigned int shift)
+{
+    CBigNum r;
+    if (!BN_lshift(&r, &a, shift))
+        throw bignum_error("CBigNum:operator<< : BN_lshift failed");
+    return r;
+}
+
+inline const CBigNum operator>>(const CBigNum& a, unsigned int shift)
+{
+    CBigNum r;
+    if (!BN_rshift(&r, &a, shift))
+        throw bignum_error("CBigNum:operator>> : BN_rshift failed");
+    return r;
+}
+
+inline bool operator==(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) == 0); }
+inline bool operator!=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) != 0); }
+inline bool operator<=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) <= 0); }
+inline bool operator>=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) >= 0); }
+inline bool operator<(const CBigNum& a, const CBigNum& b)  { return (BN_cmp(&a, &b) < 0); }
+inline bool operator>(const CBigNum& a, const CBigNum& b)  { return (BN_cmp(&a, &b) > 0); }
new file mode 100644
--- /dev/null
+++ b/db.cpp
@@ -0,0 +1,614 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include "headers.h"
+
+
+
+
+
+
+//
+// CDB
+//
+
+static CCriticalSection cs_db;
+static bool fDbEnvInit = false;
+DbEnv dbenv(0);
+static map<string, int> mapFileUseCount;
+
+class CDBInit
+{
+public:
+    CDBInit()
+    {
+    }
+    ~CDBInit()
+    {
+        if (fDbEnvInit)
+        {
+            dbenv.close(0);
+            fDbEnvInit = false;
+        }
+    }
+}
+instance_of_cdbinit;
+
+
+CDB::CDB(const char* pszFile, const char* pszMode, bool fTxn) : pdb(NULL)
+{
+    int ret;
+    if (pszFile == NULL)
+        return;
+
+    bool fCreate = strchr(pszMode, 'c');
+    bool fReadOnly = (!strchr(pszMode, '+') && !strchr(pszMode, 'w'));
+    unsigned int nFlags = DB_THREAD;
+    if (fCreate)
+        nFlags |= DB_CREATE;
+    else if (fReadOnly)
+        nFlags |= DB_RDONLY;
+    if (!fReadOnly || fTxn)
+        nFlags |= DB_AUTO_COMMIT;
+
+    CRITICAL_BLOCK(cs_db)
+    {
+        if (!fDbEnvInit)
+        {
+            string strAppDir = GetAppDir();
+            string strLogDir = strAppDir + "\\database";
+            _mkdir(strLogDir.c_str());
+            printf("dbenv.open strAppDir=%s\n", strAppDir.c_str());
+
+            dbenv.set_lg_dir(strLogDir.c_str());
+            dbenv.set_lg_max(10000000);
+            dbenv.set_lk_max_locks(10000);
+            dbenv.set_lk_max_objects(10000);
+            dbenv.set_errfile(fopen("db.log", "a")); /// debug
+            ///dbenv.log_set_config(DB_LOG_AUTO_REMOVE, 1); /// causes corruption
+            ret = dbenv.open(strAppDir.c_str(),
+                             DB_CREATE     |
+                             DB_INIT_LOCK  |
+                             DB_INIT_LOG   |
+                             DB_INIT_MPOOL |
+                             DB_INIT_TXN   |
+                             DB_THREAD     |
+                             DB_PRIVATE    |
+                             DB_RECOVER,
+                             0);
+            if (ret > 0)
+                throw runtime_error(strprintf("CDB() : error %d opening database environment\n", ret));
+            fDbEnvInit = true;
+        }
+
+        strFile = pszFile;
+        ++mapFileUseCount[strFile];
+    }
+
+    pdb = new Db(&dbenv, 0);
+
+    ret = pdb->open(NULL,      // Txn pointer
+                    pszFile,   // Filename
+                    "main",    // Logical db name
+                    DB_BTREE,  // Database type
+                    nFlags,    // Flags
+                    0);
+
+    if (ret > 0)
+    {
+        delete pdb;
+        pdb = NULL;
+        CRITICAL_BLOCK(cs_db)
+            --mapFileUseCount[strFile];
+        strFile = "";
+        throw runtime_error(strprintf("CDB() : can't open database file %s, error %d\n", pszFile, ret));
+    }
+
+    if (fCreate && !Exists(string("version")))
+        WriteVersion(VERSION);
+
+    RandAddSeed();
+}
+
+void CDB::Close()
+{
+    if (!pdb)
+        return;
+    if (!vTxn.empty())
+        vTxn.front()->abort();
+    vTxn.clear();
+    pdb->close(0);
+    delete pdb;
+    pdb = NULL;
+    dbenv.txn_checkpoint(0, 0, 0);
+
+    CRITICAL_BLOCK(cs_db)
+        --mapFileUseCount[strFile];
+
+    RandAddSeed();
+}
+
+void DBFlush(bool fShutdown)
+{
+    // Flush log data to the actual data file
+    //  on all files that are not in use
+    printf("DBFlush(%s)\n", fShutdown ? "true" : "false");
+    CRITICAL_BLOCK(cs_db)
+    {
+        dbenv.txn_checkpoint(0, 0, 0);
+        map<string, int>::iterator mi = mapFileUseCount.begin();
+        while (mi != mapFileUseCount.end())
+        {
+            string strFile = (*mi).first;
+            int nRefCount = (*mi).second;
+            if (nRefCount == 0)
+            {
+                dbenv.lsn_reset(strFile.c_str(), 0);
+                mapFileUseCount.erase(mi++);
+            }
+            else
+                mi++;
+        }
+        if (fShutdown)
+        {
+            char** listp;
+            if (mapFileUseCount.empty())
+                dbenv.log_archive(&listp, DB_ARCH_REMOVE);
+            dbenv.close(0);
+            fDbEnvInit = false;
+        }
+    }
+}
+
+
+
+
+
+
+//
+// CTxDB
+//
+
+bool CTxDB::ReadTxIndex(uint256 hash, CTxIndex& txindex)
+{
+    assert(!fClient);
+    txindex.SetNull();
+    return Read(make_pair(string("tx"), hash), txindex);
+}
+
+bool CTxDB::UpdateTxIndex(uint256 hash, const CTxIndex& txindex)
+{
+    assert(!fClient);
+    return Write(make_pair(string("tx"), hash), txindex);
+}
+
+bool CTxDB::AddTxIndex(const CTransaction& tx, const CDiskTxPos& pos, int nHeight)
+{
+    assert(!fClient);
+
+    // Add to tx index
+    uint256 hash = tx.GetHash();
+    CTxIndex txindex(pos, tx.vout.size());
+    return Write(make_pair(string("tx"), hash), txindex);
+}
+
+bool CTxDB::EraseTxIndex(const CTransaction& tx)
+{
+    assert(!fClient);
+    uint256 hash = tx.GetHash();
+
+    return Erase(make_pair(string("tx"), hash));
+}
+
+bool CTxDB::ContainsTx(uint256 hash)
+{
+    assert(!fClient);
+    return Exists(make_pair(string("tx"), hash));
+}
+
+bool CTxDB::ReadOwnerTxes(uint160 hash160, int nMinHeight, vector<CTransaction>& vtx)
+{
+    assert(!fClient);
+    vtx.clear();
+
+    // Get cursor
+    Dbc* pcursor = GetCursor();
+    if (!pcursor)
+        return false;
+
+    unsigned int fFlags = DB_SET_RANGE;
+    loop
+    {
+        // Read next record
+        CDataStream ssKey;
+        if (fFlags == DB_SET_RANGE)
+            ssKey << string("owner") << hash160 << CDiskTxPos(0, 0, 0);
+        CDataStream ssValue;
+        int ret = ReadAtCursor(pcursor, ssKey, ssValue, fFlags);
+        fFlags = DB_NEXT;
+        if (ret == DB_NOTFOUND)
+            break;
+        else if (ret != 0)
+            return false;
+
+        // Unserialize
+        string strType;
+        uint160 hashItem;
+        CDiskTxPos pos;
+        ssKey >> strType >> hashItem >> pos;
+        int nItemHeight;
+        ssValue >> nItemHeight;
+
+        // Read transaction
+        if (strType != "owner" || hashItem != hash160)
+            break;
+        if (nItemHeight >= nMinHeight)
+        {
+            vtx.resize(vtx.size()+1);
+            if (!vtx.back().ReadFromDisk(pos))
+                return false;
+        }
+    }
+    return true;
+}
+
+bool CTxDB::ReadDiskTx(uint256 hash, CTransaction& tx, CTxIndex& txindex)
+{
+    assert(!fClient);
+    tx.SetNull();
+    if (!ReadTxIndex(hash, txindex))
+        return false;
+    return (tx.ReadFromDisk(txindex.pos));
+}
+
+bool CTxDB::ReadDiskTx(uint256 hash, CTransaction& tx)
+{
+    CTxIndex txindex;
+    return ReadDiskTx(hash, tx, txindex);
+}
+
+bool CTxDB::ReadDiskTx(COutPoint outpoint, CTransaction& tx, CTxIndex& txindex)
+{
+    return ReadDiskTx(outpoint.hash, tx, txindex);
+}
+
+bool CTxDB::ReadDiskTx(COutPoint outpoint, CTransaction& tx)
+{
+    CTxIndex txindex;
+    return ReadDiskTx(outpoint.hash, tx, txindex);
+}
+
+bool CTxDB::WriteBlockIndex(const CDiskBlockIndex& blockindex)
+{
+    return Write(make_pair(string("blockindex"), blockindex.GetBlockHash()), blockindex);
+}
+
+bool CTxDB::EraseBlockIndex(uint256 hash)
+{
+    return Erase(make_pair(string("blockindex"), hash));
+}
+
+bool CTxDB::ReadHashBestChain(uint256& hashBestChain)
+{
+    return Read(string("hashBestChain"), hashBestChain);
+}
+
+bool CTxDB::WriteHashBestChain(uint256 hashBestChain)
+{
+    return Write(string("hashBestChain"), hashBestChain);
+}
+
+CBlockIndex* InsertBlockIndex(uint256 hash)
+{
+    if (hash == 0)
+        return NULL;
+
+    // Return existing
+    map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
+    if (mi != mapBlockIndex.end())
+        return (*mi).second;
+
+    // Create new
+    CBlockIndex* pindexNew = new CBlockIndex();
+    if (!pindexNew)
+        throw runtime_error("LoadBlockIndex() : new CBlockIndex failed");
+    mi = mapBlockIndex.insert(make_pair(hash, pindexNew)).first;
+    pindexNew->phashBlock = &((*mi).first);
+
+    return pindexNew;
+}
+
+bool CTxDB::LoadBlockIndex()
+{
+    // Get cursor
+    Dbc* pcursor = GetCursor();
+    if (!pcursor)
+        return false;
+
+    unsigned int fFlags = DB_SET_RANGE;
+    loop
+    {
+        // Read next record
+        CDataStream ssKey;
+        if (fFlags == DB_SET_RANGE)
+            ssKey << make_pair(string("blockindex"), uint256(0));
+        CDataStream ssValue;
+        int ret = ReadAtCursor(pcursor, ssKey, ssValue, fFlags);
+        fFlags = DB_NEXT;
+        if (ret == DB_NOTFOUND)
+            break;
+        else if (ret != 0)
+            return false;
+
+        // Unserialize
+        string strType;
+        ssKey >> strType;
+        if (strType == "blockindex")
+        {
+            CDiskBlockIndex diskindex;
+            ssValue >> diskindex;
+
+            // Construct block index object
+            CBlockIndex* pindexNew = InsertBlockIndex(diskindex.GetBlockHash());
+            pindexNew->pprev          = InsertBlockIndex(diskindex.hashPrev);
+            pindexNew->pnext          = InsertBlockIndex(diskindex.hashNext);
+            pindexNew->nFile          = diskindex.nFile;
+            pindexNew->nBlockPos      = diskindex.nBlockPos;
+            pindexNew->nHeight        = diskindex.nHeight;
+            pindexNew->nVersion       = diskindex.nVersion;
+            pindexNew->hashMerkleRoot = diskindex.hashMerkleRoot;
+            pindexNew->nTime          = diskindex.nTime;
+            pindexNew->nBits          = diskindex.nBits;
+            pindexNew->nNonce         = diskindex.nNonce;
+
+            // Watch for genesis block and best block
+            if (pindexGenesisBlock == NULL && diskindex.GetBlockHash() == hashGenesisBlock)
+                pindexGenesisBlock = pindexNew;
+        }
+        else
+        {
+            break;
+        }
+    }
+
+    if (!ReadHashBestChain(hashBestChain))
+    {
+        if (pindexGenesisBlock == NULL)
+            return true;
+        return error("CTxDB::LoadBlockIndex() : hashBestChain not found\n");
+    }
+
+    if (!mapBlockIndex.count(hashBestChain))
+        return error("CTxDB::LoadBlockIndex() : blockindex for hashBestChain not found\n");
+    pindexBest = mapBlockIndex[hashBestChain];
+    nBestHeight = pindexBest->nHeight;
+    printf("LoadBlockIndex(): hashBestChain=%s  height=%d\n", hashBestChain.ToString().substr(0,14).c_str(), nBestHeight);
+
+    return true;
+}
+
+
+
+
+
+//
+// CAddrDB
+//
+
+bool CAddrDB::WriteAddress(const CAddress& addr)
+{
+    return Write(make_pair(string("addr"), addr.GetKey()), addr);
+}
+
+bool CAddrDB::LoadAddresses()
+{
+    CRITICAL_BLOCK(cs_mapIRCAddresses)
+    CRITICAL_BLOCK(cs_mapAddresses)
+    {
+        // Load user provided addresses
+        CAutoFile filein = fopen("addr.txt", "rt");
+        if (filein)
+        {
+            try
+            {
+                char psz[1000];
+                while (fgets(psz, sizeof(psz), filein))
+                {
+                    CAddress addr(psz, NODE_NETWORK);
+                    if (addr.ip != 0)
+                    {
+                        AddAddress(*this, addr);
+                        mapIRCAddresses.insert(make_pair(addr.GetKey(), addr));
+                    }
+                }
+            }
+            catch (...) { }
+        }
+
+        // Get cursor
+        Dbc* pcursor = GetCursor();
+        if (!pcursor)
+            return false;
+
+        loop
+        {
+            // Read next record
+            CDataStream ssKey;
+            CDataStream ssValue;
+            int ret = ReadAtCursor(pcursor, ssKey, ssValue);
+            if (ret == DB_NOTFOUND)
+                break;
+            else if (ret != 0)
+                return false;
+
+            // Unserialize
+            string strType;
+            ssKey >> strType;
+            if (strType == "addr")
+            {
+                CAddress addr;
+                ssValue >> addr;
+                mapAddresses.insert(make_pair(addr.GetKey(), addr));
+            }
+        }
+
+        //// debug print
+        printf("mapAddresses:\n");
+        foreach(const PAIRTYPE(vector<unsigned char>, CAddress)& item, mapAddresses)
+            item.second.print();
+        printf("-----\n");
+
+        // Fix for possible bug that manifests in mapAddresses.count in irc.cpp,
+        // just need to call count here and it doesn't happen there.  The bug was the
+        // pack pragma in irc.cpp and has been fixed, but I'm not in a hurry to delete this.
+        mapAddresses.count(vector<unsigned char>(18));
+    }
+
+    return true;
+}
+
+bool LoadAddresses()
+{
+    return CAddrDB("cr+").LoadAddresses();
+}
+
+
+
+
+//
+// CReviewDB
+//
+
+bool CReviewDB::ReadReviews(uint256 hash, vector<CReview>& vReviews)
+{
+    vReviews.size(); // msvc workaround, just need to do anything with vReviews
+    return Read(make_pair(string("reviews"), hash), vReviews);
+}
+
+bool CReviewDB::WriteReviews(uint256 hash, const vector<CReview>& vReviews)
+{
+    return Write(make_pair(string("reviews"), hash), vReviews);
+}
+
+
+
+
+
+
+
+//
+// CWalletDB
+//
+
+bool CWalletDB::LoadWallet(vector<unsigned char>& vchDefaultKeyRet)
+{
+    vchDefaultKeyRet.clear();
+
+    //// todo: shouldn't we catch exceptions and try to recover and continue?
+    CRITICAL_BLOCK(cs_mapKeys)
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        // Get cursor
+        Dbc* pcursor = GetCursor();
+        if (!pcursor)
+            return false;
+
+        loop
+        {
+            // Read next record
+            CDataStream ssKey;
+            CDataStream ssValue;
+            int ret = ReadAtCursor(pcursor, ssKey, ssValue);
+            if (ret == DB_NOTFOUND)
+                break;
+            else if (ret != 0)
+                return false;
+
+            // Unserialize
+            // Taking advantage of the fact that pair serialization
+            // is just the two items serialized one after the other
+            string strType;
+            ssKey >> strType;
+            if (strType == "name")
+            {
+                string strAddress;
+                ssKey >> strAddress;
+                ssValue >> mapAddressBook[strAddress];
+            }
+            else if (strType == "tx")
+            {
+                uint256 hash;
+                ssKey >> hash;
+                CWalletTx& wtx = mapWallet[hash];
+                ssValue >> wtx;
+
+                if (wtx.GetHash() != hash)
+                    printf("Error in wallet.dat, hash mismatch\n");
+
+                //// debug print
+                //printf("LoadWallet  %s\n", wtx.GetHash().ToString().c_str());
+                //printf(" %12I64d  %s  %s  %s\n",
+                //    wtx.vout[0].nValue,
+                //    DateTimeStr(wtx.nTime).c_str(),
+                //    wtx.hashBlock.ToString().substr(0,14).c_str(),
+                //    wtx.mapValue["message"].c_str());
+            }
+            else if (strType == "key")
+            {
+                vector<unsigned char> vchPubKey;
+                ssKey >> vchPubKey;
+                CPrivKey vchPrivKey;
+                ssValue >> vchPrivKey;
+
+                mapKeys[vchPubKey] = vchPrivKey;
+                mapPubKeys[Hash160(vchPubKey)] = vchPubKey;
+            }
+            else if (strType == "defaultkey")
+            {
+                ssValue >> vchDefaultKeyRet;
+            }
+            else if (strType == "setting")  /// or settings or option or options or config?
+            {
+                string strKey;
+                ssKey >> strKey;
+                if (strKey == "fGenerateBitcoins")  ssValue >> fGenerateBitcoins;
+                if (strKey == "nTransactionFee")    ssValue >> nTransactionFee;
+                if (strKey == "addrIncoming")       ssValue >> addrIncoming;
+            }
+        }
+    }
+
+    printf("fGenerateBitcoins = %d\n", fGenerateBitcoins);
+    printf("nTransactionFee = %I64d\n", nTransactionFee);
+    printf("addrIncoming = %s\n", addrIncoming.ToString().c_str());
+
+    return true;
+}
+
+bool LoadWallet()
+{
+    vector<unsigned char> vchDefaultKey;
+    if (!CWalletDB("cr").LoadWallet(vchDefaultKey))
+        return false;
+
+    if (mapKeys.count(vchDefaultKey))
+    {
+        // Set keyUser
+        keyUser.SetPubKey(vchDefaultKey);
+        keyUser.SetPrivKey(mapKeys[vchDefaultKey]);
+    }
+    else
+    {
+        // Create new keyUser and set as default key
+        RandAddSeed(true);
+        keyUser.MakeNewKey();
+        if (!AddKey(keyUser))
+            return false;
+        if (!SetAddressBookName(PubKeyToAddress(keyUser.GetPubKey()), "Your Address"))
+            return false;
+        CWalletDB().WriteDefaultKey(keyUser.GetPubKey());
+    }
+
+    return true;
+}
new file mode 100644
--- /dev/null
+++ b/db.h
@@ -0,0 +1,420 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include <db_cxx.h>
+class CTransaction;
+class CTxIndex;
+class CDiskBlockIndex;
+class CDiskTxPos;
+class COutPoint;
+class CUser;
+class CReview;
+class CAddress;
+class CWalletTx;
+
+extern map<string, string> mapAddressBook;
+extern bool fClient;
+
+
+extern DbEnv dbenv;
+extern void DBFlush(bool fShutdown);
+
+
+
+
+class CDB
+{
+protected:
+    Db* pdb;
+    string strFile;
+    vector<DbTxn*> vTxn;
+
+    explicit CDB(const char* pszFile, const char* pszMode="r+", bool fTxn=false);
+    ~CDB() { Close(); }
+public:
+    void Close();
+private:
+    CDB(const CDB&);
+    void operator=(const CDB&);
+
+protected:
+    template<typename K, typename T>
+    bool Read(const K& key, T& value)
+    {
+        if (!pdb)
+            return false;
+
+        // Key
+        CDataStream ssKey(SER_DISK);
+        ssKey.reserve(1000);
+        ssKey << key;
+        Dbt datKey(&ssKey[0], ssKey.size());
+
+        // Read
+        Dbt datValue;
+        datValue.set_flags(DB_DBT_MALLOC);
+        int ret = pdb->get(GetTxn(), &datKey, &datValue, 0);
+        memset(datKey.get_data(), 0, datKey.get_size());
+        if (datValue.get_data() == NULL)
+            return false;
+
+        // Unserialize value
+        CDataStream ssValue((char*)datValue.get_data(), (char*)datValue.get_data() + datValue.get_size(), SER_DISK);
+        ssValue >> value;
+
+        // Clear and free memory
+        memset(datValue.get_data(), 0, datValue.get_size());
+        free(datValue.get_data());
+        return (ret == 0);
+    }
+
+    template<typename K, typename T>
+    bool Write(const K& key, const T& value, bool fOverwrite=true)
+    {
+        if (!pdb)
+            return false;
+
+        // Key
+        CDataStream ssKey(SER_DISK);
+        ssKey.reserve(1000);
+        ssKey << key;
+        Dbt datKey(&ssKey[0], ssKey.size());
+
+        // Value
+        CDataStream ssValue(SER_DISK);
+        ssValue.reserve(10000);
+        ssValue << value;
+        Dbt datValue(&ssValue[0], ssValue.size());
+
+        // Write
+        int ret = pdb->put(GetTxn(), &datKey, &datValue, (fOverwrite ? 0 : DB_NOOVERWRITE));
+
+        // Clear memory in case it was a private key
+        memset(datKey.get_data(), 0, datKey.get_size());
+        memset(datValue.get_data(), 0, datValue.get_size());
+        return (ret == 0);
+    }
+
+    template<typename K>
+    bool Erase(const K& key)
+    {
+        if (!pdb)
+            return false;
+
+        // Key
+        CDataStream ssKey(SER_DISK);
+        ssKey.reserve(1000);
+        ssKey << key;
+        Dbt datKey(&ssKey[0], ssKey.size());
+
+        // Erase
+        int ret = pdb->del(GetTxn(), &datKey, 0);
+
+        // Clear memory
+        memset(datKey.get_data(), 0, datKey.get_size());
+        return (ret == 0 || ret == DB_NOTFOUND);
+    }
+
+    template<typename K>
+    bool Exists(const K& key)
+    {
+        if (!pdb)
+            return false;
+
+        // Key
+        CDataStream ssKey(SER_DISK);
+        ssKey.reserve(1000);
+        ssKey << key;
+        Dbt datKey(&ssKey[0], ssKey.size());
+
+        // Exists
+        int ret = pdb->exists(GetTxn(), &datKey, 0);
+
+        // Clear memory
+        memset(datKey.get_data(), 0, datKey.get_size());
+        return (ret == 0);
+    }
+
+    Dbc* GetCursor()
+    {
+        if (!pdb)
+            return NULL;
+        Dbc* pcursor = NULL;
+        int ret = pdb->cursor(NULL, &pcursor, 0);
+        if (ret != 0)
+            return NULL;
+        return pcursor;
+    }
+
+    int ReadAtCursor(Dbc* pcursor, CDataStream& ssKey, CDataStream& ssValue, unsigned int fFlags=DB_NEXT)
+    {
+        // Read at cursor
+        Dbt datKey;
+        if (fFlags == DB_SET || fFlags == DB_SET_RANGE || fFlags == DB_GET_BOTH || fFlags == DB_GET_BOTH_RANGE)
+        {
+            datKey.set_data(&ssKey[0]);
+            datKey.set_size(ssKey.size());
+        }
+        Dbt datValue;
+        if (fFlags == DB_GET_BOTH || fFlags == DB_GET_BOTH_RANGE)
+        {
+            datValue.set_data(&ssValue[0]);
+            datValue.set_size(ssValue.size());
+        }
+        datKey.set_flags(DB_DBT_MALLOC);
+        datValue.set_flags(DB_DBT_MALLOC);
+        int ret = pcursor->get(&datKey, &datValue, fFlags);
+        if (ret != 0)
+            return ret;
+        else if (datKey.get_data() == NULL || datValue.get_data() == NULL)
+            return 99999;
+
+        // Convert to streams
+        ssKey.SetType(SER_DISK);
+        ssKey.clear();
+        ssKey.write((char*)datKey.get_data(), datKey.get_size());
+        ssValue.SetType(SER_DISK);
+        ssValue.clear();
+        ssValue.write((char*)datValue.get_data(), datValue.get_size());
+
+        // Clear and free memory
+        memset(datKey.get_data(), 0, datKey.get_size());
+        memset(datValue.get_data(), 0, datValue.get_size());
+        free(datKey.get_data());
+        free(datValue.get_data());
+        return 0;
+    }
+
+    DbTxn* GetTxn()
+    {
+        if (!vTxn.empty())
+            return vTxn.back();
+        else
+            return NULL;
+    }
+
+public:
+    bool TxnBegin()
+    {
+        if (!pdb)
+            return false;
+        DbTxn* ptxn = NULL;
+        int ret = dbenv.txn_begin(GetTxn(), &ptxn, 0);
+        if (!ptxn || ret != 0)
+            return false;
+        vTxn.push_back(ptxn);
+        return true;
+    }
+
+    bool TxnCommit()
+    {
+        if (!pdb)
+            return false;
+        if (vTxn.empty())
+            return false;
+        int ret = vTxn.back()->commit(0);
+        vTxn.pop_back();
+        return (ret == 0);
+    }
+
+    bool TxnAbort()
+    {
+        if (!pdb)
+            return false;
+        if (vTxn.empty())
+            return false;
+        int ret = vTxn.back()->abort();
+        vTxn.pop_back();
+        return (ret == 0);
+    }
+
+    bool ReadVersion(int& nVersion)
+    {
+        nVersion = 0;
+        return Read(string("version"), nVersion);
+    }
+
+    bool WriteVersion(int nVersion)
+    {
+        return Write(string("version"), nVersion);
+    }
+};
+
+
+
+
+
+
+
+
+class CTxDB : public CDB
+{
+public:
+    CTxDB(const char* pszMode="r+", bool fTxn=false) : CDB(!fClient ? "blkindex.dat" : NULL, pszMode, fTxn) { }
+private:
+    CTxDB(const CTxDB&);
+    void operator=(const CTxDB&);
+public:
+    bool ReadTxIndex(uint256 hash, CTxIndex& txindex);
+    bool UpdateTxIndex(uint256 hash, const CTxIndex& txindex);
+    bool AddTxIndex(const CTransaction& tx, const CDiskTxPos& pos, int nHeight);
+    bool EraseTxIndex(const CTransaction& tx);
+    bool ContainsTx(uint256 hash);
+    bool ReadOwnerTxes(uint160 hash160, int nHeight, vector<CTransaction>& vtx);
+    bool ReadDiskTx(uint256 hash, CTransaction& tx, CTxIndex& txindex);
+    bool ReadDiskTx(uint256 hash, CTransaction& tx);
+    bool ReadDiskTx(COutPoint outpoint, CTransaction& tx, CTxIndex& txindex);
+    bool ReadDiskTx(COutPoint outpoint, CTransaction& tx);
+    bool WriteBlockIndex(const CDiskBlockIndex& blockindex);
+    bool EraseBlockIndex(uint256 hash);
+    bool ReadHashBestChain(uint256& hashBestChain);
+    bool WriteHashBestChain(uint256 hashBestChain);
+    bool LoadBlockIndex();
+};
+
+
+
+
+
+class CReviewDB : public CDB
+{
+public:
+    CReviewDB(const char* pszMode="r+", bool fTxn=false) : CDB("reviews.dat", pszMode, fTxn) { }
+private:
+    CReviewDB(const CReviewDB&);
+    void operator=(const CReviewDB&);
+public:
+    bool ReadUser(uint256 hash, CUser& user)
+    {
+        return Read(make_pair(string("user"), hash), user);
+    }
+
+    bool WriteUser(uint256 hash, const CUser& user)
+    {
+        return Write(make_pair(string("user"), hash), user);
+    }
+
+    bool ReadReviews(uint256 hash, vector<CReview>& vReviews);
+    bool WriteReviews(uint256 hash, const vector<CReview>& vReviews);
+};
+
+
+
+
+
+class CMarketDB : public CDB
+{
+public:
+    CMarketDB(const char* pszMode="r+", bool fTxn=false) : CDB("market.dat", pszMode, fTxn) { }
+private:
+    CMarketDB(const CMarketDB&);
+    void operator=(const CMarketDB&);
+};
+
+
+
+
+
+class CAddrDB : public CDB
+{
+public:
+    CAddrDB(const char* pszMode="r+", bool fTxn=false) : CDB("addr.dat", pszMode, fTxn) { }
+private:
+    CAddrDB(const CAddrDB&);
+    void operator=(const CAddrDB&);
+public:
+    bool WriteAddress(const CAddress& addr);
+    bool LoadAddresses();
+};
+
+bool LoadAddresses();
+
+
+
+
+
+class CWalletDB : public CDB
+{
+public:
+    CWalletDB(const char* pszMode="r+", bool fTxn=false) : CDB("wallet.dat", pszMode, fTxn) { }
+private:
+    CWalletDB(const CWalletDB&);
+    void operator=(const CWalletDB&);
+public:
+    bool ReadName(const string& strAddress, string& strName)
+    {
+        strName = "";
+        return Read(make_pair(string("name"), strAddress), strName);
+    }
+
+    bool WriteName(const string& strAddress, const string& strName)
+    {
+        mapAddressBook[strAddress] = strName;
+        return Write(make_pair(string("name"), strAddress), strName);
+    }
+
+    bool EraseName(const string& strAddress)
+    {
+        mapAddressBook.erase(strAddress);
+        return Erase(make_pair(string("name"), strAddress));
+    }
+
+    bool ReadTx(uint256 hash, CWalletTx& wtx)
+    {
+        return Read(make_pair(string("tx"), hash), wtx);
+    }
+
+    bool WriteTx(uint256 hash, const CWalletTx& wtx)
+    {
+        return Write(make_pair(string("tx"), hash), wtx);
+    }
+
+    bool EraseTx(uint256 hash)
+    {
+        return Erase(make_pair(string("tx"), hash));
+    }
+
+    bool ReadKey(const vector<unsigned char>& vchPubKey, CPrivKey& vchPrivKey)
+    {
+        vchPrivKey.clear();
+        return Read(make_pair(string("key"), vchPubKey), vchPrivKey);
+    }
+
+    bool WriteKey(const vector<unsigned char>& vchPubKey, const CPrivKey& vchPrivKey)
+    {
+        return Write(make_pair(string("key"), vchPubKey), vchPrivKey, false);
+    }
+
+    bool ReadDefaultKey(vector<unsigned char>& vchPubKey)
+    {
+        vchPubKey.clear();
+        return Read(string("defaultkey"), vchPubKey);
+    }
+
+    bool WriteDefaultKey(const vector<unsigned char>& vchPubKey)
+    {
+        return Write(string("defaultkey"), vchPubKey);
+    }
+
+    template<typename T>
+    bool ReadSetting(const string& strKey, T& value)
+    {
+        return Read(make_pair(string("setting"), strKey), value);
+    }
+
+    template<typename T>
+    bool WriteSetting(const string& strKey, const T& value)
+    {
+        return Write(make_pair(string("setting"), strKey), value);
+    }
+
+    bool LoadWallet(vector<unsigned char>& vchDefaultKeyRet);
+};
+
+bool LoadWallet();
+
+inline bool SetAddressBookName(const string& strAddress, const string& strName)
+{
+    return CWalletDB().WriteName(strAddress, strName);
+}
new file mode 100644
--- /dev/null
+++ b/headers.h
@@ -0,0 +1,71 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#ifdef _MSC_VER
+#pragma warning(disable:4786)
+#pragma warning(disable:4804)
+#pragma warning(disable:4717)
+#endif
+#ifdef _WIN32_WINNT
+#undef _WIN32_WINNT
+#endif
+#define _WIN32_WINNT 0x0400
+#define WIN32_LEAN_AND_MEAN 1
+#include <wx/wx.h>
+#include <wx/clipbrd.h>
+#include <wx/snglinst.h>
+#include <openssl/ecdsa.h>
+#include <openssl/evp.h>
+#include <openssl/rand.h>
+#include <openssl/sha.h>
+#include <openssl/ripemd.h>
+#include <windows.h>
+#include <winsock2.h>
+#include <mswsock.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <io.h>
+#include <math.h>
+#include <limits.h>
+#include <float.h>
+#include <assert.h>
+#include <process.h>
+#include <malloc.h>
+#include <memory>
+#define BOUNDSCHECK 1
+#include <sstream>
+#include <string>
+#include <vector>
+#include <list>
+#include <deque>
+#include <map>
+#include <set>
+#include <algorithm>
+#include <numeric>
+#include <boost/foreach.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/tuple/tuple_comparison.hpp>
+#include <boost/tuple/tuple_io.hpp>
+#include <boost/array.hpp>
+#pragma hdrstop
+using namespace std;
+using namespace boost;
+
+
+
+#include "serialize.h"
+#include "uint256.h"
+#include "util.h"
+#include "key.h"
+#include "bignum.h"
+#include "base58.h"
+#include "script.h"
+#include "db.h"
+#include "net.h"
+#include "irc.h"
+#include "main.h"
+#include "market.h"
+#include "uibase.h"
+#include "ui.h"
new file mode 100644
--- /dev/null
+++ b/irc.cpp
@@ -0,0 +1,314 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include "headers.h"
+
+
+map<vector<unsigned char>, CAddress> mapIRCAddresses;
+CCriticalSection cs_mapIRCAddresses;
+
+
+
+
+#pragma pack(push, 1)
+struct ircaddr
+{
+    int ip;
+    short port;
+};
+#pragma pack(pop)
+
+string EncodeAddress(const CAddress& addr)
+{
+    struct ircaddr tmp;
+    tmp.ip    = addr.ip;
+    tmp.port  = addr.port;
+
+    vector<unsigned char> vch(UBEGIN(tmp), UEND(tmp));
+    return string("u") + EncodeBase58Check(vch);
+}
+
+bool DecodeAddress(string str, CAddress& addr)
+{
+    vector<unsigned char> vch;
+    if (!DecodeBase58Check(str.substr(1), vch))
+        return false;
+
+    struct ircaddr tmp;
+    if (vch.size() != sizeof(tmp))
+        return false;
+    memcpy(&tmp, &vch[0], sizeof(tmp));
+
+    addr  = CAddress(tmp.ip, tmp.port);
+    return true;
+}
+
+
+
+
+
+
+static bool Send(SOCKET hSocket, const char* pszSend)
+{
+    if (strstr(pszSend, "PONG") != pszSend)
+        printf("SENDING: %s\n", pszSend);
+    const char* psz = pszSend;
+    const char* pszEnd = psz + strlen(psz);
+    while (psz < pszEnd)
+    {
+        int ret = send(hSocket, psz, pszEnd - psz, 0);
+        if (ret < 0)
+            return false;
+        psz += ret;
+    }
+    return true;
+}
+
+bool RecvLine(SOCKET hSocket, string& strLine)
+{
+    strLine = "";
+    loop
+    {
+        char c;
+        int nBytes = recv(hSocket, &c, 1, 0);
+        if (nBytes > 0)
+        {
+            if (c == '\n')
+                continue;
+            if (c == '\r')
+                return true;
+            strLine += c;
+        }
+        else if (nBytes <= 0)
+        {
+            if (!strLine.empty())
+                return true;
+            // socket closed
+            printf("IRC socket closed\n");
+            return false;
+        }
+        else
+        {
+            // socket error
+            int nErr = WSAGetLastError();
+            if (nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS)
+            {
+                printf("IRC recv failed: %d\n", nErr);
+                return false;
+            }
+        }
+    }
+}
+
+bool RecvLineIRC(SOCKET hSocket, string& strLine)
+{
+    loop
+    {
+        bool fRet = RecvLine(hSocket, strLine);
+        if (fRet)
+        {
+            if (fShutdown)
+                return false;
+            vector<string> vWords;
+            ParseString(strLine, ' ', vWords);
+            if (vWords[0] == "PING")
+            {
+                strLine[1] = 'O';
+                strLine += '\r';
+                Send(hSocket, strLine.c_str());
+                continue;
+            }
+        }
+        return fRet;
+    }
+}
+
+bool RecvUntil(SOCKET hSocket, const char* psz1, const char* psz2=NULL, const char* psz3=NULL)
+{
+    loop
+    {
+        string strLine;
+        if (!RecvLineIRC(hSocket, strLine))
+            return false;
+        printf("IRC %s\n", strLine.c_str());
+        if (psz1 && strLine.find(psz1) != -1)
+            return true;
+        if (psz2 && strLine.find(psz2) != -1)
+            return true;
+        if (psz3 && strLine.find(psz3) != -1)
+            return true;
+    }
+}
+
+bool Wait(int nSeconds)
+{
+    if (fShutdown)
+        return false;
+    printf("Waiting %d seconds to reconnect to IRC\n", nSeconds);
+    for (int i = 0; i < nSeconds; i++)
+    {
+        if (fShutdown)
+            return false;
+        Sleep(1000);
+    }
+    return true;
+}
+
+
+
+void ThreadIRCSeed(void* parg)
+{
+    SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL);
+    int nErrorWait = 10;
+    int nRetryWait = 10;
+
+    while (!fShutdown)
+    {
+        CAddress addrConnect("216.155.130.130:6667");
+        struct hostent* phostent = gethostbyname("chat.freenode.net");
+        if (phostent && phostent->h_addr_list && phostent->h_addr_list[0])
+            addrConnect = CAddress(*(u_long*)phostent->h_addr_list[0], htons(6667));
+
+        SOCKET hSocket;
+        if (!ConnectSocket(addrConnect, hSocket))
+        {
+            printf("IRC connect failed\n");
+            nErrorWait = nErrorWait * 11 / 10;
+            if (Wait(nErrorWait += 60))
+                continue;
+            else
+                return;
+        }
+
+        if (!RecvUntil(hSocket, "Found your hostname", "using your IP address instead", "Couldn't look up your hostname"))
+        {
+            closesocket(hSocket);
+            nErrorWait = nErrorWait * 11 / 10;
+            if (Wait(nErrorWait += 60))
+                continue;
+            else
+                return;
+        }
+
+        string strMyName = EncodeAddress(addrLocalHost);
+
+        if (!addrLocalHost.IsRoutable())
+            strMyName = strprintf("x%u", GetRand(1000000000));
+
+
+        Send(hSocket, strprintf("NICK %s\r", strMyName.c_str()).c_str());
+        Send(hSocket, strprintf("USER %s 8 * : %s\r", strMyName.c_str(), strMyName.c_str()).c_str());
+
+        if (!RecvUntil(hSocket, " 004 "))
+        {
+            closesocket(hSocket);
+            nErrorWait = nErrorWait * 11 / 10;
+            if (Wait(nErrorWait += 60))
+                continue;
+            else
+                return;
+        }
+        Sleep(500);
+
+        Send(hSocket, "JOIN #bitcoin\r");
+        Send(hSocket, "WHO #bitcoin\r");
+
+        int64 nStart = GetTime();
+        string strLine;
+        while (!fShutdown && RecvLineIRC(hSocket, strLine))
+        {
+            if (strLine.empty() || strLine.size() > 900 || strLine[0] != ':')
+                continue;
+            printf("IRC %s\n", strLine.c_str());
+
+            vector<string> vWords;
+            ParseString(strLine, ' ', vWords);
+            if (vWords.size() < 2)
+                continue;
+
+            char pszName[10000];
+            pszName[0] = '\0';
+
+            if (vWords[1] == "352" && vWords.size() >= 8)
+            {
+                // index 7 is limited to 16 characters
+                // could get full length name at index 10, but would be different from join messages
+                strcpy(pszName, vWords[7].c_str());
+                printf("GOT WHO: [%s]  ", pszName);
+            }
+
+            if (vWords[1] == "JOIN" && vWords[0].size() > 1)
+            {
+                // :username!username@50000007.F000000B.90000002.IP JOIN :#channelname
+                strcpy(pszName, vWords[0].c_str() + 1);
+                if (strchr(pszName, '!'))
+                    *strchr(pszName, '!') = '\0';
+                printf("GOT JOIN: [%s]  ", pszName);
+            }
+
+            if (pszName[0] == 'u')
+            {
+                CAddress addr;
+                if (DecodeAddress(pszName, addr))
+                {
+                    CAddrDB addrdb;
+                    if (AddAddress(addrdb, addr))
+                        printf("new  ");
+                    else
+                    {
+                        // make it try connecting again
+                        CRITICAL_BLOCK(cs_mapAddresses)
+                            if (mapAddresses.count(addr.GetKey()))
+                                mapAddresses[addr.GetKey()].nLastFailed = 0;
+                    }
+                    addr.print();
+
+                    CRITICAL_BLOCK(cs_mapIRCAddresses)
+                        mapIRCAddresses.insert(make_pair(addr.GetKey(), addr));
+                }
+                else
+                {
+                    printf("decode failed\n");
+                }
+            }
+        }
+        closesocket(hSocket);
+
+        if (GetTime() - nStart > 20 * 60)
+        {
+            nErrorWait /= 3;
+            nRetryWait /= 3;
+        }
+
+        nRetryWait = nRetryWait * 11 / 10;
+        if (!Wait(nRetryWait += 60))
+            return;
+    }
+}
+
+
+
+
+
+
+
+
+
+
+#ifdef TEST
+int main(int argc, char *argv[])
+{
+    WSADATA wsadata;
+    if (WSAStartup(MAKEWORD(2,2), &wsadata) != NO_ERROR)
+    {
+        printf("Error at WSAStartup()\n");
+        return false;
+    }
+
+    ThreadIRCSeed(NULL);
+
+    WSACleanup();
+    return 0;
+}
+#endif
new file mode 100644
--- /dev/null
+++ b/irc.h
@@ -0,0 +1,10 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+extern bool RecvLine(SOCKET hSocket, string& strLine);
+extern void ThreadIRCSeed(void* parg);
+extern bool fRestartIRCSeed;
+
+extern map<vector<unsigned char>, CAddress> mapIRCAddresses;
+extern CCriticalSection cs_mapIRCAddresses;
new file mode 100644
--- /dev/null
+++ b/key.h
@@ -0,0 +1,156 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+
+// secp160k1
+// const unsigned int PRIVATE_KEY_SIZE = 192;
+// const unsigned int PUBLIC_KEY_SIZE  = 41;
+// const unsigned int SIGNATURE_SIZE   = 48;
+//
+// secp192k1
+// const unsigned int PRIVATE_KEY_SIZE = 222;
+// const unsigned int PUBLIC_KEY_SIZE  = 49;
+// const unsigned int SIGNATURE_SIZE   = 57;
+//
+// secp224k1
+// const unsigned int PRIVATE_KEY_SIZE = 250;
+// const unsigned int PUBLIC_KEY_SIZE  = 57;
+// const unsigned int SIGNATURE_SIZE   = 66;
+//
+// secp256k1:
+// const unsigned int PRIVATE_KEY_SIZE = 279;
+// const unsigned int PUBLIC_KEY_SIZE  = 65;
+// const unsigned int SIGNATURE_SIZE   = 72;
+//
+// see www.keylength.com
+// script supports up to 75 for single byte push
+
+
+
+class key_error : public std::runtime_error
+{
+public:
+    explicit key_error(const std::string& str) : std::runtime_error(str) {}
+};
+
+
+// secure_allocator is defined is serialize.h
+typedef vector<unsigned char, secure_allocator<unsigned char> > CPrivKey;
+
+
+
+class CKey
+{
+protected:
+    EC_KEY* pkey;
+
+public:
+    CKey()
+    {
+        pkey = EC_KEY_new_by_curve_name(NID_secp256k1);
+        if (pkey == NULL)
+            throw key_error("CKey::CKey() : EC_KEY_new_by_curve_name failed");
+    }
+
+    CKey(const CKey& b)
+    {
+        pkey = EC_KEY_dup(b.pkey);
+        if (pkey == NULL)
+            throw key_error("CKey::CKey(const CKey&) : EC_KEY_dup failed");
+    }
+
+    CKey& operator=(const CKey& b)
+    {
+        if (!EC_KEY_copy(pkey, b.pkey))
+            throw key_error("CKey::operator=(const CKey&) : EC_KEY_copy failed");
+        return (*this);
+    }
+
+    ~CKey()
+    {
+        EC_KEY_free(pkey);
+    }
+
+    void MakeNewKey()
+    {
+        if (!EC_KEY_generate_key(pkey))
+            throw key_error("CKey::MakeNewKey() : EC_KEY_generate_key failed");
+    }
+
+    bool SetPrivKey(const CPrivKey& vchPrivKey)
+    {
+        const unsigned char* pbegin = &vchPrivKey[0];
+        if (!d2i_ECPrivateKey(&pkey, &pbegin, vchPrivKey.size()))
+            return false;
+        return true;
+    }
+
+    CPrivKey GetPrivKey() const
+    {
+        unsigned int nSize = i2d_ECPrivateKey(pkey, NULL);
+        if (!nSize)
+            throw key_error("CKey::GetPrivKey() : i2d_ECPrivateKey failed");
+        CPrivKey vchPrivKey(nSize, 0);
+        unsigned char* pbegin = &vchPrivKey[0];
+        if (i2d_ECPrivateKey(pkey, &pbegin) != nSize)
+            throw key_error("CKey::GetPrivKey() : i2d_ECPrivateKey returned unexpected size");
+        return vchPrivKey;
+    }
+
+    bool SetPubKey(const vector<unsigned char>& vchPubKey)
+    {
+        const unsigned char* pbegin = &vchPubKey[0];
+        if (!o2i_ECPublicKey(&pkey, &pbegin, vchPubKey.size()))
+            return false;
+        return true;
+    }
+
+    vector<unsigned char> GetPubKey() const
+    {
+        unsigned int nSize = i2o_ECPublicKey(pkey, NULL);
+        if (!nSize)
+            throw key_error("CKey::GetPubKey() : i2o_ECPublicKey failed");
+        vector<unsigned char> vchPubKey(nSize, 0);
+        unsigned char* pbegin = &vchPubKey[0];
+        if (i2o_ECPublicKey(pkey, &pbegin) != nSize)
+            throw key_error("CKey::GetPubKey() : i2o_ECPublicKey returned unexpected size");
+        return vchPubKey;
+    }
+
+    bool Sign(uint256 hash, vector<unsigned char>& vchSig)
+    {
+        vchSig.clear();
+        unsigned char pchSig[10000];
+        unsigned int nSize = 0;
+        if (!ECDSA_sign(0, (unsigned char*)&hash, sizeof(hash), pchSig, &nSize, pkey))
+            return false;
+        vchSig.resize(nSize);
+        memcpy(&vchSig[0], pchSig, nSize);
+        return true;
+    }
+
+    bool Verify(uint256 hash, const vector<unsigned char>& vchSig)
+    {
+        // -1 = error, 0 = bad sig, 1 = good
+        if (ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], vchSig.size(), pkey) != 1)
+            return false;
+        return true;
+    }
+
+    static bool Sign(const CPrivKey& vchPrivKey, uint256 hash, vector<unsigned char>& vchSig)
+    {
+        CKey key;
+        if (!key.SetPrivKey(vchPrivKey))
+            return false;
+        return key.Sign(hash, vchSig);
+    }
+
+    static bool Verify(const vector<unsigned char>& vchPubKey, uint256 hash, const vector<unsigned char>& vchSig)
+    {
+        CKey key;
+        if (!key.SetPubKey(vchPubKey))
+            return false;
+        return key.Verify(hash, vchSig);
+    }
+};
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3bc745c4c0f4751cab5195d9fbdf19ea42113016
GIT binary patch
literal 1306630
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
z%0A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%0Ax^d}Os8GaA=CNJJQ}l_B
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
new file mode 100644
--- /dev/null
+++ b/license.txt
@@ -0,0 +1,19 @@
+Copyright (c) 2009 Satoshi Nakamoto
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
new file mode 100644
--- /dev/null
+++ b/main.cpp
@@ -0,0 +1,2692 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include "headers.h"
+#include "sha.h"
+
+
+
+
+
+//
+// Global state
+//
+
+CCriticalSection cs_main;
+
+map<uint256, CTransaction> mapTransactions;
+CCriticalSection cs_mapTransactions;
+unsigned int nTransactionsUpdated = 0;
+map<COutPoint, CInPoint> mapNextTx;
+
+map<uint256, CBlockIndex*> mapBlockIndex;
+const uint256 hashGenesisBlock("0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f");
+CBlockIndex* pindexGenesisBlock = NULL;
+int nBestHeight = -1;
+uint256 hashBestChain = 0;
+CBlockIndex* pindexBest = NULL;
+
+map<uint256, CBlock*> mapOrphanBlocks;
+multimap<uint256, CBlock*> mapOrphanBlocksByPrev;
+
+map<uint256, CDataStream*> mapOrphanTransactions;
+multimap<uint256, CDataStream*> mapOrphanTransactionsByPrev;
+
+map<uint256, CWalletTx> mapWallet;
+vector<pair<uint256, bool> > vWalletUpdated;
+CCriticalSection cs_mapWallet;
+
+map<vector<unsigned char>, CPrivKey> mapKeys;
+map<uint160, vector<unsigned char> > mapPubKeys;
+CCriticalSection cs_mapKeys;
+CKey keyUser;
+
+string strSetDataDir;
+int nDropMessagesTest = 0;
+
+// Settings
+int fGenerateBitcoins;
+int64 nTransactionFee = 0;
+CAddress addrIncoming;
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// mapKeys
+//
+
+bool AddKey(const CKey& key)
+{
+    CRITICAL_BLOCK(cs_mapKeys)
+    {
+        mapKeys[key.GetPubKey()] = key.GetPrivKey();
+        mapPubKeys[Hash160(key.GetPubKey())] = key.GetPubKey();
+    }
+    return CWalletDB().WriteKey(key.GetPubKey(), key.GetPrivKey());
+}
+
+vector<unsigned char> GenerateNewKey()
+{
+    CKey key;
+    key.MakeNewKey();
+    if (!AddKey(key))
+        throw runtime_error("GenerateNewKey() : AddKey failed\n");
+    return key.GetPubKey();
+}
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// mapWallet
+//
+
+bool AddToWallet(const CWalletTx& wtxIn)
+{
+    uint256 hash = wtxIn.GetHash();
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        // Inserts only if not already there, returns tx inserted or tx found
+        pair<map<uint256, CWalletTx>::iterator, bool> ret = mapWallet.insert(make_pair(hash, wtxIn));
+        CWalletTx& wtx = (*ret.first).second;
+        bool fInsertedNew = ret.second;
+        if (fInsertedNew)
+            wtx.nTimeReceived = GetAdjustedTime();
+
+        //// debug print
+        printf("AddToWallet %s  %s\n", wtxIn.GetHash().ToString().substr(0,6).c_str(), fInsertedNew ? "new" : "update");
+
+        if (!fInsertedNew)
+        {
+            // Merge
+            bool fUpdated = false;
+            if (wtxIn.hashBlock != 0 && wtxIn.hashBlock != wtx.hashBlock)
+            {
+                wtx.hashBlock = wtxIn.hashBlock;
+                fUpdated = true;
+            }
+            if (wtxIn.nIndex != -1 && (wtxIn.vMerkleBranch != wtx.vMerkleBranch || wtxIn.nIndex != wtx.nIndex))
+            {
+                wtx.vMerkleBranch = wtxIn.vMerkleBranch;
+                wtx.nIndex = wtxIn.nIndex;
+                fUpdated = true;
+            }
+            if (wtxIn.fFromMe && wtxIn.fFromMe != wtx.fFromMe)
+            {
+                wtx.fFromMe = wtxIn.fFromMe;
+                fUpdated = true;
+            }
+            if (wtxIn.fSpent && wtxIn.fSpent != wtx.fSpent)
+            {
+                wtx.fSpent = wtxIn.fSpent;
+                fUpdated = true;
+            }
+            if (!fUpdated)
+                return true;
+        }
+
+        // Write to disk
+        if (!wtx.WriteToDisk())
+            return false;
+
+        // Notify UI
+        vWalletUpdated.push_back(make_pair(hash, fInsertedNew));
+    }
+
+    // Refresh UI
+    MainFrameRepaint();
+    return true;
+}
+
+bool AddToWalletIfMine(const CTransaction& tx, const CBlock* pblock)
+{
+    if (tx.IsMine() || mapWallet.count(tx.GetHash()))
+    {
+        CWalletTx wtx(tx);
+        // Get merkle branch if transaction was found in a block
+        if (pblock)
+            wtx.SetMerkleBranch(pblock);
+        return AddToWallet(wtx);
+    }
+    return true;
+}
+
+bool EraseFromWallet(uint256 hash)
+{
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        if (mapWallet.erase(hash))
+            CWalletDB().EraseTx(hash);
+    }
+    return true;
+}
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// mapOrphanTransactions
+//
+
+void AddOrphanTx(const CDataStream& vMsg)
+{
+    CTransaction tx;
+    CDataStream(vMsg) >> tx;
+    uint256 hash = tx.GetHash();
+    if (mapOrphanTransactions.count(hash))
+        return;
+    CDataStream* pvMsg = mapOrphanTransactions[hash] = new CDataStream(vMsg);
+    foreach(const CTxIn& txin, tx.vin)
+        mapOrphanTransactionsByPrev.insert(make_pair(txin.prevout.hash, pvMsg));
+}
+
+void EraseOrphanTx(uint256 hash)
+{
+    if (!mapOrphanTransactions.count(hash))
+        return;
+    const CDataStream* pvMsg = mapOrphanTransactions[hash];
+    CTransaction tx;
+    CDataStream(*pvMsg) >> tx;
+    foreach(const CTxIn& txin, tx.vin)
+    {
+        for (multimap<uint256, CDataStream*>::iterator mi = mapOrphanTransactionsByPrev.lower_bound(txin.prevout.hash);
+             mi != mapOrphanTransactionsByPrev.upper_bound(txin.prevout.hash);)
+        {
+            if ((*mi).second == pvMsg)
+                mapOrphanTransactionsByPrev.erase(mi++);
+            else
+                mi++;
+        }
+    }
+    delete pvMsg;
+    mapOrphanTransactions.erase(hash);
+}
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CTransaction
+//
+
+bool CTxIn::IsMine() const
+{
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        map<uint256, CWalletTx>::iterator mi = mapWallet.find(prevout.hash);
+        if (mi != mapWallet.end())
+        {
+            const CWalletTx& prev = (*mi).second;
+            if (prevout.n < prev.vout.size())
+                if (prev.vout[prevout.n].IsMine())
+                    return true;
+        }
+    }
+    return false;
+}
+
+int64 CTxIn::GetDebit() const
+{
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        map<uint256, CWalletTx>::iterator mi = mapWallet.find(prevout.hash);
+        if (mi != mapWallet.end())
+        {
+            const CWalletTx& prev = (*mi).second;
+            if (prevout.n < prev.vout.size())
+                if (prev.vout[prevout.n].IsMine())
+                    return prev.vout[prevout.n].nValue;
+        }
+    }
+    return 0;
+}
+
+int64 CWalletTx::GetTxTime() const
+{
+    if (!fTimeReceivedIsTxTime && hashBlock != 0)
+    {
+        // If we did not receive the transaction directly, we rely on the block's
+        // time to figure out when it happened.  We use the median over a range
+        // of blocks to try to filter out inaccurate block times.
+        map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hashBlock);
+        if (mi != mapBlockIndex.end())
+        {
+            CBlockIndex* pindex = (*mi).second;
+            if (pindex)
+                return pindex->GetMedianTime();
+        }
+    }
+    return nTimeReceived;
+}
+
+
+
+
+
+
+int CMerkleTx::SetMerkleBranch(const CBlock* pblock)
+{
+    if (fClient)
+    {
+        if (hashBlock == 0)
+            return 0;
+    }
+    else
+    {
+        CBlock blockTmp;
+        if (pblock == NULL)
+        {
+            // Load the block this tx is in
+            CTxIndex txindex;
+            if (!CTxDB("r").ReadTxIndex(GetHash(), txindex))
+                return 0;
+            if (!blockTmp.ReadFromDisk(txindex.pos.nFile, txindex.pos.nBlockPos, true))
+                return 0;
+            pblock = &blockTmp;
+        }
+
+        // Update the tx's hashBlock
+        hashBlock = pblock->GetHash();
+
+        // Locate the transaction
+        for (nIndex = 0; nIndex < pblock->vtx.size(); nIndex++)
+            if (pblock->vtx[nIndex] == *(CTransaction*)this)
+                break;
+        if (nIndex == pblock->vtx.size())
+        {
+            vMerkleBranch.clear();
+            nIndex = -1;
+            printf("ERROR: SetMerkleBranch() : couldn't find tx in block\n");
+            return 0;
+        }
+
+        // Fill in merkle branch
+        vMerkleBranch = pblock->GetMerkleBranch(nIndex);
+    }
+
+    // Is the tx in a block that's in the main chain
+    map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hashBlock);
+    if (mi == mapBlockIndex.end())
+        return 0;
+    CBlockIndex* pindex = (*mi).second;
+    if (!pindex || !pindex->IsInMainChain())
+        return 0;
+
+    return pindexBest->nHeight - pindex->nHeight + 1;
+}
+
+
+
+void CWalletTx::AddSupportingTransactions(CTxDB& txdb)
+{
+    vtxPrev.clear();
+
+    const int COPY_DEPTH = 3;
+    if (SetMerkleBranch() < COPY_DEPTH)
+    {
+        vector<uint256> vWorkQueue;
+        foreach(const CTxIn& txin, vin)
+            vWorkQueue.push_back(txin.prevout.hash);
+
+        // This critsect is OK because txdb is already open
+        CRITICAL_BLOCK(cs_mapWallet)
+        {
+            map<uint256, const CMerkleTx*> mapWalletPrev;
+            set<uint256> setAlreadyDone;
+            for (int i = 0; i < vWorkQueue.size(); i++)
+            {
+                uint256 hash = vWorkQueue[i];
+                if (setAlreadyDone.count(hash))
+                    continue;
+                setAlreadyDone.insert(hash);
+
+                CMerkleTx tx;
+                if (mapWallet.count(hash))
+                {
+                    tx = mapWallet[hash];
+                    foreach(const CMerkleTx& txWalletPrev, mapWallet[hash].vtxPrev)
+                        mapWalletPrev[txWalletPrev.GetHash()] = &txWalletPrev;
+                }
+                else if (mapWalletPrev.count(hash))
+                {
+                    tx = *mapWalletPrev[hash];
+                }
+                else if (!fClient && txdb.ReadDiskTx(hash, tx))
+                {
+                    ;
+                }
+                else
+                {
+                    printf("ERROR: AddSupportingTransactions() : unsupported transaction\n");
+                    continue;
+                }
+
+                int nDepth = tx.SetMerkleBranch();
+                vtxPrev.push_back(tx);
+
+                if (nDepth < COPY_DEPTH)
+                    foreach(const CTxIn& txin, tx.vin)
+                        vWorkQueue.push_back(txin.prevout.hash);
+            }
+        }
+    }
+
+    reverse(vtxPrev.begin(), vtxPrev.end());
+}
+
+
+
+
+
+
+
+
+
+
+
+bool CTransaction::AcceptTransaction(CTxDB& txdb, bool fCheckInputs, bool* pfMissingInputs)
+{
+    if (pfMissingInputs)
+        *pfMissingInputs = false;
+
+    // Coinbase is only valid in a block, not as a loose transaction
+    if (IsCoinBase())
+        return error("AcceptTransaction() : coinbase as individual tx");
+
+    if (!CheckTransaction())
+        return error("AcceptTransaction() : CheckTransaction failed");
+
+    // Do we already have it?
+    uint256 hash = GetHash();
+    CRITICAL_BLOCK(cs_mapTransactions)
+        if (mapTransactions.count(hash))
+            return false;
+    if (fCheckInputs)
+        if (txdb.ContainsTx(hash))
+            return false;
+
+    // Check for conflicts with in-memory transactions
+    CTransaction* ptxOld = NULL;
+    for (int i = 0; i < vin.size(); i++)
+    {
+        COutPoint outpoint = vin[i].prevout;
+        if (mapNextTx.count(outpoint))
+        {
+            // Allow replacing with a newer version of the same transaction
+            if (i != 0)
+                return false;
+            ptxOld = mapNextTx[outpoint].ptx;
+            if (!IsNewerThan(*ptxOld))
+                return false;
+            for (int i = 0; i < vin.size(); i++)
+            {
+                COutPoint outpoint = vin[i].prevout;
+                if (!mapNextTx.count(outpoint) || mapNextTx[outpoint].ptx != ptxOld)
+                    return false;
+            }
+            break;
+        }
+    }
+
+    // Check against previous transactions
+    map<uint256, CTxIndex> mapUnused;
+    int64 nFees = 0;
+    if (fCheckInputs && !ConnectInputs(txdb, mapUnused, CDiskTxPos(1,1,1), 0, nFees, false, false))
+    {
+        if (pfMissingInputs)
+            *pfMissingInputs = true;
+        return error("AcceptTransaction() : ConnectInputs failed %s", hash.ToString().substr(0,6).c_str());
+    }
+
+    // Store transaction in memory
+    CRITICAL_BLOCK(cs_mapTransactions)
+    {
+        if (ptxOld)
+        {
+            printf("mapTransaction.erase(%s) replacing with new version\n", ptxOld->GetHash().ToString().c_str());
+            mapTransactions.erase(ptxOld->GetHash());
+        }
+        AddToMemoryPool();
+    }
+
+    ///// are we sure this is ok when loading transactions or restoring block txes
+    // If updated, erase old tx from wallet
+    if (ptxOld)
+        EraseFromWallet(ptxOld->GetHash());
+
+    printf("AcceptTransaction(): accepted %s\n", hash.ToString().substr(0,6).c_str());
+    return true;
+}
+
+
+bool CTransaction::AddToMemoryPool()
+{
+    // Add to memory pool without checking anything.  Don't call this directly,
+    // call AcceptTransaction to properly check the transaction first.
+    CRITICAL_BLOCK(cs_mapTransactions)
+    {
+        uint256 hash = GetHash();
+        mapTransactions[hash] = *this;
+        for (int i = 0; i < vin.size(); i++)
+            mapNextTx[vin[i].prevout] = CInPoint(&mapTransactions[hash], i);
+        nTransactionsUpdated++;
+    }
+    return true;
+}
+
+
+bool CTransaction::RemoveFromMemoryPool()
+{
+    // Remove transaction from memory pool
+    CRITICAL_BLOCK(cs_mapTransactions)
+    {
+        foreach(const CTxIn& txin, vin)
+            mapNextTx.erase(txin.prevout);
+        mapTransactions.erase(GetHash());
+        nTransactionsUpdated++;
+    }
+    return true;
+}
+
+
+
+
+
+
+int CMerkleTx::GetDepthInMainChain() const
+{
+    if (hashBlock == 0 || nIndex == -1)
+        return 0;
+
+    // Find the block it claims to be in
+    map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hashBlock);
+    if (mi == mapBlockIndex.end())
+        return 0;
+    CBlockIndex* pindex = (*mi).second;
+    if (!pindex || !pindex->IsInMainChain())
+        return 0;
+
+    // Make sure the merkle branch connects to this block
+    if (!fMerkleVerified)
+    {
+        if (CBlock::CheckMerkleBranch(GetHash(), vMerkleBranch, nIndex) != pindex->hashMerkleRoot)
+            return 0;
+        fMerkleVerified = true;
+    }
+
+    return pindexBest->nHeight - pindex->nHeight + 1;
+}
+
+
+int CMerkleTx::GetBlocksToMaturity() const
+{
+    if (!IsCoinBase())
+        return 0;
+    return max(0, (COINBASE_MATURITY+20) - GetDepthInMainChain());
+}
+
+
+bool CMerkleTx::AcceptTransaction(CTxDB& txdb, bool fCheckInputs)
+{
+    if (fClient)
+    {
+        if (!IsInMainChain() && !ClientConnectInputs())
+            return false;
+        return CTransaction::AcceptTransaction(txdb, false);
+    }
+    else
+    {
+        return CTransaction::AcceptTransaction(txdb, fCheckInputs);
+    }
+}
+
+
+
+bool CWalletTx::AcceptWalletTransaction(CTxDB& txdb, bool fCheckInputs)
+{
+    CRITICAL_BLOCK(cs_mapTransactions)
+    {
+        foreach(CMerkleTx& tx, vtxPrev)
+        {
+            if (!tx.IsCoinBase())
+            {
+                uint256 hash = tx.GetHash();
+                if (!mapTransactions.count(hash) && !txdb.ContainsTx(hash))
+                    tx.AcceptTransaction(txdb, fCheckInputs);
+            }
+        }
+        if (!IsCoinBase())
+            return AcceptTransaction(txdb, fCheckInputs);
+    }
+    return true;
+}
+
+void ReacceptWalletTransactions()
+{
+    // Reaccept any txes of ours that aren't already in a block
+    CTxDB txdb("r");
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        foreach(PAIRTYPE(const uint256, CWalletTx)& item, mapWallet)
+        {
+            CWalletTx& wtx = item.second;
+            if (!wtx.IsCoinBase() && !txdb.ContainsTx(wtx.GetHash()))
+                wtx.AcceptWalletTransaction(txdb, false);
+        }
+    }
+}
+
+
+void CWalletTx::RelayWalletTransaction(CTxDB& txdb)
+{
+    foreach(const CMerkleTx& tx, vtxPrev)
+    {
+        if (!tx.IsCoinBase())
+        {
+            uint256 hash = tx.GetHash();
+            if (!txdb.ContainsTx(hash))
+                RelayMessage(CInv(MSG_TX, hash), (CTransaction)tx);
+        }
+    }
+    if (!IsCoinBase())
+    {
+        uint256 hash = GetHash();
+        if (!txdb.ContainsTx(hash))
+        {
+            printf("Relaying wtx %s\n", hash.ToString().substr(0,6).c_str());
+            RelayMessage(CInv(MSG_TX, hash), (CTransaction)*this);
+        }
+    }
+}
+
+void RelayWalletTransactions()
+{
+    static int64 nLastTime;
+    if (GetTime() - nLastTime < 10 * 60)
+        return;
+    nLastTime = GetTime();
+
+    // Rebroadcast any of our txes that aren't in a block yet
+    printf("RelayWalletTransactions()\n");
+    CTxDB txdb("r");
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        // Sort them in chronological order
+        multimap<unsigned int, CWalletTx*> mapSorted;
+        foreach(PAIRTYPE(const uint256, CWalletTx)& item, mapWallet)
+        {
+            CWalletTx& wtx = item.second;
+            mapSorted.insert(make_pair(wtx.nTimeReceived, &wtx));
+        }
+        foreach(PAIRTYPE(const unsigned int, CWalletTx*)& item, mapSorted)
+        {
+            CWalletTx& wtx = *item.second;
+            wtx.RelayWalletTransaction(txdb);
+        }
+    }
+}
+
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CBlock and CBlockIndex
+//
+
+bool CBlock::ReadFromDisk(const CBlockIndex* pblockindex, bool fReadTransactions)
+{
+    return ReadFromDisk(pblockindex->nFile, pblockindex->nBlockPos, fReadTransactions);
+}
+
+uint256 GetOrphanRoot(const CBlock* pblock)
+{
+    // Work back to the first block in the orphan chain
+    while (mapOrphanBlocks.count(pblock->hashPrevBlock))
+        pblock = mapOrphanBlocks[pblock->hashPrevBlock];
+    return pblock->GetHash();
+}
+
+int64 CBlock::GetBlockValue(int64 nFees) const
+{
+    int64 nSubsidy = 50 * COIN;
+
+    // Subsidy is cut in half every 4 years
+    nSubsidy >>= (nBestHeight / 210000);
+
+    return nSubsidy + nFees;
+}
+
+unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast)
+{
+    const unsigned int nTargetTimespan = 14 * 24 * 60 * 60; // two weeks
+    const unsigned int nTargetSpacing = 10 * 60;
+    const unsigned int nInterval = nTargetTimespan / nTargetSpacing;
+
+    // Genesis block
+    if (pindexLast == NULL)
+        return bnProofOfWorkLimit.GetCompact();
+
+    // Only change once per interval
+    if ((pindexLast->nHeight+1) % nInterval != 0)
+        return pindexLast->nBits;
+
+    // Go back by what we want to be 14 days worth of blocks
+    const CBlockIndex* pindexFirst = pindexLast;
+    for (int i = 0; pindexFirst && i < nInterval-1; i++)
+        pindexFirst = pindexFirst->pprev;
+    assert(pindexFirst);
+
+    // Limit adjustment step
+    unsigned int nActualTimespan = pindexLast->nTime - pindexFirst->nTime;
+    printf("  nActualTimespan = %d  before bounds\n", nActualTimespan);
+    if (nActualTimespan < nTargetTimespan/4)
+        nActualTimespan = nTargetTimespan/4;
+    if (nActualTimespan > nTargetTimespan*4)
+        nActualTimespan = nTargetTimespan*4;
+
+    // Retarget
+    CBigNum bnNew;
+    bnNew.SetCompact(pindexLast->nBits);
+    bnNew *= nActualTimespan;
+    bnNew /= nTargetTimespan;
+
+    if (bnNew > bnProofOfWorkLimit)
+        bnNew = bnProofOfWorkLimit;
+
+    /// debug print
+    printf("\n\n\nGetNextWorkRequired RETARGET *****\n");
+    printf("nTargetTimespan = %d    nActualTimespan = %d\n", nTargetTimespan, nActualTimespan);
+    printf("Before: %08x  %s\n", pindexLast->nBits, CBigNum().SetCompact(pindexLast->nBits).getuint256().ToString().c_str());
+    printf("After:  %08x  %s\n", bnNew.GetCompact(), bnNew.getuint256().ToString().c_str());
+
+    return bnNew.GetCompact();
+}
+
+
+
+
+
+
+
+
+
+bool CTransaction::DisconnectInputs(CTxDB& txdb)
+{
+    // Relinquish previous transactions' spent pointers
+    if (!IsCoinBase())
+    {
+        foreach(const CTxIn& txin, vin)
+        {
+            COutPoint prevout = txin.prevout;
+
+            // Get prev txindex from disk
+            CTxIndex txindex;
+            if (!txdb.ReadTxIndex(prevout.hash, txindex))
+                return error("DisconnectInputs() : ReadTxIndex failed");
+
+            if (prevout.n >= txindex.vSpent.size())
+                return error("DisconnectInputs() : prevout.n out of range");
+
+            // Mark outpoint as not spent
+            txindex.vSpent[prevout.n].SetNull();
+
+            // Write back
+            txdb.UpdateTxIndex(prevout.hash, txindex);
+        }
+    }
+
+    // Remove transaction from index
+    if (!txdb.EraseTxIndex(*this))
+        return error("DisconnectInputs() : EraseTxPos failed");
+
+    return true;
+}
+
+
+bool CTransaction::ConnectInputs(CTxDB& txdb, map<uint256, CTxIndex>& mapTestPool, CDiskTxPos posThisTx, int nHeight, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee)
+{
+    // Take over previous transactions' spent pointers
+    if (!IsCoinBase())
+    {
+        int64 nValueIn = 0;
+        for (int i = 0; i < vin.size(); i++)
+        {
+            COutPoint prevout = vin[i].prevout;
+
+            // Read txindex
+            CTxIndex txindex;
+            bool fFound = true;
+            if (fMiner && mapTestPool.count(prevout.hash))
+            {
+                // Get txindex from current proposed changes
+                txindex = mapTestPool[prevout.hash];
+            }
+            else
+            {
+                // Read txindex from txdb
+                fFound = txdb.ReadTxIndex(prevout.hash, txindex);
+            }
+            if (!fFound && (fBlock || fMiner))
+                return fMiner ? false : error("ConnectInputs() : %s prev tx %s index entry not found", GetHash().ToString().substr(0,6).c_str(),  prevout.hash.ToString().substr(0,6).c_str());
+
+            // Read txPrev
+            CTransaction txPrev;
+            if (!fFound || txindex.pos == CDiskTxPos(1,1,1))
+            {
+                // Get prev tx from single transactions in memory
+                CRITICAL_BLOCK(cs_mapTransactions)
+                {
+                    if (!mapTransactions.count(prevout.hash))
+                        return error("ConnectInputs() : %s mapTransactions prev not found %s", GetHash().ToString().substr(0,6).c_str(),  prevout.hash.ToString().substr(0,6).c_str());
+                    txPrev = mapTransactions[prevout.hash];
+                }
+                if (!fFound)
+                    txindex.vSpent.resize(txPrev.vout.size());
+            }
+            else
+            {
+                // Get prev tx from disk
+                if (!txPrev.ReadFromDisk(txindex.pos))
+                    return error("ConnectInputs() : %s ReadFromDisk prev tx %s failed", GetHash().ToString().substr(0,6).c_str(),  prevout.hash.ToString().substr(0,6).c_str());
+            }
+
+            if (prevout.n >= txPrev.vout.size() || prevout.n >= txindex.vSpent.size())
+                return error("ConnectInputs() : %s prevout.n out of range %d %d %d", GetHash().ToString().substr(0,6).c_str(), prevout.n, txPrev.vout.size(), txindex.vSpent.size());
+
+            // If prev is coinbase, check that it's matured
+            if (txPrev.IsCoinBase())
+                for (CBlockIndex* pindex = pindexBest; pindex && nBestHeight - pindex->nHeight < COINBASE_MATURITY-1; pindex = pindex->pprev)
+                    if (pindex->nBlockPos == txindex.pos.nBlockPos && pindex->nFile == txindex.pos.nFile)
+                        return error("ConnectInputs() : tried to spend coinbase at depth %d", nBestHeight - pindex->nHeight);
+
+            // Verify signature
+            if (!VerifySignature(txPrev, *this, i))
+                return error("ConnectInputs() : %s VerifySignature failed", GetHash().ToString().substr(0,6).c_str());
+
+            // Check for conflicts
+            if (!txindex.vSpent[prevout.n].IsNull())
+                return fMiner ? false : error("ConnectInputs() : %s prev tx already used at %s", GetHash().ToString().substr(0,6).c_str(), txindex.vSpent[prevout.n].ToString().c_str());
+
+            // Mark outpoints as spent
+            txindex.vSpent[prevout.n] = posThisTx;
+
+            // Write back
+            if (fBlock)
+                txdb.UpdateTxIndex(prevout.hash, txindex);
+            else if (fMiner)
+                mapTestPool[prevout.hash] = txindex;
+
+            nValueIn += txPrev.vout[prevout.n].nValue;
+        }
+
+        // Tally transaction fees
+        int64 nTxFee = nValueIn - GetValueOut();
+        if (nTxFee < 0)
+            return error("ConnectInputs() : %s nTxFee < 0", GetHash().ToString().substr(0,6).c_str());
+        if (nTxFee < nMinFee)
+            return false;
+        nFees += nTxFee;
+    }
+
+    if (fBlock)
+    {
+        // Add transaction to disk index
+        if (!txdb.AddTxIndex(*this, posThisTx, nHeight))
+            return error("ConnectInputs() : AddTxPos failed");
+    }
+    else if (fMiner)
+    {
+        // Add transaction to test pool
+        mapTestPool[GetHash()] = CTxIndex(CDiskTxPos(1,1,1), vout.size());
+    }
+
+    return true;
+}
+
+
+bool CTransaction::ClientConnectInputs()
+{
+    if (IsCoinBase())
+        return false;
+
+    // Take over previous transactions' spent pointers
+    CRITICAL_BLOCK(cs_mapTransactions)
+    {
+        int64 nValueIn = 0;
+        for (int i = 0; i < vin.size(); i++)
+        {
+            // Get prev tx from single transactions in memory
+            COutPoint prevout = vin[i].prevout;
+            if (!mapTransactions.count(prevout.hash))
+                return false;
+            CTransaction& txPrev = mapTransactions[prevout.hash];
+
+            if (prevout.n >= txPrev.vout.size())
+                return false;
+
+            // Verify signature
+            if (!VerifySignature(txPrev, *this, i))
+                return error("ConnectInputs() : VerifySignature failed");
+
+            ///// this is redundant with the mapNextTx stuff, not sure which I want to get rid of
+            ///// this has to go away now that posNext is gone
+            // // Check for conflicts
+            // if (!txPrev.vout[prevout.n].posNext.IsNull())
+            //     return error("ConnectInputs() : prev tx already used");
+            //
+            // // Flag outpoints as used
+            // txPrev.vout[prevout.n].posNext = posThisTx;
+
+            nValueIn += txPrev.vout[prevout.n].nValue;
+        }
+        if (GetValueOut() > nValueIn)
+            return false;
+    }
+
+    return true;
+}
+
+
+
+
+bool CBlock::DisconnectBlock(CTxDB& txdb, CBlockIndex* pindex)
+{
+    // Disconnect in reverse order
+    for (int i = vtx.size()-1; i >= 0; i--)
+        if (!vtx[i].DisconnectInputs(txdb))
+            return false;
+
+    // Update block index on disk without changing it in memory.
+    // The memory index structure will be changed after the db commits.
+    if (pindex->pprev)
+    {
+        CDiskBlockIndex blockindexPrev(pindex->pprev);
+        blockindexPrev.hashNext = 0;
+        txdb.WriteBlockIndex(blockindexPrev);
+    }
+
+    return true;
+}
+
+bool CBlock::ConnectBlock(CTxDB& txdb, CBlockIndex* pindex)
+{
+    //// issue here: it doesn't know the version
+    unsigned int nTxPos = pindex->nBlockPos + ::GetSerializeSize(CBlock(), SER_DISK) - 1 + GetSizeOfCompactSize(vtx.size());
+
+    map<uint256, CTxIndex> mapUnused;
+    int64 nFees = 0;
+    foreach(CTransaction& tx, vtx)
+    {
+        CDiskTxPos posThisTx(pindex->nFile, pindex->nBlockPos, nTxPos);
+        nTxPos += ::GetSerializeSize(tx, SER_DISK);
+
+        if (!tx.ConnectInputs(txdb, mapUnused, posThisTx, pindex->nHeight, nFees, true, false))
+            return false;
+    }
+
+    if (vtx[0].GetValueOut() > GetBlockValue(nFees))
+        return false;
+
+    // Update block index on disk without changing it in memory.
+    // The memory index structure will be changed after the db commits.
+    if (pindex->pprev)
+    {
+        CDiskBlockIndex blockindexPrev(pindex->pprev);
+        blockindexPrev.hashNext = pindex->GetBlockHash();
+        txdb.WriteBlockIndex(blockindexPrev);
+    }
+
+    // Watch for transactions paying to me
+    foreach(CTransaction& tx, vtx)
+        AddToWalletIfMine(tx, this);
+
+    return true;
+}
+
+
+
+bool Reorganize(CTxDB& txdb, CBlockIndex* pindexNew)
+{
+    printf("*** REORGANIZE ***\n");
+
+    // Find the fork
+    CBlockIndex* pfork = pindexBest;
+    CBlockIndex* plonger = pindexNew;
+    while (pfork != plonger)
+    {
+        if (!(pfork = pfork->pprev))
+            return error("Reorganize() : pfork->pprev is null");
+        while (plonger->nHeight > pfork->nHeight)
+            if (!(plonger = plonger->pprev))
+                return error("Reorganize() : plonger->pprev is null");
+    }
+
+    // List of what to disconnect
+    vector<CBlockIndex*> vDisconnect;
+    for (CBlockIndex* pindex = pindexBest; pindex != pfork; pindex = pindex->pprev)
+        vDisconnect.push_back(pindex);
+
+    // List of what to connect
+    vector<CBlockIndex*> vConnect;
+    for (CBlockIndex* pindex = pindexNew; pindex != pfork; pindex = pindex->pprev)
+        vConnect.push_back(pindex);
+    reverse(vConnect.begin(), vConnect.end());
+
+    // Disconnect shorter branch
+    vector<CTransaction> vResurrect;
+    foreach(CBlockIndex* pindex, vDisconnect)
+    {
+        CBlock block;
+        if (!block.ReadFromDisk(pindex->nFile, pindex->nBlockPos, true))
+            return error("Reorganize() : ReadFromDisk for disconnect failed");
+        if (!block.DisconnectBlock(txdb, pindex))
+            return error("Reorganize() : DisconnectBlock failed");
+
+        // Queue memory transactions to resurrect
+        foreach(const CTransaction& tx, block.vtx)
+            if (!tx.IsCoinBase())
+                vResurrect.push_back(tx);
+    }
+
+    // Connect longer branch
+    vector<CTransaction> vDelete;
+    for (int i = 0; i < vConnect.size(); i++)
+    {
+        CBlockIndex* pindex = vConnect[i];
+        CBlock block;
+        if (!block.ReadFromDisk(pindex->nFile, pindex->nBlockPos, true))
+            return error("Reorganize() : ReadFromDisk for connect failed");
+        if (!block.ConnectBlock(txdb, pindex))
+        {
+            // Invalid block, delete the rest of this branch
+            txdb.TxnAbort();
+            for (int j = i; j < vConnect.size(); j++)
+            {
+                CBlockIndex* pindex = vConnect[j];
+                pindex->EraseBlockFromDisk();
+                txdb.EraseBlockIndex(pindex->GetBlockHash());
+                mapBlockIndex.erase(pindex->GetBlockHash());
+                delete pindex;
+            }
+            return error("Reorganize() : ConnectBlock failed");
+        }
+
+        // Queue memory transactions to delete
+        foreach(const CTransaction& tx, block.vtx)
+            vDelete.push_back(tx);
+    }
+    if (!txdb.WriteHashBestChain(pindexNew->GetBlockHash()))
+        return error("Reorganize() : WriteHashBestChain failed");
+
+    // Commit now because resurrecting could take some time
+    txdb.TxnCommit();
+
+    // Disconnect shorter branch
+    foreach(CBlockIndex* pindex, vDisconnect)
+        if (pindex->pprev)
+            pindex->pprev->pnext = NULL;
+
+    // Connect longer branch
+    foreach(CBlockIndex* pindex, vConnect)
+        if (pindex->pprev)
+            pindex->pprev->pnext = pindex;
+
+    // Resurrect memory transactions that were in the disconnected branch
+    foreach(CTransaction& tx, vResurrect)
+        tx.AcceptTransaction(txdb, false);
+
+    // Delete redundant memory transactions that are in the connected branch
+    foreach(CTransaction& tx, vDelete)
+        tx.RemoveFromMemoryPool();
+
+    return true;
+}
+
+
+bool CBlock::AddToBlockIndex(unsigned int nFile, unsigned int nBlockPos)
+{
+    // Check for duplicate
+    uint256 hash = GetHash();
+    if (mapBlockIndex.count(hash))
+        return error("AddToBlockIndex() : %s already exists", hash.ToString().substr(0,14).c_str());
+
+    // Construct new block index object
+    CBlockIndex* pindexNew = new CBlockIndex(nFile, nBlockPos, *this);
+    if (!pindexNew)
+        return error("AddToBlockIndex() : new CBlockIndex failed");
+    map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.insert(make_pair(hash, pindexNew)).first;
+    pindexNew->phashBlock = &((*mi).first);
+    map<uint256, CBlockIndex*>::iterator miPrev = mapBlockIndex.find(hashPrevBlock);
+    if (miPrev != mapBlockIndex.end())
+    {
+        pindexNew->pprev = (*miPrev).second;
+        pindexNew->nHeight = pindexNew->pprev->nHeight + 1;
+    }
+
+    CTxDB txdb;
+    txdb.TxnBegin();
+    txdb.WriteBlockIndex(CDiskBlockIndex(pindexNew));
+
+    // New best
+    if (pindexNew->nHeight > nBestHeight)
+    {
+        if (pindexGenesisBlock == NULL && hash == hashGenesisBlock)
+        {
+            pindexGenesisBlock = pindexNew;
+            txdb.WriteHashBestChain(hash);
+        }
+        else if (hashPrevBlock == hashBestChain)
+        {
+            // Adding to current best branch
+            if (!ConnectBlock(txdb, pindexNew) || !txdb.WriteHashBestChain(hash))
+            {
+                txdb.TxnAbort();
+                pindexNew->EraseBlockFromDisk();
+                mapBlockIndex.erase(pindexNew->GetBlockHash());
+                delete pindexNew;
+                return error("AddToBlockIndex() : ConnectBlock failed");
+            }
+            txdb.TxnCommit();
+            pindexNew->pprev->pnext = pindexNew;
+
+            // Delete redundant memory transactions
+            foreach(CTransaction& tx, vtx)
+                tx.RemoveFromMemoryPool();
+        }
+        else
+        {
+            // New best branch
+            if (!Reorganize(txdb, pindexNew))
+            {
+                txdb.TxnAbort();
+                return error("AddToBlockIndex() : Reorganize failed");
+            }
+        }
+
+        // New best link
+        hashBestChain = hash;
+        pindexBest = pindexNew;
+        nBestHeight = pindexBest->nHeight;
+        nTransactionsUpdated++;
+        printf("AddToBlockIndex: new best=%s  height=%d\n", hashBestChain.ToString().substr(0,14).c_str(), nBestHeight);
+    }
+
+    txdb.TxnCommit();
+    txdb.Close();
+
+    // Relay wallet transactions that haven't gotten in yet
+    if (pindexNew == pindexBest)
+        RelayWalletTransactions();
+
+    MainFrameRepaint();
+    return true;
+}
+
+
+
+
+bool CBlock::CheckBlock() const
+{
+    // These are checks that are independent of context
+    // that can be verified before saving an orphan block.
+
+    // Size limits
+    if (vtx.empty() || vtx.size() > MAX_SIZE || ::GetSerializeSize(*this, SER_DISK) > MAX_SIZE)
+        return error("CheckBlock() : size limits failed");
+
+    // Check timestamp
+    if (nTime > GetAdjustedTime() + 2 * 60 * 60)
+        return error("CheckBlock() : block timestamp too far in the future");
+
+    // First transaction must be coinbase, the rest must not be
+    if (vtx.empty() || !vtx[0].IsCoinBase())
+        return error("CheckBlock() : first tx is not coinbase");
+    for (int i = 1; i < vtx.size(); i++)
+        if (vtx[i].IsCoinBase())
+            return error("CheckBlock() : more than one coinbase");
+
+    // Check transactions
+    foreach(const CTransaction& tx, vtx)
+        if (!tx.CheckTransaction())
+            return error("CheckBlock() : CheckTransaction failed");
+
+    // Check proof of work matches claimed amount
+    if (CBigNum().SetCompact(nBits) > bnProofOfWorkLimit)
+        return error("CheckBlock() : nBits below minimum work");
+    if (GetHash() > CBigNum().SetCompact(nBits).getuint256())
+        return error("CheckBlock() : hash doesn't match nBits");
+
+    // Check merkleroot
+    if (hashMerkleRoot != BuildMerkleTree())
+        return error("CheckBlock() : hashMerkleRoot mismatch");
+
+    return true;
+}
+
+bool CBlock::AcceptBlock()
+{
+    // Check for duplicate
+    uint256 hash = GetHash();
+    if (mapBlockIndex.count(hash))
+        return error("AcceptBlock() : block already in mapBlockIndex");
+
+    // Get prev block index
+    map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hashPrevBlock);
+    if (mi == mapBlockIndex.end())
+        return error("AcceptBlock() : prev block not found");
+    CBlockIndex* pindexPrev = (*mi).second;
+
+    // Check timestamp against prev
+    if (nTime <= pindexPrev->GetMedianTimePast())
+        return error("AcceptBlock() : block's timestamp is too early");
+
+    // Check proof of work
+    if (nBits != GetNextWorkRequired(pindexPrev))
+        return error("AcceptBlock() : incorrect proof of work");
+
+    // Write block to history file
+    if (!CheckDiskSpace(::GetSerializeSize(*this, SER_DISK)))
+        return error("AcceptBlock() : out of disk space");
+    unsigned int nFile;
+    unsigned int nBlockPos;
+    if (!WriteToDisk(!fClient, nFile, nBlockPos))
+        return error("AcceptBlock() : WriteToDisk failed");
+    if (!AddToBlockIndex(nFile, nBlockPos))
+        return error("AcceptBlock() : AddToBlockIndex failed");
+
+    if (hashBestChain == hash)
+        RelayInventory(CInv(MSG_BLOCK, hash));
+
+    // // Add atoms to user reviews for coins created
+    // vector<unsigned char> vchPubKey;
+    // if (ExtractPubKey(vtx[0].vout[0].scriptPubKey, false, vchPubKey))
+    // {
+    //     unsigned short nAtom = GetRand(USHRT_MAX - 100) + 100;
+    //     vector<unsigned short> vAtoms(1, nAtom);
+    //     AddAtomsAndPropagate(Hash(vchPubKey.begin(), vchPubKey.end()), vAtoms, true);
+    // }
+
+    return true;
+}
+
+bool ProcessBlock(CNode* pfrom, CBlock* pblock)
+{
+    // Check for duplicate
+    uint256 hash = pblock->GetHash();
+    if (mapBlockIndex.count(hash))
+        return error("ProcessBlock() : already have block %d %s", mapBlockIndex[hash]->nHeight, hash.ToString().substr(0,14).c_str());
+    if (mapOrphanBlocks.count(hash))
+        return error("ProcessBlock() : already have block (orphan) %s", hash.ToString().substr(0,14).c_str());
+
+    // Preliminary checks
+    if (!pblock->CheckBlock())
+    {
+        delete pblock;
+        return error("ProcessBlock() : CheckBlock FAILED");
+    }
+
+    // If don't already have its previous block, shunt it off to holding area until we get it
+    if (!mapBlockIndex.count(pblock->hashPrevBlock))
+    {
+        printf("ProcessBlock: ORPHAN BLOCK, prev=%s\n", pblock->hashPrevBlock.ToString().substr(0,14).c_str());
+        mapOrphanBlocks.insert(make_pair(hash, pblock));
+        mapOrphanBlocksByPrev.insert(make_pair(pblock->hashPrevBlock, pblock));
+
+        // Ask this guy to fill in what we're missing
+        if (pfrom)
+            pfrom->PushMessage("getblocks", CBlockLocator(pindexBest), GetOrphanRoot(pblock));
+        return true;
+    }
+
+    // Store to disk
+    if (!pblock->AcceptBlock())
+    {
+        delete pblock;
+        return error("ProcessBlock() : AcceptBlock FAILED");
+    }
+    delete pblock;
+
+    // Recursively process any orphan blocks that depended on this one
+    vector<uint256> vWorkQueue;
+    vWorkQueue.push_back(hash);
+    for (int i = 0; i < vWorkQueue.size(); i++)
+    {
+        uint256 hashPrev = vWorkQueue[i];
+        for (multimap<uint256, CBlock*>::iterator mi = mapOrphanBlocksByPrev.lower_bound(hashPrev);
+             mi != mapOrphanBlocksByPrev.upper_bound(hashPrev);
+             ++mi)
+        {
+            CBlock* pblockOrphan = (*mi).second;
+            if (pblockOrphan->AcceptBlock())
+                vWorkQueue.push_back(pblockOrphan->GetHash());
+            mapOrphanBlocks.erase(pblockOrphan->GetHash());
+            delete pblockOrphan;
+        }
+        mapOrphanBlocksByPrev.erase(hashPrev);
+    }
+
+    printf("ProcessBlock: ACCEPTED\n");
+    return true;
+}
+
+
+
+
+
+
+
+
+template<typename Stream>
+bool ScanMessageStart(Stream& s)
+{
+    // Scan ahead to the next pchMessageStart, which should normally be immediately
+    // at the file pointer.  Leaves file pointer at end of pchMessageStart.
+    s.clear(0);
+    short prevmask = s.exceptions(0);
+    const char* p = BEGIN(pchMessageStart);
+    try
+    {
+        loop
+        {
+            char c;
+            s.read(&c, 1);
+            if (s.fail())
+            {
+                s.clear(0);
+                s.exceptions(prevmask);
+                return false;
+            }
+            if (*p != c)
+                p = BEGIN(pchMessageStart);
+            if (*p == c)
+            {
+                if (++p == END(pchMessageStart))
+                {
+                    s.clear(0);
+                    s.exceptions(prevmask);
+                    return true;
+                }
+            }
+        }
+    }
+    catch (...)
+    {
+        s.clear(0);
+        s.exceptions(prevmask);
+        return false;
+    }
+}
+
+string GetAppDir()
+{
+    string strDir;
+    if (!strSetDataDir.empty())
+    {
+        strDir = strSetDataDir;
+    }
+    else if (getenv("APPDATA"))
+    {
+        strDir = strprintf("%s\\Bitcoin", getenv("APPDATA"));
+    }
+    else if (getenv("USERPROFILE"))
+    {
+        string strAppData = strprintf("%s\\Application Data", getenv("USERPROFILE"));
+        static bool fMkdirDone;
+        if (!fMkdirDone)
+        {
+            fMkdirDone = true;
+            _mkdir(strAppData.c_str());
+        }
+        strDir = strprintf("%s\\Bitcoin", strAppData.c_str());
+    }
+    else
+    {
+        return ".";
+    }
+    static bool fMkdirDone;
+    if (!fMkdirDone)
+    {
+        fMkdirDone = true;
+        _mkdir(strDir.c_str());
+    }
+    return strDir;
+}
+
+bool CheckDiskSpace(int64 nAdditionalBytes)
+{
+    uint64 nFreeBytesAvailable = 0;     // bytes available to caller
+    uint64 nTotalNumberOfBytes = 0;     // bytes on disk
+    uint64 nTotalNumberOfFreeBytes = 0; // free bytes on disk
+
+    if (!GetDiskFreeSpaceEx(GetAppDir().c_str(),
+            (PULARGE_INTEGER)&nFreeBytesAvailable,
+            (PULARGE_INTEGER)&nTotalNumberOfBytes,
+            (PULARGE_INTEGER)&nTotalNumberOfFreeBytes))
+    {
+        printf("ERROR: GetDiskFreeSpaceEx() failed\n");
+        return true;
+    }
+
+    // Check for 15MB because database could create another 10MB log file at any time
+    if ((int64)nFreeBytesAvailable < 15000000 + nAdditionalBytes)
+    {
+        fShutdown = true;
+        wxMessageBox("Warning: Your disk space is low  ", "Bitcoin", wxICON_EXCLAMATION);
+        _beginthread(Shutdown, 0, NULL);
+        return false;
+    }
+    return true;
+}
+
+FILE* OpenBlockFile(unsigned int nFile, unsigned int nBlockPos, const char* pszMode)
+{
+    if (nFile == -1)
+        return NULL;
+    FILE* file = fopen(strprintf("%s\\blk%04d.dat", GetAppDir().c_str(), nFile).c_str(), pszMode);
+    if (!file)
+        return NULL;
+    if (nBlockPos != 0 && !strchr(pszMode, 'a') && !strchr(pszMode, 'w'))
+    {
+        if (fseek(file, nBlockPos, SEEK_SET) != 0)
+        {
+            fclose(file);
+            return NULL;
+        }
+    }
+    return file;
+}
+
+static unsigned int nCurrentBlockFile = 1;
+
+FILE* AppendBlockFile(unsigned int& nFileRet)
+{
+    nFileRet = 0;
+    loop
+    {
+        FILE* file = OpenBlockFile(nCurrentBlockFile, 0, "ab");
+        if (!file)
+            return NULL;
+        if (fseek(file, 0, SEEK_END) != 0)
+            return NULL;
+        // FAT32 filesize max 4GB, fseek and ftell max 2GB, so we must stay under 2GB
+        if (ftell(file) < 0x7F000000 - MAX_SIZE)
+        {
+            nFileRet = nCurrentBlockFile;
+            return file;
+        }
+        fclose(file);
+        nCurrentBlockFile++;
+    }
+}
+
+bool LoadBlockIndex(bool fAllowNew)
+{
+    //
+    // Load block index
+    //
+    CTxDB txdb("cr");
+    if (!txdb.LoadBlockIndex())
+        return false;
+    txdb.Close();
+
+    //
+    // Init with genesis block
+    //
+    if (mapBlockIndex.empty())
+    {
+        if (!fAllowNew)
+            return false;
+
+
+        // Genesis Block:
+        // GetHash()      = 0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
+        // hashMerkleRoot = 0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
+        // txNew.vin[0].scriptSig     = 486604799 4 0x736B6E616220726F662074756F6C69616220646E6F63657320666F206B6E697262206E6F20726F6C6C65636E61684320393030322F6E614A2F33302073656D695420656854
+        // txNew.vout[0].nValue       = 5000000000
+        // txNew.vout[0].scriptPubKey = 0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704 OP_CHECKSIG
+        // block.nVersion = 1
+        // block.nTime    = 1231006505
+        // block.nBits    = 0x1d00ffff
+        // block.nNonce   = 2083236893
+        // CBlock(hash=000000000019d6, ver=1, hashPrevBlock=00000000000000, hashMerkleRoot=4a5e1e, nTime=1231006505, nBits=1d00ffff, nNonce=2083236893, vtx=1)
+        //   CTransaction(hash=4a5e1e, ver=1, vin.size=1, vout.size=1, nLockTime=0)
+        //     CTxIn(COutPoint(000000, -1), coinbase 04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73)
+        //     CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)
+        //   vMerkleTree: 4a5e1e
+
+        // Genesis block
+        char* pszTimestamp = "The Times 03/Jan/2009 Chancellor on brink of second bailout for banks";
+        CTransaction txNew;
+        txNew.vin.resize(1);
+        txNew.vout.resize(1);
+        txNew.vin[0].scriptSig     = CScript() << 486604799 << CBigNum(4) << vector<unsigned char>((unsigned char*)pszTimestamp, (unsigned char*)pszTimestamp + strlen(pszTimestamp));
+        txNew.vout[0].nValue       = 50 * COIN;
+        txNew.vout[0].scriptPubKey = CScript() << CBigNum("0x5F1DF16B2B704C8A578D0BBAF74D385CDE12C11EE50455F3C438EF4C3FBCF649B6DE611FEAE06279A60939E028A8D65C10B73071A6F16719274855FEB0FD8A6704") << OP_CHECKSIG;
+        CBlock block;
+        block.vtx.push_back(txNew);
+        block.hashPrevBlock = 0;
+        block.hashMerkleRoot = block.BuildMerkleTree();
+        block.nVersion = 1;
+        block.nTime    = 1231006505;
+        block.nBits    = 0x1d00ffff;
+        block.nNonce   = 2083236893;
+
+            //// debug print, delete this later
+            printf("%s\n", block.GetHash().ToString().c_str());
+            printf("%s\n", block.hashMerkleRoot.ToString().c_str());
+            printf("%s\n", hashGenesisBlock.ToString().c_str());
+            txNew.vout[0].scriptPubKey.print();
+            block.print();
+            assert(block.hashMerkleRoot == uint256("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
+
+        assert(block.GetHash() == hashGenesisBlock);
+
+        // Start new block file
+        unsigned int nFile;
+        unsigned int nBlockPos;
+        if (!block.WriteToDisk(!fClient, nFile, nBlockPos))
+            return error("LoadBlockIndex() : writing genesis block to disk failed");
+        if (!block.AddToBlockIndex(nFile, nBlockPos))
+            return error("LoadBlockIndex() : genesis block not accepted");
+    }
+
+    return true;
+}
+
+
+
+void PrintBlockTree()
+{
+    // precompute tree structure
+    map<CBlockIndex*, vector<CBlockIndex*> > mapNext;
+    for (map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.begin(); mi != mapBlockIndex.end(); ++mi)
+    {
+        CBlockIndex* pindex = (*mi).second;
+        mapNext[pindex->pprev].push_back(pindex);
+        // test
+        //while (rand() % 3 == 0)
+        //    mapNext[pindex->pprev].push_back(pindex);
+    }
+
+    vector<pair<int, CBlockIndex*> > vStack;
+    vStack.push_back(make_pair(0, pindexGenesisBlock));
+
+    int nPrevCol = 0;
+    while (!vStack.empty())
+    {
+        int nCol = vStack.back().first;
+        CBlockIndex* pindex = vStack.back().second;
+        vStack.pop_back();
+
+        // print split or gap
+        if (nCol > nPrevCol)
+        {
+            for (int i = 0; i < nCol-1; i++)
+                printf("| ");
+            printf("|\\\n");
+        }
+        else if (nCol < nPrevCol)
+        {
+            for (int i = 0; i < nCol; i++)
+                printf("| ");
+            printf("|\n");
+        }
+        nPrevCol = nCol;
+
+        // print columns
+        for (int i = 0; i < nCol; i++)
+            printf("| ");
+
+        // print item
+        CBlock block;
+        block.ReadFromDisk(pindex, true);
+        printf("%d (%u,%u) %s  %s  tx %d",
+            pindex->nHeight,
+            pindex->nFile,
+            pindex->nBlockPos,
+            block.GetHash().ToString().substr(0,14).c_str(),
+            DateTimeStr(block.nTime).c_str(),
+            block.vtx.size());
+
+        CRITICAL_BLOCK(cs_mapWallet)
+        {
+            if (mapWallet.count(block.vtx[0].GetHash()))
+            {
+                CWalletTx& wtx = mapWallet[block.vtx[0].GetHash()];
+                printf("    mine:  %d  %d  %d", wtx.GetDepthInMainChain(), wtx.GetBlocksToMaturity(), wtx.GetCredit());
+            }
+        }
+        printf("\n");
+
+
+        // put the main timechain first
+        vector<CBlockIndex*>& vNext = mapNext[pindex];
+        for (int i = 0; i < vNext.size(); i++)
+        {
+            if (vNext[i]->pnext)
+            {
+                swap(vNext[0], vNext[i]);
+                break;
+            }
+        }
+
+        // iterate children
+        for (int i = 0; i < vNext.size(); i++)
+            vStack.push_back(make_pair(nCol+i, vNext[i]));
+    }
+}
+
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// Messages
+//
+
+
+bool AlreadyHave(CTxDB& txdb, const CInv& inv)
+{
+    switch (inv.type)
+    {
+    case MSG_TX:        return mapTransactions.count(inv.hash) || txdb.ContainsTx(inv.hash);
+    case MSG_BLOCK:     return mapBlockIndex.count(inv.hash) || mapOrphanBlocks.count(inv.hash);
+    case MSG_REVIEW:    return true;
+    case MSG_PRODUCT:   return mapProducts.count(inv.hash);
+    }
+    // Don't know what it is, just say we already got one
+    return true;
+}
+
+
+
+
+
+
+
+bool ProcessMessages(CNode* pfrom)
+{
+    CDataStream& vRecv = pfrom->vRecv;
+    if (vRecv.empty())
+        return true;
+    printf("ProcessMessages(%d bytes)\n", vRecv.size());
+
+    //
+    // Message format
+    //  (4) message start
+    //  (12) command
+    //  (4) size
+    //  (x) data
+    //
+
+    loop
+    {
+        // Scan for message start
+        CDataStream::iterator pstart = search(vRecv.begin(), vRecv.end(), BEGIN(pchMessageStart), END(pchMessageStart));
+        if (vRecv.end() - pstart < sizeof(CMessageHeader))
+        {
+            if (vRecv.size() > sizeof(CMessageHeader))
+            {
+                printf("\n\nPROCESSMESSAGE MESSAGESTART NOT FOUND\n\n");
+                vRecv.erase(vRecv.begin(), vRecv.end() - sizeof(CMessageHeader));
+            }
+            break;
+        }
+        if (pstart - vRecv.begin() > 0)
+            printf("\n\nPROCESSMESSAGE SKIPPED %d BYTES\n\n", pstart - vRecv.begin());
+        vRecv.erase(vRecv.begin(), pstart);
+
+        // Read header
+        CMessageHeader hdr;
+        vRecv >> hdr;
+        if (!hdr.IsValid())
+        {
+            printf("\n\nPROCESSMESSAGE: ERRORS IN HEADER %s\n\n\n", hdr.GetCommand().c_str());
+            continue;
+        }
+        string strCommand = hdr.GetCommand();
+
+        // Message size
+        unsigned int nMessageSize = hdr.nMessageSize;
+        if (nMessageSize > vRecv.size())
+        {
+            // Rewind and wait for rest of message
+            ///// need a mechanism to give up waiting for overlong message size error
+            printf("MESSAGE-BREAK\n");
+            vRecv.insert(vRecv.begin(), BEGIN(hdr), END(hdr));
+            Sleep(100);
+            break;
+        }
+
+        // Copy message to its own buffer
+        CDataStream vMsg(vRecv.begin(), vRecv.begin() + nMessageSize, vRecv.nType, vRecv.nVersion);
+        vRecv.ignore(nMessageSize);
+
+        // Process message
+        bool fRet = false;
+        try
+        {
+            CheckForShutdown(2);
+            CRITICAL_BLOCK(cs_main)
+                fRet = ProcessMessage(pfrom, strCommand, vMsg);
+            CheckForShutdown(2);
+        }
+        CATCH_PRINT_EXCEPTION("ProcessMessage()")
+        if (!fRet)
+            printf("ProcessMessage(%s, %d bytes) from %s to %s FAILED\n", strCommand.c_str(), nMessageSize, pfrom->addr.ToString().c_str(), addrLocalHost.ToString().c_str());
+    }
+
+    vRecv.Compact();
+    return true;
+}
+
+
+
+
+bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
+{
+    static map<unsigned int, vector<unsigned char> > mapReuseKey;
+    printf("received: %-12s (%d bytes)  ", strCommand.c_str(), vRecv.size());
+    for (int i = 0; i < min(vRecv.size(), (unsigned int)20); i++)
+        printf("%02x ", vRecv[i] & 0xff);
+    printf("\n");
+    if (nDropMessagesTest > 0 && GetRand(nDropMessagesTest) == 0)
+    {
+        printf("dropmessages DROPPING RECV MESSAGE\n");
+        return true;
+    }
+
+
+
+    if (strCommand == "version")
+    {
+        // Can only do this once
+        if (pfrom->nVersion != 0)
+            return false;
+
+        int64 nTime;
+        CAddress addrMe;
+        vRecv >> pfrom->nVersion >> pfrom->nServices >> nTime >> addrMe;
+        if (pfrom->nVersion == 0)
+            return false;
+
+        pfrom->vSend.SetVersion(min(pfrom->nVersion, VERSION));
+        pfrom->vRecv.SetVersion(min(pfrom->nVersion, VERSION));
+
+        pfrom->fClient = !(pfrom->nServices & NODE_NETWORK);
+        if (pfrom->fClient)
+        {
+            pfrom->vSend.nType |= SER_BLOCKHEADERONLY;
+            pfrom->vRecv.nType |= SER_BLOCKHEADERONLY;
+        }
+
+        AddTimeData(pfrom->addr.ip, nTime);
+
+        // Ask the first connected node for block updates
+        static bool fAskedForBlocks;
+        if (!fAskedForBlocks && !pfrom->fClient)
+        {
+            fAskedForBlocks = true;
+            pfrom->PushMessage("getblocks", CBlockLocator(pindexBest), uint256(0));
+        }
+
+        printf("version message: %s has version %d, addrMe=%s\n", pfrom->addr.ToString().c_str(), pfrom->nVersion, addrMe.ToString().c_str());
+    }
+
+
+    else if (pfrom->nVersion == 0)
+    {
+        // Must have a version message before anything else
+        return false;
+    }
+
+
+    else if (strCommand == "addr")
+    {
+        vector<CAddress> vAddr;
+        vRecv >> vAddr;
+
+        // Store the new addresses
+        CAddrDB addrdb;
+        foreach(const CAddress& addr, vAddr)
+        {
+            if (fShutdown)
+                return true;
+            if (AddAddress(addrdb, addr))
+            {
+                // Put on lists to send to other nodes
+                pfrom->setAddrKnown.insert(addr);
+                CRITICAL_BLOCK(cs_vNodes)
+                    foreach(CNode* pnode, vNodes)
+                        if (!pnode->setAddrKnown.count(addr))
+                            pnode->vAddrToSend.push_back(addr);
+            }
+        }
+    }
+
+
+    else if (strCommand == "inv")
+    {
+        vector<CInv> vInv;
+        vRecv >> vInv;
+
+        CTxDB txdb("r");
+        foreach(const CInv& inv, vInv)
+        {
+            if (fShutdown)
+                return true;
+            pfrom->AddInventoryKnown(inv);
+
+            bool fAlreadyHave = AlreadyHave(txdb, inv);
+            printf("  got inventory: %s  %s\n", inv.ToString().c_str(), fAlreadyHave ? "have" : "new");
+
+            if (!fAlreadyHave)
+                pfrom->AskFor(inv);
+            else if (inv.type == MSG_BLOCK && mapOrphanBlocks.count(inv.hash))
+                pfrom->PushMessage("getblocks", CBlockLocator(pindexBest), GetOrphanRoot(mapOrphanBlocks[inv.hash]));
+        }
+    }
+
+
+    else if (strCommand == "getdata")
+    {
+        vector<CInv> vInv;
+        vRecv >> vInv;
+
+        foreach(const CInv& inv, vInv)
+        {
+            if (fShutdown)
+                return true;
+            printf("received getdata for: %s\n", inv.ToString().c_str());
+
+            if (inv.type == MSG_BLOCK)
+            {
+                // Send block from disk
+                map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(inv.hash);
+                if (mi != mapBlockIndex.end())
+                {
+                    //// could optimize this to send header straight from blockindex for client
+                    CBlock block;
+                    block.ReadFromDisk((*mi).second, !pfrom->fClient);
+                    pfrom->PushMessage("block", block);
+                }
+            }
+            else if (inv.IsKnownType())
+            {
+                // Send stream from relay memory
+                CRITICAL_BLOCK(cs_mapRelay)
+                {
+                    map<CInv, CDataStream>::iterator mi = mapRelay.find(inv);
+                    if (mi != mapRelay.end())
+                        pfrom->PushMessage(inv.GetCommand(), (*mi).second);
+                }
+            }
+        }
+    }
+
+
+    else if (strCommand == "getblocks")
+    {
+        CBlockLocator locator;
+        uint256 hashStop;
+        vRecv >> locator >> hashStop;
+
+        // Find the first block the caller has in the main chain
+        CBlockIndex* pindex = locator.GetBlockIndex();
+
+        // Send the rest of the chain
+        if (pindex)
+            pindex = pindex->pnext;
+        printf("getblocks %d to %s\n", (pindex ? pindex->nHeight : -1), hashStop.ToString().substr(0,14).c_str());
+        for (; pindex; pindex = pindex->pnext)
+        {
+            if (pindex->GetBlockHash() == hashStop)
+            {
+                printf("  getblocks stopping at %d %s\n", pindex->nHeight, pindex->GetBlockHash().ToString().substr(0,14).c_str());
+                break;
+            }
+
+            // Bypass setInventoryKnown in case an inventory message got lost
+            CRITICAL_BLOCK(pfrom->cs_inventory)
+            {
+                CInv inv(MSG_BLOCK, pindex->GetBlockHash());
+                // returns true if wasn't already contained in the set
+                if (pfrom->setInventoryKnown2.insert(inv).second)
+                {
+                    pfrom->setInventoryKnown.erase(inv);
+                    pfrom->vInventoryToSend.push_back(inv);
+                }
+            }
+        }
+    }
+
+
+    else if (strCommand == "tx")
+    {
+        vector<uint256> vWorkQueue;
+        CDataStream vMsg(vRecv);
+        CTransaction tx;
+        vRecv >> tx;
+
+        CInv inv(MSG_TX, tx.GetHash());
+        pfrom->AddInventoryKnown(inv);
+
+        bool fMissingInputs = false;
+        if (tx.AcceptTransaction(true, &fMissingInputs))
+        {
+            AddToWalletIfMine(tx, NULL);
+            RelayMessage(inv, vMsg);
+            mapAlreadyAskedFor.erase(inv);
+            vWorkQueue.push_back(inv.hash);
+
+            // Recursively process any orphan transactions that depended on this one
+            for (int i = 0; i < vWorkQueue.size(); i++)
+            {
+                uint256 hashPrev = vWorkQueue[i];
+                for (multimap<uint256, CDataStream*>::iterator mi = mapOrphanTransactionsByPrev.lower_bound(hashPrev);
+                     mi != mapOrphanTransactionsByPrev.upper_bound(hashPrev);
+                     ++mi)
+                {
+                    const CDataStream& vMsg = *((*mi).second);
+                    CTransaction tx;
+                    CDataStream(vMsg) >> tx;
+                    CInv inv(MSG_TX, tx.GetHash());
+
+                    if (tx.AcceptTransaction(true))
+                    {
+                        printf("   accepted orphan tx %s\n", inv.hash.ToString().substr(0,6).c_str());
+                        AddToWalletIfMine(tx, NULL);
+                        RelayMessage(inv, vMsg);
+                        mapAlreadyAskedFor.erase(inv);
+                        vWorkQueue.push_back(inv.hash);
+                    }
+                }
+            }
+
+            foreach(uint256 hash, vWorkQueue)
+                EraseOrphanTx(hash);
+        }
+        else if (fMissingInputs)
+        {
+            printf("storing orphan tx %s\n", inv.hash.ToString().substr(0,6).c_str());
+            AddOrphanTx(vMsg);
+        }
+    }
+
+
+    else if (strCommand == "review")
+    {
+        CDataStream vMsg(vRecv);
+        CReview review;
+        vRecv >> review;
+
+        CInv inv(MSG_REVIEW, review.GetHash());
+        pfrom->AddInventoryKnown(inv);
+
+        if (review.AcceptReview())
+        {
+            // Relay the original message as-is in case it's a higher version than we know how to parse
+            RelayMessage(inv, vMsg);
+            mapAlreadyAskedFor.erase(inv);
+        }
+    }
+
+
+    else if (strCommand == "block")
+    {
+        auto_ptr<CBlock> pblock(new CBlock);
+        vRecv >> *pblock;
+
+        //// debug print
+        printf("received block:\n"); pblock->print();
+
+        CInv inv(MSG_BLOCK, pblock->GetHash());
+        pfrom->AddInventoryKnown(inv);
+
+        if (ProcessBlock(pfrom, pblock.release()))
+            mapAlreadyAskedFor.erase(inv);
+    }
+
+
+    else if (strCommand == "getaddr")
+    {
+        pfrom->vAddrToSend.clear();
+        int64 nSince = GetAdjustedTime() - 5 * 24 * 60 * 60; // in the last 5 days
+        CRITICAL_BLOCK(cs_mapAddresses)
+        {
+            unsigned int nSize = mapAddresses.size();
+            foreach(const PAIRTYPE(vector<unsigned char>, CAddress)& item, mapAddresses)
+            {
+                if (fShutdown)
+                    return true;
+                const CAddress& addr = item.second;
+                //// will need this if we lose IRC
+                //if (addr.nTime > nSince || (rand() % nSize) < 500)
+                if (addr.nTime > nSince)
+                    pfrom->vAddrToSend.push_back(addr);
+            }
+        }
+    }
+
+
+    else if (strCommand == "checkorder")
+    {
+        uint256 hashReply;
+        CWalletTx order;
+        vRecv >> hashReply >> order;
+
+        /// we have a chance to check the order here
+
+        // Keep giving the same key to the same ip until they use it
+        if (!mapReuseKey.count(pfrom->addr.ip))
+            mapReuseKey[pfrom->addr.ip] = GenerateNewKey();
+
+        // Send back approval of order and pubkey to use
+        CScript scriptPubKey;
+        scriptPubKey << mapReuseKey[pfrom->addr.ip] << OP_CHECKSIG;
+        pfrom->PushMessage("reply", hashReply, (int)0, scriptPubKey);
+    }
+
+
+    else if (strCommand == "submitorder")
+    {
+        uint256 hashReply;
+        CWalletTx wtxNew;
+        vRecv >> hashReply >> wtxNew;
+
+        // Broadcast
+        if (!wtxNew.AcceptWalletTransaction())
+        {
+            pfrom->PushMessage("reply", hashReply, (int)1);
+            return error("submitorder AcceptWalletTransaction() failed, returning error 1");
+        }
+        wtxNew.fTimeReceivedIsTxTime = true;
+        AddToWallet(wtxNew);
+        wtxNew.RelayWalletTransaction();
+        mapReuseKey.erase(pfrom->addr.ip);
+
+        // Send back confirmation
+        pfrom->PushMessage("reply", hashReply, (int)0);
+    }
+
+
+    else if (strCommand == "reply")
+    {
+        uint256 hashReply;
+        vRecv >> hashReply;
+
+        CRequestTracker tracker;
+        CRITICAL_BLOCK(pfrom->cs_mapRequests)
+        {
+            map<uint256, CRequestTracker>::iterator mi = pfrom->mapRequests.find(hashReply);
+            if (mi != pfrom->mapRequests.end())
+            {
+                tracker = (*mi).second;
+                pfrom->mapRequests.erase(mi);
+            }
+        }
+        if (!tracker.IsNull())
+            tracker.fn(tracker.param1, vRecv);
+    }
+
+
+    else
+    {
+        // Ignore unknown commands for extensibility
+        printf("ProcessMessage(%s) : Ignored unknown message\n", strCommand.c_str());
+    }
+
+
+    if (!vRecv.empty())
+        printf("ProcessMessage(%s) : %d extra bytes\n", strCommand.c_str(), vRecv.size());
+
+    return true;
+}
+
+
+
+
+
+
+
+
+
+bool SendMessages(CNode* pto)
+{
+    CheckForShutdown(2);
+    CRITICAL_BLOCK(cs_main)
+    {
+        // Don't send anything until we get their version message
+        if (pto->nVersion == 0)
+            return true;
+
+
+        //
+        // Message: addr
+        //
+        vector<CAddress> vAddrToSend;
+        vAddrToSend.reserve(pto->vAddrToSend.size());
+        foreach(const CAddress& addr, pto->vAddrToSend)
+            if (!pto->setAddrKnown.count(addr))
+                vAddrToSend.push_back(addr);
+        pto->vAddrToSend.clear();
+        if (!vAddrToSend.empty())
+            pto->PushMessage("addr", vAddrToSend);
+
+
+        //
+        // Message: inventory
+        //
+        vector<CInv> vInventoryToSend;
+        CRITICAL_BLOCK(pto->cs_inventory)
+        {
+            vInventoryToSend.reserve(pto->vInventoryToSend.size());
+            foreach(const CInv& inv, pto->vInventoryToSend)
+            {
+                // returns true if wasn't already contained in the set
+                if (pto->setInventoryKnown.insert(inv).second)
+                    vInventoryToSend.push_back(inv);
+            }
+            pto->vInventoryToSend.clear();
+            pto->setInventoryKnown2.clear();
+        }
+        if (!vInventoryToSend.empty())
+            pto->PushMessage("inv", vInventoryToSend);
+
+
+        //
+        // Message: getdata
+        //
+        vector<CInv> vAskFor;
+        int64 nNow = GetTime() * 1000000;
+        CTxDB txdb("r");
+        while (!pto->mapAskFor.empty() && (*pto->mapAskFor.begin()).first <= nNow)
+        {
+            const CInv& inv = (*pto->mapAskFor.begin()).second;
+            printf("sending getdata: %s\n", inv.ToString().c_str());
+            if (!AlreadyHave(txdb, inv))
+                vAskFor.push_back(inv);
+            pto->mapAskFor.erase(pto->mapAskFor.begin());
+        }
+        if (!vAskFor.empty())
+            pto->PushMessage("getdata", vAskFor);
+
+    }
+    return true;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// BitcoinMiner
+//
+
+int FormatHashBlocks(void* pbuffer, unsigned int len)
+{
+    unsigned char* pdata = (unsigned char*)pbuffer;
+    unsigned int blocks = 1 + ((len + 8) / 64);
+    unsigned char* pend = pdata + 64 * blocks;
+    memset(pdata + len, 0, 64 * blocks - len);
+    pdata[len] = 0x80;
+    unsigned int bits = len * 8;
+    pend[-1] = (bits >> 0) & 0xff;
+    pend[-2] = (bits >> 8) & 0xff;
+    pend[-3] = (bits >> 16) & 0xff;
+    pend[-4] = (bits >> 24) & 0xff;
+    return blocks;
+}
+
+using CryptoPP::ByteReverse;
+static int detectlittleendian = 1;
+
+void BlockSHA256(const void* pin, unsigned int nBlocks, void* pout)
+{
+    unsigned int* pinput = (unsigned int*)pin;
+    unsigned int* pstate = (unsigned int*)pout;
+
+    CryptoPP::SHA256::InitState(pstate);
+
+    if (*(char*)&detectlittleendian != 0)
+    {
+        for (int n = 0; n < nBlocks; n++)
+        {
+            unsigned int pbuf[16];
+            for (int i = 0; i < 16; i++)
+                pbuf[i] = ByteReverse(pinput[n * 16 + i]);
+            CryptoPP::SHA256::Transform(pstate, pbuf);
+        }
+        for (int i = 0; i < 8; i++)
+            pstate[i] = ByteReverse(pstate[i]);
+    }
+    else
+    {
+        for (int n = 0; n < nBlocks; n++)
+            CryptoPP::SHA256::Transform(pstate, pinput + n * 16);
+    }
+}
+
+
+bool BitcoinMiner()
+{
+    printf("BitcoinMiner started\n");
+    SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_LOWEST);
+
+    CKey key;
+    key.MakeNewKey();
+    CBigNum bnExtraNonce = 0;
+    while (fGenerateBitcoins)
+    {
+        Sleep(50);
+        CheckForShutdown(3);
+        while (vNodes.empty())
+        {
+            Sleep(1000);
+            CheckForShutdown(3);
+        }
+
+        unsigned int nTransactionsUpdatedLast = nTransactionsUpdated;
+        CBlockIndex* pindexPrev = pindexBest;
+        unsigned int nBits = GetNextWorkRequired(pindexPrev);
+
+
+        //
+        // Create coinbase tx
+        //
+        CTransaction txNew;
+        txNew.vin.resize(1);
+        txNew.vin[0].prevout.SetNull();
+        txNew.vin[0].scriptSig << nBits << ++bnExtraNonce;
+        txNew.vout.resize(1);
+        txNew.vout[0].scriptPubKey << key.GetPubKey() << OP_CHECKSIG;
+
+
+        //
+        // Create new block
+        //
+        auto_ptr<CBlock> pblock(new CBlock());
+        if (!pblock.get())
+            return false;
+
+        // Add our coinbase tx as first transaction
+        pblock->vtx.push_back(txNew);
+
+        // Collect the latest transactions into the block
+        int64 nFees = 0;
+        CRITICAL_BLOCK(cs_main)
+        CRITICAL_BLOCK(cs_mapTransactions)
+        {
+            CTxDB txdb("r");
+            map<uint256, CTxIndex> mapTestPool;
+            vector<char> vfAlreadyAdded(mapTransactions.size());
+            bool fFoundSomething = true;
+            unsigned int nBlockSize = 0;
+            while (fFoundSomething && nBlockSize < MAX_SIZE/2)
+            {
+                fFoundSomething = false;
+                unsigned int n = 0;
+                for (map<uint256, CTransaction>::iterator mi = mapTransactions.begin(); mi != mapTransactions.end(); ++mi, ++n)
+                {
+                    if (vfAlreadyAdded[n])
+                        continue;
+                    CTransaction& tx = (*mi).second;
+                    if (tx.IsCoinBase() || !tx.IsFinal())
+                        continue;
+
+                    // Transaction fee requirements, mainly only needed for flood control
+                    // Under 10K (about 80 inputs) is free for first 100 transactions
+                    // Base rate is 0.01 per KB
+                    int64 nMinFee = tx.GetMinFee(pblock->vtx.size() < 100);
+
+                    map<uint256, CTxIndex> mapTestPoolTmp(mapTestPool);
+                    if (!tx.ConnectInputs(txdb, mapTestPoolTmp, CDiskTxPos(1,1,1), 0, nFees, false, true, nMinFee))
+                        continue;
+                    swap(mapTestPool, mapTestPoolTmp);
+
+                    pblock->vtx.push_back(tx);
+                    nBlockSize += ::GetSerializeSize(tx, SER_NETWORK);
+                    vfAlreadyAdded[n] = true;
+                    fFoundSomething = true;
+                }
+            }
+        }
+        pblock->nBits = nBits;
+        pblock->vtx[0].vout[0].nValue = pblock->GetBlockValue(nFees);
+        printf("\n\nRunning BitcoinMiner with %d transactions in block\n", pblock->vtx.size());
+
+
+        //
+        // Prebuild hash buffer
+        //
+        struct unnamed1
+        {
+            struct unnamed2
+            {
+                int nVersion;
+                uint256 hashPrevBlock;
+                uint256 hashMerkleRoot;
+                unsigned int nTime;
+                unsigned int nBits;
+                unsigned int nNonce;
+            }
+            block;
+            unsigned char pchPadding0[64];
+            uint256 hash1;
+            unsigned char pchPadding1[64];
+        }
+        tmp;
+
+        tmp.block.nVersion       = pblock->nVersion;
+        tmp.block.hashPrevBlock  = pblock->hashPrevBlock  = (pindexPrev ? pindexPrev->GetBlockHash() : 0);
+        tmp.block.hashMerkleRoot = pblock->hashMerkleRoot = pblock->BuildMerkleTree();
+        tmp.block.nTime          = pblock->nTime          = max((pindexPrev ? pindexPrev->GetMedianTimePast()+1 : 0), GetAdjustedTime());
+        tmp.block.nBits          = pblock->nBits          = nBits;
+        tmp.block.nNonce         = pblock->nNonce         = 1;
+
+        unsigned int nBlocks0 = FormatHashBlocks(&tmp.block, sizeof(tmp.block));
+        unsigned int nBlocks1 = FormatHashBlocks(&tmp.hash1, sizeof(tmp.hash1));
+
+
+        //
+        // Search
+        //
+        unsigned int nStart = GetTime();
+        uint256 hashTarget = CBigNum().SetCompact(pblock->nBits).getuint256();
+        uint256 hash;
+        loop
+        {
+            BlockSHA256(&tmp.block, nBlocks0, &tmp.hash1);
+            BlockSHA256(&tmp.hash1, nBlocks1, &hash);
+
+
+            if (hash <= hashTarget)
+            {
+                pblock->nNonce = tmp.block.nNonce;
+                assert(hash == pblock->GetHash());
+
+                    //// debug print
+                    printf("BitcoinMiner:\n");
+                    printf("proof-of-work found  \n  hash: %s  \ntarget: %s\n", hash.GetHex().c_str(), hashTarget.GetHex().c_str());
+                    pblock->print();
+
+                SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL);
+                CRITICAL_BLOCK(cs_main)
+                {
+                    // Save key
+                    if (!AddKey(key))
+                        return false;
+                    key.MakeNewKey();
+
+                    // Process this block the same as if we had received it from another node
+                    if (!ProcessBlock(NULL, pblock.release()))
+                        printf("ERROR in BitcoinMiner, ProcessBlock, block not accepted\n");
+                }
+                SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_LOWEST);
+
+                Sleep(500);
+                break;
+            }
+
+            // Update nTime every few seconds
+            if ((++tmp.block.nNonce & 0x3ffff) == 0)
+            {
+                CheckForShutdown(3);
+                if (tmp.block.nNonce == 0)
+                    break;
+                if (pindexPrev != pindexBest)
+                    break;
+                if (nTransactionsUpdated != nTransactionsUpdatedLast && GetTime() - nStart > 60)
+                    break;
+                if (!fGenerateBitcoins)
+                    break;
+                tmp.block.nTime = pblock->nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
+            }
+        }
+    }
+
+    return true;
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// Actions
+//
+
+
+int64 GetBalance()
+{
+    int64 nStart, nEnd;
+    QueryPerformanceCounter((LARGE_INTEGER*)&nStart);
+
+    int64 nTotal = 0;
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        for (map<uint256, CWalletTx>::iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)
+        {
+            CWalletTx* pcoin = &(*it).second;
+            if (!pcoin->IsFinal() || pcoin->fSpent)
+                continue;
+            nTotal += pcoin->GetCredit();
+        }
+    }
+
+    QueryPerformanceCounter((LARGE_INTEGER*)&nEnd);
+    ///printf(" GetBalance() time = %16I64d\n", nEnd - nStart);
+    return nTotal;
+}
+
+
+
+bool SelectCoins(int64 nTargetValue, set<CWalletTx*>& setCoinsRet)
+{
+    setCoinsRet.clear();
+
+    // List of values less than target
+    int64 nLowestLarger = _I64_MAX;
+    CWalletTx* pcoinLowestLarger = NULL;
+    vector<pair<int64, CWalletTx*> > vValue;
+    int64 nTotalLower = 0;
+
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        for (map<uint256, CWalletTx>::iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)
+        {
+            CWalletTx* pcoin = &(*it).second;
+            if (!pcoin->IsFinal() || pcoin->fSpent)
+                continue;
+            int64 n = pcoin->GetCredit();
+            if (n <= 0)
+                continue;
+            if (n < nTargetValue)
+            {
+                vValue.push_back(make_pair(n, pcoin));
+                nTotalLower += n;
+            }
+            else if (n == nTargetValue)
+            {
+                setCoinsRet.insert(pcoin);
+                return true;
+            }
+            else if (n < nLowestLarger)
+            {
+                nLowestLarger = n;
+                pcoinLowestLarger = pcoin;
+            }
+        }
+    }
+
+    if (nTotalLower < nTargetValue)
+    {
+        if (pcoinLowestLarger == NULL)
+            return false;
+        setCoinsRet.insert(pcoinLowestLarger);
+        return true;
+    }
+
+    // Solve subset sum by stochastic approximation
+    sort(vValue.rbegin(), vValue.rend());
+    vector<char> vfIncluded;
+    vector<char> vfBest(vValue.size(), true);
+    int64 nBest = nTotalLower;
+
+    for (int nRep = 0; nRep < 1000 && nBest != nTargetValue; nRep++)
+    {
+        vfIncluded.assign(vValue.size(), false);
+        int64 nTotal = 0;
+        bool fReachedTarget = false;
+        for (int nPass = 0; nPass < 2 && !fReachedTarget; nPass++)
+        {
+            for (int i = 0; i < vValue.size(); i++)
+            {
+                if (nPass == 0 ? rand() % 2 : !vfIncluded[i])
+                {
+                    nTotal += vValue[i].first;
+                    vfIncluded[i] = true;
+                    if (nTotal >= nTargetValue)
+                    {
+                        fReachedTarget = true;
+                        if (nTotal < nBest)
+                        {
+                            nBest = nTotal;
+                            vfBest = vfIncluded;
+                        }
+                        nTotal -= vValue[i].first;
+                        vfIncluded[i] = false;
+                    }
+                }
+            }
+        }
+    }
+
+    // If the next larger is still closer, return it
+    if (pcoinLowestLarger && nLowestLarger - nTargetValue <= nBest - nTargetValue)
+        setCoinsRet.insert(pcoinLowestLarger);
+    else
+    {
+        for (int i = 0; i < vValue.size(); i++)
+            if (vfBest[i])
+                setCoinsRet.insert(vValue[i].second);
+
+        //// debug print
+        printf("SelectCoins() best subset: ");
+        for (int i = 0; i < vValue.size(); i++)
+            if (vfBest[i])
+                printf("%s ", FormatMoney(vValue[i].first).c_str());
+        printf("total %s\n", FormatMoney(nBest).c_str());
+    }
+
+    return true;
+}
+
+
+
+
+bool CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew, int64& nFeeRequiredRet)
+{
+    nFeeRequiredRet = 0;
+    CRITICAL_BLOCK(cs_main)
+    {
+        // txdb must be opened before the mapWallet lock
+        CTxDB txdb("r");
+        CRITICAL_BLOCK(cs_mapWallet)
+        {
+            int64 nFee = nTransactionFee;
+            loop
+            {
+                wtxNew.vin.clear();
+                wtxNew.vout.clear();
+                if (nValue < 0)
+                    return false;
+                int64 nValueOut = nValue;
+                nValue += nFee;
+
+                // Choose coins to use
+                set<CWalletTx*> setCoins;
+                if (!SelectCoins(nValue, setCoins))
+                    return false;
+                int64 nValueIn = 0;
+                foreach(CWalletTx* pcoin, setCoins)
+                    nValueIn += pcoin->GetCredit();
+
+                // Fill vout[0] to the payee
+                wtxNew.vout.push_back(CTxOut(nValueOut, scriptPubKey));
+
+                // Fill vout[1] back to self with any change
+                if (nValueIn > nValue)
+                {
+                    /// todo: for privacy, should randomize the order of outputs,
+                    //        would also have to use a new key for the change.
+                    // Use the same key as one of the coins
+                    vector<unsigned char> vchPubKey;
+                    CTransaction& txFirst = *(*setCoins.begin());
+                    foreach(const CTxOut& txout, txFirst.vout)
+                        if (txout.IsMine())
+                            if (ExtractPubKey(txout.scriptPubKey, true, vchPubKey))
+                                break;
+                    if (vchPubKey.empty())
+                        return false;
+
+                    // Fill vout[1] to ourself
+                    CScript scriptPubKey;
+                    scriptPubKey << vchPubKey << OP_CHECKSIG;
+                    wtxNew.vout.push_back(CTxOut(nValueIn - nValue, scriptPubKey));
+                }
+
+                // Fill vin
+                foreach(CWalletTx* pcoin, setCoins)
+                    for (int nOut = 0; nOut < pcoin->vout.size(); nOut++)
+                        if (pcoin->vout[nOut].IsMine())
+                            wtxNew.vin.push_back(CTxIn(pcoin->GetHash(), nOut));
+
+                // Sign
+                int nIn = 0;
+                foreach(CWalletTx* pcoin, setCoins)
+                    for (int nOut = 0; nOut < pcoin->vout.size(); nOut++)
+                        if (pcoin->vout[nOut].IsMine())
+                            SignSignature(*pcoin, wtxNew, nIn++);
+
+                // Check that enough fee is included
+                if (nFee < wtxNew.GetMinFee(true))
+                {
+                    nFee = nFeeRequiredRet = wtxNew.GetMinFee(true);
+                    continue;
+                }
+
+                // Fill vtxPrev by copying from previous transactions vtxPrev
+                wtxNew.AddSupportingTransactions(txdb);
+                wtxNew.fTimeReceivedIsTxTime = true;
+
+                break;
+            }
+        }
+    }
+    return true;
+}
+
+// Call after CreateTransaction unless you want to abort
+bool CommitTransactionSpent(const CWalletTx& wtxNew)
+{
+    CRITICAL_BLOCK(cs_main)
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        //// todo: make this transactional, never want to add a transaction
+        ////  without marking spent transactions
+
+        // Add tx to wallet, because if it has change it's also ours,
+        // otherwise just for transaction history.
+        AddToWallet(wtxNew);
+
+        // Mark old coins as spent
+        set<CWalletTx*> setCoins;
+        foreach(const CTxIn& txin, wtxNew.vin)
+            setCoins.insert(&mapWallet[txin.prevout.hash]);
+        foreach(CWalletTx* pcoin, setCoins)
+        {
+            pcoin->fSpent = true;
+            pcoin->WriteToDisk();
+            vWalletUpdated.push_back(make_pair(pcoin->GetHash(), false));
+        }
+    }
+    MainFrameRepaint();
+    return true;
+}
+
+
+
+
+bool SendMoney(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew)
+{
+    CRITICAL_BLOCK(cs_main)
+    {
+        int64 nFeeRequired;
+        if (!CreateTransaction(scriptPubKey, nValue, wtxNew, nFeeRequired))
+        {
+            string strError;
+            if (nValue + nFeeRequired > GetBalance())
+                strError = strprintf("Error: This is an oversized transaction that requires a transaction fee of %s  ", FormatMoney(nFeeRequired).c_str());
+            else
+                strError = "Error: Transaction creation failed  ";
+            wxMessageBox(strError, "Sending...");
+            return error("SendMoney() : %s\n", strError.c_str());
+        }
+        if (!CommitTransactionSpent(wtxNew))
+        {
+            wxMessageBox("Error finalizing transaction  ", "Sending...");
+            return error("SendMoney() : Error finalizing transaction");
+        }
+
+        printf("SendMoney: %s\n", wtxNew.GetHash().ToString().substr(0,6).c_str());
+
+        // Broadcast
+        if (!wtxNew.AcceptTransaction())
+        {
+            // This must not fail. The transaction has already been signed and recorded.
+            throw runtime_error("SendMoney() : wtxNew.AcceptTransaction() failed\n");
+            wxMessageBox("Error: Transaction not valid  ", "Sending...");
+            return error("SendMoney() : Error: Transaction not valid");
+        }
+        wtxNew.RelayWalletTransaction();
+    }
+    MainFrameRepaint();
+    return true;
+}
new file mode 100644
--- /dev/null
+++ b/main.h
@@ -0,0 +1,1329 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+class COutPoint;
+class CInPoint;
+class CDiskTxPos;
+class CCoinBase;
+class CTxIn;
+class CTxOut;
+class CTransaction;
+class CBlock;
+class CBlockIndex;
+class CWalletTx;
+class CKeyItem;
+
+static const unsigned int MAX_SIZE = 0x02000000;
+static const int64 COIN = 100000000;
+static const int64 CENT = 1000000;
+static const int COINBASE_MATURITY = 100;
+
+static const CBigNum bnProofOfWorkLimit(~uint256(0) >> 32);
+
+
+
+
+
+
+extern CCriticalSection cs_main;
+extern map<uint256, CBlockIndex*> mapBlockIndex;
+extern const uint256 hashGenesisBlock;
+extern CBlockIndex* pindexGenesisBlock;
+extern int nBestHeight;
+extern uint256 hashBestChain;
+extern CBlockIndex* pindexBest;
+extern unsigned int nTransactionsUpdated;
+extern string strSetDataDir;
+extern int nDropMessagesTest;
+
+// Settings
+extern int fGenerateBitcoins;
+extern int64 nTransactionFee;
+extern CAddress addrIncoming;
+
+
+
+
+
+
+
+string GetAppDir();
+bool CheckDiskSpace(int64 nAdditionalBytes=0);
+FILE* OpenBlockFile(unsigned int nFile, unsigned int nBlockPos, const char* pszMode="rb");
+FILE* AppendBlockFile(unsigned int& nFileRet);
+bool AddKey(const CKey& key);
+vector<unsigned char> GenerateNewKey();
+bool AddToWallet(const CWalletTx& wtxIn);
+void ReacceptWalletTransactions();
+void RelayWalletTransactions();
+bool LoadBlockIndex(bool fAllowNew=true);
+void PrintBlockTree();
+bool BitcoinMiner();
+bool ProcessMessages(CNode* pfrom);
+bool ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv);
+bool SendMessages(CNode* pto);
+int64 GetBalance();
+bool CreateTransaction(CScript scriptPubKey, int64 nValue, CWalletTx& txNew, int64& nFeeRequiredRet);
+bool CommitTransactionSpent(const CWalletTx& wtxNew);
+bool SendMoney(CScript scriptPubKey, int64 nValue, CWalletTx& wtxNew);
+
+
+
+
+
+
+
+
+
+
+
+class CDiskTxPos
+{
+public:
+    unsigned int nFile;
+    unsigned int nBlockPos;
+    unsigned int nTxPos;
+
+    CDiskTxPos()
+    {
+        SetNull();
+    }
+
+    CDiskTxPos(unsigned int nFileIn, unsigned int nBlockPosIn, unsigned int nTxPosIn)
+    {
+        nFile = nFileIn;
+        nBlockPos = nBlockPosIn;
+        nTxPos = nTxPosIn;
+    }
+
+    IMPLEMENT_SERIALIZE( READWRITE(FLATDATA(*this)); )
+    void SetNull() { nFile = -1; nBlockPos = 0; nTxPos = 0; }
+    bool IsNull() const { return (nFile == -1); }
+
+    friend bool operator==(const CDiskTxPos& a, const CDiskTxPos& b)
+    {
+        return (a.nFile     == b.nFile &&
+                a.nBlockPos == b.nBlockPos &&
+                a.nTxPos    == b.nTxPos);
+    }
+
+    friend bool operator!=(const CDiskTxPos& a, const CDiskTxPos& b)
+    {
+        return !(a == b);
+    }
+
+    string ToString() const
+    {
+        if (IsNull())
+            return strprintf("null");
+        else
+            return strprintf("(nFile=%d, nBlockPos=%d, nTxPos=%d)", nFile, nBlockPos, nTxPos);
+    }
+
+    void print() const
+    {
+        printf("%s", ToString().c_str());
+    }
+};
+
+
+
+
+class CInPoint
+{
+public:
+    CTransaction* ptx;
+    unsigned int n;
+
+    CInPoint() { SetNull(); }
+    CInPoint(CTransaction* ptxIn, unsigned int nIn) { ptx = ptxIn; n = nIn; }
+    void SetNull() { ptx = NULL; n = -1; }
+    bool IsNull() const { return (ptx == NULL && n == -1); }
+};
+
+
+
+
+class COutPoint
+{
+public:
+    uint256 hash;
+    unsigned int n;
+
+    COutPoint() { SetNull(); }
+    COutPoint(uint256 hashIn, unsigned int nIn) { hash = hashIn; n = nIn; }
+    IMPLEMENT_SERIALIZE( READWRITE(FLATDATA(*this)); )
+    void SetNull() { hash = 0; n = -1; }
+    bool IsNull() const { return (hash == 0 && n == -1); }
+
+    friend bool operator<(const COutPoint& a, const COutPoint& b)
+    {
+        return (a.hash < b.hash || (a.hash == b.hash && a.n < b.n));
+    }
+
+    friend bool operator==(const COutPoint& a, const COutPoint& b)
+    {
+        return (a.hash == b.hash && a.n == b.n);
+    }
+
+    friend bool operator!=(const COutPoint& a, const COutPoint& b)
+    {
+        return !(a == b);
+    }
+
+    string ToString() const
+    {
+        return strprintf("COutPoint(%s, %d)", hash.ToString().substr(0,6).c_str(), n);
+    }
+
+    void print() const
+    {
+        printf("%s\n", ToString().c_str());
+    }
+};
+
+
+
+
+//
+// An input of a transaction.  It contains the location of the previous
+// transaction's output that it claims and a signature that matches the
+// output's public key.
+//
+class CTxIn
+{
+public:
+    COutPoint prevout;
+    CScript scriptSig;
+    unsigned int nSequence;
+
+    CTxIn()
+    {
+        nSequence = UINT_MAX;
+    }
+
+    explicit CTxIn(COutPoint prevoutIn, CScript scriptSigIn=CScript(), unsigned int nSequenceIn=UINT_MAX)
+    {
+        prevout = prevoutIn;
+        scriptSig = scriptSigIn;
+        nSequence = nSequenceIn;
+    }
+
+    CTxIn(uint256 hashPrevTx, unsigned int nOut, CScript scriptSigIn=CScript(), unsigned int nSequenceIn=UINT_MAX)
+    {
+        prevout = COutPoint(hashPrevTx, nOut);
+        scriptSig = scriptSigIn;
+        nSequence = nSequenceIn;
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        READWRITE(prevout);
+        READWRITE(scriptSig);
+        READWRITE(nSequence);
+    )
+
+    bool IsFinal() const
+    {
+        return (nSequence == UINT_MAX);
+    }
+
+    friend bool operator==(const CTxIn& a, const CTxIn& b)
+    {
+        return (a.prevout   == b.prevout &&
+                a.scriptSig == b.scriptSig &&
+                a.nSequence == b.nSequence);
+    }
+
+    friend bool operator!=(const CTxIn& a, const CTxIn& b)
+    {
+        return !(a == b);
+    }
+
+    string ToString() const
+    {
+        string str;
+        str += strprintf("CTxIn(");
+        str += prevout.ToString();
+        if (prevout.IsNull())
+            str += strprintf(", coinbase %s", HexStr(scriptSig.begin(), scriptSig.end(), false).c_str());
+        else
+            str += strprintf(", scriptSig=%s", scriptSig.ToString().substr(0,24).c_str());
+        if (nSequence != UINT_MAX)
+            str += strprintf(", nSequence=%u", nSequence);
+        str += ")";
+        return str;
+    }
+
+    void print() const
+    {
+        printf("%s\n", ToString().c_str());
+    }
+
+    bool IsMine() const;
+    int64 GetDebit() const;
+};
+
+
+
+
+//
+// An output of a transaction.  It contains the public key that the next input
+// must be able to sign with to claim it.
+//
+class CTxOut
+{
+public:
+    int64 nValue;
+    CScript scriptPubKey;
+
+public:
+    CTxOut()
+    {
+        SetNull();
+    }
+
+    CTxOut(int64 nValueIn, CScript scriptPubKeyIn)
+    {
+        nValue = nValueIn;
+        scriptPubKey = scriptPubKeyIn;
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        READWRITE(nValue);
+        READWRITE(scriptPubKey);
+    )
+
+    void SetNull()
+    {
+        nValue = -1;
+        scriptPubKey.clear();
+    }
+
+    bool IsNull()
+    {
+        return (nValue == -1);
+    }
+
+    uint256 GetHash() const
+    {
+        return SerializeHash(*this);
+    }
+
+    bool IsMine() const
+    {
+        return ::IsMine(scriptPubKey);
+    }
+
+    int64 GetCredit() const
+    {
+        if (IsMine())
+            return nValue;
+        return 0;
+    }
+
+    friend bool operator==(const CTxOut& a, const CTxOut& b)
+    {
+        return (a.nValue       == b.nValue &&
+                a.scriptPubKey == b.scriptPubKey);
+    }
+
+    friend bool operator!=(const CTxOut& a, const CTxOut& b)
+    {
+        return !(a == b);
+    }
+
+    string ToString() const
+    {
+        if (scriptPubKey.size() < 6)
+            return "CTxOut(error)";
+        return strprintf("CTxOut(nValue=%I64d.%08I64d, scriptPubKey=%s)", nValue / COIN, nValue % COIN, scriptPubKey.ToString().substr(0,24).c_str());
+    }
+
+    void print() const
+    {
+        printf("%s\n", ToString().c_str());
+    }
+};
+
+
+
+
+//
+// The basic transaction that is broadcasted on the network and contained in
+// blocks.  A transaction can contain multiple inputs and outputs.
+//
+class CTransaction
+{
+public:
+    int nVersion;
+    vector<CTxIn> vin;
+    vector<CTxOut> vout;
+    int nLockTime;
+
+
+    CTransaction()
+    {
+        SetNull();
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        READWRITE(this->nVersion);
+        nVersion = this->nVersion;
+        READWRITE(vin);
+        READWRITE(vout);
+        READWRITE(nLockTime);
+    )
+
+    void SetNull()
+    {
+        nVersion = 1;
+        vin.clear();
+        vout.clear();
+        nLockTime = 0;
+    }
+
+    bool IsNull() const
+    {
+        return (vin.empty() && vout.empty());
+    }
+
+    uint256 GetHash() const
+    {
+        return SerializeHash(*this);
+    }
+
+    bool IsFinal() const
+    {
+        if (nLockTime == 0 || nLockTime < nBestHeight)
+            return true;
+        foreach(const CTxIn& txin, vin)
+            if (!txin.IsFinal())
+                return false;
+        return true;
+    }
+
+    bool IsNewerThan(const CTransaction& old) const
+    {
+        if (vin.size() != old.vin.size())
+            return false;
+        for (int i = 0; i < vin.size(); i++)
+            if (vin[i].prevout != old.vin[i].prevout)
+                return false;
+
+        bool fNewer = false;
+        unsigned int nLowest = UINT_MAX;
+        for (int i = 0; i < vin.size(); i++)
+        {
+            if (vin[i].nSequence != old.vin[i].nSequence)
+            {
+                if (vin[i].nSequence <= nLowest)
+                {
+                    fNewer = false;
+                    nLowest = vin[i].nSequence;
+                }
+                if (old.vin[i].nSequence < nLowest)
+                {
+                    fNewer = true;
+                    nLowest = old.vin[i].nSequence;
+                }
+            }
+        }
+        return fNewer;
+    }
+
+    bool IsCoinBase() const
+    {
+        return (vin.size() == 1 && vin[0].prevout.IsNull());
+    }
+
+    bool CheckTransaction() const
+    {
+        // Basic checks that don't depend on any context
+        if (vin.empty() || vout.empty())
+            return error("CTransaction::CheckTransaction() : vin or vout empty");
+
+        // Check for negative values
+        foreach(const CTxOut& txout, vout)
+            if (txout.nValue < 0)
+                return error("CTransaction::CheckTransaction() : txout.nValue negative");
+
+        if (IsCoinBase())
+        {
+            if (vin[0].scriptSig.size() < 2 || vin[0].scriptSig.size() > 100)
+                return error("CTransaction::CheckTransaction() : coinbase script size");
+        }
+        else
+        {
+            foreach(const CTxIn& txin, vin)
+                if (txin.prevout.IsNull())
+                    return error("CTransaction::CheckTransaction() : prevout is null");
+        }
+
+        return true;
+    }
+
+    bool IsMine() const
+    {
+        foreach(const CTxOut& txout, vout)
+            if (txout.IsMine())
+                return true;
+        return false;
+    }
+
+    int64 GetDebit() const
+    {
+        int64 nDebit = 0;
+        foreach(const CTxIn& txin, vin)
+            nDebit += txin.GetDebit();
+        return nDebit;
+    }
+
+    int64 GetCredit() const
+    {
+        int64 nCredit = 0;
+        foreach(const CTxOut& txout, vout)
+            nCredit += txout.GetCredit();
+        return nCredit;
+    }
+
+    int64 GetValueOut() const
+    {
+        int64 nValueOut = 0;
+        foreach(const CTxOut& txout, vout)
+        {
+            if (txout.nValue < 0)
+                throw runtime_error("CTransaction::GetValueOut() : negative value");
+            nValueOut += txout.nValue;
+        }
+        return nValueOut;
+    }
+
+    int64 GetMinFee(bool fDiscount=false) const
+    {
+        // Base fee is 1 cent per kilobyte
+        unsigned int nBytes = ::GetSerializeSize(*this, SER_NETWORK);
+        int64 nMinFee = (1 + (int64)nBytes / 1000) * CENT;
+
+        // First 100 transactions in a block are free
+        if (fDiscount && nBytes < 10000)
+            nMinFee = 0;
+
+        // To limit dust spam, require a 0.01 fee if any output is less than 0.01
+        if (nMinFee < CENT)
+            foreach(const CTxOut& txout, vout)
+                if (txout.nValue < CENT)
+                    nMinFee = CENT;
+
+        return nMinFee;
+    }
+
+
+
+    bool ReadFromDisk(CDiskTxPos pos, FILE** pfileRet=NULL)
+    {
+        CAutoFile filein = OpenBlockFile(pos.nFile, 0, pfileRet ? "rb+" : "rb");
+        if (!filein)
+            return error("CTransaction::ReadFromDisk() : OpenBlockFile failed");
+
+        // Read transaction
+        if (fseek(filein, pos.nTxPos, SEEK_SET) != 0)
+            return error("CTransaction::ReadFromDisk() : fseek failed");
+        filein >> *this;
+
+        // Return file pointer
+        if (pfileRet)
+        {
+            if (fseek(filein, pos.nTxPos, SEEK_SET) != 0)
+                return error("CTransaction::ReadFromDisk() : second fseek failed");
+            *pfileRet = filein.release();
+        }
+        return true;
+    }
+
+
+    friend bool operator==(const CTransaction& a, const CTransaction& b)
+    {
+        return (a.nVersion  == b.nVersion &&
+                a.vin       == b.vin &&
+                a.vout      == b.vout &&
+                a.nLockTime == b.nLockTime);
+    }
+
+    friend bool operator!=(const CTransaction& a, const CTransaction& b)
+    {
+        return !(a == b);
+    }
+
+
+    string ToString() const
+    {
+        string str;
+        str += strprintf("CTransaction(hash=%s, ver=%d, vin.size=%d, vout.size=%d, nLockTime=%d)\n",
+            GetHash().ToString().substr(0,6).c_str(),
+            nVersion,
+            vin.size(),
+            vout.size(),
+            nLockTime);
+        for (int i = 0; i < vin.size(); i++)
+            str += "    " + vin[i].ToString() + "\n";
+        for (int i = 0; i < vout.size(); i++)
+            str += "    " + vout[i].ToString() + "\n";
+        return str;
+    }
+
+    void print() const
+    {
+        printf("%s", ToString().c_str());
+    }
+
+
+
+    bool DisconnectInputs(CTxDB& txdb);
+    bool ConnectInputs(CTxDB& txdb, map<uint256, CTxIndex>& mapTestPool, CDiskTxPos posThisTx, int nHeight, int64& nFees, bool fBlock, bool fMiner, int64 nMinFee=0);
+    bool ClientConnectInputs();
+
+    bool AcceptTransaction(CTxDB& txdb, bool fCheckInputs=true, bool* pfMissingInputs=NULL);
+
+    bool AcceptTransaction(bool fCheckInputs=true, bool* pfMissingInputs=NULL)
+    {
+        CTxDB txdb("r");
+        return AcceptTransaction(txdb, fCheckInputs, pfMissingInputs);
+    }
+
+protected:
+    bool AddToMemoryPool();
+public:
+    bool RemoveFromMemoryPool();
+};
+
+
+
+
+
+//
+// A transaction with a merkle branch linking it to the block chain
+//
+class CMerkleTx : public CTransaction
+{
+public:
+    uint256 hashBlock;
+    vector<uint256> vMerkleBranch;
+    int nIndex;
+
+    // memory only
+    mutable bool fMerkleVerified;
+
+
+    CMerkleTx()
+    {
+        Init();
+    }
+
+    CMerkleTx(const CTransaction& txIn) : CTransaction(txIn)
+    {
+        Init();
+    }
+
+    void Init()
+    {
+        hashBlock = 0;
+        nIndex = -1;
+        fMerkleVerified = false;
+    }
+
+    int64 GetCredit() const
+    {
+        // Must wait until coinbase is safely deep enough in the chain before valuing it
+        if (IsCoinBase() && GetBlocksToMaturity() > 0)
+            return 0;
+        return CTransaction::GetCredit();
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        nSerSize += SerReadWrite(s, *(CTransaction*)this, nType, nVersion, ser_action);
+        nVersion = this->nVersion;
+        READWRITE(hashBlock);
+        READWRITE(vMerkleBranch);
+        READWRITE(nIndex);
+    )
+
+
+    int SetMerkleBranch(const CBlock* pblock=NULL);
+    int GetDepthInMainChain() const;
+    bool IsInMainChain() const { return GetDepthInMainChain() > 0; }
+    int GetBlocksToMaturity() const;
+    bool AcceptTransaction(CTxDB& txdb, bool fCheckInputs=true);
+    bool AcceptTransaction() { CTxDB txdb("r"); return AcceptTransaction(txdb); }
+};
+
+
+
+
+//
+// A transaction with a bunch of additional info that only the owner cares
+// about.  It includes any unrecorded transactions needed to link it back
+// to the block chain.
+//
+class CWalletTx : public CMerkleTx
+{
+public:
+    vector<CMerkleTx> vtxPrev;
+    map<string, string> mapValue;
+    vector<pair<string, string> > vOrderForm;
+    unsigned int fTimeReceivedIsTxTime;
+    unsigned int nTimeReceived;  // time received by this node
+    char fFromMe;
+    char fSpent;
+    //// probably need to sign the order info so know it came from payer
+
+    // memory only
+    mutable unsigned int nTimeDisplayed;
+
+
+    CWalletTx()
+    {
+        Init();
+    }
+
+    CWalletTx(const CMerkleTx& txIn) : CMerkleTx(txIn)
+    {
+        Init();
+    }
+
+    CWalletTx(const CTransaction& txIn) : CMerkleTx(txIn)
+    {
+        Init();
+    }
+
+    void Init()
+    {
+        fTimeReceivedIsTxTime = false;
+        nTimeReceived = 0;
+        fFromMe = false;
+        fSpent = false;
+        nTimeDisplayed = 0;
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        nSerSize += SerReadWrite(s, *(CMerkleTx*)this, nType, nVersion, ser_action);
+        nVersion = this->nVersion;
+        READWRITE(vtxPrev);
+        READWRITE(mapValue);
+        READWRITE(vOrderForm);
+        READWRITE(fTimeReceivedIsTxTime);
+        READWRITE(nTimeReceived);
+        READWRITE(fFromMe);
+        READWRITE(fSpent);
+    )
+
+    bool WriteToDisk()
+    {
+        return CWalletDB().WriteTx(GetHash(), *this);
+    }
+
+
+    int64 GetTxTime() const;
+
+    void AddSupportingTransactions(CTxDB& txdb);
+
+    bool AcceptWalletTransaction(CTxDB& txdb, bool fCheckInputs=true);
+    bool AcceptWalletTransaction() { CTxDB txdb("r"); return AcceptWalletTransaction(txdb); }
+
+    void RelayWalletTransaction(CTxDB& txdb);
+    void RelayWalletTransaction() { CTxDB txdb("r"); RelayWalletTransaction(txdb); }
+};
+
+
+
+
+//
+// A txdb record that contains the disk location of a transaction and the
+// locations of transactions that spend its outputs.  vSpent is really only
+// used as a flag, but having the location is very helpful for debugging.
+//
+class CTxIndex
+{
+public:
+    CDiskTxPos pos;
+    vector<CDiskTxPos> vSpent;
+
+    CTxIndex()
+    {
+        SetNull();
+    }
+
+    CTxIndex(const CDiskTxPos& posIn, unsigned int nOutputs)
+    {
+        pos = posIn;
+        vSpent.resize(nOutputs);
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        if (!(nType & SER_GETHASH))
+            READWRITE(nVersion);
+        READWRITE(pos);
+        READWRITE(vSpent);
+    )
+
+    void SetNull()
+    {
+        pos.SetNull();
+        vSpent.clear();
+    }
+
+    bool IsNull()
+    {
+        return pos.IsNull();
+    }
+
+    friend bool operator==(const CTxIndex& a, const CTxIndex& b)
+    {
+        if (a.pos != b.pos || a.vSpent.size() != b.vSpent.size())
+            return false;
+        for (int i = 0; i < a.vSpent.size(); i++)
+            if (a.vSpent[i] != b.vSpent[i])
+                return false;
+        return true;
+    }
+
+    friend bool operator!=(const CTxIndex& a, const CTxIndex& b)
+    {
+        return !(a == b);
+    }
+};
+
+
+
+
+
+//
+// Nodes collect new transactions into a block, hash them into a hash tree,
+// and scan through nonce values to make the block's hash satisfy proof-of-work
+// requirements.  When they solve the proof-of-work, they broadcast the block
+// to everyone and the block is added to the block chain.  The first transaction
+// in the block is a special one that creates a new coin owned by the creator
+// of the block.
+//
+// Blocks are appended to blk0001.dat files on disk.  Their location on disk
+// is indexed by CBlockIndex objects in memory.
+//
+class CBlock
+{
+public:
+    // header
+    int nVersion;
+    uint256 hashPrevBlock;
+    uint256 hashMerkleRoot;
+    unsigned int nTime;
+    unsigned int nBits;
+    unsigned int nNonce;
+
+    // network and disk
+    vector<CTransaction> vtx;
+
+    // memory only
+    mutable vector<uint256> vMerkleTree;
+
+
+    CBlock()
+    {
+        SetNull();
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        READWRITE(this->nVersion);
+        nVersion = this->nVersion;
+        READWRITE(hashPrevBlock);
+        READWRITE(hashMerkleRoot);
+        READWRITE(nTime);
+        READWRITE(nBits);
+        READWRITE(nNonce);
+
+        // ConnectBlock depends on vtx being last so it can calculate offset
+        if (!(nType & (SER_GETHASH|SER_BLOCKHEADERONLY)))
+            READWRITE(vtx);
+        else if (fRead)
+            const_cast<CBlock*>(this)->vtx.clear();
+    )
+
+    void SetNull()
+    {
+        nVersion = 1;
+        hashPrevBlock = 0;
+        hashMerkleRoot = 0;
+        nTime = 0;
+        nBits = 0;
+        nNonce = 0;
+        vtx.clear();
+        vMerkleTree.clear();
+    }
+
+    bool IsNull() const
+    {
+        return (nBits == 0);
+    }
+
+    uint256 GetHash() const
+    {
+        return Hash(BEGIN(nVersion), END(nNonce));
+    }
+
+
+    uint256 BuildMerkleTree() const
+    {
+        vMerkleTree.clear();
+        foreach(const CTransaction& tx, vtx)
+            vMerkleTree.push_back(tx.GetHash());
+        int j = 0;
+        for (int nSize = vtx.size(); nSize > 1; nSize = (nSize + 1) / 2)
+        {
+            for (int i = 0; i < nSize; i += 2)
+            {
+                int i2 = min(i+1, nSize-1);
+                vMerkleTree.push_back(Hash(BEGIN(vMerkleTree[j+i]),  END(vMerkleTree[j+i]),
+                                           BEGIN(vMerkleTree[j+i2]), END(vMerkleTree[j+i2])));
+            }
+            j += nSize;
+        }
+        return (vMerkleTree.empty() ? 0 : vMerkleTree.back());
+    }
+
+    vector<uint256> GetMerkleBranch(int nIndex) const
+    {
+        if (vMerkleTree.empty())
+            BuildMerkleTree();
+        vector<uint256> vMerkleBranch;
+        int j = 0;
+        for (int nSize = vtx.size(); nSize > 1; nSize = (nSize + 1) / 2)
+        {
+            int i = min(nIndex^1, nSize-1);
+            vMerkleBranch.push_back(vMerkleTree[j+i]);
+            nIndex >>= 1;
+            j += nSize;
+        }
+        return vMerkleBranch;
+    }
+
+    static uint256 CheckMerkleBranch(uint256 hash, const vector<uint256>& vMerkleBranch, int nIndex)
+    {
+        if (nIndex == -1)
+            return 0;
+        foreach(const uint256& otherside, vMerkleBranch)
+        {
+            if (nIndex & 1)
+                hash = Hash(BEGIN(otherside), END(otherside), BEGIN(hash), END(hash));
+            else
+                hash = Hash(BEGIN(hash), END(hash), BEGIN(otherside), END(otherside));
+            nIndex >>= 1;
+        }
+        return hash;
+    }
+
+
+    bool WriteToDisk(bool fWriteTransactions, unsigned int& nFileRet, unsigned int& nBlockPosRet)
+    {
+        // Open history file to append
+        CAutoFile fileout = AppendBlockFile(nFileRet);
+        if (!fileout)
+            return error("CBlock::WriteToDisk() : AppendBlockFile failed");
+        if (!fWriteTransactions)
+            fileout.nType |= SER_BLOCKHEADERONLY;
+
+        // Write index header
+        unsigned int nSize = fileout.GetSerializeSize(*this);
+        fileout << FLATDATA(pchMessageStart) << nSize;
+
+        // Write block
+        nBlockPosRet = ftell(fileout);
+        if (nBlockPosRet == -1)
+            return error("CBlock::WriteToDisk() : ftell failed");
+        fileout << *this;
+
+        return true;
+    }
+
+    bool ReadFromDisk(unsigned int nFile, unsigned int nBlockPos, bool fReadTransactions)
+    {
+        SetNull();
+
+        // Open history file to read
+        CAutoFile filein = OpenBlockFile(nFile, nBlockPos, "rb");
+        if (!filein)
+            return error("CBlock::ReadFromDisk() : OpenBlockFile failed");
+        if (!fReadTransactions)
+            filein.nType |= SER_BLOCKHEADERONLY;
+
+        // Read block
+        filein >> *this;
+
+        // Check the header
+        if (CBigNum().SetCompact(nBits) > bnProofOfWorkLimit)
+            return error("CBlock::ReadFromDisk() : nBits errors in block header");
+        if (GetHash() > CBigNum().SetCompact(nBits).getuint256())
+            return error("CBlock::ReadFromDisk() : GetHash() errors in block header");
+
+        return true;
+    }
+
+
+
+    void print() const
+    {
+        printf("CBlock(hash=%s, ver=%d, hashPrevBlock=%s, hashMerkleRoot=%s, nTime=%u, nBits=%08x, nNonce=%u, vtx=%d)\n",
+            GetHash().ToString().substr(0,14).c_str(),
+            nVersion,
+            hashPrevBlock.ToString().substr(0,14).c_str(),
+            hashMerkleRoot.ToString().substr(0,6).c_str(),
+            nTime, nBits, nNonce,
+            vtx.size());
+        for (int i = 0; i < vtx.size(); i++)
+        {
+            printf("  ");
+            vtx[i].print();
+        }
+        printf("  vMerkleTree: ");
+        for (int i = 0; i < vMerkleTree.size(); i++)
+            printf("%s ", vMerkleTree[i].ToString().substr(0,6).c_str());
+        printf("\n");
+    }
+
+
+    int64 GetBlockValue(int64 nFees) const;
+    bool DisconnectBlock(CTxDB& txdb, CBlockIndex* pindex);
+    bool ConnectBlock(CTxDB& txdb, CBlockIndex* pindex);
+    bool ReadFromDisk(const CBlockIndex* blockindex, bool fReadTransactions);
+    bool AddToBlockIndex(unsigned int nFile, unsigned int nBlockPos);
+    bool CheckBlock() const;
+    bool AcceptBlock();
+};
+
+
+
+
+
+
+//
+// The block chain is a tree shaped structure starting with the
+// genesis block at the root, with each block potentially having multiple
+// candidates to be the next block.  pprev and pnext link a path through the
+// main/longest chain.  A blockindex may have multiple pprev pointing back
+// to it, but pnext will only point forward to the longest branch, or will
+// be null if the block is not part of the longest chain.
+//
+class CBlockIndex
+{
+public:
+    const uint256* phashBlock;
+    CBlockIndex* pprev;
+    CBlockIndex* pnext;
+    unsigned int nFile;
+    unsigned int nBlockPos;
+    int nHeight;
+
+    // block header
+    int nVersion;
+    uint256 hashMerkleRoot;
+    unsigned int nTime;
+    unsigned int nBits;
+    unsigned int nNonce;
+
+
+    CBlockIndex()
+    {
+        phashBlock = NULL;
+        pprev = NULL;
+        pnext = NULL;
+        nFile = 0;
+        nBlockPos = 0;
+        nHeight = 0;
+
+        nVersion       = 0;
+        hashMerkleRoot = 0;
+        nTime          = 0;
+        nBits          = 0;
+        nNonce         = 0;
+    }
+
+    CBlockIndex(unsigned int nFileIn, unsigned int nBlockPosIn, CBlock& block)
+    {
+        phashBlock = NULL;
+        pprev = NULL;
+        pnext = NULL;
+        nFile = nFileIn;
+        nBlockPos = nBlockPosIn;
+        nHeight = 0;
+
+        nVersion       = block.nVersion;
+        hashMerkleRoot = block.hashMerkleRoot;
+        nTime          = block.nTime;
+        nBits          = block.nBits;
+        nNonce         = block.nNonce;
+    }
+
+    uint256 GetBlockHash() const
+    {
+        return *phashBlock;
+    }
+
+    bool IsInMainChain() const
+    {
+        return (pnext || this == pindexBest);
+    }
+
+    bool EraseBlockFromDisk()
+    {
+        // Open history file
+        CAutoFile fileout = OpenBlockFile(nFile, nBlockPos, "rb+");
+        if (!fileout)
+            return false;
+
+        // Overwrite with empty null block
+        CBlock block;
+        block.SetNull();
+        fileout << block;
+
+        return true;
+    }
+
+    enum { nMedianTimeSpan=11 };
+
+    int64 GetMedianTimePast() const
+    {
+        unsigned int pmedian[nMedianTimeSpan];
+        unsigned int* pbegin = &pmedian[nMedianTimeSpan];
+        unsigned int* pend = &pmedian[nMedianTimeSpan];
+
+        const CBlockIndex* pindex = this;
+        for (int i = 0; i < nMedianTimeSpan && pindex; i++, pindex = pindex->pprev)
+            *(--pbegin) = pindex->nTime;
+
+        sort(pbegin, pend);
+        return pbegin[(pend - pbegin)/2];
+    }
+
+    int64 GetMedianTime() const
+    {
+        const CBlockIndex* pindex = this;
+        for (int i = 0; i < nMedianTimeSpan/2; i++)
+        {
+            if (!pindex->pnext)
+                return nTime;
+            pindex = pindex->pnext;
+        }
+        return pindex->GetMedianTimePast();
+    }
+
+
+
+    string ToString() const
+    {
+        return strprintf("CBlockIndex(nprev=%08x, pnext=%08x, nFile=%d, nBlockPos=%-6d nHeight=%d, merkle=%s, hashBlock=%s)",
+            pprev, pnext, nFile, nBlockPos, nHeight,
+            hashMerkleRoot.ToString().substr(0,6).c_str(),
+            GetBlockHash().ToString().substr(0,14).c_str());
+    }
+
+    void print() const
+    {
+        printf("%s\n", ToString().c_str());
+    }
+};
+
+
+
+//
+// Used to marshal pointers into hashes for db storage.
+//
+class CDiskBlockIndex : public CBlockIndex
+{
+public:
+    uint256 hashPrev;
+    uint256 hashNext;
+
+    CDiskBlockIndex()
+    {
+        hashPrev = 0;
+        hashNext = 0;
+    }
+
+    explicit CDiskBlockIndex(CBlockIndex* pindex) : CBlockIndex(*pindex)
+    {
+        hashPrev = (pprev ? pprev->GetBlockHash() : 0);
+        hashNext = (pnext ? pnext->GetBlockHash() : 0);
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        if (!(nType & SER_GETHASH))
+            READWRITE(nVersion);
+
+        READWRITE(hashNext);
+        READWRITE(nFile);
+        READWRITE(nBlockPos);
+        READWRITE(nHeight);
+
+        // block header
+        READWRITE(this->nVersion);
+        READWRITE(hashPrev);
+        READWRITE(hashMerkleRoot);
+        READWRITE(nTime);
+        READWRITE(nBits);
+        READWRITE(nNonce);
+    )
+
+    uint256 GetBlockHash() const
+    {
+        CBlock block;
+        block.nVersion        = nVersion;
+        block.hashPrevBlock   = hashPrev;
+        block.hashMerkleRoot  = hashMerkleRoot;
+        block.nTime           = nTime;
+        block.nBits           = nBits;
+        block.nNonce          = nNonce;
+        return block.GetHash();
+    }
+
+
+    string ToString() const
+    {
+        string str = "CDiskBlockIndex(";
+        str += CBlockIndex::ToString();
+        str += strprintf("\n                hashBlock=%s, hashPrev=%s, hashNext=%s)",
+            GetBlockHash().ToString().c_str(),
+            hashPrev.ToString().substr(0,14).c_str(),
+            hashNext.ToString().substr(0,14).c_str());
+        return str;
+    }
+
+    void print() const
+    {
+        printf("%s\n", ToString().c_str());
+    }
+};
+
+
+
+
+
+
+
+
+//
+// Describes a place in the block chain to another node such that if the
+// other node doesn't have the same branch, it can find a recent common trunk.
+// The further back it is, the further before the fork it may be.
+//
+class CBlockLocator
+{
+protected:
+    vector<uint256> vHave;
+public:
+
+    CBlockLocator()
+    {
+    }
+
+    explicit CBlockLocator(const CBlockIndex* pindex)
+    {
+        Set(pindex);
+    }
+
+    explicit CBlockLocator(uint256 hashBlock)
+    {
+        map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hashBlock);
+        if (mi != mapBlockIndex.end())
+            Set((*mi).second);
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        if (!(nType & SER_GETHASH))
+            READWRITE(nVersion);
+        READWRITE(vHave);
+    )
+
+    void Set(const CBlockIndex* pindex)
+    {
+        vHave.clear();
+        int nStep = 1;
+        while (pindex)
+        {
+            vHave.push_back(pindex->GetBlockHash());
+
+            // Exponentially larger steps back
+            for (int i = 0; pindex && i < nStep; i++)
+                pindex = pindex->pprev;
+            if (vHave.size() > 10)
+                nStep *= 2;
+        }
+        vHave.push_back(hashGenesisBlock);
+    }
+
+    CBlockIndex* GetBlockIndex()
+    {
+        // Find the first block the caller has in the main chain
+        foreach(const uint256& hash, vHave)
+        {
+            map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
+            if (mi != mapBlockIndex.end())
+            {
+                CBlockIndex* pindex = (*mi).second;
+                if (pindex->IsInMainChain())
+                    return pindex;
+            }
+        }
+        return pindexGenesisBlock;
+    }
+
+    uint256 GetBlockHash()
+    {
+        // Find the first block the caller has in the main chain
+        foreach(const uint256& hash, vHave)
+        {
+            map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(hash);
+            if (mi != mapBlockIndex.end())
+            {
+                CBlockIndex* pindex = (*mi).second;
+                if (pindex->IsInMainChain())
+                    return hash;
+            }
+        }
+        return hashGenesisBlock;
+    }
+
+    int GetHeight()
+    {
+        CBlockIndex* pindex = GetBlockIndex();
+        if (!pindex)
+            return 0;
+        return pindex->nHeight;
+    }
+};
+
+
+
+
+
+
+
+
+
+
+
+
+extern map<uint256, CTransaction> mapTransactions;
+extern map<uint256, CWalletTx> mapWallet;
+extern vector<pair<uint256, bool> > vWalletUpdated;
+extern CCriticalSection cs_mapWallet;
+extern map<vector<unsigned char>, CPrivKey> mapKeys;
+extern map<uint160, vector<unsigned char> > mapPubKeys;
+extern CCriticalSection cs_mapKeys;
+extern CKey keyUser;
new file mode 100644
--- /dev/null
+++ b/makefile
@@ -0,0 +1,83 @@
+# Copyright (c) 2009 Satoshi Nakamoto
+# Distributed under the MIT/X11 software license, see the accompanying
+# file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+
+ifneq "$(BUILD)" "debug"
+ifneq "$(BUILD)" "release"
+BUILD=debug
+endif
+endif
+ifeq "$(BUILD)" "debug"
+D=d
+# note: gcc 3.x profile doesn't work
+#DEBUGFLAGS=-O0 -g -pg -D__WXDEBUG__
+DEBUGFLAGS=-g -D__WXDEBUG__
+endif
+
+
+
+INCLUDEPATHS=-I"/boost" -I"/DB/build_unix" -I"/OpenSSL/include" -I"/wxWidgets/lib/vc_lib/mswd" -I"/wxWidgets/include"
+LIBPATHS=-L"/DB/build_unix" -L"/OpenSSL/out" -L"/wxWidgets/lib/gcc_lib"
+LIBS= \
+ -l db_cxx \
+ -l eay32 \
+ -l wxmsw28$(D)_richtext -l wxmsw28$(D)_html -l wxmsw28$(D)_core -l wxbase28$(D) -l wxtiff$(D) -l wxjpeg$(D) -l wxpng$(D) -l wxzlib$(D) -l wxregex$(D) -l wxexpat$(D) \
+ -l kernel32 -l user32 -l gdi32 -l comdlg32 -l winspool -l winmm -l shell32 -l comctl32 -l ole32 -l oleaut32 -l uuid -l rpcrt4 -l advapi32 -l ws2_32
+WXDEFS=-DWIN32 -D__WXMSW__ -D_WINDOWS -DNOPCH
+CFLAGS=-mthreads -O0 -w -Wno-invalid-offsetof -Wformat $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
+HEADERS=headers.h util.h main.h serialize.h uint256.h key.h bignum.h script.h db.h base58.h
+
+
+
+all: bitcoin.exe
+
+
+headers.h.gch: headers.h $(HEADERS) net.h irc.h market.h uibase.h ui.h
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/util.o: util.cpp		    $(HEADERS)
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/script.o: script.cpp	    $(HEADERS)
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/db.o: db.cpp		    $(HEADERS) market.h
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/net.o: net.cpp		    $(HEADERS) net.h
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/main.o: main.cpp		    $(HEADERS) net.h market.h sha.h
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/market.o: market.cpp	    $(HEADERS) market.h
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/ui.o: ui.cpp		    $(HEADERS) net.h uibase.h ui.h market.h
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/uibase.o: uibase.cpp	    uibase.h
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/sha.o: sha.cpp		    sha.h
+	g++ -c $(CFLAGS) -O3 -o $@ $<
+
+obj/irc.o:  irc.cpp		    $(HEADERS)
+	g++ -c $(CFLAGS) -o $@ $<
+
+obj/ui_res.o: ui.rc  rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp
+	windres $(WXDEFS) $(INCLUDEPATHS) -o $@ -i $<
+
+
+
+OBJS=obj/util.o obj/script.o obj/db.o obj/net.o obj/main.o obj/market.o	 \
+	obj/ui.o obj/uibase.o obj/sha.o obj/irc.o obj/ui_res.o
+
+bitcoin.exe: headers.h.gch $(OBJS)
+	-kill /f bitcoin.exe
+	g++ $(CFLAGS) -mwindows -Wl,--subsystem,windows -o $@ $(LIBPATHS) $(OBJS) $(LIBS)
+
+clean:
+	-del /Q obj\*
+	-del /Q headers.h.gch
new file mode 100644
--- /dev/null
+++ b/makefile.vc
@@ -0,0 +1,77 @@
+# Copyright (c) 2009 Satoshi Nakamoto
+# Distributed under the MIT/X11 software license, see the accompanying
+# file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+
+!IF "$(BUILD)" != "debug" && "$(BUILD)" != "release"
+BUILD=debug
+!ENDIF
+!IF "$(BUILD)" == "debug"
+D=d
+DEBUGFLAGS=/Zi /Od /D__WXDEBUG__
+!ENDIF
+
+
+
+INCLUDEPATHS=/I"/boost" /I"/DB/build_windows" /I"/OpenSSL/include" /I"/wxWidgets/lib/vc_lib/mswd" /I"/wxWidgets/include"
+LIBPATHS=/LIBPATH:"/DB/build_windows/$(BUILD)" /LIBPATH:"/OpenSSL/out" /LIBPATH:"/wxWidgets/lib/vc_lib"
+LIBS= \
+    libdb47s$(D).lib \
+    libeay32.lib \
+    wxmsw28$(D)_richtext.lib wxmsw28$(D)_html.lib wxmsw28$(D)_core.lib wxbase28$(D).lib wxtiff$(D).lib wxjpeg$(D).lib wxpng$(D).lib wxzlib$(D).lib wxregex$(D).lib wxexpat$(D).lib \
+    kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib ws2_32.lib
+WXDEFS=/DWIN32 /D__WXMSW__ /D_WINDOWS /DNOPCH
+CFLAGS=/c /nologo /Ob0 /MD$(D) /EHsc /GR /Zm300 /YX /Fpobj/headers.pch $(DEBUGFLAGS) $(WXDEFS) $(INCLUDEPATHS)
+HEADERS=headers.h util.h main.h serialize.h uint256.h key.h bignum.h script.h db.h base58.h
+
+
+
+all: bitcoin.exe
+
+
+obj\util.obj: util.cpp        $(HEADERS)
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\script.obj: script.cpp    $(HEADERS)
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\db.obj: db.cpp            $(HEADERS) market.h
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\net.obj: net.cpp          $(HEADERS) net.h
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\main.obj: main.cpp        $(HEADERS) net.h market.h
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\market.obj: market.cpp    $(HEADERS) market.h
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\ui.obj: ui.cpp            $(HEADERS) net.h uibase.h ui.h market.h
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\uibase.obj: uibase.cpp    uibase.h
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\sha.obj: sha.cpp sha.h
+    cl $(CFLAGS) /O2 /Fo$@ %s
+
+obj\irc.obj:  irc.cpp         $(HEADERS)
+    cl $(CFLAGS) /Fo$@ %s
+
+obj\ui.res: ui.rc  rc/bitcoin.ico rc/check.ico rc/send16.bmp rc/send16mask.bmp rc/send16masknoshadow.bmp rc/send20.bmp rc/send20mask.bmp rc/addressbook16.bmp rc/addressbook16mask.bmp rc/addressbook20.bmp rc/addressbook20mask.bmp
+    rc $(INCLUDEPATHS) $(WXDEFS) /Fo$@ %s
+
+
+
+OBJS=obj\util.obj obj\script.obj obj\db.obj obj\net.obj obj\main.obj obj\market.obj \
+  obj\ui.obj obj\uibase.obj obj\sha.obj obj\irc.obj obj\ui.res
+
+bitcoin.exe: $(OBJS)
+    -kill /f bitcoin.exe & sleep 1
+    link /nologo /DEBUG /SUBSYSTEM:WINDOWS /OUT:$@ $(LIBPATHS) $** $(LIBS)
+
+clean:
+    -del /Q obj\*
+    -del *.ilk
+    -del *.pdb
new file mode 100644
--- /dev/null
+++ b/market.cpp
@@ -0,0 +1,264 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include "headers.h"
+
+
+
+
+
+
+
+
+
+
+//
+// Global state variables
+//
+
+//// later figure out how these are persisted
+map<uint256, CProduct> mapMyProducts;
+
+
+
+
+map<uint256, CProduct> mapProducts;
+CCriticalSection cs_mapProducts;
+
+bool AdvertInsert(const CProduct& product)
+{
+    uint256 hash = product.GetHash();
+    bool fNew = false;
+    bool fUpdated = false;
+
+    CRITICAL_BLOCK(cs_mapProducts)
+    {
+        // Insert or find existing product
+        pair<map<uint256, CProduct>::iterator, bool> item = mapProducts.insert(make_pair(hash, product));
+        CProduct* pproduct = &(*(item.first)).second;
+        fNew = item.second;
+
+        // Update if newer
+        if (product.nSequence > pproduct->nSequence)
+        {
+            *pproduct = product;
+            fUpdated = true;
+        }
+    }
+
+    //if (fNew)
+    //    NotifyProductAdded(hash);
+    //else if (fUpdated)
+    //    NotifyProductUpdated(hash);
+
+    return (fNew || fUpdated);
+}
+
+void AdvertErase(const CProduct& product)
+{
+    uint256 hash = product.GetHash();
+    CRITICAL_BLOCK(cs_mapProducts)
+        mapProducts.erase(hash);
+    //NotifyProductDeleted(hash);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+template<typename T>
+unsigned int Union(T& v1, T& v2)
+{
+    // v1 = v1 union v2
+    // v1 and v2 must be sorted
+    // returns the number of elements added to v1
+
+    ///// need to check that this is equivalent, then delete this comment
+    //vector<unsigned short> vUnion(v1.size() + v2.size());
+    //vUnion.erase(set_union(v1.begin(), v1.end(),
+    //                       v2.begin(), v2.end(),
+    //                       vUnion.begin()),
+    //             vUnion.end());
+
+    T vUnion;
+    vUnion.reserve(v1.size() + v2.size());
+    set_union(v1.begin(), v1.end(),
+              v2.begin(), v2.end(),
+              back_inserter(vUnion));
+    unsigned int nAdded = vUnion.size() - v1.size();
+    if (nAdded > 0)
+        v1 = vUnion;
+    return nAdded;
+}
+
+void CUser::AddAtom(unsigned short nAtom, bool fOrigin)
+{
+    // Ignore duplicates
+    if (binary_search(vAtomsIn.begin(), vAtomsIn.end(), nAtom) ||
+        find(vAtomsNew.begin(), vAtomsNew.end(), nAtom) != vAtomsNew.end())
+        return;
+
+    //// instead of zero atom, should change to free atom that propagates,
+    //// limited to lower than a certain value like 5 so conflicts quickly
+    // The zero atom never propagates,
+    // new atoms always propagate through the user that created them
+    if (nAtom == 0 || fOrigin)
+    {
+        vector<unsigned short> vTmp(1, nAtom);
+        Union(vAtomsIn, vTmp);
+        if (fOrigin)
+            vAtomsOut.push_back(nAtom);
+        return;
+    }
+
+    vAtomsNew.push_back(nAtom);
+
+    if (vAtomsNew.size() >= nFlowthroughRate || vAtomsOut.empty())
+    {
+        // Select atom to flow through to vAtomsOut
+        vAtomsOut.push_back(vAtomsNew[GetRand(vAtomsNew.size())]);
+
+        // Merge vAtomsNew into vAtomsIn
+        sort(vAtomsNew.begin(), vAtomsNew.end());
+        Union(vAtomsIn, vAtomsNew);
+        vAtomsNew.clear();
+    }
+}
+
+bool AddAtomsAndPropagate(uint256 hashUserStart, const vector<unsigned short>& vAtoms, bool fOrigin)
+{
+    CReviewDB reviewdb;
+    map<uint256, vector<unsigned short> > pmapPropagate[2];
+    pmapPropagate[0][hashUserStart] = vAtoms;
+
+    for (int side = 0; !pmapPropagate[side].empty(); side = 1 - side)
+    {
+        map<uint256, vector<unsigned short> >& mapFrom = pmapPropagate[side];
+        map<uint256, vector<unsigned short> >& mapTo = pmapPropagate[1 - side];
+
+        for (map<uint256, vector<unsigned short> >::iterator mi = mapFrom.begin(); mi != mapFrom.end(); ++mi)
+        {
+            const uint256& hashUser = (*mi).first;
+            const vector<unsigned short>& vReceived = (*mi).second;
+
+            ///// this would be a lot easier on the database if it put the new atom at the beginning of the list,
+            ///// so the change would be right next to the vector size.
+
+            // Read user
+            CUser user;
+            reviewdb.ReadUser(hashUser, user);
+            unsigned int nIn = user.vAtomsIn.size();
+            unsigned int nNew = user.vAtomsNew.size();
+            unsigned int nOut = user.vAtomsOut.size();
+
+            // Add atoms received
+            foreach(unsigned short nAtom, vReceived)
+                user.AddAtom(nAtom, fOrigin);
+            fOrigin = false;
+
+            // Don't bother writing to disk if no changes
+            if (user.vAtomsIn.size() == nIn && user.vAtomsNew.size() == nNew)
+                continue;
+
+            // Propagate
+            if (user.vAtomsOut.size() > nOut)
+                foreach(const uint256& hash, user.vLinksOut)
+                    mapTo[hash].insert(mapTo[hash].end(), user.vAtomsOut.begin() + nOut, user.vAtomsOut.end());
+
+            // Write back
+            if (!reviewdb.WriteUser(hashUser, user))
+                return false;
+        }
+        mapFrom.clear();
+    }
+    return true;
+}
+
+
+
+
+
+
+bool CReview::AcceptReview()
+{
+    // Timestamp
+    nTime = GetTime();
+
+    // Check signature
+    if (!CKey::Verify(vchPubKeyFrom, GetSigHash(), vchSig))
+        return false;
+
+    CReviewDB reviewdb;
+
+    // Add review text to recipient
+    vector<CReview> vReviews;
+    reviewdb.ReadReviews(hashTo, vReviews);
+    vReviews.push_back(*this);
+    if (!reviewdb.WriteReviews(hashTo, vReviews))
+        return false;
+
+    // Add link from sender
+    CUser user;
+    uint256 hashFrom = Hash(vchPubKeyFrom.begin(), vchPubKeyFrom.end());
+    reviewdb.ReadUser(hashFrom, user);
+    user.vLinksOut.push_back(hashTo);
+    if (!reviewdb.WriteUser(hashFrom, user))
+        return false;
+
+    reviewdb.Close();
+
+    // Propagate atoms to recipient
+    vector<unsigned short> vZeroAtom(1, 0);
+    if (!AddAtomsAndPropagate(hashTo, user.vAtomsOut.size() ? user.vAtomsOut : vZeroAtom, false))
+        return false;
+
+    return true;
+}
+
+
+
+
+
+bool CProduct::CheckSignature()
+{
+    return (CKey::Verify(vchPubKeyFrom, GetSigHash(), vchSig));
+}
+
+bool CProduct::CheckProduct()
+{
+    if (!CheckSignature())
+        return false;
+
+    // Make sure it's a summary product
+    if (!mapDetails.empty() || !vOrderForm.empty())
+        return false;
+
+    // Look up seller's atom count
+    CReviewDB reviewdb("r");
+    CUser user;
+    reviewdb.ReadUser(GetUserHash(), user);
+    nAtoms = user.GetAtomCount();
+    reviewdb.Close();
+
+    ////// delme, this is now done by AdvertInsert
+    //// Store to memory
+    //CRITICAL_BLOCK(cs_mapProducts)
+    //    mapProducts[GetHash()] = *this;
+
+    return true;
+}
new file mode 100644
--- /dev/null
+++ b/market.h
@@ -0,0 +1,182 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+class CUser;
+class CReview;
+class CProduct;
+
+static const unsigned int nFlowthroughRate = 2;
+
+
+
+
+bool AdvertInsert(const CProduct& product);
+void AdvertErase(const CProduct& product);
+bool AddAtomsAndPropagate(uint256 hashUserStart, const vector<unsigned short>& vAtoms, bool fOrigin);
+
+
+
+
+
+
+
+
+class CUser
+{
+public:
+    vector<unsigned short> vAtomsIn;
+    vector<unsigned short> vAtomsNew;
+    vector<unsigned short> vAtomsOut;
+    vector<uint256> vLinksOut;
+
+    CUser()
+    {
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        if (!(nType & SER_GETHASH))
+            READWRITE(nVersion);
+        READWRITE(vAtomsIn);
+        READWRITE(vAtomsNew);
+        READWRITE(vAtomsOut);
+        READWRITE(vLinksOut);
+    )
+
+    void SetNull()
+    {
+        vAtomsIn.clear();
+        vAtomsNew.clear();
+        vAtomsOut.clear();
+        vLinksOut.clear();
+    }
+
+    uint256 GetHash() const { return SerializeHash(*this); }
+
+
+    int GetAtomCount() const
+    {
+        return (vAtomsIn.size() + vAtomsNew.size());
+    }
+
+    void AddAtom(unsigned short nAtom, bool fOrigin);
+};
+
+
+
+
+
+
+
+class CReview
+{
+public:
+    int nVersion;
+    uint256 hashTo;
+    map<string, string> mapValue;
+    vector<unsigned char> vchPubKeyFrom;
+    vector<unsigned char> vchSig;
+
+    // memory only
+    unsigned int nTime;
+    int nAtoms;
+
+
+    CReview()
+    {
+        nVersion = 1;
+        hashTo = 0;
+        nTime = 0;
+        nAtoms = 0;
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        READWRITE(this->nVersion);
+        nVersion = this->nVersion;
+        if (!(nType & SER_DISK))
+            READWRITE(hashTo);
+        READWRITE(mapValue);
+        READWRITE(vchPubKeyFrom);
+        if (!(nType & SER_GETHASH))
+            READWRITE(vchSig);
+    )
+
+    uint256 GetHash() const { return SerializeHash(*this); }
+    uint256 GetSigHash() const { return SerializeHash(*this, SER_GETHASH|SER_SKIPSIG); }
+    uint256 GetUserHash() const { return Hash(vchPubKeyFrom.begin(), vchPubKeyFrom.end()); }
+
+
+    bool AcceptReview();
+};
+
+
+
+
+
+
+
+class CProduct
+{
+public:
+    int nVersion;
+    CAddress addr;
+    map<string, string> mapValue;
+    map<string, string> mapDetails;
+    vector<pair<string, string> > vOrderForm;
+    unsigned int nSequence;
+    vector<unsigned char> vchPubKeyFrom;
+    vector<unsigned char> vchSig;
+
+    // disk only
+    int nAtoms;
+
+    // memory only
+    set<unsigned int> setSources;
+
+    CProduct()
+    {
+        nVersion = 1;
+        nAtoms = 0;
+        nSequence = 0;
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        READWRITE(this->nVersion);
+        nVersion = this->nVersion;
+        READWRITE(addr);
+        READWRITE(mapValue);
+        if (!(nType & SER_GETHASH))
+        {
+            READWRITE(mapDetails);
+            READWRITE(vOrderForm);
+            READWRITE(nSequence);
+        }
+        READWRITE(vchPubKeyFrom);
+        if (!(nType & SER_GETHASH))
+            READWRITE(vchSig);
+        if (nType & SER_DISK)
+            READWRITE(nAtoms);
+    )
+
+    uint256 GetHash() const { return SerializeHash(*this); }
+    uint256 GetSigHash() const { return SerializeHash(*this, SER_GETHASH|SER_SKIPSIG); }
+    uint256 GetUserHash() const { return Hash(vchPubKeyFrom.begin(), vchPubKeyFrom.end()); }
+
+
+    bool CheckSignature();
+    bool CheckProduct();
+};
+
+
+
+
+
+
+
+
+extern map<uint256, CProduct> mapProducts;
+extern CCriticalSection cs_mapProducts;
+extern map<uint256, CProduct> mapMyProducts;
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..bf8544ce13ad82018a4aa13abc1594297e4d891b
GIT binary patch
literal 11673
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
E0X4OTMgRZ+
new file mode 100644
--- /dev/null
+++ b/net.cpp
@@ -0,0 +1,1100 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include "headers.h"
+#include <winsock2.h>
+
+void ThreadMessageHandler2(void* parg);
+void ThreadSocketHandler2(void* parg);
+void ThreadOpenConnections2(void* parg);
+
+
+
+
+
+
+//
+// Global state variables
+//
+bool fClient = false;
+uint64 nLocalServices = (fClient ? 0 : NODE_NETWORK);
+CAddress addrLocalHost(0, DEFAULT_PORT, nLocalServices);
+CNode nodeLocalHost(INVALID_SOCKET, CAddress("127.0.0.1", nLocalServices));
+CNode* pnodeLocalHost = &nodeLocalHost;
+bool fShutdown = false;
+array<bool, 10> vfThreadRunning;
+vector<CNode*> vNodes;
+CCriticalSection cs_vNodes;
+map<vector<unsigned char>, CAddress> mapAddresses;
+CCriticalSection cs_mapAddresses;
+map<CInv, CDataStream> mapRelay;
+deque<pair<int64, CInv> > vRelayExpiration;
+CCriticalSection cs_mapRelay;
+map<CInv, int64> mapAlreadyAskedFor;
+
+
+
+CAddress addrProxy;
+
+bool ConnectSocket(const CAddress& addrConnect, SOCKET& hSocketRet)
+{
+    hSocketRet = INVALID_SOCKET;
+
+    SOCKET hSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+    if (hSocket == INVALID_SOCKET)
+        return false;
+
+    bool fRoutable = !(addrConnect.GetByte(3) == 10 || (addrConnect.GetByte(3) == 192 && addrConnect.GetByte(2) == 168));
+    bool fProxy = (addrProxy.ip && fRoutable);
+    struct sockaddr_in sockaddr = (fProxy ? addrProxy.GetSockAddr() : addrConnect.GetSockAddr());
+
+    if (connect(hSocket, (struct sockaddr*)&sockaddr, sizeof(sockaddr)) == SOCKET_ERROR)
+    {
+        closesocket(hSocket);
+        return false;
+    }
+
+    if (fProxy)
+    {
+        printf("Proxy connecting to %s\n", addrConnect.ToString().c_str());
+        char pszSocks4IP[] = "\4\1\0\0\0\0\0\0user";
+        memcpy(pszSocks4IP + 2, &addrConnect.port, 2);
+        memcpy(pszSocks4IP + 4, &addrConnect.ip, 4);
+        char* pszSocks4 = pszSocks4IP;
+        int nSize = sizeof(pszSocks4IP);
+
+        int ret = send(hSocket, pszSocks4, nSize, 0);
+        if (ret != nSize)
+        {
+            closesocket(hSocket);
+            return error("Error sending to proxy\n");
+        }
+        char pchRet[8];
+        if (recv(hSocket, pchRet, 8, 0) != 8)
+        {
+            closesocket(hSocket);
+            return error("Error reading proxy response\n");
+        }
+        if (pchRet[1] != 0x5a)
+        {
+            closesocket(hSocket);
+            return error("Proxy returned error %d\n", pchRet[1]);
+        }
+        printf("Proxy connection established %s\n", addrConnect.ToString().c_str());
+    }
+
+    hSocketRet = hSocket;
+    return true;
+}
+
+
+
+bool GetMyExternalIP2(const CAddress& addrConnect, const char* pszGet, const char* pszKeyword, unsigned int& ipRet)
+{
+    SOCKET hSocket;
+    if (!ConnectSocket(addrConnect, hSocket))
+        return error("GetMyExternalIP() : connection to %s failed\n", addrConnect.ToString().c_str());
+
+    send(hSocket, pszGet, strlen(pszGet), 0);
+
+    string strLine;
+    while (RecvLine(hSocket, strLine))
+    {
+        if (strLine.empty())
+        {
+            loop
+            {
+                if (!RecvLine(hSocket, strLine))
+                {
+                    closesocket(hSocket);
+                    return false;
+                }
+                if (strLine.find(pszKeyword) != -1)
+                {
+                    strLine = strLine.substr(strLine.find(pszKeyword) + strlen(pszKeyword));
+                    break;
+                }
+            }
+            closesocket(hSocket);
+            if (strLine.find("<"))
+                strLine = strLine.substr(0, strLine.find("<"));
+            strLine = strLine.substr(strspn(strLine.c_str(), " \t\n\r"));
+            strLine = wxString(strLine).Trim();
+            CAddress addr(strLine.c_str());
+            printf("GetMyExternalIP() received [%s] %s\n", strLine.c_str(), addr.ToString().c_str());
+            if (addr.ip == 0 || !addr.IsRoutable())
+                return false;
+            ipRet = addr.ip;
+            return true;
+        }
+    }
+    closesocket(hSocket);
+    return error("GetMyExternalIP() : connection closed\n");
+}
+
+
+bool GetMyExternalIP(unsigned int& ipRet)
+{
+    CAddress addrConnect;
+    char* pszGet;
+    char* pszKeyword;
+
+    for (int nLookup = 0; nLookup <= 1; nLookup++)
+    for (int nHost = 1; nHost <= 2; nHost++)
+    {
+        if (nHost == 1)
+        {
+            addrConnect = CAddress("70.86.96.218:80"); // www.ipaddressworld.com
+
+            if (nLookup == 1)
+            {
+                struct hostent* phostent = gethostbyname("www.ipaddressworld.com");
+                if (phostent && phostent->h_addr_list && phostent->h_addr_list[0])
+                    addrConnect = CAddress(*(u_long*)phostent->h_addr_list[0], htons(80));
+            }
+
+            pszGet = "GET /ip.php HTTP/1.1\r\n"
+                     "Host: www.ipaddressworld.com\r\n"
+                     "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n"
+                     "Connection: close\r\n"
+                     "\r\n";
+
+            pszKeyword = "IP:";
+        }
+        else if (nHost == 2)
+        {
+            addrConnect = CAddress("208.78.68.70:80"); // checkip.dyndns.org
+
+            if (nLookup == 1)
+            {
+                struct hostent* phostent = gethostbyname("checkip.dyndns.org");
+                if (phostent && phostent->h_addr_list && phostent->h_addr_list[0])
+                    addrConnect = CAddress(*(u_long*)phostent->h_addr_list[0], htons(80));
+            }
+
+            pszGet = "GET / HTTP/1.1\r\n"
+                     "Host: checkip.dyndns.org\r\n"
+                     "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)\r\n"
+                     "Connection: close\r\n"
+                     "\r\n";
+
+            pszKeyword = "Address:";
+        }
+
+        if (GetMyExternalIP2(addrConnect, pszGet, pszKeyword, ipRet))
+            return true;
+    }
+
+    return false;
+}
+
+
+
+
+
+bool AddAddress(CAddrDB& addrdb, const CAddress& addr)
+{
+    if (!addr.IsRoutable())
+        return false;
+    if (addr.ip == addrLocalHost.ip)
+        return false;
+    CRITICAL_BLOCK(cs_mapAddresses)
+    {
+        map<vector<unsigned char>, CAddress>::iterator it = mapAddresses.find(addr.GetKey());
+        if (it == mapAddresses.end())
+        {
+            // New address
+            mapAddresses.insert(make_pair(addr.GetKey(), addr));
+            addrdb.WriteAddress(addr);
+            return true;
+        }
+        else
+        {
+            CAddress& addrFound = (*it).second;
+            if ((addrFound.nServices | addr.nServices) != addrFound.nServices)
+            {
+                // Services have been added
+                addrFound.nServices |= addr.nServices;
+                addrdb.WriteAddress(addrFound);
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+
+
+
+
+void AbandonRequests(void (*fn)(void*, CDataStream&), void* param1)
+{
+    // If the dialog might get closed before the reply comes back,
+    // call this in the destructor so it doesn't get called after it's deleted.
+    CRITICAL_BLOCK(cs_vNodes)
+    {
+        foreach(CNode* pnode, vNodes)
+        {
+            CRITICAL_BLOCK(pnode->cs_mapRequests)
+            {
+                for (map<uint256, CRequestTracker>::iterator mi = pnode->mapRequests.begin(); mi != pnode->mapRequests.end();)
+                {
+                    CRequestTracker& tracker = (*mi).second;
+                    if (tracker.fn == fn && tracker.param1 == param1)
+                        pnode->mapRequests.erase(mi++);
+                    else
+                        mi++;
+                }
+            }
+        }
+    }
+}
+
+
+
+
+
+
+
+//
+// Subscription methods for the broadcast and subscription system.
+// Channel numbers are message numbers, i.e. MSG_TABLE and MSG_PRODUCT.
+//
+// The subscription system uses a meet-in-the-middle strategy.
+// With 100,000 nodes, if senders broadcast to 1000 random nodes and receivers
+// subscribe to 1000 random nodes, 99.995% (1 - 0.99^1000) of messages will get through.
+//
+
+bool AnySubscribed(unsigned int nChannel)
+{
+    if (pnodeLocalHost->IsSubscribed(nChannel))
+        return true;
+    CRITICAL_BLOCK(cs_vNodes)
+        foreach(CNode* pnode, vNodes)
+            if (pnode->IsSubscribed(nChannel))
+                return true;
+    return false;
+}
+
+bool CNode::IsSubscribed(unsigned int nChannel)
+{
+    if (nChannel >= vfSubscribe.size())
+        return false;
+    return vfSubscribe[nChannel];
+}
+
+void CNode::Subscribe(unsigned int nChannel, unsigned int nHops)
+{
+    if (nChannel >= vfSubscribe.size())
+        return;
+
+    if (!AnySubscribed(nChannel))
+    {
+        // Relay subscribe
+        CRITICAL_BLOCK(cs_vNodes)
+            foreach(CNode* pnode, vNodes)
+                if (pnode != this)
+                    pnode->PushMessage("subscribe", nChannel, nHops);
+    }
+
+    vfSubscribe[nChannel] = true;
+}
+
+void CNode::CancelSubscribe(unsigned int nChannel)
+{
+    if (nChannel >= vfSubscribe.size())
+        return;
+
+    // Prevent from relaying cancel if wasn't subscribed
+    if (!vfSubscribe[nChannel])
+        return;
+    vfSubscribe[nChannel] = false;
+
+    if (!AnySubscribed(nChannel))
+    {
+        // Relay subscription cancel
+        CRITICAL_BLOCK(cs_vNodes)
+            foreach(CNode* pnode, vNodes)
+                if (pnode != this)
+                    pnode->PushMessage("sub-cancel", nChannel);
+
+        // Clear memory, no longer subscribed
+        if (nChannel == MSG_PRODUCT)
+            CRITICAL_BLOCK(cs_mapProducts)
+                mapProducts.clear();
+    }
+}
+
+
+
+
+
+
+
+
+
+CNode* FindNode(unsigned int ip)
+{
+    CRITICAL_BLOCK(cs_vNodes)
+    {
+        foreach(CNode* pnode, vNodes)
+            if (pnode->addr.ip == ip)
+                return (pnode);
+    }
+    return NULL;
+}
+
+CNode* FindNode(CAddress addr)
+{
+    CRITICAL_BLOCK(cs_vNodes)
+    {
+        foreach(CNode* pnode, vNodes)
+            if (pnode->addr == addr)
+                return (pnode);
+    }
+    return NULL;
+}
+
+CNode* ConnectNode(CAddress addrConnect, int64 nTimeout)
+{
+    if (addrConnect.ip == addrLocalHost.ip)
+        return NULL;
+
+    // Look for an existing connection
+    CNode* pnode = FindNode(addrConnect.ip);
+    if (pnode)
+    {
+        if (nTimeout != 0)
+            pnode->AddRef(nTimeout);
+        else
+            pnode->AddRef();
+        return pnode;
+    }
+
+    /// debug print
+    printf("trying %s\n", addrConnect.ToString().c_str());
+
+    // Connect
+    SOCKET hSocket;
+    if (ConnectSocket(addrConnect, hSocket))
+    {
+        /// debug print
+        printf("connected %s\n", addrConnect.ToString().c_str());
+
+        // Set to nonblocking
+        u_long nOne = 1;
+        if (ioctlsocket(hSocket, FIONBIO, &nOne) == SOCKET_ERROR)
+            printf("ConnectSocket() : ioctlsocket nonblocking setting failed, error %d\n", WSAGetLastError());
+
+        // Add node
+        CNode* pnode = new CNode(hSocket, addrConnect, false);
+        if (nTimeout != 0)
+            pnode->AddRef(nTimeout);
+        else
+            pnode->AddRef();
+        CRITICAL_BLOCK(cs_vNodes)
+            vNodes.push_back(pnode);
+
+        CRITICAL_BLOCK(cs_mapAddresses)
+            mapAddresses[addrConnect.GetKey()].nLastFailed = 0;
+        return pnode;
+    }
+    else
+    {
+        CRITICAL_BLOCK(cs_mapAddresses)
+            mapAddresses[addrConnect.GetKey()].nLastFailed = GetTime();
+        return NULL;
+    }
+}
+
+void CNode::Disconnect()
+{
+    printf("disconnecting node %s\n", addr.ToString().c_str());
+
+    closesocket(hSocket);
+
+    // If outbound and never got version message, mark address as failed
+    if (!fInbound && nVersion == 0)
+        CRITICAL_BLOCK(cs_mapAddresses)
+            mapAddresses[addr.GetKey()].nLastFailed = GetTime();
+
+    // All of a nodes broadcasts and subscriptions are automatically torn down
+    // when it goes down, so a node has to stay up to keep its broadcast going.
+
+    CRITICAL_BLOCK(cs_mapProducts)
+        for (map<uint256, CProduct>::iterator mi = mapProducts.begin(); mi != mapProducts.end();)
+            AdvertRemoveSource(this, MSG_PRODUCT, 0, (*(mi++)).second);
+
+    // Cancel subscriptions
+    for (unsigned int nChannel = 0; nChannel < vfSubscribe.size(); nChannel++)
+        if (vfSubscribe[nChannel])
+            CancelSubscribe(nChannel);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+void ThreadSocketHandler(void* parg)
+{
+    IMPLEMENT_RANDOMIZE_STACK(ThreadSocketHandler(parg));
+
+    loop
+    {
+        vfThreadRunning[0] = true;
+        CheckForShutdown(0);
+        try
+        {
+            ThreadSocketHandler2(parg);
+        }
+        CATCH_PRINT_EXCEPTION("ThreadSocketHandler()")
+        vfThreadRunning[0] = false;
+        Sleep(5000);
+    }
+}
+
+void ThreadSocketHandler2(void* parg)
+{
+    printf("ThreadSocketHandler started\n");
+    SOCKET hListenSocket = *(SOCKET*)parg;
+    list<CNode*> vNodesDisconnected;
+    int nPrevNodeCount = 0;
+
+    loop
+    {
+        //
+        // Disconnect nodes
+        //
+        CRITICAL_BLOCK(cs_vNodes)
+        {
+            // Disconnect unused nodes
+            vector<CNode*> vNodesCopy = vNodes;
+            foreach(CNode* pnode, vNodesCopy)
+            {
+                if (pnode->ReadyToDisconnect() && pnode->vRecv.empty() && pnode->vSend.empty())
+                {
+                    // remove from vNodes
+                    vNodes.erase(remove(vNodes.begin(), vNodes.end(), pnode), vNodes.end());
+                    pnode->Disconnect();
+
+                    // hold in disconnected pool until all refs are released
+                    pnode->nReleaseTime = max(pnode->nReleaseTime, GetTime() + 5 * 60);
+                    if (pnode->fNetworkNode)
+                        pnode->Release();
+                    vNodesDisconnected.push_back(pnode);
+                }
+            }
+
+            // Delete disconnected nodes
+            list<CNode*> vNodesDisconnectedCopy = vNodesDisconnected;
+            foreach(CNode* pnode, vNodesDisconnectedCopy)
+            {
+                // wait until threads are done using it
+                if (pnode->GetRefCount() <= 0)
+                {
+                    bool fDelete = false;
+                    TRY_CRITICAL_BLOCK(pnode->cs_vSend)
+                     TRY_CRITICAL_BLOCK(pnode->cs_vRecv)
+                      TRY_CRITICAL_BLOCK(pnode->cs_mapRequests)
+                       TRY_CRITICAL_BLOCK(pnode->cs_inventory)
+                        fDelete = true;
+                    if (fDelete)
+                    {
+                        vNodesDisconnected.remove(pnode);
+                        delete pnode;
+                    }
+                }
+            }
+        }
+        if (vNodes.size() != nPrevNodeCount)
+        {
+            nPrevNodeCount = vNodes.size();
+            MainFrameRepaint();
+        }
+
+
+        //
+        // Find which sockets have data to receive
+        //
+        struct timeval timeout;
+        timeout.tv_sec  = 0;
+        timeout.tv_usec = 50000; // frequency to poll pnode->vSend
+
+        struct fd_set fdsetRecv;
+        struct fd_set fdsetSend;
+        FD_ZERO(&fdsetRecv);
+        FD_ZERO(&fdsetSend);
+        SOCKET hSocketMax = 0;
+        FD_SET(hListenSocket, &fdsetRecv);
+        hSocketMax = max(hSocketMax, hListenSocket);
+        CRITICAL_BLOCK(cs_vNodes)
+        {
+            foreach(CNode* pnode, vNodes)
+            {
+                FD_SET(pnode->hSocket, &fdsetRecv);
+                hSocketMax = max(hSocketMax, pnode->hSocket);
+                TRY_CRITICAL_BLOCK(pnode->cs_vSend)
+                    if (!pnode->vSend.empty())
+                        FD_SET(pnode->hSocket, &fdsetSend);
+            }
+        }
+
+        vfThreadRunning[0] = false;
+        int nSelect = select(hSocketMax + 1, &fdsetRecv, &fdsetSend, NULL, &timeout);
+        vfThreadRunning[0] = true;
+        CheckForShutdown(0);
+        if (nSelect == SOCKET_ERROR)
+        {
+            int nErr = WSAGetLastError();
+            printf("select failed: %d\n", nErr);
+            for (int i = 0; i <= hSocketMax; i++)
+            {
+                FD_SET(i, &fdsetRecv);
+                FD_SET(i, &fdsetSend);
+            }
+            Sleep(timeout.tv_usec/1000);
+        }
+        RandAddSeed();
+
+        //// debug print
+        //foreach(CNode* pnode, vNodes)
+        //{
+        //    printf("vRecv = %-5d ", pnode->vRecv.size());
+        //    printf("vSend = %-5d    ", pnode->vSend.size());
+        //}
+        //printf("\n");
+
+
+        //
+        // Accept new connections
+        //
+        if (FD_ISSET(hListenSocket, &fdsetRecv))
+        {
+            struct sockaddr_in sockaddr;
+            int len = sizeof(sockaddr);
+            SOCKET hSocket = accept(hListenSocket, (struct sockaddr*)&sockaddr, &len);
+            CAddress addr(sockaddr);
+            if (hSocket == INVALID_SOCKET)
+            {
+                if (WSAGetLastError() != WSAEWOULDBLOCK)
+                    printf("ERROR ThreadSocketHandler accept failed: %d\n", WSAGetLastError());
+            }
+            else
+            {
+                printf("accepted connection from %s\n", addr.ToString().c_str());
+                CNode* pnode = new CNode(hSocket, addr, true);
+                pnode->AddRef();
+                CRITICAL_BLOCK(cs_vNodes)
+                    vNodes.push_back(pnode);
+            }
+        }
+
+
+        //
+        // Service each socket
+        //
+        vector<CNode*> vNodesCopy;
+        CRITICAL_BLOCK(cs_vNodes)
+            vNodesCopy = vNodes;
+        foreach(CNode* pnode, vNodesCopy)
+        {
+            CheckForShutdown(0);
+            SOCKET hSocket = pnode->hSocket;
+
+            //
+            // Receive
+            //
+            if (FD_ISSET(hSocket, &fdsetRecv))
+            {
+                TRY_CRITICAL_BLOCK(pnode->cs_vRecv)
+                {
+                    CDataStream& vRecv = pnode->vRecv;
+                    unsigned int nPos = vRecv.size();
+
+                    // typical socket buffer is 8K-64K
+                    const unsigned int nBufSize = 0x10000;
+                    vRecv.resize(nPos + nBufSize);
+                    int nBytes = recv(hSocket, &vRecv[nPos], nBufSize, 0);
+                    vRecv.resize(nPos + max(nBytes, 0));
+                    if (nBytes == 0)
+                    {
+                        // socket closed gracefully
+                        if (!pnode->fDisconnect)
+                            printf("recv: socket closed\n");
+                        pnode->fDisconnect = true;
+                    }
+                    else if (nBytes < 0)
+                    {
+                        // socket error
+                        int nErr = WSAGetLastError();
+                        if (nErr != WSAEWOULDBLOCK && nErr != WSAEMSGSIZE && nErr != WSAEINTR && nErr != WSAEINPROGRESS)
+                        {
+                            if (!pnode->fDisconnect)
+                                printf("recv failed: %d\n", nErr);
+                            pnode->fDisconnect = true;
+                        }
+                    }
+                }
+            }
+
+            //
+            // Send
+            //
+            if (FD_ISSET(hSocket, &fdsetSend))
+            {
+                TRY_CRITICAL_BLOCK(pnode->cs_vSend)
+                {
+                    CDataStream& vSend = pnode->vSend;
+                    if (!vSend.empty())
+                    {
+                        int nBytes = send(hSocket, &vSend[0], vSend.size(), 0);
+                        if (nBytes > 0)
+                        {
+                            vSend.erase(vSend.begin(), vSend.begin() + nBytes);
+                        }
+                        else if (nBytes == 0)
+                        {
+                            if (pnode->ReadyToDisconnect())
+                                pnode->vSend.clear();
+                        }
+                        else
+                        {
+                            printf("send error %d\n", nBytes);
+                            if (pnode->ReadyToDisconnect())
+                                pnode->vSend.clear();
+                        }
+                    }
+                }
+            }
+        }
+
+
+        Sleep(10);
+    }
+}
+
+
+
+
+
+
+
+
+
+
+void ThreadOpenConnections(void* parg)
+{
+    IMPLEMENT_RANDOMIZE_STACK(ThreadOpenConnections(parg));
+
+    loop
+    {
+        vfThreadRunning[1] = true;
+        CheckForShutdown(1);
+        try
+        {
+            ThreadOpenConnections2(parg);
+        }
+        CATCH_PRINT_EXCEPTION("ThreadOpenConnections()")
+        vfThreadRunning[1] = false;
+        Sleep(5000);
+    }
+}
+
+void ThreadOpenConnections2(void* parg)
+{
+    printf("ThreadOpenConnections started\n");
+
+    // Initiate network connections
+    int nTry = 0;
+    bool fIRCOnly = false;
+    const int nMaxConnections = 15;
+    loop
+    {
+        // Wait
+        vfThreadRunning[1] = false;
+        Sleep(500);
+        while (vNodes.size() >= nMaxConnections || vNodes.size() >= mapAddresses.size())
+        {
+            CheckForShutdown(1);
+            Sleep(2000);
+        }
+        vfThreadRunning[1] = true;
+        CheckForShutdown(1);
+
+
+        //
+        // The IP selection process is designed to limit vulnerability to address flooding.
+        // Any class C (a.b.c.?) has an equal chance of being chosen, then an IP is
+        // chosen within the class C.  An attacker may be able to allocate many IPs, but
+        // they would normally be concentrated in blocks of class C's.  They can hog the
+        // attention within their class C, but not the whole IP address space overall.
+        // A lone node in a class C will get as much attention as someone holding all 255
+        // IPs in another class C.
+        //
+
+        // Every other try is with IRC addresses only
+        fIRCOnly = !fIRCOnly;
+        if (mapIRCAddresses.empty())
+            fIRCOnly = false;
+        else if (nTry++ < 30 && vNodes.size() < nMaxConnections/2)
+            fIRCOnly = true;
+
+        // Make a list of unique class C's
+        unsigned char pchIPCMask[4] = { 0xff, 0xff, 0xff, 0x00 };
+        unsigned int nIPCMask = *(unsigned int*)pchIPCMask;
+        vector<unsigned int> vIPC;
+        CRITICAL_BLOCK(cs_mapIRCAddresses)
+        CRITICAL_BLOCK(cs_mapAddresses)
+        {
+            vIPC.reserve(mapAddresses.size());
+            unsigned int nPrev = 0;
+            foreach(const PAIRTYPE(vector<unsigned char>, CAddress)& item, mapAddresses)
+            {
+                const CAddress& addr = item.second;
+                if (!addr.IsIPv4())
+                    continue;
+                if (fIRCOnly && !mapIRCAddresses.count(item.first))
+                    continue;
+
+                // Taking advantage of mapAddresses being in sorted order,
+                // with IPs of the same class C grouped together.
+                unsigned int ipC = addr.ip & nIPCMask;
+                if (ipC != nPrev)
+                    vIPC.push_back(nPrev = ipC);
+            }
+        }
+        if (vIPC.empty())
+            continue;
+
+        // Choose a random class C
+        unsigned int ipC = vIPC[GetRand(vIPC.size())];
+
+        // Organize all addresses in the class C by IP
+        map<unsigned int, vector<CAddress> > mapIP;
+        CRITICAL_BLOCK(cs_mapIRCAddresses)
+        CRITICAL_BLOCK(cs_mapAddresses)
+        {
+            int64 nDelay = ((30 * 60) << vNodes.size());
+            if (!fIRCOnly)
+            {
+                nDelay *= 2;
+                if (vNodes.size() >= 3)
+                    nDelay *= 4;
+                if (!mapIRCAddresses.empty())
+                    nDelay *= 100;
+            }
+
+            for (map<vector<unsigned char>, CAddress>::iterator mi = mapAddresses.lower_bound(CAddress(ipC, 0).GetKey());
+                 mi != mapAddresses.upper_bound(CAddress(ipC | ~nIPCMask, 0xffff).GetKey());
+                 ++mi)
+            {
+                const CAddress& addr = (*mi).second;
+                if (fIRCOnly && !mapIRCAddresses.count((*mi).first))
+                    continue;
+
+                int64 nRandomizer = (addr.nLastFailed * addr.ip * 7777U) % 20000;
+                if (GetTime() - addr.nLastFailed > nDelay * nRandomizer / 10000)
+                    mapIP[addr.ip].push_back(addr);
+            }
+        }
+        if (mapIP.empty())
+            continue;
+
+        // Choose a random IP in the class C
+        map<unsigned int, vector<CAddress> >::iterator mi = mapIP.begin();
+        advance(mi, GetRand(mapIP.size()));
+
+        // Once we've chosen an IP, we'll try every given port before moving on
+        foreach(const CAddress& addrConnect, (*mi).second)
+        {
+            //
+            // Initiate outbound network connection
+            //
+            CheckForShutdown(1);
+            if (addrConnect.ip == addrLocalHost.ip || !addrConnect.IsIPv4() || FindNode(addrConnect.ip))
+                continue;
+
+            vfThreadRunning[1] = false;
+            CNode* pnode = ConnectNode(addrConnect);
+            vfThreadRunning[1] = true;
+            CheckForShutdown(1);
+            if (!pnode)
+                continue;
+            pnode->fNetworkNode = true;
+
+            if (addrLocalHost.IsRoutable())
+            {
+                // Advertise our address
+                vector<CAddress> vAddrToSend;
+                vAddrToSend.push_back(addrLocalHost);
+                pnode->PushMessage("addr", vAddrToSend);
+            }
+
+            // Get as many addresses as we can
+            pnode->PushMessage("getaddr");
+
+            ////// should the one on the receiving end do this too?
+            // Subscribe our local subscription list
+            const unsigned int nHops = 0;
+            for (unsigned int nChannel = 0; nChannel < pnodeLocalHost->vfSubscribe.size(); nChannel++)
+                if (pnodeLocalHost->vfSubscribe[nChannel])
+                    pnode->PushMessage("subscribe", nChannel, nHops);
+
+            break;
+        }
+    }
+}
+
+
+
+
+
+
+
+
+void ThreadMessageHandler(void* parg)
+{
+    IMPLEMENT_RANDOMIZE_STACK(ThreadMessageHandler(parg));
+
+    loop
+    {
+        vfThreadRunning[2] = true;
+        CheckForShutdown(2);
+        try
+        {
+            ThreadMessageHandler2(parg);
+        }
+        CATCH_PRINT_EXCEPTION("ThreadMessageHandler()")
+        vfThreadRunning[2] = false;
+        Sleep(5000);
+    }
+}
+
+void ThreadMessageHandler2(void* parg)
+{
+    printf("ThreadMessageHandler started\n");
+    SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_BELOW_NORMAL);
+    loop
+    {
+        // Poll the connected nodes for messages
+        vector<CNode*> vNodesCopy;
+        CRITICAL_BLOCK(cs_vNodes)
+            vNodesCopy = vNodes;
+        foreach(CNode* pnode, vNodesCopy)
+        {
+            pnode->AddRef();
+
+            // Receive messages
+            TRY_CRITICAL_BLOCK(pnode->cs_vRecv)
+                ProcessMessages(pnode);
+
+            // Send messages
+            TRY_CRITICAL_BLOCK(pnode->cs_vSend)
+                SendMessages(pnode);
+
+            pnode->Release();
+        }
+
+        // Wait and allow messages to bunch up
+        vfThreadRunning[2] = false;
+        Sleep(100);
+        vfThreadRunning[2] = true;
+        CheckForShutdown(2);
+    }
+}
+
+
+
+
+
+
+
+
+
+//// todo: start one thread per processor, use getenv("NUMBER_OF_PROCESSORS")
+void ThreadBitcoinMiner(void* parg)
+{
+    vfThreadRunning[3] = true;
+    CheckForShutdown(3);
+    try
+    {
+        bool fRet = BitcoinMiner();
+        printf("BitcoinMiner returned %s\n\n\n", fRet ? "true" : "false");
+    }
+    CATCH_PRINT_EXCEPTION("BitcoinMiner()")
+    vfThreadRunning[3] = false;
+}
+
+
+
+
+
+
+
+
+
+
+
+bool StartNode(string& strError)
+{
+    strError = "";
+
+    // Sockets startup
+    WSADATA wsadata;
+    int ret = WSAStartup(MAKEWORD(2,2), &wsadata);
+    if (ret != NO_ERROR)
+    {
+        strError = strprintf("Error: TCP/IP socket library failed to start (WSAStartup returned error %d)", ret);
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+
+    // Get local host ip
+    char pszHostName[255];
+    if (gethostname(pszHostName, 255) == SOCKET_ERROR)
+    {
+        strError = strprintf("Error: Unable to get IP address of this computer (gethostname returned error %d)", WSAGetLastError());
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+    struct hostent* phostent = gethostbyname(pszHostName);
+    if (!phostent)
+    {
+        strError = strprintf("Error: Unable to get IP address of this computer (gethostbyname returned error %d)", WSAGetLastError());
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+    addrLocalHost = CAddress(*(long*)(phostent->h_addr_list[0]),
+                             DEFAULT_PORT,
+                             nLocalServices);
+    printf("addrLocalHost = %s\n", addrLocalHost.ToString().c_str());
+
+    // Create socket for listening for incoming connections
+    SOCKET hListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
+    if (hListenSocket == INVALID_SOCKET)
+    {
+        strError = strprintf("Error: Couldn't open socket for incoming connections (socket returned error %d)", WSAGetLastError());
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+
+    // Set to nonblocking, incoming connections will also inherit this
+    u_long nOne = 1;
+    if (ioctlsocket(hListenSocket, FIONBIO, &nOne) == SOCKET_ERROR)
+    {
+        strError = strprintf("Error: Couldn't set properties on socket for incoming connections (ioctlsocket returned error %d)", WSAGetLastError());
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+
+    // The sockaddr_in structure specifies the address family,
+    // IP address, and port for the socket that is being bound
+    int nRetryLimit = 15;
+    struct sockaddr_in sockaddr = addrLocalHost.GetSockAddr();
+    if (bind(hListenSocket, (struct sockaddr*)&sockaddr, sizeof(sockaddr)) == SOCKET_ERROR)
+    {
+        int nErr = WSAGetLastError();
+        if (nErr == WSAEADDRINUSE)
+            strError = strprintf("Error: Unable to bind to port %s on this computer. The program is probably already running.", addrLocalHost.ToString().c_str());
+        else
+            strError = strprintf("Error: Unable to bind to port %s on this computer (bind returned error %d)", addrLocalHost.ToString().c_str(), nErr);
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+    printf("bound to addrLocalHost = %s\n\n", addrLocalHost.ToString().c_str());
+
+    // Listen for incoming connections
+    if (listen(hListenSocket, SOMAXCONN) == SOCKET_ERROR)
+    {
+        strError = strprintf("Error: Listening for incoming connections failed (listen returned error %d)", WSAGetLastError());
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+
+    // Get our external IP address for incoming connections
+    if (addrIncoming.ip)
+        addrLocalHost.ip = addrIncoming.ip;
+
+    if (GetMyExternalIP(addrLocalHost.ip))
+    {
+        addrIncoming = addrLocalHost;
+        CWalletDB().WriteSetting("addrIncoming", addrIncoming);
+    }
+
+    // Get addresses from IRC and advertise ours
+    if (_beginthread(ThreadIRCSeed, 0, NULL) == -1)
+        printf("Error: _beginthread(ThreadIRCSeed) failed\n");
+
+    //
+    // Start threads
+    //
+    if (_beginthread(ThreadSocketHandler, 0, new SOCKET(hListenSocket)) == -1)
+    {
+        strError = "Error: _beginthread(ThreadSocketHandler) failed";
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+
+    if (_beginthread(ThreadOpenConnections, 0, NULL) == -1)
+    {
+        strError = "Error: _beginthread(ThreadOpenConnections) failed";
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+
+    if (_beginthread(ThreadMessageHandler, 0, NULL) == -1)
+    {
+        strError = "Error: _beginthread(ThreadMessageHandler) failed";
+        printf("%s\n", strError.c_str());
+        return false;
+    }
+
+    return true;
+}
+
+bool StopNode()
+{
+    printf("StopNode()\n");
+    fShutdown = true;
+    nTransactionsUpdated++;
+    int64 nStart = GetTime();
+    while (vfThreadRunning[0] || vfThreadRunning[2] || vfThreadRunning[3])
+    {
+        if (GetTime() - nStart > 15)
+            break;
+        Sleep(20);
+    }
+    if (vfThreadRunning[0]) printf("ThreadSocketHandler still running\n");
+    if (vfThreadRunning[1]) printf("ThreadOpenConnections still running\n");
+    if (vfThreadRunning[2]) printf("ThreadMessageHandler still running\n");
+    if (vfThreadRunning[3]) printf("ThreadBitcoinMiner still running\n");
+    while (vfThreadRunning[2])
+        Sleep(20);
+    Sleep(50);
+
+    // Sockets shutdown
+    WSACleanup();
+    return true;
+}
+
+void CheckForShutdown(int n)
+{
+    if (fShutdown)
+    {
+        if (n != -1)
+            vfThreadRunning[n] = false;
+        if (n == 0)
+            foreach(CNode* pnode, vNodes)
+                closesocket(pnode->hSocket);
+        _endthread();
+    }
+}
new file mode 100644
--- /dev/null
+++ b/net.h
@@ -0,0 +1,856 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+class CMessageHeader;
+class CAddress;
+class CInv;
+class CRequestTracker;
+class CNode;
+
+
+
+static const unsigned short DEFAULT_PORT = htons(8333);
+static const unsigned int PUBLISH_HOPS = 5;
+enum
+{
+    NODE_NETWORK = (1 << 0),
+};
+
+
+
+
+
+
+bool ConnectSocket(const CAddress& addrConnect, SOCKET& hSocketRet);
+bool GetMyExternalIP(unsigned int& ipRet);
+bool AddAddress(CAddrDB& addrdb, const CAddress& addr);
+CNode* FindNode(unsigned int ip);
+CNode* ConnectNode(CAddress addrConnect, int64 nTimeout=0);
+void AbandonRequests(void (*fn)(void*, CDataStream&), void* param1);
+bool AnySubscribed(unsigned int nChannel);
+void ThreadBitcoinMiner(void* parg);
+bool StartNode(string& strError=REF(string()));
+bool StopNode();
+void CheckForShutdown(int n);
+
+
+
+
+
+
+
+
+
+//
+// Message header
+//  (4) message start
+//  (12) command
+//  (4) size
+
+// The message start string is designed to be unlikely to occur in normal data.
+// The characters are rarely used upper ascii, not valid as UTF-8, and produce
+// a large 4-byte int at any alignment.
+static const char pchMessageStart[4] = { 0xf9, 0xbe, 0xb4, 0xd9 };
+
+class CMessageHeader
+{
+public:
+    enum { COMMAND_SIZE=12 };
+    char pchMessageStart[sizeof(::pchMessageStart)];
+    char pchCommand[COMMAND_SIZE];
+    unsigned int nMessageSize;
+
+    CMessageHeader()
+    {
+        memcpy(pchMessageStart, ::pchMessageStart, sizeof(pchMessageStart));
+        memset(pchCommand, 0, sizeof(pchCommand));
+        pchCommand[1] = 1;
+        nMessageSize = -1;
+    }
+
+    CMessageHeader(const char* pszCommand, unsigned int nMessageSizeIn)
+    {
+        memcpy(pchMessageStart, ::pchMessageStart, sizeof(pchMessageStart));
+        strncpy(pchCommand, pszCommand, COMMAND_SIZE);
+        nMessageSize = nMessageSizeIn;
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        READWRITE(FLATDATA(pchMessageStart));
+        READWRITE(FLATDATA(pchCommand));
+        READWRITE(nMessageSize);
+    )
+
+    string GetCommand()
+    {
+        if (pchCommand[COMMAND_SIZE-1] == 0)
+            return string(pchCommand, pchCommand + strlen(pchCommand));
+        else
+            return string(pchCommand, pchCommand + COMMAND_SIZE);
+    }
+
+    bool IsValid()
+    {
+        // Check start string
+        if (memcmp(pchMessageStart, ::pchMessageStart, sizeof(pchMessageStart)) != 0)
+            return false;
+
+        // Check the command string for errors
+        for (char* p1 = pchCommand; p1 < pchCommand + COMMAND_SIZE; p1++)
+        {
+            if (*p1 == 0)
+            {
+                // Must be all zeros after the first zero
+                for (; p1 < pchCommand + COMMAND_SIZE; p1++)
+                    if (*p1 != 0)
+                        return false;
+            }
+            else if (*p1 < ' ' || *p1 > 0x7E)
+                return false;
+        }
+
+        // Message size
+        if (nMessageSize > 0x10000000)
+        {
+            printf("CMessageHeader::IsValid() : nMessageSize too large %u\n", nMessageSize);
+            return false;
+        }
+
+        return true;
+    }
+};
+
+
+
+
+
+
+static const unsigned char pchIPv4[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff };
+
+class CAddress
+{
+public:
+    uint64 nServices;
+    unsigned char pchReserved[12];
+    unsigned int ip;
+    unsigned short port;
+
+    // disk only
+    unsigned int nTime;
+
+    // memory only
+    unsigned int nLastFailed;
+
+    CAddress()
+    {
+        nServices = 0;
+        memcpy(pchReserved, pchIPv4, sizeof(pchReserved));
+        ip = 0;
+        port = DEFAULT_PORT;
+        nTime = GetAdjustedTime();
+        nLastFailed = 0;
+    }
+
+    CAddress(unsigned int ipIn, unsigned short portIn=DEFAULT_PORT, uint64 nServicesIn=0)
+    {
+        nServices = nServicesIn;
+        memcpy(pchReserved, pchIPv4, sizeof(pchReserved));
+        ip = ipIn;
+        port = portIn;
+        nTime = GetAdjustedTime();
+        nLastFailed = 0;
+    }
+
+    explicit CAddress(const struct sockaddr_in& sockaddr, uint64 nServicesIn=0)
+    {
+        nServices = nServicesIn;
+        memcpy(pchReserved, pchIPv4, sizeof(pchReserved));
+        ip = sockaddr.sin_addr.s_addr;
+        port = sockaddr.sin_port;
+        nTime = GetAdjustedTime();
+        nLastFailed = 0;
+    }
+
+    explicit CAddress(const char* pszIn, uint64 nServicesIn=0)
+    {
+        nServices = nServicesIn;
+        memcpy(pchReserved, pchIPv4, sizeof(pchReserved));
+        ip = 0;
+        port = DEFAULT_PORT;
+        nTime = GetAdjustedTime();
+        nLastFailed = 0;
+
+        char psz[100];
+        if (strlen(pszIn) > ARRAYLEN(psz)-1)
+            return;
+        strcpy(psz, pszIn);
+        unsigned int a, b, c, d, e;
+        if (sscanf(psz, "%u.%u.%u.%u:%u", &a, &b, &c, &d, &e) < 4)
+            return;
+        char* pszPort = strchr(psz, ':');
+        if (pszPort)
+        {
+            *pszPort++ = '\0';
+            port = htons(atoi(pszPort));
+        }
+        ip = inet_addr(psz);
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        if (nType & SER_DISK)
+        {
+            READWRITE(nVersion);
+            READWRITE(nTime);
+        }
+        READWRITE(nServices);
+        READWRITE(FLATDATA(pchReserved));
+        READWRITE(ip);
+        READWRITE(port);
+    )
+
+    friend inline bool operator==(const CAddress& a, const CAddress& b)
+    {
+        return (memcmp(a.pchReserved, b.pchReserved, sizeof(a.pchReserved)) == 0 &&
+                a.ip   == b.ip &&
+                a.port == b.port);
+    }
+
+    friend inline bool operator<(const CAddress& a, const CAddress& b)
+    {
+        int ret = memcmp(a.pchReserved, b.pchReserved, sizeof(a.pchReserved));
+        if (ret < 0)
+            return true;
+        else if (ret == 0)
+        {
+            if (ntohl(a.ip) < ntohl(b.ip))
+                return true;
+            else if (a.ip == b.ip)
+                return ntohs(a.port) < ntohs(b.port);
+        }
+        return false;
+    }
+
+    vector<unsigned char> GetKey() const
+    {
+        CDataStream ss;
+        ss.reserve(18);
+        ss << FLATDATA(pchReserved) << ip << port;
+
+        #if defined(_MSC_VER) && _MSC_VER < 1300
+        return vector<unsigned char>((unsigned char*)&ss.begin()[0], (unsigned char*)&ss.end()[0]);
+        #else
+        return vector<unsigned char>(ss.begin(), ss.end());
+        #endif
+    }
+
+    struct sockaddr_in GetSockAddr() const
+    {
+        struct sockaddr_in sockaddr;
+        sockaddr.sin_family = AF_INET;
+        sockaddr.sin_addr.s_addr = ip;
+        sockaddr.sin_port = port;
+        return sockaddr;
+    }
+
+    bool IsIPv4() const
+    {
+        return (memcmp(pchReserved, pchIPv4, sizeof(pchIPv4)) == 0);
+    }
+
+    bool IsRoutable() const
+    {
+        return !(GetByte(3) == 10 || (GetByte(3) == 192 && GetByte(2) == 168) || GetByte(3) == 127 || GetByte(3) == 0);
+    }
+
+    unsigned char GetByte(int n) const
+    {
+        return ((unsigned char*)&ip)[3-n];
+    }
+
+    string ToStringIPPort() const
+    {
+        return strprintf("%u.%u.%u.%u:%u", GetByte(3), GetByte(2), GetByte(1), GetByte(0), ntohs(port));
+    }
+
+    string ToStringIP() const
+    {
+        return strprintf("%u.%u.%u.%u", GetByte(3), GetByte(2), GetByte(1), GetByte(0));
+    }
+
+    string ToString() const
+    {
+        return strprintf("%u.%u.%u.%u:%u", GetByte(3), GetByte(2), GetByte(1), GetByte(0), ntohs(port));
+        //return strprintf("%u.%u.%u.%u", GetByte(3), GetByte(2), GetByte(1), GetByte(0));
+    }
+
+    void print() const
+    {
+        printf("CAddress(%s)\n", ToString().c_str());
+    }
+};
+
+
+
+
+
+
+
+enum
+{
+    MSG_TX = 1,
+    MSG_BLOCK,
+    MSG_REVIEW,
+    MSG_PRODUCT,
+    MSG_TABLE,
+};
+
+static const char* ppszTypeName[] =
+{
+    "ERROR",
+    "tx",
+    "block",
+    "review",
+    "product",
+    "table",
+};
+
+class CInv
+{
+public:
+    int type;
+    uint256 hash;
+
+    CInv()
+    {
+        type = 0;
+        hash = 0;
+    }
+
+    CInv(int typeIn, const uint256& hashIn)
+    {
+        type = typeIn;
+        hash = hashIn;
+    }
+
+    CInv(const string& strType, const uint256& hashIn)
+    {
+        int i;
+        for (i = 1; i < ARRAYLEN(ppszTypeName); i++)
+        {
+            if (strType == ppszTypeName[i])
+            {
+                type = i;
+                break;
+            }
+        }
+        if (i == ARRAYLEN(ppszTypeName))
+            throw std::out_of_range(strprintf("CInv::CInv(string, uint256) : unknown type '%s'", strType.c_str()));
+        hash = hashIn;
+    }
+
+    IMPLEMENT_SERIALIZE
+    (
+        READWRITE(type);
+        READWRITE(hash);
+    )
+
+    friend inline bool operator<(const CInv& a, const CInv& b)
+    {
+        return (a.type < b.type || (a.type == b.type && a.hash < b.hash));
+    }
+
+    bool IsKnownType() const
+    {
+        return (type >= 1 && type < ARRAYLEN(ppszTypeName));
+    }
+
+    const char* GetCommand() const
+    {
+        if (!IsKnownType())
+            throw std::out_of_range(strprintf("CInv::GetCommand() : type=% unknown type", type));
+        return ppszTypeName[type];
+    }
+
+    string ToString() const
+    {
+        return strprintf("%s %s", GetCommand(), hash.ToString().substr(0,14).c_str());
+    }
+
+    void print() const
+    {
+        printf("CInv(%s)\n", ToString().c_str());
+    }
+};
+
+
+
+
+
+class CRequestTracker
+{
+public:
+    void (*fn)(void*, CDataStream&);
+    void* param1;
+
+    explicit CRequestTracker(void (*fnIn)(void*, CDataStream&)=NULL, void* param1In=NULL)
+    {
+        fn = fnIn;
+        param1 = param1In;
+    }
+
+    bool IsNull()
+    {
+        return fn == NULL;
+    }
+};
+
+
+
+
+
+extern bool fClient;
+extern uint64 nLocalServices;
+extern CAddress addrLocalHost;
+extern CNode* pnodeLocalHost;
+extern bool fShutdown;
+extern array<bool, 10> vfThreadRunning;
+extern vector<CNode*> vNodes;
+extern CCriticalSection cs_vNodes;
+extern map<vector<unsigned char>, CAddress> mapAddresses;
+extern CCriticalSection cs_mapAddresses;
+extern map<CInv, CDataStream> mapRelay;
+extern deque<pair<int64, CInv> > vRelayExpiration;
+extern CCriticalSection cs_mapRelay;
+extern map<CInv, int64> mapAlreadyAskedFor;
+extern CAddress addrProxy;
+
+
+
+
+
+class CNode
+{
+public:
+    // socket
+    uint64 nServices;
+    SOCKET hSocket;
+    CDataStream vSend;
+    CDataStream vRecv;
+    CCriticalSection cs_vSend;
+    CCriticalSection cs_vRecv;
+    unsigned int nPushPos;
+    CAddress addr;
+    int nVersion;
+    bool fClient;
+    bool fInbound;
+    bool fNetworkNode;
+    bool fDisconnect;
+protected:
+    int nRefCount;
+public:
+    int64 nReleaseTime;
+    map<uint256, CRequestTracker> mapRequests;
+    CCriticalSection cs_mapRequests;
+
+    // flood
+    vector<CAddress> vAddrToSend;
+    set<CAddress> setAddrKnown;
+
+    // inventory based relay
+    set<CInv> setInventoryKnown;
+    set<CInv> setInventoryKnown2;
+    vector<CInv> vInventoryToSend;
+    CCriticalSection cs_inventory;
+    multimap<int64, CInv> mapAskFor;
+
+    // publish and subscription
+    vector<char> vfSubscribe;
+
+
+    CNode(SOCKET hSocketIn, CAddress addrIn, bool fInboundIn=false)
+    {
+        nServices = 0;
+        hSocket = hSocketIn;
+        vSend.SetType(SER_NETWORK);
+        vRecv.SetType(SER_NETWORK);
+        nPushPos = -1;
+        addr = addrIn;
+        nVersion = 0;
+        fClient = false; // set by version message
+        fInbound = fInboundIn;
+        fNetworkNode = false;
+        fDisconnect = false;
+        nRefCount = 0;
+        nReleaseTime = 0;
+        vfSubscribe.assign(256, false);
+
+        // Push a version message
+        /// when NTP implemented, change to just nTime = GetAdjustedTime()
+        int64 nTime = (fInbound ? GetAdjustedTime() : GetTime());
+        PushMessage("version", VERSION, nLocalServices, nTime, addr);
+    }
+
+    ~CNode()
+    {
+        if (hSocket != INVALID_SOCKET)
+            closesocket(hSocket);
+    }
+
+private:
+    CNode(const CNode&);
+    void operator=(const CNode&);
+public:
+
+
+    bool ReadyToDisconnect()
+    {
+        return fDisconnect || GetRefCount() <= 0;
+    }
+
+    int GetRefCount()
+    {
+        return max(nRefCount, 0) + (GetTime() < nReleaseTime ? 1 : 0);
+    }
+
+    void AddRef(int64 nTimeout=0)
+    {
+        if (nTimeout != 0)
+            nReleaseTime = max(nReleaseTime, GetTime() + nTimeout);
+        else
+            nRefCount++;
+    }
+
+    void Release()
+    {
+        nRefCount--;
+    }
+
+
+
+    void AddInventoryKnown(const CInv& inv)
+    {
+        CRITICAL_BLOCK(cs_inventory)
+            setInventoryKnown.insert(inv);
+    }
+
+    void PushInventory(const CInv& inv)
+    {
+        CRITICAL_BLOCK(cs_inventory)
+            if (!setInventoryKnown.count(inv))
+                vInventoryToSend.push_back(inv);
+    }
+
+    void AskFor(const CInv& inv)
+    {
+        // We're using mapAskFor as a priority queue,
+        // the key is the earliest time the request can be sent
+        int64& nRequestTime = mapAlreadyAskedFor[inv];
+        printf("askfor %s  %I64d\n", inv.ToString().c_str(), nRequestTime);
+
+        // Make sure not to reuse time indexes to keep things in the same order
+        int64 nNow = (GetTime() - 1) * 1000000;
+        static int64 nLastTime;
+        nLastTime = nNow = max(nNow, ++nLastTime);
+
+        // Each retry is 2 minutes after the last
+        nRequestTime = max(nRequestTime + 2 * 60 * 1000000, nNow);
+        mapAskFor.insert(make_pair(nRequestTime, inv));
+    }
+
+
+
+    void BeginMessage(const char* pszCommand)
+    {
+        EnterCriticalSection(&cs_vSend);
+        if (nPushPos != -1)
+            AbortMessage();
+        nPushPos = vSend.size();
+        vSend << CMessageHeader(pszCommand, 0);
+        printf("sending: %-12s ", pszCommand);
+    }
+
+    void AbortMessage()
+    {
+        if (nPushPos == -1)
+            return;
+        vSend.resize(nPushPos);
+        nPushPos = -1;
+        LeaveCriticalSection(&cs_vSend);
+        printf("(aborted)\n");
+    }
+
+    void EndMessage()
+    {
+        extern int nDropMessagesTest;
+        if (nDropMessagesTest > 0 && GetRand(nDropMessagesTest) == 0)
+        {
+            printf("dropmessages DROPPING SEND MESSAGE\n");
+            AbortMessage();
+            return;
+        }
+
+        if (nPushPos == -1)
+            return;
+
+        // Patch in the size
+        unsigned int nSize = vSend.size() - nPushPos - sizeof(CMessageHeader);
+        memcpy((char*)&vSend[nPushPos] + offsetof(CMessageHeader, nMessageSize), &nSize, sizeof(nSize));
+
+        printf("(%d bytes)  ", nSize);
+        //for (int i = nPushPos+sizeof(CMessageHeader); i < min(vSend.size(), nPushPos+sizeof(CMessageHeader)+20U); i++)
+        //    printf("%02x ", vSend[i] & 0xff);
+        printf("\n");
+
+        nPushPos = -1;
+        LeaveCriticalSection(&cs_vSend);
+    }
+
+    void EndMessageAbortIfEmpty()
+    {
+        if (nPushPos == -1)
+            return;
+        int nSize = vSend.size() - nPushPos - sizeof(CMessageHeader);
+        if (nSize > 0)
+            EndMessage();
+        else
+            AbortMessage();
+    }
+
+    const char* GetMessageCommand() const
+    {
+        if (nPushPos == -1)
+            return "";
+        return &vSend[nPushPos] + offsetof(CMessageHeader, pchCommand);
+    }
+
+
+
+
+    void PushMessage(const char* pszCommand)
+    {
+        try
+        {
+            BeginMessage(pszCommand);
+            EndMessage();
+        }
+        catch (...)
+        {
+            AbortMessage();
+            throw;
+        }
+    }
+
+    template<typename T1>
+    void PushMessage(const char* pszCommand, const T1& a1)
+    {
+        try
+        {
+            BeginMessage(pszCommand);
+            vSend << a1;
+            EndMessage();
+        }
+        catch (...)
+        {
+            AbortMessage();
+            throw;
+        }
+    }
+
+    template<typename T1, typename T2>
+    void PushMessage(const char* pszCommand, const T1& a1, const T2& a2)
+    {
+        try
+        {
+            BeginMessage(pszCommand);
+            vSend << a1 << a2;
+            EndMessage();
+        }
+        catch (...)
+        {
+            AbortMessage();
+            throw;
+        }
+    }
+
+    template<typename T1, typename T2, typename T3>
+    void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3)
+    {
+        try
+        {
+            BeginMessage(pszCommand);
+            vSend << a1 << a2 << a3;
+            EndMessage();
+        }
+        catch (...)
+        {
+            AbortMessage();
+            throw;
+        }
+    }
+
+    template<typename T1, typename T2, typename T3, typename T4>
+    void PushMessage(const char* pszCommand, const T1& a1, const T2& a2, const T3& a3, const T4& a4)
+    {
+        try
+        {
+            BeginMessage(pszCommand);
+            vSend << a1 << a2 << a3 << a4;
+            EndMessage();
+        }
+        catch (...)
+        {
+            AbortMessage();
+            throw;
+        }
+    }
+
+
+    void PushRequest(const char* pszCommand,
+                     void (*fn)(void*, CDataStream&), void* param1)
+    {
+        uint256 hashReply;
+        RAND_bytes((unsigned char*)&hashReply, sizeof(hashReply));
+
+        CRITICAL_BLOCK(cs_mapRequests)
+            mapRequests[hashReply] = CRequestTracker(fn, param1);
+
+        PushMessage(pszCommand, hashReply);
+    }
+
+    template<typename T1>
+    void PushRequest(const char* pszCommand, const T1& a1,
+                     void (*fn)(void*, CDataStream&), void* param1)
+    {
+        uint256 hashReply;
+        RAND_bytes((unsigned char*)&hashReply, sizeof(hashReply));
+
+        CRITICAL_BLOCK(cs_mapRequests)
+            mapRequests[hashReply] = CRequestTracker(fn, param1);
+
+        PushMessage(pszCommand, hashReply, a1);
+    }
+
+    template<typename T1, typename T2>
+    void PushRequest(const char* pszCommand, const T1& a1, const T2& a2,
+                     void (*fn)(void*, CDataStream&), void* param1)
+    {
+        uint256 hashReply;
+        RAND_bytes((unsigned char*)&hashReply, sizeof(hashReply));
+
+        CRITICAL_BLOCK(cs_mapRequests)
+            mapRequests[hashReply] = CRequestTracker(fn, param1);
+
+        PushMessage(pszCommand, hashReply, a1, a2);
+    }
+
+
+
+    bool IsSubscribed(unsigned int nChannel);
+    void Subscribe(unsigned int nChannel, unsigned int nHops=0);
+    void CancelSubscribe(unsigned int nChannel);
+    void Disconnect();
+};
+
+
+
+
+
+
+
+
+
+
+inline void RelayInventory(const CInv& inv)
+{
+    // Put on lists to offer to the other nodes
+    CRITICAL_BLOCK(cs_vNodes)
+        foreach(CNode* pnode, vNodes)
+            pnode->PushInventory(inv);
+}
+
+template<typename T>
+void RelayMessage(const CInv& inv, const T& a)
+{
+    CDataStream ss(SER_NETWORK);
+    ss.reserve(10000);
+    ss << a;
+    RelayMessage(inv, ss);
+}
+
+template<>
+inline void RelayMessage<>(const CInv& inv, const CDataStream& ss)
+{
+    CRITICAL_BLOCK(cs_mapRelay)
+    {
+        // Expire old relay messages
+        while (!vRelayExpiration.empty() && vRelayExpiration.front().first < GetTime())
+        {
+            mapRelay.erase(vRelayExpiration.front().second);
+            vRelayExpiration.pop_front();
+        }
+
+        // Save original serialized message so newer versions are preserved
+        mapRelay[inv] = ss;
+        vRelayExpiration.push_back(make_pair(GetTime() + 15 * 60, inv));
+    }
+
+    RelayInventory(inv);
+}
+
+
+
+
+
+
+
+
+//
+// Templates for the publish and subscription system.
+// The object being published as T& obj needs to have:
+//   a set<unsigned int> setSources member
+//   specializations of AdvertInsert and AdvertErase
+// Currently implemented for CTable and CProduct.
+//
+
+template<typename T>
+void AdvertStartPublish(CNode* pfrom, unsigned int nChannel, unsigned int nHops, T& obj)
+{
+    // Add to sources
+    obj.setSources.insert(pfrom->addr.ip);
+
+    if (!AdvertInsert(obj))
+        return;
+
+    // Relay
+    CRITICAL_BLOCK(cs_vNodes)
+        foreach(CNode* pnode, vNodes)
+            if (pnode != pfrom && (nHops < PUBLISH_HOPS || pnode->IsSubscribed(nChannel)))
+                pnode->PushMessage("publish", nChannel, nHops, obj);
+}
+
+template<typename T>
+void AdvertStopPublish(CNode* pfrom, unsigned int nChannel, unsigned int nHops, T& obj)
+{
+    uint256 hash = obj.GetHash();
+
+    CRITICAL_BLOCK(cs_vNodes)
+        foreach(CNode* pnode, vNodes)
+            if (pnode != pfrom && (nHops < PUBLISH_HOPS || pnode->IsSubscribed(nChannel)))
+                pnode->PushMessage("pub-cancel", nChannel, nHops, hash);
+
+    AdvertErase(obj);
+}
+
+template<typename T>
+void AdvertRemoveSource(CNode* pfrom, unsigned int nChannel, unsigned int nHops, T& obj)
+{
+    // Remove a source
+    obj.setSources.erase(pfrom->addr.ip);
+
+    // If no longer supported by any sources, cancel it
+    if (obj.setSources.empty())
+        AdvertStopPublish(pfrom, nChannel, nHops, obj);
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c5576910b1b6b95c23ed7c53adec399a944e610a
GIT binary patch
literal 1334
zc${UFJ!~UI7>3^qL^3+SK0qNkK#Fq$&f(WuUk;)RVDle1;1&Urn-nW;v!#m^+oZ5k
zrL-cA<l+ikx{2h{rK^m#+*ENBDMgx)%8@9BXVwuC$F5(Gzjwa*zGr7OZav;uRB>%Q
zFWqOX+~}4{^NCyf-{qV`Gr5`9rDm7snw@)Px|~i?u5&b-`Z!a`=S(NM%rj*<bNNKG
zd`vu6mJw%TolnM^PDZNZO~*rxM<eB<0ez%w)K@-4gC06ih9+M9uJV4W%xhfdcS0{|
z*z0Q4OO^K$b@7G=De7o)5UG__G-m8~Q`FI*n`n^w--%k}O}cF*!<x3YXUs*!A@k&;
zH0rCJChB#FJE6Lrwt7j3S~`eArG9L;m2QXXge@geRlTU9FsZ21+Emi2E2@W#HAS0V
zRkVV)qBe?ZRYvk_B?Z<gZ~=;uK^8g1>^~0jw?P)+2lxSgfFIxo_yIl(VkTpL#4&!1
zZ}1GB!83Tqd*oVti*NBP9t<)2AHxyD5W`^U<@jcq41MM|v3wj9L?-aD6Xg*eOopb0
z1_mZWZ^NXah%vqv9=%P`8=wA${)YZcA@aQsgMq;~Pk_%p*kT7ffv+uD7%crPY!(hn
zKb9hDum=_n>p6HZ+92{_v9MSmEDdRm@L6a{vKST?K8QNJ6AO#=`%$n2{tfsirXS}6
z1_y(K!NK5QU<slo3=RedgN1=Ih<q3v3=Red1Emo@3=RedgR}nJQG;TRg^r{+_V0-I
z=+9(P+vmipYM`B+9qsP!YJY!UhlhtcK0emb(UDG0PIP*Ds<X2*U0ht~>gr0@*Vp>%
zZ>K+>KGojdo<HTq#~;9A@VA?v{qi%{xAW`w$Mdn=;J>8uX6@IXs&}Oq8s*0A@Q>eq
z`TE1P@1Hyg-~NiYE-k$L&P&vN^u`Z2@zO&dKX|X@<J+sNtLr}AdU4}F`CG4l{%`(0
z{<|K0^36^D+WMX4)wj0Z{qbhLvVO<sf3)r6h386Z5AQ9P7K6{eD>q)Nm+mevef-Me
m($eOqKbISgqTUDZFGxY7!4ox`%}4iNUHRh6X7kyH<@yI}bKKkj
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d3a478d1ad1d4800008fda5be5d583f3d0423480
GIT binary patch
literal 126
oc${<ctz&=yJ0R8oVgV>-1VRvSV89Ok|Njr6|B;UEen89s06h^O;s5{u
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2b33b228aaec9ef51fb3dd46b3eab98f3d61d7df
GIT binary patch
literal 1478
zc$|%tJ#5@$9LAp(Xs@843;lplzOIF~M+@O_Na2+7VL%i^KQISvFGzv97=iirkikm^
zE0YI?QzT0_bikvRNFF`9OI~?&rg({TLzZi%i^TBqyuPET>QY~x{NMNI|HtF^;^>#|
zJcjC;e-t>wcx0k|s8#&0eR$xKQc@$xk<t(&N)87YQF2&fG$=6~s930E49b!!P!<IS
zMUK3R83uWVVV)q%GPKGJWv13ChFOf9>oiS~rwPh5MnRb>H;GkC#t3=RN160c#C;@j
zgfdp^9#ZbhI6%}-kw&~n4T>i6C_vu#kwp&5zDsXF!I<|v#66$UMZ&e87)S!OcTn^!
zMhkJ^AqyNvm183F9Yns1KGmZPLqewl&qeH6NIerh*Mdm}P8WU0L||DkT(ve}aUc0L
z_?8Ke>XJE(L6>{VvUEm+dmTMzhOrHwGQ1k|8nAQ=o=Ilt@XZ$0gk!Yf={j7>H=1zU
zysyu|GU{;J4LGe9x-Hf=8t67_FdNiN9d;-v30r{DsE{HPWIQ8Vl1VZtAb4n!zrzp+
zwGiVE_fUI{(PmV8iO?pq$uu&Xc^nXG<RKYvhHMgssuvk&ht+Iy&JQ_1<b2+un6EfJ
zg!B+f<$xR-qg_o`&e#@$9t7tJdK2^^IFF?id)VakA(Rh37{^e|rx!slf+hq9ax_KG
zLct_KAn1iZ6#GbWdJ*b8DlZzJ)>co<dHl1Y2T2c-9wa?TdSD5~p7bE;LDGYu2ezS@
zPY;qFBt1xaU~7t;9wa?TdXPfBckIDtl7*5<wynM+n^H4WZ<S-Cfe1@WOITiB#_H-S
z*4Earv9W>m^>u7+ZenX|3)|b<*xA{^?(Q!3_V#f1ABn$j-^R+y3aXbwRxkTFsE-`K
z`}K#sewbW8xs%23_4?%lY&L!3eCLnO`4iK?fy-o%pY3$6+kf6#_~o~5r}N$$*A)Bk
ztuu|8>66;QCyyULYrf=EY>L%~n%Y5zsc&BUam@BVQak<WnB92c>oI%o^_P#G9J4D=
zeD+`M{zDV?)zL5Rv8nlmQ;L22_RUG{?A!<Q+B36rv(GQR`SbsCC$;yn`Gv!ZegD37
zulC)x)|_MQcOU;s_Rcu()TOGnV$VKpDE8FFa~Jquck0VmUsR{{$*sl3s~3*cU-^7-
M@#aSld&cVe7wdHaOaK4?
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..56ce6125dbb83abfac437bbbcdb611f45ee57cff
GIT binary patch
literal 142
uc${<c?PGudJ0R8oVi7221VRu90Ae9-2xekHfdBvhBe4&VjqUd%%me@q%`aB~
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..88cc240e2d4f77fa66730593a890a17aab86cbdc
GIT binary patch
literal 22486
zc%0>X1z252xAwHLTAH*?`_;ZCO)Y5}YZ`ZV4?#nKgkZtl-5r9vySpCbaBz2b2#^3F
z2@dODdlM*;+P&Ys|NlJy@GSN@d(WO(vu4S=X66v`7FkYKuO@hXhX^kt<Q^ep-MYE&
zf$tDfg7>y<d-454LKKkZ>aQchO9}br-}Cj?kwCm}@a=qk{Qd(WTYe>E1Gc%EYM0El
zLzN?Mk>AUr&s){p$O-!-a@Hr8ob${gyY&6Zb`5uOHnfTemyQwH+8H8MHAO^<$B;$|
zcWMv$NhgqO(+eO1IfF#HW`^*y9+NX+wPc@n5jp8!LPWEAiB`=7QK}v%C%m%A`&=sI
zCnZNBTrf;zswc7SYO>drMRqwck+R8!;1VL2-9wafx`=iE6tNkeCA)27h(KaBF>9YC
z=L5^hcFQEP#XNy*u}mPl9W%&9|6C%U(M(ix+lg3q8?opcBMOaA$;vwh<R=9?V%;@L
z3~Qbc9abCh=^P`Db&rW-!w@;;noe$o6%e=P5#rJElnAHP5shvjJ8WXfJ8W{~h)o1>
z9t5IRI6(CCJ4o2TEaC7-CgQQh#J_ujxHJxvb8ZZB&L@X(L{<~!#wl_!qME$Ju1K!>
zW)SBQAWB7#iD6+UF)!^RJ{_Zk-7}eJvswsmN-MdQ-b?sX9}=0eF~XkIPL^{hk@KGE
z#OxuE`<Y!tFTb6LM&uFI^lB2?KSPX)I*CY5C*e))CfCF2iCihRm(WU<-BcvIjf04G
z+bqhvlj!8O63LiCB9mA~9B`~by;DRisfvgt*ODuK1w^`RlAQ1<BJbRkCnEWSM7DI8
z2!t09xugoBoK{0r7_~$>tBJ@l8i*nTWx{MC_v6dSS^rX;w=uF_-H)7b&mywr&&aKW
zTEY=rNF<UQiB8b~F)SY<N;%zxFQ%59@-86zT=U3X)-%GH&`FkasS~b*CZbUJoZLq~
z#nW4f3ag8#Fx!b%ejicIc}Ub)-NdwEjA&Pnl5galaUSH!Ce#<P%r@fjXqMQvP7<T4
zA!1%VL>zIBg9j!_+T<(=eEf{;F!UuWaNe$arx4Y`hs3gTnmC{=-TLsomJuQtS4=(=
zGbitJD3WiatjQ0`&g2Uz8}hlZ5n02lP5^-X|6Nkk(is^G-(q6p;u8{+l2hn!0f9lm
zA)#U65s^{R)OTkWS2uSLPcLsDUq63B%*-t;t*mWqAK2MDI64ucp{b><qpPQHU}$7)
zVtPVKT1NJ)B8NP;q9TWis+zjMox6f(@0}G=6cH7>FD@Z@gY72!*|Qv6irhT6cyIIZ
zpFDN?jN-Yo=M^trx_ss8wd=cf@7as59z2BqjvhOHf^69M^QK=mZ`rzS`>#8G+eye*
zU;q1?wd=lJ|K0aL{P+{a->TIgef-IqPe1$D=U;qD4`BI<ciw&P{SQ`txG=!C-d?hF
z+1$tJwE)8_05X;!y#=5}5up^~b)ugwnXB8j3Sj&&0Oe=bAsr#V`&q4}i$uHF=l(C1
zx88b-EcswHS^o78<lT+C$os#YBp)2OLf${YL*6-imn^?1N|s#~CrhtLB1w@YSEYZa
zYcez~rAd}7y^eH4jx1$UKvE=2Zz|0ZyE0A7kd`B@U{@mVpdWh|={>Zw_ZQIzNGmy&
z$Vx6{vXWbse8{6lR`P0+4{vLe)%?0-^<4w9O3;|B5;7yJgw4rn5p(j9s3rOMz71I;
z`G9;XWluhnb|C+faU`G1I*~8soXFScBfe2^A?p-f$@j``WP_?3`9;m0Y|-!_+ciDO
z4s9>8Q^%X^)bqu7=10f0ok%<M1IRZ0K(a+Yh-}smCYudI$rj^qvc)8VY&DIfX`5LT
z*<l_<cAH0%{g#pBAkty0NOH(JnjFL!vEMeH?0JwxcH5<rT@LAFw*v#O8DytpCfVhf
zMRsF6+wGi9_P8+759W~lZY-J(xaE=q?z!ZkM;=l>IqX?Lj(8Q2W8V4Xq<0=U?ad<R
zyqM%X#><P|+2k_PRi7+!%_ozv`D74w-%P@R#O0SsxRH4Lv&gN0Y{DD(f`W3$tzZ^X
zF5wNyBmANHL?A4m_VEG{MT9rJm~e%c5{~e4ax<ce+>ERtY*BUOW^_Garzoa@u*WtM
zj<{y@+pUB<sf}=_bdX!A7<<yX2w!>^;m50BdMCNZ=pe#rtwbcXncPopA`&T0L@KqB
z$fPw8x%5V&nAwc6q?M>L+lWSPC(+F7B3cDKM7QW6(JSsJ24#<kVZ|UZs2C!;6~jae
zNuzw2sFV#8#gZW+Q#?c@3x|j};svpSCrBeiwD1`bEqYGG5Qj)0E|J3cDP2BJWGcpq
zY}F)@tDYuuHPb|)W{N1*P7@_0m4<1e)-*#jT4sn=>kP)q8KT!dO^n*7h-v#IF>f0u
z)~%z&rsX-YYk5W-Tb~h^_UFX4<2iBb8Y3<}81ElW5to4(;_?V-aF)0ZA>q{rDG2X}
zAcZ1@%@fv(9G)RjBQp!JW#!^>>h#H7drzG@wen5n^3|K7a`Li*Z0B}uIr`dDp1Up?
zUEPC&LqomkmN!mpI{fleft0D|_;7gm`Sa(~GXvI_cKovF@h#b$8GJnW@L}J;=nPeI
zICgG0zVKMSvAwIiCo?52BRiXw^N6Z2cxUH^7mvB`7u7X3#>U5{r=?~xSuAE&&d^|Q
zKKpzZ_e!g4ioJc}QyE$5sVRv;ety1wHO+OQ7dP#v9`pNF*A%(9cqXJ}GMU-wNx?p5
z`Wgo1RaF`%=pOFZ);4;Znwq<KCTBi;n3I{{Z7M4)Y*1bvb#2Rml`AEJn_5auo$MW*
z+&yePb8_6RJX2CUP49)5m#gl=2JY3jwfovkOiYZAPmCvfI%kd3A3Y5#%0tg>II>c)
zqodh}dM=$jF)?~O9iJwfnkIQ_*3?w7Z8^;2-Pu*>Ym3h<9r2&k=)^>pd2y_du}^Vx
zz3BEMeBoW)g(3FTBM*Gv3O~5V7R846`<JxVtL@w>89VYcKh70z_m57DI#Ly_<72`@
zgF;K2>veYi!WZ}SX>P0=-ewF;Fr}#HRv}T5Q8Cda&GlM45A()9ecBb{_M-iMDg5AU
z5fu?08Cl)Zps@1@r|ZZ_Z@d%r9RH1SKAxD!;d3#Pwe)XkZ4lgcc%|%<CqqGY_}rd}
z@85MpDKIQ-n2A0eZB^Gctz0S292rih+Q)$p$jZsP_K#B^6N@|Ag3oM0)$tw~?m>~u
zNJxm^6;m{}wDU|(_H^+b?ram=d4!su-0sdORTX6=WhHqf9YgQboQJIZLgYH?;uc!>
zbXr>)Le<sP)YVm#HH<=HGjnoUo<4orDZFz|jqmu^w>3o?YH6vfs;cS)#il1E_B?$$
zVtjgDhwlc|HMG<Q8EB}fsi+zIrDo=Kc6Iq)*tej+cYQ1C>RW0f{S6EZ{G#gG8>?%K
zF798X;CED`DjTrWRhE}mR@PKUik*Gg$awD=L{-){HP=;QiPXJz`ZWW)eOJyfAiOj-
z)KKUK=Nk=l<!vcGK1n|Am+t*lOos6la{z-7&1pgok0VeSMrtEu1=5m?IeJTLj)>Nu
zw59cXy|-Sxw}fhkY7g68OSL~s0~Q1-!w7I-4yRy>NchMiobujc(C~NB1(vs$khi|s
zMBd(WiM)MIh`fDSlDv&L;_U@2L17448b2&U?64fM{Bq1yD2zbSat;-;j8ly)!@OV_
zw+30pqqRWGkyh|%lJ|Ht$V$WsAMvP?Pj0D^PZ6j8i%*k$A)rORyrV<D64WDK2pN*k
zgpJ83!lvY7#0(!JX87d375P-$ntUdK_+HYMd?odOd?jN?zLa$&Um<SzM&606Rd6Qj
zm0ZYr#0}r7c#w5!-sD>iU$S1)pM0m~Prla<AV2B`k)QN}$ws{(vPmzHY|;%NzaVYa
z^(R|({K&65K4h1+C)uOrPWB@m&~_&Wbv?*oJuh-t-<upU@FhnL{m3yRe{$R;fSfcB
zCa0{z$ms{s<cvc+IqjH0PB|u$lMV^w_=7ld#43s$vIr*!%)-b%(-5-PBm{H2V6w|7
znEYlOLbe-+lC8#JWUEOyQUuvz8cnvC#geTS@kj||n^hv&Zk<eiwM`{E?9#~&#3R2U
z7NH68$j*68LKAZVn;dXwkwZv_J#xtr&pdJzbGPF@h2*4fAvxufPtN$}lXFNHeRIiW
z-yCw)FNfUlV-ilkY{KQwBwT^HgdOuh_TXZ|7E(rThE)*u@G8QA_<{>_W1gsL!W&&p
zgyO1*XaeS<iB&`-p_<%Hs3Y77Erct+6|qJ;VvP>MliWpar&1WBn+T-$kUI>dj9zjl
ztDoG>9w2ve9uvWwK_ZkpNJR1miFob+kzze0QrTTZGNYYHGTLa8#?Nw@?L;A~jVNZf
z6J=%x=9+CpEvJLVB3g(=bP<af6!#M2(!Mz=8z9DrMGPy4iB9DRQLTJJlqyDuY}r#H
zS@H}q$0!j++#y;#j@V;@NS03$sfsBg^8$0o)y@!wx>=%FKTDJvW{67T3{gW;Z=NBV
zt#jBzuXUOjw<7LnnINWZQ^c%eidc3{6PxZCV$*}UDw5s9Sz_NmOB^ugbwqsOgyc+N
z4#XAiebdCNcar#Yj}u?SCVqJJM+!iU68vzQUMqMbQTPNgN$6w5CWCXhB<9%+i5s0I
z3FEUQablJv;g!NFOW#m7Y~1w2r)xgn@bktuJ$<G8wqf&@ZQHhO-Ms$mFV?L7<mW%F
zym#l0gU3XbbPWs*xkZoe-}dbnAFuxW4{KlAe^AIEBD1NbrKPpCwXHth{NBFJU;g16
z*N^f#*0(k{x3spkwe|G&_Kb}`jJ>sY{b#FJZ+N}-<&%8zvolYqhTD3ujE;@d0W$X9
z_OCu({r#)eub$+tpP8BJ#p*phy*=Yp<;kg;+1crS<GpKN<LUYd{kn$M_O{m6=8WWo
zxP+wS^o;(=nYrS4;MEtdAJ?y{sjO{muFr~yh>lB4Nl#B_Fc|$4b1%dnT>BDBSB_~G
z7Z+Dl)`mJqgvZ3i#3ZI?FfuYS7>tbZiSFK>Hs}3oSFiqIzWRk@(oBS4*~|xa&Jkg8
zNeR&ru}Miu39->p5ssPlwY8a<dON;cy?Va>Ns(ZxeyEYf183wWIVB+`COX2=?!g0V
zD@#kS;^M*r=KalU=7(_Os4G=H#K6eH&M6`$F*zkAIVm>6+0N2ZUsp>*%`LyMu+aP9
z+W8Jn(%di&jm$0V93v8vY0i@qV<IA)t#s5BWMtg(^78VvwtqI)!Ode{SiRVai<^tf
z*v!J-F(xIWzCMGI6k%s>z#}RuDkkNZo0sQz_(caNrAtc6D?_;jF6`TX;rzMlY#b)h
zjQaW%N5k8<IXOA*?%jP<D=(LotG0CwC8CSRUCPR<YAkvC2l}xL4D>S`I2{>j=A4fG
zLr<PRdGa{TSky0%#d6>M<?1!a&hg@^s@iO$y93YX%ab%t2Q$<Dh40D7tnzYm^G>Xz
z7`mraT~kx*Yd%-sf#Wgtf*Cv4BkJoTM`M%t$0<Tug#`uqT3e_|K52#3Yh5hn>YM(S
zNL>>5q)?Z~oLn}R++2>*x;e##g|53k!}`a)YHAxZT`cd=_09IhQ<t=TgVe>5JB%6P
zVX3Qc8B$qV?0?{k)jwQ5o>SY>lI8h;|3&+B{di7#92_=GW{8)om8F$WWoc>tp|4hd
z&vqiKrM*4V$N4s0-()W}%qJ!eG&}sx%n*NfH&<(GPi(*F=-Sn5t_#<8barNjI`h)?
zpFE-d#m{loFK8F+>*0pQ)uXbssOb3G)t_7!ZtU#tu4hKvT9D_U$#44-==$eu{Czz<
zygfZVy{Y!G{^!?(Yq5Uge0>LY9O#q8osP6L&sqBW`uYV1`g{9Vl@=EwKi^*x%IfOw
zZVq`--*j6VJy27cxjP1)Uf8&ok7saIX%UMW?@}QI{@v}N_PmSbZ^rh7{w84U;$o?%
zZ|jy*U0xD^^89}3J=@Oip6*aPzB&19N~PJ_mrf7h{B167L4JF6+luO{GHSk-E*0SJ
z=<eysv=f+X{~E0i#wU4bePD2&<FoHix$Rn0U0tEI_2W;LE@cyL#QKePw||%CbH*vD
zTSonJ-|<EYZz$HU68e_*5%-+1etQJhqbD!QK+Gv26<uzQ_<s83Cy!!`ny|hvvQOEI
z01xJX?e*qdyn=V{ojiT|%)vv)rBpNxjg5`X92_0(jkyf7J8G*d)VF^88SQ+8quX1X
z8@$z}BqhY@A|a)us%c;mk(iti6CM#BmfhXiULAa7?dl(Cdl%$ssH?3kv{X@6R#Z?>
zR+N>NR#n%~e-M#U-`CtwTUpuN-Puv2vF+2(Uby`eww0A-#rZlaDk_SKDk{n{GK#9|
zmd+7z>1g=1SRLyJp+A}TS9gyGm6w&5=j*6xV5Xt0AS<JwqH5(C78i?uSy;QXvsQHT
z$G<z!llNJLmDQyM9y%Ios>+J;@(PM7I<}snaS`?rt(~169ZecLK3n9VFP@MLDlEg2
zYo(>7sw^)rFC(k2YaJ05kz7}c;i*Y~_g9}T_UBiQNe1Q@mXwv21i5OdVtrW|Rds!r
ztfsok?Bc3w{R3-1dnLS_5c6gg6c(0Mmlg)N+iGiDxq1XMiz_RNb66~;{cB$fd6!Ne
zw_@ey6;WK36y~z9<mTpM3%PD0yT1PM)#{X#j!Jp3@`{Q|$|}l=^62`xxdnl$hqiwG
zhT2%zP9BwZ#Xbs4%ZiH%^3kQ`dZ-`WwSLo^tJ7~BIj(B$gS}K#l?J(Kiyhjr<(EIK
zO}}yH<k6!?kBdo33LQPPfA7UVtvpvQ-ekXtg`Mq<mH$CjLl;b#me2_kXc0~7g2@z}
zL1A*Wg1Ta&_14^Ds`A|G4py9{u7~OB^b6zEbrt>E@7ERd>%U*AwdBRux8|CC?Mhz1
zl7D!8>HRnK^AaD6t}pSsXguSK$2mXlc{#k03oWON-{rQ7x{lM;sfusS$vI;cEGjSW
zTdt$IKJqtaQOPg+qg|Tr_ctgzGk#Ka9r{wrdipC7lZRj3(TUt5X><*n{=*EH!#Q4@
zBOqf)weTTWc20xCLjbqFS+H#x0l~Op_)N?kKIBwNKds{Q#jEe0wuyEU%WMOWM_9jg
z5{#;bz`S}092=iP@W3RbP0m8#<7cqL&==mhDc7)D+3H^l?^;L7a3wT>LgjO~pVbNC
z>8+r`>H-yJJ80$ifoje}P-At2X~P(3SC7Is^3L%7O@##NU6<U7f1UQsc_v%_3~nXV
z0!MHmNF+CcPSF4umJfkaPB-wy)WRw60@&x82X|S|fHR>JmUF4kek-VZ;@pE+C6W9=
zkS!esf$##5OR50nv>H%h)PizW6UZ?dK#@@g8q6lRA72h<{Yyc(U<}r)`@sk73chDt
zQ`5BDW<eDB*2!&!uz^{cjEXuzCb0~(SuGIMJGF4{ieCXpmrcS6pCWkora~KAaBjO9
z%K3g~7wF};)Ad9n^60B-diBD4A~~JFo7xT6!|Fk<bQIVVT46bx;v{EyewXtIfKt(8
zFf8nRseg9QWcoA318+(z+)D2S{?vycQ#J<dN$s$LLuvG?4<p}s5J0VP0QB=a==vNU
zbMJ}A7SmUk#$h<;#(;A^IlvKF4a$vEa5179-sMm#J82tjX5BRkhBZ$>ht>8{|EFBj
z;Z|6|OZS9RP?p^QJ8WW6mlTba!*YHRNUEAKYoCSlf#tB>G6}YrC%_iV1laAE0T=yq
zK|Z4yRCC)wEV~UX`o=&3b?U=A2IB{mEY{OzXBp`#TrdnW)st{Gv>NuhvS61J6Db=m
z1ebtZb`L1$bb)pM6xa;U!fx9bSk0}fF|U83!Hf?MSjXiH<P3sz%?$9f9>bZiTG;1Z
z1SkDVaBh1+t7Za}s>k7kR~CG9ThmihQ}gY``mY$Avg+)ExZtxPm9xU7V<1~Q15#B}
zAW}SrGz#3QJ+M(Pba11zxx}B@;62aOqu7qmC6DZu^S-&0m;Le{pR!A295o3PXEO?3
z^=f@;&#rCJp52@F>t5Ttduwj*Zg|zJ`*!Q-Hnmp&5qE#DX!<eMoYHX>STAPkvsT2o
z;-lMI!^=5Trr+UEn)rfWtNYt~IvLxfO^w-2J&vHOeEY9k{Odx=RM<1_>`pC@kk4fu
z#@DKP!dA0LIN+EJM_f|jfL$W|Vh{{pDY(EYVRKl<r4CE3%fZK7N-YPJEG0A<jCcO4
zeQQT$pFC<7Qo2bm0N8`khvfBuaoZ$V^Z-~RJwS5mMS6(7v3(R&3)<k4PX>I2er&}p
zZCG+m7FKd7G+s4yKK4)g^<cEVbJr``X@^nJtXz5-gbs~?7xrV<1z?YTQvTbe55Qvp
z!21z^A5s9?ddM(9_)`Ga_9t+|KMU4K*uavTO0e{*^z;EGYt_Hgw|OG#<C9ilti3kz
zU{LcIf}a5dQf*?t&S>9G-7{d*G6pt{&%nO<Dfaao0{SK)=GiPHi~}T30;J+KX<`<P
zD?8vvO;1?LsRm1~O3$KxSpQky#*xgG$1TGP_d2A4YRwqvHqL+v`e5r$Y^z}ueOVvK
zGTJ~XvmG>9Jz!YW4@SiUU{*Q=))gb*(=iIkqtlQz3y_YKFokmJ8G@~b0l)JgsPl(%
zIA<LmvBN4Jq>4vCzG@VdtH(gSW*mKZI|!$?fMiAoC^9=iIlCPcGg~l*b%RkE`scDC
zFe)7Z1N7CpdHrBn{TMtS&VU{AZH@e^BY*4Fyl^g*>A5(hY<=|AzIojf?*42T20}Rl
zAY1kf<jO}tvS0w%LQ8-rq8x-0>p>R#SIO-K?V>(VW_ExA#$`E_heT>C+=;0NzQ|hO
z39kY6&??}HtOJG8aZs+9Mw-MJ+6o_w+t51sKD&IQb$tAa`Mw#gt*iH%hCaH2zF)fR
zDae*T1?l2JxQaS|BPbu+EeElr22jZA0IkA)Fen?ONw4@3`rjUqOl^ZZv30-^UIiBd
z%HW7+A?$O`g(Kc&bWD{fodU_?DLCYk11orSsCj_(_p~ME`xo_3Q`>GC2eK8<LB8@C
z`r}cIhb0(iQsErh_;s&rxP|dwD5e5r(+~p`^nzvW2w2uVLme9i^@2VSOKk#9eCLd3
zChW3~ho4PiV1r2l9P%v(!Mri#V;lsshT(HL7ur93z@gAW`6%=+Zy&RaY-fvW1jYIp
zP;Hn7G1f!4<iP-e;2gLekO};O*>D#>-wVqH;qW}*@<{`cm=dt48OHtxfe&NhP49HL
zk8xEgy#|!iYe6Kc5H2_;p>GNY_T)b7e-uQJ_F?>5#;rliV7sj8A<eMtJ(~<dK^|j}
zdNY7->nw0aRRM=z)<S%xD71furuomZi8!vPB9sdY@j?5-vsdd1Mi#+w?_v-wngG#4
z#0QC8@S(5;-T&ve)s60Wrzr1tP6w?v>>EkFb`)-gl>vuu=1cuwvX26#l*)zgLA{f(
z-^dR%vm0LOS0=d<F+~bo@JI*glp36~ayWu<TL!U_RQWWBmrTMJ3U2fqe8i>9xZ;=)
za1rNCw*$ZsNdfhaI}-KxmGNJ9jst<fm+zgh2!h~;Qw!e>3p?PFUp7dhj^4}ag3BQl
zaN4r~E(Mf>RN)g)s+k43idooV8VgI<lwcK?QuigtcqUIuJs6{ZwLrhBfHo|Ey1)~V
z^HN`@Eki&oGH=oNr-02Z;iWnPs2_J3O*qy;5MuTLdt5tQ3vUFrusRS&?4ec<AXhz$
zwvh!(*j3=28?xgU?BmJ=vzx#M{kH@9Z?%diAez<*e8G7ywe8+Kf@7VgKL>PA0Dn*x
zt(%MMu=}FUrZ$5hvlqBiy5MF!QcOE=MYn@U)?-k{@ylTUhum{%f4J<L^wgOLu|>j&
zfgKTRx;;l7sCy2QnGZoAwBV(-^>drS8+|?X*`ll)j+h0$*8dH!G~kY_2Y$p=Jd7R?
z$n1x^83V{uABg7-gK{m<{U3D8fh8QO6wV&H<QSL8pHdCZICgi8Ge(WiK_a~y_(Sqv
zYWtjR!~%Y%$f<r1&e(>(EPu3xs{w_;&*%i6v<~1&X@}dXUBH{x3sUIUlpC;rl)*0h
zG?c$GrGI6Y>|<=MgyezKV~iCz2bQgf>k<%G2e4l2|4uM-;X5@Ko7G*xuWNkao=s&R
z>@f<0>*%Y_`{ls_+XT4gp9eRh>OiSs0#wnyW$R|)NBt03azg>u+*0)t@=oF2_aGLW
zFu!uaIPQpXLolWRc>I_z_0J!W0hTED`R~q%-8bn30AFa{OMXF@)eKi%6M@q=1Lvs+
z#N*50T4*_FbzvMr`;x$X>N8m<i~}<0gSBo4mo$93%Pe$Czy1-pP%=PFp@6y7tMk9u
z#y#7f!70ZC*lC*tN1RfDFC-V-Tb{n;gXZgsCscrBeh+9Neo#aF!k*j!?+Y5kifb}s
zN`A2)QU3qDT}%uo`b%f*->Hw9gGsm<Sd6|u9gf(>!$Ip<*l!sF`z)eiw|OM|pdA34
z%wk}V69e-<CS1o{g3CV##9~W87X6QGY842_mBP*7T;PeT1WQUTXxl0%gDsZP^xS{O
ztLiZye^f)VkL)lBoz<-$0dtg*9?p|MMjz~@at((p*lC{$zu9NNPP@75_6KS3n?nZL
z5fhGKykQS10=W##VK7&+!Zr*rE~r&K0fmYoup6EPM@p~z0r*%Qu=>6=+MUb<r?LAF
zFJTXxsJNr<*`U@qOY5mD>gmnI4%mw^lcL=&*{}z%6#eFy1v?xvG4IVr-;OaVz8<79
z=3=v1)i4;<J_T*esqKfS!DRyd3Su~Y^cfpX!f3zqHNS@btN24RB6r<yhQULZQCDTF
zXF#n5^`LGBxG}dpj=AxEw_MnVw8xnRzd7Z=4wTJqqyru-;KV#!GP4I15erDCG=c<@
zRqr@BVZT;GfWB=O&fxsKD_{t#I2H3WgM*j934e)trCk0+KY02|bR$StPJtZSiag3f
zvT_`*#5BWUpAsB%F6=}eesxA3P!7ADGvS0M3%DX`Kq|AF#sYeX+w_{I!4T)$um}B8
zbQ!D`wS@OLl$y9Ld|q4QSX{*YQt$qv7d(AFq#8sq$CIp_21%3$#fL=Y1aP4|&PLS3
z0lzXjk38&G1ed~V;STyN)v5{5X~6lbo&u?oQIIJg$8i_JNB3>u11{w%b~E>X|5@Mj
zMJ6zfZHH0F)4iDI@?q|J5BZS7yi*o=kfU^?eip<~KEl|?y~5`pghb_{_wl=AImX$t
zX}HDcgU#k~@WDOP+3!RQ0yKT%Km6;Se=lZ<IUCN~Mlv@VgrVGv;WiUvTFC@RR7@dG
zngu0{Wzr}cv668RqjF*Fo8sXX;~^Y&&x6n9-QaU!ld3a%E*Jkvzl#f%`>BOz-@Nc3
zs&JD|;Ous*Bshk=Q2N1@(hY*S18^_*A>2fNecZPgem0JVFXf%559s^Go;LD0|DVc1
zsbZ5@vh|KfqAG`TLfi%0=;r;#A)|YYL#B^dhK-!Ij;y)*AS#&0A?m(+X64_S<NsF*
zw9TE_nVmbcv-XuUI}7J^{z=jL^Rqje^x2(^6>m7Vvu^JFAKuvPf20JnSnu*!d7s=a
zW2XIssA1Gb3FGQdc-042+)$WYenWQZ19rt{>+Wi|{vvL~*d}FSdqv-c$Jjsl%l|o!
z{<=^(%2hM}lgD)3{8ru3A9?qV5v&w8ht*<Mv~Qtk75cXigv@9kyOdj#_VY__$kRA~
z*;Se8EfU5#m-StQT$#+jJj?Z;Dn6MtU+_7{X#XJZ(7r~>Zg#Dz7yPIji1<4a4j^tg
z?ZbqNfq8Hl>4IMl9CJy7U(KW7C&V@1D7)jhtYO7%y}7Yq-b#&SC8y%!BPtIxT_gYJ
z#^F~~w?;NF&FUu=x3TqV-muj;6wdo(gD_%yO^orT7+1^?&rs_?R!FuzFV<x!>P39q
zj5%yx8*m^t+m12!-%75Cc}!plwFdEG93OHjcC#6I-uzGVZk1GY`><)yqo1_>5PwF4
zR9ZFIH;sZlVlNwtx{)ZJsr95@3U5;DR{*YvyWA0@cp!OEYf6a40uhsY4@_WOZ-j%0
zQU9&zO6wQ3rbLZ_T2I+{-@xxbF&DvARUh1TO$gko8!)@eJPcGa%OPoO0^$(A_##hE
z)Y{kl`qvA-UGcs<;#IH3>tM)t5aRe?#2sOn(?lTlib4t>ng&H?J^X4K3ZGExAY2+W
z2ByaG36FAxzysg4|5e`2Q(0e~vx+GDML!6RI3|Hj%OJ!~0>n=v52MH*%GSAyT06rl
z^6v6N-k$xl$oDMxBR&cqM$C-zj(9T1Zw%&Qabo}pIQ}GRT@5LIjFQDO%qcS9YXxUm
zO06+oU(lxxJ}bX}>^YrMioQ8*8P>E>KN!yX=73@2Bv`ZoJm{Xo;?(-4!wcS>x~9Rb
zb_8^a`amtG3skZ?L7mwN+N>_n&FcY^k^!*C=RRGd5c_l*(q;e{v*_xl=7@pvpzg&_
z&VXck8LU_HfMvY8^jg4+F|>==1^n&!X`7P&$wljk+Mjfhcg*`Vn`S@@Ne3~sVGG)5
zJAid3fN3-4UPS{S#b^g<MjOaywt-4^CurvOfPP^g7?(Vv$)xl#=1fn(vU~(=Dn`Hq
z?Ku9)6y(g#LgtG##bo3^4#yHbffy*S4!&3S#4+eB*!9QUN~NYrN$>v^?+gYkz5XC7
z{YRZZ%pq7HUpWQ}h+CCv#z3`p0`dDa7&J|ROl~g-r8L8R<Xr+WzI;{(C^OqZDT`VM
zZ3T_oPB1Kc1ZI`PU|KN@=9N#8o`YrOGcYe72D6eOc!2px$j}sR58h}WZq)iQ&Z{$C
z?<Us3TJ*I`d9>zj8rBJFyZ;sc0`3Xg8<6+ib}1lJ`V8bMD0&L=NQza@L9TcRc%rM|
zc1#uAOKJr1^fr*q?gC|252&H8sIfZf{U6!%MtVI}1Mg|%_2RRBP|fMX@%7?7b>Z_4
zkVtL?@x&(3EgJ&UrdiO(yg;{R2DA}pYa!-7<CzPeN!h~^4z&fpbY92l(jW0|7GJP^
zyMEB*&qfg-k~au4WzUf2);;BM-bFEwxe{0aH$#fyR%8VT#?^v&D)O3%vS)RJChCk%
zG4hFeuZZ(7zYZ&v)(WCY&A^X2)UEIu;0db+&d@4srwVQaRlpVhGPr}dRjFe71x<kx
z;&r*A=dj%(j*j2dy1<+*D7Bggv)+A`cM21;ImI%+*9ii)m<EtW-l;WPnesW=-$#A9
z=ufSK<YD|N20r9pIKCEhvL;%0)DSOg7d-;KlE<K1Jb<>`4;uL>Z=4%xoFn0cCg6>z
z2DacbxDrqb7clobg?ZOe&q6rtmJbJA^MNhClU~!6E}y}EXFwW1^QZU0IyGPPNjeL9
zv`O4Z?p6NnGs-V*qI^81H|5W0zA3$-_K2yy+RH)tD5qSw5tt9$$p0PGA+f{;dfi_I
z=SBO){;vt<*JjltNKe5C^_;q|ier~YpCpOn5J_nPzW4^X9##pbd<)^A8w++iGGV(t
zMLBRiu@~+YjDtww1idyYUNl9I@ndn@h4{9LQ>l0HIyqHtxhCZNpc@4Ij4qHvp5@Ta
z6sw<uGTJR$L^+&xXTT}vWH{rL43}Kf;D%QgaN%6=<5;NmYsus~P|j)vz2ZKwKwoLo
z@SI-9rp9AXJ_u_04?&XA0{pR6I0uDr9^XIgkOVu-qhXUVVk4tydR=>~Z6<JM4#U0t
zxwUN(q&rzp;9JdrIe+wG4z^31@XYfboL|3fvu+^DJ{1&dr;#Q>scr()U#xkbK>W4a
zBm_2VxWgtDXV|Rf3fuAXZ`xk4Th9mf8~Vc$(;zr)8wuQgnIM;52PTz|!KU#!O}Zuh
zAevYWS3J_-phYMgLON?71DBlR;q-%O*op72Q*eT><Xqr8?GQNZRf;*>IK4+8La&dH
zp?>ATha#2>cJLLyX7W7$_x(~$f6@y9_Jn3S2UW&gTOIv@cJmCdg_Xe}>lpBCdrq&(
z`E`xGLgO^~c8-BV-6N2UErtt@F(8>#38qzO3#EO)AA$0Aj0M@G3UF(F0wH~i*WBmU
zvjTc1!MwBwu6t#`&qh&jD`V(|{O8v9Ig)zk*0(v;Y5rGSlbJ9NPW+hS|B`)7{RYEu
zkVikS)(oIQulEBemOnvTD}-G}K`*T*{uxocSXVs6F~ovcLOJjv*1Q#vN$-LEo%an2
zIuK_E!Nt%z%-<)`4#v<9#y|{hVWVLrET?eyybej4UW+bj{${&D&@8oApou(dA?Y9)
zV2l;c?1XE9ML55KZ{%Mlz8EgsN1^N{UK<0or*gtN9Im=1fPeSIYwuF`q!Y{OwPg;}
zIn~StdJc?=x?nTP^0;RK`j9D*ESmy}vPqCEoklw@p!1_8*XQz|Zw0kYOyY8{Z!!ph
zD`=zI$g>WTK9WJ(4DiM`qOBGGq5K5`GvNnmD|!w5)n|IFX82Lg7EFsfUwcN4_X4H+
zZfU?CNv*>c!BJ<-dt6e{57fee2kDptm4IX+6*JM7R?N^o^?FPTd@Aj@;D<iHt(GVr
zkgl=8FckPP*62`clrQ#6wCl&v&o!a1FM~bC!EfaMUPumXQE>#djM~?pS(J9eR#ivT
z_3781QF1@&k_;lu4vg`GAcnEy7RKUBL3rOIAI|v}!<C>)5M}m*S{>?f^(^|sS-6`u
z2wy3A(rf$_|NpwJR)5z!*^S~~vUC6p5K9^(j;C@c^{S_EH@OXXBC23NV)Hlg&yRY&
zUcv&jnT@YK(`Gin4VSn#+Q(`1JseS`Acyfn7O}(qyaC`(>%q9$3Rh6?uZCcp3#);9
z42&y{0IE0!g&IH}Ct$6*?_7>R#Q`p*VG+OdsEtOUpxQ73rqmiW<{mbfcW7V?62<rV
zW9!l1MZS@LKEHI>r0`&2|70<boSw-b5mWfuJAtU<d(DF3c2X_9pCn#50QZ=Ez@5|$
zH)1+~EwUBZ!kd6Syb<^kyFjxZK&5tWe@VJ(8ooo@p2u{{ugOeux+ElRG6@A;^pDnv
z0qrn9a>RT?xBeMOF&}|YQVSeK|M@2V7w;!7zNe8@4;z&1K|QnXwRfno?lcaBTk$m@
zn%9T1sRwvcyWnO*7vcw`n08=~ZU@e&HsHm3wEoo0f-KGd4E&%M3d>$#iRD*iCb?Y`
z6MsSe4LY8KJ?2Qxm?OD8LmOxw1NppR5KHZV<F;{s%YRaPhPQD})=62wMinQ}&Usz0
zypaE2_5DzPDnT&&A@FAO09RT!aHsVGZ+b7>PVE7{<X)704+y06f;!5d-e0Wwo&R|(
zw30({gvUKGoZ?@v<q0?<|E|cp2j+%m?c<=3{{-%*cEX82;9o2<AI{o@Eu1%-m%k3H
z3BHrH0mVi8vWxxZb{!wM5mHL?&zISQu?qDxyASmU=bJeQ_p%;?Kw2LNW(|Nw6Ux7K
zZr?$wavIia2QKK(ziz2E3wozG{9=syU)2Xrs5`EhOL#n^))OW`J{Nrh+VC;!*gv%2
zZ|<AZ`-ZRT&>7nZ;D2RbcmCM{;~+TikqrW=?TEKJ;8yw^@uIA5<6H<Z&>yAtf-quu
zjTYp;Zf<{1tYj3{YWOYK@8^7Ksgiza@|)3q@8`6D(;((QI0iS=f2aOwkjd%;p|~bE
zViElZ{yz)8lePxE+?LmUYZwa-ngqONAM|@cOxTNa&KX_~x0BIFC)C4b^wVd2sP(P_
zV2`TBdu<rIMnD5&DZTGgi~b^K0KQi7TJWE1?`T`8hGm`EhWv9zmw+SMFSS=j?H9T|
zo&|ZFQ-R1@IA|L2M*ewy)8TU=L(BzVk5Qsgh48(i6WCPszxK?t^(pMo_Jji#5pV`^
z?J<m9znO-?Ui8x<aTM0gg6olWpwc`Enixx|{Y`nagX<Vi={-iax%jnN(wLJ~)$#Ej
z(~zm77*D9ZPUlB+{8RglTBSp98}p?7#&7ojcY?CufPoKv=HOKwx#5`(oAra>lzsdg
z@q=UCW4P!L13UG+;Sl;$p@@9iH<=W7!9EL&53voP-8BmuofwO749aK+N4<05Ls2Vw
zU4mLW)eMgPoWgHxj&b?haQx=&Pv`bZU+{0;J^{Be&p7l4@_&>6q{y!JF>KWKgWV63
zVV_MrT=ht${mvh~zqk!!<o}>eEJzjhgU*Y+RcZ{XEz_{kI2=~+>Cfvva~?kn`=lss
zM|~7Q9N;?iJO9oY%Oum=;jCjSEyKnAy@~v~$3Z!x4mRodAqEbIeJ+^ucroDwwWezq
z2demt!r5;cGj)&ZLxE9;d0rkEbxniLL*yIzS3_KIC$|fA|99-LRnkakp8tq~#((cc
z9XjNc08Wo*Xd7^*_{Vr`+BgO`{EOh6YX%&&jD}sPOFImM0Wm9V(+h+xx&bt8*7b+)
z)VyGwh7aaa;qa?%3eEp<uWY!C{IL1u!cCuSxapM+0*IUL#}v~zNGhou?xC%)AqG9|
zngW*tazVM`5m=)P4X}T;p1J+yL)gwLT6g5({hRWG@~)9Dt&QGtix1t3b0Cx74)%R>
zX9%fvS<^NE!Srr8;=+PmwrTLIRWfX|Oopu%NwC#Cae=m2Cc<WltP){6*4yipg*j6e
zV%|(R@5=-p%rmKT(i$j7okEPOtTxPvn?NF?5kweGAe7k(!qnNZ@&RyuhB}Bo&=}`m
zqZdH5Vi4A8`Jvy}re(iD#6b78{5`#R$1dZLnf>;OVA4Jf#>lrG`d)SPUD6d(a5lIa
z_Tm`!IOou`+j;K1E=7Bsa_BwdosL=Xt9?4`uxG$N*Bm(H!Gy!e|2aPv@PwCvL~0Z0
z7C!>JrcrQ0+p=$`)+8supauO*!#JqbKL@vo86*G)j6>!)2igy3;jniWtiEr9en$b`
zyQ$Ep8NqntiPu}MasEGJE^s5N8q^W@siDnN`<Ybi6EB;9lY!+6`|f*OnDpNJZs+;^
z_qnnC=8y@$Ixy(*?03t?F=WBj&=R<l*g&s!DdzNoe(7VdtQi4I#8@Vn=j%3(BhDNL
z*HPqs3iWmz`9~aMf&2^Rb;395KJzhmcDI}*-y0XNu(&ddzdU3bI{1@87~IQy3`!__
zMGAj30G$)xFCC-DaKJqe4kAw9gEFShPE$nf-|xbC_|-8R`Ol)yQ}4y`QDe9qUIBus
zZ6JkMO`h39uL)7>q)J)spp@GKYL!Fa`h1#}yB)@UJLH|hV!G|4u*D(@-oIx?`%KJN
zqW_5Z`63^f&b>u1aCVDDJO~#)qxX_kaURs$sB;IiAW=RE94Uy2{LAPu9B|L4&mZhX
z{&z2&LCB%ULd^j+PbV>^azxgE2;u_;RzE1^^ng@KBM3&K{ie5qZSORF&dGLoPG=~&
zn`8Vx>cN0D)cWB~WeTgcD0zi{@>l#*h0i74VWS@U7waUPzY!WY$=A=)F_0of9FJ(p
zGdLSoi@I5izM+Udzd)a%pwBR{=rK@dId(bDohLc%l}n$a6ie@-&$m<SUK&M@z_4x-
z44cs2(8o|`)r^n~duHHVP#%1#=tg6m_t@nh^IG_C`a8T+#i^)h8K+}R{07}X*lv>y
zf-J<LrIR3m<B&ldB1hQ-g{knfP~iw%jcdhm6w!J_@xLAIU^~iwyCd3yBLfb&X2Vgp
z95|2ohCi_d)DhQMwj;mI7+-5AL9t>ClxrptYtDiu#;LP`dGK!)4_fEnLtn{Z>b?8#
z@;+api;CXEF(hxqF;M3nZl(8wNZ}~j@f3YlLA-JXWN{p-h_7T&uOus{K!7z2*OEHn
zRAd7j!~E}fa21>itAb0>O~8Zs;r)Uqm@|&i=Qz}G>?*Z0AYX}cL0l<8owFzyfqhOH
z@THPFy$7?BL#dO^#ADk(<$b=y$2Y9F?H2Dx*~5?eVQ?X=jy}^NgnbE>jDuv&3@D<H
zm7&fLQiMKB3i%Sj@d=@=3l%-5&w<RH1(`dCAxiOz&!o_fq${RD3gtna(_llqxxpwB
z)<`?j`@~-hXfgDB68`i|%-<>0x-{Cf>|W#GacXUP`-4=tjycjD>TC-7RI%zA5J#eP
zNdfIb1+k(cbsi7ziIt9naM38uJ9QOC{^|21NMa>p^xBSK&J)zH9Q2WXuu{Yl-sMq$
zdRE6tHaHlT{C9a@Tx`-xwz4@y=WRhu`K@*^9iy(H-U}9>e2d0VuH&?wQ$C7{8S*ti
z=i8LO5-*v6`}kb+1@FSe&w(?wn?7&(9k%tUv=h81U@);)>4B@JPyE;aNxl~sYA%f9
zS=?9cB5SGr)bF$c;U~jL^gS%N7+z1G4H7PRM)OMLsw$M<ZJDLddkN)_V2<7n$9;<7
z7t>f;-k(T0z`w*SA0E|l)7Oni{9ilYLY;fCO3c3?;g=eA*fjV#+6VlEdFgjZ>ve*0
zOcAur|7x3n{wtQoz2D(|YVGD5w9W4nohPqY2Bpdeq}^gLTK~(x1Nl!BMpe}Z1~JTY
zO2G_$G2hf!9@n_qbJk%)$4x^fkDCQgowW`d;dF{=y62IUBJG!IVV;oB7F|@g=Km(o
z|1TBlhn6t+yUMxWtB(KvyUQgneuw#A{=MoOey2Kr)mnW0Z~Q*>pI%?;_fLMu+O~Kc
V|IOd8&dZhlT`-U(i+{KJe*oAF-^c&}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0c4e6e81473d47761346fd71e171a807bda5ec58
GIT binary patch
literal 766
zc%0RaF%H5o3`Je5J4~!tOjRxcHzQj|?vSyk$WfRoMn(pN`A%3IghV&^&WmFw`3X^n
z5LuJy!bBV70SGvNj{33}nLa3%K{3{3fkn<4**aPVsn%p+Et~#RJ701VSBJ^fJOy`w
tQ%J6s)_}bM9Ge%t!TS%mIsdEDCAx##QS}PW`^vmkeE?m(7{Tdl%O{UamXQDe
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..676b5c4b490e0859578ae599af54aa3de26d5d3b
GIT binary patch
literal 1334
zc${UEJ5L)y6on5CK~6vkAy4u$C{IVbZbqV@bcvLPKR^*_8cGUU3PeR|A&umMA}-w^
z(S_0#BbQK-28n`(P#G!3%{Q}A0?A!n&(7JMdp^&dZGT?4tsD#E(nrSW-#Mmw^<Yf@
zMSs*+*SZ=W9jSlOSI0UU4v(~L+l)gE$W7bSU@+90tuYR?YO7ist?A%^`_U@nfxe8s
zXn%iS%cEtrt*u2{RKMR>k6gM~Qq!91^?GWbwbku)wRpCuX`5Ev>gsemk^wW4wmaL>
zg;YPQYx+C%XXxLh*}<$d<bFW%iZ;pM$v{Su0t||dM33kZA)*^|V{TDACDY}}Kqk%P
zc;NVP4&9+UbcfDT=g~d7NB8I+opLUq!{A_WFgO@kMxw*uU~n)v7@VQO;oxwI!wdpt
z3ZJh)MiLzs4~xg#W8^97VF7_e=f=b0VPPQA;P7zxkTl+f!^7cW@Gy87z$VdP@GwNY
zjNiP4_*573w6)G<qTtfps;$O5z!WeI7zCIC-hqdKA|a$&R<$F0qvId&5BR4R1^h$O
zVF)k;v)s0-6F$2qvXI&cL&Pt_7U78a<<=$+_8`I$69<1Rx0^)~mIzA(B4U`204$M(
zk(VMuge4t|m{{mZge9i^$SmnJq%MSflne%g!C){L42FE1V2Cgn3<g7lAs;aq3<iV2
zU@#acO`^kKFc=I5fZ-o0W-K&b@;>#5K3eifwbMIZ^Xh43Wku`j>)P7d($3C~4i68t
zx3{O`<71tioaprQROjdCy1cy9)zy`L{4{;t-POj%hVsXizOPg_&r;nqHPv#|rykU9
zL|Hz(ePdpfPp=E*qoRCPua>4LKg|~9i@UX2tE}Qff$(ao)*8Q;V&;9*y)4T4`>lz&
zH}Br3Xf|IL<=fUoqcN8PwK-Fit?|dtD`Bp2uPE=fCaQSSXxu5v`k(rflVe5s?Jv*d
St)jdJSTg;G|DXT&`{oxvBDB!}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..06c747f9349abb52995c0e7ff02f126b21469c0e
GIT binary patch
literal 126
zc${<ctz&=yJ0R8oVgV>-1VRvSV89Ok|NqaxcmSyG0T6!x;vWnQ^?!ik|3Gp`7{mvO
P|A49ksR!w6U|;|Mf=?RM
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..faf24e0d8aa81faf80072c7807e52d749cad63c0
GIT binary patch
literal 126
zc${<ctz&=yJ0R8oVgV>-1VRvSV89Ok|NjrB85@B301!U_;txRaA3*#Ei2s4qK<Pga
MagaP%-2sR`01_z}*8l(j
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2b90422b38467ae30a2b6a866adbf0ad3c3f97f3
GIT binary patch
literal 1478
zc${UEF>D)E9LB#;LfodLp@PN+q;kTjby^B%lOh}_!6K!YmZGC+%~4~7rCU6D$lxWz
zDbo!Mr$|q_p#vVhMDpkb=~(h~qcf#TBoA3aCP!lU^SyJIIRDF+clW#Z{@?fBC6!12
z%p$G3uLCzZzWquw$fW$w8Jw#`5)5R3cpRfIee|S<u5=Megk(5GC?S$$h(H3wNdjMd
zgvTK|(m@<2XiJ-8i~-e>7W(l3O=+SvZecJOpijBtqB(Bzp8Y9D9Q6C-W0xZt<%}Iv
zqyp#IL9fRQRQ0$DTWl1hfNr-7ODwoU7nM;3VJ}4WWfkR78E)cYQ5F$J5$utTjARf-
zA^ffn2v8oD;lvIw27)kvACeyf?Wm2+D1&OBKCumq$ig=85^zKAA!q?Zpwg|N88mrV
zfYoP)zy)H!2^^H8GO9rp7yx!?!-_1}fsL|Xh80>U1O?bWd0-)zDhJCa?-Y>pdEc?H
z=r1DI$-#rB1YQYLiSj5#k(bCla=!F<<9XyBxgt|!icFCy!#G!yYjRDd$ut?y!V@wf
z6HPbarNL!T^qE|IhIuY=^f;Pl0ozk#%%o_lXrP!$(OdDQViToIFEV<o)SI0CivEiJ
zd_{4-;mn|zL5WE~j#9dNohC570nH4Wewx`db7=Z;Da9T<1I--T<lx3=LvcQ{XlBt2
zp=n5Kiku5ICusuBEc~I^N648)oAXGsl*|_}JEkB1e3(I)L6||9L70I{DE4FqVFqCa
z%?xZqaXvE$GYB&XGq5#9&J4l~!VJOyLVwL>!iB;~o@c%hzoQrr)7#APV4;gfqk+xM
zO>A#(V`pavdwYA>-QC6h{yq*44sdvQh@+z;oSdBC^z;<}{wMhB#S3h0Z6W<95HrYR
zFqc96H8-j3)wkxR>yO9F=isjopO&spF*jHF?QV98<?~<s{^bW3Cr|TB*=+W`dfv%@
z()h|sVZBzb*K4(B*B|_NBj5P;qj|E8%NbLbuCK5E@bSCPzgwO+Y-M$AQtJ;sz4qkM
z@)fe;%F4>>>b-l0ezx$Wx<pne8fspwtzElax6Inh?|gWxnDXL+{Yy6WNbAivZWeE4
z%1@U}mW@|6n_HOu=JA>Bxfd>7`2PNtGkdH3J@eDo^Jn*4d+q1Xr_fw|<IctD^V@j;
I96DS716_ODG5`Po
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f124d0da084e68cac62312e9fa8a0fbf9c7c5075
GIT binary patch
literal 142
zc${<c?PGudJ0R8oVi7221VRu90Ae9-2xekHfdBvhGcX<is(S#$AAtA=5dUFdu>S{=
d1K|cBJ^;iIpmYO7{2xReSPw`q$czSvnE(XhB3%Fg
new file mode 100644
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1,76 @@
+BitCoin v0.1.5 ALPHA
+
+Copyright (c) 2009 Satoshi Nakamoto
+Distributed under the MIT/X11 software license, see the accompanying
+file license.txt or http://www.opensource.org/licenses/mit-license.php.
+This product includes software developed by the OpenSSL Project for use in
+the OpenSSL Toolkit (http://www.openssl.org/).  This product includes
+cryptographic software written by Eric Young (eay@cryptsoft.com).
+
+
+Compilers Supported
+-------------------
+MinGW GCC (v3.4.5)
+Microsoft Visual C++ 6.0 SP6
+
+
+Dependencies
+------------
+Libraries you need to obtain separately to build:
+
+              default path   download
+wxWidgets      \wxWidgets     http://www.wxwidgets.org/downloads/
+OpenSSL        \OpenSSL       http://www.openssl.org/source/
+Berkeley DB    \DB            http://www.oracle.com/technology/software/products/berkeley-db/index.html
+Boost          \Boost         http://www.boost.org/users/download/
+
+Their licenses:
+wxWidgets      LGPL 2.1 with very liberal exceptions
+OpenSSL        Old BSD license with the problematic advertising requirement
+Berkeley DB    New BSD license with additional requirement that linked software must be free open source
+Boost          MIT-like license
+
+
+OpenSSL
+-------
+Bitcoin does not use any encryption.  If you want to do a no-everything
+build of OpenSSL to exclude encryption routines, a few patches are required.
+(OpenSSL v0.9.8h)
+
+Edit engines\e_gmp.c and put this #ifndef around #include <openssl/rsa.h>
+  #ifndef OPENSSL_NO_RSA
+  #include <openssl/rsa.h>
+  #endif
+
+Add this to crypto\err\err_all.c before the ERR_load_crypto_strings line:
+  void ERR_load_RSA_strings(void) { }
+
+Edit ms\mingw32.bat and replace the Configure line's parameters with this
+no-everything list.  You have to put this in the batch file because batch
+files can't handle more than 9 parameters.
+  perl Configure mingw threads no-rc2 no-rc4 no-rc5 no-idea no-des no-bf no-cast no-aes no-camellia no-seed no-rsa no-dh
+
+Also REM out the following line in ms\mingw32.bat.  The build fails after it's
+already finished building libeay32, which is all we care about, but the
+failure aborts the script before it runs dllwrap to generate libeay32.dll.
+  REM  if errorlevel 1 goto end
+
+Build
+  ms\mingw32.bat
+
+If you want to use it with MSVC, generate the .lib file
+  lib /machine:i386 /def:ms\libeay32.def /out:out\libeay32.lib
+
+
+Berkeley DB
+-----------
+MinGW with MSYS:
+cd \DB\build_unix
+sh ../dist/configure --enable-mingw --enable-cxx
+make
+
+
+Boost
+-----
+You may need Boost version 1.35 to build with MSVC 6.0.  I couldn't get
+version 1.37 to compile with MSVC 6.0.
new file mode 100644
--- /dev/null
+++ b/script.cpp
@@ -0,0 +1,1127 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include "headers.h"
+
+bool CheckSig(vector<unsigned char> vchSig, vector<unsigned char> vchPubKey, CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType);
+
+
+
+typedef vector<unsigned char> valtype;
+static const valtype vchFalse(0);
+static const valtype vchZero(0);
+static const valtype vchTrue(1, 1);
+static const CBigNum bnZero(0);
+static const CBigNum bnOne(1);
+static const CBigNum bnFalse(0);
+static const CBigNum bnTrue(1);
+
+
+bool CastToBool(const valtype& vch)
+{
+    return (CBigNum(vch) != bnZero);
+}
+
+void MakeSameSize(valtype& vch1, valtype& vch2)
+{
+    // Lengthen the shorter one
+    if (vch1.size() < vch2.size())
+        vch1.resize(vch2.size(), 0);
+    if (vch2.size() < vch1.size())
+        vch2.resize(vch1.size(), 0);
+}
+
+
+
+//
+// Script is a stack machine (like Forth) that evaluates a predicate
+// returning a bool indicating valid or not.  There are no loops.
+//
+#define stacktop(i)  (stack.at(stack.size()+(i)))
+#define altstacktop(i)  (altstack.at(altstack.size()+(i)))
+
+bool EvalScript(const CScript& script, const CTransaction& txTo, unsigned int nIn, int nHashType,
+                vector<vector<unsigned char> >* pvStackRet)
+{
+    CAutoBN_CTX pctx;
+    CScript::const_iterator pc = script.begin();
+    CScript::const_iterator pend = script.end();
+    CScript::const_iterator pbegincodehash = script.begin();
+    vector<bool> vfExec;
+    vector<valtype> stack;
+    vector<valtype> altstack;
+    if (pvStackRet)
+        pvStackRet->clear();
+
+
+    while (pc < pend)
+    {
+        bool fExec = !count(vfExec.begin(), vfExec.end(), false);
+
+        //
+        // Read instruction
+        //
+        opcodetype opcode;
+        valtype vchPushValue;
+        if (!script.GetOp(pc, opcode, vchPushValue))
+            return false;
+
+        if (fExec && opcode <= OP_PUSHDATA4)
+            stack.push_back(vchPushValue);
+        else if (fExec || (OP_IF <= opcode && opcode <= OP_ENDIF))
+        switch (opcode)
+        {
+            //
+            // Push value
+            //
+            case OP_1NEGATE:
+            case OP_1:
+            case OP_2:
+            case OP_3:
+            case OP_4:
+            case OP_5:
+            case OP_6:
+            case OP_7:
+            case OP_8:
+            case OP_9:
+            case OP_10:
+            case OP_11:
+            case OP_12:
+            case OP_13:
+            case OP_14:
+            case OP_15:
+            case OP_16:
+            {
+                // ( -- value)
+                CBigNum bn((int)opcode - (int)(OP_1 - 1));
+                stack.push_back(bn.getvch());
+            }
+            break;
+
+
+            //
+            // Control
+            //
+            case OP_NOP:
+            break;
+
+            case OP_VER:
+            {
+                CBigNum bn(VERSION);
+                stack.push_back(bn.getvch());
+            }
+            break;
+
+            case OP_IF:
+            case OP_NOTIF:
+            case OP_VERIF:
+            case OP_VERNOTIF:
+            {
+                // <expression> if [statements] [else [statements]] endif
+                bool fValue = false;
+                if (fExec)
+                {
+                    if (stack.size() < 1)
+                        return false;
+                    valtype& vch = stacktop(-1);
+                    if (opcode == OP_VERIF || opcode == OP_VERNOTIF)
+                        fValue = (CBigNum(VERSION) >= CBigNum(vch));
+                    else
+                        fValue = CastToBool(vch);
+                    if (opcode == OP_NOTIF || opcode == OP_VERNOTIF)
+                        fValue = !fValue;
+                    stack.pop_back();
+                }
+                vfExec.push_back(fValue);
+            }
+            break;
+
+            case OP_ELSE:
+            {
+                if (vfExec.empty())
+                    return false;
+                vfExec.back() = !vfExec.back();
+            }
+            break;
+
+            case OP_ENDIF:
+            {
+                if (vfExec.empty())
+                    return false;
+                vfExec.pop_back();
+            }
+            break;
+
+            case OP_VERIFY:
+            {
+                // (true -- ) or
+                // (false -- false) and return
+                if (stack.size() < 1)
+                    return false;
+                bool fValue = CastToBool(stacktop(-1));
+                if (fValue)
+                    stack.pop_back();
+                else
+                    pc = pend;
+            }
+            break;
+
+            case OP_RETURN:
+            {
+                pc = pend;
+            }
+            break;
+
+
+            //
+            // Stack ops
+            //
+            case OP_TOALTSTACK:
+            {
+                if (stack.size() < 1)
+                    return false;
+                altstack.push_back(stacktop(-1));
+                stack.pop_back();
+            }
+            break;
+
+            case OP_FROMALTSTACK:
+            {
+                if (altstack.size() < 1)
+                    return false;
+                stack.push_back(altstacktop(-1));
+                altstack.pop_back();
+            }
+            break;
+
+            case OP_2DROP:
+            {
+                // (x1 x2 -- )
+                stack.pop_back();
+                stack.pop_back();
+            }
+            break;
+
+            case OP_2DUP:
+            {
+                // (x1 x2 -- x1 x2 x1 x2)
+                if (stack.size() < 2)
+                    return false;
+                valtype vch1 = stacktop(-2);
+                valtype vch2 = stacktop(-1);
+                stack.push_back(vch1);
+                stack.push_back(vch2);
+            }
+            break;
+
+            case OP_3DUP:
+            {
+                // (x1 x2 x3 -- x1 x2 x3 x1 x2 x3)
+                if (stack.size() < 3)
+                    return false;
+                valtype vch1 = stacktop(-3);
+                valtype vch2 = stacktop(-2);
+                valtype vch3 = stacktop(-1);
+                stack.push_back(vch1);
+                stack.push_back(vch2);
+                stack.push_back(vch3);
+            }
+            break;
+
+            case OP_2OVER:
+            {
+                // (x1 x2 x3 x4 -- x1 x2 x3 x4 x1 x2)
+                if (stack.size() < 4)
+                    return false;
+                valtype vch1 = stacktop(-4);
+                valtype vch2 = stacktop(-3);
+                stack.push_back(vch1);
+                stack.push_back(vch2);
+            }
+            break;
+
+            case OP_2ROT:
+            {
+                // (x1 x2 x3 x4 x5 x6 -- x3 x4 x5 x6 x1 x2)
+                if (stack.size() < 6)
+                    return false;
+                valtype vch1 = stacktop(-6);
+                valtype vch2 = stacktop(-5);
+                stack.erase(stack.end()-6, stack.end()-4);
+                stack.push_back(vch1);
+                stack.push_back(vch2);
+            }
+            break;
+
+            case OP_2SWAP:
+            {
+                // (x1 x2 x3 x4 -- x3 x4 x1 x2)
+                if (stack.size() < 4)
+                    return false;
+                swap(stacktop(-4), stacktop(-2));
+                swap(stacktop(-3), stacktop(-1));
+            }
+            break;
+
+            case OP_IFDUP:
+            {
+                // (x - 0 | x x)
+                if (stack.size() < 1)
+                    return false;
+                valtype vch = stacktop(-1);
+                if (CastToBool(vch))
+                    stack.push_back(vch);
+            }
+            break;
+
+            case OP_DEPTH:
+            {
+                // -- stacksize
+                CBigNum bn(stack.size());
+                stack.push_back(bn.getvch());
+            }
+            break;
+
+            case OP_DROP:
+            {
+                // (x -- )
+                if (stack.size() < 1)
+                    return false;
+                stack.pop_back();
+            }
+            break;
+
+            case OP_DUP:
+            {
+                // (x -- x x)
+                if (stack.size() < 1)
+                    return false;
+                valtype vch = stacktop(-1);
+                stack.push_back(vch);
+            }
+            break;
+
+            case OP_NIP:
+            {
+                // (x1 x2 -- x2)
+                if (stack.size() < 2)
+                    return false;
+                stack.erase(stack.end() - 2);
+            }
+            break;
+
+            case OP_OVER:
+            {
+                // (x1 x2 -- x1 x2 x1)
+                if (stack.size() < 2)
+                    return false;
+                valtype vch = stacktop(-2);
+                stack.push_back(vch);
+            }
+            break;
+
+            case OP_PICK:
+            case OP_ROLL:
+            {
+                // (xn ... x2 x1 x0 n - xn ... x2 x1 x0 xn)
+                // (xn ... x2 x1 x0 n - ... x2 x1 x0 xn)
+                if (stack.size() < 2)
+                    return false;
+                int n = CBigNum(stacktop(-1)).getint();
+                stack.pop_back();
+                if (n < 0 || n >= stack.size())
+                    return false;
+                valtype vch = stacktop(-n-1);
+                if (opcode == OP_ROLL)
+                    stack.erase(stack.end()-n-1);
+                stack.push_back(vch);
+            }
+            break;
+
+            case OP_ROT:
+            {
+                // (x1 x2 x3 -- x2 x3 x1)
+                //  x2 x1 x3  after first swap
+                //  x2 x3 x1  after second swap
+                if (stack.size() < 3)
+                    return false;
+                swap(stacktop(-3), stacktop(-2));
+                swap(stacktop(-2), stacktop(-1));
+            }
+            break;
+
+            case OP_SWAP:
+            {
+                // (x1 x2 -- x2 x1)
+                if (stack.size() < 2)
+                    return false;
+                swap(stacktop(-2), stacktop(-1));
+            }
+            break;
+
+            case OP_TUCK:
+            {
+                // (x1 x2 -- x2 x1 x2)
+                if (stack.size() < 2)
+                    return false;
+                valtype vch = stacktop(-1);
+                stack.insert(stack.end()-2, vch);
+            }
+            break;
+
+
+            //
+            // Splice ops
+            //
+            case OP_CAT:
+            {
+                // (x1 x2 -- out)
+                if (stack.size() < 2)
+                    return false;
+                valtype& vch1 = stacktop(-2);
+                valtype& vch2 = stacktop(-1);
+                vch1.insert(vch1.end(), vch2.begin(), vch2.end());
+                stack.pop_back();
+            }
+            break;
+
+            case OP_SUBSTR:
+            {
+                // (in begin size -- out)
+                if (stack.size() < 3)
+                    return false;
+                valtype& vch = stacktop(-3);
+                int nBegin = CBigNum(stacktop(-2)).getint();
+                int nEnd = nBegin + CBigNum(stacktop(-1)).getint();
+                if (nBegin < 0 || nEnd < nBegin)
+                    return false;
+                if (nBegin > vch.size())
+                    nBegin = vch.size();
+                if (nEnd > vch.size())
+                    nEnd = vch.size();
+                vch.erase(vch.begin() + nEnd, vch.end());
+                vch.erase(vch.begin(), vch.begin() + nBegin);
+                stack.pop_back();
+                stack.pop_back();
+            }
+            break;
+
+            case OP_LEFT:
+            case OP_RIGHT:
+            {
+                // (in size -- out)
+                if (stack.size() < 2)
+                    return false;
+                valtype& vch = stacktop(-2);
+                int nSize = CBigNum(stacktop(-1)).getint();
+                if (nSize < 0)
+                    return false;
+                if (nSize > vch.size())
+                    nSize = vch.size();
+                if (opcode == OP_LEFT)
+                    vch.erase(vch.begin() + nSize, vch.end());
+                else
+                    vch.erase(vch.begin(), vch.end() - nSize);
+                stack.pop_back();
+            }
+            break;
+
+            case OP_SIZE:
+            {
+                // (in -- in size)
+                if (stack.size() < 1)
+                    return false;
+                CBigNum bn(stacktop(-1).size());
+                stack.push_back(bn.getvch());
+            }
+            break;
+
+
+            //
+            // Bitwise logic
+            //
+            case OP_INVERT:
+            {
+                // (in - out)
+                if (stack.size() < 1)
+                    return false;
+                valtype& vch = stacktop(-1);
+                for (int i = 0; i < vch.size(); i++)
+                    vch[i] = ~vch[i];
+            }
+            break;
+
+            case OP_AND:
+            case OP_OR:
+            case OP_XOR:
+            {
+                // (x1 x2 - out)
+                if (stack.size() < 2)
+                    return false;
+                valtype& vch1 = stacktop(-2);
+                valtype& vch2 = stacktop(-1);
+                MakeSameSize(vch1, vch2);
+                if (opcode == OP_AND)
+                {
+                    for (int i = 0; i < vch1.size(); i++)
+                        vch1[i] &= vch2[i];
+                }
+                else if (opcode == OP_OR)
+                {
+                    for (int i = 0; i < vch1.size(); i++)
+                        vch1[i] |= vch2[i];
+                }
+                else if (opcode == OP_XOR)
+                {
+                    for (int i = 0; i < vch1.size(); i++)
+                        vch1[i] ^= vch2[i];
+                }
+                stack.pop_back();
+            }
+            break;
+
+            case OP_EQUAL:
+            case OP_EQUALVERIFY:
+            //case OP_NOTEQUAL: // use OP_NUMNOTEQUAL
+            {
+                // (x1 x2 - bool)
+                if (stack.size() < 2)
+                    return false;
+                valtype& vch1 = stacktop(-2);
+                valtype& vch2 = stacktop(-1);
+                bool fEqual = (vch1 == vch2);
+                // OP_NOTEQUAL is disabled because it would be too easy to say
+                // something like n != 1 and have some wiseguy pass in 1 with extra
+                // zero bytes after it (numerically, 0x01 == 0x0001 == 0x000001)
+                //if (opcode == OP_NOTEQUAL)
+                //    fEqual = !fEqual;
+                stack.pop_back();
+                stack.pop_back();
+                stack.push_back(fEqual ? vchTrue : vchFalse);
+                if (opcode == OP_EQUALVERIFY)
+                {
+                    if (fEqual)
+                        stack.pop_back();
+                    else
+                        pc = pend;
+                }
+            }
+            break;
+
+
+            //
+            // Numeric
+            //
+            case OP_1ADD:
+            case OP_1SUB:
+            case OP_2MUL:
+            case OP_2DIV:
+            case OP_NEGATE:
+            case OP_ABS:
+            case OP_NOT:
+            case OP_0NOTEQUAL:
+            {
+                // (in -- out)
+                if (stack.size() < 1)
+                    return false;
+                CBigNum bn(stacktop(-1));
+                switch (opcode)
+                {
+                case OP_1ADD:       bn += bnOne; break;
+                case OP_1SUB:       bn -= bnOne; break;
+                case OP_2MUL:       bn <<= 1; break;
+                case OP_2DIV:       bn >>= 1; break;
+                case OP_NEGATE:     bn = -bn; break;
+                case OP_ABS:        if (bn < bnZero) bn = -bn; break;
+                case OP_NOT:        bn = (bn == bnZero); break;
+                case OP_0NOTEQUAL:  bn = (bn != bnZero); break;
+                }
+                stack.pop_back();
+                stack.push_back(bn.getvch());
+            }
+            break;
+
+            case OP_ADD:
+            case OP_SUB:
+            case OP_MUL:
+            case OP_DIV:
+            case OP_MOD:
+            case OP_LSHIFT:
+            case OP_RSHIFT:
+            case OP_BOOLAND:
+            case OP_BOOLOR:
+            case OP_NUMEQUAL:
+            case OP_NUMEQUALVERIFY:
+            case OP_NUMNOTEQUAL:
+            case OP_LESSTHAN:
+            case OP_GREATERTHAN:
+            case OP_LESSTHANOREQUAL:
+            case OP_GREATERTHANOREQUAL:
+            case OP_MIN:
+            case OP_MAX:
+            {
+                // (x1 x2 -- out)
+                if (stack.size() < 2)
+                    return false;
+                CBigNum bn1(stacktop(-2));
+                CBigNum bn2(stacktop(-1));
+                CBigNum bn;
+                switch (opcode)
+                {
+                case OP_ADD:
+                    bn = bn1 + bn2;
+                    break;
+
+                case OP_SUB:
+                    bn = bn1 - bn2;
+                    break;
+
+                case OP_MUL:
+                    if (!BN_mul(&bn, &bn1, &bn2, pctx))
+                        return false;
+                    break;
+
+                case OP_DIV:
+                    if (!BN_div(&bn, NULL, &bn1, &bn2, pctx))
+                        return false;
+                    break;
+
+                case OP_MOD:
+                    if (!BN_mod(&bn, &bn1, &bn2, pctx))
+                        return false;
+                    break;
+
+                case OP_LSHIFT:
+                    if (bn2 < bnZero)
+                        return false;
+                    bn = bn1 << bn2.getulong();
+                    break;
+
+                case OP_RSHIFT:
+                    if (bn2 < bnZero)
+                        return false;
+                    bn = bn1 >> bn2.getulong();
+                    break;
+
+                case OP_BOOLAND:             bn = (bn1 != bnZero && bn2 != bnZero); break;
+                case OP_BOOLOR:              bn = (bn1 != bnZero || bn2 != bnZero); break;
+                case OP_NUMEQUAL:            bn = (bn1 == bn2); break;
+                case OP_NUMEQUALVERIFY:      bn = (bn1 == bn2); break;
+                case OP_NUMNOTEQUAL:         bn = (bn1 != bn2); break;
+                case OP_LESSTHAN:            bn = (bn1 < bn2); break;
+                case OP_GREATERTHAN:         bn = (bn1 > bn2); break;
+                case OP_LESSTHANOREQUAL:     bn = (bn1 <= bn2); break;
+                case OP_GREATERTHANOREQUAL:  bn = (bn1 >= bn2); break;
+                case OP_MIN:                 bn = (bn1 < bn2 ? bn1 : bn2); break;
+                case OP_MAX:                 bn = (bn1 > bn2 ? bn1 : bn2); break;
+                }
+                stack.pop_back();
+                stack.pop_back();
+                stack.push_back(bn.getvch());
+
+                if (opcode == OP_NUMEQUALVERIFY)
+                {
+                    if (CastToBool(stacktop(-1)))
+                        stack.pop_back();
+                    else
+                        pc = pend;
+                }
+            }
+            break;
+
+            case OP_WITHIN:
+            {
+                // (x min max -- out)
+                if (stack.size() < 3)
+                    return false;
+                CBigNum bn1(stacktop(-3));
+                CBigNum bn2(stacktop(-2));
+                CBigNum bn3(stacktop(-1));
+                bool fValue = (bn2 <= bn1 && bn1 < bn3);
+                stack.pop_back();
+                stack.pop_back();
+                stack.pop_back();
+                stack.push_back(fValue ? vchTrue : vchFalse);
+            }
+            break;
+
+
+            //
+            // Crypto
+            //
+            case OP_RIPEMD160:
+            case OP_SHA1:
+            case OP_SHA256:
+            case OP_HASH160:
+            case OP_HASH256:
+            {
+                // (in -- hash)
+                if (stack.size() < 1)
+                    return false;
+                valtype& vch = stacktop(-1);
+                valtype vchHash(opcode == OP_RIPEMD160 || opcode == OP_SHA1 || opcode == OP_HASH160 ? 20 : 32);
+                if (opcode == OP_RIPEMD160)
+                    RIPEMD160(&vch[0], vch.size(), &vchHash[0]);
+                else if (opcode == OP_SHA1)
+                    SHA1(&vch[0], vch.size(), &vchHash[0]);
+                else if (opcode == OP_SHA256)
+                    SHA256(&vch[0], vch.size(), &vchHash[0]);
+                else if (opcode == OP_HASH160)
+                {
+                    uint160 hash160 = Hash160(vch);
+                    memcpy(&vchHash[0], &hash160, sizeof(hash160));
+                }
+                else if (opcode == OP_HASH256)
+                {
+                    uint256 hash = Hash(vch.begin(), vch.end());
+                    memcpy(&vchHash[0], &hash, sizeof(hash));
+                }
+                stack.pop_back();
+                stack.push_back(vchHash);
+            }
+            break;
+
+            case OP_CODESEPARATOR:
+            {
+                // Hash starts after the code separator
+                pbegincodehash = pc;
+            }
+            break;
+
+            case OP_CHECKSIG:
+            case OP_CHECKSIGVERIFY:
+            {
+                // (sig pubkey -- bool)
+                if (stack.size() < 2)
+                    return false;
+
+                valtype& vchSig    = stacktop(-2);
+                valtype& vchPubKey = stacktop(-1);
+
+                ////// debug print
+                //PrintHex(vchSig.begin(), vchSig.end(), "sig: %s\n");
+                //PrintHex(vchPubKey.begin(), vchPubKey.end(), "pubkey: %s\n");
+
+                // Subset of script starting at the most recent codeseparator
+                CScript scriptCode(pbegincodehash, pend);
+
+                // Drop the signature, since there's no way for a signature to sign itself
+                scriptCode.FindAndDelete(CScript(vchSig));
+
+                bool fSuccess = CheckSig(vchSig, vchPubKey, scriptCode, txTo, nIn, nHashType);
+
+                stack.pop_back();
+                stack.pop_back();
+                stack.push_back(fSuccess ? vchTrue : vchFalse);
+                if (opcode == OP_CHECKSIGVERIFY)
+                {
+                    if (fSuccess)
+                        stack.pop_back();
+                    else
+                        pc = pend;
+                }
+            }
+            break;
+
+            case OP_CHECKMULTISIG:
+            case OP_CHECKMULTISIGVERIFY:
+            {
+                // ([sig ...] num_of_signatures [pubkey ...] num_of_pubkeys -- bool)
+
+                int i = 1;
+                if (stack.size() < i)
+                    return false;
+
+                int nKeysCount = CBigNum(stacktop(-i)).getint();
+                if (nKeysCount < 0)
+                    return false;
+                int ikey = ++i;
+                i += nKeysCount;
+                if (stack.size() < i)
+                    return false;
+
+                int nSigsCount = CBigNum(stacktop(-i)).getint();
+                if (nSigsCount < 0 || nSigsCount > nKeysCount)
+                    return false;
+                int isig = ++i;
+                i += nSigsCount;
+                if (stack.size() < i)
+                    return false;
+
+                // Subset of script starting at the most recent codeseparator
+                CScript scriptCode(pbegincodehash, pend);
+
+                // Drop the signatures, since there's no way for a signature to sign itself
+                for (int i = 0; i < nSigsCount; i++)
+                {
+                    valtype& vchSig = stacktop(-isig-i);
+                    scriptCode.FindAndDelete(CScript(vchSig));
+                }
+
+                bool fSuccess = true;
+                while (fSuccess && nSigsCount > 0)
+                {
+                    valtype& vchSig    = stacktop(-isig);
+                    valtype& vchPubKey = stacktop(-ikey);
+
+                    // Check signature
+                    if (CheckSig(vchSig, vchPubKey, scriptCode, txTo, nIn, nHashType))
+                    {
+                        isig++;
+                        nSigsCount--;
+                    }
+                    ikey++;
+                    nKeysCount--;
+
+                    // If there are more signatures left than keys left,
+                    // then too many signatures have failed
+                    if (nSigsCount > nKeysCount)
+                        fSuccess = false;
+                }
+
+                while (i-- > 0)
+                    stack.pop_back();
+                stack.push_back(fSuccess ? vchTrue : vchFalse);
+
+                if (opcode == OP_CHECKMULTISIGVERIFY)
+                {
+                    if (fSuccess)
+                        stack.pop_back();
+                    else
+                        pc = pend;
+                }
+            }
+            break;
+
+            default:
+                return false;
+        }
+    }
+
+
+    if (pvStackRet)
+        *pvStackRet = stack;
+    return (stack.empty() ? false : CastToBool(stack.back()));
+}
+
+#undef top
+
+
+
+
+
+
+
+
+
+uint256 SignatureHash(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType)
+{
+    if (nIn >= txTo.vin.size())
+    {
+        printf("ERROR: SignatureHash() : nIn=%d out of range\n", nIn);
+        return 1;
+    }
+    CTransaction txTmp(txTo);
+
+    // In case concatenating two scripts ends up with two codeseparators,
+    // or an extra one at the end, this prevents all those possible incompatibilities.
+    scriptCode.FindAndDelete(CScript(OP_CODESEPARATOR));
+
+    // Blank out other inputs' signatures
+    for (int i = 0; i < txTmp.vin.size(); i++)
+        txTmp.vin[i].scriptSig = CScript();
+    txTmp.vin[nIn].scriptSig = scriptCode;
+
+    // Blank out some of the outputs
+    if ((nHashType & 0x1f) == SIGHASH_NONE)
+    {
+        // Wildcard payee
+        txTmp.vout.clear();
+
+        // Let the others update at will
+        for (int i = 0; i < txTmp.vin.size(); i++)
+            if (i != nIn)
+                txTmp.vin[i].nSequence = 0;
+    }
+    else if ((nHashType & 0x1f) == SIGHASH_SINGLE)
+    {
+        // Only lockin the txout payee at same index as txin
+        unsigned int nOut = nIn;
+        if (nOut >= txTmp.vout.size())
+        {
+            printf("ERROR: SignatureHash() : nOut=%d out of range\n", nOut);
+            return 1;
+        }
+        txTmp.vout.resize(nOut+1);
+        for (int i = 0; i < nOut; i++)
+            txTmp.vout[i].SetNull();
+
+        // Let the others update at will
+        for (int i = 0; i < txTmp.vin.size(); i++)
+            if (i != nIn)
+                txTmp.vin[i].nSequence = 0;
+    }
+
+    // Blank out other inputs completely, not recommended for open transactions
+    if (nHashType & SIGHASH_ANYONECANPAY)
+    {
+        txTmp.vin[0] = txTmp.vin[nIn];
+        txTmp.vin.resize(1);
+    }
+
+    // Serialize and hash
+    CDataStream ss(SER_GETHASH);
+    ss.reserve(10000);
+    ss << txTmp << nHashType;
+    return Hash(ss.begin(), ss.end());
+}
+
+
+bool CheckSig(vector<unsigned char> vchSig, vector<unsigned char> vchPubKey, CScript scriptCode,
+              const CTransaction& txTo, unsigned int nIn, int nHashType)
+{
+    CKey key;
+    if (!key.SetPubKey(vchPubKey))
+        return false;
+
+    // Hash type is one byte tacked on to the end of the signature
+    if (vchSig.empty())
+        return false;
+    if (nHashType == 0)
+        nHashType = vchSig.back();
+    else if (nHashType != vchSig.back())
+        return false;
+    vchSig.pop_back();
+
+    if (key.Verify(SignatureHash(scriptCode, txTo, nIn, nHashType), vchSig))
+        return true;
+
+    return false;
+}
+
+
+
+
+
+
+
+
+
+
+
+bool Solver(const CScript& scriptPubKey, vector<pair<opcodetype, valtype> >& vSolutionRet)
+{
+    // Templates
+    static vector<CScript> vTemplates;
+    if (vTemplates.empty())
+    {
+        // Standard tx, sender provides pubkey, receiver adds signature
+        vTemplates.push_back(CScript() << OP_PUBKEY << OP_CHECKSIG);
+
+        // Short account number tx, sender provides hash of pubkey, receiver provides signature and pubkey
+        vTemplates.push_back(CScript() << OP_DUP << OP_HASH160 << OP_PUBKEYHASH << OP_EQUALVERIFY << OP_CHECKSIG);
+    }
+
+    // Scan templates
+    const CScript& script1 = scriptPubKey;
+    foreach(const CScript& script2, vTemplates)
+    {
+        vSolutionRet.clear();
+        opcodetype opcode1, opcode2;
+        vector<unsigned char> vch1, vch2;
+
+        // Compare
+        CScript::const_iterator pc1 = script1.begin();
+        CScript::const_iterator pc2 = script2.begin();
+        loop
+        {
+            bool f1 = script1.GetOp(pc1, opcode1, vch1);
+            bool f2 = script2.GetOp(pc2, opcode2, vch2);
+            if (!f1 && !f2)
+            {
+                // Success
+                reverse(vSolutionRet.begin(), vSolutionRet.end());
+                return true;
+            }
+            else if (f1 != f2)
+            {
+                break;
+            }
+            else if (opcode2 == OP_PUBKEY)
+            {
+                if (vch1.size() <= sizeof(uint256))
+                    break;
+                vSolutionRet.push_back(make_pair(opcode2, vch1));
+            }
+            else if (opcode2 == OP_PUBKEYHASH)
+            {
+                if (vch1.size() != sizeof(uint160))
+                    break;
+                vSolutionRet.push_back(make_pair(opcode2, vch1));
+            }
+            else if (opcode1 != opcode2)
+            {
+                break;
+            }
+        }
+    }
+
+    vSolutionRet.clear();
+    return false;
+}
+
+
+bool Solver(const CScript& scriptPubKey, uint256 hash, int nHashType, CScript& scriptSigRet)
+{
+    scriptSigRet.clear();
+
+    vector<pair<opcodetype, valtype> > vSolution;
+    if (!Solver(scriptPubKey, vSolution))
+        return false;
+
+    // Compile solution
+    CRITICAL_BLOCK(cs_mapKeys)
+    {
+        foreach(PAIRTYPE(opcodetype, valtype)& item, vSolution)
+        {
+            if (item.first == OP_PUBKEY)
+            {
+                // Sign
+                const valtype& vchPubKey = item.second;
+                if (!mapKeys.count(vchPubKey))
+                    return false;
+                if (hash != 0)
+                {
+                    vector<unsigned char> vchSig;
+                    if (!CKey::Sign(mapKeys[vchPubKey], hash, vchSig))
+                        return false;
+                    vchSig.push_back((unsigned char)nHashType);
+                    scriptSigRet << vchSig;
+                }
+            }
+            else if (item.first == OP_PUBKEYHASH)
+            {
+                // Sign and give pubkey
+                map<uint160, valtype>::iterator mi = mapPubKeys.find(uint160(item.second));
+                if (mi == mapPubKeys.end())
+                    return false;
+                const vector<unsigned char>& vchPubKey = (*mi).second;
+                if (!mapKeys.count(vchPubKey))
+                    return false;
+                if (hash != 0)
+                {
+                    vector<unsigned char> vchSig;
+                    if (!CKey::Sign(mapKeys[vchPubKey], hash, vchSig))
+                        return false;
+                    vchSig.push_back((unsigned char)nHashType);
+                    scriptSigRet << vchSig << vchPubKey;
+                }
+            }
+        }
+    }
+
+    return true;
+}
+
+
+bool IsMine(const CScript& scriptPubKey)
+{
+    CScript scriptSig;
+    return Solver(scriptPubKey, 0, 0, scriptSig);
+}
+
+
+bool ExtractPubKey(const CScript& scriptPubKey, bool fMineOnly, vector<unsigned char>& vchPubKeyRet)
+{
+    vchPubKeyRet.clear();
+
+    vector<pair<opcodetype, valtype> > vSolution;
+    if (!Solver(scriptPubKey, vSolution))
+        return false;
+
+    CRITICAL_BLOCK(cs_mapKeys)
+    {
+        foreach(PAIRTYPE(opcodetype, valtype)& item, vSolution)
+        {
+            valtype vchPubKey;
+            if (item.first == OP_PUBKEY)
+            {
+                vchPubKey = item.second;
+            }
+            else if (item.first == OP_PUBKEYHASH)
+            {
+                map<uint160, valtype>::iterator mi = mapPubKeys.find(uint160(item.second));
+                if (mi == mapPubKeys.end())
+                    continue;
+                vchPubKey = (*mi).second;
+            }
+            if (!fMineOnly || mapKeys.count(vchPubKey))
+            {
+                vchPubKeyRet = vchPubKey;
+                return true;
+            }
+        }
+    }
+    return false;
+}
+
+
+bool ExtractHash160(const CScript& scriptPubKey, uint160& hash160Ret)
+{
+    hash160Ret = 0;
+
+    vector<pair<opcodetype, valtype> > vSolution;
+    if (!Solver(scriptPubKey, vSolution))
+        return false;
+
+    foreach(PAIRTYPE(opcodetype, valtype)& item, vSolution)
+    {
+        if (item.first == OP_PUBKEYHASH)
+        {
+            hash160Ret = uint160(item.second);
+            return true;
+        }
+    }
+    return false;
+}
+
+
+bool SignSignature(const CTransaction& txFrom, CTransaction& txTo, unsigned int nIn, int nHashType, CScript scriptPrereq)
+{
+    assert(nIn < txTo.vin.size());
+    CTxIn& txin = txTo.vin[nIn];
+    assert(txin.prevout.n < txFrom.vout.size());
+    const CTxOut& txout = txFrom.vout[txin.prevout.n];
+
+    // Leave out the signature from the hash, since a signature can't sign itself.
+    // The checksig op will also drop the signatures from its hash.
+    uint256 hash = SignatureHash(scriptPrereq + txout.scriptPubKey, txTo, nIn, nHashType);
+
+    if (!Solver(txout.scriptPubKey, hash, nHashType, txin.scriptSig))
+        return false;
+
+    txin.scriptSig = scriptPrereq + txin.scriptSig;
+
+    // Test solution
+    if (scriptPrereq.empty())
+        if (!EvalScript(txin.scriptSig + CScript(OP_CODESEPARATOR) + txout.scriptPubKey, txTo, nIn))
+            return false;
+
+    return true;
+}
+
+
+bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, int nHashType)
+{
+    assert(nIn < txTo.vin.size());
+    const CTxIn& txin = txTo.vin[nIn];
+    if (txin.prevout.n >= txFrom.vout.size())
+        return false;
+    const CTxOut& txout = txFrom.vout[txin.prevout.n];
+
+    if (txin.prevout.hash != txFrom.GetHash())
+        return false;
+
+    return EvalScript(txin.scriptSig + CScript(OP_CODESEPARATOR) + txout.scriptPubKey, txTo, nIn, nHashType);
+}
new file mode 100644
--- /dev/null
+++ b/script.h
@@ -0,0 +1,597 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+class CTransaction;
+
+enum
+{
+    SIGHASH_ALL = 1,
+    SIGHASH_NONE = 2,
+    SIGHASH_SINGLE = 3,
+    SIGHASH_ANYONECANPAY = 0x80,
+};
+
+
+
+enum opcodetype
+{
+    // push value
+    OP_0=0,
+    OP_FALSE=OP_0,
+    OP_PUSHDATA1=76,
+    OP_PUSHDATA2,
+    OP_PUSHDATA4,
+    OP_1NEGATE,
+    OP_RESERVED,
+    OP_1,
+    OP_TRUE=OP_1,
+    OP_2,
+    OP_3,
+    OP_4,
+    OP_5,
+    OP_6,
+    OP_7,
+    OP_8,
+    OP_9,
+    OP_10,
+    OP_11,
+    OP_12,
+    OP_13,
+    OP_14,
+    OP_15,
+    OP_16,
+
+    // control
+    OP_NOP,
+    OP_VER,
+    OP_IF,
+    OP_NOTIF,
+    OP_VERIF,
+    OP_VERNOTIF,
+    OP_ELSE,
+    OP_ENDIF,
+    OP_VERIFY,
+    OP_RETURN,
+
+    // stack ops
+    OP_TOALTSTACK,
+    OP_FROMALTSTACK,
+    OP_2DROP,
+    OP_2DUP,
+    OP_3DUP,
+    OP_2OVER,
+    OP_2ROT,
+    OP_2SWAP,
+    OP_IFDUP,
+    OP_DEPTH,
+    OP_DROP,
+    OP_DUP,
+    OP_NIP,
+    OP_OVER,
+    OP_PICK,
+    OP_ROLL,
+    OP_ROT,
+    OP_SWAP,
+    OP_TUCK,
+
+    // splice ops
+    OP_CAT,
+    OP_SUBSTR,
+    OP_LEFT,
+    OP_RIGHT,
+    OP_SIZE,
+
+    // bit logic
+    OP_INVERT,
+    OP_AND,
+    OP_OR,
+    OP_XOR,
+    OP_EQUAL,
+    OP_EQUALVERIFY,
+    OP_RESERVED1,
+    OP_RESERVED2,
+
+    // numeric
+    OP_1ADD,
+    OP_1SUB,
+    OP_2MUL,
+    OP_2DIV,
+    OP_NEGATE,
+    OP_ABS,
+    OP_NOT,
+    OP_0NOTEQUAL,
+
+    OP_ADD,
+    OP_SUB,
+    OP_MUL,
+    OP_DIV,
+    OP_MOD,
+    OP_LSHIFT,
+    OP_RSHIFT,
+
+    OP_BOOLAND,
+    OP_BOOLOR,
+    OP_NUMEQUAL,
+    OP_NUMEQUALVERIFY,
+    OP_NUMNOTEQUAL,
+    OP_LESSTHAN,
+    OP_GREATERTHAN,
+    OP_LESSTHANOREQUAL,
+    OP_GREATERTHANOREQUAL,
+    OP_MIN,
+    OP_MAX,
+
+    OP_WITHIN,
+
+    // crypto
+    OP_RIPEMD160,
+    OP_SHA1,
+    OP_SHA256,
+    OP_HASH160,
+    OP_HASH256,
+    OP_CODESEPARATOR,
+    OP_CHECKSIG,
+    OP_CHECKSIGVERIFY,
+    OP_CHECKMULTISIG,
+    OP_CHECKMULTISIGVERIFY,
+
+
+    // multi-byte opcodes
+    OP_SINGLEBYTE_END = 0xF0,
+    OP_DOUBLEBYTE_BEGIN = 0xF000,
+
+    // template matching params
+    OP_PUBKEY,
+    OP_PUBKEYHASH,
+
+
+
+    OP_INVALIDOPCODE = 0xFFFF,
+};
+
+
+
+
+
+
+
+
+inline const char* GetOpName(opcodetype opcode)
+{
+    switch (opcode)
+    {
+    // push value
+    case OP_0                      : return "0";
+    case OP_PUSHDATA1              : return "OP_PUSHDATA1";
+    case OP_PUSHDATA2              : return "OP_PUSHDATA2";
+    case OP_PUSHDATA4              : return "OP_PUSHDATA4";
+    case OP_1NEGATE                : return "-1";
+    case OP_RESERVED               : return "OP_RESERVED";
+    case OP_1                      : return "1";
+    case OP_2                      : return "2";
+    case OP_3                      : return "3";
+    case OP_4                      : return "4";
+    case OP_5                      : return "5";
+    case OP_6                      : return "6";
+    case OP_7                      : return "7";
+    case OP_8                      : return "8";
+    case OP_9                      : return "9";
+    case OP_10                     : return "10";
+    case OP_11                     : return "11";
+    case OP_12                     : return "12";
+    case OP_13                     : return "13";
+    case OP_14                     : return "14";
+    case OP_15                     : return "15";
+    case OP_16                     : return "16";
+
+    // control
+    case OP_NOP                    : return "OP_NOP";
+    case OP_VER                    : return "OP_VER";
+    case OP_IF                     : return "OP_IF";
+    case OP_NOTIF                  : return "OP_NOTIF";
+    case OP_VERIF                  : return "OP_VERIF";
+    case OP_VERNOTIF               : return "OP_VERNOTIF";
+    case OP_ELSE                   : return "OP_ELSE";
+    case OP_ENDIF                  : return "OP_ENDIF";
+    case OP_VERIFY                 : return "OP_VERIFY";
+    case OP_RETURN                 : return "OP_RETURN";
+
+    // stack ops
+    case OP_TOALTSTACK             : return "OP_TOALTSTACK";
+    case OP_FROMALTSTACK           : return "OP_FROMALTSTACK";
+    case OP_2DROP                  : return "OP_2DROP";
+    case OP_2DUP                   : return "OP_2DUP";
+    case OP_3DUP                   : return "OP_3DUP";
+    case OP_2OVER                  : return "OP_2OVER";
+    case OP_2ROT                   : return "OP_2ROT";
+    case OP_2SWAP                  : return "OP_2SWAP";
+    case OP_IFDUP                  : return "OP_IFDUP";
+    case OP_DEPTH                  : return "OP_DEPTH";
+    case OP_DROP                   : return "OP_DROP";
+    case OP_DUP                    : return "OP_DUP";
+    case OP_NIP                    : return "OP_NIP";
+    case OP_OVER                   : return "OP_OVER";
+    case OP_PICK                   : return "OP_PICK";
+    case OP_ROLL                   : return "OP_ROLL";
+    case OP_ROT                    : return "OP_ROT";
+    case OP_SWAP                   : return "OP_SWAP";
+    case OP_TUCK                   : return "OP_TUCK";
+
+    // splice ops
+    case OP_CAT                    : return "OP_CAT";
+    case OP_SUBSTR                 : return "OP_SUBSTR";
+    case OP_LEFT                   : return "OP_LEFT";
+    case OP_RIGHT                  : return "OP_RIGHT";
+    case OP_SIZE                   : return "OP_SIZE";
+
+    // bit logic
+    case OP_INVERT                 : return "OP_INVERT";
+    case OP_AND                    : return "OP_AND";
+    case OP_OR                     : return "OP_OR";
+    case OP_XOR                    : return "OP_XOR";
+    case OP_EQUAL                  : return "OP_EQUAL";
+    case OP_EQUALVERIFY            : return "OP_EQUALVERIFY";
+    case OP_RESERVED1              : return "OP_RESERVED1";
+    case OP_RESERVED2              : return "OP_RESERVED2";
+
+    // numeric
+    case OP_1ADD                   : return "OP_1ADD";
+    case OP_1SUB                   : return "OP_1SUB";
+    case OP_2MUL                   : return "OP_2MUL";
+    case OP_2DIV                   : return "OP_2DIV";
+    case OP_NEGATE                 : return "OP_NEGATE";
+    case OP_ABS                    : return "OP_ABS";
+    case OP_NOT                    : return "OP_NOT";
+    case OP_0NOTEQUAL              : return "OP_0NOTEQUAL";
+    case OP_ADD                    : return "OP_ADD";
+    case OP_SUB                    : return "OP_SUB";
+    case OP_MUL                    : return "OP_MUL";
+    case OP_DIV                    : return "OP_DIV";
+    case OP_MOD                    : return "OP_MOD";
+    case OP_LSHIFT                 : return "OP_LSHIFT";
+    case OP_RSHIFT                 : return "OP_RSHIFT";
+    case OP_BOOLAND                : return "OP_BOOLAND";
+    case OP_BOOLOR                 : return "OP_BOOLOR";
+    case OP_NUMEQUAL               : return "OP_NUMEQUAL";
+    case OP_NUMEQUALVERIFY         : return "OP_NUMEQUALVERIFY";
+    case OP_NUMNOTEQUAL            : return "OP_NUMNOTEQUAL";
+    case OP_LESSTHAN               : return "OP_LESSTHAN";
+    case OP_GREATERTHAN            : return "OP_GREATERTHAN";
+    case OP_LESSTHANOREQUAL        : return "OP_LESSTHANOREQUAL";
+    case OP_GREATERTHANOREQUAL     : return "OP_GREATERTHANOREQUAL";
+    case OP_MIN                    : return "OP_MIN";
+    case OP_MAX                    : return "OP_MAX";
+    case OP_WITHIN                 : return "OP_WITHIN";
+
+    // crypto
+    case OP_RIPEMD160              : return "OP_RIPEMD160";
+    case OP_SHA1                   : return "OP_SHA1";
+    case OP_SHA256                 : return "OP_SHA256";
+    case OP_HASH160                : return "OP_HASH160";
+    case OP_HASH256                : return "OP_HASH256";
+    case OP_CODESEPARATOR          : return "OP_CODESEPARATOR";
+    case OP_CHECKSIG               : return "OP_CHECKSIG";
+    case OP_CHECKSIGVERIFY         : return "OP_CHECKSIGVERIFY";
+    case OP_CHECKMULTISIG          : return "OP_CHECKMULTISIG";
+    case OP_CHECKMULTISIGVERIFY    : return "OP_CHECKMULTISIGVERIFY";
+
+
+
+    // multi-byte opcodes
+    case OP_SINGLEBYTE_END         : return "OP_SINGLEBYTE_END";
+    case OP_DOUBLEBYTE_BEGIN       : return "OP_DOUBLEBYTE_BEGIN";
+    case OP_PUBKEY                 : return "OP_PUBKEY";
+    case OP_PUBKEYHASH             : return "OP_PUBKEYHASH";
+
+
+
+    case OP_INVALIDOPCODE          : return "OP_INVALIDOPCODE";
+    default:
+        return "UNKNOWN_OPCODE";
+    }
+};
+
+
+
+
+inline string ValueString(const vector<unsigned char>& vch)
+{
+    if (vch.size() <= 4)
+        return strprintf("%d", CBigNum(vch).getint());
+    else
+        return HexNumStr(vch.begin(), vch.end());
+        //return string("(") + HexStr(vch.begin(), vch.end()) + string(")");
+}
+
+inline string StackString(const vector<vector<unsigned char> >& vStack)
+{
+    string str;
+    foreach(const vector<unsigned char>& vch, vStack)
+    {
+        if (!str.empty())
+            str += " ";
+        str += ValueString(vch);
+    }
+    return str;
+}
+
+
+
+
+
+
+
+
+
+class CScript : public vector<unsigned char>
+{
+protected:
+    CScript& push_int64(int64 n)
+    {
+        if (n == -1 || (n >= 1 && n <= 16))
+        {
+            push_back(n + (OP_1 - 1));
+        }
+        else
+        {
+            CBigNum bn(n);
+            *this << bn.getvch();
+        }
+        return (*this);
+    }
+
+    CScript& push_uint64(uint64 n)
+    {
+        if (n == -1 || (n >= 1 && n <= 16))
+        {
+            push_back(n + (OP_1 - 1));
+        }
+        else
+        {
+            CBigNum bn(n);
+            *this << bn.getvch();
+        }
+        return (*this);
+    }
+
+public:
+    CScript() { }
+    CScript(const CScript& b) : vector<unsigned char>(b.begin(), b.end()) { }
+    CScript(const_iterator pbegin, const_iterator pend) : vector<unsigned char>(pbegin, pend) { }
+#ifndef _MSC_VER
+    CScript(const unsigned char* pbegin, const unsigned char* pend) : vector<unsigned char>(pbegin, pend) { }
+#endif
+
+    CScript& operator+=(const CScript& b)
+    {
+        insert(end(), b.begin(), b.end());
+        return *this;
+    }
+
+    friend CScript operator+(const CScript& a, const CScript& b)
+    {
+        CScript ret = a;
+        ret += b;
+        return (ret);
+    }
+
+
+    explicit CScript(char b)           { operator<<(b); }
+    explicit CScript(short b)          { operator<<(b); }
+    explicit CScript(int b)            { operator<<(b); }
+    explicit CScript(long b)           { operator<<(b); }
+    explicit CScript(int64 b)          { operator<<(b); }
+    explicit CScript(unsigned char b)  { operator<<(b); }
+    explicit CScript(unsigned int b)   { operator<<(b); }
+    explicit CScript(unsigned short b) { operator<<(b); }
+    explicit CScript(unsigned long b)  { operator<<(b); }
+    explicit CScript(uint64 b)         { operator<<(b); }
+
+    explicit CScript(opcodetype b)     { operator<<(b); }
+    explicit CScript(const uint256& b) { operator<<(b); }
+    explicit CScript(const CBigNum& b) { operator<<(b); }
+    explicit CScript(const vector<unsigned char>& b) { operator<<(b); }
+
+
+    CScript& operator<<(char b)           { return (push_int64(b)); }
+    CScript& operator<<(short b)          { return (push_int64(b)); }
+    CScript& operator<<(int b)            { return (push_int64(b)); }
+    CScript& operator<<(long b)           { return (push_int64(b)); }
+    CScript& operator<<(int64 b)          { return (push_int64(b)); }
+    CScript& operator<<(unsigned char b)  { return (push_uint64(b)); }
+    CScript& operator<<(unsigned int b)   { return (push_uint64(b)); }
+    CScript& operator<<(unsigned short b) { return (push_uint64(b)); }
+    CScript& operator<<(unsigned long b)  { return (push_uint64(b)); }
+    CScript& operator<<(uint64 b)         { return (push_uint64(b)); }
+
+    CScript& operator<<(opcodetype opcode)
+    {
+        if (opcode <= OP_SINGLEBYTE_END)
+        {
+            insert(end(), (unsigned char)opcode);
+        }
+        else
+        {
+            assert(opcode >= OP_DOUBLEBYTE_BEGIN);
+            insert(end(), (unsigned char)(opcode >> 8));
+            insert(end(), (unsigned char)(opcode & 0xFF));
+        }
+        return (*this);
+    }
+
+    CScript& operator<<(const uint160& b)
+    {
+        insert(end(), sizeof(b));
+        insert(end(), (unsigned char*)&b, (unsigned char*)&b + sizeof(b));
+        return (*this);
+    }
+
+    CScript& operator<<(const uint256& b)
+    {
+        insert(end(), sizeof(b));
+        insert(end(), (unsigned char*)&b, (unsigned char*)&b + sizeof(b));
+        return (*this);
+    }
+
+    CScript& operator<<(const CBigNum& b)
+    {
+        *this << b.getvch();
+        return (*this);
+    }
+
+    CScript& operator<<(const vector<unsigned char>& b)
+    {
+        if (b.size() < OP_PUSHDATA1)
+        {
+            insert(end(), (unsigned char)b.size());
+        }
+        else if (b.size() <= 0xff)
+        {
+            insert(end(), OP_PUSHDATA1);
+            insert(end(), (unsigned char)b.size());
+        }
+        else
+        {
+            insert(end(), OP_PUSHDATA2);
+            unsigned short nSize = b.size();
+            insert(end(), (unsigned char*)&nSize, (unsigned char*)&nSize + sizeof(nSize));
+        }
+        insert(end(), b.begin(), b.end());
+        return (*this);
+    }
+
+    CScript& operator<<(const CScript& b)
+    {
+        // I'm not sure if this should push the script or concatenate scripts.
+        // If there's ever a use for pushing a script onto a script, delete this member fn
+        assert(("warning: pushing a CScript onto a CScript with << is probably not intended, use + to concatenate", false));
+        return (*this);
+    }
+
+
+    bool GetOp(iterator& pc, opcodetype& opcodeRet, vector<unsigned char>& vchRet)
+    {
+         // This is why people hate C++
+         const_iterator pc2 = pc;
+         bool fRet = GetOp(pc2, opcodeRet, vchRet);
+         pc = begin() + (pc2 - begin());
+         return fRet;
+    }
+
+    bool GetOp(const_iterator& pc, opcodetype& opcodeRet, vector<unsigned char>& vchRet) const
+    {
+        opcodeRet = OP_INVALIDOPCODE;
+        vchRet.clear();
+        if (pc >= end())
+            return false;
+
+        // Read instruction
+        unsigned int opcode = *pc++;
+        if (opcode >= OP_SINGLEBYTE_END)
+        {
+            if (pc + 1 > end())
+                return false;
+            opcode <<= 8;
+            opcode |= *pc++;
+        }
+
+        // Immediate operand
+        if (opcode <= OP_PUSHDATA4)
+        {
+            unsigned int nSize = opcode;
+            if (opcode == OP_PUSHDATA1)
+            {
+                if (pc + 1 > end())
+                    return false;
+                nSize = *pc++;
+            }
+            else if (opcode == OP_PUSHDATA2)
+            {
+                if (pc + 2 > end())
+                    return false;
+                nSize = 0;
+                memcpy(&nSize, &pc[0], 2);
+                pc += 2;
+            }
+            else if (opcode == OP_PUSHDATA4)
+            {
+                if (pc + 4 > end())
+                    return false;
+                memcpy(&nSize, &pc[0], 4);
+                pc += 4;
+            }
+            if (pc + nSize > end())
+                return false;
+            vchRet.assign(pc, pc + nSize);
+            pc += nSize;
+        }
+
+        opcodeRet = (opcodetype)opcode;
+        return true;
+    }
+
+
+    void FindAndDelete(const CScript& b)
+    {
+        iterator pc = begin();
+        opcodetype opcode;
+        vector<unsigned char> vchPushValue;
+        int count = 0;
+        do
+        {
+            while (end() - pc >= b.size() && memcmp(&pc[0], &b[0], b.size()) == 0)
+            {
+                erase(pc, pc + b.size());
+                count++;
+            }
+        }
+        while (GetOp(pc, opcode, vchPushValue));
+        //printf("FindAndDeleted deleted %d items\n", count); /// debug
+    }
+
+
+    void PrintHex() const
+    {
+        printf("CScript(%s)\n", HexStr(begin(), end()).c_str());
+    }
+
+    string ToString() const
+    {
+        string str;
+        opcodetype opcode;
+        vector<unsigned char> vch;
+        const_iterator it = begin();
+        while (GetOp(it, opcode, vch))
+        {
+            if (!str.empty())
+                str += " ";
+            if (opcode <= OP_PUSHDATA4)
+                str += ValueString(vch);
+            else
+                str += GetOpName(opcode);
+        }
+        return str;
+    }
+
+    void print() const
+    {
+        printf("%s\n", ToString().c_str());
+    }
+};
+
+
+
+
+
+
+
+
+bool EvalScript(const CScript& script, const CTransaction& txTo, unsigned int nIn, int nHashType=0,
+                vector<vector<unsigned char> >* pvStackRet=NULL);
+uint256 SignatureHash(CScript scriptCode, const CTransaction& txTo, unsigned int nIn, int nHashType);
+bool IsMine(const CScript& scriptPubKey);
+bool ExtractPubKey(const CScript& scriptPubKey, bool fMineOnly, vector<unsigned char>& vchPubKeyRet);
+bool ExtractHash160(const CScript& scriptPubKey, uint160& hash160Ret);
+bool SignSignature(const CTransaction& txFrom, CTransaction& txTo, unsigned int nIn, int nHashType=SIGHASH_ALL, CScript scriptPrereq=CScript());
+bool VerifySignature(const CTransaction& txFrom, const CTransaction& txTo, unsigned int nIn, int nHashType=0);
new file mode 100644
--- /dev/null
+++ b/serialize.h
@@ -0,0 +1,1158 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include <vector>
+#include <map>
+#include <boost/type_traits/is_fundamental.hpp>
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+typedef __int64  int64;
+typedef unsigned __int64  uint64;
+#else
+typedef long long  int64;
+typedef unsigned long long  uint64;
+#endif
+#if defined(_MSC_VER) && _MSC_VER < 1300
+#define for  if (false) ; else for
+#endif
+class CScript;
+class CDataStream;
+class CAutoFile;
+
+static const int VERSION = 105;
+
+
+
+
+
+/////////////////////////////////////////////////////////////////
+//
+// Templates for serializing to anything that looks like a stream,
+// i.e. anything that supports .read(char*, int) and .write(char*, int)
+//
+
+enum
+{
+    // primary actions
+    SER_NETWORK         = (1 << 0),
+    SER_DISK            = (1 << 1),
+    SER_GETHASH         = (1 << 2),
+
+    // modifiers
+    SER_SKIPSIG         = (1 << 16),
+    SER_BLOCKHEADERONLY = (1 << 17),
+};
+
+#define IMPLEMENT_SERIALIZE(statements)    \
+    unsigned int GetSerializeSize(int nType=0, int nVersion=VERSION) const  \
+    {                                           \
+        CSerActionGetSerializeSize ser_action;  \
+        const bool fGetSize = true;             \
+        const bool fWrite = false;              \
+        const bool fRead = false;               \
+        unsigned int nSerSize = 0;              \
+        ser_streamplaceholder s;                \
+        s.nType = nType;                        \
+        s.nVersion = nVersion;                  \
+        {statements}                            \
+        return nSerSize;                        \
+    }                                           \
+    template<typename Stream>                   \
+    void Serialize(Stream& s, int nType=0, int nVersion=VERSION) const  \
+    {                                           \
+        CSerActionSerialize ser_action;         \
+        const bool fGetSize = false;            \
+        const bool fWrite = true;               \
+        const bool fRead = false;               \
+        unsigned int nSerSize = 0;              \
+        {statements}                            \
+    }                                           \
+    template<typename Stream>                   \
+    void Unserialize(Stream& s, int nType=0, int nVersion=VERSION)  \
+    {                                           \
+        CSerActionUnserialize ser_action;       \
+        const bool fGetSize = false;            \
+        const bool fWrite = false;              \
+        const bool fRead = true;                \
+        unsigned int nSerSize = 0;              \
+        {statements}                            \
+    }
+
+#define READWRITE(obj)      (nSerSize += ::SerReadWrite(s, (obj), nType, nVersion, ser_action))
+
+
+
+
+
+
+//
+// Basic types
+//
+#define WRITEDATA(s, obj)   s.write((char*)&(obj), sizeof(obj))
+#define READDATA(s, obj)    s.read((char*)&(obj), sizeof(obj))
+
+inline unsigned int GetSerializeSize(char a,           int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(signed char a,    int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(unsigned char a,  int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(signed short a,   int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(unsigned short a, int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(signed int a,     int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(unsigned int a,   int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(signed long a,    int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(unsigned long a,  int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(int64 a,          int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(uint64 a,         int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(float a,          int, int=0) { return sizeof(a); }
+inline unsigned int GetSerializeSize(double a,         int, int=0) { return sizeof(a); }
+
+template<typename Stream> inline void Serialize(Stream& s, char a,           int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, signed char a,    int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, unsigned char a,  int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, signed short a,   int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, unsigned short a, int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, signed int a,     int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, unsigned int a,   int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, signed long a,    int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, unsigned long a,  int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, int64 a,          int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, uint64 a,         int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, float a,          int, int=0) { WRITEDATA(s, a); }
+template<typename Stream> inline void Serialize(Stream& s, double a,         int, int=0) { WRITEDATA(s, a); }
+
+template<typename Stream> inline void Unserialize(Stream& s, char& a,           int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, signed char& a,    int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, unsigned char& a,  int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, signed short& a,   int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, unsigned short& a, int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, signed int& a,     int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, unsigned int& a,   int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, signed long& a,    int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, unsigned long& a,  int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, int64& a,          int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, uint64& a,         int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, float& a,          int, int=0) { READDATA(s, a); }
+template<typename Stream> inline void Unserialize(Stream& s, double& a,         int, int=0) { READDATA(s, a); }
+
+inline unsigned int GetSerializeSize(bool a, int, int=0)                          { return sizeof(char); }
+template<typename Stream> inline void Serialize(Stream& s, bool a, int, int=0)    { char f=a; WRITEDATA(s, f); }
+template<typename Stream> inline void Unserialize(Stream& s, bool& a, int, int=0) { char f; READDATA(s, f); a=f; }
+
+
+
+
+
+
+//
+// Compact size
+//  size <  253        -- 1 byte
+//  size <= USHRT_MAX  -- 3 bytes  (253 + 2 bytes)
+//  size <= UINT_MAX   -- 5 bytes  (254 + 4 bytes)
+//  size >  UINT_MAX   -- 9 bytes  (255 + 8 bytes)
+//
+inline unsigned int GetSizeOfCompactSize(uint64 nSize)
+{
+    if (nSize < UCHAR_MAX-2)     return sizeof(unsigned char);
+    else if (nSize <= USHRT_MAX) return sizeof(unsigned char) + sizeof(unsigned short);
+    else if (nSize <= UINT_MAX)  return sizeof(unsigned char) + sizeof(unsigned int);
+    else                         return sizeof(unsigned char) + sizeof(uint64);
+}
+
+template<typename Stream>
+void WriteCompactSize(Stream& os, uint64 nSize)
+{
+    if (nSize < UCHAR_MAX-2)
+    {
+        unsigned char chSize = nSize;
+        WRITEDATA(os, chSize);
+    }
+    else if (nSize <= USHRT_MAX)
+    {
+        unsigned char chSize = UCHAR_MAX-2;
+        unsigned short xSize = nSize;
+        WRITEDATA(os, chSize);
+        WRITEDATA(os, xSize);
+    }
+    else if (nSize <= UINT_MAX)
+    {
+        unsigned char chSize = UCHAR_MAX-1;
+        unsigned int xSize = nSize;
+        WRITEDATA(os, chSize);
+        WRITEDATA(os, xSize);
+    }
+    else
+    {
+        unsigned char chSize = UCHAR_MAX;
+        WRITEDATA(os, chSize);
+        WRITEDATA(os, nSize);
+    }
+    return;
+}
+
+template<typename Stream>
+uint64 ReadCompactSize(Stream& is)
+{
+    unsigned char chSize;
+    READDATA(is, chSize);
+    if (chSize < UCHAR_MAX-2)
+    {
+        return chSize;
+    }
+    else if (chSize == UCHAR_MAX-2)
+    {
+        unsigned short nSize;
+        READDATA(is, nSize);
+        return nSize;
+    }
+    else if (chSize == UCHAR_MAX-1)
+    {
+        unsigned int nSize;
+        READDATA(is, nSize);
+        return nSize;
+    }
+    else
+    {
+        uint64 nSize;
+        READDATA(is, nSize);
+        return nSize;
+    }
+}
+
+
+
+//
+// Wrapper for serializing arrays and POD
+// There's a clever template way to make arrays serialize normally, but MSVC6 doesn't support it
+//
+#define FLATDATA(obj)   REF(CFlatData((char*)&(obj), (char*)&(obj) + sizeof(obj)))
+class CFlatData
+{
+protected:
+    char* pbegin;
+    char* pend;
+public:
+    CFlatData(void* pbeginIn, void* pendIn) : pbegin((char*)pbeginIn), pend((char*)pendIn) { }
+    char* begin() { return pbegin; }
+    const char* begin() const { return pbegin; }
+    char* end() { return pend; }
+    const char* end() const { return pend; }
+
+    unsigned int GetSerializeSize(int, int=0) const
+    {
+        return pend - pbegin;
+    }
+
+    template<typename Stream>
+    void Serialize(Stream& s, int, int=0) const
+    {
+        s.write(pbegin, pend - pbegin);
+    }
+
+    template<typename Stream>
+    void Unserialize(Stream& s, int, int=0)
+    {
+        s.read(pbegin, pend - pbegin);
+    }
+};
+
+
+
+//
+// string stored as a fixed length field
+//
+template<std::size_t LEN>
+class CFixedFieldString
+{
+protected:
+    const string* pcstr;
+    string* pstr;
+public:
+    explicit CFixedFieldString(const string& str) : pcstr(&str), pstr(NULL) { }
+    explicit CFixedFieldString(string& str) : pcstr(&str), pstr(&str) { }
+
+    unsigned int GetSerializeSize(int, int=0) const
+    {
+        return LEN;
+    }
+
+    template<typename Stream>
+    void Serialize(Stream& s, int, int=0) const
+    {
+        char pszBuf[LEN];
+        strncpy(pszBuf, pcstr->c_str(), LEN);
+        s.write(pszBuf, LEN);
+    }
+
+    template<typename Stream>
+    void Unserialize(Stream& s, int, int=0)
+    {
+        if (pstr == NULL)
+            throw std::ios_base::failure("CFixedFieldString::Unserialize : trying to unserialize to const string");
+        char pszBuf[LEN+1];
+        s.read(pszBuf, LEN);
+        pszBuf[LEN] = '\0';
+        *pstr = pszBuf;
+    }
+};
+
+
+
+
+
+//
+// Forward declarations
+//
+
+// string
+template<typename C> unsigned int GetSerializeSize(const basic_string<C>& str, int, int=0);
+template<typename Stream, typename C> void Serialize(Stream& os, const basic_string<C>& str, int, int=0);
+template<typename Stream, typename C> void Unserialize(Stream& is, basic_string<C>& str, int, int=0);
+
+// vector
+template<typename T, typename A> unsigned int GetSerializeSize_impl(const std::vector<T, A>& v, int nType, int nVersion, const boost::true_type&);
+template<typename T, typename A> unsigned int GetSerializeSize_impl(const std::vector<T, A>& v, int nType, int nVersion, const boost::false_type&);
+template<typename T, typename A> inline unsigned int GetSerializeSize(const std::vector<T, A>& v, int nType, int nVersion=VERSION);
+template<typename Stream, typename T, typename A> void Serialize_impl(Stream& os, const std::vector<T, A>& v, int nType, int nVersion, const boost::true_type&);
+template<typename Stream, typename T, typename A> void Serialize_impl(Stream& os, const std::vector<T, A>& v, int nType, int nVersion, const boost::false_type&);
+template<typename Stream, typename T, typename A> inline void Serialize(Stream& os, const std::vector<T, A>& v, int nType, int nVersion=VERSION);
+template<typename Stream, typename T, typename A> void Unserialize_impl(Stream& is, std::vector<T, A>& v, int nType, int nVersion, const boost::true_type&);
+template<typename Stream, typename T, typename A> void Unserialize_impl(Stream& is, std::vector<T, A>& v, int nType, int nVersion, const boost::false_type&);
+template<typename Stream, typename T, typename A> inline void Unserialize(Stream& is, std::vector<T, A>& v, int nType, int nVersion=VERSION);
+
+// others derived from vector
+extern inline unsigned int GetSerializeSize(const CScript& v, int nType, int nVersion=VERSION);
+template<typename Stream> void Serialize(Stream& os, const CScript& v, int nType, int nVersion=VERSION);
+template<typename Stream> void Unserialize(Stream& is, CScript& v, int nType, int nVersion=VERSION);
+
+// pair
+template<typename K, typename T> unsigned int GetSerializeSize(const std::pair<K, T>& item, int nType, int nVersion=VERSION);
+template<typename Stream, typename K, typename T> void Serialize(Stream& os, const std::pair<K, T>& item, int nType, int nVersion=VERSION);
+template<typename Stream, typename K, typename T> void Unserialize(Stream& is, std::pair<K, T>& item, int nType, int nVersion=VERSION);
+
+// map
+template<typename K, typename T, typename Pred, typename A> unsigned int GetSerializeSize(const std::map<K, T, Pred, A>& m, int nType, int nVersion=VERSION);
+template<typename Stream, typename K, typename T, typename Pred, typename A> void Serialize(Stream& os, const std::map<K, T, Pred, A>& m, int nType, int nVersion=VERSION);
+template<typename Stream, typename K, typename T, typename Pred, typename A> void Unserialize(Stream& is, std::map<K, T, Pred, A>& m, int nType, int nVersion=VERSION);
+
+// set
+template<typename K, typename Pred, typename A> unsigned int GetSerializeSize(const std::set<K, Pred, A>& m, int nType, int nVersion=VERSION);
+template<typename Stream, typename K, typename Pred, typename A> void Serialize(Stream& os, const std::set<K, Pred, A>& m, int nType, int nVersion=VERSION);
+template<typename Stream, typename K, typename Pred, typename A> void Unserialize(Stream& is, std::set<K, Pred, A>& m, int nType, int nVersion=VERSION);
+
+
+
+
+
+//
+// If none of the specialized versions above matched, default to calling member function.
+// "int nType" is changed to "long nType" to keep from getting an ambiguous overload error.
+// The compiler will only cast int to long if none of the other templates matched.
+// Thanks to Boost serialization for this idea.
+//
+template<typename T>
+inline unsigned int GetSerializeSize(const T& a, long nType, int nVersion=VERSION)
+{
+    return a.GetSerializeSize((int)nType, nVersion);
+}
+
+template<typename Stream, typename T>
+inline void Serialize(Stream& os, const T& a, long nType, int nVersion=VERSION)
+{
+    a.Serialize(os, (int)nType, nVersion);
+}
+
+template<typename Stream, typename T>
+inline void Unserialize(Stream& is, T& a, long nType, int nVersion=VERSION)
+{
+    a.Unserialize(is, (int)nType, nVersion);
+}
+
+
+
+
+
+//
+// string
+//
+template<typename C>
+unsigned int GetSerializeSize(const basic_string<C>& str, int, int)
+{
+    return GetSizeOfCompactSize(str.size()) + str.size() * sizeof(str[0]);
+}
+
+template<typename Stream, typename C>
+void Serialize(Stream& os, const basic_string<C>& str, int, int)
+{
+    WriteCompactSize(os, str.size());
+    if (!str.empty())
+        os.write((char*)&str[0], str.size() * sizeof(str[0]));
+}
+
+template<typename Stream, typename C>
+void Unserialize(Stream& is, basic_string<C>& str, int, int)
+{
+    unsigned int nSize = ReadCompactSize(is);
+    str.resize(nSize);
+    if (nSize != 0)
+        is.read((char*)&str[0], nSize * sizeof(str[0]));
+}
+
+
+
+//
+// vector
+//
+template<typename T, typename A>
+unsigned int GetSerializeSize_impl(const std::vector<T, A>& v, int nType, int nVersion, const boost::true_type&)
+{
+    return (GetSizeOfCompactSize(v.size()) + v.size() * sizeof(T));
+}
+
+template<typename T, typename A>
+unsigned int GetSerializeSize_impl(const std::vector<T, A>& v, int nType, int nVersion, const boost::false_type&)
+{
+    unsigned int nSize = GetSizeOfCompactSize(v.size());
+    for (typename std::vector<T, A>::const_iterator vi = v.begin(); vi != v.end(); ++vi)
+        nSize += GetSerializeSize((*vi), nType, nVersion);
+    return nSize;
+}
+
+template<typename T, typename A>
+inline unsigned int GetSerializeSize(const std::vector<T, A>& v, int nType, int nVersion)
+{
+    return GetSerializeSize_impl(v, nType, nVersion, boost::is_fundamental<T>());
+}
+
+
+template<typename Stream, typename T, typename A>
+void Serialize_impl(Stream& os, const std::vector<T, A>& v, int nType, int nVersion, const boost::true_type&)
+{
+    WriteCompactSize(os, v.size());
+    if (!v.empty())
+        os.write((char*)&v[0], v.size() * sizeof(T));
+}
+
+template<typename Stream, typename T, typename A>
+void Serialize_impl(Stream& os, const std::vector<T, A>& v, int nType, int nVersion, const boost::false_type&)
+{
+    WriteCompactSize(os, v.size());
+    for (typename std::vector<T, A>::const_iterator vi = v.begin(); vi != v.end(); ++vi)
+        ::Serialize(os, (*vi), nType, nVersion);
+}
+
+template<typename Stream, typename T, typename A>
+inline void Serialize(Stream& os, const std::vector<T, A>& v, int nType, int nVersion)
+{
+    Serialize_impl(os, v, nType, nVersion, boost::is_fundamental<T>());
+}
+
+
+template<typename Stream, typename T, typename A>
+void Unserialize_impl(Stream& is, std::vector<T, A>& v, int nType, int nVersion, const boost::true_type&)
+{
+    //unsigned int nSize = ReadCompactSize(is);
+    //v.resize(nSize);
+    //is.read((char*)&v[0], nSize * sizeof(T));
+
+    // Limit size per read so bogus size value won't cause out of memory
+    v.clear();
+    unsigned int nSize = ReadCompactSize(is);
+    unsigned int i = 0;
+    while (i < nSize)
+    {
+        unsigned int blk = min(nSize - i, 1 + 4999999 / sizeof(T));
+        v.resize(i + blk);
+        is.read((char*)&v[i], blk * sizeof(T));
+        i += blk;
+    }
+}
+
+template<typename Stream, typename T, typename A>
+void Unserialize_impl(Stream& is, std::vector<T, A>& v, int nType, int nVersion, const boost::false_type&)
+{
+    //unsigned int nSize = ReadCompactSize(is);
+    //v.resize(nSize);
+    //for (std::vector<T, A>::iterator vi = v.begin(); vi != v.end(); ++vi)
+    //    Unserialize(is, (*vi), nType, nVersion);
+
+    v.clear();
+    unsigned int nSize = ReadCompactSize(is);
+    unsigned int i = 0;
+    unsigned int nMid = 0;
+    while (nMid < nSize)
+    {
+        nMid += 5000000 / sizeof(T);
+        if (nMid > nSize)
+            nMid = nSize;
+        v.resize(nMid);
+        for (; i < nMid; i++)
+            Unserialize(is, v[i], nType, nVersion);
+    }
+}
+
+template<typename Stream, typename T, typename A>
+inline void Unserialize(Stream& is, std::vector<T, A>& v, int nType, int nVersion)
+{
+    Unserialize_impl(is, v, nType, nVersion, boost::is_fundamental<T>());
+}
+
+
+
+//
+// others derived from vector
+//
+inline unsigned int GetSerializeSize(const CScript& v, int nType, int nVersion)
+{
+    return GetSerializeSize((const vector<unsigned char>&)v, nType, nVersion);
+}
+
+template<typename Stream>
+void Serialize(Stream& os, const CScript& v, int nType, int nVersion)
+{
+    Serialize(os, (const vector<unsigned char>&)v, nType, nVersion);
+}
+
+template<typename Stream>
+void Unserialize(Stream& is, CScript& v, int nType, int nVersion)
+{
+    Unserialize(is, (vector<unsigned char>&)v, nType, nVersion);
+}
+
+
+
+//
+// pair
+//
+template<typename K, typename T>
+unsigned int GetSerializeSize(const std::pair<K, T>& item, int nType, int nVersion)
+{
+    return GetSerializeSize(item.first, nType, nVersion) + GetSerializeSize(item.second, nType, nVersion);
+}
+
+template<typename Stream, typename K, typename T>
+void Serialize(Stream& os, const std::pair<K, T>& item, int nType, int nVersion)
+{
+    Serialize(os, item.first, nType, nVersion);
+    Serialize(os, item.second, nType, nVersion);
+}
+
+template<typename Stream, typename K, typename T>
+void Unserialize(Stream& is, std::pair<K, T>& item, int nType, int nVersion)
+{
+    Unserialize(is, item.first, nType, nVersion);
+    Unserialize(is, item.second, nType, nVersion);
+}
+
+
+
+//
+// map
+//
+template<typename K, typename T, typename Pred, typename A>
+unsigned int GetSerializeSize(const std::map<K, T, Pred, A>& m, int nType, int nVersion)
+{
+    unsigned int nSize = GetSizeOfCompactSize(m.size());
+    for (typename std::map<K, T, Pred, A>::const_iterator mi = m.begin(); mi != m.end(); ++mi)
+        nSize += GetSerializeSize((*mi), nType, nVersion);
+    return nSize;
+}
+
+template<typename Stream, typename K, typename T, typename Pred, typename A>
+void Serialize(Stream& os, const std::map<K, T, Pred, A>& m, int nType, int nVersion)
+{
+    WriteCompactSize(os, m.size());
+    for (typename std::map<K, T, Pred, A>::const_iterator mi = m.begin(); mi != m.end(); ++mi)
+        Serialize(os, (*mi), nType, nVersion);
+}
+
+template<typename Stream, typename K, typename T, typename Pred, typename A>
+void Unserialize(Stream& is, std::map<K, T, Pred, A>& m, int nType, int nVersion)
+{
+    m.clear();
+    unsigned int nSize = ReadCompactSize(is);
+    typename std::map<K, T, Pred, A>::iterator mi = m.begin();
+    for (unsigned int i = 0; i < nSize; i++)
+    {
+        pair<K, T> item;
+        Unserialize(is, item, nType, nVersion);
+        mi = m.insert(mi, item);
+    }
+}
+
+
+
+//
+// set
+//
+template<typename K, typename Pred, typename A>
+unsigned int GetSerializeSize(const std::set<K, Pred, A>& m, int nType, int nVersion)
+{
+    unsigned int nSize = GetSizeOfCompactSize(m.size());
+    for (typename std::set<K, Pred, A>::const_iterator it = m.begin(); it != m.end(); ++it)
+        nSize += GetSerializeSize((*it), nType, nVersion);
+    return nSize;
+}
+
+template<typename Stream, typename K, typename Pred, typename A>
+void Serialize(Stream& os, const std::set<K, Pred, A>& m, int nType, int nVersion)
+{
+    WriteCompactSize(os, m.size());
+    for (typename std::set<K, Pred, A>::const_iterator it = m.begin(); it != m.end(); ++it)
+        Serialize(os, (*it), nType, nVersion);
+}
+
+template<typename Stream, typename K, typename Pred, typename A>
+void Unserialize(Stream& is, std::set<K, Pred, A>& m, int nType, int nVersion)
+{
+    m.clear();
+    unsigned int nSize = ReadCompactSize(is);
+    typename std::set<K, Pred, A>::iterator it = m.begin();
+    for (unsigned int i = 0; i < nSize; i++)
+    {
+        K key;
+        Unserialize(is, key, nType, nVersion);
+        it = m.insert(it, key);
+    }
+}
+
+
+
+//
+// Support for IMPLEMENT_SERIALIZE and READWRITE macro
+//
+class CSerActionGetSerializeSize { };
+class CSerActionSerialize { };
+class CSerActionUnserialize { };
+
+template<typename Stream, typename T>
+inline unsigned int SerReadWrite(Stream& s, const T& obj, int nType, int nVersion, CSerActionGetSerializeSize ser_action)
+{
+    return ::GetSerializeSize(obj, nType, nVersion);
+}
+
+template<typename Stream, typename T>
+inline unsigned int SerReadWrite(Stream& s, const T& obj, int nType, int nVersion, CSerActionSerialize ser_action)
+{
+    ::Serialize(s, obj, nType, nVersion);
+    return 0;
+}
+
+template<typename Stream, typename T>
+inline unsigned int SerReadWrite(Stream& s, T& obj, int nType, int nVersion, CSerActionUnserialize ser_action)
+{
+    ::Unserialize(s, obj, nType, nVersion);
+    return 0;
+}
+
+struct ser_streamplaceholder
+{
+    int nType;
+    int nVersion;
+};
+
+
+
+
+
+
+
+
+
+//
+// Allocator that clears its contents before deletion
+//
+template<typename T>
+struct secure_allocator : public std::allocator<T>
+{
+    // MSVC8 default copy constructor is broken
+    typedef std::allocator<T> base;
+    typedef typename base::size_type size_type;
+    typedef typename base::difference_type  difference_type;
+    typedef typename base::pointer pointer;
+    typedef typename base::const_pointer const_pointer;
+    typedef typename base::reference reference;
+    typedef typename base::const_reference const_reference;
+    typedef typename base::value_type value_type;
+    secure_allocator() throw() {}
+    secure_allocator(const secure_allocator& a) throw() : base(a) {}
+    ~secure_allocator() throw() {}
+    template<typename _Other> struct rebind
+    { typedef secure_allocator<_Other> other; };
+
+    void deallocate(T* p, std::size_t n)
+    {
+        if (p != NULL)
+            memset(p, 0, sizeof(T) * n);
+        allocator<T>::deallocate(p, n);
+    }
+};
+
+
+
+//
+// Double ended buffer combining vector and stream-like interfaces.
+// >> and << read and write unformatted data using the above serialization templates.
+// Fills with data in linear time; some stringstream implementations take N^2 time.
+//
+class CDataStream
+{
+protected:
+    typedef vector<char, secure_allocator<char> > vector_type;
+    vector_type vch;
+    unsigned int nReadPos;
+    short state;
+    short exceptmask;
+public:
+    int nType;
+    int nVersion;
+
+    typedef vector_type::allocator_type   allocator_type;
+    typedef vector_type::size_type        size_type;
+    typedef vector_type::difference_type  difference_type;
+    typedef vector_type::reference        reference;
+    typedef vector_type::const_reference  const_reference;
+    typedef vector_type::value_type       value_type;
+    typedef vector_type::iterator         iterator;
+    typedef vector_type::const_iterator   const_iterator;
+    typedef vector_type::reverse_iterator reverse_iterator;
+
+    explicit CDataStream(int nTypeIn=0, int nVersionIn=VERSION)
+    {
+        Init(nTypeIn, nVersionIn);
+    }
+
+    CDataStream(const_iterator pbegin, const_iterator pend, int nTypeIn=0, int nVersionIn=VERSION) : vch(pbegin, pend)
+    {
+        Init(nTypeIn, nVersionIn);
+    }
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1300
+    CDataStream(const char* pbegin, const char* pend, int nTypeIn=0, int nVersionIn=VERSION) : vch(pbegin, pend)
+    {
+        Init(nTypeIn, nVersionIn);
+    }
+#endif
+
+    CDataStream(const vector_type& vchIn, int nTypeIn=0, int nVersionIn=VERSION) : vch(vchIn.begin(), vchIn.end())
+    {
+        Init(nTypeIn, nVersionIn);
+    }
+
+    CDataStream(const vector<char>& vchIn, int nTypeIn=0, int nVersionIn=VERSION) : vch(vchIn.begin(), vchIn.end())
+    {
+        Init(nTypeIn, nVersionIn);
+    }
+
+    CDataStream(const vector<unsigned char>& vchIn, int nTypeIn=0, int nVersionIn=VERSION) : vch((char*)&vchIn.begin()[0], (char*)&vchIn.end()[0])
+    {
+        Init(nTypeIn, nVersionIn);
+    }
+
+    void Init(int nTypeIn=0, int nVersionIn=VERSION)
+    {
+        nReadPos = 0;
+        nType = nTypeIn;
+        nVersion = nVersionIn;
+        state = 0;
+        exceptmask = ios::badbit | ios::failbit;
+    }
+
+    CDataStream& operator+=(const CDataStream& b)
+    {
+        vch.insert(vch.end(), b.begin(), b.end());
+        return *this;
+    }
+
+    friend CDataStream operator+(const CDataStream& a, const CDataStream& b)
+    {
+        CDataStream ret = a;
+        ret += b;
+        return (ret);
+    }
+
+    string str() const
+    {
+        return (string(begin(), end()));
+    }
+
+
+    //
+    // Vector subset
+    //
+    const_iterator begin() const                     { return vch.begin() + nReadPos; }
+    iterator begin()                                 { return vch.begin() + nReadPos; }
+    const_iterator end() const                       { return vch.end(); }
+    iterator end()                                   { return vch.end(); }
+    size_type size() const                           { return vch.size() - nReadPos; }
+    bool empty() const                               { return vch.size() == nReadPos; }
+    void resize(size_type n, value_type c=0)         { vch.resize(n + nReadPos, c); }
+    void reserve(size_type n)                        { vch.reserve(n + nReadPos); }
+    const_reference operator[](size_type pos) const  { return vch[pos + nReadPos]; }
+    reference operator[](size_type pos)              { return vch[pos + nReadPos]; }
+    void clear()                                     { vch.clear(); nReadPos = 0; }
+    iterator insert(iterator it, const char& x=char()) { return vch.insert(it, x); }
+    void insert(iterator it, size_type n, const char& x) { vch.insert(it, n, x); }
+
+    void insert(iterator it, const_iterator first, const_iterator last)
+    {
+        if (it == vch.begin() + nReadPos && last - first <= nReadPos)
+        {
+            // special case for inserting at the front when there's room
+            nReadPos -= (last - first);
+            memcpy(&vch[nReadPos], &first[0], last - first);
+        }
+        else
+            vch.insert(it, first, last);
+    }
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1300
+    void insert(iterator it, const char* first, const char* last)
+    {
+        if (it == vch.begin() + nReadPos && last - first <= nReadPos)
+        {
+            // special case for inserting at the front when there's room
+            nReadPos -= (last - first);
+            memcpy(&vch[nReadPos], &first[0], last - first);
+        }
+        else
+            vch.insert(it, first, last);
+    }
+#endif
+
+    iterator erase(iterator it)
+    {
+        if (it == vch.begin() + nReadPos)
+        {
+            // special case for erasing from the front
+            if (++nReadPos >= vch.size())
+            {
+                // whenever we reach the end, we take the opportunity to clear the buffer
+                nReadPos = 0;
+                return vch.erase(vch.begin(), vch.end());
+            }
+            return vch.begin() + nReadPos;
+        }
+        else
+            return vch.erase(it);
+    }
+
+    iterator erase(iterator first, iterator last)
+    {
+        if (first == vch.begin() + nReadPos)
+        {
+            // special case for erasing from the front
+            if (last == vch.end())
+            {
+                nReadPos = 0;
+                return vch.erase(vch.begin(), vch.end());
+            }
+            else
+            {
+                nReadPos = (last - vch.begin());
+                return last;
+            }
+        }
+        else
+            return vch.erase(first, last);
+    }
+
+    inline void Compact()
+    {
+        vch.erase(vch.begin(), vch.begin() + nReadPos);
+        nReadPos = 0;
+    }
+
+    bool Rewind(size_type n)
+    {
+        // Rewind by n characters if the buffer hasn't been compacted yet
+        if (n > nReadPos)
+            return false;
+        nReadPos -= n;
+        return true;
+    }
+
+
+    //
+    // Stream subset
+    //
+    void setstate(short bits, const char* psz)
+    {
+        state |= bits;
+        if (state & exceptmask)
+            throw std::ios_base::failure(psz);
+    }
+
+    bool eof() const             { return size() == 0; }
+    bool fail() const            { return state & (ios::badbit | ios::failbit); }
+    bool good() const            { return !eof() && (state == 0); }
+    void clear(short n)          { state = n; }  // name conflict with vector clear()
+    short exceptions()           { return exceptmask; }
+    short exceptions(short mask) { short prev = exceptmask; exceptmask = mask; setstate(0, "CDataStream"); return prev; }
+    CDataStream* rdbuf()         { return this; }
+    int in_avail()               { return size(); }
+
+    void SetType(int n)          { nType = n; }
+    int GetType()                { return nType; }
+    void SetVersion(int n)       { nVersion = n; }
+    int GetVersion()             { return nVersion; }
+    void ReadVersion()           { *this >> nVersion; }
+    void WriteVersion()          { *this << nVersion; }
+
+    CDataStream& read(char* pch, int nSize)
+    {
+        // Read from the beginning of the buffer
+        assert(nSize >= 0);
+        unsigned int nReadPosNext = nReadPos + nSize;
+        if (nReadPosNext >= vch.size())
+        {
+            if (nReadPosNext > vch.size())
+            {
+                setstate(ios::failbit, "CDataStream::read() : end of data");
+                memset(pch, 0, nSize);
+                nSize = vch.size() - nReadPos;
+            }
+            memcpy(pch, &vch[nReadPos], nSize);
+            nReadPos = 0;
+            vch.clear();
+            return (*this);
+        }
+        memcpy(pch, &vch[nReadPos], nSize);
+        nReadPos = nReadPosNext;
+        return (*this);
+    }
+
+    CDataStream& ignore(int nSize)
+    {
+        // Ignore from the beginning of the buffer
+        assert(nSize >= 0);
+        unsigned int nReadPosNext = nReadPos + nSize;
+        if (nReadPosNext >= vch.size())
+        {
+            if (nReadPosNext > vch.size())
+            {
+                setstate(ios::failbit, "CDataStream::ignore() : end of data");
+                nSize = vch.size() - nReadPos;
+            }
+            nReadPos = 0;
+            vch.clear();
+            return (*this);
+        }
+        nReadPos = nReadPosNext;
+        return (*this);
+    }
+
+    CDataStream& write(const char* pch, int nSize)
+    {
+        // Write to the end of the buffer
+        assert(nSize >= 0);
+        vch.insert(vch.end(), pch, pch + nSize);
+        return (*this);
+    }
+
+    template<typename Stream>
+    void Serialize(Stream& s, int nType=0, int nVersion=VERSION) const
+    {
+        // Special case: stream << stream concatenates like stream += stream
+        if (!vch.empty())
+            s.write((char*)&vch[0], vch.size() * sizeof(vch[0]));
+    }
+
+    template<typename T>
+    unsigned int GetSerializeSize(const T& obj)
+    {
+        // Tells the size of the object if serialized to this stream
+        return ::GetSerializeSize(obj, nType, nVersion);
+    }
+
+    template<typename T>
+    CDataStream& operator<<(const T& obj)
+    {
+        // Serialize to this stream
+        ::Serialize(*this, obj, nType, nVersion);
+        return (*this);
+    }
+
+    template<typename T>
+    CDataStream& operator>>(T& obj)
+    {
+        // Unserialize from this stream
+        ::Unserialize(*this, obj, nType, nVersion);
+        return (*this);
+    }
+};
+
+#ifdef TESTCDATASTREAM
+// VC6sp6
+// CDataStream:
+// n=1000       0 seconds
+// n=2000       0 seconds
+// n=4000       0 seconds
+// n=8000       0 seconds
+// n=16000      0 seconds
+// n=32000      0 seconds
+// n=64000      1 seconds
+// n=128000     1 seconds
+// n=256000     2 seconds
+// n=512000     4 seconds
+// n=1024000    8 seconds
+// n=2048000    16 seconds
+// n=4096000    32 seconds
+// stringstream:
+// n=1000       1 seconds
+// n=2000       1 seconds
+// n=4000       13 seconds
+// n=8000       87 seconds
+// n=16000      400 seconds
+// n=32000      1660 seconds
+// n=64000      6749 seconds
+// n=128000     27241 seconds
+// n=256000     109804 seconds
+#include <iostream>
+int main(int argc, char *argv[])
+{
+    vector<unsigned char> vch(0xcc, 250);
+    printf("CDataStream:\n");
+    for (int n = 1000; n <= 4500000; n *= 2)
+    {
+        CDataStream ss;
+        time_t nStart = time(NULL);
+        for (int i = 0; i < n; i++)
+            ss.write((char*)&vch[0], vch.size());
+        printf("n=%-10d %d seconds\n", n, time(NULL) - nStart);
+    }
+    printf("stringstream:\n");
+    for (int n = 1000; n <= 4500000; n *= 2)
+    {
+        stringstream ss;
+        time_t nStart = time(NULL);
+        for (int i = 0; i < n; i++)
+            ss.write((char*)&vch[0], vch.size());
+        printf("n=%-10d %d seconds\n", n, time(NULL) - nStart);
+    }
+}
+#endif
+
+
+
+
+
+
+
+
+
+
+//
+// Automatic closing wrapper for FILE*
+//  - Will automatically close the file when it goes out of scope if not null.
+//  - If you're returning the file pointer, return file.release().
+//  - If you need to close the file early, use file.fclose() instead of fclose(file).
+//
+class CAutoFile
+{
+protected:
+    FILE* file;
+    short state;
+    short exceptmask;
+public:
+    int nType;
+    int nVersion;
+
+    typedef FILE element_type;
+
+    CAutoFile(FILE* filenew=NULL, int nTypeIn=SER_DISK, int nVersionIn=VERSION)
+    {
+        file = filenew;
+        nType = nTypeIn;
+        nVersion = nVersionIn;
+        state = 0;
+        exceptmask = ios::badbit | ios::failbit;
+    }
+
+    ~CAutoFile()
+    {
+        fclose();
+    }
+
+    void fclose()
+    {
+        if (file != NULL && file != stdin && file != stdout && file != stderr)
+            ::fclose(file);
+        file = NULL;
+    }
+
+    FILE* release()             { FILE* ret = file; file = NULL; return ret; }
+    operator FILE*()            { return file; }
+    FILE* operator->()          { return file; }
+    FILE& operator*()           { return *file; }
+    FILE** operator&()          { return &file; }
+    FILE* operator=(FILE* pnew) { return file = pnew; }
+    bool operator!()            { return (file == NULL); }
+
+
+    //
+    // Stream subset
+    //
+    void setstate(short bits, const char* psz)
+    {
+        state |= bits;
+        if (state & exceptmask)
+            throw std::ios_base::failure(psz);
+    }
+
+    bool fail() const            { return state & (ios::badbit | ios::failbit); }
+    bool good() const            { return state == 0; }
+    void clear(short n = 0)      { state = n; }
+    short exceptions()           { return exceptmask; }
+    short exceptions(short mask) { short prev = exceptmask; exceptmask = mask; setstate(0, "CAutoFile"); return prev; }
+
+    void SetType(int n)          { nType = n; }
+    int GetType()                { return nType; }
+    void SetVersion(int n)       { nVersion = n; }
+    int GetVersion()             { return nVersion; }
+    void ReadVersion()           { *this >> nVersion; }
+    void WriteVersion()          { *this << nVersion; }
+
+    CAutoFile& read(char* pch, int nSize)
+    {
+        if (!file)
+            throw std::ios_base::failure("CAutoFile::read : file handle is NULL");
+        if (fread(pch, 1, nSize, file) != nSize)
+            setstate(ios::failbit, feof(file) ? "CAutoFile::read : end of file" : "CAutoFile::read : fread failed");
+        return (*this);
+    }
+
+    CAutoFile& write(const char* pch, int nSize)
+    {
+        if (!file)
+            throw std::ios_base::failure("CAutoFile::write : file handle is NULL");
+        if (fwrite(pch, 1, nSize, file) != nSize)
+            setstate(ios::failbit, "CAutoFile::write : write failed");
+        return (*this);
+    }
+
+    template<typename T>
+    unsigned int GetSerializeSize(const T& obj)
+    {
+        // Tells the size of the object if serialized to this stream
+        return ::GetSerializeSize(obj, nType, nVersion);
+    }
+
+    template<typename T>
+    CAutoFile& operator<<(const T& obj)
+    {
+        // Serialize to this stream
+        if (!file)
+            throw std::ios_base::failure("CAutoFile::operator<< : file handle is NULL");
+        ::Serialize(*this, obj, nType, nVersion);
+        return (*this);
+    }
+
+    template<typename T>
+    CAutoFile& operator>>(T& obj)
+    {
+        // Unserialize from this stream
+        if (!file)
+            throw std::ios_base::failure("CAutoFile::operator>> : file handle is NULL");
+        ::Unserialize(*this, obj, nType, nVersion);
+        return (*this);
+    }
+};
new file mode 100644
--- /dev/null
+++ b/sha.cpp
@@ -0,0 +1,554 @@
+// This file is public domain
+// SHA routines extracted as a standalone file from:
+// Crypto++: a C++ Class Library of Cryptographic Schemes
+// Version 5.5.2 (9/24/2007)
+// http://www.cryptopp.com
+
+// sha.cpp - modified by Wei Dai from Steve Reid's public domain sha1.c
+
+// Steve Reid implemented SHA-1. Wei Dai implemented SHA-2.
+// Both are in the public domain.
+
+#include <assert.h>
+#include <memory.h>
+#include "sha.h"
+
+namespace CryptoPP
+{
+
+// start of Steve Reid's code
+
+#define blk0(i) (W[i] = data[i])
+#define blk1(i) (W[i&15] = rotlFixed(W[(i+13)&15]^W[(i+8)&15]^W[(i+2)&15]^W[i&15],1))
+
+void SHA1::InitState(HashWordType *state)
+{
+    state[0] = 0x67452301L;
+    state[1] = 0xEFCDAB89L;
+    state[2] = 0x98BADCFEL;
+    state[3] = 0x10325476L;
+    state[4] = 0xC3D2E1F0L;
+}
+
+#define f1(x,y,z) (z^(x&(y^z)))
+#define f2(x,y,z) (x^y^z)
+#define f3(x,y,z) ((x&y)|(z&(x|y)))
+#define f4(x,y,z) (x^y^z)
+
+/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
+#define R0(v,w,x,y,z,i) z+=f1(w,x,y)+blk0(i)+0x5A827999+rotlFixed(v,5);w=rotlFixed(w,30);
+#define R1(v,w,x,y,z,i) z+=f1(w,x,y)+blk1(i)+0x5A827999+rotlFixed(v,5);w=rotlFixed(w,30);
+#define R2(v,w,x,y,z,i) z+=f2(w,x,y)+blk1(i)+0x6ED9EBA1+rotlFixed(v,5);w=rotlFixed(w,30);
+#define R3(v,w,x,y,z,i) z+=f3(w,x,y)+blk1(i)+0x8F1BBCDC+rotlFixed(v,5);w=rotlFixed(w,30);
+#define R4(v,w,x,y,z,i) z+=f4(w,x,y)+blk1(i)+0xCA62C1D6+rotlFixed(v,5);w=rotlFixed(w,30);
+
+void SHA1::Transform(word32 *state, const word32 *data)
+{
+    word32 W[16];
+    /* Copy context->state[] to working vars */
+    word32 a = state[0];
+    word32 b = state[1];
+    word32 c = state[2];
+    word32 d = state[3];
+    word32 e = state[4];
+    /* 4 rounds of 20 operations each. Loop unrolled. */
+    R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
+    R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);
+    R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);
+    R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);
+    R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);
+    R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);
+    R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);
+    R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);
+    R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);
+    R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);
+    R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);
+    R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);
+    R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);
+    R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);
+    R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);
+    R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);
+    R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);
+    R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);
+    R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);
+    R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);
+    /* Add the working vars back into context.state[] */
+    state[0] += a;
+    state[1] += b;
+    state[2] += c;
+    state[3] += d;
+    state[4] += e;
+}
+
+// end of Steve Reid's code
+
+// *************************************************************
+
+void SHA224::InitState(HashWordType *state)
+{
+    static const word32 s[8] = {0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4};
+    memcpy(state, s, sizeof(s));
+}
+
+void SHA256::InitState(HashWordType *state)
+{
+    static const word32 s[8] = {0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19};
+    memcpy(state, s, sizeof(s));
+}
+
+static const word32 SHA256_K[64] = {
+    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
+    0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
+    0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
+    0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
+    0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
+    0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
+    0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
+    0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
+    0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+    0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
+    0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
+    0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
+    0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
+    0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
+};
+
+#define blk2(i) (W[i&15]+=s1(W[(i-2)&15])+W[(i-7)&15]+s0(W[(i-15)&15]))
+
+#define Ch(x,y,z) (z^(x&(y^z)))
+#define Maj(x,y,z) ((x&y)|(z&(x|y)))
+
+#define a(i) T[(0-i)&7]
+#define b(i) T[(1-i)&7]
+#define c(i) T[(2-i)&7]
+#define d(i) T[(3-i)&7]
+#define e(i) T[(4-i)&7]
+#define f(i) T[(5-i)&7]
+#define g(i) T[(6-i)&7]
+#define h(i) T[(7-i)&7]
+
+#define R(i) h(i)+=S1(e(i))+Ch(e(i),f(i),g(i))+SHA256_K[i+j]+(j?blk2(i):blk0(i));\
+    d(i)+=h(i);h(i)+=S0(a(i))+Maj(a(i),b(i),c(i))
+
+// for SHA256
+#define S0(x) (rotrFixed(x,2)^rotrFixed(x,13)^rotrFixed(x,22))
+#define S1(x) (rotrFixed(x,6)^rotrFixed(x,11)^rotrFixed(x,25))
+#define s0(x) (rotrFixed(x,7)^rotrFixed(x,18)^(x>>3))
+#define s1(x) (rotrFixed(x,17)^rotrFixed(x,19)^(x>>10))
+
+void SHA256::Transform(word32 *state, const word32 *data)
+{
+    word32 W[16];
+    word32 T[8];
+    /* Copy context->state[] to working vars */
+    memcpy(T, state, sizeof(T));
+    /* 64 operations, partially loop unrolled */
+    for (unsigned int j=0; j<64; j+=16)
+    {
+        R( 0); R( 1); R( 2); R( 3);
+        R( 4); R( 5); R( 6); R( 7);
+        R( 8); R( 9); R(10); R(11);
+        R(12); R(13); R(14); R(15);
+    }
+    /* Add the working vars back into context.state[] */
+    state[0] += a(0);
+    state[1] += b(0);
+    state[2] += c(0);
+    state[3] += d(0);
+    state[4] += e(0);
+    state[5] += f(0);
+    state[6] += g(0);
+    state[7] += h(0);
+}
+
+/*
+// smaller but slower
+void SHA256_Transform(word32 *state, const word32 *data)
+{
+    word32 T[20];
+    word32 W[32];
+    unsigned int i = 0, j = 0;
+    word32 *t = T+8;
+
+    memcpy(t, state, 8*4);
+    word32 e = t[4], a = t[0];
+
+    do
+    {
+        word32 w = data[j];
+        W[j] = w;
+        w += K[j];
+        w += t[7];
+        w += S1(e);
+        w += Ch(e, t[5], t[6]);
+        e = t[3] + w;
+        t[3] = t[3+8] = e;
+        w += S0(t[0]);
+        a = w + Maj(a, t[1], t[2]);
+        t[-1] = t[7] = a;
+        --t;
+        ++j;
+        if (j%8 == 0)
+            t += 8;
+    } while (j<16);
+
+    do
+    {
+        i = j&0xf;
+        word32 w = s1(W[i+16-2]) + s0(W[i+16-15]) + W[i] + W[i+16-7];
+        W[i+16] = W[i] = w;
+        w += K[j];
+        w += t[7];
+        w += S1(e);
+        w += Ch(e, t[5], t[6]);
+        e = t[3] + w;
+        t[3] = t[3+8] = e;
+        w += S0(t[0]);
+        a = w + Maj(a, t[1], t[2]);
+        t[-1] = t[7] = a;
+
+        w = s1(W[(i+1)+16-2]) + s0(W[(i+1)+16-15]) + W[(i+1)] + W[(i+1)+16-7];
+        W[(i+1)+16] = W[(i+1)] = w;
+        w += K[j+1];
+        w += (t-1)[7];
+        w += S1(e);
+        w += Ch(e, (t-1)[5], (t-1)[6]);
+        e = (t-1)[3] + w;
+        (t-1)[3] = (t-1)[3+8] = e;
+        w += S0((t-1)[0]);
+        a = w + Maj(a, (t-1)[1], (t-1)[2]);
+        (t-1)[-1] = (t-1)[7] = a;
+
+        t-=2;
+        j+=2;
+        if (j%8 == 0)
+            t += 8;
+    } while (j<64);
+
+    state[0] += a;
+    state[1] += t[1];
+    state[2] += t[2];
+    state[3] += t[3];
+    state[4] += e;
+    state[5] += t[5];
+    state[6] += t[6];
+    state[7] += t[7];
+}
+*/
+
+#undef S0
+#undef S1
+#undef s0
+#undef s1
+#undef R
+
+// *************************************************************
+
+#ifdef WORD64_AVAILABLE
+
+void SHA384::InitState(HashWordType *state)
+{
+    static const word64 s[8] = {
+        W64LIT(0xcbbb9d5dc1059ed8), W64LIT(0x629a292a367cd507),
+        W64LIT(0x9159015a3070dd17), W64LIT(0x152fecd8f70e5939),
+        W64LIT(0x67332667ffc00b31), W64LIT(0x8eb44a8768581511),
+        W64LIT(0xdb0c2e0d64f98fa7), W64LIT(0x47b5481dbefa4fa4)};
+    memcpy(state, s, sizeof(s));
+}
+
+void SHA512::InitState(HashWordType *state)
+{
+    static const word64 s[8] = {
+        W64LIT(0x6a09e667f3bcc908), W64LIT(0xbb67ae8584caa73b),
+        W64LIT(0x3c6ef372fe94f82b), W64LIT(0xa54ff53a5f1d36f1),
+        W64LIT(0x510e527fade682d1), W64LIT(0x9b05688c2b3e6c1f),
+        W64LIT(0x1f83d9abfb41bd6b), W64LIT(0x5be0cd19137e2179)};
+    memcpy(state, s, sizeof(s));
+}
+
+CRYPTOPP_ALIGN_DATA(16) static const word64 SHA512_K[80] CRYPTOPP_SECTION_ALIGN16 = {
+    W64LIT(0x428a2f98d728ae22), W64LIT(0x7137449123ef65cd),
+    W64LIT(0xb5c0fbcfec4d3b2f), W64LIT(0xe9b5dba58189dbbc),
+    W64LIT(0x3956c25bf348b538), W64LIT(0x59f111f1b605d019),
+    W64LIT(0x923f82a4af194f9b), W64LIT(0xab1c5ed5da6d8118),
+    W64LIT(0xd807aa98a3030242), W64LIT(0x12835b0145706fbe),
+    W64LIT(0x243185be4ee4b28c), W64LIT(0x550c7dc3d5ffb4e2),
+    W64LIT(0x72be5d74f27b896f), W64LIT(0x80deb1fe3b1696b1),
+    W64LIT(0x9bdc06a725c71235), W64LIT(0xc19bf174cf692694),
+    W64LIT(0xe49b69c19ef14ad2), W64LIT(0xefbe4786384f25e3),
+    W64LIT(0x0fc19dc68b8cd5b5), W64LIT(0x240ca1cc77ac9c65),
+    W64LIT(0x2de92c6f592b0275), W64LIT(0x4a7484aa6ea6e483),
+    W64LIT(0x5cb0a9dcbd41fbd4), W64LIT(0x76f988da831153b5),
+    W64LIT(0x983e5152ee66dfab), W64LIT(0xa831c66d2db43210),
+    W64LIT(0xb00327c898fb213f), W64LIT(0xbf597fc7beef0ee4),
+    W64LIT(0xc6e00bf33da88fc2), W64LIT(0xd5a79147930aa725),
+    W64LIT(0x06ca6351e003826f), W64LIT(0x142929670a0e6e70),
+    W64LIT(0x27b70a8546d22ffc), W64LIT(0x2e1b21385c26c926),
+    W64LIT(0x4d2c6dfc5ac42aed), W64LIT(0x53380d139d95b3df),
+    W64LIT(0x650a73548baf63de), W64LIT(0x766a0abb3c77b2a8),
+    W64LIT(0x81c2c92e47edaee6), W64LIT(0x92722c851482353b),
+    W64LIT(0xa2bfe8a14cf10364), W64LIT(0xa81a664bbc423001),
+    W64LIT(0xc24b8b70d0f89791), W64LIT(0xc76c51a30654be30),
+    W64LIT(0xd192e819d6ef5218), W64LIT(0xd69906245565a910),
+    W64LIT(0xf40e35855771202a), W64LIT(0x106aa07032bbd1b8),
+    W64LIT(0x19a4c116b8d2d0c8), W64LIT(0x1e376c085141ab53),
+    W64LIT(0x2748774cdf8eeb99), W64LIT(0x34b0bcb5e19b48a8),
+    W64LIT(0x391c0cb3c5c95a63), W64LIT(0x4ed8aa4ae3418acb),
+    W64LIT(0x5b9cca4f7763e373), W64LIT(0x682e6ff3d6b2b8a3),
+    W64LIT(0x748f82ee5defb2fc), W64LIT(0x78a5636f43172f60),
+    W64LIT(0x84c87814a1f0ab72), W64LIT(0x8cc702081a6439ec),
+    W64LIT(0x90befffa23631e28), W64LIT(0xa4506cebde82bde9),
+    W64LIT(0xbef9a3f7b2c67915), W64LIT(0xc67178f2e372532b),
+    W64LIT(0xca273eceea26619c), W64LIT(0xd186b8c721c0c207),
+    W64LIT(0xeada7dd6cde0eb1e), W64LIT(0xf57d4f7fee6ed178),
+    W64LIT(0x06f067aa72176fba), W64LIT(0x0a637dc5a2c898a6),
+    W64LIT(0x113f9804bef90dae), W64LIT(0x1b710b35131c471b),
+    W64LIT(0x28db77f523047d84), W64LIT(0x32caab7b40c72493),
+    W64LIT(0x3c9ebe0a15c9bebc), W64LIT(0x431d67c49c100d4c),
+    W64LIT(0x4cc5d4becb3e42b6), W64LIT(0x597f299cfc657e2a),
+    W64LIT(0x5fcb6fab3ad6faec), W64LIT(0x6c44198c4a475817)
+};
+
+#if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE && CRYPTOPP_BOOL_X86
+// put assembly version in separate function, otherwise MSVC 2005 SP1 doesn't generate correct code for the non-assembly version
+CRYPTOPP_NAKED static void CRYPTOPP_FASTCALL SHA512_SSE2_Transform(word64 *state, const word64 *data)
+{
+#ifdef __GNUC__
+    __asm__ __volatile__
+    (
+        ".intel_syntax noprefix;"
+    AS1(    push    ebx)
+    AS2(    mov     ebx, eax)
+#else
+    AS1(    push    ebx)
+    AS1(    push    esi)
+    AS1(    push    edi)
+    AS2(    lea     ebx, SHA512_K)
+#endif
+
+    AS2(    mov     eax, esp)
+    AS2(    and     esp, 0xfffffff0)
+    AS2(    sub     esp, 27*16)             // 17*16 for expanded data, 20*8 for state
+    AS1(    push    eax)
+    AS2(    xor     eax, eax)
+    AS2(    lea     edi, [esp+4+8*8])       // start at middle of state buffer. will decrement pointer each round to avoid copying
+    AS2(    lea     esi, [esp+4+20*8+8])    // 16-byte alignment, then add 8
+
+    AS2(    movq    mm4, [ecx+0*8])
+    AS2(    movq    [edi+0*8], mm4)
+    AS2(    movq    mm0, [ecx+1*8])
+    AS2(    movq    [edi+1*8], mm0)
+    AS2(    movq    mm0, [ecx+2*8])
+    AS2(    movq    [edi+2*8], mm0)
+    AS2(    movq    mm0, [ecx+3*8])
+    AS2(    movq    [edi+3*8], mm0)
+    AS2(    movq    mm5, [ecx+4*8])
+    AS2(    movq    [edi+4*8], mm5)
+    AS2(    movq    mm0, [ecx+5*8])
+    AS2(    movq    [edi+5*8], mm0)
+    AS2(    movq    mm0, [ecx+6*8])
+    AS2(    movq    [edi+6*8], mm0)
+    AS2(    movq    mm0, [ecx+7*8])
+    AS2(    movq    [edi+7*8], mm0)
+    ASJ(    jmp,    0, f)
+
+#define SSE2_S0_S1(r, a, b, c)  \
+    AS2(    movq    mm6, r)\
+    AS2(    psrlq   r, a)\
+    AS2(    movq    mm7, r)\
+    AS2(    psllq   mm6, 64-c)\
+    AS2(    pxor    mm7, mm6)\
+    AS2(    psrlq   r, b-a)\
+    AS2(    pxor    mm7, r)\
+    AS2(    psllq   mm6, c-b)\
+    AS2(    pxor    mm7, mm6)\
+    AS2(    psrlq   r, c-b)\
+    AS2(    pxor    r, mm7)\
+    AS2(    psllq   mm6, b-a)\
+    AS2(    pxor    r, mm6)
+
+#define SSE2_s0(r, a, b, c) \
+    AS2(    movdqa  xmm6, r)\
+    AS2(    psrlq   r, a)\
+    AS2(    movdqa  xmm7, r)\
+    AS2(    psllq   xmm6, 64-c)\
+    AS2(    pxor    xmm7, xmm6)\
+    AS2(    psrlq   r, b-a)\
+    AS2(    pxor    xmm7, r)\
+    AS2(    psrlq   r, c-b)\
+    AS2(    pxor    r, xmm7)\
+    AS2(    psllq   xmm6, c-a)\
+    AS2(    pxor    r, xmm6)
+
+#define SSE2_s1(r, a, b, c) \
+    AS2(    movdqa  xmm6, r)\
+    AS2(    psrlq   r, a)\
+    AS2(    movdqa  xmm7, r)\
+    AS2(    psllq   xmm6, 64-c)\
+    AS2(    pxor    xmm7, xmm6)\
+    AS2(    psrlq   r, b-a)\
+    AS2(    pxor    xmm7, r)\
+    AS2(    psllq   xmm6, c-b)\
+    AS2(    pxor    xmm7, xmm6)\
+    AS2(    psrlq   r, c-b)\
+    AS2(    pxor    r, xmm7)
+
+    ASL(SHA512_Round)
+    // k + w is in mm0, a is in mm4, e is in mm5
+    AS2(    paddq   mm0, [edi+7*8])     // h
+    AS2(    movq    mm2, [edi+5*8])     // f
+    AS2(    movq    mm3, [edi+6*8])     // g
+    AS2(    pxor    mm2, mm3)
+    AS2(    pand    mm2, mm5)
+    SSE2_S0_S1(mm5,14,18,41)
+    AS2(    pxor    mm2, mm3)
+    AS2(    paddq   mm0, mm2)           // h += Ch(e,f,g)
+    AS2(    paddq   mm5, mm0)           // h += S1(e)
+    AS2(    movq    mm2, [edi+1*8])     // b
+    AS2(    movq    mm1, mm2)
+    AS2(    por     mm2, mm4)
+    AS2(    pand    mm2, [edi+2*8])     // c
+    AS2(    pand    mm1, mm4)
+    AS2(    por     mm1, mm2)
+    AS2(    paddq   mm1, mm5)           // temp = h + Maj(a,b,c)
+    AS2(    paddq   mm5, [edi+3*8])     // e = d + h
+    AS2(    movq    [edi+3*8], mm5)
+    AS2(    movq    [edi+11*8], mm5)
+    SSE2_S0_S1(mm4,28,34,39)            // S0(a)
+    AS2(    paddq   mm4, mm1)           // a = temp + S0(a)
+    AS2(    movq    [edi-8], mm4)
+    AS2(    movq    [edi+7*8], mm4)
+    AS1(    ret)
+
+    // first 16 rounds
+    ASL(0)
+    AS2(    movq    mm0, [edx+eax*8])
+    AS2(    movq    [esi+eax*8], mm0)
+    AS2(    movq    [esi+eax*8+16*8], mm0)
+    AS2(    paddq   mm0, [ebx+eax*8])
+    ASC(    call,   SHA512_Round)
+    AS1(    inc     eax)
+    AS2(    sub     edi, 8)
+    AS2(    test    eax, 7)
+    ASJ(    jnz,    0, b)
+    AS2(    add     edi, 8*8)
+    AS2(    cmp     eax, 16)
+    ASJ(    jne,    0, b)
+
+    // rest of the rounds
+    AS2(    movdqu  xmm0, [esi+(16-2)*8])
+    ASL(1)
+    // data expansion, W[i-2] already in xmm0
+    AS2(    movdqu  xmm3, [esi])
+    AS2(    paddq   xmm3, [esi+(16-7)*8])
+    AS2(    movdqa  xmm2, [esi+(16-15)*8])
+    SSE2_s1(xmm0, 6, 19, 61)
+    AS2(    paddq   xmm0, xmm3)
+    SSE2_s0(xmm2, 1, 7, 8)
+    AS2(    paddq   xmm0, xmm2)
+    AS2(    movdq2q mm0, xmm0)
+    AS2(    movhlps xmm1, xmm0)
+    AS2(    paddq   mm0, [ebx+eax*8])
+    AS2(    movlps  [esi], xmm0)
+    AS2(    movlps  [esi+8], xmm1)
+    AS2(    movlps  [esi+8*16], xmm0)
+    AS2(    movlps  [esi+8*17], xmm1)
+    // 2 rounds
+    ASC(    call,   SHA512_Round)
+    AS2(    sub     edi, 8)
+    AS2(    movdq2q mm0, xmm1)
+    AS2(    paddq   mm0, [ebx+eax*8+8])
+    ASC(    call,   SHA512_Round)
+    // update indices and loop
+    AS2(    add     esi, 16)
+    AS2(    add     eax, 2)
+    AS2(    sub     edi, 8)
+    AS2(    test    eax, 7)
+    ASJ(    jnz,    1, b)
+    // do housekeeping every 8 rounds
+    AS2(    mov     esi, 0xf)
+    AS2(    and     esi, eax)
+    AS2(    lea     esi, [esp+4+20*8+8+esi*8])
+    AS2(    add     edi, 8*8)
+    AS2(    cmp     eax, 80)
+    ASJ(    jne,    1, b)
+
+#define SSE2_CombineState(i)    \
+    AS2(    movq    mm0, [edi+i*8])\
+    AS2(    paddq   mm0, [ecx+i*8])\
+    AS2(    movq    [ecx+i*8], mm0)
+
+    SSE2_CombineState(0)
+    SSE2_CombineState(1)
+    SSE2_CombineState(2)
+    SSE2_CombineState(3)
+    SSE2_CombineState(4)
+    SSE2_CombineState(5)
+    SSE2_CombineState(6)
+    SSE2_CombineState(7)
+
+    AS1(    pop     esp)
+    AS1(    emms)
+
+#if defined(__GNUC__)
+    AS1(    pop     ebx)
+    ".att_syntax prefix;"
+        :
+        : "a" (SHA512_K), "c" (state), "d" (data)
+        : "%esi", "%edi", "memory", "cc"
+    );
+#else
+    AS1(    pop     edi)
+    AS1(    pop     esi)
+    AS1(    pop     ebx)
+    AS1(    ret)
+#endif
+}
+#endif  // #if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE
+
+void SHA512::Transform(word64 *state, const word64 *data)
+{
+#if CRYPTOPP_BOOL_SSE2_ASM_AVAILABLE && CRYPTOPP_BOOL_X86
+    if (HasSSE2())
+    {
+        SHA512_SSE2_Transform(state, data);
+        return;
+    }
+#endif
+
+#define S0(x) (rotrFixed(x,28)^rotrFixed(x,34)^rotrFixed(x,39))
+#define S1(x) (rotrFixed(x,14)^rotrFixed(x,18)^rotrFixed(x,41))
+#define s0(x) (rotrFixed(x,1)^rotrFixed(x,8)^(x>>7))
+#define s1(x) (rotrFixed(x,19)^rotrFixed(x,61)^(x>>6))
+
+#define R(i) h(i)+=S1(e(i))+Ch(e(i),f(i),g(i))+SHA512_K[i+j]+(j?blk2(i):blk0(i));\
+    d(i)+=h(i);h(i)+=S0(a(i))+Maj(a(i),b(i),c(i))
+
+    word64 W[16];
+    word64 T[8];
+    /* Copy context->state[] to working vars */
+    memcpy(T, state, sizeof(T));
+    /* 80 operations, partially loop unrolled */
+    for (unsigned int j=0; j<80; j+=16)
+    {
+        R( 0); R( 1); R( 2); R( 3);
+        R( 4); R( 5); R( 6); R( 7);
+        R( 8); R( 9); R(10); R(11);
+        R(12); R(13); R(14); R(15);
+    }
+    /* Add the working vars back into context.state[] */
+    state[0] += a(0);
+    state[1] += b(0);
+    state[2] += c(0);
+    state[3] += d(0);
+    state[4] += e(0);
+    state[5] += f(0);
+    state[6] += g(0);
+    state[7] += h(0);
+}
+
+#endif
+
+}
new file mode 100644
--- /dev/null
+++ b/sha.h
@@ -0,0 +1,177 @@
+// This file is public domain
+// SHA routines extracted as a standalone file from:
+// Crypto++: a C++ Class Library of Cryptographic Schemes
+// Version 5.5.2 (9/24/2007)
+// http://www.cryptopp.com
+#ifndef CRYPTOPP_SHA_H
+#define CRYPTOPP_SHA_H
+#include <stdlib.h>
+
+namespace CryptoPP
+{
+
+//
+// Dependencies
+//
+
+typedef unsigned char byte;
+typedef unsigned short word16;
+typedef unsigned int word32;
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+typedef unsigned __int64 word64;
+#else
+typedef unsigned long long word64;
+#endif
+
+template <class T> inline T rotlFixed(T x, unsigned int y)
+{
+    assert(y < sizeof(T)*8);
+    return T((x<<y) | (x>>(sizeof(T)*8-y)));
+}
+
+template <class T> inline T rotrFixed(T x, unsigned int y)
+{
+    assert(y < sizeof(T)*8);
+    return T((x>>y) | (x<<(sizeof(T)*8-y)));
+}
+
+// ************** endian reversal ***************
+
+#ifdef _MSC_VER
+    #if _MSC_VER >= 1400
+        #define CRYPTOPP_FAST_ROTATE(x) 1
+    #elif _MSC_VER >= 1300
+        #define CRYPTOPP_FAST_ROTATE(x) ((x) == 32 | (x) == 64)
+    #else
+        #define CRYPTOPP_FAST_ROTATE(x) ((x) == 32)
+    #endif
+#elif (defined(__MWERKS__) && TARGET_CPU_PPC) || \
+    (defined(__GNUC__) && (defined(_ARCH_PWR2) || defined(_ARCH_PWR) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || defined(_ARCH_COM)))
+    #define CRYPTOPP_FAST_ROTATE(x) ((x) == 32)
+#elif defined(__GNUC__) && (CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X86) // depend on GCC's peephole optimization to generate rotate instructions
+    #define CRYPTOPP_FAST_ROTATE(x) 1
+#else
+    #define CRYPTOPP_FAST_ROTATE(x) 0
+#endif
+
+inline byte ByteReverse(byte value)
+{
+    return value;
+}
+
+inline word16 ByteReverse(word16 value)
+{
+#ifdef CRYPTOPP_BYTESWAP_AVAILABLE
+    return bswap_16(value);
+#elif defined(_MSC_VER) && _MSC_VER >= 1300
+    return _byteswap_ushort(value);
+#else
+    return rotlFixed(value, 8U);
+#endif
+}
+
+inline word32 ByteReverse(word32 value)
+{
+#if defined(__GNUC__)
+    __asm__ ("bswap %0" : "=r" (value) : "0" (value));
+    return value;
+#elif defined(CRYPTOPP_BYTESWAP_AVAILABLE)
+    return bswap_32(value);
+#elif defined(__MWERKS__) && TARGET_CPU_PPC
+    return (word32)__lwbrx(&value,0);
+#elif _MSC_VER >= 1400 || (_MSC_VER >= 1300 && !defined(_DLL))
+    return _byteswap_ulong(value);
+#elif CRYPTOPP_FAST_ROTATE(32)
+    // 5 instructions with rotate instruction, 9 without
+    return (rotrFixed(value, 8U) & 0xff00ff00) | (rotlFixed(value, 8U) & 0x00ff00ff);
+#else
+    // 6 instructions with rotate instruction, 8 without
+    value = ((value & 0xFF00FF00) >> 8) | ((value & 0x00FF00FF) << 8);
+    return rotlFixed(value, 16U);
+#endif
+}
+
+#ifdef WORD64_AVAILABLE
+inline word64 ByteReverse(word64 value)
+{
+#if defined(__GNUC__) && defined(__x86_64__)
+    __asm__ ("bswap %0" : "=r" (value) : "0" (value));
+    return value;
+#elif defined(CRYPTOPP_BYTESWAP_AVAILABLE)
+    return bswap_64(value);
+#elif defined(_MSC_VER) && _MSC_VER >= 1300
+    return _byteswap_uint64(value);
+#elif defined(CRYPTOPP_SLOW_WORD64)
+    return (word64(ByteReverse(word32(value))) << 32) | ByteReverse(word32(value>>32));
+#else
+    value = ((value & W64LIT(0xFF00FF00FF00FF00)) >> 8) | ((value & W64LIT(0x00FF00FF00FF00FF)) << 8);
+    value = ((value & W64LIT(0xFFFF0000FFFF0000)) >> 16) | ((value & W64LIT(0x0000FFFF0000FFFF)) << 16);
+    return rotlFixed(value, 32U);
+#endif
+}
+#endif
+
+
+//
+// SHA
+//
+
+// http://www.weidai.com/scan-mirror/md.html#SHA-1
+class SHA1
+{
+public:
+    typedef word32 HashWordType;
+    static void InitState(word32 *state);
+    static void Transform(word32 *digest, const word32 *data);
+    static const char * StaticAlgorithmName() {return "SHA-1";}
+};
+
+typedef SHA1 SHA;   // for backwards compatibility
+
+// implements the SHA-256 standard
+class SHA256
+{
+public:
+    typedef word32 HashWordType;
+    static void InitState(word32 *state);
+    static void Transform(word32 *digest, const word32 *data);
+    static const char * StaticAlgorithmName() {return "SHA-256";}
+};
+
+// implements the SHA-224 standard
+class SHA224
+{
+public:
+    typedef word32 HashWordType;
+    static void InitState(word32 *state);
+    static void Transform(word32 *digest, const word32 *data) {SHA256::Transform(digest, data);}
+    static const char * StaticAlgorithmName() {return "SHA-224";}
+};
+
+#ifdef WORD64_AVAILABLE
+
+// implements the SHA-512 standard
+class SHA512
+{
+public:
+    typedef word64 HashWordType;
+    static void InitState(word64 *state);
+    static void Transform(word64 *digest, const word64 *data);
+    static const char * StaticAlgorithmName() {return "SHA-512";}
+};
+
+// implements the SHA-384 standard
+class SHA384
+{
+public:
+    typedef word64 HashWordType;
+    static void InitState(word64 *state);
+    static void Transform(word64 *digest, const word64 *data) {SHA512::Transform(digest, data);}
+    static const char * StaticAlgorithmName() {return "SHA-384";}
+};
+
+#endif
+
+}
+
+#endif
new file mode 100644
--- /dev/null
+++ b/ui.cpp
@@ -0,0 +1,3290 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include "headers.h"
+#ifdef _MSC_VER
+#include <crtdbg.h>
+#endif
+
+
+
+DEFINE_EVENT_TYPE(wxEVT_CROSSTHREADCALL)
+DEFINE_EVENT_TYPE(wxEVT_REPLY1)
+DEFINE_EVENT_TYPE(wxEVT_REPLY2)
+DEFINE_EVENT_TYPE(wxEVT_REPLY3)
+DEFINE_EVENT_TYPE(wxEVT_TABLEADDED)
+DEFINE_EVENT_TYPE(wxEVT_TABLEUPDATED)
+DEFINE_EVENT_TYPE(wxEVT_TABLEDELETED)
+
+CMainFrame* pframeMain = NULL;
+map<string, string> mapAddressBook;
+
+
+void ThreadRequestProductDetails(void* parg);
+void ThreadRandSendTest(void* parg);
+bool fRandSendTest = false;
+void RandSend();
+extern int g_isPainting;
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// Util
+//
+
+void HandleCtrlA(wxKeyEvent& event)
+{
+    // Ctrl-a select all
+    wxTextCtrl* textCtrl = (wxTextCtrl*)event.GetEventObject();
+    if (event.GetModifiers() == wxMOD_CONTROL && event.GetKeyCode() == 'A')
+        textCtrl->SetSelection(-1, -1);
+    event.Skip();
+}
+
+bool Is24HourTime()
+{
+    //char pszHourFormat[256];
+    //pszHourFormat[0] = '\0';
+    //GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ITIME, pszHourFormat, 256);
+    //return (pszHourFormat[0] != '0');
+    return true;
+}
+
+string DateStr(int64 nTime)
+{
+    return (string)wxDateTime((time_t)nTime).FormatDate();
+}
+
+string DateTimeStr(int64 nTime)
+{
+    wxDateTime datetime((time_t)nTime);
+    if (Is24HourTime())
+        return (string)datetime.Format("%x %H:%M");
+    else
+        return (string)datetime.Format("%x ") + itostr((datetime.GetHour() + 11) % 12 + 1) + (string)datetime.Format(":%M %p");
+}
+
+wxString GetItemText(wxListCtrl* listCtrl, int nIndex, int nColumn)
+{
+    // Helper to simplify access to listctrl
+    wxListItem item;
+    item.m_itemId = nIndex;
+    item.m_col = nColumn;
+    item.m_mask = wxLIST_MASK_TEXT;
+    if (!listCtrl->GetItem(item))
+        return "";
+    return item.GetText();
+}
+
+int InsertLine(wxListCtrl* listCtrl, const wxString& str0, const wxString& str1)
+{
+    int nIndex = listCtrl->InsertItem(listCtrl->GetItemCount(), str0);
+    listCtrl->SetItem(nIndex, 1, str1);
+    return nIndex;
+}
+
+int InsertLine(wxListCtrl* listCtrl, const wxString& str0, const wxString& str1, const wxString& str2, const wxString& str3, const wxString& str4)
+{
+    int nIndex = listCtrl->InsertItem(listCtrl->GetItemCount(), str0);
+    listCtrl->SetItem(nIndex, 1, str1);
+    listCtrl->SetItem(nIndex, 2, str2);
+    listCtrl->SetItem(nIndex, 3, str3);
+    listCtrl->SetItem(nIndex, 4, str4);
+    return nIndex;
+}
+
+int InsertLine(wxListCtrl* listCtrl, void* pdata, const wxString& str0, const wxString& str1, const wxString& str2, const wxString& str3, const wxString& str4)
+{
+    int nIndex = listCtrl->InsertItem(listCtrl->GetItemCount(), str0);
+    listCtrl->SetItemPtrData(nIndex, (wxUIntPtr)pdata);
+    listCtrl->SetItem(nIndex, 1, str1);
+    listCtrl->SetItem(nIndex, 2, str2);
+    listCtrl->SetItem(nIndex, 3, str3);
+    listCtrl->SetItem(nIndex, 4, str4);
+    return nIndex;
+}
+
+void SetSelection(wxListCtrl* listCtrl, int nIndex)
+{
+    int nSize = listCtrl->GetItemCount();
+    long nState = (wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED);
+    for (int i = 0; i < nSize; i++)
+        listCtrl->SetItemState(i, (i == nIndex ? nState : 0), nState);
+}
+
+int GetSelection(wxListCtrl* listCtrl)
+{
+    int nSize = listCtrl->GetItemCount();
+    for (int i = 0; i < nSize; i++)
+        if (listCtrl->GetItemState(i, wxLIST_STATE_FOCUSED))
+            return i;
+    return -1;
+}
+
+
+string HtmlEscape(const char* psz, bool fMultiLine=false)
+{
+    int len = 0;
+    for (const char* p = psz; *p; p++)
+    {
+             if (*p == '<') len += 4;
+        else if (*p == '>') len += 4;
+        else if (*p == '&') len += 5;
+        else if (*p == '"') len += 6;
+        else if (*p == ' ' && p > psz && p[-1] == ' ' && p[1] == ' ') len += 6;
+        else if (*p == '\n' && fMultiLine) len += 5;
+        else
+            len++;
+    }
+    string str;
+    str.reserve(len);
+    for (const char* p = psz; *p; p++)
+    {
+             if (*p == '<') str += "&lt;";
+        else if (*p == '>') str += "&gt;";
+        else if (*p == '&') str += "&amp;";
+        else if (*p == '"') str += "&quot;";
+        else if (*p == ' ' && p > psz && p[-1] == ' ' && p[1] == ' ') str += "&nbsp;";
+        else if (*p == '\n' && fMultiLine) str += "<br>\n";
+        else
+            str += *p;
+    }
+    return str;
+}
+
+string HtmlEscape(const string& str, bool fMultiLine=false)
+{
+    return HtmlEscape(str.c_str(), fMultiLine);
+}
+
+void AddToMyProducts(CProduct product)
+{
+    CProduct& productInsert = mapMyProducts[product.GetHash()];
+    productInsert = product;
+    InsertLine(pframeMain->m_listCtrlProductsSent, &productInsert,
+                product.mapValue["category"],
+                product.mapValue["title"].substr(0, 100),
+                product.mapValue["description"].substr(0, 100),
+                product.mapValue["price"],
+                "");
+}
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// Custom events
+//
+
+set<void*> setCallbackAvailable;
+CCriticalSection cs_setCallbackAvailable;
+
+void AddCallbackAvailable(void* p)
+{
+    CRITICAL_BLOCK(cs_setCallbackAvailable)
+        setCallbackAvailable.insert(p);
+}
+
+void RemoveCallbackAvailable(void* p)
+{
+    CRITICAL_BLOCK(cs_setCallbackAvailable)
+        setCallbackAvailable.erase(p);
+}
+
+bool IsCallbackAvailable(void* p)
+{
+    CRITICAL_BLOCK(cs_setCallbackAvailable)
+        return setCallbackAvailable.count(p);
+    return false;
+}
+
+template<typename T>
+void AddPendingCustomEvent(wxEvtHandler* pevthandler, int nEventID, const T pbeginIn, const T pendIn)
+{
+    if (!pevthandler)
+        return;
+
+    const char* pbegin = (pendIn != pbeginIn) ? &pbeginIn[0] : NULL;
+    const char* pend = pbegin + (pendIn - pbeginIn) * sizeof(pbeginIn[0]);
+    wxCommandEvent event(nEventID);
+    wxString strData(wxChar(0), (pend - pbegin) / sizeof(wxChar) + 1);
+    memcpy(&strData[0], pbegin, pend - pbegin);
+    event.SetString(strData);
+    event.SetInt(pend - pbegin);
+
+    pevthandler->AddPendingEvent(event);
+}
+
+template<class T>
+void AddPendingCustomEvent(wxEvtHandler* pevthandler, int nEventID, const T& obj)
+{
+    CDataStream ss;
+    ss << obj;
+    AddPendingCustomEvent(pevthandler, nEventID, ss.begin(), ss.end());
+}
+
+void AddPendingReplyEvent1(void* pevthandler, CDataStream& vRecv)
+{
+    if (IsCallbackAvailable(pevthandler))
+        AddPendingCustomEvent((wxEvtHandler*)pevthandler, wxEVT_REPLY1, vRecv.begin(), vRecv.end());
+}
+
+void AddPendingReplyEvent2(void* pevthandler, CDataStream& vRecv)
+{
+    if (IsCallbackAvailable(pevthandler))
+        AddPendingCustomEvent((wxEvtHandler*)pevthandler, wxEVT_REPLY2, vRecv.begin(), vRecv.end());
+}
+
+void AddPendingReplyEvent3(void* pevthandler, CDataStream& vRecv)
+{
+    if (IsCallbackAvailable(pevthandler))
+        AddPendingCustomEvent((wxEvtHandler*)pevthandler, wxEVT_REPLY3, vRecv.begin(), vRecv.end());
+}
+
+CDataStream GetStreamFromEvent(const wxCommandEvent& event)
+{
+    wxString strData = event.GetString();
+    return CDataStream(strData.begin(), strData.begin() + event.GetInt(), SER_NETWORK);
+}
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CMainFrame
+//
+
+CMainFrame::CMainFrame(wxWindow* parent) : CMainFrameBase(parent)
+{
+    Connect(wxEVT_CROSSTHREADCALL, wxCommandEventHandler(CMainFrame::OnCrossThreadCall), NULL, this);
+
+    // Init
+    fRefreshListCtrl = false;
+    fRefreshListCtrlRunning = false;
+    fOnSetFocusAddress = false;
+    pindexBestLast = NULL;
+    m_choiceFilter->SetSelection(0);
+    m_staticTextBalance->SetLabel(FormatMoney(GetBalance()) + "  ");
+    m_listCtrl->SetFocus();
+    SetIcon(wxICON(bitcoin));
+    m_menuOptions->Check(wxID_OPTIONSGENERATEBITCOINS, fGenerateBitcoins);
+
+    // Init toolbar with transparency masked bitmaps
+    m_toolBar->ClearTools();
+
+    //// shouldn't have to do mask separately anymore, bitmap alpha support added in wx 2.8.9,
+    wxBitmap bmpSend(wxT("send20"), wxBITMAP_TYPE_RESOURCE);
+    bmpSend.SetMask(new wxMask(wxBitmap(wxT("send20mask"), wxBITMAP_TYPE_RESOURCE)));
+    m_toolBar->AddTool(wxID_BUTTONSEND, wxT("&Send Coins"), bmpSend, wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
+
+    wxBitmap bmpAddressBook(wxT("addressbook20"), wxBITMAP_TYPE_RESOURCE);
+    bmpAddressBook.SetMask(new wxMask(wxBitmap(wxT("addressbook20mask"), wxBITMAP_TYPE_RESOURCE)));
+    m_toolBar->AddTool(wxID_BUTTONRECEIVE, wxT("&Address Book"), bmpAddressBook, wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
+
+    m_toolBar->Realize();
+
+    // Init column headers
+    int nDateWidth = DateTimeStr(1229413914).size() * 6 + 8;
+    m_listCtrl->InsertColumn(0, "",             wxLIST_FORMAT_LEFT,     0);
+    m_listCtrl->InsertColumn(1, "",             wxLIST_FORMAT_LEFT,     0);
+    m_listCtrl->InsertColumn(2, "Status",       wxLIST_FORMAT_LEFT,    90);
+    m_listCtrl->InsertColumn(3, "Date",         wxLIST_FORMAT_LEFT,   nDateWidth);
+    m_listCtrl->InsertColumn(4, "Description",  wxLIST_FORMAT_LEFT,   409 - nDateWidth);
+    m_listCtrl->InsertColumn(5, "Debit",        wxLIST_FORMAT_RIGHT,   79);
+    m_listCtrl->InsertColumn(6, "Credit",       wxLIST_FORMAT_RIGHT,   79);
+
+    //m_listCtrlProductsSent->InsertColumn(0, "Category",      wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlProductsSent->InsertColumn(1, "Title",         wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlProductsSent->InsertColumn(2, "Description",   wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlProductsSent->InsertColumn(3, "Price",         wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlProductsSent->InsertColumn(4, "",              wxLIST_FORMAT_LEFT,  100);
+
+    //m_listCtrlOrdersSent->InsertColumn(0, "Time",          wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlOrdersSent->InsertColumn(1, "Price",         wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlOrdersSent->InsertColumn(2, "",              wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlOrdersSent->InsertColumn(3, "",              wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlOrdersSent->InsertColumn(4, "",              wxLIST_FORMAT_LEFT,  100);
+
+    //m_listCtrlOrdersReceived->InsertColumn(0, "Time",            wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlOrdersReceived->InsertColumn(1, "Price",           wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlOrdersReceived->InsertColumn(2, "Payment Status",  wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlOrdersReceived->InsertColumn(3, "",                wxLIST_FORMAT_LEFT,  100);
+    //m_listCtrlOrdersReceived->InsertColumn(4, "",                wxLIST_FORMAT_LEFT,  100);
+
+    // Init status bar
+    int pnWidths[3] = { -100, 81, 286 };
+    m_statusBar->SetFieldsCount(3, pnWidths);
+
+    // Fill your address text box
+    vector<unsigned char> vchPubKey;
+    if (CWalletDB("r").ReadDefaultKey(vchPubKey))
+        m_textCtrlAddress->SetValue(PubKeyToAddress(vchPubKey));
+
+    // Fill listctrl with wallet transactions
+    RefreshListCtrl();
+}
+
+CMainFrame::~CMainFrame()
+{
+    pframeMain = NULL;
+}
+
+void Shutdown(void* parg)
+{
+    static CCriticalSection cs_Shutdown;
+    CRITICAL_BLOCK(cs_Shutdown)
+    {
+        fShutdown = true;
+        nTransactionsUpdated++;
+        DBFlush(false);
+        StopNode();
+        DBFlush(true);
+
+        printf("Bitcoin exiting\n");
+        exit(0);
+    }
+}
+
+void CMainFrame::OnClose(wxCloseEvent& event)
+{
+    Destroy();
+    _beginthread(Shutdown, 0, NULL);
+}
+
+void CMainFrame::OnMouseEvents(wxMouseEvent& event)
+{
+    RandAddSeed();
+    RAND_add(&event.m_x, sizeof(event.m_x), 0.25);
+    RAND_add(&event.m_y, sizeof(event.m_y), 0.25);
+}
+
+void CMainFrame::OnListColBeginDrag(wxListEvent& event)
+{
+     // Hidden columns not resizeable
+     if (event.GetColumn() <= 1 && !fDebug)
+        event.Veto();
+}
+
+void CMainFrame::InsertLine(bool fNew, int nIndex, uint256 hashKey, string strSort, const wxString& str2, const wxString& str3, const wxString& str4, const wxString& str5, const wxString& str6)
+{
+    string str0 = strSort;
+    long nData = *(long*)&hashKey;
+
+    if (fNew)
+    {
+        nIndex = m_listCtrl->InsertItem(0, str0);
+    }
+    else
+    {
+        if (nIndex == -1)
+        {
+            // Find item
+            while ((nIndex = m_listCtrl->FindItem(nIndex, nData)) != -1)
+                if (GetItemText(m_listCtrl, nIndex, 1) == hashKey.ToString())
+                    break;
+            if (nIndex == -1)
+            {
+                printf("CMainFrame::InsertLine : Couldn't find item to be updated\n");
+                return;
+            }
+        }
+
+        // If sort key changed, must delete and reinsert to make it relocate
+        if (GetItemText(m_listCtrl, nIndex, 0) != str0)
+        {
+            m_listCtrl->DeleteItem(nIndex);
+            nIndex = m_listCtrl->InsertItem(0, str0);
+        }
+    }
+
+    m_listCtrl->SetItem(nIndex, 1, hashKey.ToString());
+    m_listCtrl->SetItem(nIndex, 2, str2);
+    m_listCtrl->SetItem(nIndex, 3, str3);
+    m_listCtrl->SetItem(nIndex, 4, str4);
+    m_listCtrl->SetItem(nIndex, 5, str5);
+    m_listCtrl->SetItem(nIndex, 6, str6);
+    m_listCtrl->SetItemData(nIndex, nData);
+}
+
+string FormatTxStatus(const CWalletTx& wtx)
+{
+    // Status
+    int nDepth = wtx.GetDepthInMainChain();
+    if (!wtx.IsFinal())
+        return strprintf("Open for %d blocks", nBestHeight - wtx.nLockTime);
+    else if (nDepth < 6)
+        return strprintf("%d/unconfirmed", nDepth);
+    else
+        return strprintf("%d blocks", nDepth);
+}
+
+string SingleLine(const string& strIn)
+{
+    string strOut;
+    bool fOneSpace = false;
+    foreach(int c, strIn)
+    {
+        if (isspace(c))
+        {
+            fOneSpace = true;
+        }
+        else if (c > ' ')
+        {
+            if (fOneSpace && !strOut.empty())
+                strOut += ' ';
+            strOut += c;
+            fOneSpace = false;
+        }
+    }
+    return strOut;
+}
+
+void CMainFrame::InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex)
+{
+    int64 nTime = wtx.nTimeDisplayed = wtx.GetTxTime();
+    int64 nCredit = wtx.GetCredit();
+    int64 nDebit = wtx.GetDebit();
+    int64 nNet = nCredit - nDebit;
+    uint256 hash = wtx.GetHash();
+    string strStatus = FormatTxStatus(wtx);
+    map<string, string> mapValue = wtx.mapValue;
+
+    // Find the block the tx is in
+    CBlockIndex* pindex = NULL;
+    map<uint256, CBlockIndex*>::iterator mi = mapBlockIndex.find(wtx.hashBlock);
+    if (mi != mapBlockIndex.end())
+        pindex = (*mi).second;
+
+    // Sort order, unrecorded transactions sort to the top
+    string strSort = strprintf("%010d-%01d-%010u",
+        (pindex ? pindex->nHeight : INT_MAX),
+        (wtx.IsCoinBase() ? 1 : 0),
+        wtx.nTimeReceived);
+
+    // Insert line
+    if (nNet > 0 || wtx.IsCoinBase())
+    {
+        //
+        // Credit
+        //
+        string strDescription;
+
+        if (wtx.IsCoinBase())
+        {
+            // Coinbase
+            strDescription = "Generated";
+            if (nCredit == 0)
+            {
+                int64 nUnmatured = 0;
+                foreach(const CTxOut& txout, wtx.vout)
+                    nUnmatured += txout.GetCredit();
+                if (wtx.IsInMainChain())
+                    strDescription += strprintf(" (%s matures in %d more blocks)", FormatMoney(nUnmatured).c_str(), wtx.GetBlocksToMaturity());
+                else
+                    strDescription += " (not accepted)";
+            }
+        }
+        else if (!mapValue["from"].empty() || !mapValue["message"].empty())
+        {
+            // Online transaction
+            if (!mapValue["from"].empty())
+                strDescription += "From: " + mapValue["from"];
+            if (!mapValue["message"].empty())
+            {
+                if (!strDescription.empty())
+                    strDescription += " - ";
+                strDescription += mapValue["message"];
+            }
+        }
+        else
+        {
+            // Offline transaction
+            foreach(const CTxOut& txout, wtx.vout)
+            {
+                if (txout.IsMine())
+                {
+                    vector<unsigned char> vchPubKey;
+                    if (ExtractPubKey(txout.scriptPubKey, true, vchPubKey))
+                    {
+                        string strAddress = PubKeyToAddress(vchPubKey);
+                        if (mapAddressBook.count(strAddress))
+                        {
+                            //strDescription += "Received payment to ";
+                            //strDescription += "Received with address ";
+                            strDescription += "From: unknown, To: ";
+                            strDescription += strAddress;
+                            /// The labeling feature is just too confusing, so I hid it
+                            /// by putting it at the end where it runs off the screen.
+                            /// It can still be seen by widening the column, or in the
+                            /// details dialog.
+                            if (!mapAddressBook[strAddress].empty())
+                                strDescription += " (" + mapAddressBook[strAddress] + ")";
+                        }
+                    }
+                    break;
+                }
+            }
+        }
+
+        InsertLine(fNew, nIndex, hash, strSort,
+                   strStatus,
+                   nTime ? DateTimeStr(nTime) : "",
+                   SingleLine(strDescription),
+                   "",
+                   FormatMoney(nNet, true));
+    }
+    else
+    {
+        bool fAllFromMe = true;
+        foreach(const CTxIn& txin, wtx.vin)
+            fAllFromMe = fAllFromMe && txin.IsMine();
+
+        bool fAllToMe = true;
+        foreach(const CTxOut& txout, wtx.vout)
+            fAllToMe = fAllToMe && txout.IsMine();
+
+        if (fAllFromMe && fAllToMe)
+        {
+            // Payment to self
+            int64 nValue = wtx.vout[0].nValue;
+            InsertLine(fNew, nIndex, hash, strSort,
+                       strStatus,
+                       nTime ? DateTimeStr(nTime) : "",
+                       "Payment to yourself",
+                       FormatMoney(nNet - nValue, true),
+                       FormatMoney(nValue, true));
+        }
+        else if (fAllFromMe)
+        {
+            //
+            // Debit
+            //
+            int64 nTxFee = nDebit - wtx.GetValueOut();
+            for (int nOut = 0; nOut < wtx.vout.size(); nOut++)
+            {
+                const CTxOut& txout = wtx.vout[nOut];
+                if (txout.IsMine())
+                    continue;
+
+                string strAddress;
+                if (!mapValue["to"].empty())
+                {
+                    // Online transaction
+                    strAddress = mapValue["to"];
+                }
+                else
+                {
+                    // Offline transaction
+                    uint160 hash160;
+                    if (ExtractHash160(txout.scriptPubKey, hash160))
+                        strAddress = Hash160ToAddress(hash160);
+                }
+
+                string strDescription = "To: ";
+                if (mapAddressBook.count(strAddress) && !mapAddressBook[strAddress].empty())
+                    strDescription += mapAddressBook[strAddress] + " ";
+                strDescription += strAddress;
+                if (!mapValue["message"].empty())
+                {
+                    if (!strDescription.empty())
+                        strDescription += " - ";
+                    strDescription += mapValue["message"];
+                }
+
+                int64 nValue = txout.nValue;
+                if (nOut == 0 && nTxFee > 0)
+                    nValue += nTxFee;
+
+                InsertLine(fNew, nIndex, hash, strprintf("%s-%d", strSort.c_str(), nOut),
+                           strStatus,
+                           nTime ? DateTimeStr(nTime) : "",
+                           SingleLine(strDescription),
+                           FormatMoney(-nValue, true),
+                           "");
+            }
+        }
+        else
+        {
+            //
+            // Mixed debit transaction, can't break down payees
+            //
+            bool fAllMine = true;
+            foreach(const CTxOut& txout, wtx.vout)
+                fAllMine = fAllMine && txout.IsMine();
+            foreach(const CTxIn& txin, wtx.vin)
+                fAllMine = fAllMine && txin.IsMine();
+
+            InsertLine(fNew, nIndex, hash, strSort,
+                       strStatus,
+                       nTime ? DateTimeStr(nTime) : "",
+                       "",
+                       FormatMoney(nNet, true),
+                       "");
+        }
+    }
+}
+
+void CMainFrame::RefreshStatus()
+{
+    static int nLastTop;
+    int nTop = m_listCtrl->GetTopItem();
+    if (nTop == nLastTop && pindexBestLast == pindexBest)
+        return;
+
+    TRY_CRITICAL_BLOCK(cs_mapWallet)
+    {
+        int nStart = nTop;
+        int nEnd = min(nStart + 100, m_listCtrl->GetItemCount());
+        if (pindexBestLast == pindexBest)
+        {
+            if (nStart >= nLastTop && nStart < nLastTop + 100)
+                nStart = nLastTop + 100;
+            if (nEnd >= nLastTop && nEnd < nLastTop + 100)
+                nEnd = nLastTop;
+        }
+        nLastTop = nTop;
+        pindexBestLast = pindexBest;
+
+        for (int nIndex = nStart; nIndex < nEnd; nIndex++)
+        {
+            uint256 hash((string)GetItemText(m_listCtrl, nIndex, 1));
+            map<uint256, CWalletTx>::iterator mi = mapWallet.find(hash);
+            if (mi == mapWallet.end())
+            {
+                printf("CMainFrame::RefreshStatus() : tx not found in mapWallet\n");
+                continue;
+            }
+            const CWalletTx& wtx = (*mi).second;
+            if (wtx.IsCoinBase() || wtx.GetTxTime() != wtx.nTimeDisplayed)
+                InsertTransaction(wtx, false, nIndex);
+            else
+                m_listCtrl->SetItem(nIndex, 2, FormatTxStatus(wtx));
+        }
+    }
+}
+
+void CMainFrame::RefreshListCtrl()
+{
+    fRefreshListCtrl = true;
+    ::wxWakeUpIdle();
+}
+
+void CMainFrame::OnIdle(wxIdleEvent& event)
+{
+    if (fRefreshListCtrl)
+    {
+        // Collect list of wallet transactions and sort newest first
+        bool fEntered = false;
+        vector<pair<unsigned int, uint256> > vSorted;
+        TRY_CRITICAL_BLOCK(cs_mapWallet)
+        {
+            printf("RefreshListCtrl starting\n");
+            fEntered = true;
+            fRefreshListCtrl = false;
+            vWalletUpdated.clear();
+
+            // Do the newest transactions first
+            vSorted.reserve(mapWallet.size());
+            for (map<uint256, CWalletTx>::iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)
+            {
+                const CWalletTx& wtx = (*it).second;
+                unsigned int nTime = UINT_MAX - wtx.GetTxTime();
+                vSorted.push_back(make_pair(nTime, (*it).first));
+            }
+            m_listCtrl->DeleteAllItems();
+        }
+        if (!fEntered)
+            return;
+
+        sort(vSorted.begin(), vSorted.end());
+
+        // Fill list control
+        for (int i = 0; i < vSorted.size();)
+        {
+            if (fShutdown)
+                return;
+            bool fEntered = false;
+            TRY_CRITICAL_BLOCK(cs_mapWallet)
+            {
+                fEntered = true;
+                uint256& hash = vSorted[i++].second;
+                map<uint256, CWalletTx>::iterator mi = mapWallet.find(hash);
+                if (mi != mapWallet.end())
+                    InsertTransaction((*mi).second, true);
+            }
+            if (!fEntered || i == 100 || i % 500 == 0)
+                wxYield();
+        }
+
+        printf("RefreshListCtrl done\n");
+    }
+    else
+    {
+        // Check for time updates
+        static int64 nLastTime;
+        if (GetTime() > nLastTime + 30)
+        {
+            TRY_CRITICAL_BLOCK(cs_mapWallet)
+            {
+                nLastTime = GetTime();
+                for (map<uint256, CWalletTx>::iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)
+                {
+                    CWalletTx& wtx = (*it).second;
+                    if (wtx.nTimeDisplayed && wtx.nTimeDisplayed != wtx.GetTxTime())
+                        InsertTransaction(wtx, false);
+                }
+            }
+        }
+    }
+}
+
+void CMainFrame::OnPaint(wxPaintEvent& event)
+{
+    event.Skip();
+}
+
+void CMainFrame::OnPaintListCtrl(wxPaintEvent& event)
+{
+    // Update listctrl contents
+    if (!vWalletUpdated.empty())
+    {
+        TRY_CRITICAL_BLOCK(cs_mapWallet)
+        {
+            pair<uint256, bool> item;
+            foreach(item, vWalletUpdated)
+            {
+                bool fNew = item.second;
+                map<uint256, CWalletTx>::iterator mi = mapWallet.find(item.first);
+                if (mi != mapWallet.end())
+                {
+                    printf("vWalletUpdated: %s %s\n", (*mi).second.GetHash().ToString().substr(0,6).c_str(), fNew ? "new" : "");
+                    InsertTransaction((*mi).second, fNew);
+                }
+            }
+            m_listCtrl->ScrollList(0, INT_MAX);
+            vWalletUpdated.clear();
+        }
+    }
+
+    // Update status column of visible items only
+    RefreshStatus();
+
+    // Update status bar
+    string strGen = "";
+    if (fGenerateBitcoins)
+        strGen = "    Generating";
+    if (fGenerateBitcoins && vNodes.empty())
+        strGen = "(not connected)";
+    m_statusBar->SetStatusText(strGen, 1);
+
+    string strStatus = strprintf("     %d connections     %d blocks     %d transactions", vNodes.size(), nBestHeight + 1, m_listCtrl->GetItemCount());
+    m_statusBar->SetStatusText(strStatus, 2);
+
+    // Balance total
+    TRY_CRITICAL_BLOCK(cs_mapWallet)
+        m_staticTextBalance->SetLabel(FormatMoney(GetBalance()) + "  ");
+
+    m_listCtrl->OnPaint(event);
+}
+
+void CrossThreadCall(wxCommandEvent& event)
+{
+    if (pframeMain)
+        pframeMain->GetEventHandler()->AddPendingEvent(event);
+}
+
+void CrossThreadCall(int nID, void* pdata)
+{
+    wxCommandEvent event;
+    event.SetInt(nID);
+    event.SetClientData(pdata);
+    if (pframeMain)
+        pframeMain->GetEventHandler()->AddPendingEvent(event);
+}
+
+void CMainFrame::OnCrossThreadCall(wxCommandEvent& event)
+{
+    void* pdata = event.GetClientData();
+    switch (event.GetInt())
+    {
+        case UICALL_ADDORDER:
+        {
+            break;
+        }
+
+        case UICALL_UPDATEORDER:
+        {
+            break;
+        }
+    }
+}
+
+void CMainFrame::OnMenuFileExit(wxCommandEvent& event)
+{
+    Close(true);
+}
+
+void CMainFrame::OnMenuOptionsGenerate(wxCommandEvent& event)
+{
+    fGenerateBitcoins = event.IsChecked();
+    nTransactionsUpdated++;
+    CWalletDB().WriteSetting("fGenerateBitcoins", fGenerateBitcoins);
+
+    if (fGenerateBitcoins)
+        if (_beginthread(ThreadBitcoinMiner, 0, NULL) == -1)
+            printf("Error: _beginthread(ThreadBitcoinMiner) failed\n");
+
+    Refresh();
+    wxPaintEvent eventPaint;
+    AddPendingEvent(eventPaint);
+}
+
+void CMainFrame::OnMenuOptionsChangeYourAddress(wxCommandEvent& event)
+{
+    OnButtonChange(event);
+}
+
+void CMainFrame::OnMenuOptionsOptions(wxCommandEvent& event)
+{
+    COptionsDialog dialog(this);
+    dialog.ShowModal();
+}
+
+void CMainFrame::OnMenuHelpAbout(wxCommandEvent& event)
+{
+    CAboutDialog dialog(this);
+    dialog.ShowModal();
+}
+
+void CMainFrame::OnButtonSend(wxCommandEvent& event)
+{
+    /// debug test
+    if (fRandSendTest)
+    {
+        RandSend();
+        return;
+    }
+
+    // Toolbar: Send
+    CSendDialog dialog(this);
+    dialog.ShowModal();
+}
+
+void CMainFrame::OnButtonAddressBook(wxCommandEvent& event)
+{
+    // Toolbar: Address Book
+    CAddressBookDialog dialogAddr(this, "", false);
+    if (dialogAddr.ShowModal() == 2)
+    {
+        // Send
+        CSendDialog dialogSend(this, dialogAddr.GetAddress());
+        dialogSend.ShowModal();
+    }
+}
+
+void CMainFrame::OnSetFocusAddress(wxFocusEvent& event)
+{
+    // Automatically select-all when entering window
+    m_textCtrlAddress->SetSelection(-1, -1);
+    fOnSetFocusAddress = true;
+    event.Skip();
+}
+
+void CMainFrame::OnMouseEventsAddress(wxMouseEvent& event)
+{
+    if (fOnSetFocusAddress)
+        m_textCtrlAddress->SetSelection(-1, -1);
+    fOnSetFocusAddress = false;
+    event.Skip();
+}
+
+void CMainFrame::OnButtonCopy(wxCommandEvent& event)
+{
+    // Copy address box to clipboard
+    if (wxTheClipboard->Open())
+    {
+        wxTheClipboard->SetData(new wxTextDataObject(m_textCtrlAddress->GetValue()));
+        wxTheClipboard->Close();
+    }
+}
+
+void CMainFrame::OnButtonChange(wxCommandEvent& event)
+{
+    CYourAddressDialog dialog(this, string(m_textCtrlAddress->GetValue()));
+    if (!dialog.ShowModal())
+        return;
+    string strAddress = (string)dialog.GetAddress();
+    if (strAddress != m_textCtrlAddress->GetValue())
+    {
+        uint160 hash160;
+        if (!AddressToHash160(strAddress, hash160))
+            return;
+        if (!mapPubKeys.count(hash160))
+            return;
+        CWalletDB().WriteDefaultKey(mapPubKeys[hash160]);
+        m_textCtrlAddress->SetValue(strAddress);
+    }
+}
+
+void CMainFrame::OnListItemActivatedAllTransactions(wxListEvent& event)
+{
+    uint256 hash((string)GetItemText(m_listCtrl, event.GetIndex(), 1));
+    CWalletTx wtx;
+    CRITICAL_BLOCK(cs_mapWallet)
+    {
+        map<uint256, CWalletTx>::iterator mi = mapWallet.find(hash);
+        if (mi == mapWallet.end())
+        {
+            printf("CMainFrame::OnListItemActivatedAllTransactions() : tx not found in mapWallet\n");
+            return;
+        }
+        wtx = (*mi).second;
+    }
+    CTxDetailsDialog dialog(this, wtx);
+    dialog.ShowModal();
+    //CTxDetailsDialog* pdialog = new CTxDetailsDialog(this, wtx);
+    //pdialog->Show();
+}
+
+void CMainFrame::OnListItemActivatedProductsSent(wxListEvent& event)
+{
+    CProduct& product = *(CProduct*)event.GetItem().GetData();
+    CEditProductDialog* pdialog = new CEditProductDialog(this);
+    pdialog->SetProduct(product);
+    pdialog->Show();
+}
+
+void CMainFrame::OnListItemActivatedOrdersSent(wxListEvent& event)
+{
+    CWalletTx& order = *(CWalletTx*)event.GetItem().GetData();
+    CViewOrderDialog* pdialog = new CViewOrderDialog(this, order, false);
+    pdialog->Show();
+}
+
+void CMainFrame::OnListItemActivatedOrdersReceived(wxListEvent& event)
+{
+    CWalletTx& order = *(CWalletTx*)event.GetItem().GetData();
+    CViewOrderDialog* pdialog = new CViewOrderDialog(this, order, true);
+    pdialog->Show();
+}
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CTxDetailsDialog
+//
+
+CTxDetailsDialog::CTxDetailsDialog(wxWindow* parent, CWalletTx wtx) : CTxDetailsDialogBase(parent)
+{
+    string strHTML;
+    strHTML.reserve(4000);
+    strHTML += "<html><font face='verdana, arial, helvetica, sans-serif'>";
+
+    int64 nTime = wtx.GetTxTime();
+    int64 nCredit = wtx.GetCredit();
+    int64 nDebit = wtx.GetDebit();
+    int64 nNet = nCredit - nDebit;
+
+
+
+    strHTML += "<b>Status:</b> " + FormatTxStatus(wtx) + "<br>";
+    strHTML += "<b>Date:</b> " + (nTime ? DateTimeStr(nTime) : "") + "<br>";
+
+
+    //
+    // From
+    //
+    if (wtx.IsCoinBase())
+    {
+        strHTML += "<b>Source:</b> Generated<br>";
+    }
+    else if (!wtx.mapValue["from"].empty())
+    {
+        // Online transaction
+        if (!wtx.mapValue["from"].empty())
+            strHTML += "<b>From:</b> " + HtmlEscape(wtx.mapValue["from"]) + "<br>";
+    }
+    else
+    {
+        // Offline transaction
+        if (nNet > 0)
+        {
+            // Credit
+            foreach(const CTxOut& txout, wtx.vout)
+            {
+                if (txout.IsMine())
+                {
+                    vector<unsigned char> vchPubKey;
+                    if (ExtractPubKey(txout.scriptPubKey, true, vchPubKey))
+                    {
+                        string strAddress = PubKeyToAddress(vchPubKey);
+                        if (mapAddressBook.count(strAddress))
+                        {
+                            strHTML += "<b>From:</b> unknown<br>";
+                            strHTML += "<b>To:</b> ";
+                            strHTML += HtmlEscape(strAddress);
+                            if (!mapAddressBook[strAddress].empty())
+                                strHTML += " (yours, label: " + mapAddressBook[strAddress] + ")";
+                            else
+                                strHTML += " (yours)";
+                            strHTML += "<br>";
+                        }
+                    }
+                    break;
+                }
+            }
+        }
+    }
+
+
+    //
+    // To
+    //
+    string strAddress;
+    if (!wtx.mapValue["to"].empty())
+    {
+        // Online transaction
+        strAddress = wtx.mapValue["to"];
+        strHTML += "<b>To:</b> ";
+        if (mapAddressBook.count(strAddress) && !mapAddressBook[strAddress].empty())
+            strHTML += mapAddressBook[strAddress] + " ";
+        strHTML += HtmlEscape(strAddress) + "<br>";
+    }
+
+
+    //
+    // Amount
+    //
+    if (wtx.IsCoinBase() && nCredit == 0)
+    {
+        //
+        // Coinbase
+        //
+        int64 nUnmatured = 0;
+        foreach(const CTxOut& txout, wtx.vout)
+            nUnmatured += txout.GetCredit();
+        if (wtx.IsInMainChain())
+            strHTML += strprintf("<b>Credit:</b> (%s matures in %d more blocks)<br>", FormatMoney(nUnmatured).c_str(), wtx.GetBlocksToMaturity());
+        else
+            strHTML += "<b>Credit:</b> (not accepted)<br>";
+    }
+    else if (nNet > 0)
+    {
+        //
+        // Credit
+        //
+        strHTML += "<b>Credit:</b> " + FormatMoney(nNet) + "<br>";
+    }
+    else
+    {
+        bool fAllFromMe = true;
+        foreach(const CTxIn& txin, wtx.vin)
+            fAllFromMe = fAllFromMe && txin.IsMine();
+
+        bool fAllToMe = true;
+        foreach(const CTxOut& txout, wtx.vout)
+            fAllToMe = fAllToMe && txout.IsMine();
+
+        if (fAllFromMe)
+        {
+            //
+            // Debit
+            //
+            foreach(const CTxOut& txout, wtx.vout)
+            {
+                if (txout.IsMine())
+                    continue;
+
+                if (wtx.mapValue["to"].empty())
+                {
+                    // Offline transaction
+                    uint160 hash160;
+                    if (ExtractHash160(txout.scriptPubKey, hash160))
+                    {
+                        string strAddress = Hash160ToAddress(hash160);
+                        strHTML += "<b>To:</b> ";
+                        if (mapAddressBook.count(strAddress) && !mapAddressBook[strAddress].empty())
+                            strHTML += mapAddressBook[strAddress] + " ";
+                        strHTML += strAddress;
+                        strHTML += "<br>";
+                    }
+                }
+
+                strHTML += "<b>Debit:</b> " + FormatMoney(-txout.nValue) + "<br>";
+            }
+
+            if (fAllToMe)
+            {
+                // Payment to self
+                int64 nValue = wtx.vout[0].nValue;
+                strHTML += "<b>Debit:</b> " + FormatMoney(-nValue) + "<br>";
+                strHTML += "<b>Credit:</b> " + FormatMoney(nValue) + "<br>";
+            }
+
+            int64 nTxFee = nDebit - wtx.GetValueOut();
+            if (nTxFee > 0)
+                strHTML += "<b>Transaction fee:</b> " + FormatMoney(-nTxFee) + "<br>";
+        }
+        else
+        {
+            //
+            // Mixed debit transaction
+            //
+            foreach(const CTxIn& txin, wtx.vin)
+                if (txin.IsMine())
+                    strHTML += "<b>Debit:</b> " + FormatMoney(-txin.GetDebit()) + "<br>";
+            foreach(const CTxOut& txout, wtx.vout)
+                if (txout.IsMine())
+                    strHTML += "<b>Credit:</b> " + FormatMoney(txout.GetCredit()) + "<br>";
+        }
+    }
+
+    strHTML += "<b>Net amount:</b> " + FormatMoney(nNet, true) + "<br>";
+
+
+    //
+    // Message
+    //
+    if (!wtx.mapValue["message"].empty())
+        strHTML += "<br><b>Message:</b><br>" + HtmlEscape(wtx.mapValue["message"], true) + "<br>";
+
+    if (wtx.IsCoinBase())
+        strHTML += "<br>Generated coins must wait 120 blocks before they can be spent.  When you generated this block, it was broadcast to the network to be added to the block chain.  If it fails to get into the chain, it will change to \"not accepted\" and not be spendable.  This may occasionally happen if another node generates a block within a few seconds of yours.<br>";
+
+
+    //
+    // Debug view
+    //
+    if (fDebug)
+    {
+        strHTML += "<hr><br>debug print<br><br>";
+        foreach(const CTxIn& txin, wtx.vin)
+            if (txin.IsMine())
+                strHTML += "<b>Debit:</b> " + FormatMoney(-txin.GetDebit()) + "<br>";
+        foreach(const CTxOut& txout, wtx.vout)
+            if (txout.IsMine())
+                strHTML += "<b>Credit:</b> " + FormatMoney(txout.GetCredit()) + "<br>";
+
+        strHTML += "<b>Inputs:</b><br>";
+        CRITICAL_BLOCK(cs_mapWallet)
+        {
+            foreach(const CTxIn& txin, wtx.vin)
+            {
+                COutPoint prevout = txin.prevout;
+                map<uint256, CWalletTx>::iterator mi = mapWallet.find(prevout.hash);
+                if (mi != mapWallet.end())
+                {
+                    const CWalletTx& prev = (*mi).second;
+                    if (prevout.n < prev.vout.size())
+                    {
+                        strHTML += HtmlEscape(prev.ToString(), true);
+                        strHTML += " &nbsp;&nbsp; " + FormatTxStatus(prev) + ", ";
+                        strHTML = strHTML + "IsMine=" + (prev.vout[prevout.n].IsMine() ? "true" : "false") + "<br>";
+                    }
+                }
+            }
+        }
+
+        strHTML += "<br><hr><br><b>Transaction:</b><br>";
+        strHTML += HtmlEscape(wtx.ToString(), true);
+    }
+
+
+
+    strHTML += "</font></html>";
+    string(strHTML.begin(), strHTML.end()).swap(strHTML);
+    m_htmlWin->SetPage(strHTML);
+    m_buttonOK->SetFocus();
+}
+
+void CTxDetailsDialog::OnButtonOK(wxCommandEvent& event)
+{
+    Close();
+    //Destroy();
+}
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// COptionsDialog
+//
+
+COptionsDialog::COptionsDialog(wxWindow* parent) : COptionsDialogBase(parent)
+{
+    m_textCtrlTransactionFee->SetValue(FormatMoney(nTransactionFee));
+    m_buttonOK->SetFocus();
+}
+
+void COptionsDialog::OnKillFocusTransactionFee(wxFocusEvent& event)
+{
+    int64 nTmp = nTransactionFee;
+    ParseMoney(m_textCtrlTransactionFee->GetValue(), nTmp);
+    m_textCtrlTransactionFee->SetValue(FormatMoney(nTmp));
+}
+
+void COptionsDialog::OnButtonOK(wxCommandEvent& event)
+{
+    // nTransactionFee
+    int64 nPrevTransactionFee = nTransactionFee;
+    if (ParseMoney(m_textCtrlTransactionFee->GetValue(), nTransactionFee) && nTransactionFee != nPrevTransactionFee)
+        CWalletDB().WriteSetting("nTransactionFee", nTransactionFee);
+
+    Close();
+}
+
+void COptionsDialog::OnButtonCancel(wxCommandEvent& event)
+{
+    Close();
+}
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CAboutDialog
+//
+
+CAboutDialog::CAboutDialog(wxWindow* parent) : CAboutDialogBase(parent)
+{
+    m_staticTextVersion->SetLabel(strprintf("version 0.%d.%d Alpha", VERSION/100, VERSION%100));
+
+    // Workaround until upgrade to wxWidgets supporting UTF-8
+    wxString str = m_staticTextMain->GetLabel();
+    if (str.Find('Â') != wxNOT_FOUND)
+        str.Remove(str.Find('Â'), 1);
+    m_staticTextMain->SetLabel(str);
+}
+
+void CAboutDialog::OnButtonOK(wxCommandEvent& event)
+{
+    Close();
+}
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CSendDialog
+//
+
+CSendDialog::CSendDialog(wxWindow* parent, const wxString& strAddress) : CSendDialogBase(parent)
+{
+    // Init
+    m_textCtrlAddress->SetValue(strAddress);
+    m_choiceTransferType->SetSelection(0);
+    m_bitmapCheckMark->Show(false);
+    //// todo: should add a display of your balance for convenience
+
+    // Set Icon
+    wxBitmap bmpSend(wxT("send16"), wxBITMAP_TYPE_RESOURCE);
+    bmpSend.SetMask(new wxMask(wxBitmap(wxT("send16masknoshadow"), wxBITMAP_TYPE_RESOURCE)));
+    wxIcon iconSend;
+    iconSend.CopyFromBitmap(bmpSend);
+    SetIcon(iconSend);
+
+    wxCommandEvent event;
+    OnTextAddress(event);
+
+    // Fixup the tab order
+    m_buttonPaste->MoveAfterInTabOrder(m_buttonCancel);
+    m_buttonAddress->MoveAfterInTabOrder(m_buttonPaste);
+    this->Layout();
+}
+
+void CSendDialog::OnTextAddress(wxCommandEvent& event)
+{
+    // Check mark
+    bool fBitcoinAddress = IsValidBitcoinAddress(m_textCtrlAddress->GetValue());
+    m_bitmapCheckMark->Show(fBitcoinAddress);
+
+    // Grey out message if bitcoin address
+    bool fEnable = !fBitcoinAddress;
+    m_staticTextFrom->Enable(fEnable);
+    m_textCtrlFrom->Enable(fEnable);
+    m_staticTextMessage->Enable(fEnable);
+    m_textCtrlMessage->Enable(fEnable);
+    m_textCtrlMessage->SetBackgroundColour(wxSystemSettings::GetColour(fEnable ? wxSYS_COLOUR_WINDOW : wxSYS_COLOUR_BTNFACE));
+}
+
+void CSendDialog::OnKillFocusAmount(wxFocusEvent& event)
+{
+    // Reformat the amount
+    if (m_textCtrlAmount->GetValue().Trim().empty())
+        return;
+    int64 nTmp;
+    if (ParseMoney(m_textCtrlAmount->GetValue(), nTmp))
+        m_textCtrlAmount->SetValue(FormatMoney(nTmp));
+}
+
+void CSendDialog::OnButtonAddressBook(wxCommandEvent& event)
+{
+    // Open address book
+    CAddressBookDialog dialog(this, m_textCtrlAddress->GetValue(), true);
+    if (dialog.ShowModal())
+        m_textCtrlAddress->SetValue(dialog.GetAddress());
+}
+
+void CSendDialog::OnButtonPaste(wxCommandEvent& event)
+{
+    // Copy clipboard to address box
+    if (wxTheClipboard->Open())
+    {
+        if (wxTheClipboard->IsSupported(wxDF_TEXT))
+        {
+            wxTextDataObject data;
+            wxTheClipboard->GetData(data);
+            m_textCtrlAddress->SetValue(data.GetText());
+        }
+        wxTheClipboard->Close();
+    }
+}
+
+void CSendDialog::OnButtonSend(wxCommandEvent& event)
+{
+    CWalletTx wtx;
+    string strAddress = (string)m_textCtrlAddress->GetValue();
+
+    // Parse amount
+    int64 nValue = 0;
+    if (!ParseMoney(m_textCtrlAmount->GetValue(), nValue) || nValue <= 0)
+    {
+        wxMessageBox("Error in amount  ", "Send Coins");
+        return;
+    }
+    if (nValue > GetBalance())
+    {
+        wxMessageBox("Amount exceeds your balance  ", "Send Coins");
+        return;
+    }
+    if (nValue + nTransactionFee > GetBalance())
+    {
+        wxMessageBox(string("Total exceeds your balance when the ") + FormatMoney(nTransactionFee) + " transaction fee is included  ", "Send Coins");
+        return;
+    }
+
+    // Parse bitcoin address
+    uint160 hash160;
+    bool fBitcoinAddress = AddressToHash160(strAddress, hash160);
+
+    if (fBitcoinAddress)
+    {
+        // Send to bitcoin address
+        CScript scriptPubKey;
+        scriptPubKey << OP_DUP << OP_HASH160 << hash160 << OP_EQUALVERIFY << OP_CHECKSIG;
+
+        if (!SendMoney(scriptPubKey, nValue, wtx))
+            return;
+
+        wxMessageBox("Payment sent  ", "Sending...");
+    }
+    else
+    {
+        // Parse IP address
+        CAddress addr(strAddress.c_str());
+        if (addr.ip == 0)
+        {
+            wxMessageBox("Invalid address  ", "Send Coins");
+            return;
+        }
+
+        // Message
+        wtx.mapValue["to"] = strAddress;
+        wtx.mapValue["from"] = m_textCtrlFrom->GetValue();
+        wtx.mapValue["message"] = m_textCtrlMessage->GetValue();
+
+        // Send to IP address
+        CSendingDialog* pdialog = new CSendingDialog(this, addr, nValue, wtx);
+        if (!pdialog->ShowModal())
+            return;
+    }
+
+    if (!mapAddressBook.count(strAddress))
+        SetAddressBookName(strAddress, "");
+
+    EndModal(true);
+}
+
+void CSendDialog::OnButtonCancel(wxCommandEvent& event)
+{
+    // Cancel
+    EndModal(false);
+}
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CSendingDialog
+//
+
+CSendingDialog::CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 nPriceIn, const CWalletTx& wtxIn) : CSendingDialogBase(NULL) // we have to give null so parent can't destroy us
+{
+    addr = addrIn;
+    nPrice = nPriceIn;
+    wtx = wtxIn;
+    start = wxDateTime::UNow();
+    strStatus = "";
+    fCanCancel = true;
+    fAbort = false;
+    fSuccess = false;
+    fUIDone = false;
+    fWorkDone = false;
+
+    SetTitle(strprintf("Sending %s to %s...", FormatMoney(nPrice).c_str(), wtx.mapValue["to"].c_str()));
+    m_textCtrlStatus->SetValue("");
+
+    _beginthread(SendingDialogStartTransfer, 0, this);
+}
+
+CSendingDialog::~CSendingDialog()
+{
+    printf("~CSendingDialog()\n");
+}
+
+void CSendingDialog::Close()
+{
+    // Last one out turn out the lights.
+    // fWorkDone signals that work side is done and UI thread should call destroy.
+    // fUIDone signals that UI window has closed and work thread should call destroy.
+    // This allows the window to disappear and end modality when cancelled
+    // without making the user wait for ConnectNode to return.  The dialog object
+    // hangs around in the background until the work thread exits.
+    if (IsModal())
+        EndModal(fSuccess);
+    else
+        Show(false);
+    if (fWorkDone)
+        Destroy();
+    else
+        fUIDone = true;
+}
+
+void CSendingDialog::OnClose(wxCloseEvent& event)
+{
+    if (!event.CanVeto() || fWorkDone || fAbort || !fCanCancel)
+    {
+        Close();
+    }
+    else
+    {
+        event.Veto();
+        wxCommandEvent cmdevent;
+        OnButtonCancel(cmdevent);
+    }
+}
+
+void CSendingDialog::OnButtonOK(wxCommandEvent& event)
+{
+    if (fWorkDone)
+        Close();
+}
+
+void CSendingDialog::OnButtonCancel(wxCommandEvent& event)
+{
+    if (fCanCancel)
+        fAbort = true;
+}
+
+void CSendingDialog::OnPaint(wxPaintEvent& event)
+{
+    if (strStatus.size() > 130)
+        m_textCtrlStatus->SetValue(string("\n") + strStatus);
+    else
+        m_textCtrlStatus->SetValue(string("\n\n") + strStatus);
+    m_staticTextSending->SetFocus();
+    if (!fCanCancel)
+        m_buttonCancel->Enable(false);
+    if (fWorkDone)
+    {
+        m_buttonOK->Enable(true);
+        m_buttonOK->SetFocus();
+        m_buttonCancel->Enable(false);
+    }
+    if (fAbort && fCanCancel && IsShown())
+    {
+        strStatus = "CANCELLED";
+        m_buttonOK->Enable(true);
+        m_buttonOK->SetFocus();
+        m_buttonCancel->Enable(false);
+        m_buttonCancel->SetLabel("Cancelled");
+        Close();
+        wxMessageBox("Transfer cancelled  ", "Sending...", wxOK, this);
+    }
+    event.Skip();
+
+    /// debug test
+    if (fRandSendTest && fWorkDone && fSuccess)
+    {
+        Close();
+        Sleep(1000);
+        RandSend();
+    }
+}
+
+
+//
+// Everything from here on is not in the UI thread and must only communicate
+// with the rest of the dialog through variables and calling repaint.
+//
+
+void CSendingDialog::Repaint()
+{
+    Refresh();
+    wxPaintEvent event;
+    AddPendingEvent(event);
+}
+
+bool CSendingDialog::Status()
+{
+    if (fUIDone)
+    {
+        Destroy();
+        return false;
+    }
+    if (fAbort && fCanCancel)
+    {
+        strStatus = "CANCELLED";
+        Repaint();
+        fWorkDone = true;
+        return false;
+    }
+    return true;
+}
+
+bool CSendingDialog::Status(const string& str)
+{
+    if (!Status())
+        return false;
+    strStatus = str;
+    Repaint();
+    return true;
+}
+
+bool CSendingDialog::Error(const string& str)
+{
+    fCanCancel = false;
+    fWorkDone = true;
+    Status(string("Error: ") + str);
+    return false;
+}
+
+void SendingDialogStartTransfer(void* parg)
+{
+    ((CSendingDialog*)parg)->StartTransfer();
+}
+
+void CSendingDialog::StartTransfer()
+{
+    // Make sure we have enough money
+    if (nPrice + nTransactionFee > GetBalance())
+    {
+        Error("You don't have enough money");
+        return;
+    }
+
+    // We may have connected already for product details
+    if (!Status("Connecting..."))
+        return;
+    CNode* pnode = ConnectNode(addr, 5 * 60);
+    if (!pnode)
+    {
+        Error("Unable to connect");
+        return;
+    }
+
+    // Send order to seller, with response going to OnReply2 via event handler
+    if (!Status("Requesting public key..."))
+        return;
+    pnode->PushRequest("checkorder", wtx, SendingDialogOnReply2, this);
+}
+
+void SendingDialogOnReply2(void* parg, CDataStream& vRecv)
+{
+    ((CSendingDialog*)parg)->OnReply2(vRecv);
+}
+
+void CSendingDialog::OnReply2(CDataStream& vRecv)
+{
+    if (!Status("Received public key..."))
+        return;
+
+    CScript scriptPubKey;
+    int nRet;
+    try
+    {
+        vRecv >> nRet;
+        if (nRet > 0)
+        {
+            string strMessage;
+            vRecv >> strMessage;
+            Error("Transfer was not accepted");
+            //// todo: enlarge the window and enable a hidden white box to put seller's message
+            return;
+        }
+        vRecv >> scriptPubKey;
+    }
+    catch (...)
+    {
+        //// what do we want to do about this?
+        Error("Invalid response received");
+        return;
+    }
+
+    // Should already be connected
+    CNode* pnode = ConnectNode(addr, 5 * 60);
+    if (!pnode)
+    {
+        Error("Lost connection");
+        return;
+    }
+
+    // Pause to give the user a chance to cancel
+    while (wxDateTime::UNow() < start + wxTimeSpan(0, 0, 0, 2 * 1000))
+    {
+        Sleep(200);
+        if (!Status())
+            return;
+    }
+
+    CRITICAL_BLOCK(cs_main)
+    {
+        // Pay
+        if (!Status("Creating transaction..."))
+            return;
+        if (nPrice + nTransactionFee > GetBalance())
+        {
+            Error("You don't have enough money");
+            return;
+        }
+        int64 nFeeRequired;
+        if (!CreateTransaction(scriptPubKey, nPrice, wtx, nFeeRequired))
+        {
+            if (nPrice + nFeeRequired > GetBalance())
+                Error(strprintf("This is an oversized transaction that requires a transaction fee of %s", FormatMoney(nFeeRequired).c_str()));
+            else
+                Error("Transaction creation failed");
+            return;
+        }
+
+        // Last chance to cancel
+        Sleep(50);
+        if (!Status())
+            return;
+        fCanCancel = false;
+        if (fAbort)
+        {
+            fCanCancel = true;
+            if (!Status())
+                return;
+            fCanCancel = false;
+        }
+        if (!Status("Sending payment..."))
+            return;
+
+        // Commit
+        if (!CommitTransactionSpent(wtx))
+        {
+            Error("Error finalizing payment");
+            return;
+        }
+
+        // Send payment tx to seller, with response going to OnReply3 via event handler
+        pnode->PushRequest("submitorder", wtx, SendingDialogOnReply3, this);
+
+        // Accept and broadcast transaction
+        if (!wtx.AcceptTransaction())
+            printf("ERROR: CSendingDialog : wtxNew.AcceptTransaction() %s failed\n", wtx.GetHash().ToString().c_str());
+        wtx.RelayWalletTransaction();
+
+        Status("Waiting for confirmation...");
+        MainFrameRepaint();
+    }
+}
+
+void SendingDialogOnReply3(void* parg, CDataStream& vRecv)
+{
+    ((CSendingDialog*)parg)->OnReply3(vRecv);
+}
+
+void CSendingDialog::OnReply3(CDataStream& vRecv)
+{
+    int nRet;
+    try
+    {
+        vRecv >> nRet;
+        if (nRet > 0)
+        {
+            Error("The payment was sent, but the recipient was unable to verify it.\n"
+                  "The transaction is recorded and will credit to the recipient if it is valid,\n"
+                  "but without comment information.");
+            return;
+        }
+    }
+    catch (...)
+    {
+        //// what do we want to do about this?
+        Error("Payment was sent, but an invalid response was received");
+        return;
+    }
+
+    fSuccess = true;
+    fWorkDone = true;
+    Status("Payment completed");
+}
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CYourAddressDialog
+//
+
+CYourAddressDialog::CYourAddressDialog(wxWindow* parent, const string& strInitSelected) : CYourAddressDialogBase(parent)
+{
+    // Init column headers
+    m_listCtrl->InsertColumn(0, "Label", wxLIST_FORMAT_LEFT, 200);
+    m_listCtrl->InsertColumn(1, "Bitcoin Address", wxLIST_FORMAT_LEFT, 350);
+    m_listCtrl->SetFocus();
+
+    // Fill listctrl with address book data
+    CRITICAL_BLOCK(cs_mapKeys)
+    {
+        foreach(const PAIRTYPE(string, string)& item, mapAddressBook)
+        {
+            string strAddress = item.first;
+            string strName = item.second;
+            uint160 hash160;
+            bool fMine = (AddressToHash160(strAddress, hash160) && mapPubKeys.count(hash160));
+            if (fMine)
+            {
+                int nIndex = InsertLine(m_listCtrl, strName, strAddress);
+                if (strAddress == strInitSelected)
+                    m_listCtrl->SetItemState(nIndex, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED);
+            }
+        }
+    }
+}
+
+wxString CYourAddressDialog::GetAddress()
+{
+    int nIndex = GetSelection(m_listCtrl);
+    if (nIndex == -1)
+        return "";
+    return GetItemText(m_listCtrl, nIndex, 1);
+}
+
+void CYourAddressDialog::OnListEndLabelEdit(wxListEvent& event)
+{
+    // Update address book with edited name
+    if (event.IsEditCancelled())
+        return;
+    string strAddress = (string)GetItemText(m_listCtrl, event.GetIndex(), 1);
+    SetAddressBookName(strAddress, string(event.GetText()));
+    pframeMain->RefreshListCtrl();
+}
+
+void CYourAddressDialog::OnListItemSelected(wxListEvent& event)
+{
+}
+
+void CYourAddressDialog::OnListItemActivated(wxListEvent& event)
+{
+    // Doubleclick edits item
+    wxCommandEvent event2;
+    OnButtonRename(event2);
+}
+
+void CYourAddressDialog::OnButtonRename(wxCommandEvent& event)
+{
+    // Ask new name
+    int nIndex = GetSelection(m_listCtrl);
+    if (nIndex == -1)
+        return;
+    string strName = (string)m_listCtrl->GetItemText(nIndex);
+    string strAddress = (string)GetItemText(m_listCtrl, nIndex, 1);
+    CGetTextFromUserDialog dialog(this, "Edit Address Label", "New Label", strName);
+    if (!dialog.ShowModal())
+        return;
+    strName = dialog.GetValue();
+
+    // Change name
+    SetAddressBookName(strAddress, strName);
+    m_listCtrl->SetItemText(nIndex, strName);
+    pframeMain->RefreshListCtrl();
+}
+
+void CYourAddressDialog::OnButtonNew(wxCommandEvent& event)
+{
+    // Ask name
+    CGetTextFromUserDialog dialog(this, "New Bitcoin Address", "Label", "");
+    if (!dialog.ShowModal())
+        return;
+    string strName = dialog.GetValue();
+
+    // Generate new key
+    string strAddress = PubKeyToAddress(GenerateNewKey());
+    SetAddressBookName(strAddress, strName);
+
+    // Add to list and select it
+    int nIndex = InsertLine(m_listCtrl, strName, strAddress);
+    SetSelection(m_listCtrl, nIndex);
+    m_listCtrl->SetFocus();
+}
+
+void CYourAddressDialog::OnButtonCopy(wxCommandEvent& event)
+{
+    // Copy address box to clipboard
+    if (wxTheClipboard->Open())
+    {
+        wxTheClipboard->SetData(new wxTextDataObject(GetAddress()));
+        wxTheClipboard->Close();
+    }
+}
+
+void CYourAddressDialog::OnButtonOK(wxCommandEvent& event)
+{
+    // OK
+    EndModal(true);
+}
+
+void CYourAddressDialog::OnButtonCancel(wxCommandEvent& event)
+{
+    // Cancel
+    EndModal(false);
+}
+
+void CYourAddressDialog::OnClose(wxCloseEvent& event)
+{
+    // Close
+    EndModal(false);
+}
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CAddressBookDialog
+//
+
+CAddressBookDialog::CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, bool fSendingIn) : CAddressBookDialogBase(parent)
+{
+    fSending = fSendingIn;
+    if (!fSending)
+        m_buttonCancel->Show(false);
+
+    // Init column headers
+    m_listCtrl->InsertColumn(0, "Name", wxLIST_FORMAT_LEFT, 200);
+    m_listCtrl->InsertColumn(1, "Address", wxLIST_FORMAT_LEFT, 350);
+    m_listCtrl->SetFocus();
+
+    // Set Icon
+    wxBitmap bmpAddressBook(wxT("addressbook16"), wxBITMAP_TYPE_RESOURCE);
+    bmpAddressBook.SetMask(new wxMask(wxBitmap(wxT("addressbook16mask"), wxBITMAP_TYPE_RESOURCE)));
+    wxIcon iconAddressBook;
+    iconAddressBook.CopyFromBitmap(bmpAddressBook);
+    SetIcon(iconAddressBook);
+
+    // Fill listctrl with address book data
+    CRITICAL_BLOCK(cs_mapKeys)
+    {
+        foreach(const PAIRTYPE(string, string)& item, mapAddressBook)
+        {
+            string strAddress = item.first;
+            string strName = item.second;
+            uint160 hash160;
+            bool fMine = (AddressToHash160(strAddress, hash160) && mapPubKeys.count(hash160));
+            if (!fMine)
+            {
+                int nIndex = InsertLine(m_listCtrl, strName, strAddress);
+                if (strAddress == strInitSelected)
+                    m_listCtrl->SetItemState(nIndex, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED);
+            }
+        }
+    }
+}
+
+wxString CAddressBookDialog::GetAddress()
+{
+    int nIndex = GetSelection(m_listCtrl);
+    if (nIndex == -1)
+        return "";
+    return GetItemText(m_listCtrl, nIndex, 1);
+}
+
+void CAddressBookDialog::OnListEndLabelEdit(wxListEvent& event)
+{
+    // Update address book with edited name
+    if (event.IsEditCancelled())
+        return;
+    string strAddress = (string)GetItemText(m_listCtrl, event.GetIndex(), 1);
+    SetAddressBookName(strAddress, string(event.GetText()));
+    pframeMain->RefreshListCtrl();
+}
+
+void CAddressBookDialog::OnListItemSelected(wxListEvent& event)
+{
+}
+
+void CAddressBookDialog::OnListItemActivated(wxListEvent& event)
+{
+    if (fSending)
+    {
+        // Doubleclick returns selection
+        EndModal(GetAddress() != "" ? 2 : 0);
+    }
+    else
+    {
+        // Doubleclick edits item
+        wxCommandEvent event2;
+        OnButtonEdit(event2);
+    }
+}
+
+bool CAddressBookDialog::CheckIfMine(const string& strAddress, const string& strTitle)
+{
+    uint160 hash160;
+    bool fMine = (AddressToHash160(strAddress, hash160) && mapPubKeys.count(hash160));
+    if (fMine)
+        wxMessageBox("This is one of your own addresses for receiving payments and cannot be entered in the address book.  ", strTitle);
+    return fMine;
+}
+
+void CAddressBookDialog::OnButtonEdit(wxCommandEvent& event)
+{
+    // Ask new name
+    int nIndex = GetSelection(m_listCtrl);
+    if (nIndex == -1)
+        return;
+    string strName = (string)m_listCtrl->GetItemText(nIndex);
+    string strAddress = (string)GetItemText(m_listCtrl, nIndex, 1);
+    string strAddressOrg = strAddress;
+    do
+    {
+        CGetTextFromUserDialog dialog(this, "Edit Address", "Name", strName, "Address", strAddress);
+        if (!dialog.ShowModal())
+            return;
+        strName = dialog.GetValue1();
+        strAddress = dialog.GetValue2();
+    }
+    while (CheckIfMine(strAddress, "Edit Address"));
+
+    // Change name
+    if (strAddress != strAddressOrg)
+        CWalletDB().EraseName(strAddressOrg);
+    SetAddressBookName(strAddress, strName);
+    m_listCtrl->SetItem(nIndex, 1, strAddress);
+    m_listCtrl->SetItemText(nIndex, strName);
+    pframeMain->RefreshListCtrl();
+}
+
+void CAddressBookDialog::OnButtonNew(wxCommandEvent& event)
+{
+    // Ask name
+    string strName;
+    string strAddress;
+    do
+    {
+        CGetTextFromUserDialog dialog(this, "New Address", "Name", strName, "Address", strAddress);
+        if (!dialog.ShowModal())
+            return;
+        strName = dialog.GetValue1();
+        strAddress = dialog.GetValue2();
+    }
+    while (CheckIfMine(strAddress, "New Address"));
+
+    // Add to list and select it
+    SetAddressBookName(strAddress, strName);
+    int nIndex = InsertLine(m_listCtrl, strName, strAddress);
+    SetSelection(m_listCtrl, nIndex);
+    m_listCtrl->SetFocus();
+    pframeMain->RefreshListCtrl();
+}
+
+void CAddressBookDialog::OnButtonDelete(wxCommandEvent& event)
+{
+    for (int nIndex = m_listCtrl->GetItemCount()-1; nIndex >= 0; nIndex--)
+    {
+        if (m_listCtrl->GetItemState(nIndex, wxLIST_STATE_SELECTED))
+        {
+            string strAddress = (string)GetItemText(m_listCtrl, nIndex, 1);
+            CWalletDB().EraseName(strAddress);
+            m_listCtrl->DeleteItem(nIndex);
+        }
+    }
+    pframeMain->RefreshListCtrl();
+}
+
+void CAddressBookDialog::OnButtonCopy(wxCommandEvent& event)
+{
+    // Copy address box to clipboard
+    if (wxTheClipboard->Open())
+    {
+        wxTheClipboard->SetData(new wxTextDataObject(GetAddress()));
+        wxTheClipboard->Close();
+    }
+}
+
+void CAddressBookDialog::OnButtonOK(wxCommandEvent& event)
+{
+    // OK
+    EndModal(GetAddress() != "" ? 1 : 0);
+}
+
+void CAddressBookDialog::OnButtonCancel(wxCommandEvent& event)
+{
+    // Cancel
+    EndModal(0);
+}
+
+void CAddressBookDialog::OnClose(wxCloseEvent& event)
+{
+    // Close
+    EndModal(0);
+}
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CProductsDialog
+//
+
+bool CompareIntStringPairBestFirst(const pair<int, string>& item1, const pair<int, string>& item2)
+{
+    return (item1.first > item2.first);
+}
+
+CProductsDialog::CProductsDialog(wxWindow* parent) : CProductsDialogBase(parent)
+{
+    // Init column headers
+    m_listCtrl->InsertColumn(0, "Title",  wxLIST_FORMAT_LEFT, 200);
+    m_listCtrl->InsertColumn(1, "Price",  wxLIST_FORMAT_LEFT, 80);
+    m_listCtrl->InsertColumn(2, "Seller", wxLIST_FORMAT_LEFT, 80);
+    m_listCtrl->InsertColumn(3, "Stars",  wxLIST_FORMAT_LEFT, 50);
+    m_listCtrl->InsertColumn(4, "Power",  wxLIST_FORMAT_LEFT, 50);
+
+    // Tally top categories
+    map<string, int> mapTopCategories;
+    CRITICAL_BLOCK(cs_mapProducts)
+        for (map<uint256, CProduct>::iterator mi = mapProducts.begin(); mi != mapProducts.end(); ++mi)
+            mapTopCategories[(*mi).second.mapValue["category"]]++;
+
+    // Sort top categories
+    vector<pair<int, string> > vTopCategories;
+    for (map<string, int>::iterator mi = mapTopCategories.begin(); mi != mapTopCategories.end(); ++mi)
+        vTopCategories.push_back(make_pair((*mi).second, (*mi).first));
+    sort(vTopCategories.begin(), vTopCategories.end(), CompareIntStringPairBestFirst);
+
+    // Fill categories combo box
+    int nLimit = 250;
+    for (vector<pair<int, string> >::iterator it = vTopCategories.begin(); it != vTopCategories.end() && nLimit-- > 0; ++it)
+        m_comboBoxCategory->Append((*it).second);
+
+    // Fill window with initial search
+    //wxCommandEvent event;
+    //OnButtonSearch(event);
+}
+
+void CProductsDialog::OnCombobox(wxCommandEvent& event)
+{
+    OnButtonSearch(event);
+}
+
+bool CompareProductsBestFirst(const CProduct* p1, const CProduct* p2)
+{
+    return (p1->nAtoms > p2->nAtoms);
+}
+
+void CProductsDialog::OnButtonSearch(wxCommandEvent& event)
+{
+    string strCategory = (string)m_comboBoxCategory->GetValue();
+    string strSearch = (string)m_textCtrlSearch->GetValue();
+
+    // Search products
+    vector<CProduct*> vProductsFound;
+    CRITICAL_BLOCK(cs_mapProducts)
+    {
+        for (map<uint256, CProduct>::iterator mi = mapProducts.begin(); mi != mapProducts.end(); ++mi)
+        {
+            CProduct& product = (*mi).second;
+            if (product.mapValue["category"].find(strCategory) != -1)
+            {
+                if (product.mapValue["title"].find(strSearch) != -1 ||
+                    product.mapValue["description"].find(strSearch) != -1 ||
+                    product.mapValue["seller"].find(strSearch) != -1)
+                {
+                    vProductsFound.push_back(&product);
+                }
+            }
+        }
+    }
+
+    // Sort
+    sort(vProductsFound.begin(), vProductsFound.end(), CompareProductsBestFirst);
+
+    // Display
+    foreach(CProduct* pproduct, vProductsFound)
+    {
+        InsertLine(m_listCtrl,
+                   pproduct->mapValue["title"],
+                   pproduct->mapValue["price"],
+                   pproduct->mapValue["seller"],
+                   pproduct->mapValue["stars"],
+                   itostr(pproduct->nAtoms));
+    }
+}
+
+void CProductsDialog::OnListItemActivated(wxListEvent& event)
+{
+    // Doubleclick opens product
+    CViewProductDialog* pdialog = new CViewProductDialog(this, m_vProduct[event.GetIndex()]);
+    pdialog->Show();
+}
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CEditProductDialog
+//
+
+CEditProductDialog::CEditProductDialog(wxWindow* parent) : CEditProductDialogBase(parent)
+{
+    m_textCtrlLabel[0 ] = m_textCtrlLabel0;
+    m_textCtrlLabel[1 ] = m_textCtrlLabel1;
+    m_textCtrlLabel[2 ] = m_textCtrlLabel2;
+    m_textCtrlLabel[3 ] = m_textCtrlLabel3;
+    m_textCtrlLabel[4 ] = m_textCtrlLabel4;
+    m_textCtrlLabel[5 ] = m_textCtrlLabel5;
+    m_textCtrlLabel[6 ] = m_textCtrlLabel6;
+    m_textCtrlLabel[7 ] = m_textCtrlLabel7;
+    m_textCtrlLabel[8 ] = m_textCtrlLabel8;
+    m_textCtrlLabel[9 ] = m_textCtrlLabel9;
+    m_textCtrlLabel[10] = m_textCtrlLabel10;
+    m_textCtrlLabel[11] = m_textCtrlLabel11;
+    m_textCtrlLabel[12] = m_textCtrlLabel12;
+    m_textCtrlLabel[13] = m_textCtrlLabel13;
+    m_textCtrlLabel[14] = m_textCtrlLabel14;
+    m_textCtrlLabel[15] = m_textCtrlLabel15;
+    m_textCtrlLabel[16] = m_textCtrlLabel16;
+    m_textCtrlLabel[17] = m_textCtrlLabel17;
+    m_textCtrlLabel[18] = m_textCtrlLabel18;
+    m_textCtrlLabel[19] = m_textCtrlLabel19;
+
+    m_textCtrlField[0 ] = m_textCtrlField0;
+    m_textCtrlField[1 ] = m_textCtrlField1;
+    m_textCtrlField[2 ] = m_textCtrlField2;
+    m_textCtrlField[3 ] = m_textCtrlField3;
+    m_textCtrlField[4 ] = m_textCtrlField4;
+    m_textCtrlField[5 ] = m_textCtrlField5;
+    m_textCtrlField[6 ] = m_textCtrlField6;
+    m_textCtrlField[7 ] = m_textCtrlField7;
+    m_textCtrlField[8 ] = m_textCtrlField8;
+    m_textCtrlField[9 ] = m_textCtrlField9;
+    m_textCtrlField[10] = m_textCtrlField10;
+    m_textCtrlField[11] = m_textCtrlField11;
+    m_textCtrlField[12] = m_textCtrlField12;
+    m_textCtrlField[13] = m_textCtrlField13;
+    m_textCtrlField[14] = m_textCtrlField14;
+    m_textCtrlField[15] = m_textCtrlField15;
+    m_textCtrlField[16] = m_textCtrlField16;
+    m_textCtrlField[17] = m_textCtrlField17;
+    m_textCtrlField[18] = m_textCtrlField18;
+    m_textCtrlField[19] = m_textCtrlField19;
+
+    m_buttonDel[0 ] = m_buttonDel0;
+    m_buttonDel[1 ] = m_buttonDel1;
+    m_buttonDel[2 ] = m_buttonDel2;
+    m_buttonDel[3 ] = m_buttonDel3;
+    m_buttonDel[4 ] = m_buttonDel4;
+    m_buttonDel[5 ] = m_buttonDel5;
+    m_buttonDel[6 ] = m_buttonDel6;
+    m_buttonDel[7 ] = m_buttonDel7;
+    m_buttonDel[8 ] = m_buttonDel8;
+    m_buttonDel[9 ] = m_buttonDel9;
+    m_buttonDel[10] = m_buttonDel10;
+    m_buttonDel[11] = m_buttonDel11;
+    m_buttonDel[12] = m_buttonDel12;
+    m_buttonDel[13] = m_buttonDel13;
+    m_buttonDel[14] = m_buttonDel14;
+    m_buttonDel[15] = m_buttonDel15;
+    m_buttonDel[16] = m_buttonDel16;
+    m_buttonDel[17] = m_buttonDel17;
+    m_buttonDel[18] = m_buttonDel18;
+    m_buttonDel[19] = m_buttonDel19;
+
+    for (int i = 1; i < FIELDS_MAX; i++)
+        ShowLine(i, false);
+
+    LayoutAll();
+}
+
+void CEditProductDialog::LayoutAll()
+{
+    m_scrolledWindow->Layout();
+    m_scrolledWindow->GetSizer()->Fit(m_scrolledWindow);
+    this->Layout();
+}
+
+void CEditProductDialog::ShowLine(int i, bool fShow)
+{
+    m_textCtrlLabel[i]->Show(fShow);
+    m_textCtrlField[i]->Show(fShow);
+    m_buttonDel[i]->Show(fShow);
+}
+
+void CEditProductDialog::OnButtonDel0(wxCommandEvent& event)  { OnButtonDel(event, 0); }
+void CEditProductDialog::OnButtonDel1(wxCommandEvent& event)  { OnButtonDel(event, 1); }
+void CEditProductDialog::OnButtonDel2(wxCommandEvent& event)  { OnButtonDel(event, 2); }
+void CEditProductDialog::OnButtonDel3(wxCommandEvent& event)  { OnButtonDel(event, 3); }
+void CEditProductDialog::OnButtonDel4(wxCommandEvent& event)  { OnButtonDel(event, 4); }
+void CEditProductDialog::OnButtonDel5(wxCommandEvent& event)  { OnButtonDel(event, 5); }
+void CEditProductDialog::OnButtonDel6(wxCommandEvent& event)  { OnButtonDel(event, 6); }
+void CEditProductDialog::OnButtonDel7(wxCommandEvent& event)  { OnButtonDel(event, 7); }
+void CEditProductDialog::OnButtonDel8(wxCommandEvent& event)  { OnButtonDel(event, 8); }
+void CEditProductDialog::OnButtonDel9(wxCommandEvent& event)  { OnButtonDel(event, 9); }
+void CEditProductDialog::OnButtonDel10(wxCommandEvent& event) { OnButtonDel(event, 10); }
+void CEditProductDialog::OnButtonDel11(wxCommandEvent& event) { OnButtonDel(event, 11); }
+void CEditProductDialog::OnButtonDel12(wxCommandEvent& event) { OnButtonDel(event, 12); }
+void CEditProductDialog::OnButtonDel13(wxCommandEvent& event) { OnButtonDel(event, 13); }
+void CEditProductDialog::OnButtonDel14(wxCommandEvent& event) { OnButtonDel(event, 14); }
+void CEditProductDialog::OnButtonDel15(wxCommandEvent& event) { OnButtonDel(event, 15); }
+void CEditProductDialog::OnButtonDel16(wxCommandEvent& event) { OnButtonDel(event, 16); }
+void CEditProductDialog::OnButtonDel17(wxCommandEvent& event) { OnButtonDel(event, 17); }
+void CEditProductDialog::OnButtonDel18(wxCommandEvent& event) { OnButtonDel(event, 18); }
+void CEditProductDialog::OnButtonDel19(wxCommandEvent& event) { OnButtonDel(event, 19); }
+
+void CEditProductDialog::OnButtonDel(wxCommandEvent& event, int n)
+{
+    Freeze();
+    int x, y;
+    m_scrolledWindow->GetViewStart(&x, &y);
+    int i;
+    for (i = n; i < FIELDS_MAX-1; i++)
+    {
+        m_textCtrlLabel[i]->SetValue(m_textCtrlLabel[i+1]->GetValue());
+        m_textCtrlField[i]->SetValue(m_textCtrlField[i+1]->GetValue());
+        if (!m_buttonDel[i+1]->IsShown())
+            break;
+    }
+    m_textCtrlLabel[i]->SetValue("");
+    m_textCtrlField[i]->SetValue("");
+    ShowLine(i, false);
+    m_buttonAddField->Enable(true);
+    LayoutAll();
+    m_scrolledWindow->Scroll(0, y);
+    Thaw();
+}
+
+void CEditProductDialog::OnButtonAddField(wxCommandEvent& event)
+{
+    for (int i = 0; i < FIELDS_MAX; i++)
+    {
+        if (!m_buttonDel[i]->IsShown())
+        {
+            Freeze();
+            ShowLine(i, true);
+            if (i == FIELDS_MAX-1)
+                m_buttonAddField->Enable(false);
+            LayoutAll();
+            m_scrolledWindow->Scroll(0, 99999);
+            Thaw();
+            break;
+        }
+    }
+}
+
+void CEditProductDialog::OnButtonSend(wxCommandEvent& event)
+{
+    CProduct product;
+    GetProduct(product);
+
+    // Sign the detailed product
+    product.vchPubKeyFrom = keyUser.GetPubKey();
+    if (!keyUser.Sign(product.GetSigHash(), product.vchSig))
+    {
+        wxMessageBox("Error digitally signing the product  ");
+        return;
+    }
+
+    // Save detailed product
+    AddToMyProducts(product);
+
+    // Strip down to summary product
+    product.mapDetails.clear();
+    product.vOrderForm.clear();
+
+    // Sign the summary product
+    if (!keyUser.Sign(product.GetSigHash(), product.vchSig))
+    {
+        wxMessageBox("Error digitally signing the product  ");
+        return;
+    }
+
+    // Verify
+    if (!product.CheckProduct())
+    {
+        wxMessageBox("Errors found in product  ");
+        return;
+    }
+
+    // Broadcast
+    AdvertStartPublish(pnodeLocalHost, MSG_PRODUCT, 0, product);
+
+    Destroy();
+}
+
+void CEditProductDialog::OnButtonPreview(wxCommandEvent& event)
+{
+    CProduct product;
+    GetProduct(product);
+    CViewProductDialog* pdialog = new CViewProductDialog(this, product);
+    pdialog->Show();
+}
+
+void CEditProductDialog::OnButtonCancel(wxCommandEvent& event)
+{
+    Destroy();
+}
+
+void CEditProductDialog::SetProduct(const CProduct& productIn)
+{
+    CProduct product = productIn;
+
+    m_comboBoxCategory->SetValue(product.mapValue["category"]);
+    m_textCtrlTitle->SetValue(product.mapValue["title"]);
+    m_textCtrlPrice->SetValue(product.mapValue["price"]);
+    m_textCtrlDescription->SetValue(product.mapValue["description"]);
+    m_textCtrlInstructions->SetValue(product.mapValue["instructions"]);
+
+    for (int i = 0; i < FIELDS_MAX; i++)
+    {
+        bool fUsed = i < product.vOrderForm.size();
+        m_buttonDel[i]->Show(fUsed);
+        m_textCtrlLabel[i]->Show(fUsed);
+        m_textCtrlField[i]->Show(fUsed);
+        if (!fUsed)
+            continue;
+
+        m_textCtrlLabel[i]->SetValue(product.vOrderForm[i].first);
+        string strControl = product.vOrderForm[i].second;
+        if (strControl.substr(0, 5) == "text=")
+            m_textCtrlField[i]->SetValue("");
+        else if (strControl.substr(0, 7) == "choice=")
+            m_textCtrlField[i]->SetValue(strControl.substr(7));
+        else
+            m_textCtrlField[i]->SetValue(strControl);
+    }
+}
+
+void CEditProductDialog::GetProduct(CProduct& product)
+{
+    // map<string, string> mapValue;
+    // vector<pair<string, string> > vOrderForm;
+
+    product.mapValue["category"]     = m_comboBoxCategory->GetValue().Trim();
+    product.mapValue["title"]        = m_textCtrlTitle->GetValue().Trim();
+    product.mapValue["price"]        = m_textCtrlPrice->GetValue().Trim();
+    product.mapValue["description"]  = m_textCtrlDescription->GetValue().Trim();
+    product.mapValue["instructions"] = m_textCtrlInstructions->GetValue().Trim();
+
+    for (int i = 0; i < FIELDS_MAX; i++)
+    {
+        if (m_buttonDel[i]->IsShown())
+        {
+            string strLabel = (string)m_textCtrlLabel[i]->GetValue().Trim();
+            string strControl = (string)m_textCtrlField[i]->GetValue();
+            if (strControl.empty())
+                strControl = "text=";
+            else
+                strControl = "choice=" + strControl;
+            product.vOrderForm.push_back(make_pair(strLabel, strControl));
+        }
+    }
+}
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CViewProductDialog
+//
+
+CViewProductDialog::CViewProductDialog(wxWindow* parent, const CProduct& productIn) : CViewProductDialogBase(parent)
+{
+    Connect(wxEVT_REPLY1, wxCommandEventHandler(CViewProductDialog::OnReply1), NULL, this);
+    AddCallbackAvailable(GetEventHandler());
+
+    // Fill display with product summary while waiting for details
+    product = productIn;
+    UpdateProductDisplay(false);
+
+    m_buttonBack->Enable(false);
+    m_buttonNext->Enable(!product.vOrderForm.empty());
+    m_htmlWinReviews->Show(true);
+    m_scrolledWindow->Show(false);
+    this->Layout();
+
+    // Request details from seller
+    _beginthread(ThreadRequestProductDetails, 0, new pair<CProduct, wxEvtHandler*>(product, GetEventHandler()));
+}
+
+CViewProductDialog::~CViewProductDialog()
+{
+    RemoveCallbackAvailable(GetEventHandler());
+}
+
+void ThreadRequestProductDetails(void* parg)
+{
+    // Extract parameters
+    pair<CProduct, wxEvtHandler*>* pitem = (pair<CProduct, wxEvtHandler*>*)parg;
+    CProduct product = pitem->first;
+    wxEvtHandler* pevthandler = pitem->second;
+    delete pitem;
+
+    // Connect to seller
+    CNode* pnode = ConnectNode(product.addr, 5 * 60);
+    if (!pnode)
+    {
+        CDataStream ssEmpty;
+        AddPendingReplyEvent1(pevthandler, ssEmpty);
+        return;
+    }
+
+    // Request detailed product, with response going to OnReply1 via dialog's event handler
+    pnode->PushRequest("getdetails", product.GetHash(), AddPendingReplyEvent1, (void*)pevthandler);
+}
+
+void CViewProductDialog::OnReply1(wxCommandEvent& event)
+{
+    CDataStream ss = GetStreamFromEvent(event);
+    if (ss.empty())
+    {
+        product.mapValue["description"] = "-- CAN'T CONNECT TO SELLER --\n";
+        UpdateProductDisplay(true);
+        return;
+    }
+
+    int nRet;
+    CProduct product2;
+    try
+    {
+        ss >> nRet;
+        if (nRet > 0)
+            throw false;
+        ss >> product2;
+        if (product2.GetHash() != product.GetHash())
+            throw false;
+        if (!product2.CheckSignature())
+            throw false;
+    }
+    catch (...)
+    {
+        product.mapValue["description"] = "-- INVALID RESPONSE --\n";
+        UpdateProductDisplay(true);
+        return;
+    }
+
+    product = product2;
+    UpdateProductDisplay(true);
+}
+
+bool CompareReviewsBestFirst(const CReview* p1, const CReview* p2)
+{
+    return (p1->nAtoms > p2->nAtoms);
+}
+
+void CViewProductDialog::UpdateProductDisplay(bool fDetails)
+{
+    // Product and reviews
+    string strHTML;
+    strHTML.reserve(4000);
+    strHTML += "<html>\n"
+               "<head>\n"
+               "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n"
+               "</head>\n"
+               "<body>\n";
+    strHTML += "<b>Category:</b> " + HtmlEscape(product.mapValue["category"]) + "<br>\n";
+    strHTML += "<b>Title:</b> "    + HtmlEscape(product.mapValue["title"])    + "<br>\n";
+    strHTML += "<b>Price:</b> "    + HtmlEscape(product.mapValue["price"])    + "<br>\n";
+
+    if (!fDetails)
+        strHTML += "<b>Loading details...</b><br>\n<br>\n";
+    else
+        strHTML += HtmlEscape(product.mapValue["description"], true) + "<br>\n<br>\n";
+
+    strHTML += "<b>Reviews:</b><br>\n<br>\n";
+
+    if (!product.vchPubKeyFrom.empty())
+    {
+        CReviewDB reviewdb("r");
+
+        // Get reviews
+        vector<CReview> vReviews;
+        reviewdb.ReadReviews(product.GetUserHash(), vReviews);
+
+        // Get reviewer's number of atoms
+        vector<CReview*> vSortedReviews;
+        vSortedReviews.reserve(vReviews.size());
+        for (vector<CReview>::reverse_iterator it = vReviews.rbegin(); it != vReviews.rend(); ++it)
+        {
+            CReview& review = *it;
+            CUser user;
+            reviewdb.ReadUser(review.GetUserHash(), user);
+            review.nAtoms = user.GetAtomCount();
+            vSortedReviews.push_back(&review);
+        }
+
+        reviewdb.Close();
+
+        // Sort
+        stable_sort(vSortedReviews.begin(), vSortedReviews.end(), CompareReviewsBestFirst);
+
+        // Format reviews
+        foreach(CReview* preview, vSortedReviews)
+        {
+            CReview& review = *preview;
+            int nStars = atoi(review.mapValue["stars"].c_str());
+            if (nStars < 1 || nStars > 5)
+                continue;
+
+            strHTML += "<b>" + itostr(nStars) + (nStars == 1 ? " star" : " stars") + "</b>";
+            strHTML += " &nbsp;&nbsp;&nbsp; ";
+            strHTML += DateStr(atoi64(review.mapValue["date"])) + "<br>\n";
+            strHTML += HtmlEscape(review.mapValue["review"], true);
+            strHTML += "<br>\n<br>\n";
+        }
+    }
+
+    strHTML += "</body>\n</html>\n";
+
+    // Shrink capacity to fit
+    string(strHTML.begin(), strHTML.end()).swap(strHTML);
+
+    m_htmlWinReviews->SetPage(strHTML);
+
+    ///// need to find some other indicator to use so can allow empty order form
+    if (product.vOrderForm.empty())
+        return;
+
+    // Order form
+    m_staticTextInstructions->SetLabel(product.mapValue["instructions"]);
+    for (int i = 0; i < FIELDS_MAX; i++)
+    {
+        m_staticTextLabel[i] = NULL;
+        m_textCtrlField[i] = NULL;
+        m_choiceField[i] = NULL;
+    }
+
+    // Construct flexgridsizer
+    wxBoxSizer* bSizer21 = (wxBoxSizer*)m_scrolledWindow->GetSizer();
+    wxFlexGridSizer* fgSizer;
+    fgSizer = new wxFlexGridSizer(0, 2, 0, 0);
+    fgSizer->AddGrowableCol(1);
+    fgSizer->SetFlexibleDirection(wxBOTH);
+    fgSizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
+
+    // Construct order form fields
+    wxWindow* windowLast = NULL;
+    for (int i = 0; i < product.vOrderForm.size(); i++)
+    {
+        string strLabel = product.vOrderForm[i].first;
+        string strControl = product.vOrderForm[i].second;
+
+        if (strLabel.size() < 20)
+            strLabel.insert(strLabel.begin(), 20 - strLabel.size(), ' ');
+
+        m_staticTextLabel[i] = new wxStaticText(m_scrolledWindow, wxID_ANY, strLabel, wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
+        m_staticTextLabel[i]->Wrap(-1);
+        fgSizer->Add(m_staticTextLabel[i], 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxALL, 5);
+
+        if (strControl.substr(0, 5) == "text=")
+        {
+            m_textCtrlField[i] = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+            fgSizer->Add(m_textCtrlField[i], 1, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5);
+            windowLast = m_textCtrlField[i];
+        }
+        else if (strControl.substr(0, 7) == "choice=")
+        {
+            vector<string> vChoices;
+            ParseString(strControl.substr(7), ',', vChoices);
+
+            wxArrayString arraystring;
+            foreach(const string& str, vChoices)
+                arraystring.Add(str);
+
+            m_choiceField[i] = new wxChoice(m_scrolledWindow, wxID_ANY, wxDefaultPosition, wxDefaultSize, arraystring, 0);
+            fgSizer->Add(m_choiceField[i], 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+            windowLast = m_choiceField[i];
+        }
+        else
+        {
+            m_textCtrlField[i] = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+            fgSizer->Add(m_textCtrlField[i], 1, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5);
+            m_staticTextLabel[i]->Show(false);
+            m_textCtrlField[i]->Show(false);
+        }
+    }
+
+    // Insert after instructions and before submit/cancel buttons
+    bSizer21->Insert(2, fgSizer, 0, wxEXPAND|wxRIGHT|wxLEFT, 5);
+    m_scrolledWindow->Layout();
+    bSizer21->Fit(m_scrolledWindow);
+    this->Layout();
+
+    // Fixup the tab order
+    m_buttonSubmitForm->MoveAfterInTabOrder(windowLast);
+    m_buttonCancelForm->MoveAfterInTabOrder(m_buttonSubmitForm);
+    //m_buttonBack->MoveAfterInTabOrder(m_buttonCancelForm);
+    //m_buttonNext->MoveAfterInTabOrder(m_buttonBack);
+    //m_buttonCancel->MoveAfterInTabOrder(m_buttonNext);
+    this->Layout();
+}
+
+void CViewProductDialog::GetOrder(CWalletTx& wtx)
+{
+    wtx.SetNull();
+    for (int i = 0; i < product.vOrderForm.size(); i++)
+    {
+        string strValue;
+        if (m_textCtrlField[i])
+            strValue = m_textCtrlField[i]->GetValue().Trim();
+        else
+            strValue = m_choiceField[i]->GetStringSelection();
+        wtx.vOrderForm.push_back(make_pair(m_staticTextLabel[i]->GetLabel(), strValue));
+    }
+}
+
+void CViewProductDialog::OnButtonSubmitForm(wxCommandEvent& event)
+{
+    m_buttonSubmitForm->Enable(false);
+    m_buttonCancelForm->Enable(false);
+
+    CWalletTx wtx;
+    GetOrder(wtx);
+
+    CSendingDialog* pdialog = new CSendingDialog(this, product.addr, atoi64(product.mapValue["price"]), wtx);
+    if (!pdialog->ShowModal())
+    {
+        m_buttonSubmitForm->Enable(true);
+        m_buttonCancelForm->Enable(true);
+        return;
+    }
+}
+
+void CViewProductDialog::OnButtonCancelForm(wxCommandEvent& event)
+{
+    Destroy();
+}
+
+void CViewProductDialog::OnButtonBack(wxCommandEvent& event)
+{
+    Freeze();
+    m_htmlWinReviews->Show(true);
+    m_scrolledWindow->Show(false);
+    m_buttonBack->Enable(false);
+    m_buttonNext->Enable(!product.vOrderForm.empty());
+    this->Layout();
+    Thaw();
+}
+
+void CViewProductDialog::OnButtonNext(wxCommandEvent& event)
+{
+    if (!product.vOrderForm.empty())
+    {
+        Freeze();
+        m_htmlWinReviews->Show(false);
+        m_scrolledWindow->Show(true);
+        m_buttonBack->Enable(true);
+        m_buttonNext->Enable(false);
+        this->Layout();
+        Thaw();
+    }
+}
+
+void CViewProductDialog::OnButtonCancel(wxCommandEvent& event)
+{
+    Destroy();
+}
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CViewOrderDialog
+//
+
+CViewOrderDialog::CViewOrderDialog(wxWindow* parent, CWalletTx order, bool fReceived) : CViewOrderDialogBase(parent)
+{
+    int64 nPrice = (fReceived ? order.GetCredit() : order.GetDebit());
+
+    string strHTML;
+    strHTML.reserve(4000);
+    strHTML += "<html>\n"
+               "<head>\n"
+               "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">\n"
+               "</head>\n"
+               "<body>\n";
+    strHTML += "<b>Time:</b> "   + HtmlEscape(DateTimeStr(order.nTimeReceived)) + "<br>\n";
+    strHTML += "<b>Price:</b> "  + HtmlEscape(FormatMoney(nPrice)) + "<br>\n";
+    strHTML += "<b>Status:</b> " + HtmlEscape(FormatTxStatus(order)) + "<br>\n";
+
+    strHTML += "<table>\n";
+    for (int i = 0; i < order.vOrderForm.size(); i++)
+    {
+        strHTML += " <tr><td><b>" + HtmlEscape(order.vOrderForm[i].first) + ":</b></td>";
+        strHTML += "<td>" + HtmlEscape(order.vOrderForm[i].second) + "</td></tr>\n";
+    }
+    strHTML += "</table>\n";
+
+    strHTML += "</body>\n</html>\n";
+
+    // Shrink capacity to fit
+    // (strings are ref counted, so it may live on in SetPage)
+    string(strHTML.begin(), strHTML.end()).swap(strHTML);
+
+    m_htmlWin->SetPage(strHTML);
+}
+
+void CViewOrderDialog::OnButtonOK(wxCommandEvent& event)
+{
+    Destroy();
+}
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CEditReviewDialog
+//
+
+CEditReviewDialog::CEditReviewDialog(wxWindow* parent) : CEditReviewDialogBase(parent)
+{
+}
+
+void CEditReviewDialog::OnButtonSubmit(wxCommandEvent& event)
+{
+    if (m_choiceStars->GetSelection() == -1)
+    {
+        wxMessageBox("Please select a rating  ");
+        return;
+    }
+
+    CReview review;
+    GetReview(review);
+
+    // Sign the review
+    review.vchPubKeyFrom = keyUser.GetPubKey();
+    if (!keyUser.Sign(review.GetSigHash(), review.vchSig))
+    {
+        wxMessageBox("Unable to digitally sign the review  ");
+        return;
+    }
+
+    // Broadcast
+    if (!review.AcceptReview())
+    {
+        wxMessageBox("Save failed  ");
+        return;
+    }
+    RelayMessage(CInv(MSG_REVIEW, review.GetHash()), review);
+
+    Destroy();
+}
+
+void CEditReviewDialog::OnButtonCancel(wxCommandEvent& event)
+{
+    Destroy();
+}
+
+void CEditReviewDialog::GetReview(CReview& review)
+{
+    review.mapValue["time"]   = i64tostr(GetAdjustedTime());
+    review.mapValue["stars"]  = itostr(m_choiceStars->GetSelection()+1);
+    review.mapValue["review"] = m_textCtrlReview->GetValue();
+}
+
+
+
+
+
+
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// CMyApp
+//
+
+// Define a new application
+class CMyApp: public wxApp
+{
+  public:
+    CMyApp(){};
+    ~CMyApp(){};
+    bool OnInit();
+    bool OnInit2();
+    int OnExit();
+
+    // 2nd-level exception handling: we get all the exceptions occurring in any
+    // event handler here
+    virtual bool OnExceptionInMainLoop();
+
+    // 3rd, and final, level exception handling: whenever an unhandled
+    // exception is caught, this function is called
+    virtual void OnUnhandledException();
+
+    // and now for something different: this function is called in case of a
+    // crash (e.g. dereferencing null pointer, division by 0, ...)
+    virtual void OnFatalException();
+};
+
+IMPLEMENT_APP(CMyApp)
+
+bool CMyApp::OnInit()
+{
+    try
+    {
+        return OnInit2();
+    }
+    catch (std::exception& e) {
+        PrintException(&e, "OnInit()");
+    } catch (...) {
+        PrintException(NULL, "OnInit()");
+    }
+    return false;
+}
+
+map<string, string> ParseParameters(int argc, char* argv[])
+{
+    map<string, string> mapArgs;
+    for (int i = 0; i < argc; i++)
+    {
+        char psz[10000];
+        strcpy(psz, argv[i]);
+        char* pszValue = "";
+        if (strchr(psz, '='))
+        {
+            pszValue = strchr(psz, '=');
+            *pszValue++ = '\0';
+        }
+        strlwr(psz);
+        if (psz[0] == '-')
+            psz[0] = '/';
+        mapArgs[psz] = pszValue;
+    }
+    return mapArgs;
+}
+
+bool CMyApp::OnInit2()
+{
+#ifdef _MSC_VER
+    // Turn off microsoft heap dump noise for now
+    _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
+    _CrtSetReportFile(_CRT_WARN, CreateFile("NUL", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0));
+#endif
+#ifdef __WXDEBUG__
+    // Disable malfunctioning wxWidgets debug assertion
+    g_isPainting = 10000;
+#endif
+
+    //// debug print
+    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
+    printf("Bitcoin version %d, Windows version %08x\n", VERSION, GetVersion());
+
+    //
+    // Limit to single instance per user
+    // Required to protect the database files if we're going to keep deleting log.*
+    //
+    wxString strMutexName = wxString("Bitcoin.") + getenv("HOMEPATH");
+    for (int i = 0; i < strMutexName.size(); i++)
+        if (!isalnum(strMutexName[i]))
+            strMutexName[i] = '.';
+    wxSingleInstanceChecker* psingleinstancechecker = new wxSingleInstanceChecker(strMutexName);
+    if (psingleinstancechecker->IsAnotherRunning())
+    {
+        printf("Existing instance found\n");
+        unsigned int nStart = GetTime();
+        loop
+        {
+            // Show the previous instance and exit
+            HWND hwndPrev = FindWindow("wxWindowClassNR", "Bitcoin");
+            if (hwndPrev)
+            {
+                if (IsIconic(hwndPrev))
+                    ShowWindow(hwndPrev, SW_RESTORE);
+                SetForegroundWindow(hwndPrev);
+                return false;
+            }
+
+            if (GetTime() > nStart + 60)
+                return false;
+
+            // Resume this instance if the other exits
+            delete psingleinstancechecker;
+            Sleep(1000);
+            psingleinstancechecker = new wxSingleInstanceChecker(strMutexName);
+            if (!psingleinstancechecker->IsAnotherRunning())
+                break;
+        }
+    }
+
+    //
+    // Parameters
+    //
+    wxImage::AddHandler(new wxPNGHandler);
+    map<string, string> mapArgs = ParseParameters(argc, argv);
+
+    if (mapArgs.count("/datadir"))
+        strSetDataDir = mapArgs["/datadir"];
+
+    if (mapArgs.count("/proxy"))
+        addrProxy = CAddress(mapArgs["/proxy"].c_str());
+
+    if (mapArgs.count("/debug"))
+        fDebug = true;
+
+    if (mapArgs.count("/dropmessages"))
+    {
+        nDropMessagesTest = atoi(mapArgs["/dropmessages"]);
+        if (nDropMessagesTest == 0)
+            nDropMessagesTest = 20;
+    }
+
+    if (mapArgs.count("/loadblockindextest"))
+    {
+        CTxDB txdb("r");
+        txdb.LoadBlockIndex();
+        PrintBlockTree();
+        ExitProcess(0);
+    }
+
+    //
+    // Load data files
+    //
+    string strErrors;
+    int64 nStart, nEnd;
+
+    printf("Loading addresses...\n");
+    QueryPerformanceCounter((LARGE_INTEGER*)&nStart);
+    if (!LoadAddresses())
+        strErrors += "Error loading addr.dat      \n";
+    QueryPerformanceCounter((LARGE_INTEGER*)&nEnd);
+    printf(" addresses   %20I64d\n", nEnd - nStart);
+
+    printf("Loading block index...\n");
+    QueryPerformanceCounter((LARGE_INTEGER*)&nStart);
+    if (!LoadBlockIndex())
+        strErrors += "Error loading blkindex.dat      \n";
+    QueryPerformanceCounter((LARGE_INTEGER*)&nEnd);
+    printf(" block index %20I64d\n", nEnd - nStart);
+
+    printf("Loading wallet...\n");
+    QueryPerformanceCounter((LARGE_INTEGER*)&nStart);
+    if (!LoadWallet())
+        strErrors += "Error loading wallet.dat      \n";
+    QueryPerformanceCounter((LARGE_INTEGER*)&nEnd);
+    printf(" wallet      %20I64d\n", nEnd - nStart);
+
+    printf("Done loading\n");
+
+        //// debug print
+        printf("mapBlockIndex.size() = %d\n",   mapBlockIndex.size());
+        printf("nBestHeight = %d\n",            nBestHeight);
+        printf("mapKeys.size() = %d\n",         mapKeys.size());
+        printf("mapPubKeys.size() = %d\n",      mapPubKeys.size());
+        printf("mapWallet.size() = %d\n",       mapWallet.size());
+        printf("mapAddressBook.size() = %d\n",  mapAddressBook.size());
+
+    if (!strErrors.empty())
+    {
+        wxMessageBox(strErrors, "Bitcoin");
+        OnExit();
+        return false;
+    }
+
+    // Add wallet transactions that aren't already in a block to mapTransactions
+    ReacceptWalletTransactions();
+
+    //
+    // Parameters
+    //
+    if (mapArgs.count("/printblockindex") || mapArgs.count("/printblocktree"))
+    {
+        PrintBlockTree();
+        OnExit();
+        return false;
+    }
+
+    if (mapArgs.count("/gen"))
+    {
+        if (mapArgs["/gen"].empty())
+            fGenerateBitcoins = true;
+        else
+            fGenerateBitcoins = atoi(mapArgs["/gen"].c_str());
+    }
+
+    //
+    // Create the main frame window
+    //
+    {
+        pframeMain = new CMainFrame(NULL);
+        pframeMain->Show();
+
+        if (!CheckDiskSpace())
+        {
+            OnExit();
+            return false;
+        }
+
+        if (!StartNode(strErrors))
+            wxMessageBox(strErrors, "Bitcoin");
+
+        if (fGenerateBitcoins)
+            if (_beginthread(ThreadBitcoinMiner, 0, NULL) == -1)
+                printf("Error: _beginthread(ThreadBitcoinMiner) failed\n");
+
+        //
+        // Tests
+        //
+        if (argc >= 2 && stricmp(argv[1], "/send") == 0)
+        {
+            int64 nValue = 1;
+            if (argc >= 3)
+                ParseMoney(argv[2], nValue);
+
+            string strAddress;
+            if (argc >= 4)
+                strAddress = argv[3];
+            CAddress addr(strAddress.c_str());
+
+            CWalletTx wtx;
+            wtx.mapValue["to"] = strAddress;
+            wtx.mapValue["from"] = addrLocalHost.ToString();
+            wtx.mapValue["message"] = "command line send";
+
+            // Send to IP address
+            CSendingDialog* pdialog = new CSendingDialog(pframeMain, addr, nValue, wtx);
+            if (!pdialog->ShowModal())
+                return false;
+        }
+
+        if (mapArgs.count("/randsendtest"))
+        {
+            if (!mapArgs["/randsendtest"].empty())
+                _beginthread(ThreadRandSendTest, 0, new string(mapArgs["/randsendtest"]));
+            else
+                fRandSendTest = true;
+            fDebug = true;
+        }
+    }
+
+    return true;
+}
+
+int CMyApp::OnExit()
+{
+    Shutdown(NULL);
+    return wxApp::OnExit();
+}
+
+bool CMyApp::OnExceptionInMainLoop()
+{
+    try
+    {
+        throw;
+    }
+    catch (std::exception& e)
+    {
+        PrintException(&e, "CMyApp::OnExceptionInMainLoop()");
+        wxLogWarning(_T("Exception %s %s"), typeid(e).name(), e.what());
+        Sleep(1000);
+        throw;
+    }
+    catch (...)
+    {
+        PrintException(NULL, "CMyApp::OnExceptionInMainLoop()");
+        wxLogWarning(_T("Unknown exception"));
+        Sleep(1000);
+        throw;
+    }
+
+    return true;
+}
+
+void CMyApp::OnUnhandledException()
+{
+    // this shows how we may let some exception propagate uncaught
+    try
+    {
+        throw;
+    }
+    catch (std::exception& e)
+    {
+        PrintException(&e, "CMyApp::OnUnhandledException()");
+        wxLogWarning(_T("Exception %s %s"), typeid(e).name(), e.what());
+        Sleep(1000);
+        throw;
+    }
+    catch (...)
+    {
+        PrintException(NULL, "CMyApp::OnUnhandledException()");
+        wxLogWarning(_T("Unknown exception"));
+        Sleep(1000);
+        throw;
+    }
+}
+
+void CMyApp::OnFatalException()
+{
+    wxMessageBox("Program has crashed and will terminate.  ", "Bitcoin", wxOK | wxICON_ERROR);
+}
+
+
+
+void MainFrameRepaint()
+{
+    if (pframeMain)
+    {
+        printf("MainFrameRepaint()\n");
+        wxPaintEvent event;
+        pframeMain->Refresh();
+        pframeMain->AddPendingEvent(event);
+    }
+}
+
+
+
+
+
+
+
+// randsendtest to bitcoin address
+void ThreadRandSendTest(void* parg)
+{
+    string strAddress = *(string*)parg;
+    uint160 hash160;
+    if (!AddressToHash160(strAddress, hash160))
+    {
+        wxMessageBox(strprintf("ThreadRandSendTest: Bitcoin address '%s' not valid  ", strAddress.c_str()));
+        return;
+    }
+
+    loop
+    {
+        Sleep(GetRand(30) * 1000 + 100);
+
+        // Message
+        CWalletTx wtx;
+        wtx.mapValue["to"] = strAddress;
+        wtx.mapValue["from"] = addrLocalHost.ToString();
+        static int nRep;
+        wtx.mapValue["message"] = strprintf("randsendtest %d\n", ++nRep);
+
+        // Value
+        int64 nValue = (GetRand(9) + 1) * 100 * CENT;
+        if (GetBalance() < nValue)
+        {
+            wxMessageBox("Out of money  ");
+            return;
+        }
+        nValue += (nRep % 100) * CENT;
+
+        // Send to bitcoin address
+        CScript scriptPubKey;
+        scriptPubKey << OP_DUP << OP_HASH160 << hash160 << OP_EQUALVERIFY << OP_CHECKSIG;
+
+        if (!SendMoney(scriptPubKey, nValue, wtx))
+            return;
+    }
+}
+
+
+// randsendtest to any connected node
+void RandSend()
+{
+    CWalletTx wtx;
+
+    while (vNodes.empty())
+        Sleep(1000);
+    CAddress addr;
+    CRITICAL_BLOCK(cs_vNodes)
+        addr = vNodes[GetRand(vNodes.size())]->addr;
+
+    // Message
+    wtx.mapValue["to"] = addr.ToString();
+    wtx.mapValue["from"] = addrLocalHost.ToString();
+    static int nRep;
+    wtx.mapValue["message"] = strprintf("randsendtest %d\n", ++nRep);
+
+    // Value
+    int64 nValue = (GetRand(999) + 1) * CENT;
+    if (GetBalance() < nValue)
+    {
+        wxMessageBox("Out of money  ");
+        return;
+    }
+
+    // Send to IP address
+    CSendingDialog* pdialog = new CSendingDialog(pframeMain, addr, nValue, wtx);
+    if (!pdialog->Show())
+        wxMessageBox("ShowModal Failed  ");
+}
new file mode 100644
--- /dev/null
+++ b/ui.h
@@ -0,0 +1,420 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+
+
+
+DECLARE_EVENT_TYPE(wxEVT_CROSSTHREADCALL, -1)
+DECLARE_EVENT_TYPE(wxEVT_REPLY1, -1)
+DECLARE_EVENT_TYPE(wxEVT_REPLY2, -1)
+DECLARE_EVENT_TYPE(wxEVT_REPLY3, -1)
+DECLARE_EVENT_TYPE(wxEVT_TABLEADDED, -1)
+DECLARE_EVENT_TYPE(wxEVT_TABLEUPDATED, -1)
+DECLARE_EVENT_TYPE(wxEVT_TABLEDELETED, -1)
+
+enum
+{
+    UICALL_ADDORDER = 1,
+    UICALL_UPDATEORDER,
+};
+
+
+
+extern void HandleCtrlA(wxKeyEvent& event);
+extern string DateTimeStr(int64 nTime);
+extern string FormatTxStatus(const CWalletTx& wtx);
+extern void CrossThreadCall(int nID, void* pdata);
+extern void MainFrameRepaint();
+extern void Shutdown(void* parg);
+
+
+
+
+
+
+class CMainFrame : public CMainFrameBase
+{
+protected:
+    // Event handlers
+    void OnClose(wxCloseEvent& event);
+    void OnMouseEvents(wxMouseEvent& event);
+    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
+    void OnIdle(wxIdleEvent& event);
+    void OnPaint(wxPaintEvent& event);
+    void OnPaintListCtrl(wxPaintEvent& event);
+    void OnMenuFileExit(wxCommandEvent& event);
+    void OnMenuOptionsGenerate(wxCommandEvent& event);
+    void OnMenuOptionsChangeYourAddress(wxCommandEvent& event);
+    void OnMenuOptionsOptions(wxCommandEvent& event);
+    void OnMenuHelpAbout(wxCommandEvent& event);
+    void OnButtonSend(wxCommandEvent& event);
+    void OnButtonAddressBook(wxCommandEvent& event);
+    void OnSetFocusAddress(wxFocusEvent& event);
+    void OnMouseEventsAddress(wxMouseEvent& event);
+    void OnButtonCopy(wxCommandEvent& event);
+    void OnButtonChange(wxCommandEvent& event);
+    void OnListColBeginDrag(wxListEvent& event);
+    void OnListItemActivatedAllTransactions(wxListEvent& event);
+    void OnListItemActivatedProductsSent(wxListEvent& event);
+    void OnListItemActivatedOrdersSent(wxListEvent& event);
+    void OnListItemActivatedOrdersReceived(wxListEvent& event);
+	
+public:
+    /** Constructor */
+    CMainFrame(wxWindow* parent);
+    ~CMainFrame();
+
+    // Custom
+    bool fRefreshListCtrl;
+    bool fRefreshListCtrlRunning;
+    bool fOnSetFocusAddress;
+    CBlockIndex* pindexBestLast;
+    set<uint256> setUnmaturedDisplayed;
+
+    void OnCrossThreadCall(wxCommandEvent& event);
+    void InsertLine(bool fNew, int nIndex, uint256 hashKey, string strSort, const wxString& str1, const wxString& str2, const wxString& str3, const wxString& str4, const wxString& str5);
+    void InsertTransaction(const CWalletTx& wtx, bool fNew, int nIndex=-1);
+    void RefreshListCtrl();
+    void RefreshStatus();
+};
+
+
+
+
+class CTxDetailsDialog : public CTxDetailsDialogBase
+{
+protected:
+    // Event handlers
+    void OnButtonOK(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    CTxDetailsDialog(wxWindow* parent, CWalletTx wtx);
+
+    // State
+    CWalletTx wtx;
+};
+
+
+
+class COptionsDialog : public COptionsDialogBase
+{
+protected:
+    // Event handlers
+    void OnKillFocusTransactionFee(wxFocusEvent& event);
+    void OnButtonOK(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    COptionsDialog(wxWindow* parent);
+};
+
+
+
+class CAboutDialog : public CAboutDialogBase
+{
+protected:
+    // Event handlers
+    void OnButtonOK(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    CAboutDialog(wxWindow* parent);
+};
+
+
+
+class CSendDialog : public CSendDialogBase
+{
+protected:
+    // Event handlers
+    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
+    void OnTextAddress(wxCommandEvent& event);
+    void OnKillFocusAmount(wxFocusEvent& event);
+    void OnButtonAddressBook(wxCommandEvent& event);
+    void OnButtonPaste(wxCommandEvent& event);
+    void OnButtonSend(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+	
+public:
+    /** Constructor */
+    CSendDialog(wxWindow* parent, const wxString& strAddress="");
+};
+
+
+
+class CSendingDialog : public CSendingDialogBase
+{
+public:
+    // Event handlers
+    void OnClose(wxCloseEvent& event);
+    void OnButtonOK(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+    void OnPaint(wxPaintEvent& event);
+	
+public:
+    /** Constructor */
+    CSendingDialog(wxWindow* parent, const CAddress& addrIn, int64 nPriceIn, const CWalletTx& wtxIn);
+    ~CSendingDialog();
+
+    // State
+    CAddress addr;
+    int64 nPrice;
+    CWalletTx wtx;
+    wxDateTime start;
+    string strStatus;
+    bool fCanCancel;
+    bool fAbort;
+    bool fSuccess;
+    bool fUIDone;
+    bool fWorkDone;
+
+    void Close();
+    void Repaint();
+    bool Status();
+    bool Status(const string& str);
+    bool Error(const string& str);
+    void StartTransfer();
+    void OnReply2(CDataStream& vRecv);
+    void OnReply3(CDataStream& vRecv);
+};
+
+void SendingDialogStartTransfer(void* parg);
+void SendingDialogOnReply2(void* parg, CDataStream& vRecv);
+void SendingDialogOnReply3(void* parg, CDataStream& vRecv);
+
+
+
+class CYourAddressDialog : public CYourAddressDialogBase
+{
+protected:
+    // Event handlers
+    void OnListEndLabelEdit(wxListEvent& event);
+    void OnListItemSelected(wxListEvent& event);
+    void OnListItemActivated(wxListEvent& event);
+    void OnButtonRename(wxCommandEvent& event);
+    void OnButtonNew(wxCommandEvent& event);
+    void OnButtonCopy(wxCommandEvent& event);
+    void OnButtonOK(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+    void OnClose(wxCloseEvent& event);
+
+public:
+    /** Constructor */
+    CYourAddressDialog(wxWindow* parent);
+    CYourAddressDialog(wxWindow* parent, const string& strInitSelected);
+
+    // Custom
+    wxString GetAddress();
+};
+
+
+
+class CAddressBookDialog : public CAddressBookDialogBase
+{
+protected:
+    // Event handlers
+    void OnListEndLabelEdit(wxListEvent& event);
+    void OnListItemSelected(wxListEvent& event);
+    void OnListItemActivated(wxListEvent& event);
+    void OnButtonEdit(wxCommandEvent& event);
+    void OnButtonDelete(wxCommandEvent& event);
+    void OnButtonNew(wxCommandEvent& event);
+    void OnButtonCopy(wxCommandEvent& event);
+    void OnButtonOK(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+    void OnClose(wxCloseEvent& event);
+
+public:
+    /** Constructor */
+    CAddressBookDialog(wxWindow* parent, const wxString& strInitSelected, bool fSendingIn);
+
+    // Custom
+    bool fSending;
+    wxString GetAddress();
+    bool CheckIfMine(const string& strAddress, const string& strTitle);
+};
+
+
+
+class CProductsDialog : public CProductsDialogBase
+{
+protected:
+    // Event handlers
+    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
+    void OnCombobox(wxCommandEvent& event);
+    void OnButtonSearch(wxCommandEvent& event);
+    void OnListItemActivated(wxListEvent& event);
+
+public:
+    /** Constructor */
+    CProductsDialog(wxWindow* parent);
+
+    // Custom
+    vector<CProduct> m_vProduct;
+};
+
+
+
+class CEditProductDialog : public CEditProductDialogBase
+{
+protected:
+    // Event handlers
+    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
+    void OnButtonDel0(wxCommandEvent& event);
+    void OnButtonDel1(wxCommandEvent& event);
+    void OnButtonDel2(wxCommandEvent& event);
+    void OnButtonDel3(wxCommandEvent& event);
+    void OnButtonDel4(wxCommandEvent& event);
+    void OnButtonDel5(wxCommandEvent& event);
+    void OnButtonDel6(wxCommandEvent& event);
+    void OnButtonDel7(wxCommandEvent& event);
+    void OnButtonDel8(wxCommandEvent& event);
+    void OnButtonDel9(wxCommandEvent& event);
+    void OnButtonDel10(wxCommandEvent& event);
+    void OnButtonDel11(wxCommandEvent& event);
+    void OnButtonDel12(wxCommandEvent& event);
+    void OnButtonDel13(wxCommandEvent& event);
+    void OnButtonDel14(wxCommandEvent& event);
+    void OnButtonDel15(wxCommandEvent& event);
+    void OnButtonDel16(wxCommandEvent& event);
+    void OnButtonDel17(wxCommandEvent& event);
+    void OnButtonDel18(wxCommandEvent& event);
+    void OnButtonDel19(wxCommandEvent& event);
+    void OnButtonAddField(wxCommandEvent& event);
+    void OnButtonSend(wxCommandEvent& event);
+    void OnButtonPreview(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    CEditProductDialog(wxWindow* parent);
+
+    // Custom
+    enum { FIELDS_MAX = 20 };
+    wxTextCtrl* m_textCtrlLabel[FIELDS_MAX];
+    wxTextCtrl* m_textCtrlField[FIELDS_MAX];
+    wxButton*   m_buttonDel[FIELDS_MAX];
+
+    void LayoutAll();
+    void ShowLine(int i, bool fShow=true);
+    void OnButtonDel(wxCommandEvent& event, int n);
+    void SetProduct(const CProduct& productIn);
+    void GetProduct(CProduct& product);
+
+};
+
+
+
+class CViewProductDialog : public CViewProductDialogBase
+{
+protected:
+    // Event handlers
+    void OnButtonSubmitForm(wxCommandEvent& event);
+    void OnButtonCancelForm(wxCommandEvent& event);
+    void OnButtonBack(wxCommandEvent& event);
+    void OnButtonNext(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    CViewProductDialog(wxWindow* parent, const CProduct& productIn);
+    ~CViewProductDialog();
+
+    // Custom
+    CProduct product;
+    enum { FIELDS_MAX = 20 };
+    wxStaticText* m_staticTextLabel[FIELDS_MAX];
+    wxTextCtrl*   m_textCtrlField[FIELDS_MAX];
+    wxChoice*     m_choiceField[FIELDS_MAX];
+
+    void GetOrder(CWalletTx& order);
+    void UpdateProductDisplay(bool fDetails);
+    void OnReply1(wxCommandEvent& event);
+};
+
+
+
+class CViewOrderDialog : public CViewOrderDialogBase
+{
+protected:
+    // Event handlers
+    void OnButtonOK(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    CViewOrderDialog(wxWindow* parent, CWalletTx order, bool fReceived);
+
+    // Custom
+    bool fReceived;
+};
+
+
+
+class CEditReviewDialog : public CEditReviewDialogBase
+{
+protected:
+    // Event handlers
+    void OnKeyDown(wxKeyEvent& event) { HandleCtrlA(event); }
+    void OnButtonSubmit(wxCommandEvent& event);
+    void OnButtonCancel(wxCommandEvent& event);
+
+public:
+    /** Constructor */
+    CEditReviewDialog(wxWindow* parent);
+
+    // Custom
+    void GetReview(CReview& review);
+};
+
+
+
+class CGetTextFromUserDialog : public CGetTextFromUserDialogBase
+{
+protected:
+    // Event handlers
+    void OnButtonOK(wxCommandEvent& event)     { EndModal(true); }
+    void OnButtonCancel(wxCommandEvent& event) { EndModal(false); }
+    void OnClose(wxCloseEvent& event)          { EndModal(false); }
+
+    void OnKeyDown(wxKeyEvent& event)
+    {
+        if (event.GetKeyCode() == '\r' || event.GetKeyCode() == WXK_NUMPAD_ENTER)
+            EndModal(true);
+        else
+            HandleCtrlA(event);
+    }
+
+public:
+    /** Constructor */
+    CGetTextFromUserDialog(wxWindow* parent,
+                           const string& strCaption,
+                           const string& strMessage1,
+                           const string& strValue1="",
+                           const string& strMessage2="",
+                           const string& strValue2="") : CGetTextFromUserDialogBase(parent, wxID_ANY, strCaption)
+    {
+        m_staticTextMessage1->SetLabel(strMessage1);
+        m_textCtrl1->SetValue(strValue1);
+        if (!strMessage2.empty())
+        {
+            m_staticTextMessage2->Show(true);
+            m_staticTextMessage2->SetLabel(strMessage2);
+            m_textCtrl2->Show(true);
+            m_textCtrl2->SetValue(strValue2);
+            SetSize(wxDefaultCoord, 180);
+        }
+    }
+
+    // Custom
+    string GetValue()  { return (string)m_textCtrl1->GetValue(); }
+    string GetValue1() { return (string)m_textCtrl1->GetValue(); }
+    string GetValue2() { return (string)m_textCtrl2->GetValue(); }
+};
+
+
+
+
+
new file mode 100644
--- /dev/null
+++ b/ui.rc
@@ -0,0 +1,14 @@
+bitcoin               ICON    "rc/bitcoin.ico"
+
+#include "wx/msw/wx.rc"
+
+check                 ICON    "rc/check.ico"
+send16                BITMAP  "rc/send16.bmp"
+send16mask            BITMAP  "rc/send16mask.bmp"
+send16masknoshadow    BITMAP  "rc/send16masknoshadow.bmp"
+send20                BITMAP  "rc/send20.bmp"
+send20mask            BITMAP  "rc/send20mask.bmp"
+addressbook16         BITMAP  "rc/addressbook16.bmp"
+addressbook16mask     BITMAP  "rc/addressbook16mask.bmp"
+addressbook20         BITMAP  "rc/addressbook20.bmp"
+addressbook20mask     BITMAP  "rc/addressbook20mask.bmp"
new file mode 100644
--- /dev/null
+++ b/uibase.cpp
@@ -0,0 +1,1825 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Apr 16 2008)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#include "uibase.h"
+
+///////////////////////////////////////////////////////////////////////////
+
+CMainFrameBase::CMainFrameBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+    this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
+
+    m_menubar = new wxMenuBar(0);
+    m_menubar->SetBackgroundColour(wxColour(240, 240, 240));
+
+    m_menuFile = new wxMenu();
+    wxMenuItem* m_menuFileExit;
+    m_menuFileExit = new wxMenuItem(m_menuFile, wxID_ANY, wxString(wxT("E&xit")) , wxEmptyString, wxITEM_NORMAL);
+    m_menuFile->Append(m_menuFileExit);
+
+    m_menubar->Append(m_menuFile, wxT("&File"));
+
+    m_menuOptions = new wxMenu();
+    wxMenuItem* m_menuOptionsGenerateBitcoins;
+    m_menuOptionsGenerateBitcoins = new wxMenuItem(m_menuOptions, wxID_OPTIONSGENERATEBITCOINS, wxString(wxT("&Generate Coins")) , wxEmptyString, wxITEM_CHECK);
+    m_menuOptions->Append(m_menuOptionsGenerateBitcoins);
+
+    wxMenuItem* m_menuChangeYourAddress;
+    m_menuChangeYourAddress = new wxMenuItem(m_menuOptions, wxID_ANY, wxString(wxT("&Change Your Address...")) , wxEmptyString, wxITEM_NORMAL);
+    m_menuOptions->Append(m_menuChangeYourAddress);
+
+    wxMenuItem* m_menuOptionsOptions;
+    m_menuOptionsOptions = new wxMenuItem(m_menuOptions, wxID_ANY, wxString(wxT("&Options...")) , wxEmptyString, wxITEM_NORMAL);
+    m_menuOptions->Append(m_menuOptionsOptions);
+
+    m_menubar->Append(m_menuOptions, wxT("&Options"));
+
+    m_menuHelp = new wxMenu();
+    wxMenuItem* m_menuHelpAbout;
+    m_menuHelpAbout = new wxMenuItem(m_menuHelp, wxID_ANY, wxString(wxT("&About...")) , wxEmptyString, wxITEM_NORMAL);
+    m_menuHelp->Append(m_menuHelpAbout);
+
+    m_menubar->Append(m_menuHelp, wxT("&Help"));
+
+    this->SetMenuBar(m_menubar);
+
+    m_toolBar = this->CreateToolBar(wxTB_FLAT|wxTB_HORZ_TEXT, wxID_ANY);
+    m_toolBar->SetToolBitmapSize(wxSize(20,20));
+    m_toolBar->SetToolSeparation(1);
+    m_toolBar->SetFont(wxFont(wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString));
+
+    m_toolBar->AddTool(wxID_BUTTONSEND, wxT("&Send Coins"), wxBitmap(wxT("send20"), wxBITMAP_TYPE_RESOURCE), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
+    m_toolBar->AddTool(wxID_BUTTONRECEIVE, wxT("&Address Book"), wxBitmap(wxT("addressbook20"), wxBITMAP_TYPE_RESOURCE), wxNullBitmap, wxITEM_NORMAL, wxEmptyString, wxEmptyString);
+    m_toolBar->Realize();
+
+    m_statusBar = this->CreateStatusBar(1, wxST_SIZEGRIP, wxID_ANY);
+    m_statusBar->SetBackgroundColour(wxColour(240, 240, 240));
+
+    wxBoxSizer* bSizer2;
+    bSizer2 = new wxBoxSizer(wxVERTICAL);
+
+
+    bSizer2->Add(0, 2, 0, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer85;
+    bSizer85 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_staticText32 = new wxStaticText(this, wxID_ANY, wxT("Your Bitcoin Address:"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText32->Wrap(-1);
+    bSizer85->Add(m_staticText32, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5);
+
+    m_textCtrlAddress = new wxTextCtrl(this, wxID_TEXTCTRLADDRESS, wxEmptyString, wxDefaultPosition, wxSize(250,-1), wxTE_READONLY);
+    m_textCtrlAddress->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENU));
+
+    bSizer85->Add(m_textCtrlAddress, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_buttonCopy = new wxButton(this, wxID_BUTTONCOPY, wxT("&Copy to Clipboard"), wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT);
+    bSizer85->Add(m_buttonCopy, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5);
+
+    m_button91 = new wxButton(this, wxID_BUTTONCHANGE, wxT("C&hange..."), wxDefaultPosition, wxDefaultSize, 0);
+    m_button91->Hide();
+
+    bSizer85->Add(m_button91, 0, wxRIGHT, 5);
+
+
+    bSizer85->Add(0, 0, 0, wxEXPAND, 5);
+
+    bSizer2->Add(bSizer85, 0, wxEXPAND|wxRIGHT|wxLEFT, 5);
+
+    wxBoxSizer* bSizer3;
+    bSizer3 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_panel14 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
+    wxBoxSizer* bSizer66;
+    bSizer66 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_staticText41 = new wxStaticText(m_panel14, wxID_ANY, wxT("Balance:"), wxDefaultPosition, wxSize(-1,15), 0);
+    m_staticText41->Wrap(-1);
+    bSizer66->Add(m_staticText41, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    m_staticTextBalance = new wxStaticText(m_panel14, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(120,15), wxALIGN_RIGHT|wxST_NO_AUTORESIZE);
+    m_staticTextBalance->Wrap(-1);
+    m_staticTextBalance->SetFont(wxFont(8, 70, 90, 90, false, wxEmptyString));
+    m_staticTextBalance->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+
+    bSizer66->Add(m_staticTextBalance, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+
+    m_panel14->SetSizer(bSizer66);
+    m_panel14->Layout();
+    bSizer66->Fit(m_panel14);
+    bSizer3->Add(m_panel14, 1, wxEXPAND|wxALIGN_BOTTOM|wxALL, 5);
+
+
+    bSizer3->Add(0, 0, 0, wxEXPAND, 5);
+
+    wxString m_choiceFilterChoices[] = { wxT(" All"), wxT(" Sent"), wxT(" Received"), wxT(" In Progress") };
+    int m_choiceFilterNChoices = sizeof(m_choiceFilterChoices) / sizeof(wxString);
+    m_choiceFilter = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxSize(110,-1), m_choiceFilterNChoices, m_choiceFilterChoices, 0);
+    m_choiceFilter->SetSelection(0);
+    m_choiceFilter->Hide();
+
+    bSizer3->Add(m_choiceFilter, 0, wxALIGN_BOTTOM|wxTOP|wxRIGHT|wxLEFT, 5);
+
+    bSizer2->Add(bSizer3, 0, wxEXPAND, 5);
+
+    m_notebook = new wxNotebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
+    m_panel7 = new wxPanel(m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
+    wxBoxSizer* bSizer157;
+    bSizer157 = new wxBoxSizer(wxVERTICAL);
+
+    m_listCtrl = new wxListCtrl(m_panel7, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT|wxLC_SORT_DESCENDING|wxALWAYS_SHOW_SB);
+    bSizer157->Add(m_listCtrl, 1, wxEXPAND|wxALL, 5);
+
+    m_panel7->SetSizer(bSizer157);
+    m_panel7->Layout();
+    bSizer157->Fit(m_panel7);
+    m_notebook->AddPage(m_panel7, wxT("All Transactions"), false);
+
+    bSizer2->Add(m_notebook, 1, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer_TabsForFutureUse;
+    bSizer_TabsForFutureUse = new wxBoxSizer(wxVERTICAL);
+
+    m_panel9 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
+    m_panel9->Hide();
+
+    wxBoxSizer* bSizer159;
+    bSizer159 = new wxBoxSizer(wxVERTICAL);
+
+    m_listCtrlEscrows = new wxListCtrl(m_panel9, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT);
+    bSizer159->Add(m_listCtrlEscrows, 1, wxALL|wxEXPAND, 5);
+
+    m_panel9->SetSizer(bSizer159);
+    m_panel9->Layout();
+    bSizer159->Fit(m_panel9);
+    bSizer_TabsForFutureUse->Add(m_panel9, 1, wxEXPAND | wxALL, 5);
+
+    m_panel8 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
+    m_panel8->Hide();
+
+    wxBoxSizer* bSizer158;
+    bSizer158 = new wxBoxSizer(wxVERTICAL);
+
+    m_listCtrlOrdersSent = new wxListCtrl(m_panel8, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT);
+    bSizer158->Add(m_listCtrlOrdersSent, 1, wxALL|wxEXPAND, 5);
+
+    m_panel8->SetSizer(bSizer158);
+    m_panel8->Layout();
+    bSizer158->Fit(m_panel8);
+    bSizer_TabsForFutureUse->Add(m_panel8, 1, wxEXPAND | wxALL, 5);
+
+    m_panel10 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
+    m_panel10->Hide();
+
+    wxBoxSizer* bSizer160;
+    bSizer160 = new wxBoxSizer(wxVERTICAL);
+
+    m_listCtrlProductsSent = new wxListCtrl(m_panel10, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT);
+    bSizer160->Add(m_listCtrlProductsSent, 1, wxALL|wxEXPAND, 5);
+
+    m_panel10->SetSizer(bSizer160);
+    m_panel10->Layout();
+    bSizer160->Fit(m_panel10);
+    bSizer_TabsForFutureUse->Add(m_panel10, 1, wxEXPAND | wxALL, 5);
+
+    m_panel11 = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
+    m_panel11->Hide();
+
+    wxBoxSizer* bSizer161;
+    bSizer161 = new wxBoxSizer(wxVERTICAL);
+
+    m_listCtrlOrdersReceived = new wxListCtrl(m_panel11, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT);
+    bSizer161->Add(m_listCtrlOrdersReceived, 1, wxALL|wxEXPAND, 5);
+
+    m_panel11->SetSizer(bSizer161);
+    m_panel11->Layout();
+    bSizer161->Fit(m_panel11);
+    bSizer_TabsForFutureUse->Add(m_panel11, 1, wxEXPAND | wxALL, 5);
+
+    bSizer2->Add(bSizer_TabsForFutureUse, 1, wxEXPAND, 5);
+
+    this->SetSizer(bSizer2);
+    this->Layout();
+
+    // Connect Events
+    this->Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CMainFrameBase::OnClose));
+    this->Connect(wxEVT_IDLE, wxIdleEventHandler(CMainFrameBase::OnIdle));
+    this->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_MIDDLE_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_MIDDLE_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_MOTION, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_LEFT_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_MIDDLE_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_RIGHT_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_MOUSEWHEEL, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Connect(wxEVT_PAINT, wxPaintEventHandler(CMainFrameBase::OnPaint));
+    this->Connect(m_menuFileExit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuFileExit));
+    this->Connect(m_menuOptionsGenerateBitcoins->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuOptionsGenerate));
+    this->Connect(m_menuChangeYourAddress->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuOptionsChangeYourAddress));
+    this->Connect(m_menuOptionsOptions->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuOptionsOptions));
+    this->Connect(m_menuHelpAbout->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuHelpAbout));
+    this->Connect(wxID_BUTTONSEND, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(CMainFrameBase::OnButtonSend));
+    this->Connect(wxID_BUTTONRECEIVE, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(CMainFrameBase::OnButtonAddressBook));
+    m_textCtrlAddress->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CMainFrameBase::OnKeyDown), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_MIDDLE_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_MIDDLE_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_MOTION, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_LEFT_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_MIDDLE_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_RIGHT_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_MOUSEWHEEL, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_SET_FOCUS, wxFocusEventHandler(CMainFrameBase::OnSetFocusAddress), NULL, this);
+    m_buttonCopy->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CMainFrameBase::OnButtonCopy), NULL, this);
+    m_button91->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CMainFrameBase::OnButtonChange), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, wxListEventHandler(CMainFrameBase::OnListColBeginDrag), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CMainFrameBase::OnListItemActivatedAllTransactions), NULL, this);
+    m_listCtrl->Connect(wxEVT_PAINT, wxPaintEventHandler(CMainFrameBase::OnPaintListCtrl), NULL, this);
+    m_listCtrlOrdersSent->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CMainFrameBase::OnListItemActivatedOrdersSent), NULL, this);
+    m_listCtrlProductsSent->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CMainFrameBase::OnListItemActivatedProductsSent), NULL, this);
+    m_listCtrlOrdersReceived->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CMainFrameBase::OnListItemActivatedOrdersReceived), NULL, this);
+}
+
+CMainFrameBase::~CMainFrameBase()
+{
+    // Disconnect Events
+    this->Disconnect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CMainFrameBase::OnClose));
+    this->Disconnect(wxEVT_IDLE, wxIdleEventHandler(CMainFrameBase::OnIdle));
+    this->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MIDDLE_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MIDDLE_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MOTION, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_LEFT_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MIDDLE_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_RIGHT_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MOUSEWHEEL, wxMouseEventHandler(CMainFrameBase::OnMouseEvents));
+    this->Disconnect(wxEVT_PAINT, wxPaintEventHandler(CMainFrameBase::OnPaint));
+    this->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuFileExit));
+    this->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuOptionsGenerate));
+    this->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuOptionsChangeYourAddress));
+    this->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuOptionsOptions));
+    this->Disconnect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(CMainFrameBase::OnMenuHelpAbout));
+    this->Disconnect(wxID_BUTTONSEND, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(CMainFrameBase::OnButtonSend));
+    this->Disconnect(wxID_BUTTONRECEIVE, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(CMainFrameBase::OnButtonAddressBook));
+    m_textCtrlAddress->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CMainFrameBase::OnKeyDown), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_MIDDLE_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_MIDDLE_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_MOTION, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_LEFT_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_MIDDLE_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_RIGHT_DCLICK, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_MOUSEWHEEL, wxMouseEventHandler(CMainFrameBase::OnMouseEventsAddress), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_SET_FOCUS, wxFocusEventHandler(CMainFrameBase::OnSetFocusAddress), NULL, this);
+    m_buttonCopy->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CMainFrameBase::OnButtonCopy), NULL, this);
+    m_button91->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CMainFrameBase::OnButtonChange), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, wxListEventHandler(CMainFrameBase::OnListColBeginDrag), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CMainFrameBase::OnListItemActivatedAllTransactions), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_PAINT, wxPaintEventHandler(CMainFrameBase::OnPaintListCtrl), NULL, this);
+    m_listCtrlOrdersSent->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CMainFrameBase::OnListItemActivatedOrdersSent), NULL, this);
+    m_listCtrlProductsSent->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CMainFrameBase::OnListItemActivatedProductsSent), NULL, this);
+    m_listCtrlOrdersReceived->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CMainFrameBase::OnListItemActivatedOrdersReceived), NULL, this);
+}
+
+CTxDetailsDialogBase::CTxDetailsDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer64;
+    bSizer64 = new wxBoxSizer(wxVERTICAL);
+
+    wxBoxSizer* bSizer66;
+    bSizer66 = new wxBoxSizer(wxVERTICAL);
+
+    m_htmlWin = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
+    bSizer66->Add(m_htmlWin, 1, wxALL|wxEXPAND, 5);
+
+    bSizer64->Add(bSizer66, 1, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer65;
+    bSizer65 = new wxBoxSizer(wxVERTICAL);
+
+    m_buttonOK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize(85,25), 0);
+    bSizer65->Add(m_buttonOK, 0, wxALL, 5);
+
+    bSizer64->Add(bSizer65, 0, wxALIGN_RIGHT, 5);
+
+    this->SetSizer(bSizer64);
+    this->Layout();
+
+    // Connect Events
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CTxDetailsDialogBase::OnButtonOK), NULL, this);
+}
+
+CTxDetailsDialogBase::~CTxDetailsDialogBase()
+{
+    // Disconnect Events
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CTxDetailsDialogBase::OnButtonOK), NULL, this);
+}
+
+COptionsDialogBase::COptionsDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer55;
+    bSizer55 = new wxBoxSizer(wxVERTICAL);
+
+    wxBoxSizer* bSizer57;
+    bSizer57 = new wxBoxSizer(wxVERTICAL);
+
+
+    bSizer57->Add(0, 20, 0, wxEXPAND, 5);
+
+    m_staticText32 = new wxStaticText(this, wxID_ANY, wxT("Optional transaction fee you give to the nodes that process your transactions."), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText32->Wrap(-1);
+    bSizer57->Add(m_staticText32, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+
+    wxBoxSizer* bSizer56;
+    bSizer56 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_staticText31 = new wxStaticText(this, wxID_ANY, wxT("Transaction fee:"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText31->Wrap(-1);
+    bSizer56->Add(m_staticText31, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    m_textCtrlTransactionFee = new wxTextCtrl(this, wxID_TRANSACTIONFEE, wxEmptyString, wxDefaultPosition, wxSize(70,-1), 0);
+    bSizer56->Add(m_textCtrlTransactionFee, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    bSizer57->Add(bSizer56, 0, wxEXPAND, 5);
+
+    bSizer55->Add(bSizer57, 1, wxEXPAND|wxLEFT, 5);
+
+    wxBoxSizer* bSizer58;
+    bSizer58 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_buttonOK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize(85,25), 0);
+    bSizer58->Add(m_buttonOK, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer58->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer55->Add(bSizer58, 0, wxALIGN_RIGHT, 5);
+
+    this->SetSizer(bSizer55);
+    this->Layout();
+
+    // Connect Events
+    m_textCtrlTransactionFee->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(COptionsDialogBase::OnKillFocusTransactionFee), NULL, this);
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(COptionsDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(COptionsDialogBase::OnButtonCancel), NULL, this);
+}
+
+COptionsDialogBase::~COptionsDialogBase()
+{
+    // Disconnect Events
+    m_textCtrlTransactionFee->Disconnect(wxEVT_KILL_FOCUS, wxFocusEventHandler(COptionsDialogBase::OnKillFocusTransactionFee), NULL, this);
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(COptionsDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(COptionsDialogBase::OnButtonCancel), NULL, this);
+}
+
+CAboutDialogBase::CAboutDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer60;
+    bSizer60 = new wxBoxSizer(wxVERTICAL);
+
+    wxBoxSizer* bSizer62;
+    bSizer62 = new wxBoxSizer(wxHORIZONTAL);
+
+
+    bSizer62->Add(60, 0, 0, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer63;
+    bSizer63 = new wxBoxSizer(wxVERTICAL);
+
+
+    bSizer63->Add(0, 50, 0, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer64;
+    bSizer64 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_staticText40 = new wxStaticText(this, wxID_ANY, wxT("Bitcoin "), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText40->Wrap(-1);
+    m_staticText40->SetFont(wxFont(10, 74, 90, 92, false, wxT("Tahoma")));
+
+    bSizer64->Add(m_staticText40, 0, wxALIGN_BOTTOM|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    m_staticTextVersion = new wxStaticText(this, wxID_ANY, wxT("version"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticTextVersion->Wrap(-1);
+    m_staticTextVersion->SetFont(wxFont(10, 74, 90, 90, false, wxT("Tahoma")));
+
+    bSizer64->Add(m_staticTextVersion, 0, wxALIGN_BOTTOM|wxTOP|wxBOTTOM|wxRIGHT, 5);
+
+    bSizer63->Add(bSizer64, 0, wxEXPAND, 5);
+
+
+    bSizer63->Add(0, 4, 0, wxEXPAND, 5);
+
+    m_staticTextMain = new wxStaticText(this, wxID_ANY, wxT("Copyright © 2009 Satoshi Nakamoto.\n\nThis is experimental software.  Do not rely on it for actual financial transactions.\n\nDistributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php.\n\nThis product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com)."), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticTextMain->Wrap(400);
+    bSizer63->Add(m_staticTextMain, 0, wxALL, 5);
+
+
+    bSizer63->Add(0, 0, 1, wxEXPAND, 5);
+
+    bSizer62->Add(bSizer63, 1, wxEXPAND, 5);
+
+    bSizer60->Add(bSizer62, 1, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer61;
+    bSizer61 = new wxBoxSizer(wxHORIZONTAL);
+
+
+    bSizer61->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_buttonOK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize(85,25), 0);
+    bSizer61->Add(m_buttonOK, 0, wxALL, 5);
+
+    bSizer60->Add(bSizer61, 0, wxALIGN_RIGHT|wxEXPAND, 5);
+
+    this->SetSizer(bSizer60);
+    this->Layout();
+
+    // Connect Events
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAboutDialogBase::OnButtonOK), NULL, this);
+}
+
+CAboutDialogBase::~CAboutDialogBase()
+{
+    // Disconnect Events
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAboutDialogBase::OnButtonOK), NULL, this);
+}
+
+CSendDialogBase::CSendDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer21;
+    bSizer21 = new wxBoxSizer(wxVERTICAL);
+
+
+    bSizer21->Add(0, 5, 0, wxEXPAND, 5);
+
+    wxFlexGridSizer* fgSizer1;
+    fgSizer1 = new wxFlexGridSizer(3, 2, 0, 0);
+    fgSizer1->AddGrowableCol(1);
+    fgSizer1->SetFlexibleDirection(wxBOTH);
+    fgSizer1->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
+
+
+    fgSizer1->Add(0, 0, 0, wxEXPAND, 5);
+
+    m_staticText14 = new wxStaticText(this, wxID_ANY, wxT("Enter the recipient's IP address (e.g. 123.45.6.7) for online transfer with comments and confirmation, \nor Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) if recipient is not online."), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText14->Wrap(-1);
+    fgSizer1->Add(m_staticText14, 0, wxTOP|wxRIGHT|wxLEFT, 5);
+
+    wxBoxSizer* bSizer47;
+    bSizer47 = new wxBoxSizer(wxHORIZONTAL);
+
+    bSizer47->SetMinSize(wxSize(70,-1));
+
+    bSizer47->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_bitmapCheckMark = new wxStaticBitmap(this, wxID_ANY, wxICON(check), wxDefaultPosition, wxSize(16,16), 0);
+    bSizer47->Add(m_bitmapCheckMark, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_staticText36 = new wxStaticText(this, wxID_ANY, wxT("Pay &To:"), wxDefaultPosition, wxSize(-1,-1), wxALIGN_RIGHT);
+    m_staticText36->Wrap(-1);
+    bSizer47->Add(m_staticText36, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    fgSizer1->Add(bSizer47, 1, wxEXPAND|wxLEFT, 5);
+
+    wxBoxSizer* bSizer19;
+    bSizer19 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_textCtrlAddress = new wxTextCtrl(this, wxID_TEXTCTRLPAYTO, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    bSizer19->Add(m_textCtrlAddress, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+
+    m_buttonPaste = new wxButton(this, wxID_BUTTONPASTE, wxT("&Paste"), wxDefaultPosition, wxSize(-1,-1), wxBU_EXACTFIT);
+    bSizer19->Add(m_buttonPaste, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5);
+
+    m_buttonAddress = new wxButton(this, wxID_BUTTONADDRESSBOOK, wxT(" Address &Book..."), wxDefaultPosition, wxDefaultSize, 0);
+    bSizer19->Add(m_buttonAddress, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5);
+
+    fgSizer1->Add(bSizer19, 1, wxEXPAND|wxRIGHT, 5);
+
+    m_staticText19 = new wxStaticText(this, wxID_ANY, wxT("&Amount:"), wxDefaultPosition, wxSize(-1,-1), wxALIGN_RIGHT);
+    m_staticText19->Wrap(-1);
+    fgSizer1->Add(m_staticText19, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT, 5);
+
+    m_textCtrlAmount = new wxTextCtrl(this, wxID_TEXTCTRLAMOUNT, wxEmptyString, wxDefaultPosition, wxSize(145,-1), 0);
+    m_textCtrlAmount->SetMaxLength(20);
+    m_textCtrlAmount->SetFont(wxFont(wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString));
+
+    fgSizer1->Add(m_textCtrlAmount, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+
+    m_staticText20 = new wxStaticText(this, wxID_ANY, wxT("T&ransfer:"), wxDefaultPosition, wxSize(-1,-1), wxALIGN_RIGHT);
+    m_staticText20->Wrap(-1);
+    m_staticText20->Hide();
+
+    fgSizer1->Add(m_staticText20, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    wxString m_choiceTransferTypeChoices[] = { wxT(" Standard") };
+    int m_choiceTransferTypeNChoices = sizeof(m_choiceTransferTypeChoices) / sizeof(wxString);
+    m_choiceTransferType = new wxChoice(this, wxID_CHOICETRANSFERTYPE, wxDefaultPosition, wxDefaultSize, m_choiceTransferTypeNChoices, m_choiceTransferTypeChoices, 0);
+    m_choiceTransferType->SetSelection(0);
+    m_choiceTransferType->Hide();
+
+    fgSizer1->Add(m_choiceTransferType, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+
+
+    fgSizer1->Add(0, 3, 0, wxEXPAND, 5);
+
+
+    fgSizer1->Add(0, 0, 0, wxEXPAND, 5);
+
+    bSizer21->Add(fgSizer1, 0, wxEXPAND|wxLEFT, 5);
+
+    wxBoxSizer* bSizer672;
+    bSizer672 = new wxBoxSizer(wxHORIZONTAL);
+
+    wxBoxSizer* bSizer681;
+    bSizer681 = new wxBoxSizer(wxVERTICAL);
+
+    m_staticTextFrom = new wxStaticText(this, wxID_ANY, wxT("&From:"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticTextFrom->Wrap(-1);
+    bSizer681->Add(m_staticTextFrom, 0, wxBOTTOM|wxLEFT, 5);
+
+    m_textCtrlFrom = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    bSizer681->Add(m_textCtrlFrom, 0, wxLEFT|wxEXPAND, 5);
+
+    bSizer672->Add(bSizer681, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5);
+
+    bSizer21->Add(bSizer672, 0, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer67;
+    bSizer67 = new wxBoxSizer(wxHORIZONTAL);
+
+    wxBoxSizer* bSizer68;
+    bSizer68 = new wxBoxSizer(wxVERTICAL);
+
+    m_staticTextMessage = new wxStaticText(this, wxID_ANY, wxT("&Message:"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticTextMessage->Wrap(-1);
+    bSizer68->Add(m_staticTextMessage, 0, wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    m_textCtrlMessage = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
+    bSizer68->Add(m_textCtrlMessage, 1, wxEXPAND|wxLEFT, 5);
+
+    bSizer67->Add(bSizer68, 1, wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT, 5);
+
+    bSizer21->Add(bSizer67, 1, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer23;
+    bSizer23 = new wxBoxSizer(wxHORIZONTAL);
+
+
+    bSizer23->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_buttonSend = new wxButton(this, wxID_BUTTONSEND, wxT("&Send"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonSend->SetFont(wxFont(wxNORMAL_FONT->GetPointSize(), 70, 90, 90, false, wxEmptyString));
+    m_buttonSend->SetMinSize(wxSize(85,25));
+
+    bSizer23->Add(m_buttonSend, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer23->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer21->Add(bSizer23, 0, wxEXPAND, 5);
+
+    this->SetSizer(bSizer21);
+    this->Layout();
+
+    // Connect Events
+    m_textCtrlAddress->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CSendDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlAddress->Connect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(CSendDialogBase::OnTextAddress), NULL, this);
+    m_buttonPaste->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendDialogBase::OnButtonPaste), NULL, this);
+    m_buttonAddress->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendDialogBase::OnButtonAddressBook), NULL, this);
+    m_textCtrlAmount->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CSendDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlAmount->Connect(wxEVT_KILL_FOCUS, wxFocusEventHandler(CSendDialogBase::OnKillFocusAmount), NULL, this);
+    m_textCtrlFrom->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CSendDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlMessage->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CSendDialogBase::OnKeyDown), NULL, this);
+    m_buttonSend->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendDialogBase::OnButtonSend), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendDialogBase::OnButtonCancel), NULL, this);
+}
+
+CSendDialogBase::~CSendDialogBase()
+{
+    // Disconnect Events
+    m_textCtrlAddress->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CSendDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlAddress->Disconnect(wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler(CSendDialogBase::OnTextAddress), NULL, this);
+    m_buttonPaste->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendDialogBase::OnButtonPaste), NULL, this);
+    m_buttonAddress->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendDialogBase::OnButtonAddressBook), NULL, this);
+    m_textCtrlAmount->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CSendDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlAmount->Disconnect(wxEVT_KILL_FOCUS, wxFocusEventHandler(CSendDialogBase::OnKillFocusAmount), NULL, this);
+    m_textCtrlFrom->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CSendDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlMessage->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CSendDialogBase::OnKeyDown), NULL, this);
+    m_buttonSend->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendDialogBase::OnButtonSend), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendDialogBase::OnButtonCancel), NULL, this);
+}
+
+CSendingDialogBase::CSendingDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer68;
+    bSizer68 = new wxBoxSizer(wxVERTICAL);
+
+    m_staticTextSending = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,14), 0);
+    m_staticTextSending->Wrap(-1);
+    bSizer68->Add(m_staticTextSending, 0, wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 8);
+
+    m_textCtrlStatus = new wxTextCtrl(this, wxID_ANY, wxT("\n\nConnecting..."), wxDefaultPosition, wxDefaultSize, wxTE_CENTRE|wxTE_MULTILINE|wxTE_NO_VSCROLL|wxTE_READONLY|wxNO_BORDER);
+    m_textCtrlStatus->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
+
+    bSizer68->Add(m_textCtrlStatus, 1, wxEXPAND|wxRIGHT|wxLEFT, 10);
+
+    wxBoxSizer* bSizer69;
+    bSizer69 = new wxBoxSizer(wxHORIZONTAL);
+
+
+    bSizer69->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_buttonOK = new wxButton(this, wxID_ANY, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonOK->Enable(false);
+    m_buttonOK->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonOK, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer68->Add(bSizer69, 0, wxEXPAND, 5);
+
+    this->SetSizer(bSizer68);
+    this->Layout();
+
+    // Connect Events
+    this->Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CSendingDialogBase::OnClose));
+    this->Connect(wxEVT_PAINT, wxPaintEventHandler(CSendingDialogBase::OnPaint));
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendingDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendingDialogBase::OnButtonCancel), NULL, this);
+}
+
+CSendingDialogBase::~CSendingDialogBase()
+{
+    // Disconnect Events
+    this->Disconnect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CSendingDialogBase::OnClose));
+    this->Disconnect(wxEVT_PAINT, wxPaintEventHandler(CSendingDialogBase::OnPaint));
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendingDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CSendingDialogBase::OnButtonCancel), NULL, this);
+}
+
+CYourAddressDialogBase::CYourAddressDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer68;
+    bSizer68 = new wxBoxSizer(wxVERTICAL);
+
+
+    bSizer68->Add(0, 5, 0, wxEXPAND, 5);
+
+    m_staticText45 = new wxStaticText(this, wxID_ANY, wxT("These are your Bitcoin addresses for receiving payments.  You may want to give a different one to each sender so you can keep track of who is paying you.  The highlighted address is displayed in the main window."), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText45->Wrap(590);
+    bSizer68->Add(m_staticText45, 0, wxALL, 5);
+
+    m_listCtrl = new wxListCtrl(this, wxID_LISTCTRL, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT|wxLC_SORT_ASCENDING);
+    bSizer68->Add(m_listCtrl, 1, wxALL|wxEXPAND, 5);
+
+    wxBoxSizer* bSizer69;
+    bSizer69 = new wxBoxSizer(wxHORIZONTAL);
+
+
+    bSizer69->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_buttonRename = new wxButton(this, wxID_BUTTONRENAME, wxT("&Edit..."), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonRename->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonRename, 0, wxALL, 5);
+
+    m_buttonNew = new wxButton(this, wxID_BUTTONNEW, wxT("&New Address..."), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonNew->SetMinSize(wxSize(110,25));
+
+    bSizer69->Add(m_buttonNew, 0, wxALL, 5);
+
+    m_buttonCopy = new wxButton(this, wxID_BUTTONCOPY, wxT("&Copy to Clipboard"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonCopy->SetMinSize(wxSize(120,25));
+
+    bSizer69->Add(m_buttonCopy, 0, wxALL, 5);
+
+    m_buttonOK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonOK->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonOK, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonCancel->Hide();
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer68->Add(bSizer69, 0, wxEXPAND, 5);
+
+    this->SetSizer(bSizer68);
+    this->Layout();
+
+    // Connect Events
+    this->Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CYourAddressDialogBase::OnClose));
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_END_LABEL_EDIT, wxListEventHandler(CYourAddressDialogBase::OnListEndLabelEdit), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CYourAddressDialogBase::OnListItemActivated), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler(CYourAddressDialogBase::OnListItemSelected), NULL, this);
+    m_buttonRename->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonRename), NULL, this);
+    m_buttonNew->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonNew), NULL, this);
+    m_buttonCopy->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonCopy), NULL, this);
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonCancel), NULL, this);
+}
+
+CYourAddressDialogBase::~CYourAddressDialogBase()
+{
+    // Disconnect Events
+    this->Disconnect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CYourAddressDialogBase::OnClose));
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_END_LABEL_EDIT, wxListEventHandler(CYourAddressDialogBase::OnListEndLabelEdit), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CYourAddressDialogBase::OnListItemActivated), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler(CYourAddressDialogBase::OnListItemSelected), NULL, this);
+    m_buttonRename->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonRename), NULL, this);
+    m_buttonNew->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonNew), NULL, this);
+    m_buttonCopy->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonCopy), NULL, this);
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CYourAddressDialogBase::OnButtonCancel), NULL, this);
+}
+
+CAddressBookDialogBase::CAddressBookDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer68;
+    bSizer68 = new wxBoxSizer(wxVERTICAL);
+
+
+    bSizer68->Add(0, 5, 0, wxEXPAND, 5);
+
+    m_staticText55 = new wxStaticText(this, wxID_ANY, wxT("Bitcoin Address"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText55->Wrap(-1);
+    m_staticText55->Hide();
+
+    bSizer68->Add(m_staticText55, 0, wxTOP|wxRIGHT|wxLEFT, 5);
+
+    m_listCtrl = new wxListCtrl(this, wxID_LISTCTRL, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT|wxLC_SORT_ASCENDING);
+    bSizer68->Add(m_listCtrl, 1, wxALL|wxEXPAND, 5);
+
+    wxBoxSizer* bSizer69;
+    bSizer69 = new wxBoxSizer(wxHORIZONTAL);
+
+
+    bSizer69->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_buttonEdit = new wxButton(this, wxID_BUTTONEDIT, wxT("&Edit..."), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonEdit->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonEdit, 0, wxALL, 5);
+
+    m_buttonNew = new wxButton(this, wxID_BUTTONNEW, wxT("&New Address..."), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonNew->SetMinSize(wxSize(110,25));
+
+    bSizer69->Add(m_buttonNew, 0, wxALL, 5);
+
+    m_buttonDelete = new wxButton(this, wxID_BUTTONDELETE, wxT("&Delete"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonDelete->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonDelete, 0, wxALL, 5);
+
+    m_buttonOK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonOK->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonOK, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer69->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer68->Add(bSizer69, 0, wxEXPAND, 5);
+
+    this->SetSizer(bSizer68);
+    this->Layout();
+
+    // Connect Events
+    this->Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CAddressBookDialogBase::OnClose));
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_END_LABEL_EDIT, wxListEventHandler(CAddressBookDialogBase::OnListEndLabelEdit), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CAddressBookDialogBase::OnListItemActivated), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler(CAddressBookDialogBase::OnListItemSelected), NULL, this);
+    m_buttonEdit->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonEdit), NULL, this);
+    m_buttonNew->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonNew), NULL, this);
+    m_buttonDelete->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonDelete), NULL, this);
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonCancel), NULL, this);
+}
+
+CAddressBookDialogBase::~CAddressBookDialogBase()
+{
+    // Disconnect Events
+    this->Disconnect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CAddressBookDialogBase::OnClose));
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_END_LABEL_EDIT, wxListEventHandler(CAddressBookDialogBase::OnListEndLabelEdit), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CAddressBookDialogBase::OnListItemActivated), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler(CAddressBookDialogBase::OnListItemSelected), NULL, this);
+    m_buttonEdit->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonEdit), NULL, this);
+    m_buttonNew->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonNew), NULL, this);
+    m_buttonDelete->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonDelete), NULL, this);
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CAddressBookDialogBase::OnButtonCancel), NULL, this);
+}
+
+CProductsDialogBase::CProductsDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer22;
+    bSizer22 = new wxBoxSizer(wxVERTICAL);
+
+    wxBoxSizer* bSizer23;
+    bSizer23 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_comboBoxCategory = new wxComboBox(this, wxID_ANY, wxT("(Any Category)"), wxDefaultPosition, wxSize(150,-1), 0, NULL, 0);
+    m_comboBoxCategory->Append(wxT("(Any Category)"));
+    bSizer23->Add(m_comboBoxCategory, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlSearch = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    bSizer23->Add(m_textCtrlSearch, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonSearch = new wxButton(this, wxID_ANY, wxT("&Search"), wxDefaultPosition, wxDefaultSize, 0);
+    bSizer23->Add(m_buttonSearch, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    bSizer22->Add(bSizer23, 0, wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT, 5);
+
+    m_listCtrl = new wxListCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT);
+    bSizer22->Add(m_listCtrl, 1, wxALL|wxEXPAND, 5);
+
+    this->SetSizer(bSizer22);
+    this->Layout();
+
+    // Connect Events
+    m_comboBoxCategory->Connect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(CProductsDialogBase::OnCombobox), NULL, this);
+    m_textCtrlSearch->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CProductsDialogBase::OnKeyDown), NULL, this);
+    m_buttonSearch->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CProductsDialogBase::OnButtonSearch), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CProductsDialogBase::OnListItemActivated), NULL, this);
+}
+
+CProductsDialogBase::~CProductsDialogBase()
+{
+    // Disconnect Events
+    m_comboBoxCategory->Disconnect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(CProductsDialogBase::OnCombobox), NULL, this);
+    m_textCtrlSearch->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CProductsDialogBase::OnKeyDown), NULL, this);
+    m_buttonSearch->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CProductsDialogBase::OnButtonSearch), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CProductsDialogBase::OnListItemActivated), NULL, this);
+}
+
+CEditProductDialogBase::CEditProductDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+    this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENU));
+
+    wxBoxSizer* bSizer20;
+    bSizer20 = new wxBoxSizer(wxVERTICAL);
+
+    m_scrolledWindow = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxTAB_TRAVERSAL|wxVSCROLL);
+    m_scrolledWindow->SetScrollRate(5, 5);
+    m_scrolledWindow->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+
+    wxBoxSizer* bSizer21;
+    bSizer21 = new wxBoxSizer(wxVERTICAL);
+
+    wxFlexGridSizer* fgSizer8;
+    fgSizer8 = new wxFlexGridSizer(0, 2, 0, 0);
+    fgSizer8->AddGrowableCol(1);
+    fgSizer8->SetFlexibleDirection(wxBOTH);
+    fgSizer8->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
+
+    m_staticText106 = new wxStaticText(m_scrolledWindow, wxID_ANY, wxT("Category"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
+    m_staticText106->Wrap(-1);
+    fgSizer8->Add(m_staticText106, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    m_comboBoxCategory = new wxComboBox(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, NULL, 0);
+    m_comboBoxCategory->SetMinSize(wxSize(180,-1));
+
+    fgSizer8->Add(m_comboBoxCategory, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_staticText108 = new wxStaticText(m_scrolledWindow, wxID_ANY, wxT("Title"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
+    m_staticText108->Wrap(-1);
+    fgSizer8->Add(m_staticText108, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    m_textCtrlTitle = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    fgSizer8->Add(m_textCtrlTitle, 1, wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND, 5);
+
+    m_staticText107 = new wxStaticText(m_scrolledWindow, wxID_ANY, wxT("Price"), wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
+    m_staticText107->Wrap(-1);
+    fgSizer8->Add(m_staticText107, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    m_textCtrlPrice = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlPrice->SetMinSize(wxSize(105,-1));
+
+    fgSizer8->Add(m_textCtrlPrice, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    bSizer21->Add(fgSizer8, 0, wxEXPAND|wxTOP|wxRIGHT|wxLEFT, 5);
+
+    m_staticText22 = new wxStaticText(m_scrolledWindow, wxID_ANY, wxT("Page 1: Description"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText22->Wrap(-1);
+    bSizer21->Add(m_staticText22, 0, wxTOP|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlDescription = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
+    m_textCtrlDescription->SetMinSize(wxSize(-1,170));
+
+    bSizer21->Add(m_textCtrlDescription, 0, wxALL|wxEXPAND, 5);
+
+    m_staticText23 = new wxStaticText(m_scrolledWindow, wxID_ANY, wxT("Page 2: Order Form"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText23->Wrap(-1);
+    bSizer21->Add(m_staticText23, 0, wxTOP|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlInstructions = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
+    m_textCtrlInstructions->SetMinSize(wxSize(-1,120));
+
+    bSizer21->Add(m_textCtrlInstructions, 0, wxEXPAND|wxALL, 5);
+
+    fgSizer5 = new wxFlexGridSizer(0, 3, 0, 0);
+    fgSizer5->AddGrowableCol(1);
+    fgSizer5->SetFlexibleDirection(wxBOTH);
+    fgSizer5->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
+
+    m_staticText24 = new wxStaticText(m_scrolledWindow, wxID_ANY, wxT("Label"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText24->Wrap(-1);
+    fgSizer5->Add(m_staticText24, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5);
+
+    m_staticText25 = new wxStaticText(m_scrolledWindow, wxID_ANY, wxT("Comma separated list of choices, or leave blank for text field"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText25->Wrap(-1);
+    fgSizer5->Add(m_staticText25, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT, 5);
+
+
+    fgSizer5->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_textCtrlLabel0 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel0->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel0, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField0 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField0, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel0 = new wxButton(m_scrolledWindow, wxID_DEL0, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel0, 0, wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlLabel1 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel1->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel1, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField1 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField1, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel1 = new wxButton(m_scrolledWindow, wxID_DEL1, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel1, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel2 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel2->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel2, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField2 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField2, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel2 = new wxButton(m_scrolledWindow, wxID_DEL2, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel2, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel3 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel3->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel3, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField3 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField3, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel3 = new wxButton(m_scrolledWindow, wxID_DEL3, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel3, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel4 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel4->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel4, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField4 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField4, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel4 = new wxButton(m_scrolledWindow, wxID_DEL4, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel4, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel5 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel5->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel5, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField5 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField5, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel5 = new wxButton(m_scrolledWindow, wxID_DEL5, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel5, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel6 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel6->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel6, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField6 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField6, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel6 = new wxButton(m_scrolledWindow, wxID_DEL6, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel6, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel7 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel7->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel7, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField7 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField7, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel7 = new wxButton(m_scrolledWindow, wxID_DEL7, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel7, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel8 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel8->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel8, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField8 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField8, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel8 = new wxButton(m_scrolledWindow, wxID_DEL8, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel8, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel9 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel9->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel9, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField9 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField9, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel9 = new wxButton(m_scrolledWindow, wxID_DEL9, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel9, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel10 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel10->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel10, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField10 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField10, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel10 = new wxButton(m_scrolledWindow, wxID_DEL10, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel10, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel11 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel11->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel11, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField11 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField11, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel11 = new wxButton(m_scrolledWindow, wxID_DEL11, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel11, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel12 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel12->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel12, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField12 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField12, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel12 = new wxButton(m_scrolledWindow, wxID_DEL12, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel12, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel13 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel13->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel13, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField13 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField13, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel13 = new wxButton(m_scrolledWindow, wxID_DEL13, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel13, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel14 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel14->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel14, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField14 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField14, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel14 = new wxButton(m_scrolledWindow, wxID_DEL14, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel14, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel15 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel15->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel15, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField15 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField15, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel15 = new wxButton(m_scrolledWindow, wxID_DEL15, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel15, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel16 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel16->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel16, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField16 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField16, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel16 = new wxButton(m_scrolledWindow, wxID_DEL16, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel16, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel17 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel17->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel17, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField17 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField17, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel17 = new wxButton(m_scrolledWindow, wxID_DEL17, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel17, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel18 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel18->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel18, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField18 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField18, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel18 = new wxButton(m_scrolledWindow, wxID_DEL18, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel18, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlLabel19 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_textCtrlLabel19->SetMinSize(wxSize(150,-1));
+
+    fgSizer5->Add(m_textCtrlLabel19, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_textCtrlField19 = new wxTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,-1), 0);
+    fgSizer5->Add(m_textCtrlField19, 0, wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL, 5);
+
+    m_buttonDel19 = new wxButton(m_scrolledWindow, wxID_DEL19, wxT("Delete"), wxDefaultPosition, wxSize(60,20), 0);
+    fgSizer5->Add(m_buttonDel19, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT, 5);
+
+    bSizer21->Add(fgSizer5, 0, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer25;
+    bSizer25 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_buttonAddField = new wxButton(m_scrolledWindow, wxID_ANY, wxT("&Add Field"), wxDefaultPosition, wxDefaultSize, 0);
+    bSizer25->Add(m_buttonAddField, 0, wxALL, 5);
+
+    bSizer21->Add(bSizer25, 0, wxALIGN_CENTER_HORIZONTAL, 5);
+
+    m_scrolledWindow->SetSizer(bSizer21);
+    m_scrolledWindow->Layout();
+    bSizer21->Fit(m_scrolledWindow);
+    bSizer20->Add(m_scrolledWindow, 1, wxEXPAND|wxALL, 5);
+
+    wxBoxSizer* bSizer26;
+    bSizer26 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_buttonOK = new wxButton(this, wxID_BUTTONSEND, wxT("&Send"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonOK->SetMinSize(wxSize(85,25));
+
+    bSizer26->Add(m_buttonOK, 0, wxALL, 5);
+
+    m_buttonPreview = new wxButton(this, wxID_BUTTONPREVIEW, wxT("&Preview"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonPreview->SetMinSize(wxSize(85,25));
+
+    bSizer26->Add(m_buttonPreview, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer26->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer20->Add(bSizer26, 0, wxALIGN_RIGHT, 5);
+
+    this->SetSizer(bSizer20);
+    this->Layout();
+
+    // Connect Events
+    m_textCtrlTitle->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlPrice->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlDescription->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlInstructions->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlLabel0->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField0->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel0->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel0), NULL, this);
+    m_textCtrlLabel1->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField1->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel1->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel1), NULL, this);
+    m_textCtrlLabel2->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField2->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel2->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel2), NULL, this);
+    m_textCtrlLabel3->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField3->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel3->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel3), NULL, this);
+    m_textCtrlLabel4->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField4->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel4->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel4), NULL, this);
+    m_textCtrlLabel5->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField5->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel5->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel5), NULL, this);
+    m_textCtrlLabel6->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField6->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel6->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel6), NULL, this);
+    m_textCtrlLabel7->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField7->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel7->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel7), NULL, this);
+    m_textCtrlLabel8->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField8->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel8->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel8), NULL, this);
+    m_textCtrlLabel9->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField9->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel9->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel9), NULL, this);
+    m_textCtrlLabel10->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField10->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel10->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel10), NULL, this);
+    m_textCtrlLabel11->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField11->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel11->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel11), NULL, this);
+    m_textCtrlLabel12->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField12->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel12->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel12), NULL, this);
+    m_textCtrlLabel13->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField13->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel13->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel13), NULL, this);
+    m_textCtrlLabel14->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField14->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel14->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel14), NULL, this);
+    m_textCtrlLabel15->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField15->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel15->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel15), NULL, this);
+    m_textCtrlLabel16->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField16->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel16->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel16), NULL, this);
+    m_textCtrlLabel17->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField17->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel17->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel17), NULL, this);
+    m_textCtrlLabel18->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField18->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel18->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel18), NULL, this);
+    m_textCtrlLabel19->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField19->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel19->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel19), NULL, this);
+    m_buttonAddField->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonAddField), NULL, this);
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonSend), NULL, this);
+    m_buttonPreview->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonPreview), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonCancel), NULL, this);
+}
+
+CEditProductDialogBase::~CEditProductDialogBase()
+{
+    // Disconnect Events
+    m_textCtrlTitle->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlPrice->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlDescription->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlInstructions->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlLabel0->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField0->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel0->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel0), NULL, this);
+    m_textCtrlLabel1->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField1->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel1->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel1), NULL, this);
+    m_textCtrlLabel2->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField2->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel2->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel2), NULL, this);
+    m_textCtrlLabel3->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField3->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel3->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel3), NULL, this);
+    m_textCtrlLabel4->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField4->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel4->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel4), NULL, this);
+    m_textCtrlLabel5->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField5->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel5->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel5), NULL, this);
+    m_textCtrlLabel6->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField6->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel6->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel6), NULL, this);
+    m_textCtrlLabel7->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField7->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel7->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel7), NULL, this);
+    m_textCtrlLabel8->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField8->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel8->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel8), NULL, this);
+    m_textCtrlLabel9->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField9->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel9->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel9), NULL, this);
+    m_textCtrlLabel10->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField10->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel10->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel10), NULL, this);
+    m_textCtrlLabel11->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField11->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel11->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel11), NULL, this);
+    m_textCtrlLabel12->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField12->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel12->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel12), NULL, this);
+    m_textCtrlLabel13->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField13->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel13->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel13), NULL, this);
+    m_textCtrlLabel14->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField14->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel14->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel14), NULL, this);
+    m_textCtrlLabel15->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField15->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel15->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel15), NULL, this);
+    m_textCtrlLabel16->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField16->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel16->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel16), NULL, this);
+    m_textCtrlLabel17->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField17->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel17->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel17), NULL, this);
+    m_textCtrlLabel18->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField18->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel18->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel18), NULL, this);
+    m_textCtrlLabel19->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_textCtrlField19->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditProductDialogBase::OnKeyDown), NULL, this);
+    m_buttonDel19->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonDel19), NULL, this);
+    m_buttonAddField->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonAddField), NULL, this);
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonSend), NULL, this);
+    m_buttonPreview->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonPreview), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditProductDialogBase::OnButtonCancel), NULL, this);
+}
+
+CViewProductDialogBase::CViewProductDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+    this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENU));
+
+    wxBoxSizer* bSizer20;
+    bSizer20 = new wxBoxSizer(wxVERTICAL);
+
+    wxBoxSizer* bSizer116;
+    bSizer116 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_htmlWinReviews = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
+    m_htmlWinReviews->Hide();
+
+    bSizer116->Add(m_htmlWinReviews, 1, wxALL|wxEXPAND, 5);
+
+    m_scrolledWindow = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxTAB_TRAVERSAL|wxVSCROLL);
+    m_scrolledWindow->SetScrollRate(5, 5);
+    m_scrolledWindow->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+
+    wxBoxSizer* bSizer21;
+    bSizer21 = new wxBoxSizer(wxVERTICAL);
+
+    m_richTextHeading = new wxRichTextCtrl(m_scrolledWindow, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(-1,50), wxTE_READONLY|wxNO_BORDER);
+    bSizer21->Add(m_richTextHeading, 0, wxEXPAND, 5);
+
+    m_staticTextInstructions = new wxStaticText(m_scrolledWindow, wxID_ANY, wxT("Order Form instructions here\nmultiple lines\n1\n2\n3\n4\n5\n6"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticTextInstructions->Wrap(-1);
+    bSizer21->Add(m_staticTextInstructions, 0, wxALL|wxEXPAND, 5);
+
+    wxBoxSizer* bSizer25;
+    bSizer25 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_buttonSubmitForm = new wxButton(m_scrolledWindow, wxID_BUTTONSAMPLE, wxT("&Submit"), wxDefaultPosition, wxDefaultSize, 0);
+    bSizer25->Add(m_buttonSubmitForm, 0, wxALL, 5);
+
+    m_buttonCancelForm = new wxButton(m_scrolledWindow, wxID_CANCEL2, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0);
+    bSizer25->Add(m_buttonCancelForm, 0, wxALL, 5);
+
+    bSizer21->Add(bSizer25, 0, wxALIGN_CENTER_HORIZONTAL, 5);
+
+    m_scrolledWindow->SetSizer(bSizer21);
+    m_scrolledWindow->Layout();
+    bSizer21->Fit(m_scrolledWindow);
+    bSizer116->Add(m_scrolledWindow, 1, wxEXPAND|wxALL, 5);
+
+    bSizer20->Add(bSizer116, 1, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer26;
+    bSizer26 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_buttonBack = new wxButton(this, wxID_BUTTONBACK, wxT("< &Back  "), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonBack->Enable(false);
+    m_buttonBack->SetMinSize(wxSize(85,25));
+
+    bSizer26->Add(m_buttonBack, 0, wxALL, 5);
+
+    m_buttonNext = new wxButton(this, wxID_BUTTONNEXT, wxT("  &Next >"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonNext->SetMinSize(wxSize(85,25));
+
+    bSizer26->Add(m_buttonNext, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer26->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer20->Add(bSizer26, 0, wxALIGN_RIGHT, 5);
+
+    this->SetSizer(bSizer20);
+    this->Layout();
+
+    // Connect Events
+    m_buttonSubmitForm->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonSubmitForm), NULL, this);
+    m_buttonCancelForm->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonCancelForm), NULL, this);
+    m_buttonBack->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonBack), NULL, this);
+    m_buttonNext->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonNext), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonCancel), NULL, this);
+}
+
+CViewProductDialogBase::~CViewProductDialogBase()
+{
+    // Disconnect Events
+    m_buttonSubmitForm->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonSubmitForm), NULL, this);
+    m_buttonCancelForm->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonCancelForm), NULL, this);
+    m_buttonBack->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonBack), NULL, this);
+    m_buttonNext->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonNext), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewProductDialogBase::OnButtonCancel), NULL, this);
+}
+
+CViewOrderDialogBase::CViewOrderDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+    this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENU));
+
+    wxBoxSizer* bSizer20;
+    bSizer20 = new wxBoxSizer(wxVERTICAL);
+
+    wxBoxSizer* bSizer116;
+    bSizer116 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_htmlWin = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
+    bSizer116->Add(m_htmlWin, 1, wxALL|wxEXPAND, 5);
+
+    bSizer20->Add(bSizer116, 1, wxEXPAND, 5);
+
+    wxBoxSizer* bSizer26;
+    bSizer26 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_buttonOK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonOK->SetMinSize(wxSize(85,25));
+
+    bSizer26->Add(m_buttonOK, 0, wxALL, 5);
+
+    bSizer20->Add(bSizer26, 0, wxALIGN_RIGHT, 5);
+
+    this->SetSizer(bSizer20);
+    this->Layout();
+
+    // Connect Events
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewOrderDialogBase::OnButtonOK), NULL, this);
+}
+
+CViewOrderDialogBase::~CViewOrderDialogBase()
+{
+    // Disconnect Events
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CViewOrderDialogBase::OnButtonOK), NULL, this);
+}
+
+CEditReviewDialogBase::CEditReviewDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+    this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENU));
+
+    wxBoxSizer* bSizer112;
+    bSizer112 = new wxBoxSizer(wxVERTICAL);
+
+
+    bSizer112->Add(0, 3, 0, 0, 5);
+
+    m_staticTextSeller = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_staticTextSeller->Wrap(-1);
+    bSizer112->Add(m_staticTextSeller, 0, wxALL|wxEXPAND, 5);
+
+
+    bSizer112->Add(0, 3, 0, 0, 5);
+
+    m_staticText110 = new wxStaticText(this, wxID_ANY, wxT("Rating"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText110->Wrap(-1);
+    bSizer112->Add(m_staticText110, 0, wxTOP|wxRIGHT|wxLEFT, 5);
+
+    wxString m_choiceStarsChoices[] = { wxT(" 1 star"), wxT(" 2 stars"), wxT(" 3 stars"), wxT(" 4 stars"), wxT(" 5 stars") };
+    int m_choiceStarsNChoices = sizeof(m_choiceStarsChoices) / sizeof(wxString);
+    m_choiceStars = new wxChoice(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_choiceStarsNChoices, m_choiceStarsChoices, 0);
+    m_choiceStars->SetSelection(0);
+    bSizer112->Add(m_choiceStars, 0, wxALL, 5);
+
+    m_staticText43 = new wxStaticText(this, wxID_ANY, wxT("Review"), wxDefaultPosition, wxDefaultSize, 0);
+    m_staticText43->Wrap(-1);
+    bSizer112->Add(m_staticText43, 0, wxTOP|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrlReview = new wxTextCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE);
+    bSizer112->Add(m_textCtrlReview, 1, wxALL|wxEXPAND, 5);
+
+    wxBoxSizer* bSizer113;
+    bSizer113 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_buttonSubmit = new wxButton(this, wxID_SUBMIT, wxT("&Submit"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonSubmit->SetMinSize(wxSize(85,25));
+
+    bSizer113->Add(m_buttonSubmit, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer113->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer112->Add(bSizer113, 0, wxALIGN_RIGHT, 5);
+
+    this->SetSizer(bSizer112);
+    this->Layout();
+
+    // Connect Events
+    m_textCtrlReview->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditReviewDialogBase::OnKeyDown), NULL, this);
+    m_buttonSubmit->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditReviewDialogBase::OnButtonSubmit), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditReviewDialogBase::OnButtonCancel), NULL, this);
+}
+
+CEditReviewDialogBase::~CEditReviewDialogBase()
+{
+    // Disconnect Events
+    m_textCtrlReview->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CEditReviewDialogBase::OnKeyDown), NULL, this);
+    m_buttonSubmit->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditReviewDialogBase::OnButtonSubmit), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CEditReviewDialogBase::OnButtonCancel), NULL, this);
+}
+
+CPokerLobbyDialogBase::CPokerLobbyDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+    this->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE));
+
+    wxBoxSizer* bSizer156;
+    bSizer156 = new wxBoxSizer(wxHORIZONTAL);
+
+    m_treeCtrl = new wxTreeCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTR_HAS_BUTTONS|wxTR_HIDE_ROOT|wxTR_LINES_AT_ROOT);
+    m_treeCtrl->SetMinSize(wxSize(130,-1));
+
+    bSizer156->Add(m_treeCtrl, 0, wxEXPAND|wxTOP|wxBOTTOM|wxLEFT, 5);
+
+    wxBoxSizer* bSizer172;
+    bSizer172 = new wxBoxSizer(wxVERTICAL);
+
+    m_listCtrl = new wxListCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_NO_SORT_HEADER|wxLC_REPORT);
+    bSizer172->Add(m_listCtrl, 1, wxEXPAND|wxALL, 5);
+
+    m_buttonNewTable = new wxButton(this, wxID_OPENNEWTABLE, wxT("&Open New Table"), wxDefaultPosition, wxDefaultSize, 0);
+    bSizer172->Add(m_buttonNewTable, 0, wxALL, 5);
+
+    bSizer156->Add(bSizer172, 1, wxEXPAND, 5);
+
+    this->SetSizer(bSizer156);
+    this->Layout();
+
+    // Connect Events
+    m_treeCtrl->Connect(wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler(CPokerLobbyDialogBase::OnTreeSelChanged), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CPokerLobbyDialogBase::OnListItemActivated), NULL, this);
+    m_listCtrl->Connect(wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler(CPokerLobbyDialogBase::OnListItemSelected), NULL, this);
+    m_buttonNewTable->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerLobbyDialogBase::OnButtonNewTable), NULL, this);
+}
+
+CPokerLobbyDialogBase::~CPokerLobbyDialogBase()
+{
+    // Disconnect Events
+    m_treeCtrl->Disconnect(wxEVT_COMMAND_TREE_SEL_CHANGED, wxTreeEventHandler(CPokerLobbyDialogBase::OnTreeSelChanged), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_ITEM_ACTIVATED, wxListEventHandler(CPokerLobbyDialogBase::OnListItemActivated), NULL, this);
+    m_listCtrl->Disconnect(wxEVT_COMMAND_LIST_ITEM_SELECTED, wxListEventHandler(CPokerLobbyDialogBase::OnListItemSelected), NULL, this);
+    m_buttonNewTable->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerLobbyDialogBase::OnButtonNewTable), NULL, this);
+}
+
+CPokerDialogBase::CPokerDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer174;
+    bSizer174 = new wxBoxSizer(wxVERTICAL);
+
+    m_checkSitOut = new wxCheckBox(this, wxID_ANY, wxT("Deal Me Out"), wxDefaultPosition, wxDefaultSize, 0);
+
+    bSizer174->Add(m_checkSitOut, 0, wxALL, 5);
+
+    m_buttonDealHand = new wxButton(this, wxID_DEALHAND, wxT("&Deal Hand"), wxDefaultPosition, wxSize(150,25), 0);
+    bSizer174->Add(m_buttonDealHand, 0, wxALL, 5);
+
+    m_buttonFold = new wxButton(this, wxID_FOLD, wxT("&Fold"), wxDefaultPosition, wxSize(80,25), 0);
+    bSizer174->Add(m_buttonFold, 0, wxALL, 5);
+
+    m_buttonCall = new wxButton(this, wxID_CALL, wxT("&Call"), wxDefaultPosition, wxSize(80,25), 0);
+    bSizer174->Add(m_buttonCall, 0, wxALL, 5);
+
+    m_buttonRaise = new wxButton(this, wxID_RAISE, wxT("&Raise"), wxDefaultPosition, wxSize(80,25), 0);
+    bSizer174->Add(m_buttonRaise, 0, wxALL, 5);
+
+    m_buttonLeaveTable = new wxButton(this, wxID_LEAVETABLE, wxT("&Leave Table"), wxDefaultPosition, wxSize(90,25), 0);
+    bSizer174->Add(m_buttonLeaveTable, 0, wxALL, 5);
+
+    m_textDitchPlayer = new wxTextCtrl(this, wxID_DITCHPLAYER, wxEmptyString, wxDefaultPosition, wxSize(45,-1), wxTE_PROCESS_ENTER);
+    bSizer174->Add(m_textDitchPlayer, 0, wxALL, 5);
+
+    m_checkPreFold = new wxCheckBox(this, wxID_ANY, wxT("FOLD"), wxDefaultPosition, wxSize(100,-1), 0);
+
+    bSizer174->Add(m_checkPreFold, 0, wxALL, 5);
+
+    m_checkPreCall = new wxCheckBox(this, wxID_ANY, wxT("CALL"), wxDefaultPosition, wxSize(100,-1), 0);
+
+    bSizer174->Add(m_checkPreCall, 0, wxALL, 5);
+
+    m_checkPreCallAny = new wxCheckBox(this, wxID_ANY, wxT("CALL ANY"), wxDefaultPosition, wxSize(100,-1), 0);
+
+    bSizer174->Add(m_checkPreCallAny, 0, wxALL, 5);
+
+    m_checkPreRaise = new wxCheckBox(this, wxID_ANY, wxT("RAISE"), wxDefaultPosition, wxSize(100,-1), 0);
+
+    bSizer174->Add(m_checkPreRaise, 0, wxALL, 5);
+
+    m_checkPreRaiseAny = new wxCheckBox(this, wxID_ANY, wxT("RAISE ANY"), wxDefaultPosition, wxSize(100,-1), 0);
+
+    bSizer174->Add(m_checkPreRaiseAny, 0, wxALL, 5);
+
+    this->SetSizer(bSizer174);
+    this->Layout();
+    m_statusBar = this->CreateStatusBar(1, wxST_SIZEGRIP, wxID_ANY);
+
+    // Connect Events
+    this->Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CPokerDialogBase::OnClose));
+    this->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_MIDDLE_DOWN, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_MIDDLE_UP, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_MOTION, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_LEFT_DCLICK, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_MIDDLE_DCLICK, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_RIGHT_DCLICK, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_MOUSEWHEEL, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Connect(wxEVT_PAINT, wxPaintEventHandler(CPokerDialogBase::OnPaint));
+    this->Connect(wxEVT_SIZE, wxSizeEventHandler(CPokerDialogBase::OnSize));
+    m_checkSitOut->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckSitOut), NULL, this);
+    m_buttonDealHand->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonDealHand), NULL, this);
+    m_buttonFold->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonFold), NULL, this);
+    m_buttonCall->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonCall), NULL, this);
+    m_buttonRaise->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonRaise), NULL, this);
+    m_buttonLeaveTable->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonLeaveTable), NULL, this);
+    m_textDitchPlayer->Connect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(CPokerDialogBase::OnDitchPlayer), NULL, this);
+    m_checkPreFold->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreFold), NULL, this);
+    m_checkPreCall->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreCall), NULL, this);
+    m_checkPreCallAny->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreCallAny), NULL, this);
+    m_checkPreRaise->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreRaise), NULL, this);
+    m_checkPreRaiseAny->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreRaiseAny), NULL, this);
+}
+
+CPokerDialogBase::~CPokerDialogBase()
+{
+    // Disconnect Events
+    this->Disconnect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CPokerDialogBase::OnClose));
+    this->Disconnect(wxEVT_LEFT_DOWN, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_LEFT_UP, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MIDDLE_DOWN, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MIDDLE_UP, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_RIGHT_DOWN, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MOTION, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_LEFT_DCLICK, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MIDDLE_DCLICK, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_RIGHT_DCLICK, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_MOUSEWHEEL, wxMouseEventHandler(CPokerDialogBase::OnMouseEvents));
+    this->Disconnect(wxEVT_PAINT, wxPaintEventHandler(CPokerDialogBase::OnPaint));
+    this->Disconnect(wxEVT_SIZE, wxSizeEventHandler(CPokerDialogBase::OnSize));
+    m_checkSitOut->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckSitOut), NULL, this);
+    m_buttonDealHand->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonDealHand), NULL, this);
+    m_buttonFold->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonFold), NULL, this);
+    m_buttonCall->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonCall), NULL, this);
+    m_buttonRaise->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonRaise), NULL, this);
+    m_buttonLeaveTable->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnButtonLeaveTable), NULL, this);
+    m_textDitchPlayer->Disconnect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(CPokerDialogBase::OnDitchPlayer), NULL, this);
+    m_checkPreFold->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreFold), NULL, this);
+    m_checkPreCall->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreCall), NULL, this);
+    m_checkPreCallAny->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreCallAny), NULL, this);
+    m_checkPreRaise->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreRaise), NULL, this);
+    m_checkPreRaiseAny->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler(CPokerDialogBase::OnCheckPreRaiseAny), NULL, this);
+}
+
+CGetTextFromUserDialogBase::CGetTextFromUserDialogBase(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxDialog(parent, id, title, pos, size, style)
+{
+    this->SetSizeHints(wxDefaultSize, wxDefaultSize);
+
+    wxBoxSizer* bSizer79;
+    bSizer79 = new wxBoxSizer(wxVERTICAL);
+
+    wxBoxSizer* bSizer81;
+    bSizer81 = new wxBoxSizer(wxVERTICAL);
+
+
+    bSizer81->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_staticTextMessage1 = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_staticTextMessage1->Wrap(-1);
+    bSizer81->Add(m_staticTextMessage1, 0, wxTOP|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrl1 = new wxTextCtrl(this, wxID_TEXTCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
+    bSizer81->Add(m_textCtrl1, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5);
+
+    m_staticTextMessage2 = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0);
+    m_staticTextMessage2->Wrap(-1);
+    m_staticTextMessage2->Hide();
+
+    bSizer81->Add(m_staticTextMessage2, 0, wxTOP|wxRIGHT|wxLEFT, 5);
+
+    m_textCtrl2 = new wxTextCtrl(this, wxID_TEXTCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
+    m_textCtrl2->Hide();
+
+    bSizer81->Add(m_textCtrl2, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5);
+
+
+    bSizer81->Add(0, 0, 1, wxEXPAND, 5);
+
+    bSizer79->Add(bSizer81, 1, wxEXPAND|wxALL, 10);
+
+    wxBoxSizer* bSizer80;
+    bSizer80 = new wxBoxSizer(wxHORIZONTAL);
+
+
+    bSizer80->Add(0, 0, 1, wxEXPAND, 5);
+
+    m_buttonOK = new wxButton(this, wxID_OK, wxT("OK"), wxDefaultPosition, wxSize(-1,-1), 0);
+    m_buttonOK->SetMinSize(wxSize(85,25));
+
+    bSizer80->Add(m_buttonOK, 0, wxALL, 5);
+
+    m_buttonCancel = new wxButton(this, wxID_CANCEL, wxT("Cancel"), wxDefaultPosition, wxDefaultSize, 0);
+    m_buttonCancel->SetMinSize(wxSize(85,25));
+
+    bSizer80->Add(m_buttonCancel, 0, wxALL, 5);
+
+    bSizer79->Add(bSizer80, 0, wxEXPAND, 5);
+
+    this->SetSizer(bSizer79);
+    this->Layout();
+
+    // Connect Events
+    this->Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CGetTextFromUserDialogBase::OnClose));
+    m_textCtrl1->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CGetTextFromUserDialogBase::OnKeyDown), NULL, this);
+    m_textCtrl2->Connect(wxEVT_KEY_DOWN, wxKeyEventHandler(CGetTextFromUserDialogBase::OnKeyDown), NULL, this);
+    m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CGetTextFromUserDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CGetTextFromUserDialogBase::OnButtonCancel), NULL, this);
+}
+
+CGetTextFromUserDialogBase::~CGetTextFromUserDialogBase()
+{
+    // Disconnect Events
+    this->Disconnect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(CGetTextFromUserDialogBase::OnClose));
+    m_textCtrl1->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CGetTextFromUserDialogBase::OnKeyDown), NULL, this);
+    m_textCtrl2->Disconnect(wxEVT_KEY_DOWN, wxKeyEventHandler(CGetTextFromUserDialogBase::OnKeyDown), NULL, this);
+    m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CGetTextFromUserDialogBase::OnButtonOK), NULL, this);
+    m_buttonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(CGetTextFromUserDialogBase::OnButtonCancel), NULL, this);
+}
new file mode 100644
--- /dev/null
+++ b/uibase.h
@@ -0,0 +1,723 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+///////////////////////////////////////////////////////////////////////////
+// C++ code generated with wxFormBuilder (version Apr 16 2008)
+// http://www.wxformbuilder.org/
+//
+// PLEASE DO "NOT" EDIT THIS FILE!
+///////////////////////////////////////////////////////////////////////////
+
+#ifndef __uibase__
+#define __uibase__
+
+#include <wx/string.h>
+#include <wx/bitmap.h>
+#include <wx/image.h>
+#include <wx/icon.h>
+#include <wx/menu.h>
+#include <wx/gdicmn.h>
+#include <wx/font.h>
+#include <wx/colour.h>
+#include <wx/settings.h>
+#include <wx/toolbar.h>
+#include <wx/statusbr.h>
+#include <wx/stattext.h>
+#include <wx/textctrl.h>
+#include <wx/button.h>
+#include <wx/sizer.h>
+#include <wx/panel.h>
+#include <wx/choice.h>
+#include <wx/listctrl.h>
+#include <wx/notebook.h>
+#include <wx/frame.h>
+#include <wx/html/htmlwin.h>
+#include <wx/dialog.h>
+#include <wx/statbmp.h>
+#include <wx/combobox.h>
+#include <wx/scrolwin.h>
+#include <wx/richtext/richtextctrl.h>
+#include <wx/treectrl.h>
+#include <wx/checkbox.h>
+
+///////////////////////////////////////////////////////////////////////////
+
+#define wxID_MAINFRAME 1000
+#define wxID_OPTIONSGENERATEBITCOINS 1001
+#define wxID_BUTTONSEND 1002
+#define wxID_BUTTONRECEIVE 1003
+#define wxID_TEXTCTRLADDRESS 1004
+#define wxID_BUTTONCOPY 1005
+#define wxID_BUTTONCHANGE 1006
+#define wxID_TRANSACTIONFEE 1007
+#define wxID_TEXTCTRLPAYTO 1008
+#define wxID_BUTTONPASTE 1009
+#define wxID_BUTTONADDRESSBOOK 1010
+#define wxID_TEXTCTRLAMOUNT 1011
+#define wxID_CHOICETRANSFERTYPE 1012
+#define wxID_LISTCTRL 1013
+#define wxID_BUTTONRENAME 1014
+#define wxID_BUTTONNEW 1015
+#define wxID_BUTTONEDIT 1016
+#define wxID_BUTTONDELETE 1017
+#define wxID_DEL0 1018
+#define wxID_DEL1 1019
+#define wxID_DEL2 1020
+#define wxID_DEL3 1021
+#define wxID_DEL4 1022
+#define wxID_DEL5 1023
+#define wxID_DEL6 1024
+#define wxID_DEL7 1025
+#define wxID_DEL8 1026
+#define wxID_DEL9 1027
+#define wxID_DEL10 1028
+#define wxID_DEL11 1029
+#define wxID_DEL12 1030
+#define wxID_DEL13 1031
+#define wxID_DEL14 1032
+#define wxID_DEL15 1033
+#define wxID_DEL16 1034
+#define wxID_DEL17 1035
+#define wxID_DEL18 1036
+#define wxID_DEL19 1037
+#define wxID_BUTTONPREVIEW 1038
+#define wxID_BUTTONSAMPLE 1039
+#define wxID_CANCEL2 1040
+#define wxID_BUTTONBACK 1041
+#define wxID_BUTTONNEXT 1042
+#define wxID_SUBMIT 1043
+#define wxID_OPENNEWTABLE 1044
+#define wxID_DEALHAND 1045
+#define wxID_FOLD 1046
+#define wxID_CALL 1047
+#define wxID_RAISE 1048
+#define wxID_LEAVETABLE 1049
+#define wxID_DITCHPLAYER 1050
+#define wxID_TEXTCTRL 1051
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CMainFrameBase
+///////////////////////////////////////////////////////////////////////////////
+class CMainFrameBase : public wxFrame
+{
+private:
+
+protected:
+    wxMenuBar* m_menubar;
+    wxMenu* m_menuFile;
+    wxMenu* m_menuHelp;
+    wxToolBar* m_toolBar;
+    wxStatusBar* m_statusBar;
+
+    wxStaticText* m_staticText32;
+    wxTextCtrl* m_textCtrlAddress;
+    wxButton* m_buttonCopy;
+    wxButton* m_button91;
+
+    wxPanel* m_panel14;
+    wxStaticText* m_staticText41;
+    wxStaticText* m_staticTextBalance;
+
+    wxChoice* m_choiceFilter;
+    wxNotebook* m_notebook;
+    wxPanel* m_panel7;
+    wxPanel* m_panel9;
+    wxPanel* m_panel8;
+    wxPanel* m_panel10;
+    wxPanel* m_panel11;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnClose(wxCloseEvent& event){ event.Skip(); }
+    virtual void OnIdle(wxIdleEvent& event){ event.Skip(); }
+    virtual void OnMouseEvents(wxMouseEvent& event){ event.Skip(); }
+    virtual void OnPaint(wxPaintEvent& event){ event.Skip(); }
+    virtual void OnMenuFileExit(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnMenuOptionsGenerate(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnMenuOptionsChangeYourAddress(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnMenuOptionsOptions(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnMenuHelpAbout(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonSend(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonAddressBook(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnKeyDown(wxKeyEvent& event){ event.Skip(); }
+    virtual void OnMouseEventsAddress(wxMouseEvent& event){ event.Skip(); }
+    virtual void OnSetFocusAddress(wxFocusEvent& event){ event.Skip(); }
+    virtual void OnButtonCopy(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonChange(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnListColBeginDrag(wxListEvent& event){ event.Skip(); }
+    virtual void OnListItemActivatedAllTransactions(wxListEvent& event){ event.Skip(); }
+    virtual void OnPaintListCtrl(wxPaintEvent& event){ event.Skip(); }
+    virtual void OnListItemActivatedOrdersSent(wxListEvent& event){ event.Skip(); }
+    virtual void OnListItemActivatedProductsSent(wxListEvent& event){ event.Skip(); }
+    virtual void OnListItemActivatedOrdersReceived(wxListEvent& event){ event.Skip(); }
+
+
+public:
+    wxMenu* m_menuOptions;
+    wxListCtrl* m_listCtrl;
+    wxListCtrl* m_listCtrlEscrows;
+    wxListCtrl* m_listCtrlOrdersSent;
+    wxListCtrl* m_listCtrlProductsSent;
+    wxListCtrl* m_listCtrlOrdersReceived;
+    CMainFrameBase(wxWindow* parent, wxWindowID id = wxID_MAINFRAME, const wxString& title = wxT("Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(705,484), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL);
+    ~CMainFrameBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CTxDetailsDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CTxDetailsDialogBase : public wxDialog
+{
+private:
+
+protected:
+    wxHtmlWindow* m_htmlWin;
+    wxButton* m_buttonOK;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnButtonOK(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CTxDetailsDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Transaction Details"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(620,450), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER);
+    ~CTxDetailsDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class COptionsDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class COptionsDialogBase : public wxDialog
+{
+private:
+
+protected:
+
+    wxStaticText* m_staticText32;
+    wxStaticText* m_staticText31;
+    wxTextCtrl* m_textCtrlTransactionFee;
+    wxButton* m_buttonOK;
+    wxButton* m_buttonCancel;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnKillFocusTransactionFee(wxFocusEvent& event){ event.Skip(); }
+    virtual void OnButtonOK(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    COptionsDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Options"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(500,261), long style = wxDEFAULT_DIALOG_STYLE);
+    ~COptionsDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CAboutDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CAboutDialogBase : public wxDialog
+{
+private:
+
+protected:
+
+
+    wxStaticText* m_staticText40;
+
+    wxStaticText* m_staticTextMain;
+
+
+    wxButton* m_buttonOK;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnButtonOK(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    wxStaticText* m_staticTextVersion;
+    CAboutDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("About Bitcoin"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(507,298), long style = wxDEFAULT_DIALOG_STYLE);
+    ~CAboutDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CSendDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CSendDialogBase : public wxDialog
+{
+private:
+
+protected:
+
+
+    wxStaticText* m_staticText14;
+
+    wxStaticBitmap* m_bitmapCheckMark;
+    wxStaticText* m_staticText36;
+    wxTextCtrl* m_textCtrlAddress;
+    wxButton* m_buttonPaste;
+    wxButton* m_buttonAddress;
+    wxStaticText* m_staticText19;
+    wxTextCtrl* m_textCtrlAmount;
+    wxStaticText* m_staticText20;
+    wxChoice* m_choiceTransferType;
+
+
+    wxStaticText* m_staticTextFrom;
+    wxTextCtrl* m_textCtrlFrom;
+    wxStaticText* m_staticTextMessage;
+    wxTextCtrl* m_textCtrlMessage;
+
+    wxButton* m_buttonSend;
+    wxButton* m_buttonCancel;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnKeyDown(wxKeyEvent& event){ event.Skip(); }
+    virtual void OnTextAddress(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonPaste(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonAddressBook(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnKillFocusAmount(wxFocusEvent& event){ event.Skip(); }
+    virtual void OnButtonSend(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CSendDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Send Coins"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(675,312), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER);
+    ~CSendDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CSendingDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CSendingDialogBase : public wxDialog
+{
+private:
+
+protected:
+    wxStaticText* m_staticTextSending;
+    wxTextCtrl* m_textCtrlStatus;
+
+    wxButton* m_buttonOK;
+    wxButton* m_buttonCancel;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnClose(wxCloseEvent& event){ event.Skip(); }
+    virtual void OnPaint(wxPaintEvent& event){ event.Skip(); }
+    virtual void OnButtonOK(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CSendingDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Sending..."), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(442,151), long style = wxDEFAULT_DIALOG_STYLE);
+    ~CSendingDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CYourAddressDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CYourAddressDialogBase : public wxDialog
+{
+private:
+
+protected:
+
+    wxStaticText* m_staticText45;
+    wxListCtrl* m_listCtrl;
+
+    wxButton* m_buttonRename;
+    wxButton* m_buttonNew;
+    wxButton* m_buttonCopy;
+    wxButton* m_buttonOK;
+    wxButton* m_buttonCancel;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnClose(wxCloseEvent& event){ event.Skip(); }
+    virtual void OnListEndLabelEdit(wxListEvent& event){ event.Skip(); }
+    virtual void OnListItemActivated(wxListEvent& event){ event.Skip(); }
+    virtual void OnListItemSelected(wxListEvent& event){ event.Skip(); }
+    virtual void OnButtonRename(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonNew(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCopy(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonOK(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CYourAddressDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Your Bitcoin Addresses"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(610,390), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER);
+    ~CYourAddressDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CAddressBookDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CAddressBookDialogBase : public wxDialog
+{
+private:
+
+protected:
+
+    wxStaticText* m_staticText55;
+    wxListCtrl* m_listCtrl;
+
+    wxButton* m_buttonEdit;
+    wxButton* m_buttonNew;
+    wxButton* m_buttonDelete;
+    wxButton* m_buttonOK;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnClose(wxCloseEvent& event){ event.Skip(); }
+    virtual void OnListEndLabelEdit(wxListEvent& event){ event.Skip(); }
+    virtual void OnListItemActivated(wxListEvent& event){ event.Skip(); }
+    virtual void OnListItemSelected(wxListEvent& event){ event.Skip(); }
+    virtual void OnButtonEdit(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonNew(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDelete(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonOK(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    wxButton* m_buttonCancel;
+    CAddressBookDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Address Book"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(610,390), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER);
+    ~CAddressBookDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CProductsDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CProductsDialogBase : public wxDialog
+{
+private:
+
+protected:
+    wxComboBox* m_comboBoxCategory;
+    wxTextCtrl* m_textCtrlSearch;
+    wxButton* m_buttonSearch;
+    wxListCtrl* m_listCtrl;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnCombobox(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnKeyDown(wxKeyEvent& event){ event.Skip(); }
+    virtual void OnButtonSearch(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnListItemActivated(wxListEvent& event){ event.Skip(); }
+
+
+public:
+    CProductsDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Marketplace"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(708,535), long style = wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER);
+    ~CProductsDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CEditProductDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CEditProductDialogBase : public wxFrame
+{
+private:
+
+protected:
+    wxScrolledWindow* m_scrolledWindow;
+    wxStaticText* m_staticText106;
+    wxComboBox* m_comboBoxCategory;
+    wxStaticText* m_staticText108;
+    wxTextCtrl* m_textCtrlTitle;
+    wxStaticText* m_staticText107;
+    wxTextCtrl* m_textCtrlPrice;
+    wxStaticText* m_staticText22;
+    wxTextCtrl* m_textCtrlDescription;
+    wxStaticText* m_staticText23;
+    wxTextCtrl* m_textCtrlInstructions;
+    wxStaticText* m_staticText24;
+    wxStaticText* m_staticText25;
+
+    wxTextCtrl* m_textCtrlLabel0;
+    wxTextCtrl* m_textCtrlField0;
+    wxButton* m_buttonDel0;
+    wxTextCtrl* m_textCtrlLabel1;
+    wxTextCtrl* m_textCtrlField1;
+    wxButton* m_buttonDel1;
+    wxTextCtrl* m_textCtrlLabel2;
+    wxTextCtrl* m_textCtrlField2;
+    wxButton* m_buttonDel2;
+    wxTextCtrl* m_textCtrlLabel3;
+    wxTextCtrl* m_textCtrlField3;
+    wxButton* m_buttonDel3;
+    wxTextCtrl* m_textCtrlLabel4;
+    wxTextCtrl* m_textCtrlField4;
+    wxButton* m_buttonDel4;
+    wxTextCtrl* m_textCtrlLabel5;
+    wxTextCtrl* m_textCtrlField5;
+    wxButton* m_buttonDel5;
+    wxTextCtrl* m_textCtrlLabel6;
+    wxTextCtrl* m_textCtrlField6;
+    wxButton* m_buttonDel6;
+    wxTextCtrl* m_textCtrlLabel7;
+    wxTextCtrl* m_textCtrlField7;
+    wxButton* m_buttonDel7;
+    wxTextCtrl* m_textCtrlLabel8;
+    wxTextCtrl* m_textCtrlField8;
+    wxButton* m_buttonDel8;
+    wxTextCtrl* m_textCtrlLabel9;
+    wxTextCtrl* m_textCtrlField9;
+    wxButton* m_buttonDel9;
+    wxTextCtrl* m_textCtrlLabel10;
+    wxTextCtrl* m_textCtrlField10;
+    wxButton* m_buttonDel10;
+    wxTextCtrl* m_textCtrlLabel11;
+    wxTextCtrl* m_textCtrlField11;
+    wxButton* m_buttonDel11;
+    wxTextCtrl* m_textCtrlLabel12;
+    wxTextCtrl* m_textCtrlField12;
+    wxButton* m_buttonDel12;
+    wxTextCtrl* m_textCtrlLabel13;
+    wxTextCtrl* m_textCtrlField13;
+    wxButton* m_buttonDel13;
+    wxTextCtrl* m_textCtrlLabel14;
+    wxTextCtrl* m_textCtrlField14;
+    wxButton* m_buttonDel14;
+    wxTextCtrl* m_textCtrlLabel15;
+    wxTextCtrl* m_textCtrlField15;
+    wxButton* m_buttonDel15;
+    wxTextCtrl* m_textCtrlLabel16;
+    wxTextCtrl* m_textCtrlField16;
+    wxButton* m_buttonDel16;
+    wxTextCtrl* m_textCtrlLabel17;
+    wxTextCtrl* m_textCtrlField17;
+    wxButton* m_buttonDel17;
+    wxTextCtrl* m_textCtrlLabel18;
+    wxTextCtrl* m_textCtrlField18;
+    wxButton* m_buttonDel18;
+    wxTextCtrl* m_textCtrlLabel19;
+    wxTextCtrl* m_textCtrlField19;
+    wxButton* m_buttonDel19;
+    wxButton* m_buttonAddField;
+    wxButton* m_buttonOK;
+    wxButton* m_buttonPreview;
+    wxButton* m_buttonCancel;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnKeyDown(wxKeyEvent& event){ event.Skip(); }
+    virtual void OnButtonDel0(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel1(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel2(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel3(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel4(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel5(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel6(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel7(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel8(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel9(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel10(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel11(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel12(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel13(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel14(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel15(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel16(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel17(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel18(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDel19(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonAddField(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonSend(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonPreview(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    wxFlexGridSizer* fgSizer5;
+    CEditProductDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Edit Product"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(660,640), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL);
+    ~CEditProductDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CViewProductDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CViewProductDialogBase : public wxFrame
+{
+private:
+
+protected:
+    wxHtmlWindow* m_htmlWinReviews;
+    wxScrolledWindow* m_scrolledWindow;
+    wxRichTextCtrl* m_richTextHeading;
+    wxStaticText* m_staticTextInstructions;
+    wxButton* m_buttonSubmitForm;
+    wxButton* m_buttonCancelForm;
+    wxButton* m_buttonBack;
+    wxButton* m_buttonNext;
+    wxButton* m_buttonCancel;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnButtonSubmitForm(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancelForm(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonBack(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonNext(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CViewProductDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Order Form"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(630,520), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL);
+    ~CViewProductDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CViewOrderDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CViewOrderDialogBase : public wxFrame
+{
+private:
+
+protected:
+    wxHtmlWindow* m_htmlWin;
+    wxButton* m_buttonOK;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnButtonOK(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CViewOrderDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("View Order"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(630,520), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL);
+    ~CViewOrderDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CEditReviewDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CEditReviewDialogBase : public wxFrame
+{
+private:
+
+protected:
+
+    wxStaticText* m_staticTextSeller;
+
+    wxStaticText* m_staticText110;
+    wxChoice* m_choiceStars;
+    wxStaticText* m_staticText43;
+    wxTextCtrl* m_textCtrlReview;
+    wxButton* m_buttonSubmit;
+    wxButton* m_buttonCancel;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnKeyDown(wxKeyEvent& event){ event.Skip(); }
+    virtual void OnButtonSubmit(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CEditReviewDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Enter Review"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(630,440), long style = wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxTAB_TRAVERSAL);
+    ~CEditReviewDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CPokerLobbyDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CPokerLobbyDialogBase : public wxFrame
+{
+private:
+
+protected:
+    wxTreeCtrl* m_treeCtrl;
+    wxListCtrl* m_listCtrl;
+    wxButton* m_buttonNewTable;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnTreeSelChanged(wxTreeEvent& event){ event.Skip(); }
+    virtual void OnListItemActivated(wxListEvent& event){ event.Skip(); }
+    virtual void OnListItemSelected(wxListEvent& event){ event.Skip(); }
+    virtual void OnButtonNewTable(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CPokerLobbyDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Poker Lobby"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(586,457), long style = wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL);
+    ~CPokerLobbyDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CPokerDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CPokerDialogBase : public wxFrame
+{
+private:
+
+protected:
+    wxButton* m_buttonDealHand;
+    wxButton* m_buttonFold;
+    wxButton* m_buttonCall;
+    wxButton* m_buttonRaise;
+    wxButton* m_buttonLeaveTable;
+    wxTextCtrl* m_textDitchPlayer;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnClose(wxCloseEvent& event){ event.Skip(); }
+    virtual void OnMouseEvents(wxMouseEvent& event){ event.Skip(); }
+    virtual void OnPaint(wxPaintEvent& event){ event.Skip(); }
+    virtual void OnSize(wxSizeEvent& event){ event.Skip(); }
+    virtual void OnCheckSitOut(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonDealHand(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonFold(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCall(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonRaise(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonLeaveTable(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnDitchPlayer(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnCheckPreFold(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnCheckPreCall(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnCheckPreCallAny(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnCheckPreRaise(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnCheckPreRaiseAny(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    wxCheckBox* m_checkSitOut;
+    wxCheckBox* m_checkPreFold;
+    wxCheckBox* m_checkPreCall;
+    wxCheckBox* m_checkPreCallAny;
+    wxCheckBox* m_checkPreRaise;
+    wxCheckBox* m_checkPreRaiseAny;
+    wxStatusBar* m_statusBar;
+    CPokerDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxT("Poker"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(806,550), long style = wxDEFAULT_FRAME_STYLE|wxFRAME_NO_TASKBAR|wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL);
+    ~CPokerDialogBase();
+
+};
+
+///////////////////////////////////////////////////////////////////////////////
+/// Class CGetTextFromUserDialogBase
+///////////////////////////////////////////////////////////////////////////////
+class CGetTextFromUserDialogBase : public wxDialog
+{
+private:
+
+protected:
+
+    wxStaticText* m_staticTextMessage1;
+    wxTextCtrl* m_textCtrl1;
+    wxStaticText* m_staticTextMessage2;
+    wxTextCtrl* m_textCtrl2;
+
+
+    wxButton* m_buttonOK;
+    wxButton* m_buttonCancel;
+
+    // Virtual event handlers, overide them in your derived class
+    virtual void OnClose(wxCloseEvent& event){ event.Skip(); }
+    virtual void OnKeyDown(wxKeyEvent& event){ event.Skip(); }
+    virtual void OnButtonOK(wxCommandEvent& event){ event.Skip(); }
+    virtual void OnButtonCancel(wxCommandEvent& event){ event.Skip(); }
+
+
+public:
+    CGetTextFromUserDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize(403,138), long style = wxDEFAULT_DIALOG_STYLE);
+    ~CGetTextFromUserDialogBase();
+
+};
+
+#endif //__uibase__
new file mode 100644
--- /dev/null
+++ b/uint256.h
@@ -0,0 +1,750 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include <limits.h>
+#include <string>
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+typedef __int64  int64;
+typedef unsigned __int64  uint64;
+#else
+typedef long long  int64;
+typedef unsigned long long  uint64;
+#endif
+#if defined(_MSC_VER) && _MSC_VER < 1300
+#define for  if (false) ; else for
+#endif
+
+
+inline int Testuint256AdHoc(vector<string> vArg);
+
+
+
+// We have to keep a separate base class without constructors
+// so the compiler will let us use it in a union
+template<unsigned int BITS>
+class base_uint
+{
+protected:
+    enum { WIDTH=BITS/32 };
+    unsigned int pn[WIDTH];
+public:
+
+    bool operator!() const
+    {
+        for (int i = 0; i < WIDTH; i++)
+            if (pn[i] != 0)
+                return false;
+        return true;
+    }
+
+    const base_uint operator~() const
+    {
+        base_uint ret;
+        for (int i = 0; i < WIDTH; i++)
+            ret.pn[i] = ~pn[i];
+        return ret;
+    }
+
+    const base_uint operator-() const
+    {
+        base_uint ret;
+        for (int i = 0; i < WIDTH; i++)
+            ret.pn[i] = ~pn[i];
+        ret++;
+        return ret;
+    }
+
+
+    base_uint& operator=(uint64 b)
+    {
+        pn[0] = (unsigned int)b;
+        pn[1] = (unsigned int)(b >> 32);
+        for (int i = 2; i < WIDTH; i++)
+            pn[i] = 0;
+        return *this;
+    }
+
+    base_uint& operator^=(const base_uint& b)
+    {
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] ^= b.pn[i];
+        return *this;
+    }
+
+    base_uint& operator&=(const base_uint& b)
+    {
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] &= b.pn[i];
+        return *this;
+    }
+
+    base_uint& operator|=(const base_uint& b)
+    {
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] |= b.pn[i];
+        return *this;
+    }
+
+    base_uint& operator^=(uint64 b)
+    {
+        pn[0] ^= (unsigned int)b;
+        pn[1] ^= (unsigned int)(b >> 32);
+        return *this;
+    }
+
+    base_uint& operator&=(uint64 b)
+    {
+        pn[0] &= (unsigned int)b;
+        pn[1] &= (unsigned int)(b >> 32);
+        return *this;
+    }
+
+    base_uint& operator|=(uint64 b)
+    {
+        pn[0] |= (unsigned int)b;
+        pn[1] |= (unsigned int)(b >> 32);
+        return *this;
+    }
+
+    base_uint& operator<<=(unsigned int shift)
+    {
+        base_uint a(*this);
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] = 0;
+        int k = shift / 32;
+        shift = shift % 32;
+        for (int i = 0; i < WIDTH; i++)
+        {
+            if (i+k+1 < WIDTH && shift != 0)
+                pn[i+k+1] |= (a.pn[i] >> (32-shift));
+            if (i+k < WIDTH)
+                pn[i+k] |= (a.pn[i] << shift);
+        }
+        return *this;
+    }
+
+    base_uint& operator>>=(unsigned int shift)
+    {
+        base_uint a(*this);
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] = 0;
+        int k = shift / 32;
+        shift = shift % 32;
+        for (int i = 0; i < WIDTH; i++)
+        {
+            if (i-k-1 >= 0 && shift != 0)
+                pn[i-k-1] |= (a.pn[i] << (32-shift));
+            if (i-k >= 0)
+                pn[i-k] |= (a.pn[i] >> shift);
+        }
+        return *this;
+    }
+
+    base_uint& operator+=(const base_uint& b)
+    {
+        uint64 carry = 0;
+        for (int i = 0; i < WIDTH; i++)
+        {
+            uint64 n = carry + pn[i] + b.pn[i];
+            pn[i] = n & 0xffffffff;
+            carry = n >> 32;
+        }
+        return *this;
+    }
+
+    base_uint& operator-=(const base_uint& b)
+    {
+        *this += -b;
+        return *this;
+    }
+
+    base_uint& operator+=(uint64 b64)
+    {
+        base_uint b;
+        b = b64;
+        *this += b;
+        return *this;
+    }
+
+    base_uint& operator-=(uint64 b64)
+    {
+        base_uint b;
+        b = b64;
+        *this += -b;
+        return *this;
+    }
+
+
+    base_uint& operator++()
+    {
+        // prefix operator
+        int i = 0;
+        while (++pn[i] == 0 && i < WIDTH-1)
+            i++;
+        return *this;
+    }
+
+    const base_uint operator++(int)
+    {
+        // postfix operator
+        const base_uint ret = *this;
+        ++(*this);
+        return ret;
+    }
+
+    base_uint& operator--()
+    {
+        // prefix operator
+        int i = 0;
+        while (--pn[i] == -1 && i < WIDTH-1)
+            i++;
+        return *this;
+    }
+
+    const base_uint operator--(int)
+    {
+        // postfix operator
+        const base_uint ret = *this;
+        --(*this);
+        return ret;
+    }
+
+
+    friend inline bool operator<(const base_uint& a, const base_uint& b)
+    {
+        for (int i = base_uint::WIDTH-1; i >= 0; i--)
+        {
+            if (a.pn[i] < b.pn[i])
+                return true;
+            else if (a.pn[i] > b.pn[i])
+                return false;
+        }
+        return false;
+    }
+
+    friend inline bool operator<=(const base_uint& a, const base_uint& b)
+    {
+        for (int i = base_uint::WIDTH-1; i >= 0; i--)
+        {
+            if (a.pn[i] < b.pn[i])
+                return true;
+            else if (a.pn[i] > b.pn[i])
+                return false;
+        }
+        return true;
+    }
+
+    friend inline bool operator>(const base_uint& a, const base_uint& b)
+    {
+        for (int i = base_uint::WIDTH-1; i >= 0; i--)
+        {
+            if (a.pn[i] > b.pn[i])
+                return true;
+            else if (a.pn[i] < b.pn[i])
+                return false;
+        }
+        return false;
+    }
+
+    friend inline bool operator>=(const base_uint& a, const base_uint& b)
+    {
+        for (int i = base_uint::WIDTH-1; i >= 0; i--)
+        {
+            if (a.pn[i] > b.pn[i])
+                return true;
+            else if (a.pn[i] < b.pn[i])
+                return false;
+        }
+        return true;
+    }
+
+    friend inline bool operator==(const base_uint& a, const base_uint& b)
+    {
+        for (int i = 0; i < base_uint::WIDTH; i++)
+            if (a.pn[i] != b.pn[i])
+                return false;
+        return true;
+    }
+
+    friend inline bool operator==(const base_uint& a, uint64 b)
+    {
+        if (a.pn[0] != (unsigned int)b)
+            return false;
+        if (a.pn[1] != (unsigned int)(b >> 32))
+            return false;
+        for (int i = 2; i < base_uint::WIDTH; i++)
+            if (a.pn[i] != 0)
+                return false;
+        return true;
+    }
+
+    friend inline bool operator!=(const base_uint& a, const base_uint& b)
+    {
+        return (!(a == b));
+    }
+
+    friend inline bool operator!=(const base_uint& a, uint64 b)
+    {
+        return (!(a == b));
+    }
+
+
+
+    std::string GetHex() const
+    {
+        char psz[sizeof(pn)*2 + 1];
+        for (int i = 0; i < sizeof(pn); i++)
+            sprintf(psz + i*2, "%02x", ((unsigned char*)pn)[sizeof(pn) - i - 1]);
+        return string(psz, psz + sizeof(pn)*2);
+    }
+
+    void SetHex(const std::string& str)
+    {
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] = 0;
+
+        // skip 0x
+        const char* psz = str.c_str();
+        while (isspace(*psz))
+            psz++;
+        if (psz[0] == '0' && tolower(psz[1]) == 'x')
+            psz += 2;
+        while (isspace(*psz))
+            psz++;
+
+        // hex string to uint
+        static char phexdigit[256] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0xa,0xb,0xc,0xd,0xe,0xf,0,0,0,0,0,0,0,0,0 };
+        const char* pbegin = psz;
+        while (phexdigit[*psz] || *psz == '0')
+            psz++;
+        psz--;
+        unsigned char* p1 = (unsigned char*)pn;
+        unsigned char* pend = p1 + WIDTH * 4;
+        while (psz >= pbegin && p1 < pend)
+        {
+            *p1 = phexdigit[(unsigned char)*psz--];
+            if (psz >= pbegin)
+            {
+                *p1 |= (phexdigit[(unsigned char)*psz--] << 4);
+                p1++;
+            }
+        }
+    }
+
+    std::string ToString() const
+    {
+        return (GetHex());
+    }
+
+    unsigned char* begin()
+    {
+        return (unsigned char*)&pn[0];
+    }
+
+    unsigned char* end()
+    {
+        return (unsigned char*)&pn[WIDTH];
+    }
+
+    unsigned int size()
+    {
+        return sizeof(pn);
+    }
+
+
+    unsigned int GetSerializeSize(int nType=0, int nVersion=VERSION) const
+    {
+        return sizeof(pn);
+    }
+
+    template<typename Stream>
+    void Serialize(Stream& s, int nType=0, int nVersion=VERSION) const
+    {
+        s.write((char*)pn, sizeof(pn));
+    }
+
+    template<typename Stream>
+    void Unserialize(Stream& s, int nType=0, int nVersion=VERSION)
+    {
+        s.read((char*)pn, sizeof(pn));
+    }
+
+
+    friend class uint160;
+    friend class uint256;
+    friend inline int Testuint256AdHoc(vector<string> vArg);
+};
+
+typedef base_uint<160> base_uint160;
+typedef base_uint<256> base_uint256;
+
+
+
+//
+// uint160 and uint256 could be implemented as templates, but to keep
+// compile errors and debugging cleaner, they're copy and pasted.
+// It's safe to search and replace 160 with 256 and vice versa.
+//
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// uint160
+//
+
+class uint160 : public base_uint160
+{
+public:
+    typedef base_uint160 basetype;
+
+    uint160()
+    {
+    }
+
+    uint160(const basetype& b)
+    {
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] = b.pn[i];
+    }
+
+    uint160& operator=(const basetype& b)
+    {
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] = b.pn[i];
+        return *this;
+    }
+
+    uint160(uint64 b)
+    {
+        pn[0] = (unsigned int)b;
+        pn[1] = (unsigned int)(b >> 32);
+        for (int i = 2; i < WIDTH; i++)
+            pn[i] = 0;
+    }
+
+    uint160& operator=(uint64 b)
+    {
+        pn[0] = (unsigned int)b;
+        pn[1] = (unsigned int)(b >> 32);
+        for (int i = 2; i < WIDTH; i++)
+            pn[i] = 0;
+        return *this;
+    }
+
+    explicit uint160(const std::string& str)
+    {
+        SetHex(str);
+    }
+
+    explicit uint160(const std::vector<unsigned char>& vch)
+    {
+        if (vch.size() == sizeof(pn))
+            memcpy(pn, &vch[0], sizeof(pn));
+        else
+            *this = 0;
+    }
+};
+
+inline bool operator==(const uint160& a, uint64 b)                           { return (base_uint160)a == b; }
+inline bool operator!=(const uint160& a, uint64 b)                           { return (base_uint160)a != b; }
+inline const uint160 operator<<(const base_uint160& a, unsigned int shift)   { return uint160(a) <<= shift; }
+inline const uint160 operator>>(const base_uint160& a, unsigned int shift)   { return uint160(a) >>= shift; }
+inline const uint160 operator<<(const uint160& a, unsigned int shift)        { return uint160(a) <<= shift; }
+inline const uint160 operator>>(const uint160& a, unsigned int shift)        { return uint160(a) >>= shift; }
+
+inline const uint160 operator^(const base_uint160& a, const base_uint160& b) { return uint160(a) ^= b; }
+inline const uint160 operator&(const base_uint160& a, const base_uint160& b) { return uint160(a) &= b; }
+inline const uint160 operator|(const base_uint160& a, const base_uint160& b) { return uint160(a) |= b; }
+inline const uint160 operator+(const base_uint160& a, const base_uint160& b) { return uint160(a) += b; }
+inline const uint160 operator-(const base_uint160& a, const base_uint160& b) { return uint160(a) -= b; }
+
+inline bool operator<(const base_uint160& a, const uint160& b)          { return (base_uint160)a <  (base_uint160)b; }
+inline bool operator<=(const base_uint160& a, const uint160& b)         { return (base_uint160)a <= (base_uint160)b; }
+inline bool operator>(const base_uint160& a, const uint160& b)          { return (base_uint160)a >  (base_uint160)b; }
+inline bool operator>=(const base_uint160& a, const uint160& b)         { return (base_uint160)a >= (base_uint160)b; }
+inline bool operator==(const base_uint160& a, const uint160& b)         { return (base_uint160)a == (base_uint160)b; }
+inline bool operator!=(const base_uint160& a, const uint160& b)         { return (base_uint160)a != (base_uint160)b; }
+inline const uint160 operator^(const base_uint160& a, const uint160& b) { return (base_uint160)a ^  (base_uint160)b; }
+inline const uint160 operator&(const base_uint160& a, const uint160& b) { return (base_uint160)a &  (base_uint160)b; }
+inline const uint160 operator|(const base_uint160& a, const uint160& b) { return (base_uint160)a |  (base_uint160)b; }
+inline const uint160 operator+(const base_uint160& a, const uint160& b) { return (base_uint160)a +  (base_uint160)b; }
+inline const uint160 operator-(const base_uint160& a, const uint160& b) { return (base_uint160)a -  (base_uint160)b; }
+
+inline bool operator<(const uint160& a, const base_uint160& b)          { return (base_uint160)a <  (base_uint160)b; }
+inline bool operator<=(const uint160& a, const base_uint160& b)         { return (base_uint160)a <= (base_uint160)b; }
+inline bool operator>(const uint160& a, const base_uint160& b)          { return (base_uint160)a >  (base_uint160)b; }
+inline bool operator>=(const uint160& a, const base_uint160& b)         { return (base_uint160)a >= (base_uint160)b; }
+inline bool operator==(const uint160& a, const base_uint160& b)         { return (base_uint160)a == (base_uint160)b; }
+inline bool operator!=(const uint160& a, const base_uint160& b)         { return (base_uint160)a != (base_uint160)b; }
+inline const uint160 operator^(const uint160& a, const base_uint160& b) { return (base_uint160)a ^  (base_uint160)b; }
+inline const uint160 operator&(const uint160& a, const base_uint160& b) { return (base_uint160)a &  (base_uint160)b; }
+inline const uint160 operator|(const uint160& a, const base_uint160& b) { return (base_uint160)a |  (base_uint160)b; }
+inline const uint160 operator+(const uint160& a, const base_uint160& b) { return (base_uint160)a +  (base_uint160)b; }
+inline const uint160 operator-(const uint160& a, const base_uint160& b) { return (base_uint160)a -  (base_uint160)b; }
+
+inline bool operator<(const uint160& a, const uint160& b)               { return (base_uint160)a <  (base_uint160)b; }
+inline bool operator<=(const uint160& a, const uint160& b)              { return (base_uint160)a <= (base_uint160)b; }
+inline bool operator>(const uint160& a, const uint160& b)               { return (base_uint160)a >  (base_uint160)b; }
+inline bool operator>=(const uint160& a, const uint160& b)              { return (base_uint160)a >= (base_uint160)b; }
+inline bool operator==(const uint160& a, const uint160& b)              { return (base_uint160)a == (base_uint160)b; }
+inline bool operator!=(const uint160& a, const uint160& b)              { return (base_uint160)a != (base_uint160)b; }
+inline const uint160 operator^(const uint160& a, const uint160& b)      { return (base_uint160)a ^  (base_uint160)b; }
+inline const uint160 operator&(const uint160& a, const uint160& b)      { return (base_uint160)a &  (base_uint160)b; }
+inline const uint160 operator|(const uint160& a, const uint160& b)      { return (base_uint160)a |  (base_uint160)b; }
+inline const uint160 operator+(const uint160& a, const uint160& b)      { return (base_uint160)a +  (base_uint160)b; }
+inline const uint160 operator-(const uint160& a, const uint160& b)      { return (base_uint160)a -  (base_uint160)b; }
+
+
+
+
+
+
+//////////////////////////////////////////////////////////////////////////////
+//
+// uint256
+//
+
+class uint256 : public base_uint256
+{
+public:
+    typedef base_uint256 basetype;
+
+    uint256()
+    {
+    }
+
+    uint256(const basetype& b)
+    {
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] = b.pn[i];
+    }
+
+    uint256& operator=(const basetype& b)
+    {
+        for (int i = 0; i < WIDTH; i++)
+            pn[i] = b.pn[i];
+        return *this;
+    }
+
+    uint256(uint64 b)
+    {
+        pn[0] = (unsigned int)b;
+        pn[1] = (unsigned int)(b >> 32);
+        for (int i = 2; i < WIDTH; i++)
+            pn[i] = 0;
+    }
+
+    uint256& operator=(uint64 b)
+    {
+        pn[0] = (unsigned int)b;
+        pn[1] = (unsigned int)(b >> 32);
+        for (int i = 2; i < WIDTH; i++)
+            pn[i] = 0;
+        return *this;
+    }
+
+    explicit uint256(const std::string& str)
+    {
+        SetHex(str);
+    }
+
+    explicit uint256(const std::vector<unsigned char>& vch)
+    {
+        if (vch.size() == sizeof(pn))
+            memcpy(pn, &vch[0], sizeof(pn));
+        else
+            *this = 0;
+    }
+};
+
+inline bool operator==(const uint256& a, uint64 b)                           { return (base_uint256)a == b; }
+inline bool operator!=(const uint256& a, uint64 b)                           { return (base_uint256)a != b; }
+inline const uint256 operator<<(const base_uint256& a, unsigned int shift)   { return uint256(a) <<= shift; }
+inline const uint256 operator>>(const base_uint256& a, unsigned int shift)   { return uint256(a) >>= shift; }
+inline const uint256 operator<<(const uint256& a, unsigned int shift)        { return uint256(a) <<= shift; }
+inline const uint256 operator>>(const uint256& a, unsigned int shift)        { return uint256(a) >>= shift; }
+
+inline const uint256 operator^(const base_uint256& a, const base_uint256& b) { return uint256(a) ^= b; }
+inline const uint256 operator&(const base_uint256& a, const base_uint256& b) { return uint256(a) &= b; }
+inline const uint256 operator|(const base_uint256& a, const base_uint256& b) { return uint256(a) |= b; }
+inline const uint256 operator+(const base_uint256& a, const base_uint256& b) { return uint256(a) += b; }
+inline const uint256 operator-(const base_uint256& a, const base_uint256& b) { return uint256(a) -= b; }
+
+inline bool operator<(const base_uint256& a, const uint256& b)          { return (base_uint256)a <  (base_uint256)b; }
+inline bool operator<=(const base_uint256& a, const uint256& b)         { return (base_uint256)a <= (base_uint256)b; }
+inline bool operator>(const base_uint256& a, const uint256& b)          { return (base_uint256)a >  (base_uint256)b; }
+inline bool operator>=(const base_uint256& a, const uint256& b)         { return (base_uint256)a >= (base_uint256)b; }
+inline bool operator==(const base_uint256& a, const uint256& b)         { return (base_uint256)a == (base_uint256)b; }
+inline bool operator!=(const base_uint256& a, const uint256& b)         { return (base_uint256)a != (base_uint256)b; }
+inline const uint256 operator^(const base_uint256& a, const uint256& b) { return (base_uint256)a ^  (base_uint256)b; }
+inline const uint256 operator&(const base_uint256& a, const uint256& b) { return (base_uint256)a &  (base_uint256)b; }
+inline const uint256 operator|(const base_uint256& a, const uint256& b) { return (base_uint256)a |  (base_uint256)b; }
+inline const uint256 operator+(const base_uint256& a, const uint256& b) { return (base_uint256)a +  (base_uint256)b; }
+inline const uint256 operator-(const base_uint256& a, const uint256& b) { return (base_uint256)a -  (base_uint256)b; }
+
+inline bool operator<(const uint256& a, const base_uint256& b)          { return (base_uint256)a <  (base_uint256)b; }
+inline bool operator<=(const uint256& a, const base_uint256& b)         { return (base_uint256)a <= (base_uint256)b; }
+inline bool operator>(const uint256& a, const base_uint256& b)          { return (base_uint256)a >  (base_uint256)b; }
+inline bool operator>=(const uint256& a, const base_uint256& b)         { return (base_uint256)a >= (base_uint256)b; }
+inline bool operator==(const uint256& a, const base_uint256& b)         { return (base_uint256)a == (base_uint256)b; }
+inline bool operator!=(const uint256& a, const base_uint256& b)         { return (base_uint256)a != (base_uint256)b; }
+inline const uint256 operator^(const uint256& a, const base_uint256& b) { return (base_uint256)a ^  (base_uint256)b; }
+inline const uint256 operator&(const uint256& a, const base_uint256& b) { return (base_uint256)a &  (base_uint256)b; }
+inline const uint256 operator|(const uint256& a, const base_uint256& b) { return (base_uint256)a |  (base_uint256)b; }
+inline const uint256 operator+(const uint256& a, const base_uint256& b) { return (base_uint256)a +  (base_uint256)b; }
+inline const uint256 operator-(const uint256& a, const base_uint256& b) { return (base_uint256)a -  (base_uint256)b; }
+
+inline bool operator<(const uint256& a, const uint256& b)               { return (base_uint256)a <  (base_uint256)b; }
+inline bool operator<=(const uint256& a, const uint256& b)              { return (base_uint256)a <= (base_uint256)b; }
+inline bool operator>(const uint256& a, const uint256& b)               { return (base_uint256)a >  (base_uint256)b; }
+inline bool operator>=(const uint256& a, const uint256& b)              { return (base_uint256)a >= (base_uint256)b; }
+inline bool operator==(const uint256& a, const uint256& b)              { return (base_uint256)a == (base_uint256)b; }
+inline bool operator!=(const uint256& a, const uint256& b)              { return (base_uint256)a != (base_uint256)b; }
+inline const uint256 operator^(const uint256& a, const uint256& b)      { return (base_uint256)a ^  (base_uint256)b; }
+inline const uint256 operator&(const uint256& a, const uint256& b)      { return (base_uint256)a &  (base_uint256)b; }
+inline const uint256 operator|(const uint256& a, const uint256& b)      { return (base_uint256)a |  (base_uint256)b; }
+inline const uint256 operator+(const uint256& a, const uint256& b)      { return (base_uint256)a +  (base_uint256)b; }
+inline const uint256 operator-(const uint256& a, const uint256& b)      { return (base_uint256)a -  (base_uint256)b; }
+
+
+
+
+
+
+
+
+
+
+
+
+inline int Testuint256AdHoc(vector<string> vArg)
+{
+    uint256 g(0);
+
+
+    printf("%s\n", g.ToString().c_str());
+    g--;  printf("g--\n");
+    printf("%s\n", g.ToString().c_str());
+    g--;  printf("g--\n");
+    printf("%s\n", g.ToString().c_str());
+    g++;  printf("g++\n");
+    printf("%s\n", g.ToString().c_str());
+    g++;  printf("g++\n");
+    printf("%s\n", g.ToString().c_str());
+    g++;  printf("g++\n");
+    printf("%s\n", g.ToString().c_str());
+    g++;  printf("g++\n");
+    printf("%s\n", g.ToString().c_str());
+
+
+
+    uint256 a(7);
+    printf("a=7\n");
+    printf("%s\n", a.ToString().c_str());
+
+    uint256 b;
+    printf("b undefined\n");
+    printf("%s\n", b.ToString().c_str());
+    int c = 3;
+
+    a = c;
+    a.pn[3] = 15;
+    printf("%s\n", a.ToString().c_str());
+    uint256 k(c);
+
+    a = 5;
+    a.pn[3] = 15;
+    printf("%s\n", a.ToString().c_str());
+    b = 1;
+    b <<= 52;
+
+    a |= b;
+
+    a ^= 0x500;
+
+    printf("a %s\n", a.ToString().c_str());
+
+    a = a | b | (uint256)0x1000;
+
+
+    printf("a %s\n", a.ToString().c_str());
+    printf("b %s\n", b.ToString().c_str());
+
+    a = 0xfffffffe;
+    a.pn[4] = 9;
+
+    printf("%s\n", a.ToString().c_str());
+    a++;
+    printf("%s\n", a.ToString().c_str());
+    a++;
+    printf("%s\n", a.ToString().c_str());
+    a++;
+    printf("%s\n", a.ToString().c_str());
+    a++;
+    printf("%s\n", a.ToString().c_str());
+
+    a--;
+    printf("%s\n", a.ToString().c_str());
+    a--;
+    printf("%s\n", a.ToString().c_str());
+    a--;
+    printf("%s\n", a.ToString().c_str());
+    uint256 d = a--;
+    printf("%s\n", d.ToString().c_str());
+    printf("%s\n", a.ToString().c_str());
+    a--;
+    printf("%s\n", a.ToString().c_str());
+    a--;
+    printf("%s\n", a.ToString().c_str());
+
+    d = a;
+
+    printf("%s\n", d.ToString().c_str());
+    for (int i = uint256::WIDTH-1; i >= 0; i--) printf("%08x", d.pn[i]); printf("\n");
+
+    uint256 neg = d;
+    neg = ~neg;
+    printf("%s\n", neg.ToString().c_str());
+
+
+    uint256 e = uint256("0xABCDEF123abcdef12345678909832180000011111111");
+    printf("\n");
+    printf("%s\n", e.ToString().c_str());
+
+
+    printf("\n");
+    uint256 x1 = uint256("0xABCDEF123abcdef12345678909832180000011111111");
+    uint256 x2;
+    printf("%s\n", x1.ToString().c_str());
+    for (int i = 0; i < 270; i += 4)
+    {
+        x2 = x1 << i;
+        printf("%s\n", x2.ToString().c_str());
+    }
+
+    printf("\n");
+    printf("%s\n", x1.ToString().c_str());
+    for (int i = 0; i < 270; i += 4)
+    {
+        x2 = x1;
+        x2 >>= i;
+        printf("%s\n", x2.ToString().c_str());
+    }
+
+
+    for (int i = 0; i < 100; i++)
+    {
+        uint256 k = (~uint256(0) >> i);
+        printf("%s\n", k.ToString().c_str());
+    }
+
+    for (int i = 0; i < 100; i++)
+    {
+        uint256 k = (~uint256(0) << i);
+        printf("%s\n", k.ToString().c_str());
+    }
+
+    return (0);
+}
new file mode 100644
--- /dev/null
+++ b/uiproject.fbp
@@ -0,0 +1,11860 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+<wxFormBuilder_Project>
+    <FileVersion major="1" minor="9" />
+    <object class="Project" expanded="1">
+        <property name="class_decoration"></property>
+        <property name="code_generation">C++</property>
+        <property name="disconnect_events">1</property>
+        <property name="encoding">UTF-8</property>
+        <property name="event_generation">connect</property>
+        <property name="file">uibase</property>
+        <property name="first_id">1000</property>
+        <property name="help_provider">none</property>
+        <property name="internationalize">0</property>
+        <property name="name"></property>
+        <property name="namespace"></property>
+        <property name="path">.</property>
+        <property name="precompiled_header"></property>
+        <property name="relative_path">1</property>
+        <property name="use_enum">0</property>
+        <property name="use_microsoft_bom">0</property>
+        <object class="Frame" expanded="0">
+            <property name="bg">wxSYS_COLOUR_BTNFACE</property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_MAINFRAME</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CMainFrameBase</property>
+            <property name="pos"></property>
+            <property name="size">705,484</property>
+            <property name="style">wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Bitcoin</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style">wxTAB_TRAVERSAL</property>
+            <property name="xrc_skip_sizer">1</property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose">OnClose</event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle">OnIdle</event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents">OnMouseEvents</event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint">OnPaint</event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxMenuBar" expanded="1">
+                <property name="bg">240,240,240</property>
+                <property name="context_help"></property>
+                <property name="enabled">1</property>
+                <property name="fg"></property>
+                <property name="font"></property>
+                <property name="hidden">0</property>
+                <property name="id">wxID_ANY</property>
+                <property name="label">MyMenuBar</property>
+                <property name="maximum_size"></property>
+                <property name="minimum_size"></property>
+                <property name="name">m_menubar</property>
+                <property name="permission">protected</property>
+                <property name="pos"></property>
+                <property name="size"></property>
+                <property name="style"></property>
+                <property name="subclass"></property>
+                <property name="tooltip"></property>
+                <property name="window_extra_style"></property>
+                <property name="window_name"></property>
+                <property name="window_style"></property>
+                <event name="OnChar"></event>
+                <event name="OnEnterWindow"></event>
+                <event name="OnEraseBackground"></event>
+                <event name="OnKeyDown"></event>
+                <event name="OnKeyUp"></event>
+                <event name="OnKillFocus"></event>
+                <event name="OnLeaveWindow"></event>
+                <event name="OnLeftDClick"></event>
+                <event name="OnLeftDown"></event>
+                <event name="OnLeftUp"></event>
+                <event name="OnMiddleDClick"></event>
+                <event name="OnMiddleDown"></event>
+                <event name="OnMiddleUp"></event>
+                <event name="OnMotion"></event>
+                <event name="OnMouseEvents"></event>
+                <event name="OnMouseWheel"></event>
+                <event name="OnPaint"></event>
+                <event name="OnRightDClick"></event>
+                <event name="OnRightDown"></event>
+                <event name="OnRightUp"></event>
+                <event name="OnSetFocus"></event>
+                <event name="OnSize"></event>
+                <event name="OnUpdateUI"></event>
+                <object class="wxMenu" expanded="1">
+                    <property name="label">&amp;File</property>
+                    <property name="name">m_menuFile</property>
+                    <property name="permission">protected</property>
+                    <object class="wxMenuItem" expanded="1">
+                        <property name="bitmap"></property>
+                        <property name="checked">0</property>
+                        <property name="enabled">1</property>
+                        <property name="help"></property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="kind">wxITEM_NORMAL</property>
+                        <property name="label">E&amp;xit</property>
+                        <property name="name">m_menuFileExit</property>
+                        <property name="permission">none</property>
+                        <property name="shortcut"></property>
+                        <property name="unchecked_bitmap"></property>
+                        <event name="OnMenuSelection">OnMenuFileExit</event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="wxMenu" expanded="1">
+                    <property name="label">&amp;Options</property>
+                    <property name="name">m_menuOptions</property>
+                    <property name="permission">public</property>
+                    <object class="wxMenuItem" expanded="1">
+                        <property name="bitmap"></property>
+                        <property name="checked">0</property>
+                        <property name="enabled">1</property>
+                        <property name="help"></property>
+                        <property name="id">wxID_OPTIONSGENERATEBITCOINS</property>
+                        <property name="kind">wxITEM_CHECK</property>
+                        <property name="label">&amp;Generate Coins</property>
+                        <property name="name">m_menuOptionsGenerateBitcoins</property>
+                        <property name="permission">none</property>
+                        <property name="shortcut"></property>
+                        <property name="unchecked_bitmap"></property>
+                        <event name="OnMenuSelection">OnMenuOptionsGenerate</event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                    <object class="wxMenuItem" expanded="1">
+                        <property name="bitmap"></property>
+                        <property name="checked">0</property>
+                        <property name="enabled">1</property>
+                        <property name="help"></property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="kind">wxITEM_NORMAL</property>
+                        <property name="label">&amp;Change Your Address...</property>
+                        <property name="name">m_menuChangeYourAddress</property>
+                        <property name="permission">none</property>
+                        <property name="shortcut"></property>
+                        <property name="unchecked_bitmap"></property>
+                        <event name="OnMenuSelection">OnMenuOptionsChangeYourAddress</event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                    <object class="wxMenuItem" expanded="1">
+                        <property name="bitmap"></property>
+                        <property name="checked">0</property>
+                        <property name="enabled">1</property>
+                        <property name="help"></property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="kind">wxITEM_NORMAL</property>
+                        <property name="label">&amp;Options...</property>
+                        <property name="name">m_menuOptionsOptions</property>
+                        <property name="permission">none</property>
+                        <property name="shortcut"></property>
+                        <property name="unchecked_bitmap"></property>
+                        <event name="OnMenuSelection">OnMenuOptionsOptions</event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="wxMenu" expanded="1">
+                    <property name="label">&amp;Help</property>
+                    <property name="name">m_menuHelp</property>
+                    <property name="permission">protected</property>
+                    <object class="wxMenuItem" expanded="1">
+                        <property name="bitmap"></property>
+                        <property name="checked">0</property>
+                        <property name="enabled">1</property>
+                        <property name="help"></property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="kind">wxITEM_NORMAL</property>
+                        <property name="label">&amp;About...</property>
+                        <property name="name">m_menuHelpAbout</property>
+                        <property name="permission">none</property>
+                        <property name="shortcut"></property>
+                        <property name="unchecked_bitmap"></property>
+                        <event name="OnMenuSelection">OnMenuHelpAbout</event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+            </object>
+            <object class="wxToolBar" expanded="0">
+                <property name="bg"></property>
+                <property name="bitmapsize">20,20</property>
+                <property name="context_help"></property>
+                <property name="enabled">1</property>
+                <property name="fg"></property>
+                <property name="font">,90,90,-1,70,0</property>
+                <property name="hidden">0</property>
+                <property name="id">wxID_ANY</property>
+                <property name="margins"></property>
+                <property name="maximum_size"></property>
+                <property name="minimum_size"></property>
+                <property name="name">m_toolBar</property>
+                <property name="packing">1</property>
+                <property name="permission">protected</property>
+                <property name="pos"></property>
+                <property name="separation">1</property>
+                <property name="size">-1,-1</property>
+                <property name="style">wxTB_FLAT|wxTB_HORZ_TEXT</property>
+                <property name="subclass"></property>
+                <property name="tooltip"></property>
+                <property name="window_extra_style"></property>
+                <property name="window_name"></property>
+                <property name="window_style"></property>
+                <event name="OnChar"></event>
+                <event name="OnEnterWindow"></event>
+                <event name="OnEraseBackground"></event>
+                <event name="OnKeyDown"></event>
+                <event name="OnKeyUp"></event>
+                <event name="OnKillFocus"></event>
+                <event name="OnLeaveWindow"></event>
+                <event name="OnLeftDClick"></event>
+                <event name="OnLeftDown"></event>
+                <event name="OnLeftUp"></event>
+                <event name="OnMiddleDClick"></event>
+                <event name="OnMiddleDown"></event>
+                <event name="OnMiddleUp"></event>
+                <event name="OnMotion"></event>
+                <event name="OnMouseEvents"></event>
+                <event name="OnMouseWheel"></event>
+                <event name="OnPaint"></event>
+                <event name="OnRightDClick"></event>
+                <event name="OnRightDown"></event>
+                <event name="OnRightUp"></event>
+                <event name="OnSetFocus"></event>
+                <event name="OnSize"></event>
+                <event name="OnUpdateUI"></event>
+                <object class="tool" expanded="1">
+                    <property name="bitmap">send20; Load From Resource</property>
+                    <property name="id">wxID_BUTTONSEND</property>
+                    <property name="kind">wxITEM_NORMAL</property>
+                    <property name="label">&amp;Send Coins</property>
+                    <property name="name">m_tool1</property>
+                    <property name="statusbar"></property>
+                    <property name="tooltip"></property>
+                    <event name="OnMenuSelection"></event>
+                    <event name="OnToolClicked">OnButtonSend</event>
+                    <event name="OnToolEnter"></event>
+                    <event name="OnToolRClicked"></event>
+                    <event name="OnUpdateUI"></event>
+                </object>
+                <object class="tool" expanded="1">
+                    <property name="bitmap">addressbook20; Load From Resource</property>
+                    <property name="id">wxID_BUTTONRECEIVE</property>
+                    <property name="kind">wxITEM_NORMAL</property>
+                    <property name="label">&amp;Address Book</property>
+                    <property name="name">m_tool2</property>
+                    <property name="statusbar"></property>
+                    <property name="tooltip"></property>
+                    <event name="OnMenuSelection"></event>
+                    <event name="OnToolClicked">OnButtonAddressBook</event>
+                    <event name="OnToolEnter"></event>
+                    <event name="OnToolRClicked"></event>
+                    <event name="OnUpdateUI"></event>
+                </object>
+            </object>
+            <object class="wxStatusBar" expanded="1">
+                <property name="bg">240,240,240</property>
+                <property name="context_help"></property>
+                <property name="enabled">1</property>
+                <property name="fg"></property>
+                <property name="fields">1</property>
+                <property name="font"></property>
+                <property name="hidden">0</property>
+                <property name="id">wxID_ANY</property>
+                <property name="maximum_size"></property>
+                <property name="minimum_size"></property>
+                <property name="name">m_statusBar</property>
+                <property name="permission">protected</property>
+                <property name="pos"></property>
+                <property name="size"></property>
+                <property name="style">wxST_SIZEGRIP</property>
+                <property name="subclass"></property>
+                <property name="tooltip"></property>
+                <property name="window_extra_style"></property>
+                <property name="window_name"></property>
+                <property name="window_style"></property>
+                <event name="OnChar"></event>
+                <event name="OnEnterWindow"></event>
+                <event name="OnEraseBackground"></event>
+                <event name="OnKeyDown"></event>
+                <event name="OnKeyUp"></event>
+                <event name="OnKillFocus"></event>
+                <event name="OnLeaveWindow"></event>
+                <event name="OnLeftDClick"></event>
+                <event name="OnLeftDown"></event>
+                <event name="OnLeftUp"></event>
+                <event name="OnMiddleDClick"></event>
+                <event name="OnMiddleDown"></event>
+                <event name="OnMiddleUp"></event>
+                <event name="OnMotion"></event>
+                <event name="OnMouseEvents"></event>
+                <event name="OnMouseWheel"></event>
+                <event name="OnPaint"></event>
+                <event name="OnRightDClick"></event>
+                <event name="OnRightDown"></event>
+                <event name="OnRightUp"></event>
+                <event name="OnSetFocus"></event>
+                <event name="OnSize"></event>
+                <event name="OnUpdateUI"></event>
+            </object>
+            <object class="wxBoxSizer" expanded="0">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer2</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="spacer" expanded="1">
+                        <property name="height">2</property>
+                        <property name="permission">protected</property>
+                        <property name="width">0</property>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer85</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxLEFT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxStaticText" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label">Your Bitcoin Address:</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_staticText32</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <property name="wrap">-1</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxTextCtrl" expanded="1">
+                                <property name="bg">wxSYS_COLOUR_MENU</property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_TEXTCTRLADDRESS</property>
+                                <property name="maximum_size">-1,-1</property>
+                                <property name="maxlength">0</property>
+                                <property name="minimum_size">-1,-1</property>
+                                <property name="name">m_textCtrlAddress</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">250,-1</property>
+                                <property name="style">wxTE_READONLY</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="value"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown">OnKeyDown</event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents">OnMouseEventsAddress</event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus">OnSetFocusAddress</event>
+                                <event name="OnSize"></event>
+                                <event name="OnText"></event>
+                                <event name="OnTextEnter"></event>
+                                <event name="OnTextMaxLen"></event>
+                                <event name="OnTextURL"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONCOPY</property>
+                                <property name="label">&amp;Copy to Clipboard</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_buttonCopy</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style">wxBU_EXACTFIT</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCopy</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxRIGHT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_BUTTONCHANGE</property>
+                                <property name="label">C&amp;hange...</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_button91</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonChange</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">0</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer3</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxALIGN_BOTTOM|wxALL</property>
+                            <property name="proportion">1</property>
+                            <object class="wxPanel" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_panel14</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style">wxTAB_TRAVERSAL</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizer66</property>
+                                    <property name="orient">wxHORIZONTAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxStaticText" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">Balance:</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_staticText41</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,15</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <property name="wrap">-1</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxStaticText" expanded="1">
+                                            <property name="bg">wxSYS_COLOUR_WINDOW</property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font">,90,90,8,70,0</property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label"></property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_staticTextBalance</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">120,15</property>
+                                            <property name="style">wxALIGN_RIGHT|wxST_NO_AUTORESIZE</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <property name="wrap">-1</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">0</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_BOTTOM|wxTOP|wxRIGHT|wxLEFT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxChoice" expanded="1">
+                                <property name="bg"></property>
+                                <property name="choices">&quot; All&quot; &quot; Sent&quot; &quot; Received&quot; &quot; In Progress&quot;</property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_choiceFilter</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="selection">0</property>
+                                <property name="size">110,-1</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnChoice"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxNotebook" expanded="1">
+                        <property name="bg"></property>
+                        <property name="bitmapsize"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_notebook</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnNotebookPageChanged"></event>
+                        <event name="OnNotebookPageChanging"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                        <object class="notebookpage" expanded="1">
+                            <property name="bitmap"></property>
+                            <property name="label">All Transactions</property>
+                            <property name="select">0</property>
+                            <object class="wxPanel" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_panel7</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style">wxTAB_TRAVERSAL</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizer157</property>
+                                    <property name="orient">wxVERTICAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxEXPAND|wxALL</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxListCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_listCtrl</property>
+                                            <property name="permission">public</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT|wxLC_SORT_DESCENDING</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style">wxALWAYS_SHOW_SB</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnListBeginDrag"></event>
+                                            <event name="OnListBeginLabelEdit"></event>
+                                            <event name="OnListBeginRDrag"></event>
+                                            <event name="OnListCacheHint"></event>
+                                            <event name="OnListColBeginDrag">OnListColBeginDrag</event>
+                                            <event name="OnListColClick"></event>
+                                            <event name="OnListColDragging"></event>
+                                            <event name="OnListColEndDrag"></event>
+                                            <event name="OnListColRightClick"></event>
+                                            <event name="OnListDeleteAllItems"></event>
+                                            <event name="OnListDeleteItem"></event>
+                                            <event name="OnListEndLabelEdit"></event>
+                                            <event name="OnListInsertItem"></event>
+                                            <event name="OnListItemActivated">OnListItemActivatedAllTransactions</event>
+                                            <event name="OnListItemDeselected"></event>
+                                            <event name="OnListItemFocused"></event>
+                                            <event name="OnListItemMiddleClick"></event>
+                                            <event name="OnListItemRightClick"></event>
+                                            <event name="OnListItemSelected"></event>
+                                            <event name="OnListKeyDown"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint">OnPaintListCtrl</event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer_TabsForFutureUse</property>
+                        <property name="orient">wxVERTICAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND | wxALL</property>
+                            <property name="proportion">1</property>
+                            <object class="wxPanel" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_panel9</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style">wxTAB_TRAVERSAL</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizer159</property>
+                                    <property name="orient">wxVERTICAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxListCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_listCtrlEscrows</property>
+                                            <property name="permission">public</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnListBeginDrag"></event>
+                                            <event name="OnListBeginLabelEdit"></event>
+                                            <event name="OnListBeginRDrag"></event>
+                                            <event name="OnListCacheHint"></event>
+                                            <event name="OnListColBeginDrag"></event>
+                                            <event name="OnListColClick"></event>
+                                            <event name="OnListColDragging"></event>
+                                            <event name="OnListColEndDrag"></event>
+                                            <event name="OnListColRightClick"></event>
+                                            <event name="OnListDeleteAllItems"></event>
+                                            <event name="OnListDeleteItem"></event>
+                                            <event name="OnListEndLabelEdit"></event>
+                                            <event name="OnListInsertItem"></event>
+                                            <event name="OnListItemActivated"></event>
+                                            <event name="OnListItemDeselected"></event>
+                                            <event name="OnListItemFocused"></event>
+                                            <event name="OnListItemMiddleClick"></event>
+                                            <event name="OnListItemRightClick"></event>
+                                            <event name="OnListItemSelected"></event>
+                                            <event name="OnListKeyDown"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND | wxALL</property>
+                            <property name="proportion">1</property>
+                            <object class="wxPanel" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_panel8</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style">wxTAB_TRAVERSAL</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizer158</property>
+                                    <property name="orient">wxVERTICAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxListCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_listCtrlOrdersSent</property>
+                                            <property name="permission">public</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnListBeginDrag"></event>
+                                            <event name="OnListBeginLabelEdit"></event>
+                                            <event name="OnListBeginRDrag"></event>
+                                            <event name="OnListCacheHint"></event>
+                                            <event name="OnListColBeginDrag"></event>
+                                            <event name="OnListColClick"></event>
+                                            <event name="OnListColDragging"></event>
+                                            <event name="OnListColEndDrag"></event>
+                                            <event name="OnListColRightClick"></event>
+                                            <event name="OnListDeleteAllItems"></event>
+                                            <event name="OnListDeleteItem"></event>
+                                            <event name="OnListEndLabelEdit"></event>
+                                            <event name="OnListInsertItem"></event>
+                                            <event name="OnListItemActivated">OnListItemActivatedOrdersSent</event>
+                                            <event name="OnListItemDeselected"></event>
+                                            <event name="OnListItemFocused"></event>
+                                            <event name="OnListItemMiddleClick"></event>
+                                            <event name="OnListItemRightClick"></event>
+                                            <event name="OnListItemSelected"></event>
+                                            <event name="OnListKeyDown"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND | wxALL</property>
+                            <property name="proportion">1</property>
+                            <object class="wxPanel" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_panel10</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style">wxTAB_TRAVERSAL</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizer160</property>
+                                    <property name="orient">wxVERTICAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxListCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_listCtrlProductsSent</property>
+                                            <property name="permission">public</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnListBeginDrag"></event>
+                                            <event name="OnListBeginLabelEdit"></event>
+                                            <event name="OnListBeginRDrag"></event>
+                                            <event name="OnListCacheHint"></event>
+                                            <event name="OnListColBeginDrag"></event>
+                                            <event name="OnListColClick"></event>
+                                            <event name="OnListColDragging"></event>
+                                            <event name="OnListColEndDrag"></event>
+                                            <event name="OnListColRightClick"></event>
+                                            <event name="OnListDeleteAllItems"></event>
+                                            <event name="OnListDeleteItem"></event>
+                                            <event name="OnListEndLabelEdit"></event>
+                                            <event name="OnListInsertItem"></event>
+                                            <event name="OnListItemActivated">OnListItemActivatedProductsSent</event>
+                                            <event name="OnListItemDeselected"></event>
+                                            <event name="OnListItemFocused"></event>
+                                            <event name="OnListItemMiddleClick"></event>
+                                            <event name="OnListItemRightClick"></event>
+                                            <event name="OnListItemSelected"></event>
+                                            <event name="OnListKeyDown"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND | wxALL</property>
+                            <property name="proportion">1</property>
+                            <object class="wxPanel" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_panel11</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style">wxTAB_TRAVERSAL</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizer161</property>
+                                    <property name="orient">wxVERTICAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxListCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_listCtrlOrdersReceived</property>
+                                            <property name="permission">public</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnListBeginDrag"></event>
+                                            <event name="OnListBeginLabelEdit"></event>
+                                            <event name="OnListBeginRDrag"></event>
+                                            <event name="OnListCacheHint"></event>
+                                            <event name="OnListColBeginDrag"></event>
+                                            <event name="OnListColClick"></event>
+                                            <event name="OnListColDragging"></event>
+                                            <event name="OnListColEndDrag"></event>
+                                            <event name="OnListColRightClick"></event>
+                                            <event name="OnListDeleteAllItems"></event>
+                                            <event name="OnListDeleteItem"></event>
+                                            <event name="OnListEndLabelEdit"></event>
+                                            <event name="OnListInsertItem"></event>
+                                            <event name="OnListItemActivated">OnListItemActivatedOrdersReceived</event>
+                                            <event name="OnListItemDeselected"></event>
+                                            <event name="OnListItemFocused"></event>
+                                            <event name="OnListItemMiddleClick"></event>
+                                            <event name="OnListItemRightClick"></event>
+                                            <event name="OnListItemSelected"></event>
+                                            <event name="OnListKeyDown"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CTxDetailsDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">620,450</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Transaction Details</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer64</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer66</property>
+                        <property name="orient">wxVERTICAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL|wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="wxHtmlWindow" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_htmlWin</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style">wxHW_SCROLLBAR_AUTO</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnHtmlCellClicked"></event>
+                                <event name="OnHtmlCellHover"></event>
+                                <event name="OnHtmlLinkClicked"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALIGN_RIGHT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer65</property>
+                        <property name="orient">wxVERTICAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_OK</property>
+                                <property name="label">OK</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">85,25</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonOK</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">COptionsDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">500,261</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE</property>
+            <property name="subclass"></property>
+            <property name="title">Options</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer55</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND|wxLEFT</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer57</property>
+                        <property name="orient">wxVERTICAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">0</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">20</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxStaticText" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label">Optional transaction fee you give to the nodes that process your transactions.</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_staticText32</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <property name="wrap">-1</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">0</property>
+                            <object class="wxBoxSizer" expanded="1">
+                                <property name="minimum_size"></property>
+                                <property name="name">bSizer56</property>
+                                <property name="orient">wxHORIZONTAL</property>
+                                <property name="permission">none</property>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxStaticText" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Transaction fee:</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_staticText31</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size"></property>
+                                        <property name="style"></property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <property name="wrap">-1</property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxTextCtrl" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_TRANSACTIONFEE</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="maxlength">0</property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_textCtrlTransactionFee</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size">70,-1</property>
+                                        <property name="style"></property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="value"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus">OnKillFocusTransactionFee</event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnText"></event>
+                                        <event name="OnTextEnter"></event>
+                                        <event name="OnTextMaxLen"></event>
+                                        <event name="OnTextURL"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALIGN_RIGHT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer58</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_OK</property>
+                                <property name="label">OK</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">85,25</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonOK</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CAboutDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">507,298</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE</property>
+            <property name="subclass"></property>
+            <property name="title">About Bitcoin</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="0">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer60</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer62</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">0</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">60</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="wxBoxSizer" expanded="1">
+                                <property name="minimum_size"></property>
+                                <property name="name">bSizer63</property>
+                                <property name="orient">wxVERTICAL</property>
+                                <property name="permission">none</property>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxEXPAND</property>
+                                    <property name="proportion">0</property>
+                                    <object class="spacer" expanded="1">
+                                        <property name="height">50</property>
+                                        <property name="permission">protected</property>
+                                        <property name="width">0</property>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxEXPAND</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxBoxSizer" expanded="1">
+                                        <property name="minimum_size"></property>
+                                        <property name="name">bSizer64</property>
+                                        <property name="orient">wxHORIZONTAL</property>
+                                        <property name="permission">none</property>
+                                        <object class="sizeritem" expanded="1">
+                                            <property name="border">5</property>
+                                            <property name="flag">wxALIGN_BOTTOM|wxTOP|wxBOTTOM|wxLEFT</property>
+                                            <property name="proportion">0</property>
+                                            <object class="wxStaticText" expanded="1">
+                                                <property name="bg"></property>
+                                                <property name="context_help"></property>
+                                                <property name="enabled">1</property>
+                                                <property name="fg"></property>
+                                                <property name="font">Tahoma,90,92,10,74,0</property>
+                                                <property name="hidden">0</property>
+                                                <property name="id">wxID_ANY</property>
+                                                <property name="label">Bitcoin </property>
+                                                <property name="maximum_size"></property>
+                                                <property name="minimum_size"></property>
+                                                <property name="name">m_staticText40</property>
+                                                <property name="permission">protected</property>
+                                                <property name="pos"></property>
+                                                <property name="size"></property>
+                                                <property name="style"></property>
+                                                <property name="subclass"></property>
+                                                <property name="tooltip"></property>
+                                                <property name="window_extra_style"></property>
+                                                <property name="window_name"></property>
+                                                <property name="window_style"></property>
+                                                <property name="wrap">-1</property>
+                                                <event name="OnChar"></event>
+                                                <event name="OnEnterWindow"></event>
+                                                <event name="OnEraseBackground"></event>
+                                                <event name="OnKeyDown"></event>
+                                                <event name="OnKeyUp"></event>
+                                                <event name="OnKillFocus"></event>
+                                                <event name="OnLeaveWindow"></event>
+                                                <event name="OnLeftDClick"></event>
+                                                <event name="OnLeftDown"></event>
+                                                <event name="OnLeftUp"></event>
+                                                <event name="OnMiddleDClick"></event>
+                                                <event name="OnMiddleDown"></event>
+                                                <event name="OnMiddleUp"></event>
+                                                <event name="OnMotion"></event>
+                                                <event name="OnMouseEvents"></event>
+                                                <event name="OnMouseWheel"></event>
+                                                <event name="OnPaint"></event>
+                                                <event name="OnRightDClick"></event>
+                                                <event name="OnRightDown"></event>
+                                                <event name="OnRightUp"></event>
+                                                <event name="OnSetFocus"></event>
+                                                <event name="OnSize"></event>
+                                                <event name="OnUpdateUI"></event>
+                                            </object>
+                                        </object>
+                                        <object class="sizeritem" expanded="1">
+                                            <property name="border">5</property>
+                                            <property name="flag">wxALIGN_BOTTOM|wxTOP|wxBOTTOM|wxRIGHT</property>
+                                            <property name="proportion">0</property>
+                                            <object class="wxStaticText" expanded="1">
+                                                <property name="bg"></property>
+                                                <property name="context_help"></property>
+                                                <property name="enabled">1</property>
+                                                <property name="fg"></property>
+                                                <property name="font">Tahoma,90,90,10,74,0</property>
+                                                <property name="hidden">0</property>
+                                                <property name="id">wxID_ANY</property>
+                                                <property name="label">version</property>
+                                                <property name="maximum_size"></property>
+                                                <property name="minimum_size"></property>
+                                                <property name="name">m_staticTextVersion</property>
+                                                <property name="permission">public</property>
+                                                <property name="pos"></property>
+                                                <property name="size"></property>
+                                                <property name="style"></property>
+                                                <property name="subclass"></property>
+                                                <property name="tooltip"></property>
+                                                <property name="window_extra_style"></property>
+                                                <property name="window_name"></property>
+                                                <property name="window_style"></property>
+                                                <property name="wrap">-1</property>
+                                                <event name="OnChar"></event>
+                                                <event name="OnEnterWindow"></event>
+                                                <event name="OnEraseBackground"></event>
+                                                <event name="OnKeyDown"></event>
+                                                <event name="OnKeyUp"></event>
+                                                <event name="OnKillFocus"></event>
+                                                <event name="OnLeaveWindow"></event>
+                                                <event name="OnLeftDClick"></event>
+                                                <event name="OnLeftDown"></event>
+                                                <event name="OnLeftUp"></event>
+                                                <event name="OnMiddleDClick"></event>
+                                                <event name="OnMiddleDown"></event>
+                                                <event name="OnMiddleUp"></event>
+                                                <event name="OnMotion"></event>
+                                                <event name="OnMouseEvents"></event>
+                                                <event name="OnMouseWheel"></event>
+                                                <event name="OnPaint"></event>
+                                                <event name="OnRightDClick"></event>
+                                                <event name="OnRightDown"></event>
+                                                <event name="OnRightUp"></event>
+                                                <event name="OnSetFocus"></event>
+                                                <event name="OnSize"></event>
+                                                <event name="OnUpdateUI"></event>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxEXPAND</property>
+                                    <property name="proportion">0</property>
+                                    <object class="spacer" expanded="1">
+                                        <property name="height">4</property>
+                                        <property name="permission">protected</property>
+                                        <property name="width">0</property>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxALL</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxStaticText" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Copyright © 2009 Satoshi Nakamoto.&#x0A;&#x0A;This is experimental software.  Do not rely on it for actual financial transactions.&#x0A;&#x0A;Distributed under the MIT/X11 software license, see the accompanying file license.txt or http://www.opensource.org/licenses/mit-license.php.&#x0A;&#x0A;This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/) and cryptographic software written by Eric Young (eay@cryptsoft.com).</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_staticTextMain</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size"></property>
+                                        <property name="style"></property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <property name="wrap">400</property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxEXPAND</property>
+                                    <property name="proportion">1</property>
+                                    <object class="spacer" expanded="1">
+                                        <property name="height">0</property>
+                                        <property name="permission">protected</property>
+                                        <property name="width">0</property>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALIGN_RIGHT|wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer61</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_OK</property>
+                                <property name="label">OK</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">85,25</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonOK</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CSendDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">675,312</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Send Coins</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer21</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="spacer" expanded="1">
+                        <property name="height">5</property>
+                        <property name="permission">protected</property>
+                        <property name="width">0</property>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND|wxLEFT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxFlexGridSizer" expanded="0">
+                        <property name="cols">2</property>
+                        <property name="flexible_direction">wxBOTH</property>
+                        <property name="growablecols">1</property>
+                        <property name="growablerows"></property>
+                        <property name="hgap">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="name">fgSizer1</property>
+                        <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
+                        <property name="permission">none</property>
+                        <property name="rows">3</property>
+                        <property name="vgap">0</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">0</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxStaticText" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label">Enter the recipient&apos;s IP address (e.g. 123.45.6.7) for online transfer with comments and confirmation, &#x0A;or Bitcoin address (e.g. 1NS17iag9jJgTHD1VXjvLCEnZuQ3rJED9L) if recipient is not online.</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_staticText14</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <property name="wrap">-1</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxLEFT</property>
+                            <property name="proportion">1</property>
+                            <object class="wxBoxSizer" expanded="1">
+                                <property name="minimum_size">70,-1</property>
+                                <property name="name">bSizer47</property>
+                                <property name="orient">wxHORIZONTAL</property>
+                                <property name="permission">none</property>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxEXPAND</property>
+                                    <property name="proportion">1</property>
+                                    <object class="spacer" expanded="1">
+                                        <property name="height">0</property>
+                                        <property name="permission">protected</property>
+                                        <property name="width">0</property>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxStaticBitmap" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="bitmap">check; Load From Icon Resource [-1; -1]</property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_bitmapCheckMark</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size">16,16</property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxStaticText" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">Pay &amp;To:</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_staticText36</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size">-1,-1</property>
+                                        <property name="style">wxALIGN_RIGHT</property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <property name="wrap">-1</property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxRIGHT</property>
+                            <property name="proportion">1</property>
+                            <object class="wxBoxSizer" expanded="1">
+                                <property name="minimum_size"></property>
+                                <property name="name">bSizer19</property>
+                                <property name="orient">wxHORIZONTAL</property>
+                                <property name="permission">none</property>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+                                    <property name="proportion">1</property>
+                                    <object class="wxTextCtrl" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_TEXTCTRLPAYTO</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="maxlength">0</property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_textCtrlAddress</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size"></property>
+                                        <property name="style"></property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="value"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown">OnKeyDown</event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnText">OnTextAddress</event>
+                                        <event name="OnTextEnter"></event>
+                                        <event name="OnTextMaxLen"></event>
+                                        <event name="OnTextURL"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxButton" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="default">0</property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_BUTTONPASTE</property>
+                                        <property name="label">&amp;Paste</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_buttonPaste</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size">-1,-1</property>
+                                        <property name="style">wxBU_EXACTFIT</property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <event name="OnButtonClick">OnButtonPaste</event>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxButton" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="default">0</property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_BUTTONADDRESSBOOK</property>
+                                        <property name="label"> Address &amp;Book...</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_buttonAddress</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size"></property>
+                                        <property name="style"></property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <event name="OnButtonClick">OnButtonAddressBook</event>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT|wxALIGN_RIGHT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxStaticText" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label">&amp;Amount:</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_staticText19</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style">wxALIGN_RIGHT</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <property name="wrap">-1</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxTextCtrl" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font">,90,90,-1,70,0</property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_TEXTCTRLAMOUNT</property>
+                                <property name="maximum_size"></property>
+                                <property name="maxlength">20</property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_textCtrlAmount</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">145,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="value"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown">OnKeyDown</event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus">OnKillFocusAmount</event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnText"></event>
+                                <event name="OnTextEnter"></event>
+                                <event name="OnTextMaxLen"></event>
+                                <event name="OnTextURL"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxStaticText" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label">T&amp;ransfer:</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_staticText20</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style">wxALIGN_RIGHT</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <property name="wrap">-1</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxChoice" expanded="1">
+                                <property name="bg"></property>
+                                <property name="choices">&quot; Standard&quot;</property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_CHOICETRANSFERTYPE</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_choiceTransferType</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="selection">0</property>
+                                <property name="size"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnChoice"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">0</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">3</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">0</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer672</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
+                            <property name="proportion">1</property>
+                            <object class="wxBoxSizer" expanded="1">
+                                <property name="minimum_size"></property>
+                                <property name="name">bSizer681</property>
+                                <property name="orient">wxVERTICAL</property>
+                                <property name="permission">none</property>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxBOTTOM|wxLEFT</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxStaticText" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">&amp;From:</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_staticTextFrom</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size"></property>
+                                        <property name="style"></property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <property name="wrap">-1</property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxLEFT|wxEXPAND</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxTextCtrl" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="maxlength">0</property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_textCtrlFrom</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size">-1,-1</property>
+                                        <property name="style"></property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="value"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown">OnKeyDown</event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnText"></event>
+                                        <event name="OnTextEnter"></event>
+                                        <event name="OnTextMaxLen"></event>
+                                        <event name="OnTextURL"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer67</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxBOTTOM|wxRIGHT|wxLEFT</property>
+                            <property name="proportion">1</property>
+                            <object class="wxBoxSizer" expanded="1">
+                                <property name="minimum_size"></property>
+                                <property name="name">bSizer68</property>
+                                <property name="orient">wxVERTICAL</property>
+                                <property name="permission">none</property>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxTOP|wxBOTTOM|wxLEFT</property>
+                                    <property name="proportion">0</property>
+                                    <object class="wxStaticText" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="label">&amp;Message:</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_staticTextMessage</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size"></property>
+                                        <property name="style"></property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <property name="wrap">-1</property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown"></event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                                <object class="sizeritem" expanded="1">
+                                    <property name="border">5</property>
+                                    <property name="flag">wxEXPAND|wxLEFT</property>
+                                    <property name="proportion">1</property>
+                                    <object class="wxTextCtrl" expanded="1">
+                                        <property name="bg"></property>
+                                        <property name="context_help"></property>
+                                        <property name="enabled">1</property>
+                                        <property name="fg"></property>
+                                        <property name="font"></property>
+                                        <property name="hidden">0</property>
+                                        <property name="id">wxID_ANY</property>
+                                        <property name="maximum_size"></property>
+                                        <property name="maxlength">0</property>
+                                        <property name="minimum_size"></property>
+                                        <property name="name">m_textCtrlMessage</property>
+                                        <property name="permission">protected</property>
+                                        <property name="pos"></property>
+                                        <property name="size"></property>
+                                        <property name="style">wxTE_MULTILINE</property>
+                                        <property name="subclass"></property>
+                                        <property name="tooltip"></property>
+                                        <property name="value"></property>
+                                        <property name="window_extra_style"></property>
+                                        <property name="window_name"></property>
+                                        <property name="window_style"></property>
+                                        <event name="OnChar"></event>
+                                        <event name="OnEnterWindow"></event>
+                                        <event name="OnEraseBackground"></event>
+                                        <event name="OnKeyDown">OnKeyDown</event>
+                                        <event name="OnKeyUp"></event>
+                                        <event name="OnKillFocus"></event>
+                                        <event name="OnLeaveWindow"></event>
+                                        <event name="OnLeftDClick"></event>
+                                        <event name="OnLeftDown"></event>
+                                        <event name="OnLeftUp"></event>
+                                        <event name="OnMiddleDClick"></event>
+                                        <event name="OnMiddleDown"></event>
+                                        <event name="OnMiddleUp"></event>
+                                        <event name="OnMotion"></event>
+                                        <event name="OnMouseEvents"></event>
+                                        <event name="OnMouseWheel"></event>
+                                        <event name="OnPaint"></event>
+                                        <event name="OnRightDClick"></event>
+                                        <event name="OnRightDown"></event>
+                                        <event name="OnRightUp"></event>
+                                        <event name="OnSetFocus"></event>
+                                        <event name="OnSize"></event>
+                                        <event name="OnText"></event>
+                                        <event name="OnTextEnter"></event>
+                                        <event name="OnTextMaxLen"></event>
+                                        <event name="OnTextURL"></event>
+                                        <event name="OnUpdateUI"></event>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer23</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font">,90,90,-1,70,0</property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONSEND</property>
+                                <property name="label">&amp;Send</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonSend</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonSend</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CSendingDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">442,151</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE</property>
+            <property name="subclass"></property>
+            <property name="title">Sending...</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose">OnClose</event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint">OnPaint</event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer68</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">8</property>
+                    <property name="flag">wxALIGN_CENTER_VERTICAL|wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxStaticText" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label"></property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_staticTextSending</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size">-1,14</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">10</property>
+                    <property name="flag">wxEXPAND|wxRIGHT|wxLEFT</property>
+                    <property name="proportion">1</property>
+                    <object class="wxTextCtrl" expanded="1">
+                        <property name="bg">wxSYS_COLOUR_BTNFACE</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="maxlength">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_textCtrlStatus</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style">wxTE_CENTRE|wxTE_MULTILINE|wxTE_NO_VSCROLL|wxTE_READONLY</property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="value">&#x0A;&#x0A;Connecting...</property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style">wxNO_BORDER</property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnText"></event>
+                        <event name="OnTextEnter"></event>
+                        <event name="OnTextMaxLen"></event>
+                        <event name="OnTextURL"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer69</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">0</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label">OK</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonOK</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CYourAddressDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">610,390</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Your Bitcoin Addresses</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose">OnClose</event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer68</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="spacer" expanded="1">
+                        <property name="height">5</property>
+                        <property name="permission">protected</property>
+                        <property name="width">0</property>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxStaticText" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">These are your Bitcoin addresses for receiving payments.  You may want to give a different one to each sender so you can keep track of who is paying you.  The highlighted address is displayed in the main window.</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_staticText45</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">590</property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL|wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxListCtrl" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_LISTCTRL</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_listCtrl</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT|wxLC_SORT_ASCENDING</property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnListBeginDrag"></event>
+                        <event name="OnListBeginLabelEdit"></event>
+                        <event name="OnListBeginRDrag"></event>
+                        <event name="OnListCacheHint"></event>
+                        <event name="OnListColBeginDrag"></event>
+                        <event name="OnListColClick"></event>
+                        <event name="OnListColDragging"></event>
+                        <event name="OnListColEndDrag"></event>
+                        <event name="OnListColRightClick"></event>
+                        <event name="OnListDeleteAllItems"></event>
+                        <event name="OnListDeleteItem"></event>
+                        <event name="OnListEndLabelEdit">OnListEndLabelEdit</event>
+                        <event name="OnListInsertItem"></event>
+                        <event name="OnListItemActivated">OnListItemActivated</event>
+                        <event name="OnListItemDeselected"></event>
+                        <event name="OnListItemFocused"></event>
+                        <event name="OnListItemMiddleClick"></event>
+                        <event name="OnListItemRightClick"></event>
+                        <event name="OnListItemSelected">OnListItemSelected</event>
+                        <event name="OnListKeyDown"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="0">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer69</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONRENAME</property>
+                                <property name="label">&amp;Edit...</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonRename</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonRename</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONNEW</property>
+                                <property name="label">&amp;New Address...</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">110,25</property>
+                                <property name="name">m_buttonNew</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonNew</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONCOPY</property>
+                                <property name="label">&amp;Copy to Clipboard</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">120,25</property>
+                                <property name="name">m_buttonCopy</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCopy</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_OK</property>
+                                <property name="label">OK</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonOK</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CAddressBookDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">610,390</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Address Book</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose">OnClose</event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer68</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="spacer" expanded="1">
+                        <property name="height">5</property>
+                        <property name="permission">protected</property>
+                        <property name="width">0</property>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxStaticText" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">1</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Bitcoin Address</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_staticText55</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL|wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxListCtrl" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_LISTCTRL</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_listCtrl</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT|wxLC_SORT_ASCENDING</property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnListBeginDrag"></event>
+                        <event name="OnListBeginLabelEdit"></event>
+                        <event name="OnListBeginRDrag"></event>
+                        <event name="OnListCacheHint"></event>
+                        <event name="OnListColBeginDrag"></event>
+                        <event name="OnListColClick"></event>
+                        <event name="OnListColDragging"></event>
+                        <event name="OnListColEndDrag"></event>
+                        <event name="OnListColRightClick"></event>
+                        <event name="OnListDeleteAllItems"></event>
+                        <event name="OnListDeleteItem"></event>
+                        <event name="OnListEndLabelEdit">OnListEndLabelEdit</event>
+                        <event name="OnListInsertItem"></event>
+                        <event name="OnListItemActivated">OnListItemActivated</event>
+                        <event name="OnListItemDeselected"></event>
+                        <event name="OnListItemFocused"></event>
+                        <event name="OnListItemMiddleClick"></event>
+                        <event name="OnListItemRightClick"></event>
+                        <event name="OnListItemSelected">OnListItemSelected</event>
+                        <event name="OnListKeyDown"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer69</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONEDIT</property>
+                                <property name="label">&amp;Edit...</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonEdit</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonEdit</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONNEW</property>
+                                <property name="label">&amp;New Address...</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">110,25</property>
+                                <property name="name">m_buttonNew</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonNew</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONDELETE</property>
+                                <property name="label">&amp;Delete</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonDelete</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonDelete</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_OK</property>
+                                <property name="label">OK</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonOK</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">public</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CProductsDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">708,535</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Marketplace</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer22</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND|wxTOP|wxBOTTOM|wxRIGHT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer23</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxComboBox" expanded="1">
+                                <property name="bg"></property>
+                                <property name="choices">&quot;(Any Category)&quot;</property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_comboBoxCategory</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">150,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="value">(Any Category)</property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnCombobox">OnCombobox</event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnText"></event>
+                                <event name="OnTextEnter"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                            <property name="proportion">1</property>
+                            <object class="wxTextCtrl" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="maxlength">0</property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_textCtrlSearch</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="value"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown">OnKeyDown</event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnText"></event>
+                                <event name="OnTextEnter"></event>
+                                <event name="OnTextMaxLen"></event>
+                                <event name="OnTextURL"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label">&amp;Search</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_buttonSearch</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonSearch</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL|wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxListCtrl" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_listCtrl</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT</property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnListBeginDrag"></event>
+                        <event name="OnListBeginLabelEdit"></event>
+                        <event name="OnListBeginRDrag"></event>
+                        <event name="OnListCacheHint"></event>
+                        <event name="OnListColBeginDrag"></event>
+                        <event name="OnListColClick"></event>
+                        <event name="OnListColDragging"></event>
+                        <event name="OnListColEndDrag"></event>
+                        <event name="OnListColRightClick"></event>
+                        <event name="OnListDeleteAllItems"></event>
+                        <event name="OnListDeleteItem"></event>
+                        <event name="OnListEndLabelEdit"></event>
+                        <event name="OnListInsertItem"></event>
+                        <event name="OnListItemActivated">OnListItemActivated</event>
+                        <event name="OnListItemDeselected"></event>
+                        <event name="OnListItemFocused"></event>
+                        <event name="OnListItemMiddleClick"></event>
+                        <event name="OnListItemRightClick"></event>
+                        <event name="OnListItemSelected"></event>
+                        <event name="OnListKeyDown"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Frame" expanded="0">
+            <property name="bg">wxSYS_COLOUR_MENU</property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CEditProductDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">660,640</property>
+            <property name="style">wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Edit Product</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style">wxTAB_TRAVERSAL</property>
+            <property name="xrc_skip_sizer">1</property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer20</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND|wxALL</property>
+                    <property name="proportion">1</property>
+                    <object class="wxScrolledWindow" expanded="1">
+                        <property name="bg">wxSYS_COLOUR_WINDOW</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_scrolledWindow</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="scroll_rate_x">5</property>
+                        <property name="scroll_rate_y">5</property>
+                        <property name="size"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style">wxHSCROLL|wxTAB_TRAVERSAL|wxVSCROLL</property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                        <object class="wxBoxSizer" expanded="1">
+                            <property name="minimum_size"></property>
+                            <property name="name">bSizer21</property>
+                            <property name="orient">wxVERTICAL</property>
+                            <property name="permission">none</property>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxEXPAND|wxTOP|wxRIGHT|wxLEFT</property>
+                                <property name="proportion">0</property>
+                                <object class="wxFlexGridSizer" expanded="1">
+                                    <property name="cols">2</property>
+                                    <property name="flexible_direction">wxBOTH</property>
+                                    <property name="growablecols">1</property>
+                                    <property name="growablerows"></property>
+                                    <property name="hgap">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="name">fgSizer8</property>
+                                    <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
+                                    <property name="permission">none</property>
+                                    <property name="rows">0</property>
+                                    <property name="vgap">0</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxStaticText" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">Category</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_staticText106</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxALIGN_RIGHT</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <property name="wrap">-1</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxComboBox" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="choices"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">180,-1</property>
+                                            <property name="name">m_comboBoxCategory</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnCombobox"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxStaticText" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">Title</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_staticText108</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxALIGN_RIGHT</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <property name="wrap">-1</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL|wxEXPAND</property>
+                                        <property name="proportion">1</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_textCtrlTitle</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT|wxTOP|wxBOTTOM|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxStaticText" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">Price</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_staticText107</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style">wxALIGN_RIGHT</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <property name="wrap">-1</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">105,-1</property>
+                                            <property name="name">m_textCtrlPrice</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                                <property name="proportion">0</property>
+                                <object class="wxStaticText" expanded="1">
+                                    <property name="bg"></property>
+                                    <property name="context_help"></property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="font"></property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="label">Page 1: Description</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="minimum_size"></property>
+                                    <property name="name">m_staticText22</property>
+                                    <property name="permission">protected</property>
+                                    <property name="pos"></property>
+                                    <property name="size"></property>
+                                    <property name="style"></property>
+                                    <property name="subclass"></property>
+                                    <property name="tooltip"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <property name="wrap">-1</property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxALL|wxEXPAND</property>
+                                <property name="proportion">0</property>
+                                <object class="wxTextCtrl" expanded="1">
+                                    <property name="bg"></property>
+                                    <property name="context_help"></property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="font"></property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="maxlength">0</property>
+                                    <property name="minimum_size">-1,170</property>
+                                    <property name="name">m_textCtrlDescription</property>
+                                    <property name="permission">protected</property>
+                                    <property name="pos"></property>
+                                    <property name="size"></property>
+                                    <property name="style">wxTE_MULTILINE</property>
+                                    <property name="subclass"></property>
+                                    <property name="tooltip"></property>
+                                    <property name="value"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown">OnKeyDown</event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnText"></event>
+                                    <event name="OnTextEnter"></event>
+                                    <event name="OnTextMaxLen"></event>
+                                    <event name="OnTextURL"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                                <property name="proportion">0</property>
+                                <object class="wxStaticText" expanded="1">
+                                    <property name="bg"></property>
+                                    <property name="context_help"></property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="font"></property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="label">Page 2: Order Form</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="minimum_size"></property>
+                                    <property name="name">m_staticText23</property>
+                                    <property name="permission">protected</property>
+                                    <property name="pos"></property>
+                                    <property name="size"></property>
+                                    <property name="style"></property>
+                                    <property name="subclass"></property>
+                                    <property name="tooltip"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <property name="wrap">-1</property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown"></event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxEXPAND|wxALL</property>
+                                <property name="proportion">0</property>
+                                <object class="wxTextCtrl" expanded="1">
+                                    <property name="bg"></property>
+                                    <property name="context_help"></property>
+                                    <property name="enabled">1</property>
+                                    <property name="fg"></property>
+                                    <property name="font"></property>
+                                    <property name="hidden">0</property>
+                                    <property name="id">wxID_ANY</property>
+                                    <property name="maximum_size"></property>
+                                    <property name="maxlength">0</property>
+                                    <property name="minimum_size">-1,120</property>
+                                    <property name="name">m_textCtrlInstructions</property>
+                                    <property name="permission">protected</property>
+                                    <property name="pos"></property>
+                                    <property name="size"></property>
+                                    <property name="style">wxTE_MULTILINE</property>
+                                    <property name="subclass"></property>
+                                    <property name="tooltip"></property>
+                                    <property name="value"></property>
+                                    <property name="window_extra_style"></property>
+                                    <property name="window_name"></property>
+                                    <property name="window_style"></property>
+                                    <event name="OnChar"></event>
+                                    <event name="OnEnterWindow"></event>
+                                    <event name="OnEraseBackground"></event>
+                                    <event name="OnKeyDown">OnKeyDown</event>
+                                    <event name="OnKeyUp"></event>
+                                    <event name="OnKillFocus"></event>
+                                    <event name="OnLeaveWindow"></event>
+                                    <event name="OnLeftDClick"></event>
+                                    <event name="OnLeftDown"></event>
+                                    <event name="OnLeftUp"></event>
+                                    <event name="OnMiddleDClick"></event>
+                                    <event name="OnMiddleDown"></event>
+                                    <event name="OnMiddleUp"></event>
+                                    <event name="OnMotion"></event>
+                                    <event name="OnMouseEvents"></event>
+                                    <event name="OnMouseWheel"></event>
+                                    <event name="OnPaint"></event>
+                                    <event name="OnRightDClick"></event>
+                                    <event name="OnRightDown"></event>
+                                    <event name="OnRightUp"></event>
+                                    <event name="OnSetFocus"></event>
+                                    <event name="OnSize"></event>
+                                    <event name="OnText"></event>
+                                    <event name="OnTextEnter"></event>
+                                    <event name="OnTextMaxLen"></event>
+                                    <event name="OnTextURL"></event>
+                                    <event name="OnUpdateUI"></event>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxEXPAND</property>
+                                <property name="proportion">0</property>
+                                <object class="wxFlexGridSizer" expanded="0">
+                                    <property name="cols">3</property>
+                                    <property name="flexible_direction">wxBOTH</property>
+                                    <property name="growablecols">1</property>
+                                    <property name="growablerows"></property>
+                                    <property name="hgap">0</property>
+                                    <property name="minimum_size"></property>
+                                    <property name="name">fgSizer5</property>
+                                    <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>
+                                    <property name="permission">public</property>
+                                    <property name="rows">0</property>
+                                    <property name="vgap">0</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxStaticText" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">Label</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_staticText24</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <property name="wrap">-1</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxTOP|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxStaticText" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">Comma separated list of choices, or leave blank for text field</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_staticText25</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <property name="wrap">-1</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxEXPAND</property>
+                                        <property name="proportion">1</property>
+                                        <object class="spacer" expanded="1">
+                                            <property name="height">0</property>
+                                            <property name="permission">protected</property>
+                                            <property name="width">0</property>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel0</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField0</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxRIGHT|wxLEFT|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL0</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel0</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel0</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel1</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField1</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL1</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel1</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel1</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel2</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField2</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL2</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel2</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel2</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel3</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField3</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL3</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel3</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel3</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel4</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField4</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL4</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel4</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel4</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel5</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField5</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL5</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel5</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel5</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel6</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField6</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL6</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel6</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel6</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel7</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField7</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL7</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel7</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel7</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel8</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField8</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL8</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel8</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel8</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel9</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField9</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL9</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel9</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel9</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel10</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField10</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL10</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel10</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel10</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel11</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField11</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL11</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel11</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel11</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel12</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField12</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL12</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel12</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel12</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel13</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField13</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL13</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel13</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel13</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel14</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField14</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL14</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel14</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel14</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel15</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField15</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL15</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel15</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel15</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel16</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField16</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL16</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel16</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel16</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel17</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField17</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL17</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel17</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel17</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel18</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField18</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL18</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel18</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel18</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">150,-1</property>
+                                            <property name="name">m_textCtrlLabel19</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_VERTICAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size">-1,-1</property>
+                                            <property name="maxlength">0</property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_textCtrlField19</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,-1</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="value"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown">OnKeyDown</event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_VERTICAL|wxRIGHT|wxLEFT</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_DEL19</property>
+                                            <property name="label">Delete</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_buttonDel19</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">60,20</property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonDel19</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                            <object class="sizeritem" expanded="1">
+                                <property name="border">5</property>
+                                <property name="flag">wxALIGN_CENTER_HORIZONTAL</property>
+                                <property name="proportion">0</property>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizer25</property>
+                                    <property name="orient">wxHORIZONTAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxButton" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="default">0</property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">&amp;Add Field</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_buttonAddField</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <event name="OnButtonClick">OnButtonAddField</event>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALIGN_RIGHT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer26</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONSEND</property>
+                                <property name="label">&amp;Send</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonSend</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONPREVIEW</property>
+                                <property name="label">&amp;Preview</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonPreview</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonPreview</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Frame" expanded="0">
+            <property name="bg">wxSYS_COLOUR_MENU</property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CViewProductDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">630,520</property>
+            <property name="style">wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Order Form</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style">wxTAB_TRAVERSAL</property>
+            <property name="xrc_skip_sizer">1</property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer20</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer116</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL|wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="wxHtmlWindow" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_htmlWinReviews</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style">wxHW_SCROLLBAR_AUTO</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnHtmlCellClicked"></event>
+                                <event name="OnHtmlCellHover"></event>
+                                <event name="OnHtmlLinkClicked"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxALL</property>
+                            <property name="proportion">1</property>
+                            <object class="wxScrolledWindow" expanded="1">
+                                <property name="bg">wxSYS_COLOUR_WINDOW</property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_scrolledWindow</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="scroll_rate_x">5</property>
+                                <property name="scroll_rate_y">5</property>
+                                <property name="size"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style">wxHSCROLL|wxTAB_TRAVERSAL|wxVSCROLL</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                                <object class="wxBoxSizer" expanded="1">
+                                    <property name="minimum_size"></property>
+                                    <property name="name">bSizer21</property>
+                                    <property name="orient">wxVERTICAL</property>
+                                    <property name="permission">none</property>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxEXPAND</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxRichTextCtrl" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size">-1,-1</property>
+                                            <property name="name">m_richTextHeading</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size">-1,50</property>
+                                            <property name="style">wxTE_READONLY</property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style">wxNO_BORDER</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRichTextCharacter"></event>
+                                            <event name="OnRichTextContentDeleted"></event>
+                                            <event name="OnRichTextContentInserted"></event>
+                                            <event name="OnRichTextDelete"></event>
+                                            <event name="OnRichTextReturn"></event>
+                                            <event name="OnRichTextStyleChanged"></event>
+                                            <event name="OnRichTextStyleSheetChanged"></event>
+                                            <event name="OnRichTextStyleSheetReplaced"></event>
+                                            <event name="OnRichTextStyleSheetReplacing"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnText"></event>
+                                            <event name="OnTextEnter"></event>
+                                            <event name="OnTextMaxLen"></event>
+                                            <event name="OnTextURL"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALL|wxEXPAND</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxStaticText" expanded="1">
+                                            <property name="bg"></property>
+                                            <property name="context_help"></property>
+                                            <property name="enabled">1</property>
+                                            <property name="fg"></property>
+                                            <property name="font"></property>
+                                            <property name="hidden">0</property>
+                                            <property name="id">wxID_ANY</property>
+                                            <property name="label">Order Form instructions here&#x0A;multiple lines&#x0A;1&#x0A;2&#x0A;3&#x0A;4&#x0A;5&#x0A;6</property>
+                                            <property name="maximum_size"></property>
+                                            <property name="minimum_size"></property>
+                                            <property name="name">m_staticTextInstructions</property>
+                                            <property name="permission">protected</property>
+                                            <property name="pos"></property>
+                                            <property name="size"></property>
+                                            <property name="style"></property>
+                                            <property name="subclass"></property>
+                                            <property name="tooltip"></property>
+                                            <property name="window_extra_style"></property>
+                                            <property name="window_name"></property>
+                                            <property name="window_style"></property>
+                                            <property name="wrap">-1</property>
+                                            <event name="OnChar"></event>
+                                            <event name="OnEnterWindow"></event>
+                                            <event name="OnEraseBackground"></event>
+                                            <event name="OnKeyDown"></event>
+                                            <event name="OnKeyUp"></event>
+                                            <event name="OnKillFocus"></event>
+                                            <event name="OnLeaveWindow"></event>
+                                            <event name="OnLeftDClick"></event>
+                                            <event name="OnLeftDown"></event>
+                                            <event name="OnLeftUp"></event>
+                                            <event name="OnMiddleDClick"></event>
+                                            <event name="OnMiddleDown"></event>
+                                            <event name="OnMiddleUp"></event>
+                                            <event name="OnMotion"></event>
+                                            <event name="OnMouseEvents"></event>
+                                            <event name="OnMouseWheel"></event>
+                                            <event name="OnPaint"></event>
+                                            <event name="OnRightDClick"></event>
+                                            <event name="OnRightDown"></event>
+                                            <event name="OnRightUp"></event>
+                                            <event name="OnSetFocus"></event>
+                                            <event name="OnSize"></event>
+                                            <event name="OnUpdateUI"></event>
+                                        </object>
+                                    </object>
+                                    <object class="sizeritem" expanded="1">
+                                        <property name="border">5</property>
+                                        <property name="flag">wxALIGN_CENTER_HORIZONTAL</property>
+                                        <property name="proportion">0</property>
+                                        <object class="wxBoxSizer" expanded="1">
+                                            <property name="minimum_size"></property>
+                                            <property name="name">bSizer25</property>
+                                            <property name="orient">wxHORIZONTAL</property>
+                                            <property name="permission">none</property>
+                                            <object class="sizeritem" expanded="1">
+                                                <property name="border">5</property>
+                                                <property name="flag">wxALL</property>
+                                                <property name="proportion">0</property>
+                                                <object class="wxButton" expanded="1">
+                                                    <property name="bg"></property>
+                                                    <property name="context_help"></property>
+                                                    <property name="default">0</property>
+                                                    <property name="enabled">1</property>
+                                                    <property name="fg"></property>
+                                                    <property name="font"></property>
+                                                    <property name="hidden">0</property>
+                                                    <property name="id">wxID_BUTTONSAMPLE</property>
+                                                    <property name="label">&amp;Submit</property>
+                                                    <property name="maximum_size"></property>
+                                                    <property name="minimum_size">-1,-1</property>
+                                                    <property name="name">m_buttonSubmitForm</property>
+                                                    <property name="permission">protected</property>
+                                                    <property name="pos"></property>
+                                                    <property name="size"></property>
+                                                    <property name="style"></property>
+                                                    <property name="subclass"></property>
+                                                    <property name="tooltip"></property>
+                                                    <property name="window_extra_style"></property>
+                                                    <property name="window_name"></property>
+                                                    <property name="window_style"></property>
+                                                    <event name="OnButtonClick">OnButtonSubmitForm</event>
+                                                    <event name="OnChar"></event>
+                                                    <event name="OnEnterWindow"></event>
+                                                    <event name="OnEraseBackground"></event>
+                                                    <event name="OnKeyDown"></event>
+                                                    <event name="OnKeyUp"></event>
+                                                    <event name="OnKillFocus"></event>
+                                                    <event name="OnLeaveWindow"></event>
+                                                    <event name="OnLeftDClick"></event>
+                                                    <event name="OnLeftDown"></event>
+                                                    <event name="OnLeftUp"></event>
+                                                    <event name="OnMiddleDClick"></event>
+                                                    <event name="OnMiddleDown"></event>
+                                                    <event name="OnMiddleUp"></event>
+                                                    <event name="OnMotion"></event>
+                                                    <event name="OnMouseEvents"></event>
+                                                    <event name="OnMouseWheel"></event>
+                                                    <event name="OnPaint"></event>
+                                                    <event name="OnRightDClick"></event>
+                                                    <event name="OnRightDown"></event>
+                                                    <event name="OnRightUp"></event>
+                                                    <event name="OnSetFocus"></event>
+                                                    <event name="OnSize"></event>
+                                                    <event name="OnUpdateUI"></event>
+                                                </object>
+                                            </object>
+                                            <object class="sizeritem" expanded="1">
+                                                <property name="border">5</property>
+                                                <property name="flag">wxALL</property>
+                                                <property name="proportion">0</property>
+                                                <object class="wxButton" expanded="1">
+                                                    <property name="bg"></property>
+                                                    <property name="context_help"></property>
+                                                    <property name="default">0</property>
+                                                    <property name="enabled">1</property>
+                                                    <property name="fg"></property>
+                                                    <property name="font"></property>
+                                                    <property name="hidden">0</property>
+                                                    <property name="id">wxID_CANCEL2</property>
+                                                    <property name="label">Cancel</property>
+                                                    <property name="maximum_size"></property>
+                                                    <property name="minimum_size"></property>
+                                                    <property name="name">m_buttonCancelForm</property>
+                                                    <property name="permission">protected</property>
+                                                    <property name="pos"></property>
+                                                    <property name="size"></property>
+                                                    <property name="style"></property>
+                                                    <property name="subclass"></property>
+                                                    <property name="tooltip"></property>
+                                                    <property name="window_extra_style"></property>
+                                                    <property name="window_name"></property>
+                                                    <property name="window_style"></property>
+                                                    <event name="OnButtonClick">OnButtonCancelForm</event>
+                                                    <event name="OnChar"></event>
+                                                    <event name="OnEnterWindow"></event>
+                                                    <event name="OnEraseBackground"></event>
+                                                    <event name="OnKeyDown"></event>
+                                                    <event name="OnKeyUp"></event>
+                                                    <event name="OnKillFocus"></event>
+                                                    <event name="OnLeaveWindow"></event>
+                                                    <event name="OnLeftDClick"></event>
+                                                    <event name="OnLeftDown"></event>
+                                                    <event name="OnLeftUp"></event>
+                                                    <event name="OnMiddleDClick"></event>
+                                                    <event name="OnMiddleDown"></event>
+                                                    <event name="OnMiddleUp"></event>
+                                                    <event name="OnMotion"></event>
+                                                    <event name="OnMouseEvents"></event>
+                                                    <event name="OnMouseWheel"></event>
+                                                    <event name="OnPaint"></event>
+                                                    <event name="OnRightDClick"></event>
+                                                    <event name="OnRightDown"></event>
+                                                    <event name="OnRightUp"></event>
+                                                    <event name="OnSetFocus"></event>
+                                                    <event name="OnSize"></event>
+                                                    <event name="OnUpdateUI"></event>
+                                                </object>
+                                            </object>
+                                        </object>
+                                    </object>
+                                </object>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALIGN_RIGHT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer26</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">0</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONBACK</property>
+                                <property name="label">&lt; &amp;Back  </property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonBack</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonBack</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_BUTTONNEXT</property>
+                                <property name="label">  &amp;Next &gt;</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonNext</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonNext</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Frame" expanded="0">
+            <property name="bg">wxSYS_COLOUR_MENU</property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CViewOrderDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">630,520</property>
+            <property name="style">wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">View Order</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style">wxTAB_TRAVERSAL</property>
+            <property name="xrc_skip_sizer">1</property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer20</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer116</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL|wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="wxHtmlWindow" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_htmlWin</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style">wxHW_SCROLLBAR_AUTO</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnHtmlCellClicked"></event>
+                                <event name="OnHtmlCellHover"></event>
+                                <event name="OnHtmlLinkClicked"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALIGN_RIGHT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer26</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_OK</property>
+                                <property name="label">OK</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonOK</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Frame" expanded="0">
+            <property name="bg">wxSYS_COLOUR_MENU</property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CEditReviewDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">630,440</property>
+            <property name="style">wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER</property>
+            <property name="subclass"></property>
+            <property name="title">Enter Review</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style">wxTAB_TRAVERSAL</property>
+            <property name="xrc_skip_sizer">1</property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer112</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag"></property>
+                    <property name="proportion">0</property>
+                    <object class="spacer" expanded="1">
+                        <property name="height">3</property>
+                        <property name="permission">protected</property>
+                        <property name="width">0</property>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL|wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxStaticText" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label"></property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_staticTextSeller</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag"></property>
+                    <property name="proportion">0</property>
+                    <object class="spacer" expanded="1">
+                        <property name="height">3</property>
+                        <property name="permission">protected</property>
+                        <property name="width">0</property>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxStaticText" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Rating</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_staticText110</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxChoice" expanded="1">
+                        <property name="bg"></property>
+                        <property name="choices">&quot; 1 star&quot; &quot; 2 stars&quot; &quot; 3 stars&quot; &quot; 4 stars&quot; &quot; 5 stars&quot;</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_choiceStars</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="selection">0</property>
+                        <property name="size"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnChoice"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxStaticText" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Review</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_staticText43</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <property name="wrap">-1</property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL|wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxTextCtrl" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="maxlength">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_textCtrlReview</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style">wxTE_MULTILINE</property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="value"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown">OnKeyDown</event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnText"></event>
+                        <event name="OnTextEnter"></event>
+                        <event name="OnTextMaxLen"></event>
+                        <event name="OnTextURL"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALIGN_RIGHT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer113</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_SUBMIT</property>
+                                <property name="label">&amp;Submit</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonSubmit</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonSubmit</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Frame" expanded="0">
+            <property name="bg">wxSYS_COLOUR_BTNFACE</property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CPokerLobbyDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">586,457</property>
+            <property name="style">wxDEFAULT_FRAME_STYLE</property>
+            <property name="subclass"></property>
+            <property name="title">Poker Lobby</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style">wxTAB_TRAVERSAL</property>
+            <property name="xrc_skip_sizer">1</property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose"></event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer156</property>
+                <property name="orient">wxHORIZONTAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND|wxTOP|wxBOTTOM|wxLEFT</property>
+                    <property name="proportion">0</property>
+                    <object class="wxTreeCtrl" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size">130,-1</property>
+                        <property name="name">m_treeCtrl</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style">wxTR_HAS_BUTTONS|wxTR_HIDE_ROOT|wxTR_LINES_AT_ROOT</property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnTreeBeginDrag"></event>
+                        <event name="OnTreeBeginLabelEdit"></event>
+                        <event name="OnTreeBeginRDrag"></event>
+                        <event name="OnTreeDeleteItem"></event>
+                        <event name="OnTreeEndDrag"></event>
+                        <event name="OnTreeEndLabelEdit"></event>
+                        <event name="OnTreeGetInfo"></event>
+                        <event name="OnTreeItemActivated"></event>
+                        <event name="OnTreeItemCollapsed"></event>
+                        <event name="OnTreeItemCollapsing"></event>
+                        <event name="OnTreeItemExpanded"></event>
+                        <event name="OnTreeItemExpanding"></event>
+                        <event name="OnTreeItemGetTooltip"></event>
+                        <event name="OnTreeItemMenu"></event>
+                        <event name="OnTreeItemMiddleClick"></event>
+                        <event name="OnTreeItemRightClick"></event>
+                        <event name="OnTreeKeyDown"></event>
+                        <event name="OnTreeSelChanged">OnTreeSelChanged</event>
+                        <event name="OnTreeSelChanging"></event>
+                        <event name="OnTreeSetInfo"></event>
+                        <event name="OnTreeStateImageClick"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer172</property>
+                        <property name="orient">wxVERTICAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND|wxALL</property>
+                            <property name="proportion">1</property>
+                            <object class="wxListCtrl" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_listCtrl</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style">wxLC_NO_SORT_HEADER|wxLC_REPORT</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnListBeginDrag"></event>
+                                <event name="OnListBeginLabelEdit"></event>
+                                <event name="OnListBeginRDrag"></event>
+                                <event name="OnListCacheHint"></event>
+                                <event name="OnListColBeginDrag"></event>
+                                <event name="OnListColClick"></event>
+                                <event name="OnListColDragging"></event>
+                                <event name="OnListColEndDrag"></event>
+                                <event name="OnListColRightClick"></event>
+                                <event name="OnListDeleteAllItems"></event>
+                                <event name="OnListDeleteItem"></event>
+                                <event name="OnListEndLabelEdit"></event>
+                                <event name="OnListInsertItem"></event>
+                                <event name="OnListItemActivated">OnListItemActivated</event>
+                                <event name="OnListItemDeselected"></event>
+                                <event name="OnListItemFocused"></event>
+                                <event name="OnListItemMiddleClick"></event>
+                                <event name="OnListItemRightClick"></event>
+                                <event name="OnListItemSelected">OnListItemSelected</event>
+                                <event name="OnListKeyDown"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_OPENNEWTABLE</property>
+                                <property name="label">&amp;Open New Table</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_buttonNewTable</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonNewTable</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+        <object class="Frame" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CPokerDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">806,550</property>
+            <property name="style">wxDEFAULT_FRAME_STYLE|wxFRAME_NO_TASKBAR</property>
+            <property name="subclass"></property>
+            <property name="title">Poker</property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style">wxFULL_REPAINT_ON_RESIZE|wxTAB_TRAVERSAL</property>
+            <property name="xrc_skip_sizer">1</property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose">OnClose</event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents">OnMouseEvents</event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint">OnPaint</event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize">OnSize</event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer174</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxCheckBox" expanded="1">
+                        <property name="bg"></property>
+                        <property name="checked">0</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">Deal Me Out</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_checkSitOut</property>
+                        <property name="permission">public</property>
+                        <property name="pos"></property>
+                        <property name="size"></property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnCheckBox">OnCheckSitOut</event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxButton" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="default">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_DEALHAND</property>
+                        <property name="label">&amp;Deal Hand</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_buttonDealHand</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size">150,25</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnButtonClick">OnButtonDealHand</event>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxButton" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="default">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_FOLD</property>
+                        <property name="label">&amp;Fold</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_buttonFold</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size">80,25</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnButtonClick">OnButtonFold</event>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxButton" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="default">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_CALL</property>
+                        <property name="label">&amp;Call</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_buttonCall</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size">80,25</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnButtonClick">OnButtonCall</event>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxButton" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="default">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_RAISE</property>
+                        <property name="label">&amp;Raise</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_buttonRaise</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size">80,25</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnButtonClick">OnButtonRaise</event>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxButton" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="default">0</property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_LEAVETABLE</property>
+                        <property name="label">&amp;Leave Table</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_buttonLeaveTable</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size">90,25</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnButtonClick">OnButtonLeaveTable</event>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxTextCtrl" expanded="1">
+                        <property name="bg"></property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_DITCHPLAYER</property>
+                        <property name="maximum_size"></property>
+                        <property name="maxlength">0</property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_textDitchPlayer</property>
+                        <property name="permission">protected</property>
+                        <property name="pos"></property>
+                        <property name="size">45,-1</property>
+                        <property name="style">wxTE_PROCESS_ENTER</property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="value"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnText"></event>
+                        <event name="OnTextEnter">OnDitchPlayer</event>
+                        <event name="OnTextMaxLen"></event>
+                        <event name="OnTextURL"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxCheckBox" expanded="1">
+                        <property name="bg"></property>
+                        <property name="checked">0</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">FOLD</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_checkPreFold</property>
+                        <property name="permission">public</property>
+                        <property name="pos"></property>
+                        <property name="size">100,-1</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnCheckBox">OnCheckPreFold</event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxCheckBox" expanded="1">
+                        <property name="bg"></property>
+                        <property name="checked">0</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">CALL</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_checkPreCall</property>
+                        <property name="permission">public</property>
+                        <property name="pos"></property>
+                        <property name="size">100,-1</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnCheckBox">OnCheckPreCall</event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxCheckBox" expanded="1">
+                        <property name="bg"></property>
+                        <property name="checked">0</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">CALL ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_checkPreCallAny</property>
+                        <property name="permission">public</property>
+                        <property name="pos"></property>
+                        <property name="size">100,-1</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnCheckBox">OnCheckPreCallAny</event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxCheckBox" expanded="1">
+                        <property name="bg"></property>
+                        <property name="checked">0</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">RAISE</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_checkPreRaise</property>
+                        <property name="permission">public</property>
+                        <property name="pos"></property>
+                        <property name="size">100,-1</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnCheckBox">OnCheckPreRaise</event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxALL</property>
+                    <property name="proportion">0</property>
+                    <object class="wxCheckBox" expanded="1">
+                        <property name="bg"></property>
+                        <property name="checked">0</property>
+                        <property name="context_help"></property>
+                        <property name="enabled">1</property>
+                        <property name="fg"></property>
+                        <property name="font"></property>
+                        <property name="hidden">0</property>
+                        <property name="id">wxID_ANY</property>
+                        <property name="label">RAISE ANY</property>
+                        <property name="maximum_size"></property>
+                        <property name="minimum_size"></property>
+                        <property name="name">m_checkPreRaiseAny</property>
+                        <property name="permission">public</property>
+                        <property name="pos"></property>
+                        <property name="size">100,-1</property>
+                        <property name="style"></property>
+                        <property name="subclass"></property>
+                        <property name="tooltip"></property>
+                        <property name="window_extra_style"></property>
+                        <property name="window_name"></property>
+                        <property name="window_style"></property>
+                        <event name="OnChar"></event>
+                        <event name="OnCheckBox">OnCheckPreRaiseAny</event>
+                        <event name="OnEnterWindow"></event>
+                        <event name="OnEraseBackground"></event>
+                        <event name="OnKeyDown"></event>
+                        <event name="OnKeyUp"></event>
+                        <event name="OnKillFocus"></event>
+                        <event name="OnLeaveWindow"></event>
+                        <event name="OnLeftDClick"></event>
+                        <event name="OnLeftDown"></event>
+                        <event name="OnLeftUp"></event>
+                        <event name="OnMiddleDClick"></event>
+                        <event name="OnMiddleDown"></event>
+                        <event name="OnMiddleUp"></event>
+                        <event name="OnMotion"></event>
+                        <event name="OnMouseEvents"></event>
+                        <event name="OnMouseWheel"></event>
+                        <event name="OnPaint"></event>
+                        <event name="OnRightDClick"></event>
+                        <event name="OnRightDown"></event>
+                        <event name="OnRightUp"></event>
+                        <event name="OnSetFocus"></event>
+                        <event name="OnSize"></event>
+                        <event name="OnUpdateUI"></event>
+                    </object>
+                </object>
+            </object>
+            <object class="wxStatusBar" expanded="1">
+                <property name="bg"></property>
+                <property name="context_help"></property>
+                <property name="enabled">1</property>
+                <property name="fg"></property>
+                <property name="fields">1</property>
+                <property name="font"></property>
+                <property name="hidden">0</property>
+                <property name="id">wxID_ANY</property>
+                <property name="maximum_size"></property>
+                <property name="minimum_size"></property>
+                <property name="name">m_statusBar</property>
+                <property name="permission">public</property>
+                <property name="pos"></property>
+                <property name="size"></property>
+                <property name="style">wxST_SIZEGRIP</property>
+                <property name="subclass"></property>
+                <property name="tooltip"></property>
+                <property name="window_extra_style"></property>
+                <property name="window_name"></property>
+                <property name="window_style"></property>
+                <event name="OnChar"></event>
+                <event name="OnEnterWindow"></event>
+                <event name="OnEraseBackground"></event>
+                <event name="OnKeyDown"></event>
+                <event name="OnKeyUp"></event>
+                <event name="OnKillFocus"></event>
+                <event name="OnLeaveWindow"></event>
+                <event name="OnLeftDClick"></event>
+                <event name="OnLeftDown"></event>
+                <event name="OnLeftUp"></event>
+                <event name="OnMiddleDClick"></event>
+                <event name="OnMiddleDown"></event>
+                <event name="OnMiddleUp"></event>
+                <event name="OnMotion"></event>
+                <event name="OnMouseEvents"></event>
+                <event name="OnMouseWheel"></event>
+                <event name="OnPaint"></event>
+                <event name="OnRightDClick"></event>
+                <event name="OnRightDown"></event>
+                <event name="OnRightUp"></event>
+                <event name="OnSetFocus"></event>
+                <event name="OnSize"></event>
+                <event name="OnUpdateUI"></event>
+            </object>
+        </object>
+        <object class="Dialog" expanded="0">
+            <property name="bg"></property>
+            <property name="center"></property>
+            <property name="context_help"></property>
+            <property name="enabled">1</property>
+            <property name="extra_style"></property>
+            <property name="fg"></property>
+            <property name="font"></property>
+            <property name="hidden">0</property>
+            <property name="id">wxID_ANY</property>
+            <property name="maximum_size"></property>
+            <property name="minimum_size"></property>
+            <property name="name">CGetTextFromUserDialogBase</property>
+            <property name="pos"></property>
+            <property name="size">403,138</property>
+            <property name="style">wxDEFAULT_DIALOG_STYLE</property>
+            <property name="subclass"></property>
+            <property name="title"></property>
+            <property name="tooltip"></property>
+            <property name="window_extra_style"></property>
+            <property name="window_name"></property>
+            <property name="window_style"></property>
+            <event name="OnActivate"></event>
+            <event name="OnActivateApp"></event>
+            <event name="OnChar"></event>
+            <event name="OnClose">OnClose</event>
+            <event name="OnEnterWindow"></event>
+            <event name="OnEraseBackground"></event>
+            <event name="OnHibernate"></event>
+            <event name="OnIconize"></event>
+            <event name="OnIdle"></event>
+            <event name="OnInitDialog"></event>
+            <event name="OnKeyDown"></event>
+            <event name="OnKeyUp"></event>
+            <event name="OnKillFocus"></event>
+            <event name="OnLeaveWindow"></event>
+            <event name="OnLeftDClick"></event>
+            <event name="OnLeftDown"></event>
+            <event name="OnLeftUp"></event>
+            <event name="OnMiddleDClick"></event>
+            <event name="OnMiddleDown"></event>
+            <event name="OnMiddleUp"></event>
+            <event name="OnMotion"></event>
+            <event name="OnMouseEvents"></event>
+            <event name="OnMouseWheel"></event>
+            <event name="OnPaint"></event>
+            <event name="OnRightDClick"></event>
+            <event name="OnRightDown"></event>
+            <event name="OnRightUp"></event>
+            <event name="OnSetFocus"></event>
+            <event name="OnSize"></event>
+            <event name="OnUpdateUI"></event>
+            <object class="wxBoxSizer" expanded="1">
+                <property name="minimum_size"></property>
+                <property name="name">bSizer79</property>
+                <property name="orient">wxVERTICAL</property>
+                <property name="permission">none</property>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">10</property>
+                    <property name="flag">wxEXPAND|wxALL</property>
+                    <property name="proportion">1</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer81</property>
+                        <property name="orient">wxVERTICAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxStaticText" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label"></property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_staticTextMessage1</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <property name="wrap">-1</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxTextCtrl" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_TEXTCTRL</property>
+                                <property name="maximum_size"></property>
+                                <property name="maxlength">0</property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_textCtrl1</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style">wxTE_PROCESS_ENTER</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="value"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown">OnKeyDown</event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnText"></event>
+                                <event name="OnTextEnter"></event>
+                                <event name="OnTextMaxLen"></event>
+                                <event name="OnTextURL"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxTOP|wxRIGHT|wxLEFT</property>
+                            <property name="proportion">0</property>
+                            <object class="wxStaticText" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_ANY</property>
+                                <property name="label"></property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_staticTextMessage2</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <property name="wrap">-1</property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxTextCtrl" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">1</property>
+                                <property name="id">wxID_TEXTCTRL</property>
+                                <property name="maximum_size"></property>
+                                <property name="maxlength">0</property>
+                                <property name="minimum_size"></property>
+                                <property name="name">m_textCtrl2</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style">wxTE_PROCESS_ENTER</property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="value"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown">OnKeyDown</event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnText"></event>
+                                <event name="OnTextEnter"></event>
+                                <event name="OnTextMaxLen"></event>
+                                <event name="OnTextURL"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+                <object class="sizeritem" expanded="1">
+                    <property name="border">5</property>
+                    <property name="flag">wxEXPAND</property>
+                    <property name="proportion">0</property>
+                    <object class="wxBoxSizer" expanded="1">
+                        <property name="minimum_size"></property>
+                        <property name="name">bSizer80</property>
+                        <property name="orient">wxHORIZONTAL</property>
+                        <property name="permission">none</property>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxEXPAND</property>
+                            <property name="proportion">1</property>
+                            <object class="spacer" expanded="1">
+                                <property name="height">0</property>
+                                <property name="permission">protected</property>
+                                <property name="width">0</property>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_OK</property>
+                                <property name="label">OK</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonOK</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size">-1,-1</property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonOK</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                        <object class="sizeritem" expanded="1">
+                            <property name="border">5</property>
+                            <property name="flag">wxALL</property>
+                            <property name="proportion">0</property>
+                            <object class="wxButton" expanded="1">
+                                <property name="bg"></property>
+                                <property name="context_help"></property>
+                                <property name="default">0</property>
+                                <property name="enabled">1</property>
+                                <property name="fg"></property>
+                                <property name="font"></property>
+                                <property name="hidden">0</property>
+                                <property name="id">wxID_CANCEL</property>
+                                <property name="label">Cancel</property>
+                                <property name="maximum_size"></property>
+                                <property name="minimum_size">85,25</property>
+                                <property name="name">m_buttonCancel</property>
+                                <property name="permission">protected</property>
+                                <property name="pos"></property>
+                                <property name="size"></property>
+                                <property name="style"></property>
+                                <property name="subclass"></property>
+                                <property name="tooltip"></property>
+                                <property name="window_extra_style"></property>
+                                <property name="window_name"></property>
+                                <property name="window_style"></property>
+                                <event name="OnButtonClick">OnButtonCancel</event>
+                                <event name="OnChar"></event>
+                                <event name="OnEnterWindow"></event>
+                                <event name="OnEraseBackground"></event>
+                                <event name="OnKeyDown"></event>
+                                <event name="OnKeyUp"></event>
+                                <event name="OnKillFocus"></event>
+                                <event name="OnLeaveWindow"></event>
+                                <event name="OnLeftDClick"></event>
+                                <event name="OnLeftDown"></event>
+                                <event name="OnLeftUp"></event>
+                                <event name="OnMiddleDClick"></event>
+                                <event name="OnMiddleDown"></event>
+                                <event name="OnMiddleUp"></event>
+                                <event name="OnMotion"></event>
+                                <event name="OnMouseEvents"></event>
+                                <event name="OnMouseWheel"></event>
+                                <event name="OnPaint"></event>
+                                <event name="OnRightDClick"></event>
+                                <event name="OnRightDown"></event>
+                                <event name="OnRightUp"></event>
+                                <event name="OnSetFocus"></event>
+                                <event name="OnSize"></event>
+                                <event name="OnUpdateUI"></event>
+                            </object>
+                        </object>
+                    </object>
+                </object>
+            </object>
+        </object>
+    </object>
+</wxFormBuilder_Project>
new file mode 100644
--- /dev/null
+++ b/util.cpp
@@ -0,0 +1,383 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+#include "headers.h"
+
+
+
+bool fDebug = false;
+
+
+
+
+// Init openssl library multithreading support
+static HANDLE* lock_cs;
+
+void win32_locking_callback(int mode, int type, const char* file, int line)
+{
+    if (mode & CRYPTO_LOCK)
+        WaitForSingleObject(lock_cs[type], INFINITE);
+    else
+        ReleaseMutex(lock_cs[type]);
+}
+
+// Init
+class CInit
+{
+public:
+    CInit()
+    {
+        // Init openssl library multithreading support
+        lock_cs = (HANDLE*)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(HANDLE));
+        for (int i = 0; i < CRYPTO_num_locks(); i++)
+            lock_cs[i] = CreateMutex(NULL,FALSE,NULL);
+        CRYPTO_set_locking_callback(win32_locking_callback);
+
+        // Seed random number generator with screen scrape and other hardware sources
+        RAND_screen();
+
+        // Seed random number generator with perfmon data
+        RandAddSeed(true);
+    }
+    ~CInit()
+    {
+        // Shutdown openssl library multithreading support
+        CRYPTO_set_locking_callback(NULL);
+        for (int i =0 ; i < CRYPTO_num_locks(); i++)
+            CloseHandle(lock_cs[i]);
+        OPENSSL_free(lock_cs);
+    }
+}
+instance_of_cinit;
+
+
+
+
+void RandAddSeed(bool fPerfmon)
+{
+    // Seed with CPU performance counter
+    LARGE_INTEGER PerformanceCount;
+    QueryPerformanceCounter(&PerformanceCount);
+    RAND_add(&PerformanceCount, sizeof(PerformanceCount), 1.5);
+    memset(&PerformanceCount, 0, sizeof(PerformanceCount));
+
+    static int64 nLastPerfmon;
+    if (fPerfmon || GetTime() > nLastPerfmon + 5 * 60)
+    {
+        nLastPerfmon = GetTime();
+
+        // Seed with the entire set of perfmon data
+        unsigned char pdata[250000];
+        memset(pdata, 0, sizeof(pdata));
+        unsigned long nSize = sizeof(pdata);
+        long ret = RegQueryValueEx(HKEY_PERFORMANCE_DATA, "Global", NULL, NULL, pdata, &nSize);
+        RegCloseKey(HKEY_PERFORMANCE_DATA);
+        if (ret == ERROR_SUCCESS)
+        {
+            uint256 hash;
+            SHA256(pdata, nSize, (unsigned char*)&hash);
+            RAND_add(&hash, sizeof(hash), min(nSize/500.0, (double)sizeof(hash)));
+            hash = 0;
+            memset(pdata, 0, nSize);
+
+            time_t nTime;
+            time(&nTime);
+            struct tm* ptmTime = gmtime(&nTime);
+            char pszTime[200];
+            strftime(pszTime, sizeof(pszTime), "%x %H:%M:%S", ptmTime);
+            printf("%s  RandAddSeed() got %d bytes of performance data\n", pszTime, nSize);
+        }
+    }
+}
+
+
+
+
+
+
+
+
+
+
+// Safer snprintf
+//  - prints up to limit-1 characters
+//  - output string is always null terminated even if limit reached
+//  - return value is the number of characters actually printed
+int my_snprintf(char* buffer, size_t limit, const char* format, ...)
+{
+    if (limit == 0)
+        return 0;
+    va_list arg_ptr;
+    va_start(arg_ptr, format);
+    int ret = _vsnprintf(buffer, limit, format, arg_ptr);
+    va_end(arg_ptr);
+    if (ret < 0 || ret >= limit)
+    {
+        ret = limit - 1;
+        buffer[limit-1] = 0;
+    }
+    return ret;
+}
+
+
+string strprintf(const char* format, ...)
+{
+    char buffer[50000];
+    char* p = buffer;
+    int limit = sizeof(buffer);
+    int ret;
+    loop
+    {
+        va_list arg_ptr;
+        va_start(arg_ptr, format);
+        ret = _vsnprintf(p, limit, format, arg_ptr);
+        va_end(arg_ptr);
+        if (ret >= 0 && ret < limit)
+            break;
+        if (p != buffer)
+            delete p;
+        limit *= 2;
+        p = new char[limit];
+        if (p == NULL)
+            throw std::bad_alloc();
+    }
+#ifdef _MSC_VER
+    // msvc optimisation
+    if (p == buffer)
+        return string(p, p+ret);
+#endif
+    string str(p, p+ret);
+    if (p != buffer)
+        delete p;
+    return str;
+}
+
+
+bool error(const char* format, ...)
+{
+    char buffer[50000];
+    int limit = sizeof(buffer);
+    va_list arg_ptr;
+    va_start(arg_ptr, format);
+    int ret = _vsnprintf(buffer, limit, format, arg_ptr);
+    va_end(arg_ptr);
+    if (ret < 0 || ret >= limit)
+    {
+        ret = limit - 1;
+        buffer[limit-1] = 0;
+    }
+    printf("ERROR: %s\n", buffer);
+    return false;
+}
+
+
+void PrintException(std::exception* pex, const char* pszThread)
+{
+    char pszModule[260];
+    pszModule[0] = '\0';
+    GetModuleFileName(NULL, pszModule, sizeof(pszModule));
+    _strlwr(pszModule);
+    char pszMessage[1000];
+    if (pex)
+        snprintf(pszMessage, sizeof(pszMessage),
+            "EXCEPTION: %s       \n%s       \n%s in %s       \n", typeid(*pex).name(), pex->what(), pszModule, pszThread);
+    else
+        snprintf(pszMessage, sizeof(pszMessage),
+            "UNKNOWN EXCEPTION       \n%s in %s       \n", pszModule, pszThread);
+    printf("\n\n************************\n%s", pszMessage);
+    if (wxTheApp)
+        wxMessageBox(pszMessage, "Error", wxOK | wxICON_ERROR);
+    throw;
+    //DebugBreak();
+}
+
+
+void ParseString(const string& str, char c, vector<string>& v)
+{
+    unsigned int i1 = 0;
+    unsigned int i2;
+    do
+    {
+        i2 = str.find(c, i1);
+        v.push_back(str.substr(i1, i2-i1));
+        i1 = i2+1;
+    }
+    while (i2 != str.npos);
+}
+
+
+string FormatMoney(int64 n, bool fPlus)
+{
+    n /= CENT;
+    string str = strprintf("%I64d.%02I64d", (n > 0 ? n : -n)/100, (n > 0 ? n : -n)%100);
+    for (int i = 6; i < str.size(); i += 4)
+        if (isdigit(str[str.size() - i - 1]))
+            str.insert(str.size() - i, 1, ',');
+    if (n < 0)
+        str.insert((unsigned int)0, 1, '-');
+    else if (fPlus && n > 0)
+        str.insert((unsigned int)0, 1, '+');
+    return str;
+}
+
+bool ParseMoney(const char* pszIn, int64& nRet)
+{
+    string strWhole;
+    int64 nCents = 0;
+    const char* p = pszIn;
+    while (isspace(*p))
+        p++;
+    for (; *p; p++)
+    {
+        if (*p == ',' && p > pszIn && isdigit(p[-1]) && isdigit(p[1]) && isdigit(p[2]) && isdigit(p[3]) && !isdigit(p[4]))
+            continue;
+        if (*p == '.')
+        {
+            p++;
+            if (isdigit(*p))
+            {
+                nCents = 10 * (*p++ - '0');
+                if (isdigit(*p))
+                    nCents += (*p++ - '0');
+            }
+            break;
+        }
+        if (isspace(*p))
+            break;
+        if (!isdigit(*p))
+            return false;
+        strWhole.insert(strWhole.end(), *p);
+    }
+    for (; *p; p++)
+        if (!isspace(*p))
+            return false;
+    if (strWhole.size() > 14)
+        return false;
+    if (nCents < 0 || nCents > 99)
+        return false;
+    int64 nWhole = atoi64(strWhole);
+    int64 nPreValue = nWhole * 100 + nCents;
+    int64 nValue = nPreValue * CENT;
+    if (nValue / CENT != nPreValue)
+        return false;
+    if (nValue / COIN != nWhole)
+        return false;
+    nRet = nValue;
+    return true;
+}
+
+
+
+
+
+
+
+
+
+
+bool FileExists(const char* psz)
+{
+#ifdef WIN32
+    return GetFileAttributes(psz) != -1;
+#else
+    return access(psz, 0) != -1;
+#endif
+}
+
+int GetFilesize(FILE* file)
+{
+    int nSavePos = ftell(file);
+    int nFilesize = -1;
+    if (fseek(file, 0, SEEK_END) == 0)
+        nFilesize = ftell(file);
+    fseek(file, nSavePos, SEEK_SET);
+    return nFilesize;
+}
+
+
+
+
+
+
+
+
+uint64 GetRand(uint64 nMax)
+{
+    if (nMax == 0)
+        return 0;
+
+    // The range of the random source must be a multiple of the modulus
+    // to give every possible output value an equal possibility
+    uint64 nRange = (_UI64_MAX / nMax) * nMax;
+    uint64 nRand = 0;
+    do
+        RAND_bytes((unsigned char*)&nRand, sizeof(nRand));
+    while (nRand >= nRange);
+    return (nRand % nMax);
+}
+
+
+
+
+
+
+
+
+
+
+//
+// "Never go to sea with two chronometers; take one or three."
+// Our three chronometers are:
+//  - System clock
+//  - Median of other server's clocks
+//  - NTP servers
+//
+// note: NTP isn't implemented yet, so until then we just use the median
+//  of other nodes clocks to correct ours.
+//
+
+int64 GetTime()
+{
+    return time(NULL);
+}
+
+static int64 nTimeOffset = 0;
+
+int64 GetAdjustedTime()
+{
+    return GetTime() + nTimeOffset;
+}
+
+void AddTimeData(unsigned int ip, int64 nTime)
+{
+    int64 nOffsetSample = nTime - GetTime();
+
+    // Ignore duplicates
+    static set<unsigned int> setKnown;
+    if (!setKnown.insert(ip).second)
+        return;
+
+    // Add data
+    static vector<int64> vTimeOffsets;
+    if (vTimeOffsets.empty())
+        vTimeOffsets.push_back(0);
+    vTimeOffsets.push_back(nOffsetSample);
+    printf("Added time data, samples %d, ip %08x, offset %+I64d (%+I64d minutes)\n", vTimeOffsets.size(), ip, vTimeOffsets.back(), vTimeOffsets.back()/60);
+    if (vTimeOffsets.size() >= 5 && vTimeOffsets.size() % 2 == 1)
+    {
+        sort(vTimeOffsets.begin(), vTimeOffsets.end());
+        int64 nMedian = vTimeOffsets[vTimeOffsets.size()/2];
+        nTimeOffset = nMedian;
+        if ((nMedian > 0 ? nMedian : -nMedian) > 5 * 60)
+        {
+            // Only let other nodes change our clock so far before we
+            // go to the NTP servers
+            /// todo: Get time from NTP servers, then set a flag
+            ///    to make sure it doesn't get changed again
+        }
+        foreach(int64 n, vTimeOffsets)
+            printf("%+I64d  ", n);
+        printf("|  nTimeOffset = %+I64d  (%+I64d minutes)\n", nTimeOffset, nTimeOffset/60);
+    }
+}
new file mode 100644
--- /dev/null
+++ b/util.h
@@ -0,0 +1,399 @@
+// Copyright (c) 2009 Satoshi Nakamoto
+// Distributed under the MIT/X11 software license, see the accompanying
+// file license.txt or http://www.opensource.org/licenses/mit-license.php.
+
+
+#if defined(_MSC_VER) || defined(__BORLANDC__)
+typedef __int64  int64;
+typedef unsigned __int64  uint64;
+#else
+typedef long long  int64;
+typedef unsigned long long  uint64;
+#endif
+#if defined(_MSC_VER) && _MSC_VER < 1300
+#define for  if (false) ; else for
+#endif
+
+#ifndef _MSC_VER
+#define __forceinline  inline
+#endif
+
+#define foreach             BOOST_FOREACH
+#define loop                for (;;)
+#define BEGIN(a)            ((char*)&(a))
+#define END(a)              ((char*)&((&(a))[1]))
+#define UBEGIN(a)           ((unsigned char*)&(a))
+#define UEND(a)             ((unsigned char*)&((&(a))[1]))
+#define ARRAYLEN(array)     (sizeof(array)/sizeof((array)[0]))
+
+#ifdef _WINDOWS
+#define printf              OutputDebugStringF
+#endif
+
+#ifdef snprintf
+#undef snprintf
+#endif
+#define snprintf my_snprintf
+
+#ifndef PRId64
+#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MSVCRT__)
+#define PRId64  "I64d"
+#define PRIu64  "I64u"
+#define PRIx64  "I64x"
+#else
+#define PRId64  "lld"
+#define PRIu64  "llu"
+#define PRIx64  "llx"
+#endif
+#endif
+
+// This is needed because the foreach macro can't get over the comma in pair<t1, t2>
+#define PAIRTYPE(t1, t2)    pair<t1, t2>
+
+// Used to bypass the rule against non-const reference to temporary
+// where it makes sense with wrappers such as CFlatData or CTxDB
+template<typename T>
+inline T& REF(const T& val)
+{
+    return (T&)val;
+}
+
+
+
+
+
+
+
+
+
+extern bool fDebug;
+
+void RandAddSeed(bool fPerfmon=false);
+int my_snprintf(char* buffer, size_t limit, const char* format, ...);
+string strprintf(const char* format, ...);
+bool error(const char* format, ...);
+void PrintException(std::exception* pex, const char* pszThread);
+void ParseString(const string& str, char c, vector<string>& v);
+string FormatMoney(int64 n, bool fPlus=false);
+bool ParseMoney(const char* pszIn, int64& nRet);
+bool FileExists(const char* psz);
+int GetFilesize(FILE* file);
+uint64 GetRand(uint64 nMax);
+int64 GetTime();
+int64 GetAdjustedTime();
+void AddTimeData(unsigned int ip, int64 nTime);
+
+
+
+
+
+
+
+
+
+
+
+
+// Wrapper to automatically initialize critical section
+// Could use wxCriticalSection for portability, but it doesn't support TryEnterCriticalSection
+class CCriticalSection
+{
+protected:
+    CRITICAL_SECTION cs;
+public:
+    char* pszFile;
+    int nLine;
+    explicit CCriticalSection() { InitializeCriticalSection(&cs); }
+    ~CCriticalSection() { DeleteCriticalSection(&cs); }
+    void Enter() { EnterCriticalSection(&cs); }
+    void Leave() { LeaveCriticalSection(&cs); }
+    bool TryEnter() { return TryEnterCriticalSection(&cs); }
+    CRITICAL_SECTION* operator&() { return &cs; }
+};
+
+// Automatically leave critical section when leaving block, needed for exception safety
+class CCriticalBlock
+{
+protected:
+    CRITICAL_SECTION* pcs;
+public:
+    CCriticalBlock(CRITICAL_SECTION& csIn) { pcs = &csIn; EnterCriticalSection(pcs); }
+    CCriticalBlock(CCriticalSection& csIn) { pcs = &csIn; EnterCriticalSection(pcs); }
+    ~CCriticalBlock() { LeaveCriticalSection(pcs); }
+};
+
+// WARNING: This will catch continue and break!
+// break is caught with an assertion, but there's no way to detect continue.
+// I'd rather be careful than suffer the other more error prone syntax.
+// The compiler will optimise away all this loop junk.
+#define CRITICAL_BLOCK(cs)     \
+    for (bool fcriticalblockonce=true; fcriticalblockonce; assert(("break caught by CRITICAL_BLOCK!", !fcriticalblockonce)), fcriticalblockonce=false)  \
+    for (CCriticalBlock criticalblock(cs); fcriticalblockonce && (cs.pszFile=__FILE__, cs.nLine=__LINE__, true); fcriticalblockonce=false, cs.pszFile=NULL, cs.nLine=0)
+
+class CTryCriticalBlock
+{
+protected:
+    CRITICAL_SECTION* pcs;
+public:
+    CTryCriticalBlock(CRITICAL_SECTION& csIn) { pcs = (TryEnterCriticalSection(&csIn) ? &csIn : NULL); }
+    CTryCriticalBlock(CCriticalSection& csIn) { pcs = (TryEnterCriticalSection(&csIn) ? &csIn : NULL); }
+    ~CTryCriticalBlock() { if (pcs) LeaveCriticalSection(pcs); }
+    bool Entered() { return pcs != NULL; }
+};
+
+#define TRY_CRITICAL_BLOCK(cs)     \
+    for (bool fcriticalblockonce=true; fcriticalblockonce; assert(("break caught by TRY_CRITICAL_BLOCK!", !fcriticalblockonce)), fcriticalblockonce=false)  \
+    for (CTryCriticalBlock criticalblock(cs); fcriticalblockonce && (fcriticalblockonce = criticalblock.Entered()) && (cs.pszFile=__FILE__, cs.nLine=__LINE__, true); fcriticalblockonce=false, cs.pszFile=NULL, cs.nLine=0)
+
+
+
+
+
+
+
+
+
+
+
+
+inline string i64tostr(int64 n)
+{
+    return strprintf("%"PRId64, n);
+}
+
+inline string itostr(int n)
+{
+    return strprintf("%d", n);
+}
+
+inline int64 atoi64(const char* psz)
+{
+#ifdef _MSC_VER
+    return _atoi64(psz);
+#else
+    return strtoll(psz, NULL, 10);
+#endif
+}
+
+inline int64 atoi64(const string& str)
+{
+#ifdef _MSC_VER
+    return _atoi64(str.c_str());
+#else
+    return strtoll(str.c_str(), NULL, 10);
+#endif
+}
+
+inline int atoi(const string& str)
+{
+    return atoi(str.c_str());
+}
+
+inline int roundint(double d)
+{
+    return (int)(d > 0 ? d + 0.5 : d - 0.5);
+}
+
+template<typename T>
+string HexStr(const T itbegin, const T itend, bool fSpaces=true)
+{
+    const unsigned char* pbegin = (const unsigned char*)&itbegin[0];
+    const unsigned char* pend = pbegin + (itend - itbegin) * sizeof(itbegin[0]);
+    string str;
+    for (const unsigned char* p = pbegin; p != pend; p++)
+        str += strprintf((fSpaces && p != pend-1 ? "%02x " : "%02x"), *p);
+    return str;
+}
+
+template<typename T>
+string HexNumStr(const T itbegin, const T itend, bool f0x=true)
+{
+    const unsigned char* pbegin = (const unsigned char*)&itbegin[0];
+    const unsigned char* pend = pbegin + (itend - itbegin) * sizeof(itbegin[0]);
+    string str = (f0x ? "0x" : "");
+    for (const unsigned char* p = pend-1; p >= pbegin; p--)
+        str += strprintf("%02X", *p);
+    return str;
+}
+
+template<typename T>
+void PrintHex(const T pbegin, const T pend, const char* pszFormat="%s", bool fSpaces=true)
+{
+    printf(pszFormat, HexStr(pbegin, pend, fSpaces).c_str());
+}
+
+
+
+
+
+
+
+
+inline int OutputDebugStringF(const char* pszFormat, ...)
+{
+#ifdef __WXDEBUG__
+    // log file
+    FILE* fileout = fopen("debug.log", "a");
+    if (fileout)
+    {
+        va_list arg_ptr;
+        va_start(arg_ptr, pszFormat);
+        vfprintf(fileout, pszFormat, arg_ptr);
+        va_end(arg_ptr);
+        fclose(fileout);
+    }
+
+    // accumulate a line at a time
+    static CCriticalSection cs_OutputDebugStringF;
+    CRITICAL_BLOCK(cs_OutputDebugStringF)
+    {
+        static char pszBuffer[50000];
+        static char* pend;
+        if (pend == NULL)
+            pend = pszBuffer;
+        va_list arg_ptr;
+        va_start(arg_ptr, pszFormat);
+        int limit = END(pszBuffer) - pend - 2;
+        int ret = _vsnprintf(pend, limit, pszFormat, arg_ptr);
+        va_end(arg_ptr);
+        if (ret < 0 || ret >= limit)
+        {
+            pend = END(pszBuffer) - 2;
+            *pend++ = '\n';
+        }
+        else
+            pend += ret;
+        *pend = '\0';
+        char* p1 = pszBuffer;
+        char* p2;
+        while (p2 = strchr(p1, '\n'))
+        {
+            p2++;
+            char c = *p2;
+            *p2 = '\0';
+            OutputDebugString(p1);
+            *p2 = c;
+            p1 = p2;
+        }
+        if (p1 != pszBuffer)
+            memmove(pszBuffer, p1, pend - p1 + 1);
+        pend -= (p1 - pszBuffer);
+        return ret;
+    }
+#endif
+
+    if (!wxTheApp)
+    {
+        // print to console
+        va_list arg_ptr;
+        va_start(arg_ptr, pszFormat);
+        vprintf(pszFormat, arg_ptr);
+        va_end(arg_ptr);
+    }
+    return 0;
+}
+
+
+
+
+
+
+
+
+
+inline void heapchk()
+{
+    if (_heapchk() != _HEAPOK)
+        DebugBreak();
+}
+
+// Randomize the stack to help protect against buffer overrun exploits
+#define IMPLEMENT_RANDOMIZE_STACK(ThreadFn)                         \
+    {                                                               \
+        static char nLoops;                                         \
+        if (nLoops <= 0)                                            \
+            nLoops = GetRand(50) + 1;                               \
+        if (nLoops-- > 1)                                           \
+        {                                                           \
+            ThreadFn;                                               \
+            return;                                                 \
+        }                                                           \
+    }
+
+#define CATCH_PRINT_EXCEPTION(pszFn)     \
+    catch (std::exception& e) {          \
+        PrintException(&e, (pszFn));     \
+    } catch (...) {                      \
+        PrintException(NULL, (pszFn));   \
+    }
+
+
+
+
+
+
+
+
+
+template<typename T1>
+inline uint256 Hash(const T1 pbegin, const T1 pend)
+{
+    uint256 hash1;
+    SHA256((unsigned char*)&pbegin[0], (pend - pbegin) * sizeof(pbegin[0]), (unsigned char*)&hash1);
+    uint256 hash2;
+    SHA256((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
+    return hash2;
+}
+
+template<typename T1, typename T2>
+inline uint256 Hash(const T1 p1begin, const T1 p1end,
+                    const T2 p2begin, const T2 p2end)
+{
+    uint256 hash1;
+    SHA256_CTX ctx;
+    SHA256_Init(&ctx);
+    SHA256_Update(&ctx, (unsigned char*)&p1begin[0], (p1end - p1begin) * sizeof(p1begin[0]));
+    SHA256_Update(&ctx, (unsigned char*)&p2begin[0], (p2end - p2begin) * sizeof(p2begin[0]));
+    SHA256_Final((unsigned char*)&hash1, &ctx);
+    uint256 hash2;
+    SHA256((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
+    return hash2;
+}
+
+template<typename T1, typename T2, typename T3>
+inline uint256 Hash(const T1 p1begin, const T1 p1end,
+                    const T2 p2begin, const T2 p2end,
+                    const T3 p3begin, const T3 p3end)
+{
+    uint256 hash1;
+    SHA256_CTX ctx;
+    SHA256_Init(&ctx);
+    SHA256_Update(&ctx, (unsigned char*)&p1begin[0], (p1end - p1begin) * sizeof(p1begin[0]));
+    SHA256_Update(&ctx, (unsigned char*)&p2begin[0], (p2end - p2begin) * sizeof(p2begin[0]));
+    SHA256_Update(&ctx, (unsigned char*)&p3begin[0], (p3end - p3begin) * sizeof(p3begin[0]));
+    SHA256_Final((unsigned char*)&hash1, &ctx);
+    uint256 hash2;
+    SHA256((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
+    return hash2;
+}
+
+template<typename T>
+uint256 SerializeHash(const T& obj, int nType=SER_GETHASH, int nVersion=VERSION)
+{
+    // Most of the time is spent allocating and deallocating CDataStream's
+    // buffer.  If this ever needs to be optimized further, make a CStaticStream
+    // class with its buffer on the stack.
+    CDataStream ss(nType, nVersion);
+    ss.reserve(10000);
+    ss << obj;
+    return Hash(ss.begin(), ss.end());
+}
+
+inline uint160 Hash160(const vector<unsigned char>& vch)
+{
+    uint256 hash1;
+    SHA256(&vch[0], vch.size(), (unsigned char*)&hash1);
+    uint160 hash2;
+    RIPEMD160((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
+    return hash2;
+}