anchor.diff:    SetLength(target,64);
     move(leftBytes,target[0],32);
     move(rightBytes,target[32],32);
  +end;
  +
  +class procedure TBaseType.Concat(const leftBytes, rightBytes: TDynRawBytes; var target: TDynRawBytes);
  +begin
  +  SetLength(target,Length(leftBytes)+Length(rightBytes));
  +  move(leftBytes[Low(leftBytes)],target[0],Length(leftBytes));
  +  move(rightBytes[Low(rightBytes)],target[High(leftBytes)+1],Length(rightBytes));
   end;
   
   class function TBaseType.Equals(const v1, v2: T32Bytes) : Boolean;
  
positive.code: Uses windows;
  {$ENDIF}
  
  { TBaseType }
  
  {$IFnDEF FPC}
  
negative.code:   FillByte(dest[0],32,0);
  end;
  
  class function TBaseType.FindIn(const subst, target: TRawBytes): Integer;
  var iSubs, iTarget : Integer;
  begin
    Result := -1;
    for iTarget := 0 to (High(target)-Length(subst)+1) do begin
      iSubs := 0;
      while (iSubs<=High(subst)) and (target[iSubs+iTarget]=subst[iSubs]) do inc(iSubs);
      if (iSubs>High(subst)) then begin
        Result := iTarget;
        Exit;
      end;
    end;
  end;
  
  class function TBaseType.IsEmpty(const value: T32Bytes): Boolean;
  Var i : Integer;
  begin
  