unit Chilkat.Ftp2;

{
  Pascal wrapper for Chilkat Ftp2.
  Auto-generated by PascalWrapperGenerator -- do not edit manually.
}

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}

interface

uses
  SysUtils,
  Chilkat.Base;

type

  { TFtp2 wraps CkFtp2 via the C bridge layer. }
  TFtp2 = class(TChilkatBase)
  private
    FOnAbortCheck: TChilkatAbortCheckEvent;
    FOnPercentDone: TChilkatPercentDoneEvent;
    FOnProgressInfo: TChilkatProgressInfoEvent;
    function  GetLastErrorHtml: string;
    function  GetLastErrorText: string;
    function  GetLastErrorXml: string;
    function  GetVersion: string;
    function  GetDebugLogFilePath: string;
    procedure SetDebugLogFilePath(AValue: string);
    function  GetVerboseLogging: Boolean;
    procedure SetVerboseLogging(AValue: Boolean);
    function  GetLastMethodSuccess: Boolean;
    procedure SetLastMethodSuccess(AValue: Boolean);
    function  GetAbortCurrent: Boolean;
    procedure SetAbortCurrent(AValue: Boolean);
    function  GetAccount: string;
    procedure SetAccount(AValue: string);
    function  GetActivePortRangeEnd: Integer;
    procedure SetActivePortRangeEnd(AValue: Integer);
    function  GetActivePortRangeStart: Integer;
    procedure SetActivePortRangeStart(AValue: Integer);
    function  GetAllocateSize: LongWord;
    procedure SetAllocateSize(AValue: LongWord);
    function  GetAllowMlsd: Boolean;
    procedure SetAllowMlsd(AValue: Boolean);
    function  GetCurBytesReceived: LongWord;
    function  GetCurBytesReceived64: Int64;
    function  GetCurBytesReceivedStr: string;
    function  GetCurBytesSent: LongWord;
    function  GetCurBytesSent64: Int64;
    function  GetCurBytesSentStr: string;
    function  GetAuthSsl: Boolean;
    procedure SetAuthSsl(AValue: Boolean);
    function  GetAuthTls: Boolean;
    procedure SetAuthTls(AValue: Boolean);
    function  GetAutoFeat: Boolean;
    procedure SetAutoFeat(AValue: Boolean);
    function  GetAutoFix: Boolean;
    procedure SetAutoFix(AValue: Boolean);
    function  GetAutoGetSizeForProgress: Boolean;
    procedure SetAutoGetSizeForProgress(AValue: Boolean);
    function  GetAutoOptsUtf8: Boolean;
    procedure SetAutoOptsUtf8(AValue: Boolean);
    function  GetAutoSetUseEpsv: Boolean;
    procedure SetAutoSetUseEpsv(AValue: Boolean);
    function  GetAutoSyst: Boolean;
    procedure SetAutoSyst(AValue: Boolean);
    function  GetAutoXcrc: Boolean;
    procedure SetAutoXcrc(AValue: Boolean);
    function  GetBandwidthThrottleDown: Integer;
    procedure SetBandwidthThrottleDown(AValue: Integer);
    function  GetBandwidthThrottleUp: Integer;
    procedure SetBandwidthThrottleUp(AValue: Integer);
    function  GetClientIpAddress: string;
    procedure SetClientIpAddress(AValue: string);
    function  GetCommandCharset: string;
    procedure SetCommandCharset(AValue: string);
    function  GetConnectFailReason: Integer;
    function  GetConnectTimeout: Integer;
    procedure SetConnectTimeout(AValue: Integer);
    function  GetConnectVerified: Boolean;
    function  GetCrlfMode: Integer;
    procedure SetCrlfMode(AValue: Integer);
    function  GetDataProtection: string;
    procedure SetDataProtection(AValue: string);
    function  GetDirListingCharset: string;
    procedure SetDirListingCharset(AValue: string);
    function  GetDownloadTransferRate: Integer;
    function  GetForcePortIpAddress: string;
    procedure SetForcePortIpAddress(AValue: string);
    function  GetGreeting: string;
    function  GetHasModeZ: Boolean;
    function  GetHeartbeatMs: Integer;
    procedure SetHeartbeatMs(AValue: Integer);
    function  GetHostname: string;
    procedure SetHostname(AValue: string);
    function  GetHttpProxyAuthMethod: string;
    procedure SetHttpProxyAuthMethod(AValue: string);
    function  GetHttpProxyDomain: string;
    procedure SetHttpProxyDomain(AValue: string);
    function  GetHttpProxyHostname: string;
    procedure SetHttpProxyHostname(AValue: string);
    function  GetHttpProxyPassword: string;
    procedure SetHttpProxyPassword(AValue: string);
    function  GetHttpProxyPort: Integer;
    procedure SetHttpProxyPort(AValue: Integer);
    function  GetHttpProxyUsername: string;
    procedure SetHttpProxyUsername(AValue: string);
    function  GetIdleTimeoutMs: Integer;
    procedure SetIdleTimeoutMs(AValue: Integer);
    function  GetIsConnected: Boolean;
    function  GetKeepSessionLog: Boolean;
    procedure SetKeepSessionLog(AValue: Boolean);
    function  GetLastReply: string;
    function  GetListPattern: string;
    procedure SetListPattern(AValue: string);
    function  GetLoginVerified: Boolean;
    function  GetPartialTransfer: Boolean;
    function  GetPassive: Boolean;
    procedure SetPassive(AValue: Boolean);
    function  GetPassiveUseHostAddr: Boolean;
    procedure SetPassiveUseHostAddr(AValue: Boolean);
    function  GetPassword: string;
    procedure SetPassword(AValue: string);
    function  GetPercentDoneScale: Integer;
    procedure SetPercentDoneScale(AValue: Integer);
    function  GetPort: Integer;
    procedure SetPort(AValue: Integer);
    function  GetPreferIpv6: Boolean;
    procedure SetPreferIpv6(AValue: Boolean);
    function  GetPreferNlst: Boolean;
    procedure SetPreferNlst(AValue: Boolean);
    function  GetProgressMonSize: Integer;
    procedure SetProgressMonSize(AValue: Integer);
    function  GetProgressMonSize64: Int64;
    procedure SetProgressMonSize64(AValue: Int64);
    function  GetProxyHostname: string;
    procedure SetProxyHostname(AValue: string);
    function  GetProxyMethod: Integer;
    procedure SetProxyMethod(AValue: Integer);
    function  GetProxyPassword: string;
    procedure SetProxyPassword(AValue: string);
    function  GetProxyPort: Integer;
    procedure SetProxyPort(AValue: Integer);
    function  GetProxyUsername: string;
    procedure SetProxyUsername(AValue: string);
    function  GetReadTimeout: Integer;
    procedure SetReadTimeout(AValue: Integer);
    function  GetRequireSslCertVerify: Boolean;
    procedure SetRequireSslCertVerify(AValue: Boolean);
    function  GetRestartNext: Boolean;
    procedure SetRestartNext(AValue: Boolean);
    function  GetSessionLog: string;
    function  GetSoRcvBuf: Integer;
    procedure SetSoRcvBuf(AValue: Integer);
    function  GetSoSndBuf: Integer;
    procedure SetSoSndBuf(AValue: Integer);
    function  GetSocksHostname: string;
    procedure SetSocksHostname(AValue: string);
    function  GetSocksPassword: string;
    procedure SetSocksPassword(AValue: string);
    function  GetSocksPort: Integer;
    procedure SetSocksPort(AValue: Integer);
    function  GetSocksUsername: string;
    procedure SetSocksUsername(AValue: string);
    function  GetSocksVersion: Integer;
    procedure SetSocksVersion(AValue: Integer);
    function  GetSsl: Boolean;
    procedure SetSsl(AValue: Boolean);
    function  GetSslAllowedCiphers: string;
    procedure SetSslAllowedCiphers(AValue: string);
    function  GetSslProtocol: string;
    procedure SetSslProtocol(AValue: string);
    function  GetSslServerCertVerified: Boolean;
    function  GetSyncMustMatch: string;
    procedure SetSyncMustMatch(AValue: string);
    function  GetSyncMustNotMatch: string;
    procedure SetSyncMustNotMatch(AValue: string);
    function  GetSyncPreview: string;
    function  GetTlsCipherSuite: string;
    function  GetTlsPinSet: string;
    procedure SetTlsPinSet(AValue: string);
    function  GetTlsVersion: string;
    function  GetUploadTransferRate: Integer;
    function  GetUseEpsv: Boolean;
    procedure SetUseEpsv(AValue: Boolean);
    function  GetUsername: string;
    procedure SetUsername(AValue: string);
    function  GetLargeFileMeasures: Boolean;
    procedure SetLargeFileMeasures(AValue: Boolean);
    function  GetSyncMustMatchDir: string;
    procedure SetSyncMustMatchDir(AValue: string);
    function  GetSyncMustNotMatchDir: string;
    procedure SetSyncMustNotMatchDir(AValue: string);
    function  GetSyncCreateAllLocalDirs: Boolean;
    procedure SetSyncCreateAllLocalDirs(AValue: Boolean);
    function  GetUncommonOptions: string;
    procedure SetUncommonOptions(AValue: string);
    function  GetListOption: string;
    procedure SetListOption(AValue: string);
    function  GetEnableSecrets: Boolean;
    procedure SetEnableSecrets(AValue: Boolean);
    procedure SetOnAbortCheck(AValue: TChilkatAbortCheckEvent);
    procedure SetOnPercentDone(AValue: TChilkatPercentDoneEvent);
    procedure SetOnProgressInfo(AValue: TChilkatProgressInfoEvent);
  public
    constructor Create;
    destructor  Destroy; override;

    property LastErrorHtml: string read GetLastErrorHtml;
    property LastErrorText: string read GetLastErrorText;
    property LastErrorXml: string read GetLastErrorXml;
    property Version: string read GetVersion;
    property DebugLogFilePath: string read GetDebugLogFilePath write SetDebugLogFilePath;
    property VerboseLogging: Boolean read GetVerboseLogging write SetVerboseLogging;
    property LastMethodSuccess: Boolean read GetLastMethodSuccess write SetLastMethodSuccess;
    property AbortCurrent: Boolean read GetAbortCurrent write SetAbortCurrent;
    property Account: string read GetAccount write SetAccount;
    property ActivePortRangeEnd: Integer read GetActivePortRangeEnd write SetActivePortRangeEnd;
    property ActivePortRangeStart: Integer read GetActivePortRangeStart write SetActivePortRangeStart;
    property AllocateSize: LongWord read GetAllocateSize write SetAllocateSize;
    property AllowMlsd: Boolean read GetAllowMlsd write SetAllowMlsd;
    property CurBytesReceived: LongWord read GetCurBytesReceived;
    property CurBytesReceived64: Int64 read GetCurBytesReceived64;
    property CurBytesReceivedStr: string read GetCurBytesReceivedStr;
    property CurBytesSent: LongWord read GetCurBytesSent;
    property CurBytesSent64: Int64 read GetCurBytesSent64;
    property CurBytesSentStr: string read GetCurBytesSentStr;
    property AuthSsl: Boolean read GetAuthSsl write SetAuthSsl;
    property AuthTls: Boolean read GetAuthTls write SetAuthTls;
    property AutoFeat: Boolean read GetAutoFeat write SetAutoFeat;
    property AutoFix: Boolean read GetAutoFix write SetAutoFix;
    property AutoGetSizeForProgress: Boolean read GetAutoGetSizeForProgress write SetAutoGetSizeForProgress;
    property AutoOptsUtf8: Boolean read GetAutoOptsUtf8 write SetAutoOptsUtf8;
    property AutoSetUseEpsv: Boolean read GetAutoSetUseEpsv write SetAutoSetUseEpsv;
    property AutoSyst: Boolean read GetAutoSyst write SetAutoSyst;
    property AutoXcrc: Boolean read GetAutoXcrc write SetAutoXcrc;
    property BandwidthThrottleDown: Integer read GetBandwidthThrottleDown write SetBandwidthThrottleDown;
    property BandwidthThrottleUp: Integer read GetBandwidthThrottleUp write SetBandwidthThrottleUp;
    property ClientIpAddress: string read GetClientIpAddress write SetClientIpAddress;
    property CommandCharset: string read GetCommandCharset write SetCommandCharset;
    property ConnectFailReason: Integer read GetConnectFailReason;
    property ConnectTimeout: Integer read GetConnectTimeout write SetConnectTimeout;
    property ConnectVerified: Boolean read GetConnectVerified;
    property CrlfMode: Integer read GetCrlfMode write SetCrlfMode;
    property DataProtection: string read GetDataProtection write SetDataProtection;
    property DirListingCharset: string read GetDirListingCharset write SetDirListingCharset;
    property DownloadTransferRate: Integer read GetDownloadTransferRate;
    property ForcePortIpAddress: string read GetForcePortIpAddress write SetForcePortIpAddress;
    property Greeting: string read GetGreeting;
    property HasModeZ: Boolean read GetHasModeZ;
    property HeartbeatMs: Integer read GetHeartbeatMs write SetHeartbeatMs;
    property Hostname: string read GetHostname write SetHostname;
    property HttpProxyAuthMethod: string read GetHttpProxyAuthMethod write SetHttpProxyAuthMethod;
    property HttpProxyDomain: string read GetHttpProxyDomain write SetHttpProxyDomain;
    property HttpProxyHostname: string read GetHttpProxyHostname write SetHttpProxyHostname;
    property HttpProxyPassword: string read GetHttpProxyPassword write SetHttpProxyPassword;
    property HttpProxyPort: Integer read GetHttpProxyPort write SetHttpProxyPort;
    property HttpProxyUsername: string read GetHttpProxyUsername write SetHttpProxyUsername;
    property IdleTimeoutMs: Integer read GetIdleTimeoutMs write SetIdleTimeoutMs;
    property IsConnected: Boolean read GetIsConnected;
    property KeepSessionLog: Boolean read GetKeepSessionLog write SetKeepSessionLog;
    property LastReply: string read GetLastReply;
    property ListPattern: string read GetListPattern write SetListPattern;
    property LoginVerified: Boolean read GetLoginVerified;
    property PartialTransfer: Boolean read GetPartialTransfer;
    property Passive: Boolean read GetPassive write SetPassive;
    property PassiveUseHostAddr: Boolean read GetPassiveUseHostAddr write SetPassiveUseHostAddr;
    property Password: string read GetPassword write SetPassword;
    property PercentDoneScale: Integer read GetPercentDoneScale write SetPercentDoneScale;
    property Port: Integer read GetPort write SetPort;
    property PreferIpv6: Boolean read GetPreferIpv6 write SetPreferIpv6;
    property PreferNlst: Boolean read GetPreferNlst write SetPreferNlst;
    property ProgressMonSize: Integer read GetProgressMonSize write SetProgressMonSize;
    property ProgressMonSize64: Int64 read GetProgressMonSize64 write SetProgressMonSize64;
    property ProxyHostname: string read GetProxyHostname write SetProxyHostname;
    property ProxyMethod: Integer read GetProxyMethod write SetProxyMethod;
    property ProxyPassword: string read GetProxyPassword write SetProxyPassword;
    property ProxyPort: Integer read GetProxyPort write SetProxyPort;
    property ProxyUsername: string read GetProxyUsername write SetProxyUsername;
    property ReadTimeout: Integer read GetReadTimeout write SetReadTimeout;
    property RequireSslCertVerify: Boolean read GetRequireSslCertVerify write SetRequireSslCertVerify;
    property RestartNext: Boolean read GetRestartNext write SetRestartNext;
    property SessionLog: string read GetSessionLog;
    property SoRcvBuf: Integer read GetSoRcvBuf write SetSoRcvBuf;
    property SoSndBuf: Integer read GetSoSndBuf write SetSoSndBuf;
    property SocksHostname: string read GetSocksHostname write SetSocksHostname;
    property SocksPassword: string read GetSocksPassword write SetSocksPassword;
    property SocksPort: Integer read GetSocksPort write SetSocksPort;
    property SocksUsername: string read GetSocksUsername write SetSocksUsername;
    property SocksVersion: Integer read GetSocksVersion write SetSocksVersion;
    property Ssl: Boolean read GetSsl write SetSsl;
    property SslAllowedCiphers: string read GetSslAllowedCiphers write SetSslAllowedCiphers;
    property SslProtocol: string read GetSslProtocol write SetSslProtocol;
    property SslServerCertVerified: Boolean read GetSslServerCertVerified;
    property SyncMustMatch: string read GetSyncMustMatch write SetSyncMustMatch;
    property SyncMustNotMatch: string read GetSyncMustNotMatch write SetSyncMustNotMatch;
    property SyncPreview: string read GetSyncPreview;
    property TlsCipherSuite: string read GetTlsCipherSuite;
    property TlsPinSet: string read GetTlsPinSet write SetTlsPinSet;
    property TlsVersion: string read GetTlsVersion;
    property UploadTransferRate: Integer read GetUploadTransferRate;
    property UseEpsv: Boolean read GetUseEpsv write SetUseEpsv;
    property Username: string read GetUsername write SetUsername;
    property LargeFileMeasures: Boolean read GetLargeFileMeasures write SetLargeFileMeasures;
    property SyncMustMatchDir: string read GetSyncMustMatchDir write SetSyncMustMatchDir;
    property SyncMustNotMatchDir: string read GetSyncMustNotMatchDir write SetSyncMustNotMatchDir;
    property SyncCreateAllLocalDirs: Boolean read GetSyncCreateAllLocalDirs write SetSyncCreateAllLocalDirs;
    property UncommonOptions: string read GetUncommonOptions write SetUncommonOptions;
    property ListOption: string read GetListOption write SetListOption;
    property EnableSecrets: Boolean read GetEnableSecrets write SetEnableSecrets;

    { Event callbacks.  Return True from OnAbortCheck / OnPercentDone
      to abort the running method.  Callbacks are invoked on the
      thread that called the Chilkat method.  The HeartbeatMs
      property controls the AbortCheck frequency. }
    property OnAbortCheck: TChilkatAbortCheckEvent read FOnAbortCheck write SetOnAbortCheck;
    property OnPercentDone: TChilkatPercentDoneEvent read FOnPercentDone write SetOnPercentDone;
    property OnProgressInfo: TChilkatProgressInfoEvent read FOnProgressInfo write SetOnProgressInfo;

    function  AppendFile(const localFilePath: string; const remoteFilePath: string): Boolean;
    function  AppendFileFromTextData(const remoteFilename: string; const textData: string; const charset: string): Boolean;
    function  ChangeRemoteDir(const remoteDirPath: string): Boolean;
    function  CheckConnection: Boolean;
    function  ClearControlChannel: Boolean;
    procedure ClearDirCache;
    procedure ClearSessionLog;
    function  Connect: Boolean;
    function  ConnectOnly: Boolean;
    function  ConvertToTls: Boolean;
    function  CreatePlan(const localDir: string): string;
    function  CreateRemoteDir(const remoteDirPath: string): Boolean;
    function  DeleteMatching(const remotePattern: string): Integer;
    function  DeleteRemoteFile(const remoteFilePath: string): Boolean;
    function  DeleteTree: Boolean;
    function  DirTreeXml: string;
    function  Disconnect: Boolean;
    function  DownloadTree(const localRoot: string): Boolean;
    function  Feat: string;
    function  GetCreateTimeByNameStr(const filename: string): string;
    function  GetCreateTimeStr(index: Integer): string;
    function  GetCurrentRemoteDir: string;
    function  GetDirCount: Integer;
    function  GetFile(const remoteFilePath: string; const localFilePath: string): Boolean;
    function  GetFilename(index: Integer): string;
    function  GetGroup(index: Integer): string;
    function  GetIsDirectory(index: Integer): Boolean;
    function  GetIsSymbolicLink(index: Integer): Boolean;
    function  GetLastModifiedTimeByNameStr(const filename: string): string;
    function  GetLastModifiedTimeStr(index: Integer): string;
    function  GetOwner(index: Integer): string;
    function  GetPermType(index: Integer): string;
    function  GetPermissions(index: Integer): string;
    function  GetRemoteFileTextC(const remoteFilename: string; const charset: string): string;
    function  GetRemoteFileTextData(const remoteFilename: string): string;
    function  GetSize(index: Integer): Integer;
    function  GetSize64(index: Integer): Int64;
    function  GetSizeByName(const filename: string): Integer;
    function  GetSizeByName64(const filename: string): Int64;
    function  GetSizeStr(index: Integer): string;
    function  GetSizeStrByName(const filename: string): string;
    function  GetTextDirListing(const pattern: string): string;
    function  GetXmlDirListing(const pattern: string): string;
    function  LargeFileUpload(const localPath: string; const remotePath: string; chunkSize: Integer): Boolean;
    function  LoginAfterConnectOnly: Boolean;
    function  MGetFiles(const remotePattern: string; const localDir: string): Integer;
    function  MPutFiles(const pattern: string): Integer;
    function  NlstXml(const remoteDirPattern: string): string;
    function  Noop: Boolean;
    function  PutFile(const localFilePath: string; const remoteFilePath: string): Boolean;
    function  PutFileFromTextData(const remoteFilename: string; const textData: string; const charset: string): Boolean;
    function  PutPlan(const plan: string; const alreadyDoneFilename: string): Boolean;
    function  PutTree(const localDir: string): Boolean;
    function  Quote(const cmd: string): Boolean;
    function  RemoveRemoteDir(const remoteDirPath: string): Boolean;
    function  RenameRemoteFile(const existingRemoteFilePath: string; const newRemoteFilePath: string): Boolean;
    function  SendCommand(const cmd: string): string;
    function  SetModeZ: Boolean;
    procedure SetOldestDateStr(const oldestDateTimeStr: string);
    function  SetOption(const option: string): Boolean;
    function  SetRemoteFileDateTimeStr(const dateTimeStr: string; const remoteFilename: string): Boolean;
    function  SetRemoteFileDt(dt: TChilkatBase; const remoteFilename: string): Boolean;
    procedure SetSslCertRequirement(const reqName: string; const reqValue: string);
    function  SetSslClientCert(cert: TChilkatBase): Boolean;
    function  SetSslClientCertPem(const pemDataOrFilename: string; const pemPassword: string): Boolean;
    function  SetSslClientCertPfx(const pfxFilename: string; const pfxPassword: string): Boolean;
    function  SetTypeAscii: Boolean;
    function  SetTypeBinary: Boolean;
    function  Site(const siteCommand: string): Boolean;
    procedure SleepMs(millisec: Integer);
    function  Stat: string;
    function  SyncDeleteRemote(const localRoot: string): Boolean;
    function  SyncLocalDir(const localRoot: string; mode: Integer): Boolean;
    function  SyncLocalTree(const localRoot: string; mode: Integer): Boolean;
    function  SyncRemoteTree(const localRoot: string; mode: Integer): Boolean;
    function  SyncRemoteTree2(const localDirPath: string; mode: Integer; bDescend: Boolean; bPreviewOnly: Boolean): Boolean;
    function  Syst: string;
    function  GetFileBd(const remoteFilePath: string; binData: TChilkatBase): Boolean;
    function  GetFileSb(const remoteFilePath: string; const charset: string; sb: TChilkatBase): Boolean;
    function  PutFileBd(binData: TChilkatBase; const remoteFilePath: string): Boolean;
    function  PutFileSb(sb: TChilkatBase; const charset: string; includeBom: Boolean; const remoteFilePath: string): Boolean;
    function  GetFileToStream(const remoteFilePath: string; toStream: TChilkatBase): Boolean;
    function  SetSecurePassword(password: TChilkatBase): Boolean;
    procedure GetSyncedFiles(strTable: TChilkatBase);
    function  GetServerCert(cert: TChilkatBase): Boolean;
    function  AppendFileBd(const remoteFilename: string; bd: TChilkatBase): Boolean;
    function  AppendFileSb(const remoteFilename: string; sb: TChilkatBase; const charset: string): Boolean;
    procedure GetLastJsonData(json: TChilkatBase);
  end;

