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

<!--
   Copyright (c) 2015, 2021 Contributors to the Eclipse Foundation

   This program and the accompanying materials
   are made available under the terms of the Eclipse Public License 2.0
   which accompanies this distribution, and is available at
   https://www.eclipse.org/legal/epl-2.0/

   SPDX-License-Identifier: EPL-2.0
-->
<product name="Stand-alone C/C++ GDB Debugger" uid="org.eclipse.cdt.debug.application.product" id="org.eclipse.cdt.debug.application.product" application="org.eclipse.cdt.debug.application.app" version="10.6.0.qualifier" useFeatures="false" includeLaunchers="true">

   <aboutInfo>
      <image path="/org.eclipse.cdt.debug.application/icons/about.png"/>
      <text>
         %aboutText
      </text>
   </aboutInfo>

   <configIni use="default">
   </configIni>

   <launcherArgs>
      <programArgs>-data @noDefault
      </programArgs>
      <vmArgsLin>-Xms100m -Xmx512m  -Dosgi.requiredJavaVersion=11
      </vmArgsLin>
      <vmArgsMac>-Xms100m -Xmx512m  -XstartOnFirstThread -Dosgi.requiredJavaVersion=11 -Dorg.eclipse.swt.internal.carbon.smallFonts
      </vmArgsMac>
      <vmArgsWin>-Xms100m -Xmx512m   -Dosgi.requiredJavaVersion=11
      </vmArgsWin>
   </launcherArgs>

   <windowImages i16="/org.eclipse.cdt.debug.application/icons/cc16.png" i32="/org.eclipse.cdt.debug.application/icons/cc32.png" i48="/org.eclipse.cdt.debug.application/icons/cc48.png" i64="/org.eclipse.cdt.debug.application/icons/cc64.png" i128="/org.eclipse.cdt.debug.application/icons/cc128.png" i256="/org.eclipse.cdt.debug.application/icons/cc.png"/>

   <launcher name="cdtdebug">
      <linux icon="../org.eclipse.cdt.debug.application/icons/cc.xpm"/>
      <macosx icon="../org.eclipse.cdt.debug.application/icons/cc.icns"/>
      <win useIco="true">
         <ico path="../org.eclipse.cdt.debug.application/icons/cc.ico"/>
         <bmp/>
      </win>
   </launcher>

   <vm>
      <linux include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</linux>
      <macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</macos>
      <solaris include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</solaris>
      <windows include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11</windows>
   </vm>

   <license>
        <url>http://eclipse.org/legal/epl/notice.php</url>
        <text>
   Eclipse Foundation Software User Agreement
April 9, 2014

Usage Of Content

THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR
OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY &quot;CONTENT&quot;).
USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS
AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR
NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU
AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT
AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS
OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE
TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS
OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED
BELOW, THEN YOU MAY NOT USE THE CONTENT.

Applicable Licenses

Unless otherwise indicated, all Content made available by the
Eclipse Foundation is provided to you under the terms and conditions of
the Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is
provided with this Content and is also available at https://www.eclipse.org/legal/epl-2.0/.
For purposes of the EPL, &quot;Program&quot; will mean the Content.

Content includes, but is not limited to, source code, object code,
documentation and other files maintained in the Eclipse Foundation source code
repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available
as downloadable archives (&quot;Downloads&quot;).

    - Content may be structured and packaged into modules to facilitate delivering,
      extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;),
      plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).
    - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)
      in a directory named &quot;plugins&quot;.
    - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.
      Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.
      Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version
      numbers of the Plug-ins and/or Fragments associated with that Feature.
    - Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files
      named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.

The terms and conditions governing Plug-ins and Fragments should be
contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and
conditions governing Features and Included Features should be contained
in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature
Licenses may be located in any directory of a Download or Module
including, but not limited to the following locations:

    - The top-level (root) directory
    - Plug-in and Fragment directories
    - Inside Plug-ins and Fragments packaged as JARs
    - Sub-directories of the directory named &quot;src&quot; of certain Plug-ins
    - Feature directories

