<?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.

-->
<Graphic version="2.0" ATE:version="1.0.0" flm:version="1.0.0" d:using="" 
	xmlns="http://ns.adobe.com/fxg/2008" xmlns:ATE="http://ns.adobe.com/ate/2009" xmlns:d="http://ns.adobe.com/fxg/2008/dt" 
	xmlns:flm="http://ns.adobe.com/flame/2008"
	xmlns:afx="http://ns.apache.org/flex/2012" afx:className="CloseButtonOver" afx:baseClassName="flash.display.Sprite" >
  <Library>
    <Definition name="Window_Assets_Elements_minibutton_over" flm:originalName="Window Assets/Elements/minibutton_over">
      <Group>
        <Group d:type="layer" d:userLabel="background">
          <Group>
            <Path data="M14 2 14 12Q14 14 12 14L2 14Q0 14 0 12L0 2Q0 0 2 0L12 0Q14 0 14 2">
              <fill>
                <SolidColor color="#6F7777"/>
              </fill>
            </Path>
          </Group>
        </Group>
        <Group d:type="layer" d:userLabel="chrome">
          <Group>
            <Path data="M13 2 13 12Q13 13 12 13L2 13Q1 13 1 12L1 2Q1 1 2 1L12 1Q13 1 13 2">
              <fill>
                <LinearGradient x="7" y="13" scaleX="12" rotation="270">
                  <GradientEntry ratio="0" color="#C4CCCC"/>
                  <GradientEntry ratio="1" color="#EEEEEE"/>
                </LinearGradient>
              </fill>
            </Path>
          </Group>
        </Group>
        <Group d:type="layer" d:userLabel="highlight">
          <Group>
            <Path data="M13 2.05 13 3Q12.968359 2.05 12 2.05L7.85 2.05 7.85 2 5.85 2 5.85 2.05 2 2.05Q1.0318359 2.05 1 3L1 2.05Q1 1.05 2 1.05L4 1.05 4 1 10 1 10 1.05 12 1.05Q13 1.05 13 2.05">
              <fill>
                <SolidColor color="#FFFFFF"/>
              </fill>
            </Path>
          </Group>
        </Group>
      </Group>
    </Definition>
    <Definition name="Window_Assets_Elements_icon_close" flm:originalName="Window Assets/Elements/icon - close">
      <Group>
        <Group d:type="layer" d:userLabel="Layer 1">
          <Group>
            <Group>
              <Path data="M0 6 3 6 3 7 0 7 0 6">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M1 5 3 5 3 6 1 6 1 5">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M1 7 2 7 2 8 1 8 1 7">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M0 1 3 1 3 2 0 2 0 1">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M1 2 3 2 3 3 1 3 1 2">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M1 0 2 0 2 1 1 1 1 0">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M6 0 7 0 7 3 6 3 6 0">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M5 1 8 1 8 2 5 2 5 1">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M5 2 6 2 6 3 5 3 5 2">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M3 3 5 3 5 5 3 5 3 3">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M5 5 7 5 7 7 5 7 5 5">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M7 6 8 6 8 7 7 7 7 6">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path data="M6 7 7 7 7 8 6 8 6 7">
                <fill>
                  <SolidColor/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path rotation="90" x="10" y="0.5" data="M5.5 7 4.5 7 4.5 5 5.5 5 5.5 7">
                <fill>
                  <SolidColor alpha="0.60000002"/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path rotation="90" x="10" y="-2.5" data="M5.5 7 4.5 7 4.5 5 5.5 5 5.5 7">
                <fill>
                  <SolidColor alpha="0.60000002"/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path rotation="180" x="10.5" y="10" data="M5.5 7 4.5 7 4.5 5 5.5 5 5.5 7">
                <fill>
                  <SolidColor alpha="0.60000002"/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path rotation="180" x="7.5" y="10" data="M5.5 7 4.5 7 4.5 5 5.5 5 5.5 7">
                <fill>
                  <SolidColor alpha="0.60000002"/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path rotation="180" scaleY="0.5" x="12.5" y="10.5" data="M5.5 7 4.5 7 4.5 5 5.5 5 5.5 7">
                <fill>
                  <SolidColor alpha="0.60000002"/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path rotation="180" scaleY="0.5" x="12.5" y="3.5" data="M5.5 7 4.5 7 4.5 5 5.5 5 5.5 7">
                <fill>
                  <SolidColor alpha="0.60000002"/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path rotation="180" scaleY="0.5" x="5.5" y="3.5" data="M5.5 7 4.5 7 4.5 5 5.5 5 5.5 7">
                <fill>
                  <SolidColor alpha="0.60000002"/>
                </fill>
              </Path>
            </Group>
            <Group>
              <Path rotation="180" scaleY="0.5" x="5.5" y="10.5" data="M5.5 7 4.5 7 4.5 5 5.5 5 5.5 7">
                <fill>
                  <SolidColor alpha="0.60000002"/>
                </fill>
              </Path>
            </Group>
          </Group>
        </Group>
      </Group>
    </Definition>
  </Library>
          <Window_Assets_Elements_minibutton_over/>
          <Window_Assets_Elements_icon_close x="3" y="3"/>
  <Private/>
</Graphic>