implementation

uses
  CkDllLoader,
  Chilkat.Utils;

{ ---- C bridge function pointer types ---- }
type
  TCkFtp2_Create  = function(): Pointer; cdecl;
  TCkFtp2_Dispose = procedure(handle: Pointer); cdecl;
  TCkBridgeAbortCheckCb   = function(userData: Pointer): Integer; cdecl;
  TCkBridgePercentDoneCb  = function(pctDone: Integer; userData: Pointer): Integer; cdecl;
  TCkBridgeProgressInfoCb = procedure(name: PAnsiChar; value: PAnsiChar; userData: Pointer); cdecl;
  TCkFtp2_SetAbortCheckCallback   = procedure(handle: Pointer; cb: TCkBridgeAbortCheckCb; userData: Pointer); cdecl;
  TCkFtp2_SetPercentDoneCallback  = procedure(handle: Pointer; cb: TCkBridgePercentDoneCb; userData: Pointer); cdecl;
  TCkFtp2_SetProgressInfoCallback = procedure(handle: Pointer; cb: TCkBridgeProgressInfoCb; userData: Pointer); cdecl;
  TCkFtp2_get_LastErrorHtml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_LastErrorText = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_LastErrorXml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_Version = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_DebugLogFilePath = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_DebugLogFilePath = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_VerboseLogging = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_VerboseLogging = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_LastMethodSuccess = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_LastMethodSuccess = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AbortCurrent = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AbortCurrent = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_Account = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_Account = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_ActivePortRangeEnd = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_ActivePortRangeEnd = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_ActivePortRangeStart = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_ActivePortRangeStart = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_AllocateSize = function(handle: Pointer): LongWord; cdecl;
  TCkFtp2_put_AllocateSize = procedure(handle: Pointer; value: LongWord); cdecl;
  TCkFtp2_get_AllowMlsd = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AllowMlsd = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_CurBytesReceived = function(handle: Pointer): LongWord; cdecl;
  TCkFtp2_get_CurBytesReceived64 = function(handle: Pointer): Int64; cdecl;
  TCkFtp2_get_CurBytesReceivedStr = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_CurBytesSent = function(handle: Pointer): LongWord; cdecl;
  TCkFtp2_get_CurBytesSent64 = function(handle: Pointer): Int64; cdecl;
  TCkFtp2_get_CurBytesSentStr = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_AuthSsl = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AuthSsl = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AuthTls = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AuthTls = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AutoFeat = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AutoFeat = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AutoFix = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AutoFix = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AutoGetSizeForProgress = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AutoGetSizeForProgress = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AutoOptsUtf8 = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AutoOptsUtf8 = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AutoSetUseEpsv = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AutoSetUseEpsv = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AutoSyst = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AutoSyst = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_AutoXcrc = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_AutoXcrc = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_BandwidthThrottleDown = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_BandwidthThrottleDown = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_BandwidthThrottleUp = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_BandwidthThrottleUp = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_ClientIpAddress = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_ClientIpAddress = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_CommandCharset = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_CommandCharset = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_ConnectFailReason = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_get_ConnectTimeout = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_ConnectTimeout = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_ConnectVerified = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_get_CrlfMode = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_CrlfMode = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_DataProtection = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_DataProtection = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_DirListingCharset = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_DirListingCharset = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_DownloadTransferRate = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_get_ForcePortIpAddress = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_ForcePortIpAddress = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_Greeting = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_HasModeZ = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_get_HeartbeatMs = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_HeartbeatMs = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_Hostname = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_Hostname = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_HttpProxyAuthMethod = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_HttpProxyAuthMethod = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_HttpProxyDomain = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_HttpProxyDomain = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_HttpProxyHostname = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_HttpProxyHostname = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_HttpProxyPassword = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_HttpProxyPassword = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_HttpProxyPort = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_HttpProxyPort = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_HttpProxyUsername = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_HttpProxyUsername = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_IdleTimeoutMs = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_IdleTimeoutMs = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_IsConnected = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_get_KeepSessionLog = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_KeepSessionLog = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_LastReply = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_ListPattern = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_ListPattern = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_LoginVerified = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_get_PartialTransfer = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_get_Passive = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_Passive = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_PassiveUseHostAddr = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_PassiveUseHostAddr = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_Password = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_Password = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_PercentDoneScale = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_PercentDoneScale = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_Port = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_Port = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_PreferIpv6 = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_PreferIpv6 = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_PreferNlst = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_PreferNlst = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_ProgressMonSize = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_ProgressMonSize = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_ProgressMonSize64 = function(handle: Pointer): Int64; cdecl;
  TCkFtp2_put_ProgressMonSize64 = procedure(handle: Pointer; value: Int64); cdecl;
  TCkFtp2_get_ProxyHostname = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_ProxyHostname = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_ProxyMethod = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_ProxyMethod = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_ProxyPassword = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_ProxyPassword = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_ProxyPort = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_ProxyPort = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_ProxyUsername = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_ProxyUsername = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_ReadTimeout = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_ReadTimeout = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_RequireSslCertVerify = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_RequireSslCertVerify = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_RestartNext = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_RestartNext = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_SessionLog = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_SoRcvBuf = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_SoRcvBuf = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_SoSndBuf = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_SoSndBuf = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_SocksHostname = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SocksHostname = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SocksPassword = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SocksPassword = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SocksPort = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_SocksPort = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_SocksUsername = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SocksUsername = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SocksVersion = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_put_SocksVersion = procedure(handle: Pointer; value: Integer); cdecl;
  TCkFtp2_get_Ssl = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_Ssl = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_SslAllowedCiphers = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SslAllowedCiphers = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SslProtocol = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SslProtocol = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SslServerCertVerified = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_get_SyncMustMatch = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SyncMustMatch = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SyncMustNotMatch = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SyncMustNotMatch = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SyncPreview = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_TlsCipherSuite = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_TlsPinSet = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_TlsPinSet = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_TlsVersion = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_get_UploadTransferRate = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_get_UseEpsv = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_UseEpsv = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_Username = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_Username = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_LargeFileMeasures = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_LargeFileMeasures = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_SyncMustMatchDir = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SyncMustMatchDir = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SyncMustNotMatchDir = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_SyncMustNotMatchDir = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_SyncCreateAllLocalDirs = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_SyncCreateAllLocalDirs = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_get_UncommonOptions = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_UncommonOptions = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_ListOption = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_put_ListOption = procedure(handle: Pointer; value: PAnsiChar); cdecl;
  TCkFtp2_get_EnableSecrets = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_put_EnableSecrets = procedure(handle: Pointer; value: LongBool); cdecl;
  TCkFtp2_AppendFile = function(handle: Pointer; localFilePath: PAnsiChar; remoteFilePath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_AppendFileFromTextData = function(handle: Pointer; remoteFilename: PAnsiChar; textData: PAnsiChar; charset: PAnsiChar): LongBool; cdecl;
  TCkFtp2_ChangeRemoteDir = function(handle: Pointer; remoteDirPath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_CheckConnection = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_ClearControlChannel = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_ClearDirCache = procedure(handle: Pointer); cdecl;
  TCkFtp2_ClearSessionLog = procedure(handle: Pointer); cdecl;
  TCkFtp2_Connect = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_ConnectOnly = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_ConvertToTls = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_CreatePlan = function(handle: Pointer; localDir: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_CreateRemoteDir = function(handle: Pointer; remoteDirPath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_DeleteMatching = function(handle: Pointer; remotePattern: PAnsiChar): Integer; cdecl;
  TCkFtp2_DeleteRemoteFile = function(handle: Pointer; remoteFilePath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_DeleteTree = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_DirTreeXml = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_Disconnect = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_DownloadTree = function(handle: Pointer; localRoot: PAnsiChar): LongBool; cdecl;
  TCkFtp2_Feat = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_GetCreateTimeByNameStr = function(handle: Pointer; filename: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_GetCreateTimeStr = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkFtp2_GetCurrentRemoteDir = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_GetDirCount = function(handle: Pointer): Integer; cdecl;
  TCkFtp2_GetFile = function(handle: Pointer; remoteFilePath: PAnsiChar; localFilePath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_GetFilename = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkFtp2_GetGroup = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkFtp2_GetIsDirectory = function(handle: Pointer; index: Integer): LongBool; cdecl;
  TCkFtp2_GetIsSymbolicLink = function(handle: Pointer; index: Integer): LongBool; cdecl;
  TCkFtp2_GetLastModifiedTimeByNameStr = function(handle: Pointer; filename: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_GetLastModifiedTimeStr = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkFtp2_GetOwner = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkFtp2_GetPermType = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkFtp2_GetPermissions = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkFtp2_GetRemoteFileTextC = function(handle: Pointer; remoteFilename: PAnsiChar; charset: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_GetRemoteFileTextData = function(handle: Pointer; remoteFilename: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_GetSize = function(handle: Pointer; index: Integer): Integer; cdecl;
  TCkFtp2_GetSize64 = function(handle: Pointer; index: Integer): Int64; cdecl;
  TCkFtp2_GetSizeByName = function(handle: Pointer; filename: PAnsiChar): Integer; cdecl;
  TCkFtp2_GetSizeByName64 = function(handle: Pointer; filename: PAnsiChar): Int64; cdecl;
  TCkFtp2_GetSizeStr = function(handle: Pointer; index: Integer): PAnsiChar; cdecl;
  TCkFtp2_GetSizeStrByName = function(handle: Pointer; filename: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_GetTextDirListing = function(handle: Pointer; pattern: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_GetXmlDirListing = function(handle: Pointer; pattern: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_LargeFileUpload = function(handle: Pointer; localPath: PAnsiChar; remotePath: PAnsiChar; chunkSize: Integer): LongBool; cdecl;
  TCkFtp2_LoginAfterConnectOnly = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_MGetFiles = function(handle: Pointer; remotePattern: PAnsiChar; localDir: PAnsiChar): Integer; cdecl;
  TCkFtp2_MPutFiles = function(handle: Pointer; pattern: PAnsiChar): Integer; cdecl;
  TCkFtp2_NlstXml = function(handle: Pointer; remoteDirPattern: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_Noop = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_PutFile = function(handle: Pointer; localFilePath: PAnsiChar; remoteFilePath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_PutFileFromTextData = function(handle: Pointer; remoteFilename: PAnsiChar; textData: PAnsiChar; charset: PAnsiChar): LongBool; cdecl;
  TCkFtp2_PutPlan = function(handle: Pointer; plan: PAnsiChar; alreadyDoneFilename: PAnsiChar): LongBool; cdecl;
  TCkFtp2_PutTree = function(handle: Pointer; localDir: PAnsiChar): LongBool; cdecl;
  TCkFtp2_Quote = function(handle: Pointer; cmd: PAnsiChar): LongBool; cdecl;
  TCkFtp2_RemoveRemoteDir = function(handle: Pointer; remoteDirPath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_RenameRemoteFile = function(handle: Pointer; existingRemoteFilePath: PAnsiChar; newRemoteFilePath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_SendCommand = function(handle: Pointer; cmd: PAnsiChar): PAnsiChar; cdecl;
  TCkFtp2_SetModeZ = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_SetOldestDateStr = procedure(handle: Pointer; oldestDateTimeStr: PAnsiChar); cdecl;
  TCkFtp2_SetOption = function(handle: Pointer; option: PAnsiChar): LongBool; cdecl;
  TCkFtp2_SetRemoteFileDateTimeStr = function(handle: Pointer; dateTimeStr: PAnsiChar; remoteFilename: PAnsiChar): LongBool; cdecl;
  TCkFtp2_SetRemoteFileDt = function(handle: Pointer; dt: Pointer; remoteFilename: PAnsiChar): LongBool; cdecl;
  TCkFtp2_SetSslCertRequirement = procedure(handle: Pointer; reqName: PAnsiChar; reqValue: PAnsiChar); cdecl;
  TCkFtp2_SetSslClientCert = function(handle: Pointer; cert: Pointer): LongBool; cdecl;
  TCkFtp2_SetSslClientCertPem = function(handle: Pointer; pemDataOrFilename: PAnsiChar; pemPassword: PAnsiChar): LongBool; cdecl;
  TCkFtp2_SetSslClientCertPfx = function(handle: Pointer; pfxFilename: PAnsiChar; pfxPassword: PAnsiChar): LongBool; cdecl;
  TCkFtp2_SetTypeAscii = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_SetTypeBinary = function(handle: Pointer): LongBool; cdecl;
  TCkFtp2_Site = function(handle: Pointer; siteCommand: PAnsiChar): LongBool; cdecl;
  TCkFtp2_SleepMs = procedure(handle: Pointer; millisec: Integer); cdecl;
  TCkFtp2_Stat = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_SyncDeleteRemote = function(handle: Pointer; localRoot: PAnsiChar): LongBool; cdecl;
  TCkFtp2_SyncLocalDir = function(handle: Pointer; localRoot: PAnsiChar; mode: Integer): LongBool; cdecl;
  TCkFtp2_SyncLocalTree = function(handle: Pointer; localRoot: PAnsiChar; mode: Integer): LongBool; cdecl;
  TCkFtp2_SyncRemoteTree = function(handle: Pointer; localRoot: PAnsiChar; mode: Integer): LongBool; cdecl;
  TCkFtp2_SyncRemoteTree2 = function(handle: Pointer; localDirPath: PAnsiChar; mode: Integer; bDescend: LongBool; bPreviewOnly: LongBool): LongBool; cdecl;
  TCkFtp2_Syst = function(handle: Pointer): PAnsiChar; cdecl;
  TCkFtp2_GetFileBd = function(handle: Pointer; remoteFilePath: PAnsiChar; binData: Pointer): LongBool; cdecl;
  TCkFtp2_GetFileSb = function(handle: Pointer; remoteFilePath: PAnsiChar; charset: PAnsiChar; sb: Pointer): LongBool; cdecl;
  TCkFtp2_PutFileBd = function(handle: Pointer; binData: Pointer; remoteFilePath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_PutFileSb = function(handle: Pointer; sb: Pointer; charset: PAnsiChar; includeBom: LongBool; remoteFilePath: PAnsiChar): LongBool; cdecl;
  TCkFtp2_GetFileToStream = function(handle: Pointer; remoteFilePath: PAnsiChar; toStream: Pointer): LongBool; cdecl;
  TCkFtp2_SetSecurePassword = function(handle: Pointer; password: Pointer): LongBool; cdecl;
  TCkFtp2_GetSyncedFiles = procedure(handle: Pointer; strTable: Pointer); cdecl;
  TCkFtp2_GetServerCert = function(handle: Pointer; cert: Pointer): LongBool; cdecl;
  TCkFtp2_AppendFileBd = function(handle: Pointer; remoteFilename: PAnsiChar; bd: Pointer): LongBool; cdecl;
  TCkFtp2_AppendFileSb = function(handle: Pointer; remoteFilename: PAnsiChar; sb: Pointer; charset: PAnsiChar): LongBool; cdecl;
  TCkFtp2_GetLastJsonData = procedure(handle: Pointer; json: Pointer); cdecl;

{ ---- C bridge function pointer variables ---- }
var
  CkFtp2_Create:  TCkFtp2_Create  = nil;
  CkFtp2_Dispose: TCkFtp2_Dispose = nil;
  CkFtp2_SetAbortCheckCallback:   TCkFtp2_SetAbortCheckCallback   = nil;
  CkFtp2_SetPercentDoneCallback:  TCkFtp2_SetPercentDoneCallback  = nil;
  CkFtp2_SetProgressInfoCallback: TCkFtp2_SetProgressInfoCallback = nil;
  CkFtp2_get_LastErrorHtml: TCkFtp2_get_LastErrorHtml = nil;
  CkFtp2_get_LastErrorText: TCkFtp2_get_LastErrorText = nil;
  CkFtp2_get_LastErrorXml: TCkFtp2_get_LastErrorXml = nil;
  CkFtp2_get_Version: TCkFtp2_get_Version = nil;
  CkFtp2_get_DebugLogFilePath: TCkFtp2_get_DebugLogFilePath = nil;
  CkFtp2_put_DebugLogFilePath: TCkFtp2_put_DebugLogFilePath = nil;
  CkFtp2_get_VerboseLogging: TCkFtp2_get_VerboseLogging = nil;
  CkFtp2_put_VerboseLogging: TCkFtp2_put_VerboseLogging = nil;
  CkFtp2_get_LastMethodSuccess: TCkFtp2_get_LastMethodSuccess = nil;
  CkFtp2_put_LastMethodSuccess: TCkFtp2_put_LastMethodSuccess = nil;
  CkFtp2_get_AbortCurrent: TCkFtp2_get_AbortCurrent = nil;
  CkFtp2_put_AbortCurrent: TCkFtp2_put_AbortCurrent = nil;
  CkFtp2_get_Account: TCkFtp2_get_Account = nil;
  CkFtp2_put_Account: TCkFtp2_put_Account = nil;
  CkFtp2_get_ActivePortRangeEnd: TCkFtp2_get_ActivePortRangeEnd = nil;
  CkFtp2_put_ActivePortRangeEnd: TCkFtp2_put_ActivePortRangeEnd = nil;
  CkFtp2_get_ActivePortRangeStart: TCkFtp2_get_ActivePortRangeStart = nil;
  CkFtp2_put_ActivePortRangeStart: TCkFtp2_put_ActivePortRangeStart = nil;
  CkFtp2_get_AllocateSize: TCkFtp2_get_AllocateSize = nil;
  CkFtp2_put_AllocateSize: TCkFtp2_put_AllocateSize = nil;
  CkFtp2_get_AllowMlsd: TCkFtp2_get_AllowMlsd = nil;
  CkFtp2_put_AllowMlsd: TCkFtp2_put_AllowMlsd = nil;
  CkFtp2_get_CurBytesReceived: TCkFtp2_get_CurBytesReceived = nil;
  CkFtp2_get_CurBytesReceived64: TCkFtp2_get_CurBytesReceived64 = nil;
  CkFtp2_get_CurBytesReceivedStr: TCkFtp2_get_CurBytesReceivedStr = nil;
  CkFtp2_get_CurBytesSent: TCkFtp2_get_CurBytesSent = nil;
  CkFtp2_get_CurBytesSent64: TCkFtp2_get_CurBytesSent64 = nil;
  CkFtp2_get_CurBytesSentStr: TCkFtp2_get_CurBytesSentStr = nil;
  CkFtp2_get_AuthSsl: TCkFtp2_get_AuthSsl = nil;
  CkFtp2_put_AuthSsl: TCkFtp2_put_AuthSsl = nil;
  CkFtp2_get_AuthTls: TCkFtp2_get_AuthTls = nil;
  CkFtp2_put_AuthTls: TCkFtp2_put_AuthTls = nil;
  CkFtp2_get_AutoFeat: TCkFtp2_get_AutoFeat = nil;
  CkFtp2_put_AutoFeat: TCkFtp2_put_AutoFeat = nil;
  CkFtp2_get_AutoFix: TCkFtp2_get_AutoFix = nil;
  CkFtp2_put_AutoFix: TCkFtp2_put_AutoFix = nil;
  CkFtp2_get_AutoGetSizeForProgress: TCkFtp2_get_AutoGetSizeForProgress = nil;
  CkFtp2_put_AutoGetSizeForProgress: TCkFtp2_put_AutoGetSizeForProgress = nil;
  CkFtp2_get_AutoOptsUtf8: TCkFtp2_get_AutoOptsUtf8 = nil;
  CkFtp2_put_AutoOptsUtf8: TCkFtp2_put_AutoOptsUtf8 = nil;
  CkFtp2_get_AutoSetUseEpsv: TCkFtp2_get_AutoSetUseEpsv = nil;
  CkFtp2_put_AutoSetUseEpsv: TCkFtp2_put_AutoSetUseEpsv = nil;
  CkFtp2_get_AutoSyst: TCkFtp2_get_AutoSyst = nil;
  CkFtp2_put_AutoSyst: TCkFtp2_put_AutoSyst = nil;
  CkFtp2_get_AutoXcrc: TCkFtp2_get_AutoXcrc = nil;
  CkFtp2_put_AutoXcrc: TCkFtp2_put_AutoXcrc = nil;
  CkFtp2_get_BandwidthThrottleDown: TCkFtp2_get_BandwidthThrottleDown = nil;
  CkFtp2_put_BandwidthThrottleDown: TCkFtp2_put_BandwidthThrottleDown = nil;
  CkFtp2_get_BandwidthThrottleUp: TCkFtp2_get_BandwidthThrottleUp = nil;
  CkFtp2_put_BandwidthThrottleUp: TCkFtp2_put_BandwidthThrottleUp = nil;
  CkFtp2_get_ClientIpAddress: TCkFtp2_get_ClientIpAddress = nil;
  CkFtp2_put_ClientIpAddress: TCkFtp2_put_ClientIpAddress = nil;
  CkFtp2_get_CommandCharset: TCkFtp2_get_CommandCharset = nil;
  CkFtp2_put_CommandCharset: TCkFtp2_put_CommandCharset = nil;
  CkFtp2_get_ConnectFailReason: TCkFtp2_get_ConnectFailReason = nil;
  CkFtp2_get_ConnectTimeout: TCkFtp2_get_ConnectTimeout = nil;
  CkFtp2_put_ConnectTimeout: TCkFtp2_put_ConnectTimeout = nil;
  CkFtp2_get_ConnectVerified: TCkFtp2_get_ConnectVerified = nil;
  CkFtp2_get_CrlfMode: TCkFtp2_get_CrlfMode = nil;
  CkFtp2_put_CrlfMode: TCkFtp2_put_CrlfMode = nil;
  CkFtp2_get_DataProtection: TCkFtp2_get_DataProtection = nil;
  CkFtp2_put_DataProtection: TCkFtp2_put_DataProtection = nil;
  CkFtp2_get_DirListingCharset: TCkFtp2_get_DirListingCharset = nil;
  CkFtp2_put_DirListingCharset: TCkFtp2_put_DirListingCharset = nil;
  CkFtp2_get_DownloadTransferRate: TCkFtp2_get_DownloadTransferRate = nil;
  CkFtp2_get_ForcePortIpAddress: TCkFtp2_get_ForcePortIpAddress = nil;
  CkFtp2_put_ForcePortIpAddress: TCkFtp2_put_ForcePortIpAddress = nil;
  CkFtp2_get_Greeting: TCkFtp2_get_Greeting = nil;
  CkFtp2_get_HasModeZ: TCkFtp2_get_HasModeZ = nil;
  CkFtp2_get_HeartbeatMs: TCkFtp2_get_HeartbeatMs = nil;
  CkFtp2_put_HeartbeatMs: TCkFtp2_put_HeartbeatMs = nil;
  CkFtp2_get_Hostname: TCkFtp2_get_Hostname = nil;
  CkFtp2_put_Hostname: TCkFtp2_put_Hostname = nil;
  CkFtp2_get_HttpProxyAuthMethod: TCkFtp2_get_HttpProxyAuthMethod = nil;
  CkFtp2_put_HttpProxyAuthMethod: TCkFtp2_put_HttpProxyAuthMethod = nil;
  CkFtp2_get_HttpProxyDomain: TCkFtp2_get_HttpProxyDomain = nil;
  CkFtp2_put_HttpProxyDomain: TCkFtp2_put_HttpProxyDomain = nil;
  CkFtp2_get_HttpProxyHostname: TCkFtp2_get_HttpProxyHostname = nil;
  CkFtp2_put_HttpProxyHostname: TCkFtp2_put_HttpProxyHostname = nil;
  CkFtp2_get_HttpProxyPassword: TCkFtp2_get_HttpProxyPassword = nil;
  CkFtp2_put_HttpProxyPassword: TCkFtp2_put_HttpProxyPassword = nil;
  CkFtp2_get_HttpProxyPort: TCkFtp2_get_HttpProxyPort = nil;
  CkFtp2_put_HttpProxyPort: TCkFtp2_put_HttpProxyPort = nil;
  CkFtp2_get_HttpProxyUsername: TCkFtp2_get_HttpProxyUsername = nil;
  CkFtp2_put_HttpProxyUsername: TCkFtp2_put_HttpProxyUsername = nil;
  CkFtp2_get_IdleTimeoutMs: TCkFtp2_get_IdleTimeoutMs = nil;
  CkFtp2_put_IdleTimeoutMs: TCkFtp2_put_IdleTimeoutMs = nil;
  CkFtp2_get_IsConnected: TCkFtp2_get_IsConnected = nil;
  CkFtp2_get_KeepSessionLog: TCkFtp2_get_KeepSessionLog = nil;
  CkFtp2_put_KeepSessionLog: TCkFtp2_put_KeepSessionLog = nil;
  CkFtp2_get_LastReply: TCkFtp2_get_LastReply = nil;
  CkFtp2_get_ListPattern: TCkFtp2_get_ListPattern = nil;
  CkFtp2_put_ListPattern: TCkFtp2_put_ListPattern = nil;
  CkFtp2_get_LoginVerified: TCkFtp2_get_LoginVerified = nil;
  CkFtp2_get_PartialTransfer: TCkFtp2_get_PartialTransfer = nil;
  CkFtp2_get_Passive: TCkFtp2_get_Passive = nil;
  CkFtp2_put_Passive: TCkFtp2_put_Passive = nil;
  CkFtp2_get_PassiveUseHostAddr: TCkFtp2_get_PassiveUseHostAddr = nil;
  CkFtp2_put_PassiveUseHostAddr: TCkFtp2_put_PassiveUseHostAddr = nil;
  CkFtp2_get_Password: TCkFtp2_get_Password = nil;
  CkFtp2_put_Password: TCkFtp2_put_Password = nil;
  CkFtp2_get_PercentDoneScale: TCkFtp2_get_PercentDoneScale = nil;
  CkFtp2_put_PercentDoneScale: TCkFtp2_put_PercentDoneScale = nil;
  CkFtp2_get_Port: TCkFtp2_get_Port = nil;
  CkFtp2_put_Port: TCkFtp2_put_Port = nil;
  CkFtp2_get_PreferIpv6: TCkFtp2_get_PreferIpv6 = nil;
  CkFtp2_put_PreferIpv6: TCkFtp2_put_PreferIpv6 = nil;
  CkFtp2_get_PreferNlst: TCkFtp2_get_PreferNlst = nil;
  CkFtp2_put_PreferNlst: TCkFtp2_put_PreferNlst = nil;
  CkFtp2_get_ProgressMonSize: TCkFtp2_get_ProgressMonSize = nil;
  CkFtp2_put_ProgressMonSize: TCkFtp2_put_ProgressMonSize = nil;
  CkFtp2_get_ProgressMonSize64: TCkFtp2_get_ProgressMonSize64 = nil;
  CkFtp2_put_ProgressMonSize64: TCkFtp2_put_ProgressMonSize64 = nil;
  CkFtp2_get_ProxyHostname: TCkFtp2_get_ProxyHostname = nil;
  CkFtp2_put_ProxyHostname: TCkFtp2_put_ProxyHostname = nil;
  CkFtp2_get_ProxyMethod: TCkFtp2_get_ProxyMethod = nil;
  CkFtp2_put_ProxyMethod: TCkFtp2_put_ProxyMethod = nil;
  CkFtp2_get_ProxyPassword: TCkFtp2_get_ProxyPassword = nil;
  CkFtp2_put_ProxyPassword: TCkFtp2_put_ProxyPassword = nil;
  CkFtp2_get_ProxyPort: TCkFtp2_get_ProxyPort = nil;
  CkFtp2_put_ProxyPort: TCkFtp2_put_ProxyPort = nil;
  CkFtp2_get_ProxyUsername: TCkFtp2_get_ProxyUsername = nil;
  CkFtp2_put_ProxyUsername: TCkFtp2_put_ProxyUsername = nil;
  CkFtp2_get_ReadTimeout: TCkFtp2_get_ReadTimeout = nil;
  CkFtp2_put_ReadTimeout: TCkFtp2_put_ReadTimeout = nil;
  CkFtp2_get_RequireSslCertVerify: TCkFtp2_get_RequireSslCertVerify = nil;
  CkFtp2_put_RequireSslCertVerify: TCkFtp2_put_RequireSslCertVerify = nil;
  CkFtp2_get_RestartNext: TCkFtp2_get_RestartNext = nil;
  CkFtp2_put_RestartNext: TCkFtp2_put_RestartNext = nil;
  CkFtp2_get_SessionLog: TCkFtp2_get_SessionLog = nil;
  CkFtp2_get_SoRcvBuf: TCkFtp2_get_SoRcvBuf = nil;
  CkFtp2_put_SoRcvBuf: TCkFtp2_put_SoRcvBuf = nil;
  CkFtp2_get_SoSndBuf: TCkFtp2_get_SoSndBuf = nil;
  CkFtp2_put_SoSndBuf: TCkFtp2_put_SoSndBuf = nil;
  CkFtp2_get_SocksHostname: TCkFtp2_get_SocksHostname = nil;
  CkFtp2_put_SocksHostname: TCkFtp2_put_SocksHostname = nil;
  CkFtp2_get_SocksPassword: TCkFtp2_get_SocksPassword = nil;
  CkFtp2_put_SocksPassword: TCkFtp2_put_SocksPassword = nil;
  CkFtp2_get_SocksPort: TCkFtp2_get_SocksPort = nil;
  CkFtp2_put_SocksPort: TCkFtp2_put_SocksPort = nil;
  CkFtp2_get_SocksUsername: TCkFtp2_get_SocksUsername = nil;
  CkFtp2_put_SocksUsername: TCkFtp2_put_SocksUsername = nil;
  CkFtp2_get_SocksVersion: TCkFtp2_get_SocksVersion = nil;
  CkFtp2_put_SocksVersion: TCkFtp2_put_SocksVersion = nil;
  CkFtp2_get_Ssl: TCkFtp2_get_Ssl = nil;
  CkFtp2_put_Ssl: TCkFtp2_put_Ssl = nil;
  CkFtp2_get_SslAllowedCiphers: TCkFtp2_get_SslAllowedCiphers = nil;
  CkFtp2_put_SslAllowedCiphers: TCkFtp2_put_SslAllowedCiphers = nil;
  CkFtp2_get_SslProtocol: TCkFtp2_get_SslProtocol = nil;
  CkFtp2_put_SslProtocol: TCkFtp2_put_SslProtocol = nil;
  CkFtp2_get_SslServerCertVerified: TCkFtp2_get_SslServerCertVerified = nil;
  CkFtp2_get_SyncMustMatch: TCkFtp2_get_SyncMustMatch = nil;
  CkFtp2_put_SyncMustMatch: TCkFtp2_put_SyncMustMatch = nil;
  CkFtp2_get_SyncMustNotMatch: TCkFtp2_get_SyncMustNotMatch = nil;
  CkFtp2_put_SyncMustNotMatch: TCkFtp2_put_SyncMustNotMatch = nil;
  CkFtp2_get_SyncPreview: TCkFtp2_get_SyncPreview = nil;
  CkFtp2_get_TlsCipherSuite: TCkFtp2_get_TlsCipherSuite = nil;
  CkFtp2_get_TlsPinSet: TCkFtp2_get_TlsPinSet = nil;
  CkFtp2_put_TlsPinSet: TCkFtp2_put_TlsPinSet = nil;
  CkFtp2_get_TlsVersion: TCkFtp2_get_TlsVersion = nil;
  CkFtp2_get_UploadTransferRate: TCkFtp2_get_UploadTransferRate = nil;
  CkFtp2_get_UseEpsv: TCkFtp2_get_UseEpsv = nil;
  CkFtp2_put_UseEpsv: TCkFtp2_put_UseEpsv = nil;
  CkFtp2_get_Username: TCkFtp2_get_Username = nil;
  CkFtp2_put_Username: TCkFtp2_put_Username = nil;
  CkFtp2_get_LargeFileMeasures: TCkFtp2_get_LargeFileMeasures = nil;
  CkFtp2_put_LargeFileMeasures: TCkFtp2_put_LargeFileMeasures = nil;
  CkFtp2_get_SyncMustMatchDir: TCkFtp2_get_SyncMustMatchDir = nil;
  CkFtp2_put_SyncMustMatchDir: TCkFtp2_put_SyncMustMatchDir = nil;
  CkFtp2_get_SyncMustNotMatchDir: TCkFtp2_get_SyncMustNotMatchDir = nil;
  CkFtp2_put_SyncMustNotMatchDir: TCkFtp2_put_SyncMustNotMatchDir = nil;
  CkFtp2_get_SyncCreateAllLocalDirs: TCkFtp2_get_SyncCreateAllLocalDirs = nil;
  CkFtp2_put_SyncCreateAllLocalDirs: TCkFtp2_put_SyncCreateAllLocalDirs = nil;
  CkFtp2_get_UncommonOptions: TCkFtp2_get_UncommonOptions = nil;
  CkFtp2_put_UncommonOptions: TCkFtp2_put_UncommonOptions = nil;
  CkFtp2_get_ListOption: TCkFtp2_get_ListOption = nil;
  CkFtp2_put_ListOption: TCkFtp2_put_ListOption = nil;
  CkFtp2_get_EnableSecrets: TCkFtp2_get_EnableSecrets = nil;
  CkFtp2_put_EnableSecrets: TCkFtp2_put_EnableSecrets = nil;
  CkFtp2_AppendFile: TCkFtp2_AppendFile = nil;
  CkFtp2_AppendFileFromTextData: TCkFtp2_AppendFileFromTextData = nil;
  CkFtp2_ChangeRemoteDir: TCkFtp2_ChangeRemoteDir = nil;
  CkFtp2_CheckConnection: TCkFtp2_CheckConnection = nil;
  CkFtp2_ClearControlChannel: TCkFtp2_ClearControlChannel = nil;
  CkFtp2_ClearDirCache: TCkFtp2_ClearDirCache = nil;
  CkFtp2_ClearSessionLog: TCkFtp2_ClearSessionLog = nil;
  CkFtp2_Connect: TCkFtp2_Connect = nil;
  CkFtp2_ConnectOnly: TCkFtp2_ConnectOnly = nil;
  CkFtp2_ConvertToTls: TCkFtp2_ConvertToTls = nil;
  CkFtp2_CreatePlan: TCkFtp2_CreatePlan = nil;
  CkFtp2_CreateRemoteDir: TCkFtp2_CreateRemoteDir = nil;
  CkFtp2_DeleteMatching: TCkFtp2_DeleteMatching = nil;
  CkFtp2_DeleteRemoteFile: TCkFtp2_DeleteRemoteFile = nil;
  CkFtp2_DeleteTree: TCkFtp2_DeleteTree = nil;
  CkFtp2_DirTreeXml: TCkFtp2_DirTreeXml = nil;
  CkFtp2_Disconnect: TCkFtp2_Disconnect = nil;
  CkFtp2_DownloadTree: TCkFtp2_DownloadTree = nil;
  CkFtp2_Feat: TCkFtp2_Feat = nil;
  CkFtp2_GetCreateTimeByNameStr: TCkFtp2_GetCreateTimeByNameStr = nil;
  CkFtp2_GetCreateTimeStr: TCkFtp2_GetCreateTimeStr = nil;
  CkFtp2_GetCurrentRemoteDir: TCkFtp2_GetCurrentRemoteDir = nil;
  CkFtp2_GetDirCount: TCkFtp2_GetDirCount = nil;
  CkFtp2_GetFile: TCkFtp2_GetFile = nil;
  CkFtp2_GetFilename: TCkFtp2_GetFilename = nil;
  CkFtp2_GetGroup: TCkFtp2_GetGroup = nil;
  CkFtp2_GetIsDirectory: TCkFtp2_GetIsDirectory = nil;
  CkFtp2_GetIsSymbolicLink: TCkFtp2_GetIsSymbolicLink = nil;
  CkFtp2_GetLastModifiedTimeByNameStr: TCkFtp2_GetLastModifiedTimeByNameStr = nil;
  CkFtp2_GetLastModifiedTimeStr: TCkFtp2_GetLastModifiedTimeStr = nil;
  CkFtp2_GetOwner: TCkFtp2_GetOwner = nil;
  CkFtp2_GetPermType: TCkFtp2_GetPermType = nil;
  CkFtp2_GetPermissions: TCkFtp2_GetPermissions = nil;
  CkFtp2_GetRemoteFileTextC: TCkFtp2_GetRemoteFileTextC = nil;
  CkFtp2_GetRemoteFileTextData: TCkFtp2_GetRemoteFileTextData = nil;
  CkFtp2_GetSize: TCkFtp2_GetSize = nil;
  CkFtp2_GetSize64: TCkFtp2_GetSize64 = nil;
  CkFtp2_GetSizeByName: TCkFtp2_GetSizeByName = nil;
  CkFtp2_GetSizeByName64: TCkFtp2_GetSizeByName64 = nil;
  CkFtp2_GetSizeStr: TCkFtp2_GetSizeStr = nil;
  CkFtp2_GetSizeStrByName: TCkFtp2_GetSizeStrByName = nil;
  CkFtp2_GetTextDirListing: TCkFtp2_GetTextDirListing = nil;
  CkFtp2_GetXmlDirListing: TCkFtp2_GetXmlDirListing = nil;
  CkFtp2_LargeFileUpload: TCkFtp2_LargeFileUpload = nil;
  CkFtp2_LoginAfterConnectOnly: TCkFtp2_LoginAfterConnectOnly = nil;
  CkFtp2_MGetFiles: TCkFtp2_MGetFiles = nil;
  CkFtp2_MPutFiles: TCkFtp2_MPutFiles = nil;
  CkFtp2_NlstXml: TCkFtp2_NlstXml = nil;
  CkFtp2_Noop: TCkFtp2_Noop = nil;
  CkFtp2_PutFile: TCkFtp2_PutFile = nil;
  CkFtp2_PutFileFromTextData: TCkFtp2_PutFileFromTextData = nil;
  CkFtp2_PutPlan: TCkFtp2_PutPlan = nil;
  CkFtp2_PutTree: TCkFtp2_PutTree = nil;
  CkFtp2_Quote: TCkFtp2_Quote = nil;
  CkFtp2_RemoveRemoteDir: TCkFtp2_RemoveRemoteDir = nil;
  CkFtp2_RenameRemoteFile: TCkFtp2_RenameRemoteFile = nil;
  CkFtp2_SendCommand: TCkFtp2_SendCommand = nil;
  CkFtp2_SetModeZ: TCkFtp2_SetModeZ = nil;
  CkFtp2_SetOldestDateStr: TCkFtp2_SetOldestDateStr = nil;
  CkFtp2_SetOption: TCkFtp2_SetOption = nil;
  CkFtp2_SetRemoteFileDateTimeStr: TCkFtp2_SetRemoteFileDateTimeStr = nil;
  CkFtp2_SetRemoteFileDt: TCkFtp2_SetRemoteFileDt = nil;
  CkFtp2_SetSslCertRequirement: TCkFtp2_SetSslCertRequirement = nil;
  CkFtp2_SetSslClientCert: TCkFtp2_SetSslClientCert = nil;
  CkFtp2_SetSslClientCertPem: TCkFtp2_SetSslClientCertPem = nil;
  CkFtp2_SetSslClientCertPfx: TCkFtp2_SetSslClientCertPfx = nil;
  CkFtp2_SetTypeAscii: TCkFtp2_SetTypeAscii = nil;
  CkFtp2_SetTypeBinary: TCkFtp2_SetTypeBinary = nil;
  CkFtp2_Site: TCkFtp2_Site = nil;
  CkFtp2_SleepMs: TCkFtp2_SleepMs = nil;
  CkFtp2_Stat: TCkFtp2_Stat = nil;
  CkFtp2_SyncDeleteRemote: TCkFtp2_SyncDeleteRemote = nil;
  CkFtp2_SyncLocalDir: TCkFtp2_SyncLocalDir = nil;
  CkFtp2_SyncLocalTree: TCkFtp2_SyncLocalTree = nil;
  CkFtp2_SyncRemoteTree: TCkFtp2_SyncRemoteTree = nil;
  CkFtp2_SyncRemoteTree2: TCkFtp2_SyncRemoteTree2 = nil;
  CkFtp2_Syst: TCkFtp2_Syst = nil;
  CkFtp2_GetFileBd: TCkFtp2_GetFileBd = nil;
  CkFtp2_GetFileSb: TCkFtp2_GetFileSb = nil;
  CkFtp2_PutFileBd: TCkFtp2_PutFileBd = nil;
  CkFtp2_PutFileSb: TCkFtp2_PutFileSb = nil;
  CkFtp2_GetFileToStream: TCkFtp2_GetFileToStream = nil;
  CkFtp2_SetSecurePassword: TCkFtp2_SetSecurePassword = nil;
  CkFtp2_GetSyncedFiles: TCkFtp2_GetSyncedFiles = nil;
  CkFtp2_GetServerCert: TCkFtp2_GetServerCert = nil;
  CkFtp2_AppendFileBd: TCkFtp2_AppendFileBd = nil;
  CkFtp2_AppendFileSb: TCkFtp2_AppendFileSb = nil;
  CkFtp2_GetLastJsonData: TCkFtp2_GetLastJsonData = nil;

constructor TFtp2.Create;
begin
  inherited Create;
  FHandle := CkFtp2_Create();
end;

destructor TFtp2.Destroy;
begin
  if FHandle <> nil then
    CkFtp2_Dispose(FHandle);
  FHandle := nil;
  inherited;
end;

{ ---- Event callback thunks ---- }
{ Standalone cdecl functions registered with the C bridge.  The bridge
  passes back the userData pointer, which carries the Pascal object
  instance.  A non-zero return value aborts the running method. }

function TFtp2_AbortCheckThunk(userData: Pointer): Integer; cdecl;
var
  obj: TFtp2;
begin
  Result := 0;
  obj := TFtp2(userData);
  if Assigned(obj) and Assigned(obj.FOnAbortCheck) then
    if obj.FOnAbortCheck(obj) then Result := 1;
end;

function TFtp2_PercentDoneThunk(pctDone: Integer; userData: Pointer): Integer; cdecl;
var
  obj: TFtp2;
begin
  Result := 0;
  obj := TFtp2(userData);
  if Assigned(obj) and Assigned(obj.FOnPercentDone) then
    if obj.FOnPercentDone(obj, pctDone) then Result := 1;
end;

procedure TFtp2_ProgressInfoThunk(name: PAnsiChar; value: PAnsiChar; userData: Pointer); cdecl;
var
  obj: TFtp2;
begin
  obj := TFtp2(userData);
  if Assigned(obj) and Assigned(obj.FOnProgressInfo) then
    obj.FOnProgressInfo(obj, CkToStr(name), CkToStr(value));
end;

procedure TFtp2.SetOnAbortCheck(AValue: TChilkatAbortCheckEvent);
begin
  FOnAbortCheck := AValue;
  if Assigned(AValue) then
    CkFtp2_SetAbortCheckCallback(FHandle, @TFtp2_AbortCheckThunk, Self)
  else
    CkFtp2_SetAbortCheckCallback(FHandle, nil, nil);
end;

procedure TFtp2.SetOnPercentDone(AValue: TChilkatPercentDoneEvent);
begin
  FOnPercentDone := AValue;
  if Assigned(AValue) then
    CkFtp2_SetPercentDoneCallback(FHandle, @TFtp2_PercentDoneThunk, Self)
  else
    CkFtp2_SetPercentDoneCallback(FHandle, nil, nil);
end;

procedure TFtp2.SetOnProgressInfo(AValue: TChilkatProgressInfoEvent);
begin
  FOnProgressInfo := AValue;
  if Assigned(AValue) then
    CkFtp2_SetProgressInfoCallback(FHandle, @TFtp2_ProgressInfoThunk, Self)
  else
    CkFtp2_SetProgressInfoCallback(FHandle, nil, nil);
end;

function TFtp2.GetLastErrorHtml: string;
begin
  Result := CkToStr(CkFtp2_get_LastErrorHtml(FHandle));
end;

function TFtp2.GetLastErrorText: string;
begin
  Result := CkToStr(CkFtp2_get_LastErrorText(FHandle));
end;

function TFtp2.GetLastErrorXml: string;
begin
  Result := CkToStr(CkFtp2_get_LastErrorXml(FHandle));
end;

function TFtp2.GetVersion: string;
begin
  Result := CkToStr(CkFtp2_get_Version(FHandle));
end;

function TFtp2.GetDebugLogFilePath: string;
begin
  Result := CkToStr(CkFtp2_get_DebugLogFilePath(FHandle));
end;

procedure TFtp2.SetDebugLogFilePath(AValue: string);
begin
  CkFtp2_put_DebugLogFilePath(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetVerboseLogging: Boolean;
begin
  Result := Boolean(CkFtp2_get_VerboseLogging(FHandle));
end;

procedure TFtp2.SetVerboseLogging(AValue: Boolean);
begin
  CkFtp2_put_VerboseLogging(FHandle, LongBool(AValue));
end;

function TFtp2.GetLastMethodSuccess: Boolean;
begin
  Result := Boolean(CkFtp2_get_LastMethodSuccess(FHandle));
end;

procedure TFtp2.SetLastMethodSuccess(AValue: Boolean);
begin
  CkFtp2_put_LastMethodSuccess(FHandle, LongBool(AValue));
end;

function TFtp2.GetAbortCurrent: Boolean;
begin
  Result := Boolean(CkFtp2_get_AbortCurrent(FHandle));
end;

procedure TFtp2.SetAbortCurrent(AValue: Boolean);
begin
  CkFtp2_put_AbortCurrent(FHandle, LongBool(AValue));
end;

function TFtp2.GetAccount: string;
begin
  Result := CkToStr(CkFtp2_get_Account(FHandle));
end;

procedure TFtp2.SetAccount(AValue: string);
begin
  CkFtp2_put_Account(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetActivePortRangeEnd: Integer;
begin
  Result := CkFtp2_get_ActivePortRangeEnd(FHandle);
end;

procedure TFtp2.SetActivePortRangeEnd(AValue: Integer);
begin
  CkFtp2_put_ActivePortRangeEnd(FHandle, AValue);
end;

function TFtp2.GetActivePortRangeStart: Integer;
begin
  Result := CkFtp2_get_ActivePortRangeStart(FHandle);
end;

procedure TFtp2.SetActivePortRangeStart(AValue: Integer);
begin
  CkFtp2_put_ActivePortRangeStart(FHandle, AValue);
end;

function TFtp2.GetAllocateSize: LongWord;
begin
  Result := CkFtp2_get_AllocateSize(FHandle);
end;

procedure TFtp2.SetAllocateSize(AValue: LongWord);
begin
  CkFtp2_put_AllocateSize(FHandle, AValue);
end;

function TFtp2.GetAllowMlsd: Boolean;
begin
  Result := Boolean(CkFtp2_get_AllowMlsd(FHandle));
end;

procedure TFtp2.SetAllowMlsd(AValue: Boolean);
begin
  CkFtp2_put_AllowMlsd(FHandle, LongBool(AValue));
end;

function TFtp2.GetCurBytesReceived: LongWord;
begin
  Result := CkFtp2_get_CurBytesReceived(FHandle);
end;

function TFtp2.GetCurBytesReceived64: Int64;
begin
  Result := CkFtp2_get_CurBytesReceived64(FHandle);
end;

function TFtp2.GetCurBytesReceivedStr: string;
begin
  Result := CkToStr(CkFtp2_get_CurBytesReceivedStr(FHandle));
end;

function TFtp2.GetCurBytesSent: LongWord;
begin
  Result := CkFtp2_get_CurBytesSent(FHandle);
end;

function TFtp2.GetCurBytesSent64: Int64;
begin
  Result := CkFtp2_get_CurBytesSent64(FHandle);
end;

function TFtp2.GetCurBytesSentStr: string;
begin
  Result := CkToStr(CkFtp2_get_CurBytesSentStr(FHandle));
end;

function TFtp2.GetAuthSsl: Boolean;
begin
  Result := Boolean(CkFtp2_get_AuthSsl(FHandle));
end;

procedure TFtp2.SetAuthSsl(AValue: Boolean);
begin
  CkFtp2_put_AuthSsl(FHandle, LongBool(AValue));
end;

function TFtp2.GetAuthTls: Boolean;
begin
  Result := Boolean(CkFtp2_get_AuthTls(FHandle));
end;

procedure TFtp2.SetAuthTls(AValue: Boolean);
begin
  CkFtp2_put_AuthTls(FHandle, LongBool(AValue));
end;

function TFtp2.GetAutoFeat: Boolean;
begin
  Result := Boolean(CkFtp2_get_AutoFeat(FHandle));
end;

procedure TFtp2.SetAutoFeat(AValue: Boolean);
begin
  CkFtp2_put_AutoFeat(FHandle, LongBool(AValue));
end;

function TFtp2.GetAutoFix: Boolean;
begin
  Result := Boolean(CkFtp2_get_AutoFix(FHandle));
end;

procedure TFtp2.SetAutoFix(AValue: Boolean);
begin
  CkFtp2_put_AutoFix(FHandle, LongBool(AValue));
end;

function TFtp2.GetAutoGetSizeForProgress: Boolean;
begin
  Result := Boolean(CkFtp2_get_AutoGetSizeForProgress(FHandle));
end;

procedure TFtp2.SetAutoGetSizeForProgress(AValue: Boolean);
begin
  CkFtp2_put_AutoGetSizeForProgress(FHandle, LongBool(AValue));
end;

function TFtp2.GetAutoOptsUtf8: Boolean;
begin
  Result := Boolean(CkFtp2_get_AutoOptsUtf8(FHandle));
end;

procedure TFtp2.SetAutoOptsUtf8(AValue: Boolean);
begin
  CkFtp2_put_AutoOptsUtf8(FHandle, LongBool(AValue));
end;

function TFtp2.GetAutoSetUseEpsv: Boolean;
begin
  Result := Boolean(CkFtp2_get_AutoSetUseEpsv(FHandle));
end;

procedure TFtp2.SetAutoSetUseEpsv(AValue: Boolean);
begin
  CkFtp2_put_AutoSetUseEpsv(FHandle, LongBool(AValue));
end;

function TFtp2.GetAutoSyst: Boolean;
begin
  Result := Boolean(CkFtp2_get_AutoSyst(FHandle));
end;

procedure TFtp2.SetAutoSyst(AValue: Boolean);
begin
  CkFtp2_put_AutoSyst(FHandle, LongBool(AValue));
end;

function TFtp2.GetAutoXcrc: Boolean;
begin
  Result := Boolean(CkFtp2_get_AutoXcrc(FHandle));
end;

procedure TFtp2.SetAutoXcrc(AValue: Boolean);
begin
  CkFtp2_put_AutoXcrc(FHandle, LongBool(AValue));
end;

function TFtp2.GetBandwidthThrottleDown: Integer;
begin
  Result := CkFtp2_get_BandwidthThrottleDown(FHandle);
end;

procedure TFtp2.SetBandwidthThrottleDown(AValue: Integer);
begin
  CkFtp2_put_BandwidthThrottleDown(FHandle, AValue);
end;

function TFtp2.GetBandwidthThrottleUp: Integer;
begin
  Result := CkFtp2_get_BandwidthThrottleUp(FHandle);
end;

procedure TFtp2.SetBandwidthThrottleUp(AValue: Integer);
begin
  CkFtp2_put_BandwidthThrottleUp(FHandle, AValue);
end;

function TFtp2.GetClientIpAddress: string;
begin
  Result := CkToStr(CkFtp2_get_ClientIpAddress(FHandle));
end;

procedure TFtp2.SetClientIpAddress(AValue: string);
begin
  CkFtp2_put_ClientIpAddress(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetCommandCharset: string;
begin
  Result := CkToStr(CkFtp2_get_CommandCharset(FHandle));
end;

procedure TFtp2.SetCommandCharset(AValue: string);
begin
  CkFtp2_put_CommandCharset(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetConnectFailReason: Integer;
begin
  Result := CkFtp2_get_ConnectFailReason(FHandle);
end;

function TFtp2.GetConnectTimeout: Integer;
begin
  Result := CkFtp2_get_ConnectTimeout(FHandle);
end;

procedure TFtp2.SetConnectTimeout(AValue: Integer);
begin
  CkFtp2_put_ConnectTimeout(FHandle, AValue);
end;

function TFtp2.GetConnectVerified: Boolean;
begin
  Result := Boolean(CkFtp2_get_ConnectVerified(FHandle));
end;

function TFtp2.GetCrlfMode: Integer;
begin
  Result := CkFtp2_get_CrlfMode(FHandle);
end;

procedure TFtp2.SetCrlfMode(AValue: Integer);
begin
  CkFtp2_put_CrlfMode(FHandle, AValue);
end;

function TFtp2.GetDataProtection: string;
begin
  Result := CkToStr(CkFtp2_get_DataProtection(FHandle));
end;

procedure TFtp2.SetDataProtection(AValue: string);
begin
  CkFtp2_put_DataProtection(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetDirListingCharset: string;
begin
  Result := CkToStr(CkFtp2_get_DirListingCharset(FHandle));
end;

procedure TFtp2.SetDirListingCharset(AValue: string);
begin
  CkFtp2_put_DirListingCharset(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetDownloadTransferRate: Integer;
begin
  Result := CkFtp2_get_DownloadTransferRate(FHandle);
end;

function TFtp2.GetForcePortIpAddress: string;
begin
  Result := CkToStr(CkFtp2_get_ForcePortIpAddress(FHandle));
end;

procedure TFtp2.SetForcePortIpAddress(AValue: string);
begin
  CkFtp2_put_ForcePortIpAddress(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetGreeting: string;
begin
  Result := CkToStr(CkFtp2_get_Greeting(FHandle));
end;

function TFtp2.GetHasModeZ: Boolean;
begin
  Result := Boolean(CkFtp2_get_HasModeZ(FHandle));
end;

function TFtp2.GetHeartbeatMs: Integer;
begin
  Result := CkFtp2_get_HeartbeatMs(FHandle);
end;

procedure TFtp2.SetHeartbeatMs(AValue: Integer);
begin
  CkFtp2_put_HeartbeatMs(FHandle, AValue);
end;

function TFtp2.GetHostname: string;
begin
  Result := CkToStr(CkFtp2_get_Hostname(FHandle));
end;

procedure TFtp2.SetHostname(AValue: string);
begin
  CkFtp2_put_Hostname(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetHttpProxyAuthMethod: string;
begin
  Result := CkToStr(CkFtp2_get_HttpProxyAuthMethod(FHandle));
end;

procedure TFtp2.SetHttpProxyAuthMethod(AValue: string);
begin
  CkFtp2_put_HttpProxyAuthMethod(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetHttpProxyDomain: string;
begin
  Result := CkToStr(CkFtp2_get_HttpProxyDomain(FHandle));
end;

procedure TFtp2.SetHttpProxyDomain(AValue: string);
begin
  CkFtp2_put_HttpProxyDomain(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetHttpProxyHostname: string;
begin
  Result := CkToStr(CkFtp2_get_HttpProxyHostname(FHandle));
end;

procedure TFtp2.SetHttpProxyHostname(AValue: string);
begin
  CkFtp2_put_HttpProxyHostname(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetHttpProxyPassword: string;
begin
  Result := CkToStr(CkFtp2_get_HttpProxyPassword(FHandle));
end;

procedure TFtp2.SetHttpProxyPassword(AValue: string);
begin
  CkFtp2_put_HttpProxyPassword(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetHttpProxyPort: Integer;
begin
  Result := CkFtp2_get_HttpProxyPort(FHandle);
end;

procedure TFtp2.SetHttpProxyPort(AValue: Integer);
begin
  CkFtp2_put_HttpProxyPort(FHandle, AValue);
end;

function TFtp2.GetHttpProxyUsername: string;
begin
  Result := CkToStr(CkFtp2_get_HttpProxyUsername(FHandle));
end;

procedure TFtp2.SetHttpProxyUsername(AValue: string);
begin
  CkFtp2_put_HttpProxyUsername(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetIdleTimeoutMs: Integer;
begin
  Result := CkFtp2_get_IdleTimeoutMs(FHandle);
end;

procedure TFtp2.SetIdleTimeoutMs(AValue: Integer);
begin
  CkFtp2_put_IdleTimeoutMs(FHandle, AValue);
end;

function TFtp2.GetIsConnected: Boolean;
begin
  Result := Boolean(CkFtp2_get_IsConnected(FHandle));
end;

function TFtp2.GetKeepSessionLog: Boolean;
begin
  Result := Boolean(CkFtp2_get_KeepSessionLog(FHandle));
end;

procedure TFtp2.SetKeepSessionLog(AValue: Boolean);
begin
  CkFtp2_put_KeepSessionLog(FHandle, LongBool(AValue));
end;

function TFtp2.GetLastReply: string;
begin
  Result := CkToStr(CkFtp2_get_LastReply(FHandle));
end;

function TFtp2.GetListPattern: string;
begin
  Result := CkToStr(CkFtp2_get_ListPattern(FHandle));
end;

procedure TFtp2.SetListPattern(AValue: string);
begin
  CkFtp2_put_ListPattern(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetLoginVerified: Boolean;
begin
  Result := Boolean(CkFtp2_get_LoginVerified(FHandle));
end;

function TFtp2.GetPartialTransfer: Boolean;
begin
  Result := Boolean(CkFtp2_get_PartialTransfer(FHandle));
end;

function TFtp2.GetPassive: Boolean;
begin
  Result := Boolean(CkFtp2_get_Passive(FHandle));
end;

procedure TFtp2.SetPassive(AValue: Boolean);
begin
  CkFtp2_put_Passive(FHandle, LongBool(AValue));
end;

function TFtp2.GetPassiveUseHostAddr: Boolean;
begin
  Result := Boolean(CkFtp2_get_PassiveUseHostAddr(FHandle));
end;

procedure TFtp2.SetPassiveUseHostAddr(AValue: Boolean);
begin
  CkFtp2_put_PassiveUseHostAddr(FHandle, LongBool(AValue));
end;

function TFtp2.GetPassword: string;
begin
  Result := CkToStr(CkFtp2_get_Password(FHandle));
end;

procedure TFtp2.SetPassword(AValue: string);
begin
  CkFtp2_put_Password(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetPercentDoneScale: Integer;
begin
  Result := CkFtp2_get_PercentDoneScale(FHandle);
end;

procedure TFtp2.SetPercentDoneScale(AValue: Integer);
begin
  CkFtp2_put_PercentDoneScale(FHandle, AValue);
end;

function TFtp2.GetPort: Integer;
begin
  Result := CkFtp2_get_Port(FHandle);
end;

procedure TFtp2.SetPort(AValue: Integer);
begin
  CkFtp2_put_Port(FHandle, AValue);
end;

function TFtp2.GetPreferIpv6: Boolean;
begin
  Result := Boolean(CkFtp2_get_PreferIpv6(FHandle));
end;

procedure TFtp2.SetPreferIpv6(AValue: Boolean);
begin
  CkFtp2_put_PreferIpv6(FHandle, LongBool(AValue));
end;

function TFtp2.GetPreferNlst: Boolean;
begin
  Result := Boolean(CkFtp2_get_PreferNlst(FHandle));
end;

procedure TFtp2.SetPreferNlst(AValue: Boolean);
begin
  CkFtp2_put_PreferNlst(FHandle, LongBool(AValue));
end;

function TFtp2.GetProgressMonSize: Integer;
begin
  Result := CkFtp2_get_ProgressMonSize(FHandle);
end;

procedure TFtp2.SetProgressMonSize(AValue: Integer);
begin
  CkFtp2_put_ProgressMonSize(FHandle, AValue);
end;

function TFtp2.GetProgressMonSize64: Int64;
begin
  Result := CkFtp2_get_ProgressMonSize64(FHandle);
end;

procedure TFtp2.SetProgressMonSize64(AValue: Int64);
begin
  CkFtp2_put_ProgressMonSize64(FHandle, AValue);
end;

function TFtp2.GetProxyHostname: string;
begin
  Result := CkToStr(CkFtp2_get_ProxyHostname(FHandle));
end;

procedure TFtp2.SetProxyHostname(AValue: string);
begin
  CkFtp2_put_ProxyHostname(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetProxyMethod: Integer;
begin
  Result := CkFtp2_get_ProxyMethod(FHandle);
end;

procedure TFtp2.SetProxyMethod(AValue: Integer);
begin
  CkFtp2_put_ProxyMethod(FHandle, AValue);
end;

function TFtp2.GetProxyPassword: string;
begin
  Result := CkToStr(CkFtp2_get_ProxyPassword(FHandle));
end;

procedure TFtp2.SetProxyPassword(AValue: string);
begin
  CkFtp2_put_ProxyPassword(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetProxyPort: Integer;
begin
  Result := CkFtp2_get_ProxyPort(FHandle);
end;

procedure TFtp2.SetProxyPort(AValue: Integer);
begin
  CkFtp2_put_ProxyPort(FHandle, AValue);
end;

function TFtp2.GetProxyUsername: string;
begin
  Result := CkToStr(CkFtp2_get_ProxyUsername(FHandle));
end;

procedure TFtp2.SetProxyUsername(AValue: string);
begin
  CkFtp2_put_ProxyUsername(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetReadTimeout: Integer;
begin
  Result := CkFtp2_get_ReadTimeout(FHandle);
end;

procedure TFtp2.SetReadTimeout(AValue: Integer);
begin
  CkFtp2_put_ReadTimeout(FHandle, AValue);
end;

function TFtp2.GetRequireSslCertVerify: Boolean;
begin
  Result := Boolean(CkFtp2_get_RequireSslCertVerify(FHandle));
end;

procedure TFtp2.SetRequireSslCertVerify(AValue: Boolean);
begin
  CkFtp2_put_RequireSslCertVerify(FHandle, LongBool(AValue));
end;

function TFtp2.GetRestartNext: Boolean;
begin
  Result := Boolean(CkFtp2_get_RestartNext(FHandle));
end;

procedure TFtp2.SetRestartNext(AValue: Boolean);
begin
  CkFtp2_put_RestartNext(FHandle, LongBool(AValue));
end;

function TFtp2.GetSessionLog: string;
begin
  Result := CkToStr(CkFtp2_get_SessionLog(FHandle));
end;

function TFtp2.GetSoRcvBuf: Integer;
begin
  Result := CkFtp2_get_SoRcvBuf(FHandle);
end;

procedure TFtp2.SetSoRcvBuf(AValue: Integer);
begin
  CkFtp2_put_SoRcvBuf(FHandle, AValue);
end;

function TFtp2.GetSoSndBuf: Integer;
begin
  Result := CkFtp2_get_SoSndBuf(FHandle);
end;

procedure TFtp2.SetSoSndBuf(AValue: Integer);
begin
  CkFtp2_put_SoSndBuf(FHandle, AValue);
end;

function TFtp2.GetSocksHostname: string;
begin
  Result := CkToStr(CkFtp2_get_SocksHostname(FHandle));
end;

procedure TFtp2.SetSocksHostname(AValue: string);
begin
  CkFtp2_put_SocksHostname(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSocksPassword: string;
begin
  Result := CkToStr(CkFtp2_get_SocksPassword(FHandle));
end;

procedure TFtp2.SetSocksPassword(AValue: string);
begin
  CkFtp2_put_SocksPassword(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSocksPort: Integer;
begin
  Result := CkFtp2_get_SocksPort(FHandle);
end;

procedure TFtp2.SetSocksPort(AValue: Integer);
begin
  CkFtp2_put_SocksPort(FHandle, AValue);
end;

function TFtp2.GetSocksUsername: string;
begin
  Result := CkToStr(CkFtp2_get_SocksUsername(FHandle));
end;

procedure TFtp2.SetSocksUsername(AValue: string);
begin
  CkFtp2_put_SocksUsername(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSocksVersion: Integer;
begin
  Result := CkFtp2_get_SocksVersion(FHandle);
end;

procedure TFtp2.SetSocksVersion(AValue: Integer);
begin
  CkFtp2_put_SocksVersion(FHandle, AValue);
end;

function TFtp2.GetSsl: Boolean;
begin
  Result := Boolean(CkFtp2_get_Ssl(FHandle));
end;

procedure TFtp2.SetSsl(AValue: Boolean);
begin
  CkFtp2_put_Ssl(FHandle, LongBool(AValue));
end;

function TFtp2.GetSslAllowedCiphers: string;
begin
  Result := CkToStr(CkFtp2_get_SslAllowedCiphers(FHandle));
end;

procedure TFtp2.SetSslAllowedCiphers(AValue: string);
begin
  CkFtp2_put_SslAllowedCiphers(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSslProtocol: string;
begin
  Result := CkToStr(CkFtp2_get_SslProtocol(FHandle));
end;

procedure TFtp2.SetSslProtocol(AValue: string);
begin
  CkFtp2_put_SslProtocol(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSslServerCertVerified: Boolean;
begin
  Result := Boolean(CkFtp2_get_SslServerCertVerified(FHandle));
end;

function TFtp2.GetSyncMustMatch: string;
begin
  Result := CkToStr(CkFtp2_get_SyncMustMatch(FHandle));
end;

procedure TFtp2.SetSyncMustMatch(AValue: string);
begin
  CkFtp2_put_SyncMustMatch(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSyncMustNotMatch: string;
begin
  Result := CkToStr(CkFtp2_get_SyncMustNotMatch(FHandle));
end;

procedure TFtp2.SetSyncMustNotMatch(AValue: string);
begin
  CkFtp2_put_SyncMustNotMatch(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSyncPreview: string;
begin
  Result := CkToStr(CkFtp2_get_SyncPreview(FHandle));
end;

function TFtp2.GetTlsCipherSuite: string;
begin
  Result := CkToStr(CkFtp2_get_TlsCipherSuite(FHandle));
end;

function TFtp2.GetTlsPinSet: string;
begin
  Result := CkToStr(CkFtp2_get_TlsPinSet(FHandle));
end;

procedure TFtp2.SetTlsPinSet(AValue: string);
begin
  CkFtp2_put_TlsPinSet(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetTlsVersion: string;
begin
  Result := CkToStr(CkFtp2_get_TlsVersion(FHandle));
end;

function TFtp2.GetUploadTransferRate: Integer;
begin
  Result := CkFtp2_get_UploadTransferRate(FHandle);
end;

function TFtp2.GetUseEpsv: Boolean;
begin
  Result := Boolean(CkFtp2_get_UseEpsv(FHandle));
end;

procedure TFtp2.SetUseEpsv(AValue: Boolean);
begin
  CkFtp2_put_UseEpsv(FHandle, LongBool(AValue));
end;

function TFtp2.GetUsername: string;
begin
  Result := CkToStr(CkFtp2_get_Username(FHandle));
end;

procedure TFtp2.SetUsername(AValue: string);
begin
  CkFtp2_put_Username(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetLargeFileMeasures: Boolean;
begin
  Result := Boolean(CkFtp2_get_LargeFileMeasures(FHandle));
end;

procedure TFtp2.SetLargeFileMeasures(AValue: Boolean);
begin
  CkFtp2_put_LargeFileMeasures(FHandle, LongBool(AValue));
end;

function TFtp2.GetSyncMustMatchDir: string;
begin
  Result := CkToStr(CkFtp2_get_SyncMustMatchDir(FHandle));
end;

procedure TFtp2.SetSyncMustMatchDir(AValue: string);
begin
  CkFtp2_put_SyncMustMatchDir(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSyncMustNotMatchDir: string;
begin
  Result := CkToStr(CkFtp2_get_SyncMustNotMatchDir(FHandle));
end;

procedure TFtp2.SetSyncMustNotMatchDir(AValue: string);
begin
  CkFtp2_put_SyncMustNotMatchDir(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetSyncCreateAllLocalDirs: Boolean;
begin
  Result := Boolean(CkFtp2_get_SyncCreateAllLocalDirs(FHandle));
end;

procedure TFtp2.SetSyncCreateAllLocalDirs(AValue: Boolean);
begin
  CkFtp2_put_SyncCreateAllLocalDirs(FHandle, LongBool(AValue));
end;

function TFtp2.GetUncommonOptions: string;
begin
  Result := CkToStr(CkFtp2_get_UncommonOptions(FHandle));
end;

procedure TFtp2.SetUncommonOptions(AValue: string);
begin
  CkFtp2_put_UncommonOptions(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetListOption: string;
begin
  Result := CkToStr(CkFtp2_get_ListOption(FHandle));
end;

procedure TFtp2.SetListOption(AValue: string);
begin
  CkFtp2_put_ListOption(FHandle, PAnsiChar(StrToCk(AValue)));
end;

function TFtp2.GetEnableSecrets: Boolean;
begin
  Result := Boolean(CkFtp2_get_EnableSecrets(FHandle));
end;

procedure TFtp2.SetEnableSecrets(AValue: Boolean);
begin
  CkFtp2_put_EnableSecrets(FHandle, LongBool(AValue));
end;

function TFtp2.AppendFile(const localFilePath: string; const remoteFilePath: string): Boolean;
begin
  Result := Boolean(CkFtp2_AppendFile(FHandle, PAnsiChar(StrToCk(localFilePath)), PAnsiChar(StrToCk(remoteFilePath))));
end;

function TFtp2.AppendFileFromTextData(const remoteFilename: string; const textData: string; const charset: string): Boolean;
begin
  Result := Boolean(CkFtp2_AppendFileFromTextData(FHandle, PAnsiChar(StrToCk(remoteFilename)), PAnsiChar(StrToCk(textData)), PAnsiChar(StrToCk(charset))));
end;

function TFtp2.ChangeRemoteDir(const remoteDirPath: string): Boolean;
begin
  Result := Boolean(CkFtp2_ChangeRemoteDir(FHandle, PAnsiChar(StrToCk(remoteDirPath))));
end;

function TFtp2.CheckConnection: Boolean;
begin
  Result := Boolean(CkFtp2_CheckConnection(FHandle));
end;

function TFtp2.ClearControlChannel: Boolean;
begin
  Result := Boolean(CkFtp2_ClearControlChannel(FHandle));
end;

procedure TFtp2.ClearDirCache;
begin
  CkFtp2_ClearDirCache(FHandle);
end;

procedure TFtp2.ClearSessionLog;
begin
  CkFtp2_ClearSessionLog(FHandle);
end;

function TFtp2.Connect: Boolean;
begin
  Result := Boolean(CkFtp2_Connect(FHandle));
end;

function TFtp2.ConnectOnly: Boolean;
begin
  Result := Boolean(CkFtp2_ConnectOnly(FHandle));
end;

function TFtp2.ConvertToTls: Boolean;
begin
  Result := Boolean(CkFtp2_ConvertToTls(FHandle));
end;

function TFtp2.CreatePlan(const localDir: string): string;
begin
  Result := CkToStr(CkFtp2_CreatePlan(FHandle, PAnsiChar(StrToCk(localDir))));
end;

function TFtp2.CreateRemoteDir(const remoteDirPath: string): Boolean;
begin
  Result := Boolean(CkFtp2_CreateRemoteDir(FHandle, PAnsiChar(StrToCk(remoteDirPath))));
end;

function TFtp2.DeleteMatching(const remotePattern: string): Integer;
begin
  Result := CkFtp2_DeleteMatching(FHandle, PAnsiChar(StrToCk(remotePattern)));
end;

function TFtp2.DeleteRemoteFile(const remoteFilePath: string): Boolean;
begin
  Result := Boolean(CkFtp2_DeleteRemoteFile(FHandle, PAnsiChar(StrToCk(remoteFilePath))));
end;

function TFtp2.DeleteTree: Boolean;
begin
  Result := Boolean(CkFtp2_DeleteTree(FHandle));
end;

function TFtp2.DirTreeXml: string;
begin
  Result := CkToStr(CkFtp2_DirTreeXml(FHandle));
end;

function TFtp2.Disconnect: Boolean;
begin
  Result := Boolean(CkFtp2_Disconnect(FHandle));
end;

function TFtp2.DownloadTree(const localRoot: string): Boolean;
begin
  Result := Boolean(CkFtp2_DownloadTree(FHandle, PAnsiChar(StrToCk(localRoot))));
end;

function TFtp2.Feat: string;
begin
  Result := CkToStr(CkFtp2_Feat(FHandle));
end;

function TFtp2.GetCreateTimeByNameStr(const filename: string): string;
begin
  Result := CkToStr(CkFtp2_GetCreateTimeByNameStr(FHandle, PAnsiChar(StrToCk(filename))));
end;

function TFtp2.GetCreateTimeStr(index: Integer): string;
begin
  Result := CkToStr(CkFtp2_GetCreateTimeStr(FHandle, index));
end;

function TFtp2.GetCurrentRemoteDir: string;
begin
  Result := CkToStr(CkFtp2_GetCurrentRemoteDir(FHandle));
end;

function TFtp2.GetDirCount: Integer;
begin
  Result := CkFtp2_GetDirCount(FHandle);
end;

function TFtp2.GetFile(const remoteFilePath: string; const localFilePath: string): Boolean;
begin
  Result := Boolean(CkFtp2_GetFile(FHandle, PAnsiChar(StrToCk(remoteFilePath)), PAnsiChar(StrToCk(localFilePath))));
end;

function TFtp2.GetFilename(index: Integer): string;
begin
  Result := CkToStr(CkFtp2_GetFilename(FHandle, index));
end;

function TFtp2.GetGroup(index: Integer): string;
begin
  Result := CkToStr(CkFtp2_GetGroup(FHandle, index));
end;

function TFtp2.GetIsDirectory(index: Integer): Boolean;
begin
  Result := Boolean(CkFtp2_GetIsDirectory(FHandle, index));
end;

function TFtp2.GetIsSymbolicLink(index: Integer): Boolean;
begin
  Result := Boolean(CkFtp2_GetIsSymbolicLink(FHandle, index));
end;

function TFtp2.GetLastModifiedTimeByNameStr(const filename: string): string;
begin
  Result := CkToStr(CkFtp2_GetLastModifiedTimeByNameStr(FHandle, PAnsiChar(StrToCk(filename))));
end;

function TFtp2.GetLastModifiedTimeStr(index: Integer): string;
begin
  Result := CkToStr(CkFtp2_GetLastModifiedTimeStr(FHandle, index));
end;

function TFtp2.GetOwner(index: Integer): string;
begin
  Result := CkToStr(CkFtp2_GetOwner(FHandle, index));
end;

function TFtp2.GetPermType(index: Integer): string;
begin
  Result := CkToStr(CkFtp2_GetPermType(FHandle, index));
end;

function TFtp2.GetPermissions(index: Integer): string;
begin
  Result := CkToStr(CkFtp2_GetPermissions(FHandle, index));
end;

function TFtp2.GetRemoteFileTextC(const remoteFilename: string; const charset: string): string;
begin
  Result := CkToStr(CkFtp2_GetRemoteFileTextC(FHandle, PAnsiChar(StrToCk(remoteFilename)), PAnsiChar(StrToCk(charset))));
end;

function TFtp2.GetRemoteFileTextData(const remoteFilename: string): string;
begin
  Result := CkToStr(CkFtp2_GetRemoteFileTextData(FHandle, PAnsiChar(StrToCk(remoteFilename))));
end;

function TFtp2.GetSize(index: Integer): Integer;
begin
  Result := CkFtp2_GetSize(FHandle, index);
end;

function TFtp2.GetSize64(index: Integer): Int64;
begin
  Result := CkFtp2_GetSize64(FHandle, index);
end;

function TFtp2.GetSizeByName(const filename: string): Integer;
begin
  Result := CkFtp2_GetSizeByName(FHandle, PAnsiChar(StrToCk(filename)));
end;

function TFtp2.GetSizeByName64(const filename: string): Int64;
begin
  Result := CkFtp2_GetSizeByName64(FHandle, PAnsiChar(StrToCk(filename)));
end;

function TFtp2.GetSizeStr(index: Integer): string;
begin
  Result := CkToStr(CkFtp2_GetSizeStr(FHandle, index));
end;

function TFtp2.GetSizeStrByName(const filename: string): string;
begin
  Result := CkToStr(CkFtp2_GetSizeStrByName(FHandle, PAnsiChar(StrToCk(filename))));
end;

function TFtp2.GetTextDirListing(const pattern: string): string;
begin
  Result := CkToStr(CkFtp2_GetTextDirListing(FHandle, PAnsiChar(StrToCk(pattern))));
end;

function TFtp2.GetXmlDirListing(const pattern: string): string;
begin
  Result := CkToStr(CkFtp2_GetXmlDirListing(FHandle, PAnsiChar(StrToCk(pattern))));
end;

function TFtp2.LargeFileUpload(const localPath: string; const remotePath: string; chunkSize: Integer): Boolean;
begin
  Result := Boolean(CkFtp2_LargeFileUpload(FHandle, PAnsiChar(StrToCk(localPath)), PAnsiChar(StrToCk(remotePath)), chunkSize));
end;

function TFtp2.LoginAfterConnectOnly: Boolean;
begin
  Result := Boolean(CkFtp2_LoginAfterConnectOnly(FHandle));
end;

function TFtp2.MGetFiles(const remotePattern: string; const localDir: string): Integer;
begin
  Result := CkFtp2_MGetFiles(FHandle, PAnsiChar(StrToCk(remotePattern)), PAnsiChar(StrToCk(localDir)));
end;

function TFtp2.MPutFiles(const pattern: string): Integer;
begin
  Result := CkFtp2_MPutFiles(FHandle, PAnsiChar(StrToCk(pattern)));
end;

function TFtp2.NlstXml(const remoteDirPattern: string): string;
begin
  Result := CkToStr(CkFtp2_NlstXml(FHandle, PAnsiChar(StrToCk(remoteDirPattern))));
end;

function TFtp2.Noop: Boolean;
begin
  Result := Boolean(CkFtp2_Noop(FHandle));
end;

function TFtp2.PutFile(const localFilePath: string; const remoteFilePath: string): Boolean;
begin
  Result := Boolean(CkFtp2_PutFile(FHandle, PAnsiChar(StrToCk(localFilePath)), PAnsiChar(StrToCk(remoteFilePath))));
end;

function TFtp2.PutFileFromTextData(const remoteFilename: string; const textData: string; const charset: string): Boolean;
begin
  Result := Boolean(CkFtp2_PutFileFromTextData(FHandle, PAnsiChar(StrToCk(remoteFilename)), PAnsiChar(StrToCk(textData)), PAnsiChar(StrToCk(charset))));
end;

function TFtp2.PutPlan(const plan: string; const alreadyDoneFilename: string): Boolean;
begin
  Result := Boolean(CkFtp2_PutPlan(FHandle, PAnsiChar(StrToCk(plan)), PAnsiChar(StrToCk(alreadyDoneFilename))));
end;

function TFtp2.PutTree(const localDir: string): Boolean;
begin
  Result := Boolean(CkFtp2_PutTree(FHandle, PAnsiChar(StrToCk(localDir))));
end;

function TFtp2.Quote(const cmd: string): Boolean;
begin
  Result := Boolean(CkFtp2_Quote(FHandle, PAnsiChar(StrToCk(cmd))));
end;

function TFtp2.RemoveRemoteDir(const remoteDirPath: string): Boolean;
begin
  Result := Boolean(CkFtp2_RemoveRemoteDir(FHandle, PAnsiChar(StrToCk(remoteDirPath))));
end;

function TFtp2.RenameRemoteFile(const existingRemoteFilePath: string; const newRemoteFilePath: string): Boolean;
begin
  Result := Boolean(CkFtp2_RenameRemoteFile(FHandle, PAnsiChar(StrToCk(existingRemoteFilePath)), PAnsiChar(StrToCk(newRemoteFilePath))));
end;

function TFtp2.SendCommand(const cmd: string): string;
begin
  Result := CkToStr(CkFtp2_SendCommand(FHandle, PAnsiChar(StrToCk(cmd))));
end;

function TFtp2.SetModeZ: Boolean;
begin
  Result := Boolean(CkFtp2_SetModeZ(FHandle));
end;

procedure TFtp2.SetOldestDateStr(const oldestDateTimeStr: string);
begin
  CkFtp2_SetOldestDateStr(FHandle, PAnsiChar(StrToCk(oldestDateTimeStr)));
end;

function TFtp2.SetOption(const option: string): Boolean;
begin
  Result := Boolean(CkFtp2_SetOption(FHandle, PAnsiChar(StrToCk(option))));
end;

function TFtp2.SetRemoteFileDateTimeStr(const dateTimeStr: string; const remoteFilename: string): Boolean;
begin
  Result := Boolean(CkFtp2_SetRemoteFileDateTimeStr(FHandle, PAnsiChar(StrToCk(dateTimeStr)), PAnsiChar(StrToCk(remoteFilename))));
end;

function TFtp2.SetRemoteFileDt(dt: TChilkatBase; const remoteFilename: string): Boolean;
begin
  Result := Boolean(CkFtp2_SetRemoteFileDt(FHandle, dt.Handle, PAnsiChar(StrToCk(remoteFilename))));
end;

procedure TFtp2.SetSslCertRequirement(const reqName: string; const reqValue: string);
begin
  CkFtp2_SetSslCertRequirement(FHandle, PAnsiChar(StrToCk(reqName)), PAnsiChar(StrToCk(reqValue)));
end;

function TFtp2.SetSslClientCert(cert: TChilkatBase): Boolean;
begin
  Result := Boolean(CkFtp2_SetSslClientCert(FHandle, cert.Handle));
end;

function TFtp2.SetSslClientCertPem(const pemDataOrFilename: string; const pemPassword: string): Boolean;
begin
  Result := Boolean(CkFtp2_SetSslClientCertPem(FHandle, PAnsiChar(StrToCk(pemDataOrFilename)), PAnsiChar(StrToCk(pemPassword))));
end;

function TFtp2.SetSslClientCertPfx(const pfxFilename: string; const pfxPassword: string): Boolean;
begin
  Result := Boolean(CkFtp2_SetSslClientCertPfx(FHandle, PAnsiChar(StrToCk(pfxFilename)), PAnsiChar(StrToCk(pfxPassword))));
end;

function TFtp2.SetTypeAscii: Boolean;
begin
  Result := Boolean(CkFtp2_SetTypeAscii(FHandle));
end;

function TFtp2.SetTypeBinary: Boolean;
begin
  Result := Boolean(CkFtp2_SetTypeBinary(FHandle));
end;

function TFtp2.Site(const siteCommand: string): Boolean;
begin
  Result := Boolean(CkFtp2_Site(FHandle, PAnsiChar(StrToCk(siteCommand))));
end;

procedure TFtp2.SleepMs(millisec: Integer);
begin
  CkFtp2_SleepMs(FHandle, millisec);
end;

function TFtp2.Stat: string;
begin
  Result := CkToStr(CkFtp2_Stat(FHandle));
end;

function TFtp2.SyncDeleteRemote(const localRoot: string): Boolean;
begin
  Result := Boolean(CkFtp2_SyncDeleteRemote(FHandle, PAnsiChar(StrToCk(localRoot))));
end;

function TFtp2.SyncLocalDir(const localRoot: string; mode: Integer): Boolean;
begin
  Result := Boolean(CkFtp2_SyncLocalDir(FHandle, PAnsiChar(StrToCk(localRoot)), mode));
end;

function TFtp2.SyncLocalTree(const localRoot: string; mode: Integer): Boolean;
begin
  Result := Boolean(CkFtp2_SyncLocalTree(FHandle, PAnsiChar(StrToCk(localRoot)), mode));
end;

function TFtp2.SyncRemoteTree(const localRoot: string; mode: Integer): Boolean;
begin
  Result := Boolean(CkFtp2_SyncRemoteTree(FHandle, PAnsiChar(StrToCk(localRoot)), mode));
end;

function TFtp2.SyncRemoteTree2(const localDirPath: string; mode: Integer; bDescend: Boolean; bPreviewOnly: Boolean): Boolean;
begin
  Result := Boolean(CkFtp2_SyncRemoteTree2(FHandle, PAnsiChar(StrToCk(localDirPath)), mode, LongBool(bDescend), LongBool(bPreviewOnly)));
end;

function TFtp2.Syst: string;
begin
  Result := CkToStr(CkFtp2_Syst(FHandle));
end;

function TFtp2.GetFileBd(const remoteFilePath: string; binData: TChilkatBase): Boolean;
begin
  Result := Boolean(CkFtp2_GetFileBd(FHandle, PAnsiChar(StrToCk(remoteFilePath)), binData.Handle));
end;

function TFtp2.GetFileSb(const remoteFilePath: string; const charset: string; sb: TChilkatBase): Boolean;
begin
  Result := Boolean(CkFtp2_GetFileSb(FHandle, PAnsiChar(StrToCk(remoteFilePath)), PAnsiChar(StrToCk(charset)), sb.Handle));
end;

function TFtp2.PutFileBd(binData: TChilkatBase; const remoteFilePath: string): Boolean;
begin
  Result := Boolean(CkFtp2_PutFileBd(FHandle, binData.Handle, PAnsiChar(StrToCk(remoteFilePath))));
end;

function TFtp2.PutFileSb(sb: TChilkatBase; const charset: string; includeBom: Boolean; const remoteFilePath: string): Boolean;
begin
  Result := Boolean(CkFtp2_PutFileSb(FHandle, sb.Handle, PAnsiChar(StrToCk(charset)), LongBool(includeBom), PAnsiChar(StrToCk(remoteFilePath))));
end;

function TFtp2.GetFileToStream(const remoteFilePath: string; toStream: TChilkatBase): Boolean;
begin
  Result := Boolean(CkFtp2_GetFileToStream(FHandle, PAnsiChar(StrToCk(remoteFilePath)), toStream.Handle));
end;

function TFtp2.SetSecurePassword(password: TChilkatBase): Boolean;
begin
  Result := Boolean(CkFtp2_SetSecurePassword(FHandle, password.Handle));
end;

procedure TFtp2.GetSyncedFiles(strTable: TChilkatBase);
begin
  CkFtp2_GetSyncedFiles(FHandle, strTable.Handle);
end;

function TFtp2.GetServerCert(cert: TChilkatBase): Boolean;
begin
  Result := Boolean(CkFtp2_GetServerCert(FHandle, cert.Handle));
end;

function TFtp2.AppendFileBd(const remoteFilename: string; bd: TChilkatBase): Boolean;
begin
  Result := Boolean(CkFtp2_AppendFileBd(FHandle, PAnsiChar(StrToCk(remoteFilename)), bd.Handle));
end;

function TFtp2.AppendFileSb(const remoteFilename: string; sb: TChilkatBase; const charset: string): Boolean;
begin
  Result := Boolean(CkFtp2_AppendFileSb(FHandle, PAnsiChar(StrToCk(remoteFilename)), sb.Handle, PAnsiChar(StrToCk(charset))));
end;

procedure TFtp2.GetLastJsonData(json: TChilkatBase);
begin
  CkFtp2_GetLastJsonData(FHandle, json.Handle);
end;

initialization
  Chilkat_GetProcedureAddress(CkFtp2_Create,  'CkFtp2_Create');
  Chilkat_GetProcedureAddress(CkFtp2_Dispose, 'CkFtp2_Dispose');
  Chilkat_GetProcedureAddress(CkFtp2_SetAbortCheckCallback, 'CkFtp2_SetAbortCheckCallback');
  Chilkat_GetProcedureAddress(CkFtp2_SetPercentDoneCallback, 'CkFtp2_SetPercentDoneCallback');
  Chilkat_GetProcedureAddress(CkFtp2_SetProgressInfoCallback, 'CkFtp2_SetProgressInfoCallback');
  Chilkat_GetProcedureAddress(CkFtp2_get_LastErrorHtml, 'CkFtp2_get_LastErrorHtml');
  Chilkat_GetProcedureAddress(CkFtp2_get_LastErrorText, 'CkFtp2_get_LastErrorText');
  Chilkat_GetProcedureAddress(CkFtp2_get_LastErrorXml, 'CkFtp2_get_LastErrorXml');
  Chilkat_GetProcedureAddress(CkFtp2_get_Version, 'CkFtp2_get_Version');
  Chilkat_GetProcedureAddress(CkFtp2_get_DebugLogFilePath, 'CkFtp2_get_DebugLogFilePath');
  Chilkat_GetProcedureAddress(CkFtp2_put_DebugLogFilePath, 'CkFtp2_put_DebugLogFilePath');
  Chilkat_GetProcedureAddress(CkFtp2_get_VerboseLogging, 'CkFtp2_get_VerboseLogging');
  Chilkat_GetProcedureAddress(CkFtp2_put_VerboseLogging, 'CkFtp2_put_VerboseLogging');
  Chilkat_GetProcedureAddress(CkFtp2_get_LastMethodSuccess, 'CkFtp2_get_LastMethodSuccess');
  Chilkat_GetProcedureAddress(CkFtp2_put_LastMethodSuccess, 'CkFtp2_put_LastMethodSuccess');
  Chilkat_GetProcedureAddress(CkFtp2_get_AbortCurrent, 'CkFtp2_get_AbortCurrent');
  Chilkat_GetProcedureAddress(CkFtp2_put_AbortCurrent, 'CkFtp2_put_AbortCurrent');
  Chilkat_GetProcedureAddress(CkFtp2_get_Account, 'CkFtp2_get_Account');
  Chilkat_GetProcedureAddress(CkFtp2_put_Account, 'CkFtp2_put_Account');
  Chilkat_GetProcedureAddress(CkFtp2_get_ActivePortRangeEnd, 'CkFtp2_get_ActivePortRangeEnd');
  Chilkat_GetProcedureAddress(CkFtp2_put_ActivePortRangeEnd, 'CkFtp2_put_ActivePortRangeEnd');
  Chilkat_GetProcedureAddress(CkFtp2_get_ActivePortRangeStart, 'CkFtp2_get_ActivePortRangeStart');
  Chilkat_GetProcedureAddress(CkFtp2_put_ActivePortRangeStart, 'CkFtp2_put_ActivePortRangeStart');
  Chilkat_GetProcedureAddress(CkFtp2_get_AllocateSize, 'CkFtp2_get_AllocateSize');
  Chilkat_GetProcedureAddress(CkFtp2_put_AllocateSize, 'CkFtp2_put_AllocateSize');
  Chilkat_GetProcedureAddress(CkFtp2_get_AllowMlsd, 'CkFtp2_get_AllowMlsd');
  Chilkat_GetProcedureAddress(CkFtp2_put_AllowMlsd, 'CkFtp2_put_AllowMlsd');
  Chilkat_GetProcedureAddress(CkFtp2_get_CurBytesReceived, 'CkFtp2_get_CurBytesReceived');
  Chilkat_GetProcedureAddress(CkFtp2_get_CurBytesReceived64, 'CkFtp2_get_CurBytesReceived64');
  Chilkat_GetProcedureAddress(CkFtp2_get_CurBytesReceivedStr, 'CkFtp2_get_CurBytesReceivedStr');
  Chilkat_GetProcedureAddress(CkFtp2_get_CurBytesSent, 'CkFtp2_get_CurBytesSent');
  Chilkat_GetProcedureAddress(CkFtp2_get_CurBytesSent64, 'CkFtp2_get_CurBytesSent64');
  Chilkat_GetProcedureAddress(CkFtp2_get_CurBytesSentStr, 'CkFtp2_get_CurBytesSentStr');
  Chilkat_GetProcedureAddress(CkFtp2_get_AuthSsl, 'CkFtp2_get_AuthSsl');
  Chilkat_GetProcedureAddress(CkFtp2_put_AuthSsl, 'CkFtp2_put_AuthSsl');
  Chilkat_GetProcedureAddress(CkFtp2_get_AuthTls, 'CkFtp2_get_AuthTls');
  Chilkat_GetProcedureAddress(CkFtp2_put_AuthTls, 'CkFtp2_put_AuthTls');
  Chilkat_GetProcedureAddress(CkFtp2_get_AutoFeat, 'CkFtp2_get_AutoFeat');
  Chilkat_GetProcedureAddress(CkFtp2_put_AutoFeat, 'CkFtp2_put_AutoFeat');
  Chilkat_GetProcedureAddress(CkFtp2_get_AutoFix, 'CkFtp2_get_AutoFix');
  Chilkat_GetProcedureAddress(CkFtp2_put_AutoFix, 'CkFtp2_put_AutoFix');
  Chilkat_GetProcedureAddress(CkFtp2_get_AutoGetSizeForProgress, 'CkFtp2_get_AutoGetSizeForProgress');
  Chilkat_GetProcedureAddress(CkFtp2_put_AutoGetSizeForProgress, 'CkFtp2_put_AutoGetSizeForProgress');
  Chilkat_GetProcedureAddress(CkFtp2_get_AutoOptsUtf8, 'CkFtp2_get_AutoOptsUtf8');
  Chilkat_GetProcedureAddress(CkFtp2_put_AutoOptsUtf8, 'CkFtp2_put_AutoOptsUtf8');
  Chilkat_GetProcedureAddress(CkFtp2_get_AutoSetUseEpsv, 'CkFtp2_get_AutoSetUseEpsv');
  Chilkat_GetProcedureAddress(CkFtp2_put_AutoSetUseEpsv, 'CkFtp2_put_AutoSetUseEpsv');
  Chilkat_GetProcedureAddress(CkFtp2_get_AutoSyst, 'CkFtp2_get_AutoSyst');
  Chilkat_GetProcedureAddress(CkFtp2_put_AutoSyst, 'CkFtp2_put_AutoSyst');
  Chilkat_GetProcedureAddress(CkFtp2_get_AutoXcrc, 'CkFtp2_get_AutoXcrc');
  Chilkat_GetProcedureAddress(CkFtp2_put_AutoXcrc, 'CkFtp2_put_AutoXcrc');
  Chilkat_GetProcedureAddress(CkFtp2_get_BandwidthThrottleDown, 'CkFtp2_get_BandwidthThrottleDown');
  Chilkat_GetProcedureAddress(CkFtp2_put_BandwidthThrottleDown, 'CkFtp2_put_BandwidthThrottleDown');
  Chilkat_GetProcedureAddress(CkFtp2_get_BandwidthThrottleUp, 'CkFtp2_get_BandwidthThrottleUp');
  Chilkat_GetProcedureAddress(CkFtp2_put_BandwidthThrottleUp, 'CkFtp2_put_BandwidthThrottleUp');
  Chilkat_GetProcedureAddress(CkFtp2_get_ClientIpAddress, 'CkFtp2_get_ClientIpAddress');
  Chilkat_GetProcedureAddress(CkFtp2_put_ClientIpAddress, 'CkFtp2_put_ClientIpAddress');
  Chilkat_GetProcedureAddress(CkFtp2_get_CommandCharset, 'CkFtp2_get_CommandCharset');
  Chilkat_GetProcedureAddress(CkFtp2_put_CommandCharset, 'CkFtp2_put_CommandCharset');
  Chilkat_GetProcedureAddress(CkFtp2_get_ConnectFailReason, 'CkFtp2_get_ConnectFailReason');
  Chilkat_GetProcedureAddress(CkFtp2_get_ConnectTimeout, 'CkFtp2_get_ConnectTimeout');
  Chilkat_GetProcedureAddress(CkFtp2_put_ConnectTimeout, 'CkFtp2_put_ConnectTimeout');
  Chilkat_GetProcedureAddress(CkFtp2_get_ConnectVerified, 'CkFtp2_get_ConnectVerified');
  Chilkat_GetProcedureAddress(CkFtp2_get_CrlfMode, 'CkFtp2_get_CrlfMode');
  Chilkat_GetProcedureAddress(CkFtp2_put_CrlfMode, 'CkFtp2_put_CrlfMode');
  Chilkat_GetProcedureAddress(CkFtp2_get_DataProtection, 'CkFtp2_get_DataProtection');
  Chilkat_GetProcedureAddress(CkFtp2_put_DataProtection, 'CkFtp2_put_DataProtection');
  Chilkat_GetProcedureAddress(CkFtp2_get_DirListingCharset, 'CkFtp2_get_DirListingCharset');
  Chilkat_GetProcedureAddress(CkFtp2_put_DirListingCharset, 'CkFtp2_put_DirListingCharset');
  Chilkat_GetProcedureAddress(CkFtp2_get_DownloadTransferRate, 'CkFtp2_get_DownloadTransferRate');
  Chilkat_GetProcedureAddress(CkFtp2_get_ForcePortIpAddress, 'CkFtp2_get_ForcePortIpAddress');
  Chilkat_GetProcedureAddress(CkFtp2_put_ForcePortIpAddress, 'CkFtp2_put_ForcePortIpAddress');
  Chilkat_GetProcedureAddress(CkFtp2_get_Greeting, 'CkFtp2_get_Greeting');
  Chilkat_GetProcedureAddress(CkFtp2_get_HasModeZ, 'CkFtp2_get_HasModeZ');
  Chilkat_GetProcedureAddress(CkFtp2_get_HeartbeatMs, 'CkFtp2_get_HeartbeatMs');
  Chilkat_GetProcedureAddress(CkFtp2_put_HeartbeatMs, 'CkFtp2_put_HeartbeatMs');
  Chilkat_GetProcedureAddress(CkFtp2_get_Hostname, 'CkFtp2_get_Hostname');
  Chilkat_GetProcedureAddress(CkFtp2_put_Hostname, 'CkFtp2_put_Hostname');
  Chilkat_GetProcedureAddress(CkFtp2_get_HttpProxyAuthMethod, 'CkFtp2_get_HttpProxyAuthMethod');
  Chilkat_GetProcedureAddress(CkFtp2_put_HttpProxyAuthMethod, 'CkFtp2_put_HttpProxyAuthMethod');
  Chilkat_GetProcedureAddress(CkFtp2_get_HttpProxyDomain, 'CkFtp2_get_HttpProxyDomain');
  Chilkat_GetProcedureAddress(CkFtp2_put_HttpProxyDomain, 'CkFtp2_put_HttpProxyDomain');
  Chilkat_GetProcedureAddress(CkFtp2_get_HttpProxyHostname, 'CkFtp2_get_HttpProxyHostname');
  Chilkat_GetProcedureAddress(CkFtp2_put_HttpProxyHostname, 'CkFtp2_put_HttpProxyHostname');
  Chilkat_GetProcedureAddress(CkFtp2_get_HttpProxyPassword, 'CkFtp2_get_HttpProxyPassword');
  Chilkat_GetProcedureAddress(CkFtp2_put_HttpProxyPassword, 'CkFtp2_put_HttpProxyPassword');
  Chilkat_GetProcedureAddress(CkFtp2_get_HttpProxyPort, 'CkFtp2_get_HttpProxyPort');
  Chilkat_GetProcedureAddress(CkFtp2_put_HttpProxyPort, 'CkFtp2_put_HttpProxyPort');
  Chilkat_GetProcedureAddress(CkFtp2_get_HttpProxyUsername, 'CkFtp2_get_HttpProxyUsername');
  Chilkat_GetProcedureAddress(CkFtp2_put_HttpProxyUsername, 'CkFtp2_put_HttpProxyUsername');
  Chilkat_GetProcedureAddress(CkFtp2_get_IdleTimeoutMs, 'CkFtp2_get_IdleTimeoutMs');
  Chilkat_GetProcedureAddress(CkFtp2_put_IdleTimeoutMs, 'CkFtp2_put_IdleTimeoutMs');
  Chilkat_GetProcedureAddress(CkFtp2_get_IsConnected, 'CkFtp2_get_IsConnected');
  Chilkat_GetProcedureAddress(CkFtp2_get_KeepSessionLog, 'CkFtp2_get_KeepSessionLog');
  Chilkat_GetProcedureAddress(CkFtp2_put_KeepSessionLog, 'CkFtp2_put_KeepSessionLog');
  Chilkat_GetProcedureAddress(CkFtp2_get_LastReply, 'CkFtp2_get_LastReply');
  Chilkat_GetProcedureAddress(CkFtp2_get_ListPattern, 'CkFtp2_get_ListPattern');
  Chilkat_GetProcedureAddress(CkFtp2_put_ListPattern, 'CkFtp2_put_ListPattern');
  Chilkat_GetProcedureAddress(CkFtp2_get_LoginVerified, 'CkFtp2_get_LoginVerified');
  Chilkat_GetProcedureAddress(CkFtp2_get_PartialTransfer, 'CkFtp2_get_PartialTransfer');
  Chilkat_GetProcedureAddress(CkFtp2_get_Passive, 'CkFtp2_get_Passive');
  Chilkat_GetProcedureAddress(CkFtp2_put_Passive, 'CkFtp2_put_Passive');
  Chilkat_GetProcedureAddress(CkFtp2_get_PassiveUseHostAddr, 'CkFtp2_get_PassiveUseHostAddr');
  Chilkat_GetProcedureAddress(CkFtp2_put_PassiveUseHostAddr, 'CkFtp2_put_PassiveUseHostAddr');
  Chilkat_GetProcedureAddress(CkFtp2_get_Password, 'CkFtp2_get_Password');
  Chilkat_GetProcedureAddress(CkFtp2_put_Password, 'CkFtp2_put_Password');
  Chilkat_GetProcedureAddress(CkFtp2_get_PercentDoneScale, 'CkFtp2_get_PercentDoneScale');
  Chilkat_GetProcedureAddress(CkFtp2_put_PercentDoneScale, 'CkFtp2_put_PercentDoneScale');
  Chilkat_GetProcedureAddress(CkFtp2_get_Port, 'CkFtp2_get_Port');
  Chilkat_GetProcedureAddress(CkFtp2_put_Port, 'CkFtp2_put_Port');
  Chilkat_GetProcedureAddress(CkFtp2_get_PreferIpv6, 'CkFtp2_get_PreferIpv6');
  Chilkat_GetProcedureAddress(CkFtp2_put_PreferIpv6, 'CkFtp2_put_PreferIpv6');
  Chilkat_GetProcedureAddress(CkFtp2_get_PreferNlst, 'CkFtp2_get_PreferNlst');
  Chilkat_GetProcedureAddress(CkFtp2_put_PreferNlst, 'CkFtp2_put_PreferNlst');
  Chilkat_GetProcedureAddress(CkFtp2_get_ProgressMonSize, 'CkFtp2_get_ProgressMonSize');
  Chilkat_GetProcedureAddress(CkFtp2_put_ProgressMonSize, 'CkFtp2_put_ProgressMonSize');
  Chilkat_GetProcedureAddress(CkFtp2_get_ProgressMonSize64, 'CkFtp2_get_ProgressMonSize64');
  Chilkat_GetProcedureAddress(CkFtp2_put_ProgressMonSize64, 'CkFtp2_put_ProgressMonSize64');
  Chilkat_GetProcedureAddress(CkFtp2_get_ProxyHostname, 'CkFtp2_get_ProxyHostname');
  Chilkat_GetProcedureAddress(CkFtp2_put_ProxyHostname, 'CkFtp2_put_ProxyHostname');
  Chilkat_GetProcedureAddress(CkFtp2_get_ProxyMethod, 'CkFtp2_get_ProxyMethod');
  Chilkat_GetProcedureAddress(CkFtp2_put_ProxyMethod, 'CkFtp2_put_ProxyMethod');
  Chilkat_GetProcedureAddress(CkFtp2_get_ProxyPassword, 'CkFtp2_get_ProxyPassword');
  Chilkat_GetProcedureAddress(CkFtp2_put_ProxyPassword, 'CkFtp2_put_ProxyPassword');
  Chilkat_GetProcedureAddress(CkFtp2_get_ProxyPort, 'CkFtp2_get_ProxyPort');
  Chilkat_GetProcedureAddress(CkFtp2_put_ProxyPort, 'CkFtp2_put_ProxyPort');
  Chilkat_GetProcedureAddress(CkFtp2_get_ProxyUsername, 'CkFtp2_get_ProxyUsername');
  Chilkat_GetProcedureAddress(CkFtp2_put_ProxyUsername, 'CkFtp2_put_ProxyUsername');
  Chilkat_GetProcedureAddress(CkFtp2_get_ReadTimeout, 'CkFtp2_get_ReadTimeout');
  Chilkat_GetProcedureAddress(CkFtp2_put_ReadTimeout, 'CkFtp2_put_ReadTimeout');
  Chilkat_GetProcedureAddress(CkFtp2_get_RequireSslCertVerify, 'CkFtp2_get_RequireSslCertVerify');
  Chilkat_GetProcedureAddress(CkFtp2_put_RequireSslCertVerify, 'CkFtp2_put_RequireSslCertVerify');
  Chilkat_GetProcedureAddress(CkFtp2_get_RestartNext, 'CkFtp2_get_RestartNext');
  Chilkat_GetProcedureAddress(CkFtp2_put_RestartNext, 'CkFtp2_put_RestartNext');
  Chilkat_GetProcedureAddress(CkFtp2_get_SessionLog, 'CkFtp2_get_SessionLog');
  Chilkat_GetProcedureAddress(CkFtp2_get_SoRcvBuf, 'CkFtp2_get_SoRcvBuf');
  Chilkat_GetProcedureAddress(CkFtp2_put_SoRcvBuf, 'CkFtp2_put_SoRcvBuf');
  Chilkat_GetProcedureAddress(CkFtp2_get_SoSndBuf, 'CkFtp2_get_SoSndBuf');
  Chilkat_GetProcedureAddress(CkFtp2_put_SoSndBuf, 'CkFtp2_put_SoSndBuf');
  Chilkat_GetProcedureAddress(CkFtp2_get_SocksHostname, 'CkFtp2_get_SocksHostname');
  Chilkat_GetProcedureAddress(CkFtp2_put_SocksHostname, 'CkFtp2_put_SocksHostname');
  Chilkat_GetProcedureAddress(CkFtp2_get_SocksPassword, 'CkFtp2_get_SocksPassword');
  Chilkat_GetProcedureAddress(CkFtp2_put_SocksPassword, 'CkFtp2_put_SocksPassword');
  Chilkat_GetProcedureAddress(CkFtp2_get_SocksPort, 'CkFtp2_get_SocksPort');
  Chilkat_GetProcedureAddress(CkFtp2_put_SocksPort, 'CkFtp2_put_SocksPort');
  Chilkat_GetProcedureAddress(CkFtp2_get_SocksUsername, 'CkFtp2_get_SocksUsername');
  Chilkat_GetProcedureAddress(CkFtp2_put_SocksUsername, 'CkFtp2_put_SocksUsername');
  Chilkat_GetProcedureAddress(CkFtp2_get_SocksVersion, 'CkFtp2_get_SocksVersion');
  Chilkat_GetProcedureAddress(CkFtp2_put_SocksVersion, 'CkFtp2_put_SocksVersion');
  Chilkat_GetProcedureAddress(CkFtp2_get_Ssl, 'CkFtp2_get_Ssl');
  Chilkat_GetProcedureAddress(CkFtp2_put_Ssl, 'CkFtp2_put_Ssl');
  Chilkat_GetProcedureAddress(CkFtp2_get_SslAllowedCiphers, 'CkFtp2_get_SslAllowedCiphers');
  Chilkat_GetProcedureAddress(CkFtp2_put_SslAllowedCiphers, 'CkFtp2_put_SslAllowedCiphers');
  Chilkat_GetProcedureAddress(CkFtp2_get_SslProtocol, 'CkFtp2_get_SslProtocol');
  Chilkat_GetProcedureAddress(CkFtp2_put_SslProtocol, 'CkFtp2_put_SslProtocol');
  Chilkat_GetProcedureAddress(CkFtp2_get_SslServerCertVerified, 'CkFtp2_get_SslServerCertVerified');
  Chilkat_GetProcedureAddress(CkFtp2_get_SyncMustMatch, 'CkFtp2_get_SyncMustMatch');
  Chilkat_GetProcedureAddress(CkFtp2_put_SyncMustMatch, 'CkFtp2_put_SyncMustMatch');
  Chilkat_GetProcedureAddress(CkFtp2_get_SyncMustNotMatch, 'CkFtp2_get_SyncMustNotMatch');
  Chilkat_GetProcedureAddress(CkFtp2_put_SyncMustNotMatch, 'CkFtp2_put_SyncMustNotMatch');
  Chilkat_GetProcedureAddress(CkFtp2_get_SyncPreview, 'CkFtp2_get_SyncPreview');
  Chilkat_GetProcedureAddress(CkFtp2_get_TlsCipherSuite, 'CkFtp2_get_TlsCipherSuite');
  Chilkat_GetProcedureAddress(CkFtp2_get_TlsPinSet, 'CkFtp2_get_TlsPinSet');
  Chilkat_GetProcedureAddress(CkFtp2_put_TlsPinSet, 'CkFtp2_put_TlsPinSet');
  Chilkat_GetProcedureAddress(CkFtp2_get_TlsVersion, 'CkFtp2_get_TlsVersion');
  Chilkat_GetProcedureAddress(CkFtp2_get_UploadTransferRate, 'CkFtp2_get_UploadTransferRate');
  Chilkat_GetProcedureAddress(CkFtp2_get_UseEpsv, 'CkFtp2_get_UseEpsv');
  Chilkat_GetProcedureAddress(CkFtp2_put_UseEpsv, 'CkFtp2_put_UseEpsv');
  Chilkat_GetProcedureAddress(CkFtp2_get_Username, 'CkFtp2_get_Username');
  Chilkat_GetProcedureAddress(CkFtp2_put_Username, 'CkFtp2_put_Username');
  Chilkat_GetProcedureAddress(CkFtp2_get_LargeFileMeasures, 'CkFtp2_get_LargeFileMeasures');
  Chilkat_GetProcedureAddress(CkFtp2_put_LargeFileMeasures, 'CkFtp2_put_LargeFileMeasures');
  Chilkat_GetProcedureAddress(CkFtp2_get_SyncMustMatchDir, 'CkFtp2_get_SyncMustMatchDir');
  Chilkat_GetProcedureAddress(CkFtp2_put_SyncMustMatchDir, 'CkFtp2_put_SyncMustMatchDir');
  Chilkat_GetProcedureAddress(CkFtp2_get_SyncMustNotMatchDir, 'CkFtp2_get_SyncMustNotMatchDir');
  Chilkat_GetProcedureAddress(CkFtp2_put_SyncMustNotMatchDir, 'CkFtp2_put_SyncMustNotMatchDir');
  Chilkat_GetProcedureAddress(CkFtp2_get_SyncCreateAllLocalDirs, 'CkFtp2_get_SyncCreateAllLocalDirs');
  Chilkat_GetProcedureAddress(CkFtp2_put_SyncCreateAllLocalDirs, 'CkFtp2_put_SyncCreateAllLocalDirs');
  Chilkat_GetProcedureAddress(CkFtp2_get_UncommonOptions, 'CkFtp2_get_UncommonOptions');
  Chilkat_GetProcedureAddress(CkFtp2_put_UncommonOptions, 'CkFtp2_put_UncommonOptions');
  Chilkat_GetProcedureAddress(CkFtp2_get_ListOption, 'CkFtp2_get_ListOption');
  Chilkat_GetProcedureAddress(CkFtp2_put_ListOption, 'CkFtp2_put_ListOption');
  Chilkat_GetProcedureAddress(CkFtp2_get_EnableSecrets, 'CkFtp2_get_EnableSecrets');
  Chilkat_GetProcedureAddress(CkFtp2_put_EnableSecrets, 'CkFtp2_put_EnableSecrets');
  Chilkat_GetProcedureAddress(CkFtp2_AppendFile, 'CkFtp2_AppendFile');
  Chilkat_GetProcedureAddress(CkFtp2_AppendFileFromTextData, 'CkFtp2_AppendFileFromTextData');
  Chilkat_GetProcedureAddress(CkFtp2_ChangeRemoteDir, 'CkFtp2_ChangeRemoteDir');
  Chilkat_GetProcedureAddress(CkFtp2_CheckConnection, 'CkFtp2_CheckConnection');
  Chilkat_GetProcedureAddress(CkFtp2_ClearControlChannel, 'CkFtp2_ClearControlChannel');
  Chilkat_GetProcedureAddress(CkFtp2_ClearDirCache, 'CkFtp2_ClearDirCache');
  Chilkat_GetProcedureAddress(CkFtp2_ClearSessionLog, 'CkFtp2_ClearSessionLog');
  Chilkat_GetProcedureAddress(CkFtp2_Connect, 'CkFtp2_Connect');
  Chilkat_GetProcedureAddress(CkFtp2_ConnectOnly, 'CkFtp2_ConnectOnly');
  Chilkat_GetProcedureAddress(CkFtp2_ConvertToTls, 'CkFtp2_ConvertToTls');
  Chilkat_GetProcedureAddress(CkFtp2_CreatePlan, 'CkFtp2_CreatePlan');
  Chilkat_GetProcedureAddress(CkFtp2_CreateRemoteDir, 'CkFtp2_CreateRemoteDir');
  Chilkat_GetProcedureAddress(CkFtp2_DeleteMatching, 'CkFtp2_DeleteMatching');
  Chilkat_GetProcedureAddress(CkFtp2_DeleteRemoteFile, 'CkFtp2_DeleteRemoteFile');
  Chilkat_GetProcedureAddress(CkFtp2_DeleteTree, 'CkFtp2_DeleteTree');
  Chilkat_GetProcedureAddress(CkFtp2_DirTreeXml, 'CkFtp2_DirTreeXml');
  Chilkat_GetProcedureAddress(CkFtp2_Disconnect, 'CkFtp2_Disconnect');
  Chilkat_GetProcedureAddress(CkFtp2_DownloadTree, 'CkFtp2_DownloadTree');
  Chilkat_GetProcedureAddress(CkFtp2_Feat, 'CkFtp2_Feat');
  Chilkat_GetProcedureAddress(CkFtp2_GetCreateTimeByNameStr, 'CkFtp2_GetCreateTimeByNameStr');
  Chilkat_GetProcedureAddress(CkFtp2_GetCreateTimeStr, 'CkFtp2_GetCreateTimeStr');
  Chilkat_GetProcedureAddress(CkFtp2_GetCurrentRemoteDir, 'CkFtp2_GetCurrentRemoteDir');
  Chilkat_GetProcedureAddress(CkFtp2_GetDirCount, 'CkFtp2_GetDirCount');
  Chilkat_GetProcedureAddress(CkFtp2_GetFile, 'CkFtp2_GetFile');
  Chilkat_GetProcedureAddress(CkFtp2_GetFilename, 'CkFtp2_GetFilename');
  Chilkat_GetProcedureAddress(CkFtp2_GetGroup, 'CkFtp2_GetGroup');
  Chilkat_GetProcedureAddress(CkFtp2_GetIsDirectory, 'CkFtp2_GetIsDirectory');
  Chilkat_GetProcedureAddress(CkFtp2_GetIsSymbolicLink, 'CkFtp2_GetIsSymbolicLink');
  Chilkat_GetProcedureAddress(CkFtp2_GetLastModifiedTimeByNameStr, 'CkFtp2_GetLastModifiedTimeByNameStr');
  Chilkat_GetProcedureAddress(CkFtp2_GetLastModifiedTimeStr, 'CkFtp2_GetLastModifiedTimeStr');
  Chilkat_GetProcedureAddress(CkFtp2_GetOwner, 'CkFtp2_GetOwner');
  Chilkat_GetProcedureAddress(CkFtp2_GetPermType, 'CkFtp2_GetPermType');
  Chilkat_GetProcedureAddress(CkFtp2_GetPermissions, 'CkFtp2_GetPermissions');
  Chilkat_GetProcedureAddress(CkFtp2_GetRemoteFileTextC, 'CkFtp2_GetRemoteFileTextC');
  Chilkat_GetProcedureAddress(CkFtp2_GetRemoteFileTextData, 'CkFtp2_GetRemoteFileTextData');
  Chilkat_GetProcedureAddress(CkFtp2_GetSize, 'CkFtp2_GetSize');
  Chilkat_GetProcedureAddress(CkFtp2_GetSize64, 'CkFtp2_GetSize64');
  Chilkat_GetProcedureAddress(CkFtp2_GetSizeByName, 'CkFtp2_GetSizeByName');
  Chilkat_GetProcedureAddress(CkFtp2_GetSizeByName64, 'CkFtp2_GetSizeByName64');
  Chilkat_GetProcedureAddress(CkFtp2_GetSizeStr, 'CkFtp2_GetSizeStr');
  Chilkat_GetProcedureAddress(CkFtp2_GetSizeStrByName, 'CkFtp2_GetSizeStrByName');
  Chilkat_GetProcedureAddress(CkFtp2_GetTextDirListing, 'CkFtp2_GetTextDirListing');
  Chilkat_GetProcedureAddress(CkFtp2_GetXmlDirListing, 'CkFtp2_GetXmlDirListing');
  Chilkat_GetProcedureAddress(CkFtp2_LargeFileUpload, 'CkFtp2_LargeFileUpload');
  Chilkat_GetProcedureAddress(CkFtp2_LoginAfterConnectOnly, 'CkFtp2_LoginAfterConnectOnly');
  Chilkat_GetProcedureAddress(CkFtp2_MGetFiles, 'CkFtp2_MGetFiles');
  Chilkat_GetProcedureAddress(CkFtp2_MPutFiles, 'CkFtp2_MPutFiles');
  Chilkat_GetProcedureAddress(CkFtp2_NlstXml, 'CkFtp2_NlstXml');
  Chilkat_GetProcedureAddress(CkFtp2_Noop, 'CkFtp2_Noop');
  Chilkat_GetProcedureAddress(CkFtp2_PutFile, 'CkFtp2_PutFile');
  Chilkat_GetProcedureAddress(CkFtp2_PutFileFromTextData, 'CkFtp2_PutFileFromTextData');
  Chilkat_GetProcedureAddress(CkFtp2_PutPlan, 'CkFtp2_PutPlan');
  Chilkat_GetProcedureAddress(CkFtp2_PutTree, 'CkFtp2_PutTree');
  Chilkat_GetProcedureAddress(CkFtp2_Quote, 'CkFtp2_Quote');
  Chilkat_GetProcedureAddress(CkFtp2_RemoveRemoteDir, 'CkFtp2_RemoveRemoteDir');
  Chilkat_GetProcedureAddress(CkFtp2_RenameRemoteFile, 'CkFtp2_RenameRemoteFile');
  Chilkat_GetProcedureAddress(CkFtp2_SendCommand, 'CkFtp2_SendCommand');
  Chilkat_GetProcedureAddress(CkFtp2_SetModeZ, 'CkFtp2_SetModeZ');
  Chilkat_GetProcedureAddress(CkFtp2_SetOldestDateStr, 'CkFtp2_SetOldestDateStr');
  Chilkat_GetProcedureAddress(CkFtp2_SetOption, 'CkFtp2_SetOption');
  Chilkat_GetProcedureAddress(CkFtp2_SetRemoteFileDateTimeStr, 'CkFtp2_SetRemoteFileDateTimeStr');
  Chilkat_GetProcedureAddress(CkFtp2_SetRemoteFileDt, 'CkFtp2_SetRemoteFileDt');
  Chilkat_GetProcedureAddress(CkFtp2_SetSslCertRequirement, 'CkFtp2_SetSslCertRequirement');
  Chilkat_GetProcedureAddress(CkFtp2_SetSslClientCert, 'CkFtp2_SetSslClientCert');
  Chilkat_GetProcedureAddress(CkFtp2_SetSslClientCertPem, 'CkFtp2_SetSslClientCertPem');
  Chilkat_GetProcedureAddress(CkFtp2_SetSslClientCertPfx, 'CkFtp2_SetSslClientCertPfx');
  Chilkat_GetProcedureAddress(CkFtp2_SetTypeAscii, 'CkFtp2_SetTypeAscii');
  Chilkat_GetProcedureAddress(CkFtp2_SetTypeBinary, 'CkFtp2_SetTypeBinary');
  Chilkat_GetProcedureAddress(CkFtp2_Site, 'CkFtp2_Site');
  Chilkat_GetProcedureAddress(CkFtp2_SleepMs, 'CkFtp2_SleepMs');
  Chilkat_GetProcedureAddress(CkFtp2_Stat, 'CkFtp2_Stat');
  Chilkat_GetProcedureAddress(CkFtp2_SyncDeleteRemote, 'CkFtp2_SyncDeleteRemote');
  Chilkat_GetProcedureAddress(CkFtp2_SyncLocalDir, 'CkFtp2_SyncLocalDir');
  Chilkat_GetProcedureAddress(CkFtp2_SyncLocalTree, 'CkFtp2_SyncLocalTree');
  Chilkat_GetProcedureAddress(CkFtp2_SyncRemoteTree, 'CkFtp2_SyncRemoteTree');
  Chilkat_GetProcedureAddress(CkFtp2_SyncRemoteTree2, 'CkFtp2_SyncRemoteTree2');
  Chilkat_GetProcedureAddress(CkFtp2_Syst, 'CkFtp2_Syst');
  Chilkat_GetProcedureAddress(CkFtp2_GetFileBd, 'CkFtp2_GetFileBd');
  Chilkat_GetProcedureAddress(CkFtp2_GetFileSb, 'CkFtp2_GetFileSb');
  Chilkat_GetProcedureAddress(CkFtp2_PutFileBd, 'CkFtp2_PutFileBd');
  Chilkat_GetProcedureAddress(CkFtp2_PutFileSb, 'CkFtp2_PutFileSb');
  Chilkat_GetProcedureAddress(CkFtp2_GetFileToStream, 'CkFtp2_GetFileToStream');
  Chilkat_GetProcedureAddress(CkFtp2_SetSecurePassword, 'CkFtp2_SetSecurePassword');
  Chilkat_GetProcedureAddress(CkFtp2_GetSyncedFiles, 'CkFtp2_GetSyncedFiles');
  Chilkat_GetProcedureAddress(CkFtp2_GetServerCert, 'CkFtp2_GetServerCert');
  Chilkat_GetProcedureAddress(CkFtp2_AppendFileBd, 'CkFtp2_AppendFileBd');
  Chilkat_GetProcedureAddress(CkFtp2_AppendFileSb, 'CkFtp2_AppendFileSb');
  Chilkat_GetProcedureAddress(CkFtp2_GetLastJsonData, 'CkFtp2_GetLastJsonData');

end.