Note: if a Feature made available by the Eclipse Foundation is installed using the
Provisioning Technology (as defined below), you must agree to a license (&quot;Feature
Update License&quot;) during the installation process. If the Feature contains
Included Features, the Feature Update License should either provide you
with the terms and conditions governing the Included Features or inform
you where you can locate them. Feature Update Licenses may be found in
the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
Such Abouts, Feature Licenses, and Feature Update Licenses contain the
terms and conditions (or references to such terms and conditions) that
govern your use of the associated Content in that directory.

THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER
TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):

    - Eclipse Distribution License Version 1.0 (available at http://www.eclipse.org/licenses/edl-v1.0.html)
    - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
    - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
    - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)
    - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)

IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR
TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License
is provided, please contact the Eclipse Foundation to determine what terms and conditions
govern that particular Content.


Use of Provisioning Technology

The Eclipse Foundation makes available provisioning software, examples of which include,
but are not limited to, p2 and the Eclipse Update Manager (&quot;Provisioning Technology&quot;) for
the purpose of allowing users to install software, documentation, information and/or
other materials (collectively &quot;Installable Software&quot;). This capability is provided with
the intent of allowing such users to install, extend and update Eclipse-based products.
Information about packaging Installable Software is available at
http://eclipse.org/equinox/p2/repository_packaging.html (&quot;Specification&quot;).

You may use Provisioning Technology to allow other parties to install Installable Software.
You shall be responsible for enabling the applicable license agreements relating to the
Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
in accordance with the Specification. By using Provisioning Technology in such a manner and
making it available in accordance with the Specification, you further acknowledge your
agreement to, and the acquisition of all necessary rights to permit the following:

    1. A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute
       the Provisioning Technology on a machine (&quot;Target Machine&quot;) with the intent of installing,
       extending or updating the functionality of an Eclipse-based product.
    2. During the Provisioning Process, the Provisioning Technology may cause third party
       Installable Software or a portion thereof to be accessed and copied to the Target Machine.
    3. Pursuant to the Specification, you will provide to the user the terms and conditions that
       govern the use of the Installable Software (&quot;Installable Software Agreement&quot;) and such
       Installable Software Agreement shall be accessed from the Target Machine in accordance
       with the Specification. Such Installable Software Agreement must inform the user of the
       terms and conditions that govern the Installable Software and must solicit acceptance by
       the end user in the manner prescribed in such Installable Software Agreement. Upon such
       indication of agreement by the user, the provisioning Technology will complete installation
       of the Installable Software.

Cryptography

