@steprotech/n8n-nodes-composio 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +124 -2
- package/dist/credentials/ComposioApi.credentials.d.ts +43 -0
- package/dist/credentials/ComposioApi.credentials.js +78 -0
- package/dist/credentials/ComposioApi.credentials.js.map +1 -0
- package/dist/credentials/composio.dark.svg +266 -0
- package/dist/credentials/composio.svg +266 -0
- package/dist/nodes/Composio/Composio.node.d.ts +12 -0
- package/dist/nodes/Composio/Composio.node.js +450 -0
- package/dist/nodes/Composio/Composio.node.js.map +1 -0
- package/dist/nodes/Composio/ComposioTrigger.node.d.ts +12 -0
- package/dist/nodes/Composio/ComposioTrigger.node.js +172 -0
- package/dist/nodes/Composio/ComposioTrigger.node.js.map +1 -0
- package/dist/nodes/Composio/GenericFunctions.d.ts +24 -0
- package/dist/nodes/Composio/GenericFunctions.js +163 -0
- package/dist/nodes/Composio/GenericFunctions.js.map +1 -0
- package/dist/nodes/Composio/catalog.d.ts +25 -0
- package/dist/nodes/Composio/catalog.js +195 -0
- package/dist/nodes/Composio/catalog.js.map +1 -0
- package/dist/nodes/Composio/composio.dark.svg +266 -0
- package/dist/nodes/Composio/composio.svg +266 -0
- package/dist/nodes/Composio/metatools.d.ts +37 -0
- package/dist/nodes/Composio/metatools.js +27 -0
- package/dist/nodes/Composio/metatools.js.map +1 -0
- package/dist/nodes/Composio/signature.d.ts +16 -0
- package/dist/nodes/Composio/signature.js +55 -0
- package/dist/nodes/Composio/signature.js.map +1 -0
- package/dist/nodes/ComposioTrigger/composio.dark.svg +266 -0
- package/dist/nodes/ComposioTrigger/composio.svg +266 -0
- package/dist/package.json +58 -0
- package/package.json +57 -5
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Steward Obeng
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,125 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @steprotech/n8n-nodes-composio
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
An n8n node for [Composio](https://composio.dev). Connect your own apps through Composio, choose an
|
|
4
|
+
action, and run it in any workflow. No AI agent is required, and the node can also be used as a tool
|
|
5
|
+
inside an agent. A trigger node starts workflows from app events too.
|
|
6
|
+
|
|
7
|
+
Composio is an integration and authentication layer: it holds the OAuth grants for around 1,600
|
|
8
|
+
apps, refreshes the tokens, and executes the action on your behalf. This node is the n8n front door
|
|
9
|
+
to that, over Composio Connect and its MCP endpoint.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
Self-hosted n8n only, because it is a community node.
|
|
14
|
+
|
|
15
|
+
1. In n8n, open **Settings > Community Nodes**.
|
|
16
|
+
2. Select **Install** and enter `@steprotech/n8n-nodes-composio`.
|
|
17
|
+
3. Restart n8n if prompted.
|
|
18
|
+
|
|
19
|
+
From a shell, inside your n8n user folder:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
cd ~/.n8n/nodes
|
|
23
|
+
npm install @steprotech/n8n-nodes-composio --legacy-peer-deps
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`--legacy-peer-deps` matters: the package declares `n8n-workflow` as a peer, which n8n supplies at
|
|
27
|
+
runtime. A plain install tries to fetch it and can fail building a native dependency.
|
|
28
|
+
|
|
29
|
+
## Credential
|
|
30
|
+
|
|
31
|
+
Create a **Composio API** credential and paste your **consumer key**, the one starting with `ck_`.
|
|
32
|
+
Find it in the Composio dashboard under **Connect > Clients > API key**. It is sent as the
|
|
33
|
+
`x-consumer-api-key` header.
|
|
34
|
+
|
|
35
|
+
Never paste a key into a chat, an issue or a repository. Keys belong in n8n's credential form only.
|
|
36
|
+
|
|
37
|
+
## Operations
|
|
38
|
+
|
|
39
|
+
Every app and every action is chosen from a **live search list**, so you never need to know a Composio
|
|
40
|
+
slug. The inputs of an action are read from the action's own schema, so you pick parameter names from a
|
|
41
|
+
list instead of writing JSON. Raw JSON is still there as an opt-in escape hatch.
|
|
42
|
+
|
|
43
|
+
**Connection**
|
|
44
|
+
|
|
45
|
+
- **Connect an App** returns the authorization link. Open it, approve in the browser, and the app is
|
|
46
|
+
connected to your Composio account. Managed auth means you never create an OAuth app yourself.
|
|
47
|
+
- **Check Connections** reports which of the apps you name are connected. Any app that is not connected
|
|
48
|
+
yet gets an authorization link in the output, so this doubles as "connect these three apps".
|
|
49
|
+
- **Reconnect an App** replaces an existing connection with a fresh authorization flow, which is what
|
|
50
|
+
you want when credentials go stale or when you need to re-consent after a permission change.
|
|
51
|
+
|
|
52
|
+
Disconnecting an app is not exposed on the consumer surface this node uses, so removal stays in the
|
|
53
|
+
Composio dashboard.
|
|
54
|
+
|
|
55
|
+
**Action**
|
|
56
|
+
|
|
57
|
+
- **Search Actions** takes what you want to do in plain words and returns matching actions, which app
|
|
58
|
+
each belongs to, and which of those apps are already connected.
|
|
59
|
+
- **Get Action Inputs** lists the inputs one or more actions expect, with types and required markers.
|
|
60
|
+
- **Execute an Action** runs the chosen action. Set **Set Inputs** to *Using Fields* and add one row per
|
|
61
|
+
input, picking the parameter name from the list, or switch to *Using JSON* to write the arguments
|
|
62
|
+
object yourself. The node can also be used as a tool by an AI Agent.
|
|
63
|
+
|
|
64
|
+
Values typed into the fields are converted sensibly: `true`, `false`, `null`, numbers and JSON objects
|
|
65
|
+
or arrays are sent as those types, while identifiers keep their form, so a phone number entered as
|
|
66
|
+
`0244123456` is not turned into a number.
|
|
67
|
+
|
|
68
|
+
**Advanced**
|
|
69
|
+
|
|
70
|
+
- **Call a Meta-Tool** sends any of Composio's meta-tools with arguments you supply. Composio has
|
|
71
|
+
thousands of actions with their own schemas, while n8n node parameters are fixed, so this is the
|
|
72
|
+
escape hatch for anything the operations above do not cover yet.
|
|
73
|
+
|
|
74
|
+
## Documentation
|
|
75
|
+
|
|
76
|
+
- `docs/INSTALL-OPTIONS.md` covers every way to install or update it, including troubleshooting.
|
|
77
|
+
- `docs/PUBLISHING.md` covers the release loop, CI, and the tokenless trusted-publishing path.
|
|
78
|
+
- `docs/PUBLISH-FROM-WINDOWS.md` is the PowerShell route for publishing from your own machine.
|
|
79
|
+
|
|
80
|
+
## Trigger
|
|
81
|
+
|
|
82
|
+
The **Composio Connect Trigger** starts a workflow when something happens in a connected app, such as
|
|
83
|
+
a new Gmail message or a new GitHub commit.
|
|
84
|
+
|
|
85
|
+
1. In Composio, note the single **webhook URL** your project delivers events to, and register the URL
|
|
86
|
+
n8n shows in the trigger node. Composio sends every project event to one URL, so this is a
|
|
87
|
+
per-project setting, not a per-workflow one.
|
|
88
|
+
2. Copy the webhook **signing secret** from that subscription into the credential's *Webhook Signing
|
|
89
|
+
Secret* field.
|
|
90
|
+
3. Choose the events you want. `Trigger Message` covers app events; `Connected Account Expired` tells
|
|
91
|
+
you when a connection needs re-authorizing. Use `Only These Triggers` to accept a single trigger
|
|
92
|
+
slug such as `GITHUB_COMMIT_EVENT`.
|
|
93
|
+
|
|
94
|
+
Signature verification is **on by default**. Every request carries `webhook-id`, `webhook-timestamp`
|
|
95
|
+
and `webhook-signature`, and the trigger recomputes an HMAC-SHA256 over
|
|
96
|
+
`{webhook-id}.{webhook-timestamp}.{body}`, compares it in constant time, and refuses anything older
|
|
97
|
+
than the tolerance (300 seconds by default) so a captured payload cannot be replayed. Note this while
|
|
98
|
+
writing it down: with verification on and no secret in the credential, the trigger refuses to run
|
|
99
|
+
rather than trusting the request, which is deliberate.
|
|
100
|
+
|
|
101
|
+
## Composio's meta-tools
|
|
102
|
+
|
|
103
|
+
The node speaks MCP over streamable HTTP to `https://connect.composio.dev/mcp` and uses Composio's
|
|
104
|
+
own meta-tools rather than calling app APIs directly:
|
|
105
|
+
|
|
106
|
+
`COMPOSIO_SEARCH_TOOLS`, `COMPOSIO_GET_TOOL_SCHEMAS`, `COMPOSIO_MULTI_EXECUTE_TOOL`,
|
|
107
|
+
`COMPOSIO_MANAGE_CONNECTIONS`, `COMPOSIO_WAIT_FOR_CONNECTIONS`, `COMPOSIO_REMOTE_WORKBENCH`,
|
|
108
|
+
`COMPOSIO_REMOTE_BASH_TOOL`.
|
|
109
|
+
|
|
110
|
+
## Free tier
|
|
111
|
+
|
|
112
|
+
Composio's free plan includes 100,000 tool calls and 50,000 trigger events a month, with unlimited
|
|
113
|
+
free connected accounts, and it is hard capped so there is no surprise bill. Using Composio-managed
|
|
114
|
+
apps, which is the click-and-authorize path, draws on 20,000 of those calls and the first 1,000
|
|
115
|
+
connections. Check Composio's pricing page before relying on the numbers.
|
|
116
|
+
|
|
117
|
+
## Attribution
|
|
118
|
+
|
|
119
|
+
This is an unofficial community node. Composio is a trademark of its owner, and the node icon is
|
|
120
|
+
Composio's own mark as published at `logos.composio.dev`. This package is not affiliated with or
|
|
121
|
+
endorsed by Composio.
|
|
122
|
+
|
|
123
|
+
## License
|
|
124
|
+
|
|
125
|
+
MIT. See LICENSE.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ICredentialType, INodeProperties } from 'n8n-workflow';
|
|
2
|
+
export declare class ComposioApi implements ICredentialType {
|
|
3
|
+
name: string;
|
|
4
|
+
displayName: string;
|
|
5
|
+
documentationUrl: string;
|
|
6
|
+
icon: {
|
|
7
|
+
readonly light: "file:composio.svg";
|
|
8
|
+
readonly dark: "file:composio.dark.svg";
|
|
9
|
+
};
|
|
10
|
+
properties: INodeProperties[];
|
|
11
|
+
authenticate: {
|
|
12
|
+
type: "generic";
|
|
13
|
+
properties: {
|
|
14
|
+
headers: {
|
|
15
|
+
'x-consumer-api-key': string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
test: {
|
|
20
|
+
request: {
|
|
21
|
+
baseURL: string;
|
|
22
|
+
url: string;
|
|
23
|
+
method: "POST";
|
|
24
|
+
headers: {
|
|
25
|
+
Accept: string;
|
|
26
|
+
'Content-Type': string;
|
|
27
|
+
};
|
|
28
|
+
body: {
|
|
29
|
+
jsonrpc: string;
|
|
30
|
+
id: number;
|
|
31
|
+
method: string;
|
|
32
|
+
params: {
|
|
33
|
+
protocolVersion: string;
|
|
34
|
+
capabilities: {};
|
|
35
|
+
clientInfo: {
|
|
36
|
+
name: string;
|
|
37
|
+
version: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComposioApi = void 0;
|
|
4
|
+
class ComposioApi {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'composioApi';
|
|
7
|
+
this.displayName = 'Composio API';
|
|
8
|
+
this.documentationUrl = 'https://docs.composio.dev/kb/guide/consumer-project-boundaries-and-auth-selection';
|
|
9
|
+
this.icon = { light: 'file:composio.svg', dark: 'file:composio.dark.svg' };
|
|
10
|
+
this.properties = [
|
|
11
|
+
{
|
|
12
|
+
displayName: 'Consumer Key',
|
|
13
|
+
name: 'apiKey',
|
|
14
|
+
type: 'string',
|
|
15
|
+
typeOptions: { password: true },
|
|
16
|
+
default: '',
|
|
17
|
+
required: true,
|
|
18
|
+
description: 'Your Composio consumer key, the one that starts with ck_. Find it in the Composio dashboard under Connect, Clients, API key. It is sent as the x-consumer-api-key header.',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
displayName: 'Base URL',
|
|
22
|
+
name: 'baseUrl',
|
|
23
|
+
type: 'string',
|
|
24
|
+
default: 'https://connect.composio.dev',
|
|
25
|
+
description: 'The Composio Connect base URL. Only change this if Composio tells you to.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
displayName: 'Default User ID',
|
|
29
|
+
name: 'userId',
|
|
30
|
+
type: 'string',
|
|
31
|
+
default: '',
|
|
32
|
+
description: 'Optional. The Composio user ID whose connections this credential uses by default. Composio derives one from the key when this is left empty. Use separate credentials if you keep several users apart.',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
displayName: 'Webhook Signing Secret',
|
|
36
|
+
name: 'webhookSecret',
|
|
37
|
+
type: 'string',
|
|
38
|
+
typeOptions: { password: true },
|
|
39
|
+
default: '',
|
|
40
|
+
description: 'Optional. The signing secret of your Composio webhook subscription, used by the Composio Trigger to verify that events really came from Composio. Copy it from your Composio webhook subscription settings.',
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
this.authenticate = {
|
|
44
|
+
type: 'generic',
|
|
45
|
+
properties: {
|
|
46
|
+
headers: {
|
|
47
|
+
'x-consumer-api-key': '={{$credentials.apiKey}}',
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
this.test = {
|
|
52
|
+
request: {
|
|
53
|
+
baseURL: '={{$credentials.baseUrl}}',
|
|
54
|
+
url: '/mcp',
|
|
55
|
+
method: 'POST',
|
|
56
|
+
headers: {
|
|
57
|
+
Accept: 'application/json, text/event-stream',
|
|
58
|
+
'Content-Type': 'application/json',
|
|
59
|
+
},
|
|
60
|
+
body: {
|
|
61
|
+
jsonrpc: '2.0',
|
|
62
|
+
id: 1,
|
|
63
|
+
method: 'initialize',
|
|
64
|
+
params: {
|
|
65
|
+
protocolVersion: '2025-06-18',
|
|
66
|
+
capabilities: {},
|
|
67
|
+
clientInfo: {
|
|
68
|
+
name: 'n8n-nodes-composio',
|
|
69
|
+
version: '0.1.1',
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.ComposioApi = ComposioApi;
|
|
78
|
+
//# sourceMappingURL=ComposioApi.credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComposioApi.credentials.js","sourceRoot":"","sources":["../../credentials/ComposioApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;IAAxB;QACC,SAAI,GAAG,aAAa,CAAC;QAErB,gBAAW,GAAG,cAAc,CAAC;QAE7B,qBAAgB,GAAG,mFAAmF,CAAC;QAEvG,SAAI,GAAG,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,wBAAwB,EAAW,CAAC;QAE/E,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,cAAc;gBAC3B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EACV,2KAA2K;aAC5K;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,8BAA8B;gBACvC,WAAW,EAAE,2EAA2E;aACxF;YACD;gBACC,WAAW,EAAE,iBAAiB;gBAC9B,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EACV,wMAAwM;aACzM;YACD;gBACC,WAAW,EAAE,wBAAwB;gBACrC,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,WAAW,EACV,6MAA6M;aAC9M;SACD,CAAC;QAEF,iBAAY,GAAG;YACd,IAAI,EAAE,SAAkB;YACxB,UAAU,EAAE;gBACX,OAAO,EAAE;oBACR,oBAAoB,EAAE,0BAA0B;iBAChD;aACD;SACD,CAAC;QAEF,SAAI,GAAG;YACN,OAAO,EAAE;gBACR,OAAO,EAAE,2BAA2B;gBACpC,GAAG,EAAE,MAAM;gBACX,MAAM,EAAE,MAAe;gBACvB,OAAO,EAAE;oBACR,MAAM,EAAE,qCAAqC;oBAC7C,cAAc,EAAE,kBAAkB;iBAClC;gBACD,IAAI,EAAE;oBACL,OAAO,EAAE,KAAK;oBACd,EAAE,EAAE,CAAC;oBACL,MAAM,EAAE,YAAY;oBACpB,MAAM,EAAE;wBACP,eAAe,EAAE,YAAY;wBAC7B,YAAY,EAAE,EAAE;wBAChB,UAAU,EAAE;4BACX,IAAI,EAAE,oBAAoB;4BAC1B,OAAO,EAAE,OAAO;yBAChB;qBACD;iBACD;aACD;SACD,CAAC;IACH,CAAC;CAAA;AA/ED,kCA+EC"}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
2
|
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
3
|
+
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0.00 0.00 180.00 180.00" width="128" height="128">
|
|
4
|
+
<g stroke-width="2.00" fill="none" stroke-linecap="butt">
|
|
5
|
+
<path stroke="#195580" vector-effect="non-scaling-stroke" d="
|
|
6
|
+
M 33.66 89.95
|
|
7
|
+
Q 33.66 100.13 33.67 101.11
|
|
8
|
+
Q 33.74 106.41 34.85 108.21
|
|
9
|
+
Q 36.84 111.43 40.50 112.71
|
|
10
|
+
A 2.89 2.77 52.2 0 0 41.52 112.86
|
|
11
|
+
L 59.07 112.07
|
|
12
|
+
A 0.36 0.35 87.7 0 1 59.44 112.42
|
|
13
|
+
Q 59.55 118.99 59.43 122.79
|
|
14
|
+
Q 59.27 127.73 60.74 130.55
|
|
15
|
+
Q 64.01 136.82 72.53 135.07
|
|
16
|
+
Q 78.63 133.82 87.12 132.09
|
|
17
|
+
A 0.35 0.35 0.0 0 1 87.54 132.43
|
|
18
|
+
L 87.58 146.91
|
|
19
|
+
A 1.13 1.08 -55.0 0 0 87.63 147.24
|
|
20
|
+
Q 89.84 155.56 98.35 155.24
|
|
21
|
+
A 4.44 4.07 33.5 0 0 99.36 155.08
|
|
22
|
+
Q 100.62 154.72 103.96 153.18
|
|
23
|
+
Q 130.98 140.65 139.13 136.95
|
|
24
|
+
C 143.08 135.16 145.93 132.81 146.21 128.71
|
|
25
|
+
Q 146.39 126.10 146.35 114.75
|
|
26
|
+
C 146.33 109.09 145.82 106.27 141.39 103.41
|
|
27
|
+
Q 139.29 102.05 132.32 102.57
|
|
28
|
+
Q 113.89 103.94 91.90 105.64
|
|
29
|
+
A 0.55 0.54 -1.8 0 1 91.31 105.09
|
|
30
|
+
Q 91.33 91.02 91.33 89.96
|
|
31
|
+
Q 91.33 88.90 91.31 74.82
|
|
32
|
+
A 0.55 0.54 1.8 0 1 91.90 74.28
|
|
33
|
+
Q 113.89 75.98 132.32 77.35
|
|
34
|
+
Q 139.29 77.87 141.39 76.51
|
|
35
|
+
C 145.82 73.65 146.33 70.83 146.35 65.17
|
|
36
|
+
Q 146.39 53.82 146.21 51.21
|
|
37
|
+
C 145.93 47.11 143.08 44.76 139.13 42.97
|
|
38
|
+
Q 130.99 39.27 103.97 26.74
|
|
39
|
+
Q 100.63 25.20 99.37 24.84
|
|
40
|
+
A 4.44 4.07 -33.5 0 0 98.36 24.68
|
|
41
|
+
Q 89.85 24.36 87.64 32.67
|
|
42
|
+
A 1.13 1.08 55.0 0 0 87.59 33.00
|
|
43
|
+
L 87.54 47.48
|
|
44
|
+
A 0.35 0.35 0.0 0 1 87.12 47.82
|
|
45
|
+
Q 78.63 46.09 72.53 44.84
|
|
46
|
+
Q 64.01 43.09 60.74 49.36
|
|
47
|
+
Q 59.27 52.18 59.43 57.12
|
|
48
|
+
Q 59.55 60.92 59.44 67.49
|
|
49
|
+
A 0.36 0.35 -87.7 0 1 59.07 67.84
|
|
50
|
+
L 41.52 67.05
|
|
51
|
+
A 2.89 2.77 -52.2 0 0 40.50 67.20
|
|
52
|
+
Q 36.84 68.48 34.85 71.70
|
|
53
|
+
Q 33.74 73.50 33.67 78.80
|
|
54
|
+
Q 33.66 79.78 33.66 89.95"
|
|
55
|
+
/>
|
|
56
|
+
<path stroke="#195580" vector-effect="non-scaling-stroke" d="
|
|
57
|
+
M 92.09 52.71
|
|
58
|
+
A 0.62 0.62 0.0 0 0 91.35 53.32
|
|
59
|
+
L 91.32 69.91
|
|
60
|
+
A 0.72 0.72 0.0 0 0 91.99 70.63
|
|
61
|
+
Q 119.75 72.54 134.79 73.80
|
|
62
|
+
Q 137.89 74.06 139.12 73.41
|
|
63
|
+
C 142.93 71.39 143.23 67.45 142.59 63.55
|
|
64
|
+
A 0.78 0.77 1.8 0 0 141.98 62.90
|
|
65
|
+
L 92.09 52.71"
|
|
66
|
+
/>
|
|
67
|
+
<path stroke="#195580" vector-effect="non-scaling-stroke" d="
|
|
68
|
+
M 63.95 72.35
|
|
69
|
+
A 0.61 0.61 0.0 0 0 63.30 72.96
|
|
70
|
+
L 63.30 106.95
|
|
71
|
+
A 0.61 0.61 0.0 0 0 63.95 107.56
|
|
72
|
+
L 86.97 106.00
|
|
73
|
+
A 0.61 0.61 0.0 0 0 87.54 105.39
|
|
74
|
+
L 87.54 74.47
|
|
75
|
+
A 0.61 0.61 0.0 0 0 86.97 73.86
|
|
76
|
+
L 63.95 72.35"
|
|
77
|
+
/>
|
|
78
|
+
<path stroke="#195580" vector-effect="non-scaling-stroke" d="
|
|
79
|
+
M 92.11 127.16
|
|
80
|
+
L 141.95 117.07
|
|
81
|
+
A 0.78 0.77 -1.7 0 0 142.56 116.43
|
|
82
|
+
C 143.20 112.53 142.91 108.60 139.11 106.57
|
|
83
|
+
Q 137.88 105.92 134.78 106.18
|
|
84
|
+
Q 119.76 107.41 92.04 109.27
|
|
85
|
+
A 0.72 0.72 0.0 0 0 91.37 109.99
|
|
86
|
+
L 91.37 126.55
|
|
87
|
+
A 0.62 0.62 0.0 0 0 92.11 127.16"
|
|
88
|
+
/>
|
|
89
|
+
</g>
|
|
90
|
+
<path fill="#FFFFFF" d="
|
|
91
|
+
M 180.00 0.00
|
|
92
|
+
L 180.00 180.00
|
|
93
|
+
L 0.00 180.00
|
|
94
|
+
L 0.00 0.00
|
|
95
|
+
L 180.00 0.00
|
|
96
|
+
Z
|
|
97
|
+
M 33.66 89.95
|
|
98
|
+
Q 33.66 100.13 33.67 101.11
|
|
99
|
+
Q 33.74 106.41 34.85 108.21
|
|
100
|
+
Q 36.84 111.43 40.50 112.71
|
|
101
|
+
A 2.89 2.77 52.2 0 0 41.52 112.86
|
|
102
|
+
L 59.07 112.07
|
|
103
|
+
A 0.36 0.35 87.7 0 1 59.44 112.42
|
|
104
|
+
Q 59.55 118.99 59.43 122.79
|
|
105
|
+
Q 59.27 127.73 60.74 130.55
|
|
106
|
+
Q 64.01 136.82 72.53 135.07
|
|
107
|
+
Q 78.63 133.82 87.12 132.09
|
|
108
|
+
A 0.35 0.35 0.0 0 1 87.54 132.43
|
|
109
|
+
L 87.58 146.91
|
|
110
|
+
A 1.13 1.08 -55.0 0 0 87.63 147.24
|
|
111
|
+
Q 89.84 155.56 98.35 155.24
|
|
112
|
+
A 4.44 4.07 33.5 0 0 99.36 155.08
|
|
113
|
+
Q 100.62 154.72 103.96 153.18
|
|
114
|
+
Q 130.98 140.65 139.13 136.95
|
|
115
|
+
C 143.08 135.16 145.93 132.81 146.21 128.71
|
|
116
|
+
Q 146.39 126.10 146.35 114.75
|
|
117
|
+
C 146.33 109.09 145.82 106.27 141.39 103.41
|
|
118
|
+
Q 139.29 102.05 132.32 102.57
|
|
119
|
+
Q 113.89 103.94 91.90 105.64
|
|
120
|
+
A 0.55 0.54 -1.8 0 1 91.31 105.09
|
|
121
|
+
Q 91.33 91.02 91.33 89.96
|
|
122
|
+
Q 91.33 88.90 91.31 74.82
|
|
123
|
+
A 0.55 0.54 1.8 0 1 91.90 74.28
|
|
124
|
+
Q 113.89 75.98 132.32 77.35
|
|
125
|
+
Q 139.29 77.87 141.39 76.51
|
|
126
|
+
C 145.82 73.65 146.33 70.83 146.35 65.17
|
|
127
|
+
Q 146.39 53.82 146.21 51.21
|
|
128
|
+
C 145.93 47.11 143.08 44.76 139.13 42.97
|
|
129
|
+
Q 130.99 39.27 103.97 26.74
|
|
130
|
+
Q 100.63 25.20 99.37 24.84
|
|
131
|
+
A 4.44 4.07 -33.5 0 0 98.36 24.68
|
|
132
|
+
Q 89.85 24.36 87.64 32.67
|
|
133
|
+
A 1.13 1.08 55.0 0 0 87.59 33.00
|
|
134
|
+
L 87.54 47.48
|
|
135
|
+
A 0.35 0.35 0.0 0 1 87.12 47.82
|
|
136
|
+
Q 78.63 46.09 72.53 44.84
|
|
137
|
+
Q 64.01 43.09 60.74 49.36
|
|
138
|
+
Q 59.27 52.18 59.43 57.12
|
|
139
|
+
Q 59.55 60.92 59.44 67.49
|
|
140
|
+
A 0.36 0.35 -87.7 0 1 59.07 67.84
|
|
141
|
+
L 41.52 67.05
|
|
142
|
+
A 2.89 2.77 -52.2 0 0 40.50 67.20
|
|
143
|
+
Q 36.84 68.48 34.85 71.70
|
|
144
|
+
Q 33.74 73.50 33.67 78.80
|
|
145
|
+
Q 33.66 79.78 33.66 89.95
|
|
146
|
+
Z"
|
|
147
|
+
/>
|
|
148
|
+
<path fill="#31aaff" d="
|
|
149
|
+
M 91.33 89.96
|
|
150
|
+
Q 91.33 91.02 91.31 105.09
|
|
151
|
+
A 0.55 0.54 -1.8 0 0 91.90 105.64
|
|
152
|
+
Q 113.89 103.94 132.32 102.57
|
|
153
|
+
Q 139.29 102.05 141.39 103.41
|
|
154
|
+
C 145.82 106.27 146.33 109.09 146.35 114.75
|
|
155
|
+
Q 146.39 126.10 146.21 128.71
|
|
156
|
+
C 145.93 132.81 143.08 135.16 139.13 136.95
|
|
157
|
+
Q 130.98 140.65 103.96 153.18
|
|
158
|
+
Q 100.62 154.72 99.36 155.08
|
|
159
|
+
A 4.44 4.07 33.5 0 1 98.35 155.24
|
|
160
|
+
Q 89.84 155.56 87.63 147.24
|
|
161
|
+
A 1.13 1.08 -55.0 0 1 87.58 146.91
|
|
162
|
+
L 87.54 132.43
|
|
163
|
+
A 0.35 0.35 0.0 0 0 87.12 132.09
|
|
164
|
+
Q 78.63 133.82 72.53 135.07
|
|
165
|
+
Q 64.01 136.82 60.74 130.55
|
|
166
|
+
Q 59.27 127.73 59.43 122.79
|
|
167
|
+
Q 59.55 118.99 59.44 112.42
|
|
168
|
+
A 0.36 0.35 87.7 0 0 59.07 112.07
|
|
169
|
+
L 41.52 112.86
|
|
170
|
+
A 2.89 2.77 52.2 0 1 40.50 112.71
|
|
171
|
+
Q 36.84 111.43 34.85 108.21
|
|
172
|
+
Q 33.74 106.41 33.67 101.11
|
|
173
|
+
Q 33.66 100.13 33.66 89.95
|
|
174
|
+
Q 33.66 79.78 33.67 78.80
|
|
175
|
+
Q 33.74 73.50 34.85 71.70
|
|
176
|
+
Q 36.84 68.48 40.50 67.20
|
|
177
|
+
A 2.89 2.77 -52.2 0 1 41.52 67.05
|
|
178
|
+
L 59.07 67.84
|
|
179
|
+
A 0.36 0.35 -87.7 0 0 59.44 67.49
|
|
180
|
+
Q 59.55 60.92 59.43 57.12
|
|
181
|
+
Q 59.27 52.18 60.74 49.36
|
|
182
|
+
Q 64.01 43.09 72.53 44.84
|
|
183
|
+
Q 78.63 46.09 87.12 47.82
|
|
184
|
+
A 0.35 0.35 0.0 0 0 87.54 47.48
|
|
185
|
+
L 87.59 33.00
|
|
186
|
+
A 1.13 1.08 55.0 0 1 87.64 32.67
|
|
187
|
+
Q 89.85 24.36 98.36 24.68
|
|
188
|
+
A 4.44 4.07 -33.5 0 1 99.37 24.84
|
|
189
|
+
Q 100.63 25.20 103.97 26.74
|
|
190
|
+
Q 130.99 39.27 139.13 42.97
|
|
191
|
+
C 143.08 44.76 145.93 47.11 146.21 51.21
|
|
192
|
+
Q 146.39 53.82 146.35 65.17
|
|
193
|
+
C 146.33 70.83 145.82 73.65 141.39 76.51
|
|
194
|
+
Q 139.29 77.87 132.32 77.35
|
|
195
|
+
Q 113.89 75.98 91.90 74.28
|
|
196
|
+
A 0.55 0.54 1.8 0 0 91.31 74.82
|
|
197
|
+
Q 91.33 88.90 91.33 89.96
|
|
198
|
+
Z
|
|
199
|
+
M 92.09 52.71
|
|
200
|
+
A 0.62 0.62 0.0 0 0 91.35 53.32
|
|
201
|
+
L 91.32 69.91
|
|
202
|
+
A 0.72 0.72 0.0 0 0 91.99 70.63
|
|
203
|
+
Q 119.75 72.54 134.79 73.80
|
|
204
|
+
Q 137.89 74.06 139.12 73.41
|
|
205
|
+
C 142.93 71.39 143.23 67.45 142.59 63.55
|
|
206
|
+
A 0.78 0.77 1.8 0 0 141.98 62.90
|
|
207
|
+
L 92.09 52.71
|
|
208
|
+
Z
|
|
209
|
+
M 63.95 72.35
|
|
210
|
+
A 0.61 0.61 0.0 0 0 63.30 72.96
|
|
211
|
+
L 63.30 106.95
|
|
212
|
+
A 0.61 0.61 0.0 0 0 63.95 107.56
|
|
213
|
+
L 86.97 106.00
|
|
214
|
+
A 0.61 0.61 0.0 0 0 87.54 105.39
|
|
215
|
+
L 87.54 74.47
|
|
216
|
+
A 0.61 0.61 0.0 0 0 86.97 73.86
|
|
217
|
+
L 63.95 72.35
|
|
218
|
+
Z
|
|
219
|
+
M 92.11 127.16
|
|
220
|
+
L 141.95 117.07
|
|
221
|
+
A 0.78 0.77 -1.7 0 0 142.56 116.43
|
|
222
|
+
C 143.20 112.53 142.91 108.60 139.11 106.57
|
|
223
|
+
Q 137.88 105.92 134.78 106.18
|
|
224
|
+
Q 119.76 107.41 92.04 109.27
|
|
225
|
+
A 0.72 0.72 0.0 0 0 91.37 109.99
|
|
226
|
+
L 91.37 126.55
|
|
227
|
+
A 0.62 0.62 0.0 0 0 92.11 127.16
|
|
228
|
+
Z"
|
|
229
|
+
/>
|
|
230
|
+
<path fill="#FFFFFF" d="
|
|
231
|
+
M 92.09 52.71
|
|
232
|
+
L 141.98 62.90
|
|
233
|
+
A 0.78 0.77 1.8 0 1 142.59 63.55
|
|
234
|
+
C 143.23 67.45 142.93 71.39 139.12 73.41
|
|
235
|
+
Q 137.89 74.06 134.79 73.80
|
|
236
|
+
Q 119.75 72.54 91.99 70.63
|
|
237
|
+
A 0.72 0.72 0.0 0 1 91.32 69.91
|
|
238
|
+
L 91.35 53.32
|
|
239
|
+
A 0.62 0.62 0.0 0 1 92.09 52.71
|
|
240
|
+
Z"
|
|
241
|
+
/>
|
|
242
|
+
<path fill="#FFFFFF" d="
|
|
243
|
+
M 63.95 72.35
|
|
244
|
+
L 86.97 73.86
|
|
245
|
+
A 0.61 0.61 0.0 0 1 87.54 74.47
|
|
246
|
+
L 87.54 105.39
|
|
247
|
+
A 0.61 0.61 0.0 0 1 86.97 106.00
|
|
248
|
+
L 63.95 107.56
|
|
249
|
+
A 0.61 0.61 0.0 0 1 63.30 106.95
|
|
250
|
+
L 63.30 72.96
|
|
251
|
+
A 0.61 0.61 0.0 0 1 63.95 72.35
|
|
252
|
+
Z"
|
|
253
|
+
/>
|
|
254
|
+
<path fill="#FFFFFF" d="
|
|
255
|
+
M 91.37 126.55
|
|
256
|
+
L 91.37 109.99
|
|
257
|
+
A 0.72 0.72 0.0 0 1 92.04 109.27
|
|
258
|
+
Q 119.76 107.41 134.78 106.18
|
|
259
|
+
Q 137.88 105.92 139.11 106.57
|
|
260
|
+
C 142.91 108.60 143.20 112.53 142.56 116.43
|
|
261
|
+
A 0.78 0.77 -1.7 0 1 141.95 117.07
|
|
262
|
+
L 92.11 127.16
|
|
263
|
+
A 0.62 0.62 0.0 0 1 91.37 126.55
|
|
264
|
+
Z"
|
|
265
|
+
/>
|
|
266
|
+
</svg>
|