<?xml version="1.0" encoding="UTF-8"?>
<!--

Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

-->
<workingSetManager>
	<workingSet editPageId="org.eclipse.ui.resourceWorkingSetPage" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1315939991634_2" label="MegatronicSpectrascope" name="MegatronicSpectrascope">
		<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/MobileSparkLibrary" type="4"/>
		<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/ReflextionsMobile" type="4"/>
		<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/InternalLibrary" type="4"/>
		<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/MainLibrary" type="4"/>
		<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/CasaLibrary" type="4"/>
		<item factoryID="org.eclipse.ui.internal.model.ResourceFactory" path="/NBFlexLib4" type="4"/>
	</workingSet>
	<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1315922901304_0" label="Window Working Set" name="Aggregate for window 1315922901302"/>
	<workingSet aggregate="true" factoryID="org.eclipse.ui.internal.WorkingSetFactory" id="1315939933488_1" label="Window Working Set" name="Aggregate for window 1315939933488"/>
	<mruList name="MegatronicSpectrascope"/>
</workingSetManager>