<?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 xmlns:fc="http://ns.adobe.com/flashcatalyst/2009" xmlns:d="http://ns.adobe.com/fxg/2008/dt" xmlns="http://ns.adobe.com/fxg/2008" version="2.0">
	<Path data="M 2 4 C 2 3 3 2 4 2 C 4 2 44 2 44 2 C 45 2 46 3 46 4 C 46 4 46 44 46 44 C 46 45 46 46 45 46 C 45 46 3 46 3 46 C 2 46 2 45 2 44 C 2 44 2 4 2 4 Z M 1 3 C 1 3 1 45 1 45 C 1 46 2 47 3 47 C 3 47 45 47 45 47 C 46 47 47 46 47 45 C 47 45 47 3 47 3 C 47 2 46 1 45 1 C 45 1 3 1 3 1 C 2 1 1 3 1 3 Z " alpha="0.7">
		<fill>
			<SolidColor color="#000000"/>
		</fill>
	</Path>
	<Path data="M 1 3 C 1 2 2 1 3 1 C 3 1 45 1 45 1 C 46 1 47 2 47 3 C 47 3 47 45 47 45 C 47 46 47 47 46 47 C 46 47 2 47 2 47 C 1 47 1 46 1 45 C 1 45 1 3 1 3 Z M 0 2 C 0 2 0 46 0 46 C 0 47 1 48 2 48 C 2 48 46 48 46 48 C 47 48 48 47 48 46 C 48 46 48 2 48 2 C 48 1 47 0 46 0 C 46 0 2 0 2 0 C 1 0 0 2 0 2 Z " alpha="0.06">
		<fill>
			<SolidColor color="#ffffff"/>
		</fill>
	</Path>
	<Path data="M 2 4 C 2 3 3 2 4 2 C 4 2 44 2 44 2 C 45 2 46 3 46 4 C 46 4 46 44 46 44 C 46 45 46 46 45 46 C 45 46 3 46 3 46 C 2 46 2 45 2 44 C 2 44 2 4 2 4 Z " alpha="1">
		<fill>
			<LinearGradient x = "24" y = "2" scaleX = "44" rotation = "90">
				<GradientEntry color="#000000" ratio="0" alpha="0.11"/>
				<GradientEntry color="#000000" ratio="1" alpha="0.4"/>
			</LinearGradient>
		</fill>
	</Path>
	<Path data="M 3 5 C 3 4 4 3 5 3 C 5 3 43 3 43 3 C 44 3 45 4 45 5 C 45 5 45 43 45 43 C 45 44 45 45 44 45 C 44 45 4 45 4 45 C 3 45 3 44 3 43 C 3 43 3 5 3 5 Z M 2 4 C 2 4 2 44 2 44 C 2 45 2 46 3 46 C 3 46 45 46 45 46 C 46 46 46 45 46 44 C 46 44 46 4 46 4 C 46 3 45 2 44 2 C 44 2 4 2 4 2 C 3 2 2 3 2 4 Z " alpha="1">
		<fill>
			<LinearGradient x = "24" y = "2" scaleX = "44" rotation = "90">
				<GradientEntry color="#000000" ratio="0" alpha="0.25"/>
				<GradientEntry color="#000000" ratio="1" alpha="0.05"/>
			</LinearGradient>
		</fill>
	</Path>
	<Path data="M 4 6 C 4 5 5 4 6 4 C 6 4 42 4 42 4 C 43 4 44 5 44 6 C 44 6 44 42 44 42 C 44 43 44 44 43 44 C 43 44 5 44 5 44 C 4 44 4 43 4 42 C 4 42 4 6 4 6 Z M 3 5 C 3 5 3 43 3 43 C 3 44 3 45 4 45 C 4 45 44 45 44 45 C 45 45 45 44 45 43 C 45 43 45 5 45 5 C 45 4 44 3 43 3 C 43 3 5 3 5 3 C 4 3 3 4 3 5 Z " alpha="1">
		<fill>
			<LinearGradient x = "25" y = "3" scaleX = "44" rotation = "90">
				<GradientEntry color="#000000" ratio="0" alpha="0.12"/>
				<GradientEntry color="#000000" ratio="1" alpha="0"/>
			</LinearGradient>
		</fill>
	</Path>
</Graphic>