Content may contain encryption software. The country in which you are
currently may have restrictions on the import, possession, and use,
and/or re-export to another country, of encryption software. BEFORE
using any encryption software, please check the country&apos;s laws,
regulations and policies concerning the import, possession, or use, and
re-export of encryption software, to see if this is permitted.

Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.
         </text>
   </license>

   <plugins>
      <plugin id="com.google.gson"/>
      <plugin id="com.ibm.icu"/>
      <plugin id="com.sun.jna"/>
      <plugin id="com.sun.jna.platform"/>
      <plugin id="com.sun.xml.bind"/>
      <plugin id="jakarta.servlet-api"/>
      <plugin id="jakarta.xml.bind"/>
      <plugin id="javax.activation"/>
      <plugin id="javax.annotation"/>
      <plugin id="javax.el"/>
      <plugin id="javax.inject"/>
      <plugin id="javax.servlet.jsp"/>
      <plugin id="javax.xml"/>
      <plugin id="javax.xml.stream"/>
      <plugin id="org.apache.batik.constants"/>
      <plugin id="org.apache.batik.css"/>
      <plugin id="org.apache.batik.i18n"/>
      <plugin id="org.apache.batik.util"/>
      <plugin id="org.apache.commons.codec"/>
      <plugin id="org.apache.commons.io"/>
      <plugin id="org.apache.commons.jxpath"/>
      <plugin id="org.apache.commons.logging"/>
      <plugin id="org.apache.felix.scr"/>
      <plugin id="org.apache.httpcomponents.client5.httpclient5"/>
      <plugin id="org.apache.httpcomponents.core5.httpcore5"/>
      <plugin id="org.apache.httpcomponents.core5.httpcore5-h2"/>
      <plugin id="org.apache.httpcomponents.httpclient"/>
      <plugin id="org.apache.httpcomponents.httpcore"/>
      <plugin id="org.apache.jasper.glassfish"/>
      <plugin id="org.apache.lucene.analyzers-common"/>
      <plugin id="org.apache.lucene.analyzers-smartcn"/>
      <plugin id="org.apache.lucene.core"/>
      <plugin id="org.apache.xmlgraphics"/>
      <plugin id="org.bouncycastle.bcpg"/>
      <plugin id="org.bouncycastle.bcprov"/>
      <plugin id="org.eclipse.cdt.core"/>
      <plugin id="org.eclipse.cdt.core.linux" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.linux.aarch64" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.linux.x86_64" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.macosx" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.native"/>
      <plugin id="org.eclipse.cdt.core.win32" fragment="true"/>
      <plugin id="org.eclipse.cdt.core.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.cdt.debug.application"/>
      <plugin id="org.eclipse.cdt.debug.application.doc"/>
      <plugin id="org.eclipse.cdt.debug.core"/>
      <plugin id="org.eclipse.cdt.debug.core.memory"/>
      <plugin id="org.eclipse.cdt.debug.ui"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.floatingpoint"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.memorybrowser"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.search"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.traditional"/>
      <plugin id="org.eclipse.cdt.debug.ui.memory.transport"/>
      <plugin id="org.eclipse.cdt.dsf"/>
      <plugin id="org.eclipse.cdt.dsf.gdb"/>
      <plugin id="org.eclipse.cdt.dsf.gdb.ui"/>
      <plugin id="org.eclipse.cdt.dsf.ui"/>
      <plugin id="org.eclipse.cdt.gdb"/>
      <plugin id="org.eclipse.cdt.gdb.ui"/>
      <plugin id="org.eclipse.cdt.launch"/>
      <plugin id="org.eclipse.cdt.make.core"/>
      <plugin id="org.eclipse.cdt.managedbuilder.core"/>
      <plugin id="org.eclipse.cdt.managedbuilder.gnu.ui"/>
      <plugin id="org.eclipse.cdt.native.serial"/>
      <plugin id="org.eclipse.cdt.ui"/>
      <plugin id="org.eclipse.compare"/>
      <plugin id="org.eclipse.compare.core"/>
      <plugin id="org.eclipse.core.commands"/>
      <plugin id="org.eclipse.core.contenttype"/>
      <plugin id="org.eclipse.core.databinding"/>
      <plugin id="org.eclipse.core.databinding.observable"/>
      <plugin id="org.eclipse.core.databinding.property"/>
      <plugin id="org.eclipse.core.expressions"/>
      <plugin id="org.eclipse.core.filebuffers"/>
      <plugin id="org.eclipse.core.filesystem"/>
      <plugin id="org.eclipse.core.filesystem.linux.aarch64" fragment="true"/>
      <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
      <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
      <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.core.jobs"/>
      <plugin id="org.eclipse.core.net"/>
      <plugin id="org.eclipse.core.net.linux" fragment="true"/>
      <plugin id="org.eclipse.core.net.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.core.resources"/>
      <plugin id="org.eclipse.core.runtime"/>
      <plugin id="org.eclipse.core.variables"/>
      <plugin id="org.eclipse.debug.core"/>
      <plugin id="org.eclipse.debug.ui"/>
      <plugin id="org.eclipse.e4.core.commands"/>
      <plugin id="org.eclipse.e4.core.contexts"/>
      <plugin id="org.eclipse.e4.core.di"/>
      <plugin id="org.eclipse.e4.core.di.annotations"/>
      <plugin id="org.eclipse.e4.core.di.extensions"/>
      <plugin id="org.eclipse.e4.core.di.extensions.supplier"/>
      <plugin id="org.eclipse.e4.core.services"/>
      <plugin id="org.eclipse.e4.emf.xpath"/>
      <plugin id="org.eclipse.e4.ui.bindings"/>
      <plugin id="org.eclipse.e4.ui.css.core"/>
      <plugin id="org.eclipse.e4.ui.css.swt"/>
      <plugin id="org.eclipse.e4.ui.css.swt.theme"/>
      <plugin id="org.eclipse.e4.ui.di"/>
      <plugin id="org.eclipse.e4.ui.dialogs"/>
      <plugin id="org.eclipse.e4.ui.ide"/>
      <plugin id="org.eclipse.e4.ui.model.workbench"/>
      <plugin id="org.eclipse.e4.ui.services"/>
      <plugin id="org.eclipse.e4.ui.swt.gtk" fragment="true"/>
      <plugin id="org.eclipse.e4.ui.widgets"/>
      <plugin id="org.eclipse.e4.ui.workbench"/>
      <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
      <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
      <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/>
      <plugin id="org.eclipse.e4.ui.workbench.swt"/>
      <plugin id="org.eclipse.e4.ui.workbench3"/>
      <plugin id="org.eclipse.ecf"/>
      <plugin id="org.eclipse.ecf.filetransfer"/>
      <plugin id="org.eclipse.ecf.identity"/>
      <plugin id="org.eclipse.ecf.provider.filetransfer"/>
      <plugin id="org.eclipse.ecf.provider.filetransfer.httpclient5"/>
      <plugin id="org.eclipse.ecf.provider.filetransfer.ssl" fragment="true"/>
      <plugin id="org.eclipse.ecf.ssl" fragment="true"/>
      <plugin id="org.eclipse.emf.common"/>
      <plugin id="org.eclipse.emf.ecore"/>
      <plugin id="org.eclipse.emf.ecore.change"/>
      <plugin id="org.eclipse.emf.ecore.xmi"/>
      <plugin id="org.eclipse.equinox.app"/>
      <plugin id="org.eclipse.equinox.bidi"/>
      <plugin id="org.eclipse.equinox.common"/>
      <plugin id="org.eclipse.equinox.concurrent"/>
      <plugin id="org.eclipse.equinox.event"/>
      <plugin id="org.eclipse.equinox.frameworkadmin"/>
      <plugin id="org.eclipse.equinox.frameworkadmin.equinox"/>
      <plugin id="org.eclipse.equinox.http.jetty"/>
      <plugin id="org.eclipse.equinox.http.registry"/>
      <plugin id="org.eclipse.equinox.http.servlet"/>
      <plugin id="org.eclipse.equinox.jsp.jasper"/>
      <plugin id="org.eclipse.equinox.jsp.jasper.registry"/>
      <plugin id="org.eclipse.equinox.launcher"/>
      <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
      <plugin id="org.eclipse.equinox.launcher.gtk.linux.aarch64" fragment="true"/>
      <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
      <plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.equinox.p2.artifact.repository"/>
      <plugin id="org.eclipse.equinox.p2.core"/>
      <plugin id="org.eclipse.equinox.p2.director"/>
      <plugin id="org.eclipse.equinox.p2.engine"/>
      <plugin id="org.eclipse.equinox.p2.garbagecollector"/>
      <plugin id="org.eclipse.equinox.p2.jarprocessor"/>
      <plugin id="org.eclipse.equinox.p2.metadata"/>
      <plugin id="org.eclipse.equinox.p2.metadata.repository"/>
      <plugin id="org.eclipse.equinox.p2.operations"/>
      <plugin id="org.eclipse.equinox.p2.repository"/>
      <plugin id="org.eclipse.equinox.p2.touchpoint.eclipse"/>
      <plugin id="org.eclipse.equinox.p2.touchpoint.natives"/>
      <plugin id="org.eclipse.equinox.p2.transport.ecf"/>
      <plugin id="org.eclipse.equinox.p2.ui"/>
      <plugin id="org.eclipse.equinox.p2.ui.sdk"/>
      <plugin id="org.eclipse.equinox.preferences"/>
      <plugin id="org.eclipse.equinox.registry"/>
      <plugin id="org.eclipse.equinox.security"/>
      <plugin id="org.eclipse.equinox.security.linux" fragment="true"/>
      <plugin id="org.eclipse.equinox.security.macosx" fragment="true"/>
      <plugin id="org.eclipse.equinox.security.ui"/>
      <plugin id="org.eclipse.equinox.simpleconfigurator"/>
      <plugin id="org.eclipse.equinox.simpleconfigurator.manipulator"/>
      <plugin id="org.eclipse.help"/>
      <plugin id="org.eclipse.help.base"/>
      <plugin id="org.eclipse.help.ui"/>
      <plugin id="org.eclipse.help.webapp"/>
      <plugin id="org.eclipse.jetty.http"/>
      <plugin id="org.eclipse.jetty.io"/>
      <plugin id="org.eclipse.jetty.security"/>
      <plugin id="org.eclipse.jetty.server"/>
      <plugin id="org.eclipse.jetty.servlet"/>
      <plugin id="org.eclipse.jetty.util"/>
      <plugin id="org.eclipse.jetty.util.ajax"/>
      <plugin id="org.eclipse.jface"/>
      <plugin id="org.eclipse.jface.databinding"/>
      <plugin id="org.eclipse.jface.notifications"/>
      <plugin id="org.eclipse.jface.text"/>
      <plugin id="org.eclipse.launchbar.core"/>
      <plugin id="org.eclipse.launchbar.ui"/>
      <plugin id="org.eclipse.ltk.core.refactoring"/>
      <plugin id="org.eclipse.ltk.ui.refactoring"/>
      <plugin id="org.eclipse.osgi"/>
      <plugin id="org.eclipse.osgi.compatibility.state" fragment="true"/>
      <plugin id="org.eclipse.osgi.services"/>
      <plugin id="org.eclipse.osgi.util"/>
      <plugin id="org.eclipse.pde.ds.lib"/>
      <plugin id="org.eclipse.search"/>
      <plugin id="org.eclipse.swt"/>
      <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
      <plugin id="org.eclipse.swt.gtk.linux.aarch64" fragment="true"/>
      <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
      <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
      <plugin id="org.eclipse.team.core"/>
      <plugin id="org.eclipse.team.ui"/>
      <plugin id="org.eclipse.text"/>
      <plugin id="org.eclipse.tm.terminal.control"/>
      <plugin id="org.eclipse.tools.templates.core"/>
      <plugin id="org.eclipse.tools.templates.freemarker"/>
      <plugin id="org.eclipse.tools.templates.ui"/>
      <plugin id="org.eclipse.ui"/>
      <plugin id="org.eclipse.ui.cocoa" fragment="true"/>
      <plugin id="org.eclipse.ui.console"/>
      <plugin id="org.eclipse.ui.editors"/>
      <plugin id="org.eclipse.ui.forms"/>
      <plugin id="org.eclipse.ui.ide"/>
      <plugin id="org.eclipse.ui.navigator"/>
      <plugin id="org.eclipse.ui.navigator.resources"/>
      <plugin id="org.eclipse.ui.net"/>
      <plugin id="org.eclipse.ui.themes"/>
      <plugin id="org.eclipse.ui.views"/>
      <plugin id="org.eclipse.ui.views.log"/>
      <plugin id="org.eclipse.ui.views.properties.tabbed"/>
      <plugin id="org.eclipse.ui.workbench"/>
      <plugin id="org.eclipse.ui.workbench.texteditor"/>
      <plugin id="org.eclipse.urischeme"/>
      <plugin id="org.freemarker"/>
      <plugin id="org.sat4j.core"/>
      <plugin id="org.sat4j.pb"/>
      <plugin id="org.slf4j.api"/>
      <plugin id="org.tukaani.xz"/>
      <plugin id="org.w3c.css.sac"/>
      <plugin id="org.w3c.dom.events"/>
      <plugin id="org.w3c.dom.smil"/>
      <plugin id="org.w3c.dom.svg"/>
   </plugins>

   <configurations>
      <plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
      <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />
      <plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
      <plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
      <plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
      <plugin id="org.eclipse.osgi" autoStart="true" startLevel="-1" />
   </configurations>

   <repositories>
      <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
      <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
      <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
      <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
      <repository location="http://download.eclipse.org/tools/cdt/builds/master/nightly/rcp-repository" enabled="true" />
   </repositories>

   <preferencesInfo>
      <targetfile overwrite="false"/>
   </preferencesInfo>

   <cssInfo>
   </cssInfo>

</product>
