anchor.diff:  end;
   
   { TOperationsDataSourceBase }
  -
  -constructor TOperationsDataSourceBase.Create(AOwner: TComponent);
  -var
  -  node: TNode;
  -begin
  -  inherited Create(AOwner);
  -  node := TNode.Node;
  -  if Assigned(Node) then begin
  -    FStart := 0;
  -    FEnd := node.Bank.BlocksCount - 1;
  -  end else begin
  -    FStart := 0;
  -    FEnd := 0;
  -  end;
  -end;
  -
  -function TOperationsDataSourceBase.GetTimeSpan: TTimeSpan;
  -begin
  -  Result := TTimeSpan.FromSeconds(CT_NewLineSecondsAvg * (FEnd - FStart + 1));
  -end;
  -
  -procedure TOperationsDataSourceBase.SetTimeSpan(const ASpan: TTimeSpan);
  -var
  -  node: TNode;
  -begin
  -  node := TNode.Node;
  -  if not Assigned(Node) then
  -    exit;
  -  FEnd := node.Bank.BlocksCount - 1;
  -  FStart := ClipValue(FEnd - (ASpan.TotalBlockCount + 1), 0, FEnd);
  -end;
   
   function TOperationsDataSourceBase.GetColumns: TDataColumns;
   begin
  
positive.code:   { TOperationsDataSource }
  
    TOperationsDataSource = class(TOperationsDataSourceBase)
    public
      procedure FetchAll(const AContainer: TList<TOperationResume>); override;
    end;
  
  
negative.code:   { TOperationsDataSourceBase }
  
    TOperationsDataSourceBase = class(TCustomDataSource<TOperationResume>)
    protected
      function GetColumns: TDataColumns; override;
    public
      function GetItemField(constref AItem: TOperationResume; const ABindingName: ansistring): variant; override;
    end;
  
  