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

  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.

-->
<fxpProperties abbreviated="false" authoringTool="Flex Builder" compiles="true" parentProject="47b4f7ea-ed54-4add-a5c9-650b36302711" projectUUID="47b4f7ea-ed54-4add-a5c9-650b36302711" pureCatalystProject="false" sdkVersion="4.5.1" uuid="10ff9a86-6f6a-4b60-bd72-055df14a2c7c" version="15">
  <projects/>
  <src/>
  <swc>
    <linked location="sdkPlaceHolder" path="sdkPlaceHolder" position="0" uuid="10ff9a86-6f6a-4b60-bd72-055df14a2c7c"/>
    <linked location="/libs" path="/libs" position="1" uuid="a0c1fef8-2f0d-47b0-8198-d5b259b2e61a"/>
  </swc>
  <misc/>
  <theme/>
  <mxmlFormattingPrefs groupAttributesByState="true" maxLineWidth="100" mxmlAlignAttributes="true" mxmlAttributeOrder="id,userLabel,includeIn,excludeFrom,visible,x,y,z,left,right,top,bottom,width,height,minWidth,minHeight,maxWidth,maxHeight,label" mxmlKeepAttributeValuesOrganized="true"/>
</fxpProperties>
