anchor.diff:      function HasUserDataChanged : boolean; overload;
       function HasUserDataChanged(out AChangedAccounts : TArray<TAccount>) : boolean; overload;
       procedure OnPrivateKeysChanged(Sender: TObject);
  +    procedure OnUserAccountsChanged(Sender: TObject);
       procedure OnNodeBlocksChanged(Sender: TObject);
       procedure OnNodeNewOperation(Sender: TObject);
       procedure OnAccountsSelected(Sender: TObject; constref ASelection: TVisualGridSelection);
  
positive.code:     FAccountsGrid: TVisualGrid;
      FOperationsGrid: TVisualGrid;
      FUserData : TUserSummary;
      FAccountsDataSource: TFastAccountsDataSource;
      FOperationsDataSource: TAccountsOperationsDataSource;
      procedure SetAccountsMode(AMode: TCTRLWalletAccountsMode);
      procedure SetOperationsMode(AMode: TCTRLWalletOperationsMode);
  
negative.code: 
  begin
    FUserData := TUserInterface.Node.Bank.SafeBox.GetUserSummary(TWallet.Keys.AccountsKeyList.ToArray, true);
    FNodeNotifyEvents.WatchKeys.Clear;
    FNodeNotifyEvents.WatchKeys.AddAccountKeys(FUserData.Keys);
    if cbAccounts.ItemIndex = 0 then
      FAccountsDataSource.FilterKeys := FUserData.Keys;
    FOperationsDataSource.Accounts := TListTool<TAccount, cardinal>.Transform(FUserData.Accounts, GetAccNo);
  end;
  
  