This is an automated email from the ASF dual-hosted git repository.
Yilialinn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-website.git
The following commit(s) were added to refs/heads/master by this push:
new c2b3238b365 feat(website): real logos on the Plugin Hub & homepage
layout polish (#2061)
c2b3238b365 is described below
commit c2b3238b36583c2d1711b7c46f2e41c919d4bb93
Author: Ming Wen <[email protected]>
AuthorDate: Thu Jun 25 11:06:28 2026 +0800
feat(website): real logos on the Plugin Hub & homepage layout polish (#2061)
---
website/src/components/sections/Integrations.tsx | 13 +-
.../src/components/sections/OpensourcePromo.tsx | 1 +
website/src/css/customTheme.scss | 3 -
website/src/css/landing-sections/architecture.scss | 4 -
website/src/css/landing-sections/comparison.scss | 3 +-
.../src/css/landing-sections/features.module.scss | 4 +-
website/src/css/landing-sections/integrations.scss | 16 +-
.../src/css/landing-sections/os-promo.module.scss | 6 +-
website/src/pages/plugins.tsx | 49 +-
website/static/data/plugins.json | 244 +--
website/static/img/integrations/alibabacloud.svg | 1 +
website/static/img/integrations/aws.svg | 7 +
website/static/img/integrations/awslambda.svg | 14 +
website/static/img/integrations/azurefunctions.svg | 1 +
website/static/img/integrations/brotli.svg | 9 +
website/static/img/integrations/dubbo.svg | 7 +
website/static/img/integrations/graphql.svg | 1 +
website/static/img/integrations/grpc.svg | 1 +
website/static/img/integrations/kafka.svg | 1 +
website/static/img/integrations/mqtt.svg | 1 +
website/static/img/integrations/opa.svg | 1 +
website/static/img/integrations/openapi.svg | 1 +
website/static/img/integrations/openfunction.svg | 4 +
website/static/img/integrations/openwhisk.svg | 1832 ++++++++++++++++++++
website/static/img/integrations/rocketmq.svg | 1 +
website/static/img/integrations/safeline.svg | 45 +
website/static/img/integrations/skywalking.svg | 18 +
website/static/img/integrations/splunk.svg | 1 +
website/static/img/plugin/ai.svg | 10 +
website/static/img/plugin/apisix.svg | 15 +
30 files changed, 2148 insertions(+), 166 deletions(-)
diff --git a/website/src/components/sections/Integrations.tsx
b/website/src/components/sections/Integrations.tsx
index 4dc51911595..707498c99d9 100644
--- a/website/src/components/sections/Integrations.tsx
+++ b/website/src/components/sections/Integrations.tsx
@@ -112,16 +112,9 @@ const Integrations: FC = () => (
Connect APISIX to your observability, security, service discovery, and
AI tools through 100+ plugins.
</Translate>
</p>
- <div className="integrations__groups">
- {GROUPS.map((group) => (
- <div className="integrations__group" key={group.title}>
- <div className="integrations__group-title">{group.title}</div>
- <div className="integrations__tiles">
- {group.items.map((item) => (
- <IntegrationTile item={item} key={item.name} />
- ))}
- </div>
- </div>
+ <div className="integrations__tiles">
+ {GROUPS.flatMap((group) => group.items).map((item) => (
+ <IntegrationTile item={item} key={item.name} />
))}
</div>
<Link className="integrations__cta" to="/plugins/">
diff --git a/website/src/components/sections/OpensourcePromo.tsx
b/website/src/components/sections/OpensourcePromo.tsx
index f0431025204..5b46c5ff6e6 100644
--- a/website/src/components/sections/OpensourcePromo.tsx
+++ b/website/src/components/sections/OpensourcePromo.tsx
@@ -28,6 +28,7 @@ const VideoChannel: FC = () => {
const videoOptions: VideoProps['options'] = {
controls: true,
+ fluid: true,
preload: 'none',
poster: 'https://static.apiseven.com/202202/apisix-video-poster.jpeg',
sources: [
diff --git a/website/src/css/customTheme.scss b/website/src/css/customTheme.scss
index 425a6b720cf..92518ac000f 100644
--- a/website/src/css/customTheme.scss
+++ b/website/src/css/customTheme.scss
@@ -256,7 +256,6 @@ a:hover {
}
.arch-head,
-.compare-head,
.testimonials-head,
.docs-promo-head {
font-size: 2.4rem;
@@ -266,7 +265,6 @@ a:hover {
}
.arch-subtitle,
-.compare-subtitle,
.testimonials-subtitle,
.docs-promo-subtitle {
font-size: 1.13rem;
@@ -452,7 +450,6 @@ a:hover {
}
.arch-head,
- .compare-head,
.testimonials-head,
.docs-promo-head,
.oss-promo-head {
diff --git a/website/src/css/landing-sections/architecture.scss
b/website/src/css/landing-sections/architecture.scss
index b860c54ca76..51bc3642e4e 100644
--- a/website/src/css/landing-sections/architecture.scss
+++ b/website/src/css/landing-sections/architecture.scss
@@ -55,7 +55,6 @@
}
.arch-head,
-.compare-head,
.testimonials-head,
.docs-promo-head {
font-size: 2.4rem;
@@ -65,7 +64,6 @@
}
.arch-subtitle,
-.compare-subtitle,
.testimonials-subtitle,
.docs-promo-subtitle {
font-size: 1.13rem;
@@ -99,7 +97,6 @@
}
.arch-head,
- .compare-head,
.testimonials-head,
.docs-promo-head,
.oss-promo-head {
@@ -108,7 +105,6 @@
}
.arch-subtitle,
- .compare-subtitle,
.testimonials-subtitle,
.docs-promo-subtitle,
.oss-promo-subtitle {
diff --git a/website/src/css/landing-sections/comparison.scss
b/website/src/css/landing-sections/comparison.scss
index 566f8f84293..9131ed9ffb8 100644
--- a/website/src/css/landing-sections/comparison.scss
+++ b/website/src/css/landing-sections/comparison.scss
@@ -8,7 +8,8 @@
.compare-head {
font-size: clamp(1.6rem, 1rem + 2vw, 2.25rem);
font-weight: 700;
- margin-bottom: 0.5rem;
+ max-width: 760px;
+ margin: 0 auto 0.5rem;
}
.compare-subtitle {
diff --git a/website/src/css/landing-sections/features.module.scss
b/website/src/css/landing-sections/features.module.scss
index e2cd0e5da2c..9694c585167 100644
--- a/website/src/css/landing-sections/features.module.scss
+++ b/website/src/css/landing-sections/features.module.scss
@@ -163,13 +163,13 @@
.features {
width: 100%;
- margin: 10rem 0;
+ margin: 6rem 0 2rem;
hyphens: auto;
position: relative;
& .head {
padding: 0 10%;
- margin-bottom: 8rem;
+ margin-bottom: 0;
h2 {
background-color: rgb(232 67 62);
diff --git a/website/src/css/landing-sections/integrations.scss
b/website/src/css/landing-sections/integrations.scss
index b0c79358050..1d1cfb64469 100644
--- a/website/src/css/landing-sections/integrations.scss
+++ b/website/src/css/landing-sections/integrations.scss
@@ -19,25 +19,13 @@
line-height: 1.6;
}
-.integrations__groups {
- display: flex;
- flex-direction: column;
- gap: 1.75rem;
-}
-
-.integrations__group-title {
- font-size: 0.78rem;
- letter-spacing: 0.07em;
- text-transform: uppercase;
- color: #9a9a9a;
- margin-bottom: 0.85rem;
-}
-
.integrations__tiles {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 0.75rem;
+ max-width: 860px;
+ margin: 0 auto;
}
.integrations__tile {
diff --git a/website/src/css/landing-sections/os-promo.module.scss
b/website/src/css/landing-sections/os-promo.module.scss
index 21212cd3891..7c15bdf3d75 100644
--- a/website/src/css/landing-sections/os-promo.module.scss
+++ b/website/src/css/landing-sections/os-promo.module.scss
@@ -55,7 +55,8 @@
& .docsPromo {
box-sizing: border-box;
display: flex;
- justify-content: center;
+ flex-direction: column;
+ flex: 1;
background-color: #f8f8f8;
padding: 80px 40px 50px;
margin-left: 25px;
@@ -64,7 +65,8 @@
& .docsPromoHead {
display: flex;
flex-flow: column;
- margin-right: 25px;
+ margin-right: 0;
+ margin-bottom: 1.5rem;
h3 {
font-size: 2.4rem;
diff --git a/website/src/pages/plugins.tsx b/website/src/pages/plugins.tsx
index 594d1a51f66..7c9941cb202 100644
--- a/website/src/pages/plugins.tsx
+++ b/website/src/pages/plugins.tsx
@@ -191,9 +191,48 @@ const SBeta = styled.div`
}
`;
+interface PluginEntry {
+ name: string;
+ description?: string;
+ logo?: string;
+ useDefaultIcon?: boolean;
+ beta?: boolean;
+}
+
+interface PluginGroup {
+ groupName: string;
+ plugins: PluginEntry[];
+}
+
+const renderPluginIcon = (plugin: PluginEntry): JSX.Element => {
+ if (plugin.logo) {
+ return (
+ <img
+ className="plugin-logo shadow"
+ src={plugin.logo}
+ alt={plugin.name}
+ loading="lazy"
+ onError={(e) => {
+ e.currentTarget.onerror = null;
+ e.currentTarget.src = '/img/plugin/default-icon.png';
+ e.currentTarget.classList.add('default');
+ }}
+ />
+ );
+ }
+ if (plugin.useDefaultIcon) {
+ return <img className="plugin-logo shadow" src="/img/plugin/apisix.svg"
alt={plugin.name} loading="lazy" />;
+ }
+ return (
+ <svg className="plugin-logo shadow" aria-hidden="true">
+ <use xlinkHref={`#icon${plugin.name}`} />
+ </svg>
+ );
+};
+
const Plugins: FC = () => {
const { siteConfig } = useDocusaurusContext();
- const { plugins = [] } = siteConfig.customFields as { plugins: any[] };
+ const { plugins = [] } = siteConfig.customFields as { plugins: PluginGroup[]
};
const sidebar = plugins.map((section) => (
<SidebarItem key={section.groupName}><a className="sidebar-link"
href={`#${section.groupName}`}>{section.groupName}</a></SidebarItem>
));
@@ -205,13 +244,7 @@ const Plugins: FC = () => {
<div key={plugin.name}>
<PluginCard href={plugin.beta ?
`/docs/apisix/next/plugins/${pluginUrl}` : `/docs/apisix/plugins/${pluginUrl}`}
target="_blank">
<PluginIcon>
- {plugin.useDefaultIcon
- ? <img className="plugin-logo shadow default"
src="/img/plugin/default-icon.png" alt={plugin.name} />
- : (
- <svg className="plugin-logo shadow" aria-hidden="true">
- <use xlinkHref={`#icon${plugin.name}`} />
- </svg>
- )}
+ {renderPluginIcon(plugin)}
</PluginIcon>
<PluginName>
{plugin.name}
diff --git a/website/static/data/plugins.json b/website/static/data/plugins.json
index 9bbf985b7d8..f07a72d080f 100644
--- a/website/static/data/plugins.json
+++ b/website/static/data/plugins.json
@@ -1,64 +1,61 @@
[
{
- "groupName": "General",
+ "groupName": "Traffic",
"plugins": [
{
- "name": "batch-requests",
- "description": "The batch-requests plugin accepts multiple requests,
sends them from APISIX via HTTP pipelining, and returns an aggregated response
to the client"
+ "name": "limit-req",
+ "description": "The plugin limits request rate using the leaky bucket
method"
},
{
- "name": "redirect",
- "description": "The redirect Plugin can be used to configure
redirects",
- "useDefaultIcon": true
+ "name": "limit-conn",
+ "description": "The plugin limits request concurrency"
},
{
- "name": "echo",
- "description": "The echo Plugin is to help users understand how they
can develop an APISIX Plugin",
- "useDefaultIcon": true
+ "name": "limit-count",
+ "description": "The plugin Limits request rate by a fixed number of
requests in a given time window"
},
{
- "name": "gzip",
- "description": "The gzip Plugin dynamically sets the behavior of gzip
in Nginx",
- "useDefaultIcon": true
+ "name": "proxy-cache",
+ "description": "The proxy-cache Plugin can be used to cache the
response from the Upstream"
},
{
- "name": "brotli",
- "description": "The brotli Plugin dynamically configures Brotli
compression in NGINX",
- "useDefaultIcon": true
+ "name": "request-validation",
+ "description": "The request-validation Plugin can be used to validate
the requests before forwarding them to an Upstream service"
},
{
- "name": "real-ip",
- "description": "The real-ip Plugin is used to dynamically change the
client's IP address and port as seen by APISIX",
- "useDefaultIcon": true
+ "name": "proxy-mirror",
+ "description": "The proxy-mirror Plugin can be used to mirror client
requests"
},
{
- "name": "server-info",
- "description": "The server-info Plugin periodically reports basic
server information to etcd",
- "useDefaultIcon": true
+ "name": "api-breaker",
+ "description": "The api-breaker Plugin implements circuit breaker
functionality to protect Upstream services"
},
{
- "name": "inspect",
- "description": "The inspect Plugin exposes runtime inspection
information for APISIX",
- "useDefaultIcon": true
+ "name": "traffic-split",
+ "description": "The traffic split plugin allows users to incrementally
direct percentages of traffic between various upstreams"
},
{
- "name": "lago",
- "description": "The lago Plugin reports usage and billing events to
Lago",
+ "name": "request-id",
+ "description": "The request-id Plugin adds a unique ID to each request
proxied through APISIX"
+ },
+ {
+ "name": "attach-consumer-label",
+ "description": "The attach-consumer-label Plugin injects labels from
the authenticated consumer into the request context",
"useDefaultIcon": true
},
{
- "name": "ext-plugin-pre-req",
- "description": "The ext-plugin-pre-req Plugin is for running specific
external Plugins in the Plugin Runner before executing the built-in Lua
Plugins",
+ "name": "proxy-control",
+ "description": "The proxy-control Plugin dynamically controls the
behavior of the NGINX proxy",
"useDefaultIcon": true
},
{
- "name": "ext-plugin-post-req",
- "description": "ext-plugin-post-req differs from the
ext-plugin-pre-req Plugin in that it runs after executing the built-in Lua
Plugins and before proxying to the Upstream",
+ "name": "client-control",
+ "description": "The client-control Plugin can be used to dynamically
control the behavior of NGINX to handle a client request, by setting the max
size of the request body",
"useDefaultIcon": true
},
{
- "name": "ext-plugin-post-resp",
- "description": "The ext-plugin-post-resp Plugin is for running
specific external Plugins in the Plugin Runner before executing the built-in
Lua Plugins",
+ "name": "traffic-label",
+ "description": "The traffic-label Plugin evaluates labels on requests
for traffic governance and routing",
"useDefaultIcon": true
}
]
@@ -81,7 +78,7 @@
{
"name": "grpc-web",
"description": "The grpc-web Plugin is a proxy Plugin that can process
gRPC Web requests from JavaScript clients to a gRPC service",
- "useDefaultIcon": true
+ "logo": "/img/integrations/grpc.svg"
},
{
"name": "body-transformer",
@@ -91,7 +88,7 @@
{
"name": "degraphql",
"description": "The degraphql Plugin translates GraphQL queries into
upstream REST requests",
- "useDefaultIcon": true
+ "logo": "/img/integrations/graphql.svg"
},
{
"name": "exit-transformer",
@@ -177,7 +174,7 @@
{
"name": "opa",
"description": "An authorization plugin can be used to integrate with
Open Policy Agent",
- "useDefaultIcon": true
+ "logo": "/img/integrations/opa.svg"
},
{
"name": "forward-auth",
@@ -222,12 +219,12 @@
{
"name": "chaitin-waf",
"description": "The chaitin-waf Plugin integrates Chaitin SafeLine WAF
inspection with APISIX",
- "useDefaultIcon": true
+ "logo": "/img/integrations/safeline.svg"
},
{
"name": "oas-validator",
"description": "The oas-validator Plugin validates requests against an
OpenAPI specification",
- "useDefaultIcon": true
+ "logo": "/img/integrations/openapi.svg"
},
{
"name": "ocsp-stapling",
@@ -241,119 +238,58 @@
}
]
},
- {
- "groupName": "Traffic",
- "plugins": [
- {
- "name": "limit-req",
- "description": "The plugin limits request rate using the leaky bucket
method"
- },
- {
- "name": "limit-conn",
- "description": "The plugin limits request concurrency"
- },
- {
- "name": "limit-count",
- "description": "The plugin Limits request rate by a fixed number of
requests in a given time window"
- },
- {
- "name": "proxy-cache",
- "description": "The proxy-cache Plugin can be used to cache the
response from the Upstream"
- },
- {
- "name": "request-validation",
- "description": "The request-validation Plugin can be used to validate
the requests before forwarding them to an Upstream service"
- },
- {
- "name": "proxy-mirror",
- "description": "The proxy-mirror Plugin can be used to mirror client
requests"
- },
- {
- "name": "api-breaker",
- "description": "The api-breaker Plugin implements circuit breaker
functionality to protect Upstream services"
- },
- {
- "name": "traffic-split",
- "description": "The traffic split plugin allows users to incrementally
direct percentages of traffic between various upstreams"
- },
- {
- "name": "request-id",
- "description": "The request-id Plugin adds a unique ID to each request
proxied through APISIX"
- },
- {
- "name": "attach-consumer-label",
- "description": "The attach-consumer-label Plugin injects labels from
the authenticated consumer into the request context",
- "useDefaultIcon": true
- },
- {
- "name": "proxy-control",
- "description": "The proxy-control Plugin dynamically controls the
behavior of the NGINX proxy",
- "useDefaultIcon": true
- },
- {
- "name": "client-control",
- "description": "The client-control Plugin can be used to dynamically
control the behavior of NGINX to handle a client request, by setting the max
size of the request body",
- "useDefaultIcon": true
- },
- {
- "name": "traffic-label",
- "description": "The traffic-label Plugin evaluates labels on requests
for traffic governance and routing",
- "useDefaultIcon": true
- }
- ]
- },
{
"groupName": "AI",
"plugins": [
{
"name": "ai-proxy",
"description": "The ai-proxy Plugin simplifies proxying requests to
LLM providers compatible with the OpenAI API format",
- "useDefaultIcon": true
+ "logo": "/img/plugin/ai.svg"
},
{
"name": "ai-proxy-multi",
"description": "The ai-proxy-multi Plugin extends ai-proxy with load
balancing, retries, fallbacks, and health checks for LLM providers",
- "useDefaultIcon": true
+ "logo": "/img/plugin/ai.svg"
},
{
"name": "ai-request-rewrite",
"description": "The ai-request-rewrite Plugin rewrites client requests
with LLM-generated content before proxying upstream",
- "useDefaultIcon": true
+ "logo": "/img/plugin/ai.svg"
},
{
"name": "ai-rate-limiting",
"description": "The ai-rate-limiting Plugin limits LLM usage by
tracking and throttling token consumption",
- "useDefaultIcon": true
+ "logo": "/img/plugin/ai.svg"
},
{
"name": "ai-prompt-decorator",
"description": "The ai-prompt-decorator Plugin prepends and appends
predefined prompts to user input",
- "useDefaultIcon": true
+ "logo": "/img/plugin/ai.svg"
},
{
"name": "ai-prompt-template",
"description": "The ai-prompt-template Plugin applies predefined
prompt templates and accepts values for declared variables",
- "useDefaultIcon": true
+ "logo": "/img/plugin/ai.svg"
},
{
"name": "ai-prompt-guard",
"description": "The ai-prompt-guard Plugin validates prompts against
allow and deny patterns before forwarding them to LLM services",
- "useDefaultIcon": true
+ "logo": "/img/plugin/ai.svg"
},
{
"name": "ai-aws-content-moderation",
"description": "The ai-aws-content-moderation Plugin uses AWS
Comprehend to detect and block toxic request content",
- "useDefaultIcon": true
+ "logo": "/img/integrations/aws.svg"
},
{
"name": "ai-aliyun-content-moderation",
"description": "The ai-aliyun-content-moderation Plugin uses Alibaba
Cloud content moderation to inspect and block unsafe requests",
- "useDefaultIcon": true
+ "logo": "/img/integrations/alibabacloud.svg"
},
{
"name": "ai-rag",
"description": "The ai-rag Plugin adds retrieval-augmented generation
by fetching relevant context from external data sources",
- "useDefaultIcon": true
+ "logo": "/img/plugin/ai.svg"
}
]
},
@@ -371,7 +307,7 @@
{
"name": "opentelemetry",
"description": "The opentelemetry Plugin can be used to report tracing
data according to the OpenTelemetry specification",
- "useDefaultIcon": true
+ "logo": "/img/integrations/opentelemetry.svg"
},
{
"name": "prometheus",
@@ -393,7 +329,7 @@
{
"name": "skywalking-logger",
"description": "The skywalking-logger Plugin can be used to push
access log data to SkyWalking OAP server of HTTP",
- "useDefaultIcon": true
+ "logo": "/img/integrations/skywalking.svg"
},
{
"name": "tcp-logger",
@@ -406,7 +342,7 @@
{
"name": "rocketmq-logger",
"description": "The rocketmq-logger Plugin provides the ability to
push logs as JSON objects to your RocketMQ clusters",
- "useDefaultIcon": true
+ "logo": "/img/integrations/rocketmq.svg"
},
{
"name": "udp-logger",
@@ -415,7 +351,7 @@
{
"name": "clickhouse-logger",
"description": "The clickhouse-logger Plugin is used to push logs to
ClickHouse database",
- "useDefaultIcon": true
+ "logo": "/img/integrations/clickhouse.svg"
},
{
"name": "syslog",
@@ -441,7 +377,7 @@
{
"name": "splunk-hec-logging",
"description": "The splunk-hec-logging Plugin is used to forward logs
to Splunk HTTP Event Collector (HEC) for analysis and storage",
- "useDefaultIcon": true
+ "logo": "/img/integrations/splunk.svg"
},
{
"name": "file-logger",
@@ -456,12 +392,12 @@
{
"name": "loki-logger",
"description": "The loki-logger Plugin pushes access logs to Grafana
Loki",
- "useDefaultIcon": true
+ "logo": "/img/integrations/grafana.svg"
},
{
"name": "elasticsearch-logger",
"description": "The elasticsearch-logger Plugin is used to forward
logs to Elasticsearch for analysis and storage",
- "useDefaultIcon": true
+ "logo": "/img/integrations/elasticsearch.svg"
},
{
"name": "tencent-cloud-cls",
@@ -481,17 +417,17 @@
{
"name": "azure-functions",
"description": "The azure-functions Plugin is used to integrate APISIX
with Azure Serverless Function as a dynamic upstream to proxy all requests for
a particular URI to the Microsoft Azure Cloud",
- "useDefaultIcon": true
+ "logo": "/img/integrations/azurefunctions.svg"
},
{
"name": "openwhisk",
"description": "The openwhisk Plugin is used to integrate APISIX with
the Apache OpenWhisk serverless platform",
- "useDefaultIcon": true
+ "logo": "/img/integrations/openwhisk.svg"
},
{
"name": "aws-lambda",
"description": "The aws-lambda Plugin is used for integrating APISIX
with AWS Lambda as a dynamic upstream to proxy all requests for a particular
URI to the AWS Cloud",
- "useDefaultIcon": true
+ "logo": "/img/integrations/awslambda.svg"
},
{
"name": "workflow",
@@ -501,7 +437,7 @@
{
"name": "openfunction",
"description": "The openfunction Plugin is used to integrate APISIX
with CNCF OpenFunction serverless platform",
- "useDefaultIcon": true
+ "logo": "/img/integrations/openfunction.svg"
}
]
},
@@ -511,21 +447,85 @@
{
"name": "dubbo-proxy",
"description": "The dubbo-proxy Plugin allows you to proxy HTTP
requests to Apache Dubbo",
- "useDefaultIcon": true
+ "logo": "/img/integrations/dubbo.svg"
},
{
"name": "http-dubbo",
"description": "The http-dubbo Plugin proxies HTTP requests to Apache
Dubbo services",
- "useDefaultIcon": true
+ "logo": "/img/integrations/dubbo.svg"
},
{
"name": "mqtt-proxy",
"description": "The mqtt-proxy Plugin is used for dynamic load
balancing with client_id of MQTT. It only works in stream mode",
- "useDefaultIcon": true
+ "logo": "/img/integrations/mqtt.svg"
},
{
"name": "kafka-proxy",
"description": "The kafka-proxy plugin can be used to configure
advanced parameters for the kafka upstream of Apache APISIX, such as SASL
authentication",
+ "logo": "/img/integrations/kafka.svg"
+ }
+ ]
+ },
+ {
+ "groupName": "General",
+ "plugins": [
+ {
+ "name": "batch-requests",
+ "description": "The batch-requests plugin accepts multiple requests,
sends them from APISIX via HTTP pipelining, and returns an aggregated response
to the client"
+ },
+ {
+ "name": "redirect",
+ "description": "The redirect Plugin can be used to configure
redirects",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "echo",
+ "description": "The echo Plugin is to help users understand how they
can develop an APISIX Plugin",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "gzip",
+ "description": "The gzip Plugin dynamically sets the behavior of gzip
in Nginx",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "brotli",
+ "description": "The brotli Plugin dynamically configures Brotli
compression in NGINX",
+ "logo": "/img/integrations/brotli.svg"
+ },
+ {
+ "name": "real-ip",
+ "description": "The real-ip Plugin is used to dynamically change the
client's IP address and port as seen by APISIX",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "server-info",
+ "description": "The server-info Plugin periodically reports basic
server information to etcd",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "inspect",
+ "description": "The inspect Plugin exposes runtime inspection
information for APISIX",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "lago",
+ "description": "The lago Plugin reports usage and billing events to
Lago",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "ext-plugin-pre-req",
+ "description": "The ext-plugin-pre-req Plugin is for running specific
external Plugins in the Plugin Runner before executing the built-in Lua
Plugins",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "ext-plugin-post-req",
+ "description": "ext-plugin-post-req differs from the
ext-plugin-pre-req Plugin in that it runs after executing the built-in Lua
Plugins and before proxying to the Upstream",
+ "useDefaultIcon": true
+ },
+ {
+ "name": "ext-plugin-post-resp",
+ "description": "The ext-plugin-post-resp Plugin is for running
specific external Plugins in the Plugin Runner before executing the built-in
Lua Plugins",
"useDefaultIcon": true
}
]
diff --git a/website/static/img/integrations/alibabacloud.svg
b/website/static/img/integrations/alibabacloud.svg
new file mode 100644
index 00000000000..e0a1e9d1f9a
--- /dev/null
+++ b/website/static/img/integrations/alibabacloud.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"><title>Alibaba Cloud</title><path d="M3.996
4.517h5.291L8.01 6.324 4.153 7.506a1.668 1.668 0 0 0-1.165 1.601v5.786a1.668
1.668 0 0 0 1.165 1.6l3.857 1.183 1.277 1.807H3.996A3.996 3.996 0 0 1 0
15.487V8.513a3.996 3.996 0 0 1 3.996-3.996m16.008 0h-5.291l1.277 1.807 3.857
1.182c.715.227 1.17.889 1.165 1.601v5.786a1.668 1.668 0 0 1-1.165 1.6l-3.857
1.183-1.277 1.807h5.291A3.996 3.996 0 0 0 24 15.487V8.513a3.996 3.996 0 0 [...]
\ No newline at end of file
diff --git a/website/static/img/integrations/aws.svg
b/website/static/img/integrations/aws.svg
new file mode 100644
index 00000000000..de4948d7459
--- /dev/null
+++ b/website/static/img/integrations/aws.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="256px" height="153px" viewBox="0 0 256 153" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
preserveAspectRatio="xMidYMid">
+ <g>
+ <path d="M72.392053,55.4384106
C72.392053,58.5748344 72.7311258,61.1178808 73.3245033,62.9827815
C74.002649,64.8476821 74.8503311,66.8821192 76.0370861,69.0860927
C76.4609272,69.7642384 76.6304636,70.4423841 76.6304636,71.0357616
C76.6304636,71.8834437 76.1218543,72.7311258 75.0198675,73.5788079
L69.6794702,77.1390728 C68.9165563,77.6476821 68.1536424,77.9019868
67.4754967,77.9019868 C66.6278146,77.9019868 65.7801325,77.4781457
64.9324503,76.7152318 C63.7456954,75.4437086 62.7284768, [...]
+ <path d="M230.993377,120.964238
C203.104636,141.562914 162.58543,152.498013 127.745695,152.498013
C78.9192053,152.498013 34.9245033,134.442384 1.69536424,104.434437
C-0.932450331,102.060927 1.4410596,98.8397351 4.57748344,100.704636
C40.5192053,121.557616 84.8529801,134.188079 130.712583,134.188079
C161.65298,134.188079 195.645033,127.745695 226.924503,114.521854
C231.586755,112.402649 235.570861,117.57351 230.993377,120.964238 Z
M242.606623,107.740397 C239.046358,103.162914 219.0410 [...]
+ </g>
+</svg>
diff --git a/website/static/img/integrations/awslambda.svg
b/website/static/img/integrations/awslambda.svg
new file mode 100644
index 00000000000..c7407489abd
--- /dev/null
+++ b/website/static/img/integrations/awslambda.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="256px" height="256px" viewBox="0 0 256 256" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
preserveAspectRatio="xMidYMid">
+ <title>AWS Lambda</title>
+ <defs>
+ <linearGradient x1="0%" y1="100%" x2="100%" y2="0%"
id="linearGradient-1">
+ <stop stop-color="#C8511B" offset="0%"></stop>
+ <stop stop-color="#FF9900" offset="100%"></stop>
+ </linearGradient>
+ </defs>
+ <g>
+ <rect fill="url(#linearGradient-1)" x="0" y="0" width="256"
height="256"></rect>
+ <path d="M89.6241126,211.2 L49.8903277,211.2 L93.8354832,119.3472
L113.74728,160.3392 L89.6241126,211.2 Z M96.7029357,110.5696
C96.1640858,109.4656 95.0414813,108.7648 93.8162384,108.7648
L93.8066163,108.7648 C92.5717514,108.768 91.4491466,109.4752
90.9199187,110.5856 L41.9134208,213.0208 C41.4387197,214.0128
41.5060758,215.1776 42.0962451,216.1088 C42.6799994,217.0368 43.7063805,217.6
44.8065331,217.6 L91.654423,217.6 C92.8957027,217.6 94.0215149,216.8864
94.5539501,215.7696 L12 [...]
+ </g>
+</svg>
\ No newline at end of file
diff --git a/website/static/img/integrations/azurefunctions.svg
b/website/static/img/integrations/azurefunctions.svg
new file mode 100644
index 00000000000..6c0d5a7a1cb
--- /dev/null
+++ b/website/static/img/integrations/azurefunctions.svg
@@ -0,0 +1 @@
+<svg viewBox="0 0 128 128"
xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="azure-original-a"
x1="60.919" y1="9.602" x2="18.667" y2="134.423"
gradientUnits="userSpaceOnUse"><stop stop-color="#114A8B"/><stop offset="1"
stop-color="#0669BC"/></linearGradient><linearGradient id="azure-original-b"
x1="74.117" y1="67.772" x2="64.344" y2="71.076"
gradientUnits="userSpaceOnUse"><stop stop-opacity=".3"/><stop offset=".071"
stop-opacity=".2"/><stop offset=".321" stop-opacity=".1"/><st [...]
diff --git a/website/static/img/integrations/brotli.svg
b/website/static/img/integrations/brotli.svg
new file mode 100644
index 00000000000..ed5241f8ba5
--- /dev/null
+++ b/website/static/img/integrations/brotli.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="256px" height="256px" viewBox="0 0 256 256" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
preserveAspectRatio="xMidYMid">
+ <g>
+ <path d="M94.8793826,251.607827
C26.6126647,233.315815 -13.899839,163.1461 4.39217292,94.8793826
C22.6841848,26.6126647 92.8538996,-13.899839 161.120617,4.39217292
C229.387335,22.6841848 269.899839,92.8538996 251.607827,161.120617
C233.315815,229.387335 163.1461,269.899839 94.8793826,251.607827 Z"
fill="#EEAA33"></path>
+ <path d="M101.606901,226.500386
C88.0068357,222.85626 88.7983974,175.801986 103.374903,121.401725
C117.951409,67.001464 140.793034,25.8554871 154.393099,29.4996137
C167.993164,33.1437402 167.201603,80.1980135 152.625097,134.598275
C138.048591,188.998536 115.206966,230.144513 101.606901,226.500386 Z"
fill="#FFFFFF"></path>
+ <path d="M176.366192,193.74588
C169.566159,191.923817 169.96194,168.39668 177.250193,141.196549
C184.538446,113.996419 195.959258,93.4234304 202.759291,95.2454937
C209.559324,97.0675569 209.163543,120.594694 201.87529,147.794824
C194.587037,174.994955 183.166225,195.567943 176.366192,193.74588 Z"
fill="#FFFFFF"></path>
+ <path d="M53.2407091,160.754506
C46.4406764,158.932443 46.8364572,135.405306 54.1247102,108.205176
C61.4129633,81.0050452 72.8337754,60.4320567 79.633808,62.25412
C86.4338407,64.0761832 86.0380599,87.6033199 78.7498068,114.803451
C71.4615538,142.003581 60.0407417,162.57657 53.2407091,160.754506 Z"
fill="#FFFFFF"></path>
+ </g>
+</svg>
diff --git a/website/static/img/integrations/dubbo.svg
b/website/static/img/integrations/dubbo.svg
new file mode 100644
index 00000000000..4b107e0ffee
--- /dev/null
+++ b/website/static/img/integrations/dubbo.svg
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 321.39 78.54"
version="1.1">
+ <title id="title19">DUBBO LOGO</title>
+ <path class="cls-1"
+
d="M68.46,50.38c0,14.06,11.39,22.11,25.45,22.11s25.45-8.05,25.45-22.11V7.25H68.46Zm21.24-28h8.6V31H89.7Zm0,22.25h8.6v8.6H89.7ZM33.24,7.25H4.06v64H33.24c10.95,0,19.3-7.18,23.29-17.15a45.12,45.12,0,0,0,2.38-14.87A45.12,45.12,0,0,0,56.53,24.4C52.84,14.62,44.19,7.25,33.24,7.25Zm.43,14.63H30.34a3.44,3.44,0,0,0-3.44,3.44V53.23a3.44,3.44,0,0,0,3.44,3.44h3.33v4.63h-8.3a6.87,6.87,0,0,1-6.87-6.87V24.12a6.87,6.87,0,0,1,6.87-6.87h8.3ZM285.51,6.06c-17.05,0-30.88,10.28-30.88,33.21s13.83,33.2
[...]
+ style="fill:#2C3E50;fill-opacity:1"/>
+</svg>
diff --git a/website/static/img/integrations/graphql.svg
b/website/static/img/integrations/graphql.svg
new file mode 100644
index 00000000000..3265b71859a
--- /dev/null
+++ b/website/static/img/integrations/graphql.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><g
fill="#E434AA"><path d="M18.39 96.852l-4.6-2.657L65.04 5.434l4.597 2.656zm0
0"/><path d="M12.734 87.105H115.23v5.31H12.734zm0 0"/><path d="M66.031
119.688L14.766 90.09l2.656-4.602 51.266 29.602zm0 0M110.566 42.543L59.301
12.941l2.656-4.597 51.266 29.597zm0 0"/><path d="M17.434 42.523l-2.657-4.601
51.27-29.598 2.656 4.598zm0 0"/><path d="M109.621 96.852L58.375
8.09l4.598-2.656 51.25 88.761zm0 0M16.8 34.398h5.313v59.204h-5.31 [...]
\ No newline at end of file
diff --git a/website/static/img/integrations/grpc.svg
b/website/static/img/integrations/grpc.svg
new file mode 100644
index 00000000000..02448e678a8
--- /dev/null
+++ b/website/static/img/integrations/grpc.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="-3.78 101.47
365.56 156.81"><defs><clipPath id="clip-path"><path d="M10.448
115.797h34.468v34.468H10.448z" class="cls-1" transform="rotate(-45.213 27.682
133.032)"/></clipPath><clipPath id="clip-path-2"><path d="M84.176
122.635h20.218v20.218H84.176z" class="cls-1" transform="rotate(-45.213 94.285
132.743)"/></clipPath><style>.cls-1{fill:none}.cls-2{fill:#244b5a}.cls-4{fill:#75caca}.cls-5{fill:#74cbca}.cls-6{fill:#73cbca}.cls-7{f
[...]
\ No newline at end of file
diff --git a/website/static/img/integrations/kafka.svg
b/website/static/img/integrations/kafka.svg
new file mode 100644
index 00000000000..29836cf0fcc
--- /dev/null
+++ b/website/static/img/integrations/kafka.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128"><path d="M86.758
70.89c-4.992 0-9.465 2.208-12.528 5.68l-7.851-5.547a21.275 21.275 0
001.312-7.32c0-2.531-.46-4.95-1.27-7.203l7.837-5.488c3.062 3.457 7.523 5.652
12.5 5.652 9.207 0 16.703-7.48 16.703-16.672
0-9.195-7.496-16.672-16.703-16.672-9.211 0-16.707 7.477-16.707 16.672 0
1.645.25 3.23.699 4.735l-7.84 5.488a21.578 21.578 0
00-13.36-7.746v-9.43c7.567-1.586 13.27-8.293 13.27-16.312C62.82 7.53 55.324.055
46.117.055c-9.21 0- [...]
diff --git a/website/static/img/integrations/mqtt.svg
b/website/static/img/integrations/mqtt.svg
new file mode 100644
index 00000000000..7180c4d5c88
--- /dev/null
+++ b/website/static/img/integrations/mqtt.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"><title>MQTT</title><path d="M10.657
23.994h-9.45A1.212 1.212 0 0 1 0 22.788v-9.18h.071c5.784 0 10.504 4.65 10.586
10.386Zm7.606 0h-4.045C14.135 16.246 7.795 9.977 0 9.942V6.038h.071c9.983 0
18.121 8.044 18.192 17.956Zm4.53 0h-.97C21.754 12.071 11.995 2.407 0
2.372v-1.16C0 .55.544.006 1.207.006h7.64C15.733 2.49 21.257 7.789 24
14.508v8.291c0 .663-.544 1.195-1.207 1.195ZM16.713.006h6.092A1.19 1.19 0 0 1 24
1.2v5.914c-.9 [...]
\ No newline at end of file
diff --git a/website/static/img/integrations/opa.svg
b/website/static/img/integrations/opa.svg
new file mode 100644
index 00000000000..73f873b41e3
--- /dev/null
+++ b/website/static/img/integrations/opa.svg
@@ -0,0 +1 @@
+<svg width="56" height="56" viewBox="0 0 56 56" fill="none"
xmlns="http://www.w3.org/2000/svg"><path d="M52.5
16.917c0-4.667-8.75-15.167-9.333-15.75 2.098 9.444 1.837 8.034 2.188
11.05.093.795.132 1.62-.186 2.355-1.457 3.365-6.67 5.26-6.67 5.26l8.166 7S52.5
21 52.5 16.918zm-49 0c0-4.667 8.75-15.167 9.333-15.75-2.098 9.444-1.838
8.034-2.188 11.05-.093.795-.132 1.62.186 2.355 1.457 3.365 6.67 5.26 6.67
5.26l-8.166 7S3.5 21 3.5 16.918z" fill="#BFBFBF"/><path d="M28 12.25c9.144 0
15.784 6.42 [...]
\ No newline at end of file
diff --git a/website/static/img/integrations/openapi.svg
b/website/static/img/integrations/openapi.svg
new file mode 100644
index 00000000000..8920671852f
--- /dev/null
+++ b/website/static/img/integrations/openapi.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"><title>OpenAPI Initiative</title><path
d="M21.039 0a2.959 2.959 0 00-2.65 4.274l-6.447 6.447a2.96 2.96 0 101.335
1.336l6.447-6.447A2.959 2.959 0 1021.04 0zM10.628 2.745c-.072
0-.143.003-.214.004-.072.002-.143.002-.215.005-.447.018-.893.064-1.335.138l-.03.005-.185.033-.105.02a7.718
7.718 0 00-.289.062l-.032.008a10.69 10.69 0
00-2.55.95l-.155.089c-.063.034-.125.07-.187.105-.046.027-.093.051-.14.079H5.19l-.01.005-.036.02
[...]
\ No newline at end of file
diff --git a/website/static/img/integrations/openfunction.svg
b/website/static/img/integrations/openfunction.svg
new file mode 100644
index 00000000000..af744252131
--- /dev/null
+++ b/website/static/img/integrations/openfunction.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN'
'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
+<svg enable-background="new 0 0 512 512" version="1.1" viewBox="0 0 512 512"
xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> <image width="512"
height="512"
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAIGNIUk0AAHomAACAhAAA+gAAAIDo
AAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQfmBQILIhNBef3b
AAAAXnRFWHRSYXcgcHJvZmlsZSB0eXBlIGlwdGMACmlwdGMKICAgICAgMjgKMzg0MjQ5NGQwNDA0
MDAwMDAwMDAwMDBmMWMwMjZlMDAwMzUyNDY0NzFjMDIwMDAwMDIwMDA0MDAKYJo9ng [...]
+</svg>
diff --git a/website/static/img/integrations/openwhisk.svg
b/website/static/img/integrations/openwhisk.svg
new file mode 100644
index 00000000000..08abfd945cc
--- /dev/null
+++ b/website/static/img/integrations/openwhisk.svg
@@ -0,0 +1,1832 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="2.4221382in"
+ height="1.5887017in"
+ viewBox="0 0 465.05054 305.03073"
+ version="1.1"
+ id="svg4829"
+ sodipodi:docname="apache-openwhisk-logo-only.svg"
+ inkscape:version="0.92.2 5c3e80d, 2017-08-06"
+
inkscape:export-filename="/Users/Matt/openwhisk/release/openwhisk-website/images/logo/apache-openwhisk-logo-only.png"
+ inkscape:export-xdpi="154.69"
+ inkscape:export-ydpi="154.69">
+ <metadata
+ id="metadata4833">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>logo/apache-openwhisk</dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1571"
+ inkscape:window-height="896"
+ id="namedview4831"
+ showgrid="false"
+ showguides="true"
+ inkscape:zoom="4.4782375"
+ inkscape:cx="116.26263"
+ inkscape:cy="85.189766"
+ inkscape:window-x="51"
+ inkscape:window-y="53"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg4829"
+ inkscape:pagecheckerboard="true"
+ borderlayer="false"
+ viewbox-width="116.3"
+ viewbox-height="21"
+ scale-x="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ units="in">
+ <inkscape:grid
+ type="xygrid"
+ id="grid4835"
+ originx="77.361511"
+ originy="-10.216809" />
+ </sodipodi:namedview>
+ <!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch
-->
+ <title
+ id="title4812">logo/apache-openwhisk</title>
+ <desc
+ id="desc4814">Created with Sketch.</desc>
+ <defs
+ id="defs4816">
+ <linearGradient
+ id="linearGradient2544"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop2542" />
+ </linearGradient>
+ <color-profile
+ name="Adobe-RGB--1998-"
+ xlink:href="/System/Library/ColorSync/Profiles/AdobeRGB1998.icc"
+ id="color-profile3144" />
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter4902">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood4892" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4894" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="2"
+ result="blur"
+ id="feGaussianBlur4896" />
+ <feOffset
+ dx="6"
+ dy="6"
+ result="offset"
+ id="feOffset4898" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="fbSourceGraphic"
+ id="feComposite4900" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix4988" />
+ <feFlood
+ id="feFlood4990"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite4992"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur4994"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset4996"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite4998"
+ in="fbSourceGraphic"
+ operator="over"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5000" />
+ <feFlood
+ id="feFlood5002"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5004"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur5006"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset5008"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite5010"
+ in="fbSourceGraphic"
+ operator="over"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5012" />
+ <feFlood
+ id="feFlood5014"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5016"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur5018"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset5020"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite5022"
+ in="fbSourceGraphic"
+ operator="over"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5024" />
+ <feFlood
+ id="feFlood5026"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5028"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur5030"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset5032"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite5034"
+ in="fbSourceGraphic"
+ operator="over"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5036" />
+ <feFlood
+ id="feFlood5038"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5040"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur5042"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset5044"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite5046"
+ in="fbSourceGraphic"
+ operator="over"
+ result="composite2" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter569">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood559" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite561" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur563" />
+ <feOffset
+ dx="0.2"
+ dy="0.2"
+ result="offset"
+ id="feOffset565" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite567" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter895">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(255,255,255)"
+ result="flood"
+ id="feFlood885" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite887" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur889" />
+ <feOffset
+ dx="-0.2"
+ dy="-2.77556e-17"
+ result="offset"
+ id="feOffset891" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite893" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter946">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood936" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite938" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur940" />
+ <feOffset
+ dx="-0.2"
+ dy="-2.77556e-17"
+ result="offset"
+ id="feOffset942" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite944" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter1214">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood1204" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite1206" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur1208" />
+ <feOffset
+ dx="-0.1"
+ dy="0.1"
+ result="offset"
+ id="feOffset1210" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite1212" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter1437">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(255,255,255)"
+ result="flood"
+ id="feFlood1427" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite1429" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur1431" />
+ <feOffset
+ dx="0.1"
+ dy="0.1"
+ result="offset"
+ id="feOffset1433" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite1435" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2252">
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.93708497;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;paint-order:fill
markers stroke"
+ id="rect2254"
+ width="15.335663"
+ height="17.757502"
+ x="15.284907"
+ y="-0.22932915"
+ ry="0.37528363" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2270">
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill
markers stroke"
+ id="rect2272"
+ width="11.395495"
+ height="9.0284157"
+ x="9.1991491"
+ y="-0.064093582"
+ ry="0.35968757" />
+ </clipPath>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter2408">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood2398" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite2400" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur2402" />
+ <feOffset
+ dx="-0.1"
+ dy="0.1"
+ result="offset"
+ id="feOffset2404" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite2406" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2418">
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill
markers stroke"
+ id="rect2420"
+ width="11.568389"
+ height="8.9488811"
+ x="10.364887"
+ y="-0.055517841"
+ ry="0.37048745" />
+ </clipPath>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter2530">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(255,255,255)"
+ result="flood"
+ id="feFlood2520" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite2522" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur2524" />
+ <feOffset
+ dx="-0.1"
+ dy="0"
+ result="offset"
+ id="feOffset2526" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite2528" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2538">
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill
markers stroke"
+ id="rect2540"
+ width="14.630958"
+ height="17.226913"
+ x="-0.16488507"
+ y="2.4576325"
+ ry="0.37048745" />
+ </clipPath>
+ <color-profile
+ id="color-profile4516"
+ xlink:href="/System/Library/ColorSync/Profiles/AdobeRGB1998.icc"
+ name="Adobe-RGB--1998-" />
+ <filter
+ id="filter4902-83"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood4892-9"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite4894-0"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4896-5"
+ result="blur"
+ stdDeviation="2"
+ in="composite1" />
+ <feOffset
+ id="feOffset4898-2"
+ result="offset"
+ dy="6"
+ dx="6" />
+ <feComposite
+ id="feComposite4900-27"
+ result="fbSourceGraphic"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix4988-3"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood4990-79" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite4992-0"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur4994-2" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset4996-3" />
+ <feComposite
+ result="fbSourceGraphic"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite4998-9"
+ in2="offset" />
+ <feColorMatrix
+ id="feColorMatrix5000-9"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood5002-7" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite5004-0"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur5006-3" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset5008-9" />
+ <feComposite
+ result="fbSourceGraphic"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite5010-8"
+ in2="offset" />
+ <feColorMatrix
+ id="feColorMatrix5012-6"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood5014-5" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite5016-7"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur5018-62" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset5020-7" />
+ <feComposite
+ result="fbSourceGraphic"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite5022-0"
+ in2="offset" />
+ <feColorMatrix
+ id="feColorMatrix5024-3"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood5026-9" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite5028-9"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur5030-9" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset5032-1" />
+ <feComposite
+ result="fbSourceGraphic"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite5034-7"
+ in2="offset" />
+ <feColorMatrix
+ id="feColorMatrix5036-2"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood5038-3" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite5040-6"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur5042-5" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset5044-5" />
+ <feComposite
+ result="composite2"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite5046-8"
+ in2="offset" />
+ </filter>
+ <filter
+ id="filter4342"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood4332"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.933333" />
+ <feComposite
+ id="feComposite4334"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4336"
+ result="blur"
+ stdDeviation="0.2"
+ in="composite1" />
+ <feOffset
+ id="feOffset4338"
+ result="offset"
+ dy="1.38778e-16"
+ dx="1.38778e-16" />
+ <feComposite
+ id="feComposite4340"
+ result="fbSourceGraphic"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix4344"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.933333"
+ id="feFlood4346" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite4348"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="0.2"
+ in="composite1"
+ id="feGaussianBlur4350" />
+ <feOffset
+ result="offset"
+ dy="1.38778e-16"
+ dx="1.38778e-16"
+ id="feOffset4352" />
+ <feComposite
+ result="composite2"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite4354"
+ in2="offset" />
+ </filter>
+ <color-profile
+ name="Adobe-RGB--1998-"
+ xlink:href="/System/Library/ColorSync/Profiles/AdobeRGB1998.icc"
+ id="color-profile4566" />
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter4902-8">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood4892-3" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite4894-9" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="2"
+ result="blur"
+ id="feGaussianBlur4896-0" />
+ <feOffset
+ dx="6"
+ dy="6"
+ result="offset"
+ id="feOffset4898-5" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="fbSourceGraphic"
+ id="feComposite4900-2" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix4988-2" />
+ <feFlood
+ id="feFlood4990-7"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite4992-3"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur4994-7"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset4996-9"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite4998-0"
+ in="fbSourceGraphic"
+ operator="over"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5000-2" />
+ <feFlood
+ id="feFlood5002-3"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5004-9"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur5006-9"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset5008-7"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite5010-0"
+ in="fbSourceGraphic"
+ operator="over"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5012-3" />
+ <feFlood
+ id="feFlood5014-9"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5016-8"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur5018-6"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset5020-5"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite5022-7"
+ in="fbSourceGraphic"
+ operator="over"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5024-6" />
+ <feFlood
+ id="feFlood5026-2"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5028-7"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur5030-0"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset5032-3"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite5034-9"
+ in="fbSourceGraphic"
+ operator="over"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5036-9" />
+ <feFlood
+ id="feFlood5038-9"
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ in="fbSourceGraphic" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5040-1"
+ in="flood"
+ operator="in"
+ result="composite1" />
+ <feGaussianBlur
+ id="feGaussianBlur5042-7"
+ in="composite1"
+ stdDeviation="1"
+ result="blur" />
+ <feOffset
+ id="feOffset5044-2"
+ dx="6"
+ dy="6"
+ result="offset" />
+ <feComposite
+ in2="offset"
+ id="feComposite5046-3"
+ in="fbSourceGraphic"
+ operator="over"
+ result="composite2" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter569-4">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood559-7" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite561-1" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur563-3" />
+ <feOffset
+ dx="0.2"
+ dy="0.2"
+ result="offset"
+ id="feOffset565-8" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite567-4" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter895-8">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(255,255,255)"
+ result="flood"
+ id="feFlood885-0" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite887-4" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur889-6" />
+ <feOffset
+ dx="-0.2"
+ dy="-2.77556e-17"
+ result="offset"
+ id="feOffset891-0" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite893-3" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter946-2">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood936-6" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite938-9" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur940-4" />
+ <feOffset
+ dx="-0.2"
+ dy="-2.77556e-17"
+ result="offset"
+ id="feOffset942-1" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite944-3" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter1214-7">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood1204-8" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite1206-8" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur1208-3" />
+ <feOffset
+ dx="-0.1"
+ dy="0.1"
+ result="offset"
+ id="feOffset1210-8" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite1212-1" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter1437-5">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(255,255,255)"
+ result="flood"
+ id="feFlood1427-3" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite1429-5" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur1431-4" />
+ <feOffset
+ dx="0.1"
+ dy="0.1"
+ result="offset"
+ id="feOffset1433-3" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite1435-6" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2252-5">
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.93708497;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;paint-order:fill
markers stroke"
+ id="rect2254-9"
+ width="15.335663"
+ height="17.757502"
+ x="15.284907"
+ y="-0.22932915"
+ ry="0.37528363" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2270-5">
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill
markers stroke"
+ id="rect2272-4"
+ width="11.395495"
+ height="9.0284157"
+ x="9.1991491"
+ y="-0.064093582"
+ ry="0.35968757" />
+ </clipPath>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter2408-9">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(0,0,0)"
+ result="flood"
+ id="feFlood2398-1" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite2400-7" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur2402-5" />
+ <feOffset
+ dx="-0.1"
+ dy="0.1"
+ result="offset"
+ id="feOffset2404-5" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite2406-4" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2418-1">
+ <rect
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill
markers stroke"
+ id="rect2420-8"
+ width="11.568389"
+ height="8.9488811"
+ x="10.364887"
+ y="-0.055517841"
+ ry="0.37048745" />
+ </clipPath>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Drop Shadow"
+ id="filter2530-8">
+ <feFlood
+ flood-opacity="0.498039"
+ flood-color="rgb(255,255,255)"
+ result="flood"
+ id="feFlood2520-3" />
+ <feComposite
+ in="flood"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite1"
+ id="feComposite2522-5" />
+ <feGaussianBlur
+ in="composite1"
+ stdDeviation="1.38778e-16"
+ result="blur"
+ id="feGaussianBlur2524-2" />
+ <feOffset
+ dx="-0.1"
+ dy="0"
+ result="offset"
+ id="feOffset2526-2" />
+ <feComposite
+ in="SourceGraphic"
+ in2="offset"
+ operator="over"
+ result="composite2"
+ id="feComposite2528-6" />
+ </filter>
+ <color-profile
+ id="color-profile4940"
+ xlink:href="/System/Library/ColorSync/Profiles/AdobeRGB1998.icc"
+ name="Adobe-RGB--1998-" />
+ <filter
+ id="filter4902-9"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood4892-1"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite4894-5"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4896-55"
+ result="blur"
+ stdDeviation="2"
+ in="composite1" />
+ <feOffset
+ id="feOffset4898-8"
+ result="offset"
+ dy="6"
+ dx="6" />
+ <feComposite
+ id="feComposite4900-29"
+ result="fbSourceGraphic"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix4988-8"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood4990-2" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite4992-07"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur4994-4" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset4996-8" />
+ <feComposite
+ result="fbSourceGraphic"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite4998-5"
+ in2="offset" />
+ <feColorMatrix
+ id="feColorMatrix5000-8"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood5002-30" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite5004-6"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur5006-2" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset5008-2" />
+ <feComposite
+ result="fbSourceGraphic"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite5010-5"
+ in2="offset" />
+ <feColorMatrix
+ id="feColorMatrix5012-2"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood5014-2" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite5016-71"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur5018-5" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset5020-2" />
+ <feComposite
+ result="fbSourceGraphic"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite5022-1"
+ in2="offset" />
+ <feColorMatrix
+ id="feColorMatrix5024-1"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood5026-0" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite5028-1"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur5030-8" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset5032-7" />
+ <feComposite
+ result="fbSourceGraphic"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite5034-6"
+ in2="offset" />
+ <feColorMatrix
+ id="feColorMatrix5036-0"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ in="fbSourceGraphic"
+ result="fbSourceGraphicAlpha" />
+ <feFlood
+ in="fbSourceGraphic"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039"
+ id="feFlood5038-0" />
+ <feComposite
+ result="composite1"
+ operator="in"
+ in="flood"
+ id="feComposite5040-9"
+ in2="fbSourceGraphic" />
+ <feGaussianBlur
+ result="blur"
+ stdDeviation="1"
+ in="composite1"
+ id="feGaussianBlur5042-56" />
+ <feOffset
+ result="offset"
+ dy="6"
+ dx="6"
+ id="feOffset5044-28" />
+ <feComposite
+ result="composite2"
+ operator="over"
+ in="fbSourceGraphic"
+ id="feComposite5046-5"
+ in2="offset" />
+ </filter>
+ <filter
+ id="filter569-9"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood559-4"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite561-3"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur563-9"
+ result="blur"
+ stdDeviation="1.38778e-16"
+ in="composite1" />
+ <feOffset
+ id="feOffset565-0"
+ result="offset"
+ dy="0.2"
+ dx="0.2" />
+ <feComposite
+ id="feComposite567-5"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <filter
+ id="filter895-6"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood885-3"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite887-6"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur889-3"
+ result="blur"
+ stdDeviation="1.38778e-16"
+ in="composite1" />
+ <feOffset
+ id="feOffset891-08"
+ result="offset"
+ dy="-2.77556e-17"
+ dx="-0.2" />
+ <feComposite
+ id="feComposite893-4"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <filter
+ id="filter946-0"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood936-4"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite938-6"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur940-46"
+ result="blur"
+ stdDeviation="1.38778e-16"
+ in="composite1" />
+ <feOffset
+ id="feOffset942-4"
+ result="offset"
+ dy="-2.77556e-17"
+ dx="-0.2" />
+ <feComposite
+ id="feComposite944-38"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <filter
+ id="filter1214-4"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood1204-0"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite1206-0"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur1208-9"
+ result="blur"
+ stdDeviation="1.38778e-16"
+ in="composite1" />
+ <feOffset
+ id="feOffset1210-3"
+ result="offset"
+ dy="0.1"
+ dx="-0.1" />
+ <feComposite
+ id="feComposite1212-7"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <filter
+ id="filter1437-57"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood1427-2"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite1429-9"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur1431-7"
+ result="blur"
+ stdDeviation="1.38778e-16"
+ in="composite1" />
+ <feOffset
+ id="feOffset1433-5"
+ result="offset"
+ dy="0.1"
+ dx="0.1" />
+ <feComposite
+ id="feComposite1435-65"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <clipPath
+ id="clipPath2252-3"
+ clipPathUnits="userSpaceOnUse">
+ <rect
+ ry="0.37528363"
+ y="-0.22932915"
+ x="15.284907"
+ height="17.757502"
+ width="15.335663"
+ id="rect2254-0"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.93708497;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;paint-order:fill
markers stroke" />
+ </clipPath>
+ <clipPath
+ id="clipPath2270-4"
+ clipPathUnits="userSpaceOnUse">
+ <rect
+ ry="0.35968757"
+ y="-0.064093582"
+ x="9.1991491"
+ height="9.0284157"
+ width="11.395495"
+ id="rect2272-8"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill
markers stroke" />
+ </clipPath>
+ <filter
+ id="filter2408-5"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood2398-5"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite2400-5"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur2402-4"
+ result="blur"
+ stdDeviation="1.38778e-16"
+ in="composite1" />
+ <feOffset
+ id="feOffset2404-2"
+ result="offset"
+ dy="0.1"
+ dx="-0.1" />
+ <feComposite
+ id="feComposite2406-1"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <clipPath
+ id="clipPath2418-9"
+ clipPathUnits="userSpaceOnUse">
+ <rect
+ ry="0.37048745"
+ y="-0.055517841"
+ x="10.364887"
+ height="8.9488811"
+ width="11.568389"
+ id="rect2420-2"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill
markers stroke" />
+ </clipPath>
+ <filter
+ id="filter2530-4"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood2520-5"
+ result="flood"
+ flood-color="rgb(255,255,255)"
+ flood-opacity="0.498039" />
+ <feComposite
+ id="feComposite2522-8"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur2524-6"
+ result="blur"
+ stdDeviation="1.38778e-16"
+ in="composite1" />
+ <feOffset
+ id="feOffset2526-25"
+ result="offset"
+ dy="0"
+ dx="-0.1" />
+ <feComposite
+ id="feComposite2528-1"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <clipPath
+ id="clipPath2538-3"
+ clipPathUnits="userSpaceOnUse">
+ <rect
+ ry="0.37048745"
+ y="2.4576325"
+ x="-0.16488507"
+ height="17.226913"
+ width="14.630958"
+ id="rect2540-9"
+
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill
markers stroke" />
+ </clipPath>
+ </defs>
+ <rect
+ inkscape:export-ydpi="72"
+ inkscape:export-xdpi="72"
+ inkscape:label="Website Header background - #27558f"
+ y="-4.6110868"
+ x="-3.0287452"
+ height="312.74371"
+ width="472.01105"
+ id="rect316"
+
style="display:none;fill:#27558f;fill-opacity:0.94117647;stroke:none;stroke-width:1;stroke-opacity:1"
+ sodipodi:insensitive="true" />
+ <text
+ inkscape:label="TM"
+ id="text133"
+ y="18.152016"
+ x="437.64542"
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.0028801px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif,
Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:none;fill:#325c80;fill-opacity:1;stroke:none;stroke-width:1.59402001"
+ xml:space="preserve"><tspan
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.0028801px;font-family:sans-serif;-inkscape-font-specification:'sans-serif,
Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#325c80;fill-opacity:1;stroke-width:1.59402001"
+ y="18.152016"
+ x="437.64542"
+ id="tspan131"
+ sodipodi:role="line">TM</tspan></text>
+ <g
+ style="display:none;stroke-width:0.24340019"
+ inkscape:label="Logo Dark Background Shadow"
+ id="g2552-6"
+ transform="matrix(15.428316,0,0,15.493285,-1.5873152,-18.212558)"
+ sodipodi:insensitive="true">
+ <path
+ transform="translate(0.1028831,1.175636)"
+
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.24340019;stroke-opacity:1"
+ clip-path="none"
+ d="M 14.672649,19.788911 4.8204578,2.219221 -0.12607805,11.075757
4.7386969,19.788911 Z"
+ id="polygon2422-7"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc"
+ inkscape:label="Dark blue Shadow" />
+ </g>
+ <g
+ style="display:inline;stroke-width:0.27429447"
+ transform="matrix(6.3071665,0,0,5.3545025,-49.879637,-62.863546)"
+ id="g2788"
+ inkscape:label="Logo"
+ sodipodi:insensitive="true">
+ <polygon
+ transform="matrix(2.4461563,0,0,2.8935059,7.9084066,11.740671)"
+ style="display:inline;fill:#008571;stroke-width:0.24340019"
+ points="15.537455,0.002953125 25.270444,17.22644 30.142665,8.6119277
25.27587,-0.00012304688 "
+ id="polygon99-8"
+ inkscape:label="Dark aquamarine" />
+ <polygon
+ transform="matrix(2.4461563,0,0,2.8935059,7.9084066,11.740671)"
+ style="display:inline;fill:#6eedd8;stroke-width:0.24340019"
+ points="10.758253,8.6133428 20.405514,8.608776 15.537636,0.0031376953 "
+ id="polygon101-4"
+ inkscape:label="Light aquamarine"
+ clip-path="none"
+ mask="none" />
+ <polygon
+ transform="matrix(2.4461563,0,0,2.8935059,7.9084066,11.740671)"
+ style="display:inline;fill:#325c80;stroke-width:0.24340019"
+ points="0,11.075757 4.8203765,19.687808 14.465952,19.684116
4.8258021,2.4612451 "
+ id="polygon103-1"
+ inkscape:label="Dark blue" />
+ <polygon
+ inkscape:label="Medium blue"
+ id="polygon233-7"
+ points="14.466073,19.684547 19.291272,11.074342 9.6456963,11.077418 "
+ style="display:inline;fill:#5aaafa;stroke-width:0.24340019"
+ transform="matrix(2.4461563,0,0,2.8935059,7.9084066,11.740671)" />
+ </g>
+</svg>
diff --git a/website/static/img/integrations/rocketmq.svg
b/website/static/img/integrations/rocketmq.svg
new file mode 100644
index 00000000000..d25ef2384e2
--- /dev/null
+++ b/website/static/img/integrations/rocketmq.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"><title>Apache RocketMQ</title><path
d="M11.438 23.467c-.517-.638-1.106-1.89-1.217-2.587l-.082-.511h1.835c1.435 0
1.835.036 1.835.165 0 .352-.412 1.553-.709 2.066-.333.577-1.021 1.41-1.155
1.4-.043-.004-.272-.244-.507-.533zm-4.532-4.193c-1.251-3.005-1.231-6.784.056-10.63.786-2.35
2.652-5.689 4.413-7.9L11.967 0l.422.493c.763.893 2.612 3.731 3.28 5.036 1.32
2.578 2.055 4.993 2.264 7.438.197 2.302-.176 4.837-.962 6.533l-. [...]
\ No newline at end of file
diff --git a/website/static/img/integrations/safeline.svg
b/website/static/img/integrations/safeline.svg
new file mode 100644
index 00000000000..c7c293593e6
--- /dev/null
+++ b/website/static/img/integrations/safeline.svg
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="396px" height="407px" viewBox="0 0 396 407" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <title>编组 12</title>
+ <defs>
+ <linearGradient x1="50%" y1="0%" x2="50%" y2="100%"
id="linearGradient-1">
+ <stop stop-color="#4B4B4B" offset="0%"></stop>
+ <stop stop-color="#000000" offset="100%"></stop>
+ </linearGradient>
+ <filter x="-3.0%" y="-2.8%" width="106.1%" height="105.6%"
filterUnits="objectBoundingBox" id="filter-2">
+ <feGaussianBlur stdDeviation="3"
in="SourceGraphic"></feGaussianBlur>
+ </filter>
+ <linearGradient x1="50%" y1="0%" x2="50%" y2="100%"
id="linearGradient-3">
+ <stop stop-color="#24BC43" stop-opacity="0.8" offset="0%"></stop>
+ <stop stop-color="#3ACBAB" stop-opacity="0.7" offset="100%"></stop>
+ </linearGradient>
+ <path d="M110.049657,49.667649 C110.049657,49.667649
81.1358702,46.2263115 76.8,26.7636364 C72.4880848,46.2263115
43.5503431,49.667649 43.5503431,49.667649 C14.2053649,53.3001718 0,36.4567369
0,36.4567369 C13.941859,65.8036979 38.4,64.7712967 38.4,64.7712967
L115.2,64.7712967 C115.2,64.7712967 139.634186,65.8036979 153.6,36.4567369
C153.6,36.4567369 139.394635,53.3192904 110.049657,49.667649 Z"
id="path-4"></path>
+ <filter x="-16.9%" y="-57.9%" width="133.9%" height="236.8%"
filterUnits="objectBoundingBox" id="filter-5">
+ <feOffset dx="0" dy="4" in="SourceAlpha"
result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="8" in="shadowOffsetOuter1"
result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0 0 0 0 0 0.490319293 0 0 0 0
0.292243323 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="页面-1" stroke="none" stroke-width="1" fill="none"
fill-rule="evenodd">
+ <g id="编组-12" transform="translate(49.000000, 38.000000)">
+ <path d="M292.40836,59.04 C290.927217,51.9634286
285.002646,46.6971429 277.761503,46.368 C222.13636,44.8868571
176.385503,16.5805714 157.953503,3.08571429 C152.358074,-1.02857143
144.95236,-1.02857143 139.356931,3.08571429 C120.431217,16.5805714
75.1740742,44.8868571 19.5489314,46.368 C12.4723599,46.6971429
6.21864565,51.9634286 4.90207422,59.04 C-3.98478292,103.474286
-19.2899258,254.057143 148.902074,324 C316.60036,253.892571
300.966074,103.474286 292.40836,59.04 Z" id="路径" [...]
+ <path d="M292.40836,59.04 C290.927217,51.9634286
285.002646,46.6971429 277.761503,46.368 C222.13636,44.8868571
176.385503,16.5805714 157.953503,3.08571429 C152.358074,-1.02857143
144.95236,-1.02857143 139.356931,3.08571429 C120.431217,16.5805714
75.1740742,44.8868571 19.5489314,46.368 C12.4723599,46.6971429
6.21864565,51.9634286 4.90207422,59.04 C-3.98478292,103.474286
-19.2899258,254.057143 148.902074,324 C316.60036,253.892571
300.966074,103.474286 292.40836,59.04 Z" id="路径" [...]
+ <path d="M149,261.4 C205.553958,261.4 251.4,215.553958 251.4,159
C251.4,131.275004 240.381593,106.123494 222.484813,87.6855068
C209.900749,96.0964568 185.81512,106.024178 175.564259,100.853688
C166.334879,96.1984273 157.476591,88.4505652 148.989396,77.610101
C142.047769,88.5334102 134.670586,95.5517221 126.857848,98.6650367
C120.689419,101.123107 98.2592604,102.915695 75.4419467,87.761039
C57.5883513,106.192154 46.6,131.312844 46.6,159 C46.6,215.553958
92.4460416,261.4 149,26 [...]
+ <g id="编组-5备份-6" transform="translate(91.771423, 102.101722)"
fill="#FFFFFF">
+ <polygon id="路径-130备份-29" transform="translate(57.217971,
95.920999) rotate(-180.000000) translate(-57.217971, -95.920999) "
points="56.6651511 64.9496372 -7.57241738e-17 97.1108413 50.6084036 126.892361
68.8016729 117.264704 34.3433228 97.1108413 56.6651511 84.5503086 96.9001091
107.376711 96.9001091 114.88399 114.435942 125.435553 114.435942
97.1108413"></polygon>
+ <polygon id="路径-130备份-30" transform="translate(57.217971,
30.971362) rotate(-360.000000) translate(-57.217971, -30.971362) "
points="56.6651511 2.84217094e-14 -7.57241738e-17 32.1612041 50.6084036
61.9427239 68.8016729 52.3150668 34.3433228 32.1612041 56.6651511 19.6006714
96.9001091 42.4270741 96.9001091 49.9343528 114.435942 60.4859155 114.435942
32.1612041"></polygon>
+ <polygon id="路径-130备份-29" opacity="0.40499442"
transform="translate(57.217971, 95.920999) rotate(-180.000000)
translate(-57.217971, -95.920999) " points="56.6651511 64.9496372
-7.57241738e-17 97.1108413 50.6084036 126.892361 68.8016729 117.264704
34.3433228 97.1108413 56.6651511 84.5503086 96.9001091 107.376711 96.9001091
114.88399 114.435942 125.435553 114.435942 97.1108413"></polygon>
+ <polygon id="路径-130备份-30" opacity="0.40499442"
transform="translate(57.217971, 30.971362) rotate(-360.000000)
translate(-57.217971, -30.971362) " points="56.6651511 4.8316906e-13
-7.57241738e-17 32.1612041 50.6084036 61.9427239 68.8016729 52.3150668
34.3433228 32.1612041 56.6651511 19.6006714 96.9001091 42.4270741 96.9001091
49.9343528 114.435942 60.4859155 114.435942 32.1612041"></polygon>
+ </g>
+ <g id="长亭logo备份-18" transform="translate(72.200000, 45.222222)"
fill-rule="nonzero">
+ <g id="编组-7">
+ <path d="M96.7632666,18.0061837 C96.7632666,18.0061837
79.3862969,15.2966085 76.7907961,0 C74.1952953,15.2966085 56.8183256,18.0061837
56.8183256,18.0061837 C39.1836466,20.8694936 30.6424242,7.60987058
30.6424242,7.60987058 C39.0363842,30.6893013 53.7258141,29.862977
53.7258141,29.862977 L99.8741859,29.862977 C99.8741859,29.862977
114.563616,30.6700845 122.957576,7.60987058 C122.957576,7.60987058
114.416353,20.8694936 96.7816744,18.0061837 L96.7632666,18.0061837 Z" id [...]
+ <g id="路径">
+ <use fill="black" fill-opacity="1"
filter="url(#filter-5)" xlink:href="#path-4"></use>
+ <use fill="#27B876" xlink:href="#path-4"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/website/static/img/integrations/skywalking.svg
b/website/static/img/integrations/skywalking.svg
new file mode 100644
index 00000000000..005956317e1
--- /dev/null
+++ b/website/static/img/integrations/skywalking.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="3584px" height="848px" viewBox="0 0 3584 848" version="1.1"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 51.3 (57544) - http://www.bohemiancoding.com/sketch
-->
+ <title>Group</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="Page-1" stroke="none" stroke-width="1" fill="none"
fill-rule="evenodd">
+ <g id="Group" transform="translate(0.000000, -16.000000)">
+ <g id="Group-2" transform="translate(0.000000, 157.599119)"
fill="#1890FF">
+ <path d="M1440.61949,224.405286 L1440.61949,226.338106
L1381.99064,522.703744 C1374.25936,561.360132 1363.95099,576.822687
1324.65033,576.822687 L1307.25496,576.822687 C1272.46421,576.822687
1254.42456,560.071586 1246.04901,526.569383 L1195.15143,329.421806
C1194.50716,326.844714 1194.50716,326.200441 1193.21861,326.200441
C1191.93007,326.200441 1191.93007,326.844714 1191.28579,329.421806
L1140.38822,526.569383 C1132.01267,560.071586 1113.97302,576.822687
1079.18227,576.8 [...]
+ <path d="M309.821035,361.139868 C309.821035,426.211454
269.231828,495.792952 140.377203,495.792952 C92.0567181,495.792952
57.2659692,491.28304 26.340859,484.196035 C19.8981278,482.907489
14.0996696,478.397577 14.0996696,471.310573 L14.0996696,424.922907
C14.0996696,417.835903 19.8981278,412.681718 26.340859,412.681718
L27.6294053,412.681718 C53.4003304,415.903084 117.827643,419.124449
141.665749,419.124449 C199.006057,419.124449 216.401432,398.507709
216.401432,361.139868 [...]
+ </g>
+ <g id="moon-o" transform="translate(3304.973950, 323.548473)
rotate(-183.000000) translate(-3304.973950, -323.548473) translate(3026.449721,
14.297372)" fill="#D8D8D8" fill-rule="nonzero">
+ <path d="M556.201759,503.069627 C538.560505,506.036844
520.385618,507.520453 502.242121,507.520453 C320.273523,507.520453
172.645729,359.064881 172.645729,176.075948 C172.645729,113.448719
190.789226,52.2735334 223.654695,0 C93.1973036,38.9526209 0,159.314326
0,302.340521 C0,476.459368 140.753354,618.001955 313.901326,618.001955
C408.573966,618.001955 497.345261,574.598507 556.201759,503.069627 Z"
id="Shape"></path>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/website/static/img/integrations/splunk.svg
b/website/static/img/integrations/splunk.svg
new file mode 100644
index 00000000000..fde4ffb96a5
--- /dev/null
+++ b/website/static/img/integrations/splunk.svg
@@ -0,0 +1 @@
+<svg role="img" viewBox="0 0 24 24"
xmlns="http://www.w3.org/2000/svg"><title>Splunk</title><path d="M23.348
11.911l-2.241-1.091v-.65L24 11.621v.593l-2.893 1.438v-.636zm-5.397
1.841h-.961v-5.31h.961v3.116h.102l1.28-1.481.723.31-1.23 1.316 1.453
1.809-.888.311-1.44-1.996zm-2.577-.002v-2.068a2.685 2.685 0 0
0-.026-.42.791.791 0 0 0-.09-.26c-.113-.202-.308-.304-.59-.304a.888.888 0 0
0-.461.113.673.673 0 0 0-.286.33 1.012 1.012 0 0
0-.07.263c-.012.13-.019.262-.017.395v1.95h-.961v-3.614h.961l [...]
\ No newline at end of file
diff --git a/website/static/img/plugin/ai.svg b/website/static/img/plugin/ai.svg
new file mode 100644
index 00000000000..9ee514a61ee
--- /dev/null
+++ b/website/static/img/plugin/ai.svg
@@ -0,0 +1,10 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128">
+ <defs>
+ <linearGradient id="apisixAiRed" x1="8" y1="8" x2="118" y2="118"
gradientUnits="userSpaceOnUse">
+ <stop offset="0" stop-color="#F8553F"/>
+ <stop offset="1" stop-color="#C4292E"/>
+ </linearGradient>
+ </defs>
+ <path d="M58 8 Q70 46 108 58 Q70 70 58 108 Q46 70 8 58 Q46 46 58 8 Z"
fill="url(#apisixAiRed)"/>
+ <path d="M102 14 Q106 26 118 30 Q106 34 102 46 Q98 34 86 30 Q98 26 102 14 Z"
fill="url(#apisixAiRed)"/>
+</svg>
diff --git a/website/static/img/plugin/apisix.svg
b/website/static/img/plugin/apisix.svg
new file mode 100644
index 00000000000..8e99cc539b4
--- /dev/null
+++ b/website/static/img/plugin/apisix.svg
@@ -0,0 +1,15 @@
+<svg width="185" height="156" viewBox="0 0 185 156" fill="none"
xmlns="http://www.w3.org/2000/svg">
+<path d="M0 155.5L94 0L185 155.5H140L94 83L42.5 155.5H0Z" fill="#F8423F"/>
+<path d="M94 82.5L42.5 155H0L76.5 57L94 82.5Z" fill="url(#paint0_linear)"/>
+<path d="M140 155.5H185L94 0L140 155.5Z" fill="url(#paint1_linear)"/>
+<defs>
+<linearGradient id="paint0_linear" x1="222.5" y1="50" x2="85" y2="223.5"
gradientUnits="userSpaceOnUse">
+<stop offset="0.536111" stop-color="#FC0A04"/>
+<stop offset="1" stop-color="#CF0500" stop-opacity="0.77"/>
+</linearGradient>
+<linearGradient id="paint1_linear" x1="139.5" y1="1.50861e-06" x2="226"
y2="136" gradientUnits="userSpaceOnUse">
+<stop offset="0.473466" stop-color="#E2423E"/>
+<stop offset="1" stop-color="#E2423E" stop-opacity="0.77"/>
+</linearGradient>
+</defs>
+</svg>