Working. bug fixes and improvements; tested SagePay working.
other gateways (like FDE4, barclay) yet to be tested.

1 m_intGatewayID 206 sagepay 207 firstdataE4, so the number is inconsistent with nsoftware. gateway type now. changed directly to the number in EEGateway.cs.
(improvement: just use that enumerate data struct instead!)
2 EERM.cs EEKV.cs EELM.cs etc debugging, working now.
 2.1 SpecificKey from KMWeb
 2.2 "\\" or "\\\\" in EERM.cs
 2.3 convert.toInt32(char) -> char - '0' which is the right thing to do
 and other fixes or improvements
3 EEPGGWCCGenericBase.cs debugs in line 23x
4 performed for every file: remove unused "using"s in VS Edit - intellisense menu

Paypal coming and also overhaul of EEBase/KV/LM/RM/.. classes, since many certainly do not have highesteffiency.
paypal, ogone and other clean up

1 EEGateway.cs added definition of nsoftwareInPay.IchargeGateways enum. (gwFirstDataE4 = 80, etc);
  for nsoftware's existing Gateway building, changed the New EEPGGWCCSpecific gateway initialization : first argument using Convert.ToInt32(IchargeGateways enum) so that we do not need to worry about those numbers

2 clean up usings for EEGWBase, and EEPGGWOverrideBase.cs
  OverrideBase.vb string concatenation optimized.

3 Ogone old added to this project, namechanged to OgoneCustom, which is done independent of nsoftware integrator
  not tested;

4 PayPal direct payment clean up, not tested;

5 sagepay and sagepaytoken name chagnes, first 4 char changed from EEPM to EEPG.
 no idea about the diff after comapring base class, overridebase, etc.

TestC# project update, which is not included in this repo.
Test update includes payflow, ogone files; not tested yet, requiring pay flow pro and pay pal account info.
SpecificKeyDat reg key string fix and add tokenize using licensing bit/session of Authorize
1 SpecificKeyDat bug fix.
strSpecificKeyDat += Convert.ToString(chrRandomChar)
                              + Convert.ToChar((int)'a' + (intSKDAttemptedCommTries / 26))
                              + Convert.ToChar((int)'a' + (intSKDAttemptedCommTries % 26))
                              + Convert.ToChar((int)'a' + intSKDDaysOfFailedComm)
                              + chrRandomChar
                              + Convert.ToString(intSKDCountOfUsage + 1).PadLeft(2, '0');
so that result is not "...979797..." but "...aaa..."

2 for Tokenize in EEGateway.cs :
            if (!CheckInternalLicenses(4)) //just using the same licensing section as Authorize().
                return "";

3 delete redundant parenthesis.
just an late push in ExpandIT