Could not load type ‘Microsoft.AnalysisServices.SharePoint.Integration.ReportGalleryView’

March 18, 2019 Leave a comment

If you ran into this issue, the first thing you need to do is check if the PowerPivot solution is deployed to the web applications. You  can do this by going to Central Administration > System Settings > Manage Farm Solutions and there you should see the solution powerpivotwebapplication.wsp. Make sure it is deployed to the correct web applications. If you are still running into issues, reinstall the rsPowerPivot addin on the frontend server where you are experiencing the issue. Uninstalling and reinstalling it makes sure all the dll’s are deployed correctly. Repairing the add-in in my case did not fix the issue.

Categories: Uncategorized

Deleting and restoring a site collection.

March 18, 2019 Leave a comment

Issues pop up when you delete a site collection and then want to restore it from a backup. When you delete a site collection it is not completely deleted from the content database. If at that point you try to restore it from a backup it will fail. The solution to this is quite easy, but when I saw the posts out there who propse database modifications (which is not supported by the way) I decided to put up a post.

The correct way to do it is the following:


This will give you an overview of the sites that are deleted but still  “out there”.

The property we are interested in is the site id.

Now create the content database object:

$webapp = Get-SPWebApplication

$cdb = $webapp.ContentDatabases.Item(0)

Then we will force the delete of the site with the id from the previous command Get-SPDeletedSite.


Now you should be able to restore your site collections without any issues.

Categories: Uncategorized

Distributed Cache Service cannot be started

March 18, 2019 Leave a comment

Today we ran into an interesting problem. The distributed cache service was no longer working. As it was a single server environment, we removed the service instance and reprovisioned it following:

$instanceName =”SPDistributedCacheService Name=AppFabricCachingService”
$serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($ -eq $env:computername}
$instanceName =”SPDistributedCacheService Name=AppFabricCachingService”
$serviceInstance = Get-SPServiceInstance | ? {($_.service.tostring()) -eq $instanceName -and ($ -eq $env:computername}

Strangely, it refused to start and went back to the services page. In the end, the following powershell fixed the distributed cache (after we re-added the spserviceinstance)

Categories: Uncategorized

SharePoint 2013 Adding Server to the Farm: Fast Growing Log Files

March 18, 2019 Leave a comment

Normally, when you are in the case of fast growing log files it means that you have verbose logging on. As in our case verbose logging was off, the issue had to be somewhere else. As we saw that all the service applications were failing on a specific server, we were able to identify that the server somehow lost the trust with the domain after restoring the snapshot. Even though we were able to log into the server (which normally should not work when the trust is gone) the trust was still failing.

The solution in our case was to reboot the server and the domain trust was sorted. Afterwards all issues were sorted and the farm was succesfully expanded 🙂

Categories: Uncategorized

CRM 2013 : Microsoft.Crm.SharedSetup.SetupException: The XML in the configuration file is not valid.

March 18, 2019 Leave a comment

CRM 2013 : Microsoft.Crm.SharedSetup.SetupException: The XML in the configuration file is not valid.

After testing our CRM 2013 installation scripts on our own environments, we decided to deploy them on the customer’s environment. As we were to expect a standard windows environment with IIS installed, we used the scripts we tested on identical environments. When we ran our scripts, we experienced the following error:

Microsoft.Crm.SharedSetup.SetupException: The XML in the configuration file is not valid. Location: F:\InstallConfigWebFrontEnd1.xml. Please fix the configuration file, and then try again. —>
System.UriFormatException: Invalid URI: The format of the URI could not be determined.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at Microsoft.Crm.Setup.Server.ConfigurationParser.ParseWebsiteSettings(XmlNode element)

As the error message states, one would check the XML file in every way to see if we did not mess up anything. In the end, we did not find anything wrong with it. What did give us a hint though, is the following part of the stacktrace:

at Microsoft.Crm.Setup.Server.ConfigurationParser.ParseWebsiteSettings(XmlNode element)

This means that something is going wrong once the setup tries to set the website from the following XML tag:

<WebsiteUrl Create=”false”>Default Web Site</WebsiteUrl>

After checking every possible option with the tags, we checked the IIS. For some reason IIS was missing it’s default web site, therefor it could not use the Default Web Site during setup. Changing the script to

<WebsteUrl Create=”true” port=80>Default Web Site</WebSiteUrl>

made setup run fine.

Categories: Uncategorized

CRM 2013 Unattended Install: Backend Installation: Check WebServerValidator: The Website does not exist.

March 18, 2019 Leave a comment

It took a while to figure this one out, given that I am not a CRM specialist. If you define that the backend server contains the DeploymentWebServiceRole, you also need to define the WebsiteUrl parameters in the xml file. If you don’t, you will get the above error that doesn’t really explain that it is missing something in the configuration file.

Categories: Uncategorized

Sorry, this site hasn’t been shared with you – Host Named Site Collections

March 18, 2019 Leave a comment

So, Host Named Site Collections are the new thing. You’ve created your web application and created a host named site collection through PowerShell. You browse to the site and it renders nicely. Yet when you expect to see the site, you get the standard SharePoint screen which tells you that you don’t have access to that site. This can be resolved easily. Check your IIS bindings. You forgot to remove them. So even though you have a DNS pointing to * and you created a site your IIS bindings need to be modified so that there are no host headers defined.

Categories: Uncategorized

Dell XPS12 : Wireless network not showing any networks

March 18, 2019 Leave a comment

recently got a Dell XPS12 device as my new laptop at work. I like the device a lot, especially since I am travelling by plane a lot lately. Today, for some reason, the wireless network did not detect any networks. Other devices had no problem detecting all the wireless networks, but the Dell just gave me the notification Wireless (Off). Turning flightmode on and off didn’t bring any resolution. Looking online didn’t really b(r)ing a solution, apart from the fact that I could identify that the device could decide itself when the wireless connection was put off. You can look at that yourself by going through the following options.

Right click on your network connection (which should show with a red cross on the right bottom corner)


Open network and shareing center


Click on change adapter settings.

Rightclick your wi-fi adapter and select properties


Select configure


Select the power management tab and untick the box if it is ticked.


After this, your wireless will still show as off. Even using the function keys to turn wireless on and off will not get you there. Press the windows key and type wireless

Select settings and then choose the option Turn Wireless On or Off


And there, you will see that the wireless is off. Put it to status on.


I’m not the only one who experienced this problem. And this fix seems quite easy. For some reason the wireless on / off key on the keyboard doesn’t seem to properly enable the wireless.

Categories: Uncategorized

The Subscription Settings service and corresponding application and proxy needs to be running in order to make changes to these settings.

March 18, 2019 Leave a comment


This is the nice screen I got when I wanted to finalize the configuration of a blank SharePoint 2013 development environment at the customer that was already “partially prepared”. Even if I was quite sure I checked those to see if they were running. I checked again:

Looking in the Manage Services Screen:


Going to System Settings – Manage Services on this Server


Seems like everything is running. So where does this come from? As I am so used to follow the Technet blog post (and that this step is a little bit less obvious when fastscrolling through the page), it took a while to realize we are missing a service application. Even though the Subscription Settings Service is running, there is no corresponding Service Application. This service application can only be created in PowerShell:

Get-SPManagedAccount COMICS\
$appPool = New-SPServiceApplicationPool -Name SubscriptionServiceAppPool -Account $account
$serviceApp = New-SPSubscriptionSettingsServiceApplication -ApplicationPool $appPool -name “Subscription Settings Service Application” -DatabaseName “SP2013DEV-SubscriptionSettingsDB”
$serviceAppProxy = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $serviceApp

Once this is done, you should see it pop up in your service applications:


Now we are able to set up our app domain

Categories: Uncategorized

SharePoint 2013 : Cannot connect to the targeted site.

March 18, 2019 Leave a comment

While creating a new development environment I ran into the following error:

Cannot connect to the targeted site. This error can occur if the specified site is not hosted on the local system. SharePoint solutions work only with locally-installed versions of SharePoint Foundation or SharePoint Server. Remote development is supported only for apps for SharePoint 2013.

Usually this error pops us if you did the following:

Edit host file                  urlofmywebapp

However, as my development machine is running in my own domain, my hostfile is empty and the site is accessed through the DNS. The fix is however the same. Adding the IP of the server to the host file did the trick.                urlofmywebapp

This is supposed to get fixed in a future version of the Office Developer tools.

Categories: Uncategorized

[Quick Fix] Windows 8 – Windows 10 – Keyboard stopped working (on all pc’s that you log into)

March 18, 2019 Leave a comment

This might be catalogued as random stupidity from my part, but Binging for it didn’t really bring me to the information so here goes. I’m currently working on a 3 year old laptop that has been travelling with me pretty much around the world. 16GB, Core i7, 2xSSD, it never lets me down. Yesterday while I just stepped off the plane and arrived at the customer, booted my pc and cleaned up the inbox something strange happened. All of a sudden my keyboard stopped working. Everything else worked fine, but typing just wasn’t happening.

EDIT: One of the comments mentioned that [Windows Key] + [Spacebar] should be the quick fix for this problem. So try this, before reading further.

As any highly trained IT professional I of course resorted to the one and only possible solution to fix this: hitting every key on the keyboard, with the same “schwung” as professional piano players go from the low note to the high note. And to my surprise at times there was a key popping up. So maybe it wasn’t the keyboard. Again, I am a highly trained professional, so solution number two: reboot. In all honesty, this would be the first time that I actually had to reboot Windows 8 to get something to work again. Reboot, the bitlocker unlock window comes up, I type in my code and the keyboard works fine. Problem solved. Logged in to windows, and the same problem comes up again.

No worries, I am still a highly trained professional so I open OneNote and after my piano move I resorted to option three. Push it until it works. I just pressed a key for a long time and to my surprise the character appeared. So I went to the keyboard settings for the repeat speed, but changing that did not resolve it. There was only one thing I could still think about. Ease of Access settings. And there it was: The filter keys were enabled. I don’t know how I did it, as the settings were still set to show a warning when the Filter Keys are enabled, but for some reason I did not see the warning or I pressed Enter when it came up without realizing it.

So when you are in the situation of your keyboard no longer working in Windows 8, press a key for a long time and see if it comes up. If it  does, that it is probably the filter keys. To go to the settings, press windows key for a long time (filter keys is on) till you get the metro menu if you aren’t there yet, press f for a long time, press i for a long time… (you get what the other actions are…) until you have put in Filter Keys in your search window. Click on Settings, Ignore Repeated Key Strokes using Filter Keys and untick Turn on Filter Keys

Categories: Uncategorized

FAST for SharePoint 2010 : Crawl status recovering

March 18, 2019 Leave a comment

There is a first time for everything, and this was the first time I saw the crawler in the status recovering. The full crawl has been running for 185 hours and users started informing the IT organization of the customer that new documents were not searchable. These are the steps I took to get the crawl up and running again:

  • Restart the search service on all the servers provisioning search
  • Try to stop the crawl and reinitiate the crawling
  • Failure
  • Restart the FAST Servers
  • Try to stop the crawl and reinitiate the crawling
  • Succesful

However, at this stage crawl was running (and ending) but when I checked the crawl log it was only showing the documents that had already been indexed before. Anything after that date did not get indexed. So I proceeded to the next steps:

Categories: SharePoint

The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered.

March 18, 2019 Leave a comment

What do you do if you are running powershell on your SharePoint farm and get the “The local farm is not accessible. Cmdlets with FeatureDependencyId are not registered.” error. You have someone who has the rights to run powershell add your user as SP Shell Admin.

Add-SPShellAdmin -username DOMAIN\YourUser

That’s quite the nobrainer, but what happens if your user is already SPShellAdmin, shown with Get-SPShellAdmin and you get the same error popping up? In that case, something probably happened with the SQL. They restored the farm on another server and did not migrate all the access rights. Just run Add-SPShellAdmin -username DOMAIN\YourUser again and it will set the appropriate permissions.

Categories: Uncategorized

[Quick Fix] Report Viewer not rendering controls correctly

March 18, 2019 Leave a comment

[Quick Fix] Report Viewer not rendering controls correctly

While migration a legacy application to a new server environment we ran into the issue that the Report Viewer was not rendering its controls correctly. The Report Viewer was running on a webserver that was calling the reporting services on a SQL server within the same domain. Authentication was Kerberos, SPNs were properly defined and our reports were rendering, just the controls were having issues to apply the filters.

In the end the fix was easy, yet the root cause isn’t quite clear (I can think of a few reasons, but none of them are at the moment substantially proven…)

Remove the SPNs, enable Kernel Mode authentication on the website that is rendering the report viewer and it will fix the issue.

Categories: Uncategorized

Cannot generate SSPI context

March 18, 2019 Leave a comment

During our project we ran into the “Cannot generate SSPI context” error message. We were using a WCF service to retreive information from SQL. It took quite a while to figure out where it came from as we were not using Kerberos (which is usually the case when this error pops up, see ). In the end we figured out that the credentials of the application pool account running the service were messed up. Root cause was not found for that particular case, but it ended up in the service failing the moment the application pool was reset. At that time the error message was nice and clear (bad username/password) Putting in the correct credentials did fix the issue, even though the credentials of that account were not changed at all.

So if you get this one, and you are in this particulal case, just restart your application pool account to either identify if this is the cause of your problems, or if you need to look further.

Categories: Uncategorized

[Quick Fix] An operations error occurred at System.DirectoryServices.AccountManagement.ADStoreCtx.FindPrincipalByIdentRefHelper

March 18, 2019 Leave a comment

As a reference to people running code that is talking to Active Directory and are getting this cryptical message. In most cases it is a permissions issue. Make sure that your code is running under the application pool account (meaning SPSecurity.RunWithElevatedPrivileges) and that this account has the necessary rights to do so on AD.

Categories: Uncategorized

[Quick Tip] Fixing: To enable assembly bind failure logging, set the registry value [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) to 1.

March 18, 2019 Leave a comment

When you are experiencing the following issue in your SharePoint 2010 environment (in my case the error was happening when certain feature receivers had to be executed):

To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.

do not start going to the registry and change the registry value. This error occurs usually when your SharePoint environment has been shutdown unexpectedly. Just restart IIS and everything should be working fine again. If that doesn’t do the trick, then you can start to investigate.

Categories: Uncategorized

Unexpected DLL in a WSP package

March 18, 2019 Leave a comment

When you are building SharePoint projects based on a framework/base approach you’ll find yourself in the situation where you want to use specific modules from one of your base projects. The correct way to do that is to ensure that the required features are activated on the farm / web application / site collection / site that provision you those modules. Visual Studio however lets you reference those modules individually in your features. Although this DOES WORK and your code will run fine, it will result in a maintenance nightmare. Doing this will put the DLL of your base project in your WSP. This results in the actual version of the DLL  being baked into the WSP of the solution that is referencing the modules of another project. Why will this cause a maintenance nightmare?

Imagine the following scenario.


– Internet Farm One

– Internet Farm Two

Installed Solutions

– Internet.wsp

– MyNewSolutionBasedOnInternet.wsp

Scenario 1 (Internet GoLive)

The internet solution will be released (everything will go fine)

Scenario 2 (MyNewSolutionBasedOnInternet GoLive)

The MyNewSolutionBasedOnInternet will be released (everything MIGHT go fine)

This scenario will go fine as long as no development on Internet v2 has started. As if that is the case the deployment will add the newest Internet.dll to the WSP resulting in the new dll being deployed to the production environment which might give unexpected results (code referencing controls that are not on the usercontrol etcetera).

Scenario 3 (Internet v2 GoLive – MyNewSolutionBasedOnInternet v1 Live, development stopped)

The new Internet version will be released (everything MIGHT go fine) The MyNewSolutionBasedOnInternet version 1 is already live and development has stopped. The WSP’s for MyNewSolutionBasedOnInternet are ready to be redeployed.

This scenario will go fine as long as there is ONLY an upgrade happening of the Internet solution. If you have a setup with two production environments that are switching chances are that you are going for a content database copy and a full solution reinstall. In that case Internet.wsp (v2) will be deployed before MyNewSolutionBasedOnInternet and the old DLL will overwrite the new DLL. If you then consider a scenario where your IT guy has to deploy several solutions based on the Internet codebase it’s gonna be a pain figuring out where things are going wrong and why there is an old version of the dll.

Scenario 4 (MyNewSolutionBasedOnInternet downgrade)

The downgrade WILL FAIL. If problems are identified on the day of the production release and you decide to go back one version you will actually be removing the Internet.dll and you will be breaking the internet based solutions as well.

I hope these are enough scenarios for you to consider before you decide to go for the module sharing approach. Just compare it on how you work with SharePoint out of the box. If you need something, you make sure that the features deploying these items are activated.

Categories: 2010

SPCustomLayoutsPage AccessDenied not showing the custom page

March 18, 2019 Leave a comment


The custom AccessDenied page is showing the wrong page. Basicaly we were missing the request access link on our accessdenied page. First things to check is that the outgoing email settings are enabled and if the site settings allow the user to request access. All those things were set correctly, so it had to be something different (either bad coding or something else). As the custom layouts page was working properly (by going directly to the url _layouts/mycustompages/accessdenied.aspx) it had to be the mapping of the custom layouts page. This mapping in this project is done through a web application scoped feature, but you can check the mapping using Powershell (or modify the mapping).

To check if your custom layouts page is mapped correctly, use Get-SPCustomLayoutsPage ( The specific command I used was:

$web = Get-SPWebApplication
 Get-SPCustomLayoutsPage -Identity AccessDenied -WebApplication $web | Format-List

Strangely enough, this was showing that the AccessDenied page was mapped to _layouts/mycustompages/accessdenied.aspx which is correct. Just to make sure I reapplied the custom layoutspage through PowerShell by making use of Set-SPCustomLayoutsPage ( and the old page was still showing.

Cause and Solution:

The custom access denied page was being cached. After doing an IISRESET on every Web Frontend everything worked fine.

Categories: 2010

This item cannot be deleted because it is still referenced by other pages.

March 18, 2019 Leave a comment

The following error pops up when you are trying to remove a masterpage that is still being referenced. In SharePoint 2010 you can detect where the masterpages are being referenced through powershell. In the same script you can update the reference to make sure that there are no references left before you remove the masterpage.

In MOSS 2007 you had to put the masterpage in a subfolder before you were able to delete it. In SharePoint 2010 that should no longer be the case, but one of our partners reported an issue with it while trying to delete the masterpage. In the end it became clear that he forgot a few references (which will still not allow you to remove the masterpage even if it is in a subfolder), but just to be sure I give you the script including the subfolder move should you run into problems while trying to remove masterpages.

Set-ExecutionPolicy Unrestricted 
 #Load SharePoint Snapin
 $snapin = Get-PSSnapin | Where-Object {$_.Name -eq 'Microsoft.SharePoint.PowerShell'}
 if ($snapin -eq $null) {
 Write-Host "Loading SharePoint Powershell Snapin" -foregroundcolor Green
 Add-PSSnapin "Microsoft.SharePoint.Powershell"
 Write-Host "PowerShell Snapin Loaded" -foregroundcolor Green
 Write-Host "SharePoint Powershell Snapin already loaded" -foregroundcolor Green
 $site = Get-SPSite ""
 foreach ($web in $site.AllWebs)
 if ($web.CustomMasterUrl -eq "/_catalogs/masterpage/MyCustom.master")
 $web.CustomMasterUrl = "/_catalogs/masterpage/v4.master"
 #Get the rootweb that contains the masterpage gallery
 $rootweb = Get-SPWeb -Identity
 if ($rootweb )
 $masterpagesLibrary = $rootweb .GetFolder("_catalogs/masterpage")
 $masterpage = $masterpagesLibrary.Files["MyCustom.master"]
 if ($masterpage)
 $spFolder = $masterpagesLibrary.DocumentLibrary.AddItem("",[Microsoft.SharePoint.SPFileSystemObjectType]::Folder,"TempDeleteFolder")
 $masterpage.MoveTo("/" + $masterpagesLibrary.Url + "/" + $spFolder.Name + "/" + $masterpage.Name)
 Write-Host "MasterPage Deleted" -foregroundcolor Green
 Write-Host "Master Page not found" -foregroundcolor Red
 Write-Host "Website not found" -foregroundcolor Red
Categories: 2007, Development

Moving MSDN Blog here

March 18, 2019 Leave a comment

As Microsoft has decided to stop supporting the MSDN Blogs, I will move all my posts here. It is a bit sad to see them go, but on the other hand my time investment in the blog has been rather low as well.

Categories: Uncategorized

Next BIWUG Session

August 23, 2011 Leave a comment

BIWUG, the Belux Information Worker User Group – – is announcing another session about SharePoint 2010 on Thursday September 8th 2011 in the RealDolmen Huizingen offices.

18:00-18:30 Welcome with sandwich lunch
18:30-19:30 SQL Server for SharePoint Geeks (Speaker – Thomas Vochten – @Thomasvochten). Topics: which SQL Server editions to use, configuration best practices, common misconceptions and its impact on SharePoint.
19:30-19:45 Break
19:45-20:45 Office 365 – but mainly SharePoint Online – from a technical perspective (Speaker – Joris Poelmans – @jopxtwits) Topics: focus on SharePoint Online both from an administrator and developer standpoint.

Location: RealDolmen Industriezone Zenneveld, Vaucampslaan 42, 1654 Huizingen, Belgium (Roadmap in PDF format)

Entrance: Free but registration is required on the BIWUG site –

Categories: Uncategorized

Windows Azure Platform Training Kit – February 2011 Update

March 17, 2011 Leave a comment




The February 2011 update of the Windows Azure Platform Training Kit includes
several updates and bug fixes for the hands-on labs.   Most of the updates were
focused on supporting the new Windows Azure AppFabric February CTP and the new
portal experience for AppFabric Caching, Access Control, and the Service Bus.   
The specific content that was updated in this release includes:
· Hands-on Lab – Building Windows Azure Apps with the Caching service
· Hands-on Lab – Using the Access Control Service to Federate with Multiple Business Identity Providers
· Hands-on Lab – Introduction to the AppFabric Access Control Service V2
· Hands-on Lab – Introduction to the Windows Azure AppFabric Service Bus Futures
· Hands-on Lab – Advanced Web and Worker Roles – fixed PHP installer script
· Demo Script – Rafiki PDC Keynote Demo
The setup scripts for all hands-on labs and demo scripts have also been updated so that the content can easily be used on a machine running Windows 7 SP1.
You can download the February update of the Windows Azure Platform Training kit from here:
We’re also continuing to publish the hands-on labs directly to MSDN to make it easier for developers to review and use the content without having to download an entire training kit package.  You can browse to all of the HOLs here:  Feel free to blog or tweet these URLs.
You can start building your application on it in 3 simple and easy to do steps:
1. Download the Tools:
Get Visual Studio Express and the Windows Azure Tools for Visual Studio to start building and debugging applications for the Windows Azure Platform
If you have already Visual Studio installed you can download the tools directly from
2. Setup an Account:
Set up an account and obtain a free subscription for accessing the online portals for Windows Azure, SQL Azure and Windows Azure AppFabric. You can learn more about the accounts or you can sign up directly and get the trial
3. Create your First application and Deploy it on the Windows Azure Platform:
First learn how to create a simple ASP.NET application in Visual Studio for Windows Azure on your local machine Once successfully created, learn how to deploy this application on the Windows Azure Platform
When all steps are executed successfully you should have running your first application on the Windows Azure Platform!
Categories: Uncategorized

Error: The file ‘C:\FASTSearch\etc\middleware.cfg’ was not found.

March 17, 2011 Leave a comment

If you are doing a multi-server install of FAST for SharePoint 2010 you may end up with this error. Possible causes:

  • You specified the wrong Base Port.
  • You did not configure your firewall properly to open up the necessary ports.
  • You forgot to reboot your admin server. To make sure that FAST is running properly, use nctrl status on the admin machine.
Categories: Uncategorized Tags: , ,

Using SPModule to install SharePoint – DateTime Issue with the StartDate

March 17, 2011 1 comment

If you are getting a datetime issue (cannot convert to DateTime) with the out of the box SharePoint install with SPModule when using the New-SharePointFarm command change line 81 of New-SharePointFarm.ps1 from

    $RunSettings.StartTime = Get-Date -Format ‘dd-MMM-yyyy HH:mm:ss’
    $RunSettings.StartTime = Get-Date -Format ‘dd-MM-yyyy HH:mm:ss’

Categories: Uncategorized Tags: ,