Repository: RobinTail/express-zod-api
Pull request #70 (2021-07-16 19:04:17)

Improving examples


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bcbe1041..0c7c74a5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,8 @@ While v2 is beta some methods and properties might be renamed or changed without
 ### v2.0.0-beta2
 
 - Zod version is 3.5.1.
+- Better examples including a custom `ResultHandler` and a file download.
+- Fixed a bug of incorrect `getPositiveMimeTypes()` and `getNegativeMimeTypes()` usage in Swagger docs generator. 
 
 ### v2.0.0-beta1
 
diff --git a/README.md b/README.md
index 3446dc16..9114dad1 100644
--- a/README.md
+++ b/README.md
@@ -26,10 +26,11 @@ Start your API server with I/O schema validation and custom middlewares in minut
    1. [Create a middleware](#create-a-middleware)
    2. [Refinements](#refinements)
    3. [Transformations](#transformations)
-   4. [ResultHandler](#resulthandler)   
-   5. [Your custom logger](#your-custom-logger)
-   6. [Your custom server](#your-custom-server)
-   7. [Multiple schemas for a single route](#multiple-schemas-for-a-single-route)
+   4. [ResultHandler](#resulthandler)
+   5. [Non-object response](#non-object-response)   
+   6. [Your custom logger](#your-custom-logger)
+   7. [Your custom server](#your-custom-server)
+   8. [Multiple schemas for a single route](#multiple-schemas-for-a-single-route)
 6. [Disclosing API specifications](#disclosing-api-specifications)
    1. [Reusing endpoint types on your frontend](#reusing-endpoint-types-on-your-frontend)
    2. [Swagger / OpenAPI Specification](#swagger--openapi-specification)
@@ -50,8 +51,8 @@ If you're upgrading from v1 please check out the information in [Changelog](CHAN
 - Swagger - [OpenAPI 3.x](https://github.com/metadevpro/openapi3-ts)
 
 # Concept
-
-The API always operates object schemas for input and output, including unions and intersections of object schemas (`.or()`, `.and()`).
+The API operates object schemas for input and output, including unions and intersections of object schemas
+(`.or()`, `.and()`), but in general the API can respond with any data type *(see [advanced example below](#non-object-response))*.
 
 The object being validated is the `request.query` for GET request, the `request.body` for PUT, PATCH and POST requests, or their merging for DELETE requests.
 
@@ -86,7 +87,7 @@ Add the following option to your `tsconfig.json` file in order to make it work a
 
 # Basic usage
 
-*See full example [here](https://github.com/RobinTail/express-zod-api/tree/master/example).*
+See the [full implementation example here](https://github.com/RobinTail/express-zod-api/tree/master/example).
 
 ## Set up config
 
@@ -297,6 +298,13 @@ import {EndpointsFactory} from 'express-zod-api';
 const endpointsFactory = new EndpointsFactory(myResultHandler);
 ```
 
+## Non-object response
+
+Starting from the version 2.0.0, `ResultHandler` also supports non-object response types, for example, sending an 
+image file including its MIME type in `Content-type` header.
+
+See the corresponding `EndpointsFactory` and `ResultHandler` [implementation example](https://github.com/RobinTail/express-zod-api/blob/master/example/factories.ts) and the [example implementation](https://github.com/RobinTail/express-zod-api/blob/master/example/v1/send-avatar.ts) of the corresponding `Endpoint`. 
+
 ## Your custom logger
 
 You can specify your custom Winston logger in config:
diff --git a/example/example.swagger.yaml b/example/example.swagger.yaml
index 98434af4..1037b48b 100644
--- a/example/example.swagger.yaml
+++ b/example/example.swagger.yaml
@@ -20,15 +20,12 @@ paths:
                   data:
                     type: object
                     properties:
-                      status:
-                        type: string
-                        enum:
-                          - That's ok
-                          - Some kind of warning
+                      id:
+                        type: number
                       name:
                         type: string
                     required:
-                      - status
+                      - id
                       - name
                 required:
                   - status
@@ -81,13 +78,13 @@ paths:
                   data:
                     type: object
                     properties:
-                      status:
+                      name:
                         type: string
-                        enum:
-                          - Success
-                          - I'll fix it later
+                      timestamp:
+                        type: number
                     required:
-                      - status
+                      - name
+                      - timestamp
                 required:
                   - status
                   - data
@@ -132,6 +129,30 @@ paths:
                 - id
                 - name
               description: POST /v1/setUser request body
+  /v1/avatar:
+    get:
+      responses:
+        "200":
+          description: Successful response
+          content:
+            image/svg+xml:
+              schema:
+                type: string
+                description: GET /v1/avatar Successful response
+        "400":
+          description: Error response
+          content:
+            text/plain:
+              schema:
+                type: string
+                description: GET /v1/avatar Error response
+      parameters:
+        - name: userId
+          in: query
+          required: true
+          schema:
+            type: string
+            description: GET /v1/avatar parameter
 components:
   schemas: {}
   responses: {}
diff --git a/example/factories.ts b/example/factories.ts
index a437d787..6fbd9694 100644
--- a/example/factories.ts
+++ b/example/factories.ts
@@ -1,4 +1,28 @@
-import {defaultEndpointsFactory} from '../src';
+import {lookup} from 'mime';
+import {
+  createApiResponse,
+  createResultHandler,
+  defaultEndpointsFactory,
+  EndpointsFactory,
+  z
+} from '../src';
 import {authMiddleware} from './middlewares';
 
 export const keyAndTokenAuthenticatedEndpointsFactory = defaultEndpointsFactory.addMiddleware(authMiddleware);
+
+export const fileDownloadEndpointsFactory = new EndpointsFactory(createResultHandler({
+  getPositiveResponse: () => createApiResponse(z.string(), lookup('svg')),
+  getNegativeResponse: () => createApiResponse(z.string(), lookup('txt')),
+  handler: ({response, error, output}) => {
+    if (error) {
+      response.status(400).send(error.message);
+      return;
+    }
+    if ('data' in output) {
+      response.type('svg').send(output.data);
+      // Another approach is the endpoint that outputs filename and ResultHandler calls response.sendFile().
+    } else {
+      response.status(400).send('Data is missing');
+    }
+  }
+}));
diff --git a/example/v1/get-user.ts b/example/v1/get-user.ts
index f2b47ade..c0186d18 100644
--- a/example/v1/get-user.ts
+++ b/example/v1/get-user.ts
@@ -1,11 +1,6 @@
 import {z, createHttpError, defaultEndpointsFactory} from '../../src';
 import {methodProviderMiddleware} from '../middlewares';
 
-enum Status {
-  OK = "That's ok",
-  Warning = 'Some kind of warning'
-}
-
 export const getUserEndpoint = defaultEndpointsFactory
   .addMiddleware(methodProviderMiddleware)
   .build({
@@ -15,24 +10,15 @@ export const getUserEndpoint = defaultEndpointsFactory
       id: z.string().transform((id) => parseInt(id, 10))
     }),
     output: z.object({
-      status: z.nativeEnum(Status),
+      id: z.number(),
       name: z.string(),
     }),
     handler: async ({input: {id}, options: {method}, logger}) => {
       logger.debug(`Requested id: ${id}, method ${method}`);
       const name = 'John Doe';
-      if (id < 10) {
-        return {
-          status: Status.OK,
-          name
-        };
-      }
       if (id > 100) {
         throw createHttpError(404, 'User not found');
       }
-      return {
-        status: Status.Warning,
-        name
-      };
+      return { id, name };
     }
   });
diff --git a/example/v1/index.ts b/example/v1/index.ts
index dad8e690..2fe082c7 100644
--- a/example/v1/index.ts
+++ b/example/v1/index.ts
@@ -1,5 +1,6 @@
 import {DependsOnMethod, Routing} from '../../src';
 import {getUserEndpoint} from './get-user';
+import {sendAvatar} from './send-avatar';
 import {setUserEndpoint} from './set-user';
 
 export const v1Routing: Routing = {
@@ -9,5 +10,8 @@ export const v1Routing: Routing = {
   // syntax 2: methods are defined within the route
   setUser: new DependsOnMethod({
     post: setUserEndpoint // the Endpoint should have at least the same method specified in .build()
-  })
+  }),
+
+  // custom result handler example
+  avatar: sendAvatar
 };
diff --git a/example/v1/send-avatar.ts b/example/v1/send-avatar.ts
new file mode 100644
index 00000000..5897dc38
--- /dev/null
+++ b/example/v1/send-avatar.ts
@@ -0,0 +1,17 @@
+import { z } from '../../src';
+import {fileDownloadEndpointsFactory} from '../factories';
+import fs from 'fs';
+
+export const sendAvatar = fileDownloadEndpointsFactory.build({
+  methods: ['get'],
+  input: z.object({
+    userId: z.string().transform((str) => parseInt(str, 10))
+  }),
+  output: z.object({
+    data: z.string()
+  }),
+  handler: async () => {
+    const data = fs.readFileSync('logo.svg', 'utf-8');
+    return { data };
+  }
+});
diff --git a/example/v1/set-user.ts b/example/v1/set-user.ts
index d115bf8f..43cb873c 100644
--- a/example/v1/set-user.ts
+++ b/example/v1/set-user.ts
@@ -1,11 +1,6 @@
 import {z, createHttpError} from '../../src';
 import {keyAndTokenAuthenticatedEndpointsFactory} from '../factories';
 
-enum Status {
-  Updated = 'Success',
-  Delayed = "I'll fix it later"
-}
-
 export const setUserEndpoint = keyAndTokenAuthenticatedEndpointsFactory.build({
   method: 'post',
   description: 'example user update endpoint',
@@ -14,21 +9,16 @@ export const setUserEndpoint = keyAndTokenAuthenticatedEndpointsFactory.build({
     name: z.string().nonempty()
   }),
   output: z.object({
-    status: z.nativeEnum(Status),
+    name: z.string(),
+    timestamp: z.number()
   }),
   handler: async ({input: {id, name, key}, options: {token}, logger}) => {
     logger.debug(`id, key and token: ${id}, ${key}, ${token}`);
-    if (id < 10) {
-      return {
-        status: Status.Updated,
-        name
-      };
-    }
     if (id > 100) {
       throw createHttpError(404, 'User not found');
     }
     return {
-      status: Status.Delayed,
+      timestamp: Date.now(),
       name
     };
   }
diff --git a/src/endpoint.ts b/src/endpoint.ts
index e03e0c2a..1a0a689e 100644
--- a/src/endpoint.ts
+++ b/src/endpoint.ts
@@ -124,11 +124,11 @@ export class Endpoint<
     return this.resultHandler.getNegativeResponse().schema;
   }
 
-  public getNegativeMimeTypes() {
+  public getPositiveMimeTypes() {
     return this.resultHandler.getPositiveResponse(this.outputSchema).mimeTypes;
   }
 
-  public getPositiveMimeTypes() {
+  public getNegativeMimeTypes() {
     return this.resultHandler.getNegativeResponse().mimeTypes;
   }
 


Test patch:
diff --git a/tests/system/__snapshots__/example.spec.ts.snap b/tests/system/__snapshots__/example.spec.ts.snap
new file mode 100644
index 00000000..1da1c329
--- /dev/null
+++ b/tests/system/__snapshots__/example.spec.ts.snap
@@ -0,0 +1,122 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Example Positive Should send an image with a correct header 1`] = `
+"<?xml version=\\"1.0\\" encoding=\\"UTF-8\\"?>
+<svg width=\\"345px\\" height=\\"230px\\" viewBox=\\"0 0 345 230\\" version=\\"1.1\\" xmlns=\\"http://www.w3.org/2000/svg\\" xmlns:xlink=\\"http://www.w3.org/1999/xlink\\" xmlns:sketch=\\"http://www.bohemiancoding.com/sketch/ns\\">
+    <!-- Generator: Sketch 3.3.1 (12002) - http://www.bohemiancoding.com/sketch -->
+    <title>express-zod-api-logo-10</title>
+    <desc>Created with Sketch.</desc>
+    <defs></defs>
+    <g id=\\"Page-1\\" stroke=\\"none\\" stroke-width=\\"1\\" fill=\\"none\\" fill-rule=\\"evenodd\\" sketch:type=\\"MSPage\\">
+        <g id=\\"express-zod-api-logo-10\\" sketch:type=\\"MSLayerGroup\\">
+            <path d=\\"M345,0 L345,230 L0,230 L0,0 L345,0 Z\\" id=\\"Rectangle-1\\" stroke=\\"#5E6063\\" fill=\\"#FFFFFF\\" sketch:type=\\"MSShapeGroup\\"></path>
+            <g id=\\"Group\\" transform=\\"translate(22.000000, 21.000000)\\" fill=\\"#FFFFFF\\" sketch:type=\\"MSShapeGroup\\">
+                <path d=\\"M1,94 L1,0 L64.25,0 L127.5,0 L127.5,1.2 C127.5,1.85 127.15,2.65 126.75,3 C126.1,3.55 126,5.55 126.05,16.7 C126.05,23.9 125.85,31.8 125.6,34.25 C123.15,55.25 125.35,69.05 131.55,72.25 C133.2,73.15 141.55,73.3 143.05,72.5 C144.2,71.85 144.25,70.85 143.2,69.95 C142.6,69.45 141.05,69.3 137.55,69.4 C133.05,69.6 132.7,69.5 131.65,68.4 C131.05,67.8 130.1,65.6 129.45,63.55 C128.4,59.95 128.35,59.35 128.7,48.3 C128.9,41.95 129.35,33.15 129.65,28.75 L130.25,20.75 L136.15,20.95 C143.4,21.15 145.55,20.4 144.05,18.05 C143.75,17.55 142.1,17.4 137.05,17.45 L130.5,17.55 L130.5,11.9 C130.5,8.8 130.7,5.95 130.95,5.55 C131.3,5 132.55,4.9 137.4,5.15 C143.4,5.45 144.5,5.2 144.5,3.65 C144.5,3.3 143.75,2.85 142.9,2.6 C141.75,2.3 141.2,1.85 141.1,1.1 L140.95,3.99680289e-15 L220.95,3.99680289e-15 L301,3.99680289e-15 L301,94 L301,188 L151,188 L1,188 L1,94 L1,94 Z M262.15,151.1 C262.9,150.3 262.8,150.25 260.8,150.4 L258.6,150.6 L258.05,145.65 C257.55,141.25 257.15,134.1 256.2,113 C255.9,106.15 255.45,103.5 254.35,102.6 C253.9,102.2 253.8,103.25 253.9,107.05 L254.05,112.05 L250.15,111.9 L246.25,111.75 L246.25,106.6 C246.25,103.8 246.2,101.5 246.1,101.5 C246,101.5 245.6,102.35 245.15,103.4 C244.55,104.8 244.25,108.1 243.9,117.5 C243.7,124.25 243.1,133.75 242.6,138.6 C241.7,147.7 241.85,150.15 243.25,149 C243.8,148.55 244,147.25 244,143.95 C244,141.5 244.3,135.85 244.7,131.4 C245.1,126.9 245.6,121.05 245.8,118.4 L246.1,113.5 L250.25,113.5 L254.4,113.5 L254.7,117.65 C254.85,119.9 255.2,126.5 255.5,132.25 C256.25,147.5 256.45,149.3 257.6,150.75 C258.75,152.25 260.95,152.4 262.15,151.1 L262.15,151.1 Z M19.95,147.75 C20,147.65 19.95,147.35 19.75,147.05 C19.6,146.75 17.75,146.5 15.45,146.5 L11.45,146.5 L10.35,144.15 C9.35,141.95 9.25,141.1 9.35,132.75 C9.4,127.8 9.65,120.85 9.85,117.25 L10.25,110.75 L15.15,110.5 C17.9,110.35 20,110.05 20,109.75 C20,109.45 18,109.2 15.25,109.1 L10.45,108.95 L10.6,104.1 L10.75,99.25 L15.3,99.4 C19.65,99.6 21.65,99.05 19.6,98.25 C18.45,97.8 9.4,97.9 8.95,98.35 C8.75,98.6 8.5,103.5 8.35,109.25 C8.2,115.05 7.85,122.7 7.5,126.25 C6.45,138.7 8.6,146.95 13.25,148.15 C14.2,148.4 19.55,148.05 19.95,147.75 L19.95,147.75 Z M105.45,147.75 C105.5,147.65 105.45,147.35 105.25,147.05 C105.1,146.75 103.25,146.5 100.95,146.5 L96.95,146.5 L95.9,144.2 C95.35,142.9 94.75,140.55 94.65,138.9 C94.35,136 95.35,113.05 95.8,111.4 C96,110.65 96.8,110.5 100.8,110.4 C107,110.2 106.95,109.3 100.75,109.1 L95.95,108.95 L96.1,104.1 L96.25,99.25 L100.8,99.4 C105.15,99.6 107.15,99.05 105.1,98.25 C103.95,97.8 94.9,97.9 94.45,98.35 C94.25,98.6 93.95,103.35 93.8,109 C93.7,114.65 93.3,122.2 93,125.75 C92.1,136.05 93.15,142.9 96.05,146.2 C96.85,147.15 98.05,148.05 98.65,148.15 C99.75,148.4 105.1,148.05 105.45,147.75 L105.45,147.75 Z M122.7,147.1 C125.2,145.65 125.95,144.05 126.55,139.25 C127.4,132.35 126.5,127.4 123.85,124.6 C123.25,123.95 121.65,122.85 120.25,122.15 C116.3,120.15 114.65,118.3 113.95,115.05 C113.3,112 113.65,104.65 114.55,102.85 C114.9,102.1 114.65,102.25 113.75,103.25 C111.15,106.3 111.05,109.45 113.3,116.95 C113.95,119.2 114.4,119.75 116.65,121.2 C118.1,122.1 119.8,123.05 120.5,123.25 C121.2,123.45 122.35,124.2 123.15,124.9 L124.5,126.2 L124.5,135.45 C124.5,140.55 124.3,145 124.1,145.3 C123.35,146.45 121.45,147 118.15,147 C116.15,147 114.45,146.75 114.1,146.4 C113.75,146.05 113.5,144.35 113.5,142.2 C113.5,138.4 112.95,137.25 112,139 C110.45,141.85 111.9,146.55 114.65,147.8 C116.6,148.65 120.6,148.3 122.7,147.1 L122.7,147.1 Z M143.95,147.1 C147.05,145.5 147.75,143.3 147.75,135.45 C147.75,128.8 147.7,128.65 146.25,126.25 C145.05,124.35 144,123.4 141,121.8 C137.9,120.1 137.05,119.35 136.1,117.5 C135.05,115.45 134.95,114.75 135.1,109.4 C135.25,104.5 135.45,103.35 136.3,102.4 L137.25,101.25 L136.05,102.25 C134.35,103.7 133,106.65 133,108.85 C133.05,112.05 134.8,118.45 136,119.75 C136.6,120.4 138.75,121.75 140.8,122.7 C146,125.25 146.1,125.5 145.9,136.35 C145.75,144.85 145.7,145.1 144.55,146.05 C143.65,146.8 142.6,147 139.45,147 C137,147 135.4,146.8 135.2,146.4 C135,146.1 134.7,144.05 134.6,141.9 C134.35,137.45 133.55,136.9 132.8,140.6 C131.6,146.75 137.7,150.35 143.95,147.1 L143.95,147.1 Z M292.75,148 C294.85,148 293.4,147.15 290.55,146.7 L288.35,146.35 L288.65,131.8 C288.85,123.8 289.15,113.7 289.35,109.4 L289.65,101.55 L291.95,101.4 C293.2,101.3 294.25,101.05 294.25,100.75 C294.25,100.2 284.35,99.75 283.1,100.25 C282,100.65 282.8,101.15 285.15,101.45 L287.25,101.75 L287.35,109.5 C287.45,113.75 287.2,123.8 286.85,131.75 L286.25,146.25 L283.9,146.5 C281.4,146.8 280.4,147.3 281.55,147.7 C282.6,148.1 287.5,148.4 289.5,148.2 C290.45,148.1 291.95,148 292.75,148 L292.75,148 Z M176.65,147.45 C178.4,146.55 180,144.9 180,144.05 C179.95,143.4 179.8,143.45 179.25,144.25 C177.8,146.25 177.45,146.5 175.75,146.5 C174.8,146.5 172.55,145.95 170.65,145.3 C168.8,144.6 166.7,144 166,143.9 C164.8,143.75 164.75,143.6 164.85,140.85 C165,136.8 168.4,126.65 172.2,119.05 C173.95,115.55 175.75,111.65 176.25,110.25 C176.75,108.9 178.3,106 179.65,103.85 C182.2,99.8 182.5,97.9 180.4,99.05 C179.35,99.6 175.6,99.5 168.5,98.7 C167,98.5 165.9,98.55 166.1,98.75 C166.55,99.2 174.85,101 176.6,101 C179.05,101 178.5,103.35 173.55,113.55 C166.85,127.45 162.05,141.55 162.95,144.85 C163.3,146.1 163.5,146.2 165.8,146.1 C167.2,146.05 169.55,146.4 171.25,146.95 C174.8,148.15 175.25,148.15 176.65,147.45 L176.65,147.45 Z M198.7,147 C199.05,146.65 198,146.5 195.65,146.5 C191.35,146.5 189.65,145.95 189.05,144.3 C188.45,142.8 189.4,106.25 190.1,104.4 C190.8,102.55 192.85,101.85 197,102.1 C200.25,102.25 200.4,102.25 199.15,101.6 C197.35,100.65 193.75,100.75 191.85,101.85 C190.95,102.35 189.75,103.75 189.15,104.9 C187.9,107.4 187.65,110.4 187.25,129.25 L186.95,142.25 L188.1,144 C189.75,146.5 193.15,148.15 196,147.8 C197.2,147.6 198.45,147.25 198.7,147 L198.7,147 Z M215.85,146.7 C220.4,145.2 223.2,143.3 225.1,140.4 C226.45,138.45 226.5,138.05 226.45,132.8 C226.4,120.85 225.65,108.25 224.95,106.6 C224.35,105.15 224.25,107.05 224.4,122.6 C224.55,139.6 224.5,140.35 223.55,141.55 C222.05,143.45 216.8,146.1 214.85,145.9 L213.25,145.75 L213.1,141.25 C213,138.8 213.1,128.35 213.25,118.15 L213.6,99.5 L215.6,99.5 C217.7,99.5 220,100.45 222,102.2 L223.25,103.25 L222,101.85 C220.5,100.15 218.5,99 216.95,99 C216.3,99 215.05,98.75 214.15,98.4 C212.85,97.95 212.35,97.95 211.9,98.4 C211.45,98.85 211.25,105.2 211.1,122.8 C210.95,144.75 211,148 211.7,148 C211.85,148 213.75,147.4 215.85,146.7 L215.85,146.7 Z M88.5,145.5 C86.75,142 85.45,138.4 83.7,131.75 C82.75,128.2 81.3,124.05 80.5,122.55 C78.55,118.95 78.55,117.35 80.5,116.15 C82.25,115.15 82.7,113.45 82.75,108 C82.75,102 80.4,99.05 75.25,98.6 C71.4,98.3 69.65,99.1 69.3,101.4 C68.75,104.85 69.8,144.15 70.5,145.75 C71.05,147.1 71.15,147.15 71.45,146.25 C71.65,145.7 71.7,139.3 71.5,132 C71.3,124.7 71.25,118.6 71.35,118.4 C71.45,118.15 72.8,118 74.25,118 C76.55,118 77.1,118.2 77.7,119.15 C78.65,120.6 82.15,130.3 84.2,137.25 C85.95,143.25 86.6,144.65 88.15,146.4 C89.6,147.95 89.65,147.8 88.5,145.5 L88.5,145.5 Z M266.85,133 L266.55,120.15 L269.75,119.85 C273.4,119.5 275.7,118.5 276.55,116.9 C276.85,116.3 277.25,113.9 277.35,111.55 C277.55,107.7 277.45,107 276.4,105.05 C274.6,101.65 273.05,100.75 269.15,100.75 C264.1,100.75 264.35,99.35 264.65,122.75 C264.9,142.85 265.4,148.9 266.65,146.75 C267,146.1 267.05,141.5 266.85,133 L266.85,133 Z M27,143.9 C27.8,142.15 29.5,137.55 30.85,133.65 L33.25,126.5 L35.05,126.5 C36.75,126.5 36.9,126.65 37.65,128.65 C38.05,129.8 38.55,131.3 38.75,132 C39.45,134.55 44.1,146 44.55,146.25 C45.35,146.75 45.05,145.8 43,141.05 C41.9,138.45 40.55,134.9 40.05,133.05 C39.55,131.25 38.4,128.3 37.55,126.5 C36.7,124.7 36,122.55 36,121.7 C36,119.65 37.35,116.15 41.05,108.75 C44.45,101.85 45.8,98.3 44.9,98.6 C44.55,98.75 44.1,99.6 43.9,100.55 C43.65,101.5 41.95,105.35 40.15,109.15 L36.8,116 L34.9,116 C33.15,116 32.9,115.85 32.2,114.2 C31.8,113.2 31.2,111.2 30.95,109.7 C30.65,108.2 29.7,105.4 28.8,103.5 C27.85,101.6 26.95,99.55 26.8,98.9 C26.55,98.15 26.35,98 26.15,98.4 C26,98.75 26.6,100.45 27.4,102.15 C28.25,103.85 29.2,106.7 29.5,108.5 C29.85,110.3 30.75,112.75 31.45,114 C33.55,117.5 34.15,119.3 33.85,121.35 C33.45,124.4 30.8,131.45 27.5,138.1 C24.7,143.85 23.8,147 25.05,147 C25.3,147 26.2,145.6 27,143.9 L27,143.9 Z M53.05,133.2 L52.9,120 L54.75,120 C57.6,120 60.8,119 62,117.75 C62.75,116.95 63.2,115.5 63.55,113.05 C64.6,105.5 61.2,100.5 55.1,100.5 C54.05,100.5 52.7,100.85 52.1,101.3 L51,102.05 L51,120.9 C51,140.5 51.55,148.1 52.95,146.75 C53.1,146.55 53.15,140.45 53.05,133.2 L53.05,133.2 Z M202.25,142.7 C202.8,141.35 203.1,136.8 203.55,123.7 L204.1,106.45 L202.8,104.5 C202.1,103.4 201.35,102.5 201.2,102.5 C201,102.5 201.15,102.85 201.5,103.25 C202,103.85 202.05,108.15 201.8,123.4 C201.6,134.05 201.3,143.15 201.2,143.65 C200.75,145.2 201.45,144.55 202.25,142.7 L202.25,142.7 Z M126.9,107.2 C127.5,101.8 122.55,98.4 117.35,100.65 C116.1,101.2 116.35,101.25 120,101.25 C124.8,101.25 125,101.45 125,105.85 C125,111.1 126.35,112.05 126.9,107.2 L126.9,107.2 Z M148.05,108.4 C149.2,104.05 146.45,100 142.35,100 C141.2,100.05 139.6,100.3 138.85,100.65 C137.55,101.2 137.8,101.25 141.2,101.25 C143.55,101.25 145.2,101.5 145.6,101.9 C145.9,102.2 146.3,104 146.4,105.9 C146.65,111.1 147.1,111.8 148.05,108.4 L148.05,108.4 Z M250.8,100.8 C249.3,100.15 247.7,100.25 247.2,101.05 C247.05,101.3 248.15,101.5 249.6,101.45 C252.2,101.4 252.2,101.4 250.8,100.8 L250.8,100.8 Z M163.15,82.65 C155.95,82.55 144.05,82.55 136.65,82.65 C129.3,82.7 135.2,82.75 149.75,82.75 C164.35,82.75 170.35,82.7 163.15,82.65 L163.15,82.65 Z M170.15,71.8 C173.15,70.55 176.05,65.95 174.45,65 C173.6,64.45 173.2,64.7 171.7,67.05 C170.55,68.95 170.4,69 167.8,69 C166,69 163.65,68.5 161,67.5 C158.75,66.7 156.15,66 155.2,66 C152.95,66 152.7,65.25 153.5,60.85 C154.75,53.55 159.25,41.1 163.95,31.8 C166.4,26.95 168.9,21.6 169.45,19.9 C170,18.25 172.1,14.3 174.05,11.15 C177.35,5.95 177.6,5.35 177.05,4.15 C176.55,3.1 176.25,2.95 175.1,3.25 C172.2,4.05 165.5,4.05 161.35,3.3 C159.05,2.85 156.5,2.5 155.65,2.5 C153.85,2.5 152.65,3.6 153.6,4.35 C154.55,5.1 163.4,7 167.45,7.35 C170.8,7.65 171,7.7 171,8.85 C171,9.5 168.4,15.35 165.2,21.85 C159.8,32.9 156.3,40.95 155.1,45 C154.8,45.95 153.85,48.65 153,51 C150.45,57.75 149.5,61.85 149.5,66.05 C149.5,68.9 149.7,70.05 150.25,70.5 C150.85,71 151.2,71 151.6,70.6 C152.5,69.7 156.65,69.9 159.85,70.95 C164.95,72.7 167.6,72.9 170.15,71.8 L170.15,71.8 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M71,112.35 C71,110.3 71.15,106.6 71.3,104.1 L71.65,99.5 L74.85,99.5 C76.6,99.5 78.45,99.7 78.95,100 C80.6,100.85 81.25,103.45 81.25,109.05 C81.25,115.95 81.2,116 75.45,116 L71,116 L71,112.35 L71,112.35 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M266.5,111.05 C266.5,107.2 266.75,103.45 267,102.7 C267.5,101.4 267.6,101.35 270.65,101.7 C272.35,101.85 274,102.3 274.35,102.65 C275.6,103.9 276.2,108.55 275.7,113.3 L275.25,117.75 L270.9,117.9 L266.5,118.05 L266.5,111.05 L266.5,111.05 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M53,110.35 C53,105.05 53.2,102.5 53.6,102.1 C53.95,101.75 55.25,101.5 56.55,101.5 C58.35,101.5 59.3,101.8 60.35,102.7 C61.7,103.9 61.75,104.05 61.9,109.9 C62.15,117.9 62.1,118 57,118 L53,118 L53,110.35 L53,110.35 Z\\" id=\\"Shape\\"></path>
+            </g>
+            <g id=\\"Group\\" transform=\\"translate(27.000000, 117.000000)\\" fill=\\"#000000\\" sketch:type=\\"MSShapeGroup\\">
+                <path d=\\"M253.05,57.6 C250.25,56.75 250,55.85 249.2,41 C248.8,33.45 248.35,25.4 248.2,23.15 L247.9,19 L245.2,19 C242.7,19 242.5,19.1 242.5,20.2 C242.5,20.9 242.15,25.65 241.7,30.85 C241.25,36 240.75,43.4 240.6,47.25 L240.25,54.25 L238.9,54.9 C237.15,55.75 235.7,55 235.3,53.15 C235.1,52.35 235.45,47.15 236.05,41.5 C236.6,35.85 237.25,25.95 237.45,19.5 C237.9,6.2 238.2,4.7 241.15,3.35 C243.55,2.2 245.3,2.3 248.4,3.75 C251.85,5.35 252.3,6.5 252.7,15.25 C253.7,37.5 254.05,43.75 254.55,48.15 C255.05,52.4 255.25,53 255.95,52.7 C256.4,52.5 257.4,52.35 258.15,52.35 C259.25,52.35 259.5,52.2 259.25,51.55 C258.5,49.6 258,38.45 258,22.45 C258,8.35 258.15,5 258.7,4.2 C259.35,3.4 260.05,3.25 264.15,3.25 C269.7,3.25 270.9,3.85 272.9,7.55 C274,9.6 274.05,10.2 273.9,15.5 C273.8,18.7 273.4,21.75 273.1,22.35 C272.2,24 269.9,25 266.2,25.35 L262.9,25.65 L263.2,29.95 C263.45,33.85 263.7,47.3 263.55,50.6 C263.5,52.25 262.15,53.65 260.95,53.35 C260.25,53.15 260,53.35 260,54 C260,56.45 256.1,58.45 253.05,57.6 L253.05,57.6 Z M269.15,17 C269.6,13.55 268.95,8.95 267.85,8.1 C267.5,7.85 266.5,7.5 265.6,7.35 C264.2,7.05 263.9,7.2 263.5,8.3 C263.2,9 263,12.05 263,15.05 L263,20.55 L265.9,20.4 L268.75,20.25 L269.15,17 L269.15,17 Z M247.5,11.3 C247.5,7.4 247.15,6.9 244.7,7.1 L242.75,7.25 L242.85,10.75 C242.9,12.7 242.95,14.3 243,14.4 C243,14.45 244,14.45 245.25,14.4 L247.5,14.35 L247.5,11.3 L247.5,11.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M6.75,53.65 C1.9,52.45 -0.1,43.95 1,29.05 C1.35,24.5 1.7,16.4 1.8,11.05 C1.9,5.7 2.15,1.15 2.4,0.9 C3.15,0.15 15.05,0.2 16.4,0.9 C17.65,1.6 17.9,3.55 16.8,4.45 C16.35,4.85 14.5,5 11.65,4.95 L7.25,4.85 L7.1,8.15 L6.95,11.5 L11.65,11.5 C17.05,11.5 18.05,12 17.2,14.4 C16.75,15.7 16.6,15.75 11.75,16 L6.75,16.25 L6.35,22.75 C6.15,26.35 5.95,32.65 5.85,36.75 C5.75,43.55 5.85,44.45 6.85,46.65 L7.95,49 L11.95,49 C15.5,49 16.05,49.1 16.5,50.05 C16.85,50.6 16.95,51.6 16.8,52.25 C16.55,53.15 16.05,53.45 14.2,53.7 C11.6,54.05 8.3,54 6.75,53.65 L6.75,53.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M92.15,53.65 C90.5,53.35 88.15,50.35 87.3,47.5 C86.15,43.6 85.85,36.4 86.5,28 C86.85,23.75 87.2,16 87.25,10.85 C87.35,5.5 87.6,1.2 87.9,0.9 C88.65,0.15 100.5,0.2 101.9,0.9 C103.15,1.6 103.4,3.55 102.3,4.45 C101.85,4.85 100,5 97.15,4.95 L92.75,4.85 L92.6,8.15 L92.45,11.5 L97.2,11.5 C101.4,11.5 102.05,11.6 102.5,12.45 C102.85,13.1 102.85,13.85 102.5,14.7 C102.05,15.95 101.9,16 97.25,16 C92.75,16 92.5,16.05 92.3,17.15 C91.8,19.5 90.9,40.65 91.2,42.65 C91.4,43.75 91.95,45.65 92.5,46.85 L93.45,49 L97.45,49 C101,49 101.55,49.1 102,50.05 C102.35,50.6 102.45,51.6 102.3,52.25 C102.05,53.15 101.55,53.45 99.7,53.7 C97.25,54 94,54 92.15,53.65 L92.15,53.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M108.15,53.3 C105.85,52.25 104.8,49.9 104.8,45.85 C104.8,43.25 105.05,42.2 105.85,41.1 C108.2,37.95 110,39.5 110,44.7 C110,46.85 110.25,48.55 110.6,48.9 C111.85,50.15 116.55,49.4 117.6,47.8 C117.8,47.5 118,43.75 118,39.45 L118,31.7 L116.65,30.4 C115.85,29.7 114.7,28.95 114.05,28.75 C112.2,28.2 108.05,25.5 107.55,24.55 C107.3,24.1 106.6,21.8 106,19.5 C103.2,8.65 106.7,2.5 115.7,2.5 C121.5,2.5 123.5,4.55 123.5,10.35 C123.5,14.3 122.7,16.2 121,16.4 C119.2,16.7 118.5,15.3 118.5,11.55 C118.5,7.2 118.15,6.75 114.95,6.8 C112.95,6.8 112.15,7.05 111.5,7.9 C110.35,9.35 109.8,14.6 110.5,17.75 C111.2,20.8 112.8,22.6 116.5,24.5 C119.75,26.15 121.15,27.55 122.3,30.25 C123.4,32.9 123.75,39.25 123.05,44.75 C122.45,49.65 121.7,51.15 119.05,52.65 C116.95,53.95 110.35,54.3 108.15,53.3 L108.15,53.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M129.5,53.15 C126.85,51.75 125.9,49.5 126.15,45.05 C126.35,41.95 126.55,41.15 127.5,40.4 C128.8,39.35 129.05,39.3 130.15,40.15 C130.85,40.6 131.05,41.65 131.15,44.5 C131.25,46.55 131.45,48.55 131.65,48.9 C132.3,49.9 136.7,49.65 138.05,48.55 C139.2,47.65 139.25,47.25 139.4,40.35 C139.6,31.2 139.4,30.7 134.3,28.2 C129.35,25.8 128.6,24.9 127.4,19.9 C124.55,8.25 127.9,2.5 137.45,2.5 C140.45,2.5 141.15,2.7 142.45,3.75 C144.4,5.4 145.2,7.95 144.85,11.5 C144.55,15.1 143.8,16.5 142.3,16.5 C140.45,16.5 139.85,15.25 139.75,11.45 C139.7,9.5 139.4,7.7 139.05,7.35 C138.7,7 137.45,6.75 136.2,6.8 C132.65,6.85 131.95,7.95 131.65,13.3 C131.45,17.25 131.55,18 132.6,20 C133.55,21.85 134.4,22.6 137.5,24.3 C143.9,27.8 145.35,31.75 144.4,43 C143.9,49.15 143,51.25 140.3,52.65 C137.55,54.1 131.8,54.35 129.5,53.15 L129.5,53.15 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M205.05,53.3 C204.65,52.8 204.5,45.65 204.55,27.05 L204.6,1.45 L205.85,0.65 C206.9,-0.05 207.4,-0.1 209.15,0.45 C210.3,0.8 212.2,1.25 213.4,1.45 C214.6,1.65 216.15,2.3 216.9,2.85 C218.95,4.35 221.35,8.2 221.9,10.85 C222.2,12.2 222.6,20.1 222.75,28.5 L223.1,43.75 L221.65,45.85 C219.6,48.9 216.9,50.65 211.7,52.45 C206.55,54.2 205.85,54.3 205.05,53.3 L205.05,53.3 Z M217.05,44.1 C217.95,42.95 218,41.95 218,27.8 C218,19.45 217.8,12 217.5,11.05 C217.25,10.1 216.45,8.7 215.7,7.95 C214.45,6.65 210.7,4.65 210.3,5.05 C209.95,5.4 209.35,46.85 209.65,47.75 C209.95,48.45 210.35,48.35 213.05,46.95 C214.7,46.05 216.5,44.75 217.05,44.1 L217.05,44.1 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M275.1,53.2 C274.25,52.6 274.05,52.15 274.3,51.1 C274.75,49.3 274.7,49.35 277.35,49 C279.35,48.8 279.65,48.6 279.75,47.5 C280.1,43.8 281.1,13.25 280.95,10.5 L280.75,7.25 L278.75,7 C277.65,6.85 276.45,6.55 276.15,6.35 C275.2,5.75 275.35,3.15 276.3,2.8 C276.75,2.65 280.05,2.5 283.7,2.5 C291.5,2.5 292.8,2.95 291.5,5.35 C290.85,6.5 290.35,6.75 288.45,6.9 L286.15,7.05 L285.85,15.15 C285.65,19.6 285.35,29 285.15,36.05 L284.85,48.85 L287.15,49.2 C289.95,49.65 291.15,50.65 290.7,52.2 C290.5,52.75 290.3,53.35 290.2,53.45 C290.15,53.55 286.95,53.7 283.1,53.8 C277.5,53.95 276,53.85 275.1,53.2 L275.1,53.2 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M18.45,52.45 C16.8,50.8 17.5,47.8 21.2,40.2 C23,36.6 24.65,32.7 25,31.55 C25.3,30.4 26,28.45 26.55,27.15 C27.65,24.55 27.5,23.75 24.95,19.5 C24.25,18.25 23.35,15.8 23.05,14 C22.7,12.2 21.75,9.45 20.95,7.8 C19.15,4.15 18.65,1.75 19.55,0.7 C20.3,-0.2 22.5,-0.05 23.05,1 C25.05,4.9 27.05,10 27.45,12.2 C28.05,15.3 29.25,18.5 29.9,18.5 C30.4,18.5 36.85,5.3 37.3,3.25 C37.75,1.15 38.4,0.5 40.05,0.5 C43.3,0.5 42.75,3.6 37.75,13.75 C36,17.35 34.1,21.45 33.55,22.95 L32.5,25.65 L34.2,29.45 C35.2,31.55 36.2,34.25 36.5,35.5 C36.85,36.75 38.2,40.4 39.55,43.6 C42.25,50.1 42.5,51.7 40.95,52.5 C39,53.55 37.8,52.05 35.1,45.15 C33.75,41.65 32.45,38.2 32.25,37.5 C31.6,35.05 30.35,32 30.05,32 C29.85,32 29.05,33.95 28.3,36.4 C24.7,47.5 21.85,53.5 20,53.5 C19.75,53.5 19,53 18.45,52.45 L18.45,52.45 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M46.6,53.1 C45.05,52.1 44.8,49.2 44.6,27 L44.45,4.75 L45.5,3.9 C46.9,2.8 52.75,2.65 55.15,3.7 C59.3,5.4 61,10.15 60.15,17.55 C59.75,21.05 59.4,22.3 58.55,23.2 C57.3,24.5 54.15,25.5 51.2,25.5 L49.35,25.5 L49.65,38.45 C49.9,49.4 49.8,51.55 49.2,52.45 C48.4,53.55 47.65,53.75 46.6,53.1 L46.6,53.1 Z M55.05,19.45 C55.35,18.8 55.55,16.65 55.4,13.95 C55.25,9.1 54.35,7.45 51.9,7.3 C49.7,7.1 49.5,7.75 49.5,14.3 L49.5,20.5 L52,20.5 C54,20.5 54.55,20.3 55.05,19.45 L55.05,19.45 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M65.15,53.1 C63.6,52.1 63.35,49.5 62.9,28 C62.65,16.05 62.6,5.3 62.75,4.2 C63,2.45 63.3,2 64.65,1.45 C65.55,1.05 67.65,0.8 69.3,0.8 C77.35,1 79.95,4.4 79.3,14 C78.95,20 78.75,20.65 77,21.65 L75.6,22.5 L77.05,25.15 C77.8,26.6 79.25,30.8 80.25,34.5 C81.25,38.2 82.85,43.05 83.8,45.25 C86.55,51.45 86.7,51.8 86.35,52.7 C85.85,54 83.35,53.7 81.9,52.15 C80.1,50.15 79.55,48.95 77.7,42.75 C75.6,35.75 72.15,26.1 71.2,24.6 C70.65,23.8 70.05,23.5 69.2,23.6 L67.9,23.75 L68.05,34.25 C68.35,52.6 68.35,52 67.3,52.8 C66.15,53.6 66,53.65 65.15,53.1 L65.15,53.1 Z M74.05,17.65 C74.95,16.6 74.95,9.8 74.05,7.6 C73.25,5.65 72.2,5 69.85,5 L68.15,5 L67.8,9.6 C67.65,12.1 67.5,15.15 67.5,16.35 L67.5,18.5 L70.45,18.5 C72.55,18.5 73.55,18.25 74.05,17.65 L74.05,17.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M164.75,52.45 C162.2,51.65 161.45,51.55 159.9,52.05 C158.45,52.5 157.85,52.5 157.3,52.05 C156.2,51.15 155.85,47.65 156.5,44.1 C157.45,38.85 162.4,25.75 167.05,16.05 C169.5,11 171.5,6.8 171.5,6.7 C171.5,6.6 170.85,6.5 170.1,6.5 C167.7,6.5 159.9,4.6 159.1,3.85 C158.2,2.9 158.7,1.15 160,0.75 C160.55,0.6 163.6,0.85 166.75,1.3 C172.15,2.1 172.65,2.1 174.25,1.35 C176.95,0.05 179,1.2 179,3.95 C179,4.4 177.8,6.7 176.35,9.05 C174.9,11.35 173.3,14.4 172.75,15.75 C172.25,17.15 170.45,21.05 168.7,24.55 C165.75,30.5 161.75,41.55 161.4,44.75 C161.25,46 161.45,46.25 162.5,46.4 C163.2,46.5 165.25,47.1 167.1,47.75 C170.85,49.1 171.6,49 172.4,47.25 C173.2,45.5 174.55,44.95 176.05,45.7 C178.1,46.75 177,50.35 174.05,52.35 C171.95,53.8 168.9,53.8 164.75,52.45 L164.75,52.45 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M185,52.4 C183.75,51.75 182.25,50.5 181.65,49.55 C180.3,47.55 180.3,46.8 180.95,24.15 C181.35,10.75 181.45,9.9 182.55,7.65 C184.2,4.4 186.1,3.35 190.65,3.3 C195,3.25 197.8,4.55 199.55,7.3 L200.65,9.1 L200.1,27.8 C199.55,45.15 199.4,46.7 198.45,48.75 C196.9,52.05 195.1,53.1 190.8,53.35 C187.8,53.55 186.9,53.4 185,52.4 L185,52.4 Z M194.2,47.4 C194.7,46.2 195,40.9 195.25,27.5 C195.65,7 195.85,8.15 192.05,7.65 C189.75,7.35 187.25,8.15 186.7,9.4 C186.15,10.65 185.1,45.55 185.55,46.9 C186.1,48.35 187.6,48.95 190.9,48.95 C193.45,49 193.6,48.95 194.2,47.4 L194.2,47.4 Z\\" id=\\"Shape\\"></path>
+            </g>
+            <g id=\\"Group\\" transform=\\"translate(24.000000, 194.000000)\\" fill=\\"#5E6063\\" sketch:type=\\"MSShapeGroup\\">
+                <path d=\\"M3.5,14.3 C3.5,13.6 11.1,2.3 11.95,1.8 C12.15,1.65 12.3,2 12.3,2.5 C12.3,3.6 5.05,14.6 4.15,14.9 C3.8,15 3.5,14.75 3.5,14.3 L3.5,14.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M17.45,13.85 C16.1,12.7 15.2,11 16,11 C16.75,11 19.05,13.55 18.75,14.05 C18.55,14.3 18.7,14.5 18.95,14.5 C19.25,14.5 19.5,14.25 19.5,13.95 C19.5,13.65 19.85,13.55 20.3,13.7 C20.8,13.9 21.5,13.45 22.35,12.5 C23.7,10.85 24.5,10.6 24.5,11.7 C24.5,12.75 21.35,15 19.95,15 C19.3,14.95 18.15,14.45 17.45,13.85 L17.45,13.85 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M33.5,14.25 C33.5,13.75 34.25,13.5 36.4,13.4 C38.9,13.25 39.25,13.1 39.4,12.15 C39.5,11.3 39.3,11 38.65,10.95 C37.85,10.95 37.85,10.9 38.75,10.5 C39.35,10.25 39.45,10.05 39.05,10.05 C38.65,10 38.45,9.9 38.6,9.75 C39,9.3 40.5,10.05 40.2,10.55 C40.05,10.8 40.2,11 40.45,11 C40.75,11 41,11.45 41,12 C41,12.55 40.75,13 40.4,13 C40.1,13 39.95,13.15 40.15,13.3 C40.3,13.5 40.15,13.95 39.75,14.3 C38.8,15.3 33.5,15.25 33.5,14.25 L33.5,14.25 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M45.05,13.55 C43.5,12.15 43.05,11 44,11 C44.3,11 45.15,11.75 45.95,12.65 C47.15,13.95 47.55,14.15 48.05,13.65 C48.8,12.9 49.7,12.8 49.25,13.5 C49.05,13.8 49.3,13.85 49.85,13.65 C50.55,13.45 50.6,13.5 50.2,13.95 C49.05,15.2 46.7,15 45.05,13.55 L45.05,13.55 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M66.75,13.7 C65.8,12.8 65.55,12.25 65.9,11.9 C66.25,11.55 66.75,11.7 67.55,12.45 C68.85,13.65 69.6,13.75 71.1,12.95 C71.85,12.55 72.05,12.55 71.8,12.95 C71.6,13.25 71.7,13.5 72,13.5 C72.35,13.5 72.25,13.8 71.8,14.25 C70.65,15.4 68.3,15.15 66.75,13.7 L66.75,13.7 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M96.6,14.25 C96.4,13.95 95.85,13.55 95.35,13.35 C94,12.85 93.35,10.65 94,8.7 C94.95,5.9 97.85,4.75 100.7,6.05 C102.15,6.75 102.9,8.4 103.1,11.5 C103.2,13.65 103.15,13.75 101.8,13.85 C101,13.9 100.2,14.15 100.05,14.35 C99.6,15 97,14.95 96.6,14.25 L96.6,14.25 Z M101.5,10.3 C101.5,6.25 95.75,5.75 95.4,9.8 C95.25,11.7 95.75,12.45 97.65,13.25 C98.95,13.8 99.3,13.75 100.3,12.85 C101.05,12.2 101.5,11.25 101.5,10.3 L101.5,10.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M115.75,13.95 C115.55,13.4 114.75,11.85 114,10.6 C112.25,7.75 111.55,5.25 112.55,5.6 C113.45,5.85 115.55,10 115.3,11 C115.2,11.45 115.5,11.85 116,11.85 C116.6,11.9 117.4,10.9 118.5,8.7 C119.7,6.3 120.3,5.6 120.7,6 C121.1,6.4 120.65,7.65 119.05,10.8 C117.85,13.1 116.65,15 116.45,15 C116.25,15 115.9,14.55 115.75,13.95 L115.75,13.95 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M126.5,14.25 C126.15,13.85 125.6,13.5 125.2,13.5 C124.15,13.5 123.25,11.45 124.05,10.95 C124.55,10.65 125,11 125.5,12.05 C125.95,12.85 126.45,13.4 126.65,13.2 C126.85,13 127,13.05 127,13.35 C127,13.65 127.55,13.9 128.25,13.9 C128.95,13.9 129.45,13.8 129.3,13.65 C129.1,13.45 131.35,11 131.7,11 C131.8,11 132,11.9 132.1,13 C132.2,14.1 132.1,15 131.9,15 C131.65,15 131.5,14.55 131.5,14 C131.5,13.45 131.15,13 130.7,13 C130.3,13 130.05,13.15 130.15,13.4 C130.9,14.55 127.45,15.4 126.5,14.25 L126.5,14.25 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M139.35,14.65 C139.2,14.4 139.15,12.35 139.2,10.05 C139.25,7.2 139.45,5.75 139.9,5.65 C140.35,5.45 140.5,6.55 140.5,9.95 C140.5,13.9 140.05,15.8 139.35,14.65 L139.35,14.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M144.1,13.2 C142.5,11.5 142.1,10.5 143,10.5 C143.3,10.5 143.5,10.25 143.5,9.95 C143.5,9.7 143.3,9.6 143,9.75 C142.75,9.9 142.5,9.6 142.5,9.05 C142.5,7.8 145.25,5.5 146.8,5.5 C148.7,5.5 151,6.9 151,8 C151,9.3 150.7,9.25 148.9,7.75 C147.4,6.5 147.4,6.5 145.8,7.4 C143.85,8.55 143.45,10.95 144.95,12.45 C145.55,13.05 146,13.75 146,14 C146,14.3 146.55,14.15 147.25,13.7 C147.9,13.3 148.7,13.05 149,13.25 C149.3,13.45 149.5,13.4 149.45,13.15 C149.3,12.5 150.05,11 150.55,11 C150.8,11 151,11.65 151,12.45 C151,13.75 150.85,13.9 149.55,13.8 C148.6,13.75 148.2,13.9 148.35,14.3 C148.5,14.75 148.1,14.9 147.1,14.9 C146.15,14.85 145.15,14.3 144.1,13.2 L144.1,13.2 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M156.35,14.1 C155.85,13.6 155.5,12.8 155.5,12.35 C155.5,11.85 155.25,11.65 154.75,11.8 C154.15,12.05 154,11.7 154,10.25 C154,9.2 154.2,8.55 154.5,8.75 C154.75,8.9 154.85,8.75 154.7,8.35 C154.3,7.3 156.85,5.5 158.7,5.5 C162,5.5 163.9,8.55 163.25,12.9 C162.95,14.75 162.8,15.05 162.4,14.3 C161.95,13.5 161.8,13.5 160.8,14.2 C159.9,14.75 159.5,14.8 159.05,14.35 C158.65,13.95 158.5,13.95 158.5,14.4 C158.5,15.3 157.25,15.1 156.35,14.1 L156.35,14.1 Z M160.65,12.5 C161.65,11.7 161.85,11.15 161.7,10.1 C161.15,7.25 158.75,6 156.75,7.6 C155.2,8.8 155.1,11.1 156.5,12.5 C157.75,13.75 159,13.75 160.65,12.5 L160.65,12.5 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M166.35,14 C165.25,12.9 166.05,12.2 167.45,13.1 C168.2,13.55 168.6,13.55 169.15,13.1 C170.1,12.3 170.55,12.9 169.85,14.05 C169.1,15.25 167.55,15.2 166.35,14 L166.35,14 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M180,14.45 C180,14.2 180.25,14.1 180.6,14.3 C180.95,14.5 181,14.45 180.8,14.05 C180.5,13.6 180.25,13.6 179.75,14 C178.6,14.95 176.5,12.5 176.5,10.25 C176.5,6.15 181.6,3.9 184.25,6.8 C184.95,7.55 185.5,8.35 185.5,8.55 C185.5,9.4 184.25,9 183.1,7.8 C181.9,6.5 181.4,6.45 179.65,7.4 C177.25,8.75 177.6,12.1 180.25,13.2 C181.9,13.9 182.05,13.9 183.25,12.75 C184.65,11.3 185.5,11.15 185.2,12.4 C184.75,14.05 180,15.95 180,14.45 L180,14.45 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M188.65,14.65 C188.2,14.5 188,13.1 188,10.1 L188,5.75 L191.25,5.65 C194,5.6 194.75,5.75 195.8,6.7 C196.95,7.65 197.15,8.3 197.4,11.45 C197.6,14.45 197.5,15.1 196.95,14.9 C196.55,14.75 196.2,13.85 196.1,12.7 C195.85,8.6 194.9,7 192.8,7 C190.6,7 189.75,8.2 189.5,11.65 C189.3,13.9 189.05,14.8 188.65,14.65 L188.65,14.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M236,13.9 C236,12.95 235.9,12.9 235.5,13.5 C235.1,14.1 235,14.05 235,13.25 C235,12.65 235.3,11.9 235.65,11.55 C236.15,11 236.1,10.95 235.6,11.25 C235.1,11.5 234.95,11.35 235.05,10.7 C235.45,7.9 233.05,6.2 230.8,7.7 C229.7,8.4 229.55,8.4 229.3,7.7 C229.15,7.25 229,6.65 229,6.35 C229,5.45 233.35,5.35 234.6,6.2 C235.5,6.85 235.85,6.85 237.05,6.2 C237.8,5.85 238.95,5.5 239.5,5.5 C240.7,5.5 243.5,8.2 243.5,9.3 C243.5,10.4 242.85,10.1 241.55,8.5 C240.2,6.75 238.55,6.55 237.25,8 C236.55,8.8 236.35,9.7 236.45,12 C236.5,13.65 236.45,15 236.3,15 C236.1,15 236,14.5 236,13.9 L236,13.9 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M257.35,14.65 C257.15,14.5 257,13.25 257,11.95 C257,8.9 256.65,8.1 255,7.25 C253.8,6.65 253.5,6.65 252.05,7.55 C250.05,8.75 250,8.75 250,7.15 C250,5.8 250.15,5.75 252.7,5.6 C254.95,5.5 255.65,5.65 256.8,6.65 C258.05,7.75 258.25,8.3 258.4,11.45 C258.6,14.7 258.3,15.6 257.35,14.65 L257.35,14.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M263.5,14.4 C263.5,14.2 263.15,14 262.75,14 C262.35,14 261.7,13.35 261.25,12.5 C260.35,10.8 260.2,7.25 261.05,7.8 C261.4,8 261.4,7.75 261,7 C260.7,6.4 260.55,5.8 260.7,5.6 C260.85,5.45 261,5.6 261,5.95 C261,6.3 261.25,6.4 261.5,6.25 C261.8,6.05 262,6.9 262,8.5 C262,10.55 262.25,11.3 263.25,12.25 C263.9,12.95 264.7,13.5 265,13.5 C265.3,13.5 265.4,13.75 265.25,14 C264.65,14.95 265.35,14.5 267.45,12.55 C268.7,11.4 269.35,10.45 269.05,10.25 C268.75,10.1 268.5,9.55 268.55,9.1 C268.55,8.4 268.65,8.45 268.95,9.25 C269.35,10.2 269.4,10.15 269.6,9 C269.75,8.3 269.9,8.8 269.95,10.25 C269.95,11.65 269.85,13.25 269.7,13.9 C269.35,15.05 269.35,15.05 268.65,14 C268.25,13.45 267.7,13 267.4,13 C267.1,13 266.95,13.15 267.15,13.3 C267.3,13.5 267.15,13.95 266.75,14.3 C266.05,15 263.5,15.1 263.5,14.4 L263.5,14.4 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M273.4,13.8 C272.65,12.75 272.65,12.4 273.25,10.45 L273.95,8.25 L273.95,10.65 C274,13.15 274.9,14.15 276.2,13.05 C277.1,12.3 277.55,12.95 276.85,14.05 C276.05,15.35 274.45,15.2 273.4,13.8 L273.4,13.8 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M281.25,13.4 C279.55,11.8 280.15,11.6 282.75,12.85 C284.25,13.55 284.7,13.6 285.6,13.05 C286.15,12.7 286.45,12.65 286.25,12.95 C286.1,13.25 286.2,13.5 286.5,13.5 C286.85,13.5 286.75,13.8 286.3,14.25 C285.2,15.4 282.9,15 281.25,13.4 L281.25,13.4 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M291.5,14.2 C291.5,13.6 292.05,13.45 294.25,13.55 C295.75,13.6 297.15,13.5 297.35,13.25 C297.6,13.05 297.45,13 297.15,13.2 C296.7,13.45 296.6,13.3 296.8,12.8 C296.95,12.4 297.5,12.1 298,12.15 C298.8,12.2 298.8,12.3 297.85,13.6 C296.95,14.85 296.5,15 294.15,15 C292.05,15 291.5,14.85 291.5,14.2 L291.5,14.2 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M135,7.85 C135,2.2 135.1,1.15 135.75,1.15 C136.4,1.15 136.5,2.2 136.45,7.85 C136.4,13.1 136.25,14.5 135.7,14.5 C135.15,14.5 135,13.15 135,7.85 L135,7.85 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M173.2,13.85 C172.7,12.45 173.25,5.85 173.9,5.6 C174.4,5.45 174.55,6.35 174.45,9.7 C174.35,13.75 173.85,15.5 173.2,13.85 L173.2,13.85 Z\\" id=\\"Shape\\"></path>
+                <path id=\\"Shape\\" d=\\"M77.65,11.5 C77.65,10 77.75,9.35 77.85,10.15 C77.95,10.9 77.95,12.1 77.85,12.9 C77.75,13.65 77.65,13 77.65,11.5 L77.65,11.5 Z\\"></path>
+                <path d=\\"M242.85,13.65 C242.4,13.2 242.4,11.5 242.9,11.5 C243.1,11.5 243.25,12.05 243.25,12.75 C243.25,13.45 243.25,14 243.2,14 C243.2,14 243,13.85 242.85,13.65 L242.85,13.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M218,11.25 C218,8.65 216.75,7 214.75,7 C212.95,7 211.15,8.95 211.45,10.65 C211.45,10.85 211.3,11 211.05,11 C210.8,11 210.45,11.4 210.35,11.9 C210.15,12.6 210.1,12.55 210.05,11.75 C210.05,11.15 210.3,10.4 210.65,10.05 C211.15,9.5 211.15,9.35 210.65,9.15 C209.85,8.85 209.8,6.7 210.6,6.2 C210.9,6 212.4,5.75 213.85,5.65 C216.25,5.45 216.65,5.55 218,6.95 C219.2,8.15 219.5,8.85 219.5,10.65 C219.5,12.2 219.25,13 218.75,13.2 C218.15,13.4 218,13 218,11.25 L218,11.25 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M65.05,10.4 C65.05,9.65 65.25,8.9 65.5,8.75 C65.8,8.55 65.9,8.25 65.75,8.05 C65.2,7.15 67.65,5.75 69.7,5.75 C71.85,5.75 72.85,6.35 73.9,8.35 C74.7,9.8 74.65,10 73.65,10 C72.9,10 72.85,9.9 73.5,9.5 C74,9.2 74.05,9 73.65,9 C73.3,9 72.55,8.55 72,8 C71.45,7.45 70.4,7 69.65,7 C67.95,7.05 65.65,8.95 65.35,10.55 C65.15,11.7 65.15,11.65 65.05,10.4 L65.05,10.4 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M90.1,10.75 C90.25,8.95 89.5,7.6 88,7.05 C86.7,6.6 86.4,6.7 85.55,7.8 C84.4,9.25 83.9,9.3 82.8,8.05 C81.55,6.65 80.2,6.5 79.05,7.55 C77.35,9.1 76.75,8.8 77.3,6.75 C77.5,5.85 77.95,5.7 80.1,5.75 C81.8,5.75 82.8,6.05 83.2,6.6 C83.75,7.3 83.9,7.3 84.95,6.45 C87.7,4.25 91.5,6.2 91.5,9.85 C91.5,11.1 91.35,11.5 91.05,11.05 C90.7,10.5 90.55,10.5 90.3,11.05 C90.15,11.45 90.05,11.35 90.1,10.75 L90.1,10.75 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M279.65,9.75 C280,7.4 281.9,5.5 283.9,5.5 C285.35,5.5 288.5,7.2 288.5,7.95 C288.5,8.2 288.65,8.75 288.8,9.2 C289,9.75 288.85,10 288.3,10 C287.85,10 287.5,9.7 287.5,9.35 C287.5,8.25 285.8,7 284.35,7 C283.6,7 282.55,7.45 282,8 C281.45,8.55 280.7,9 280.4,9 C279.95,9 280,9.15 280.5,9.5 C281.15,9.9 281.15,10.1 280.3,10.85 C279.4,11.7 279.4,11.7 279.65,9.75 L279.65,9.75 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M54.3,9.65 C54.15,8.85 54.2,6.7 54.45,4.75 C54.9,1.35 54.9,1.35 54.85,4.05 L54.75,6.85 L55.9,6.1 C57.4,5.15 60.45,5.65 61.65,7.05 C62.1,7.65 62.5,8.3 62.5,8.55 C62.5,9.25 61.1,9.1 60.65,8.35 C59.9,7.05 58.4,6.55 57.05,7.15 C55.35,7.9 54.6,8.95 54.9,10.1 C55,10.6 55,11 54.85,11 C54.7,11 54.45,10.4 54.3,9.65 L54.3,9.65 Z\\" id=\\"Shape\\"></path>
+                <path id=\\"Shape\\" d=\\"M1.15,7.5 C1.15,5.7 1.25,5 1.35,5.9 C1.45,6.75 1.45,8.25 1.35,9.15 C1.25,10 1.15,9.3 1.15,7.5 L1.15,7.5 Z\\"></path>
+                <path d=\\"M124.15,9.65 C122.3,9 125.55,5.5 127.95,5.5 C130.1,5.5 132.65,7.5 132.15,8.85 C131.95,9.3 131.4,9.1 130.15,8 C128.5,6.55 128.4,6.5 126.95,7.25 C126.15,7.7 125.3,8.45 125.1,8.95 C124.9,9.45 124.45,9.75 124.15,9.65 L124.15,9.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M33.85,9.15 C33.25,8.6 33.45,7.15 34.2,6.55 C34.65,6.15 35.25,6.15 36.05,6.45 L37.25,6.95 L36.15,6.95 C35.25,7 35,7.3 35,8.25 C35,9.45 34.5,9.85 33.85,9.15 L33.85,9.15 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M44.15,8.75 C42.85,7.35 46.65,5.05 49.15,5.7 C51.15,6.25 51.8,6.9 51.1,7.6 C50.65,8.05 50.35,8.05 49.9,7.6 C48.9,6.6 46.65,6.9 45.65,8.2 C44.9,9.1 44.6,9.2 44.15,8.75 L44.15,8.75 Z\\" id=\\"Shape\\"></path>
+                <path id=\\"Shape\\" d=\\"M273.65,5.5 C273.65,4 273.75,3.35 273.85,4.15 C273.95,4.9 273.95,6.1 273.85,6.9 C273.75,7.65 273.65,7 273.65,5.5 L273.65,5.5 Z\\"></path>
+                <path d=\\"M15.5,5.55 C15.5,3.5 18.65,1.3 20.85,1.8 C22.45,2.2 24.5,3.85 24.5,4.85 C24.5,5.9 23.5,5.6 22.4,4.25 C21.85,3.55 21.1,3 20.75,3 C19.45,3 17.5,4.15 17.25,5.1 C16.95,6 15.5,6.4 15.5,5.55 L15.5,5.55 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M139.25,3 C139.05,2.7 139.1,2.2 139.4,1.9 C139.7,1.6 140,1.6 140.25,2 C140.45,2.3 140.4,2.8 140.1,3.1 C139.8,3.4 139.5,3.4 139.25,3 L139.25,3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M173.25,3 C173.05,2.7 173.1,2.2 173.4,1.9 C173.7,1.6 174,1.6 174.25,2 C174.45,2.3 174.4,2.8 174.1,3.1 C173.8,3.4 173.5,3.4 173.25,3 L173.25,3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M245.75,3 C245.55,2.7 245.6,2.2 245.9,1.9 C246.2,1.6 246.5,1.6 246.75,2 C246.95,2.3 246.9,2.8 246.6,3.1 C246.3,3.4 246,3.4 245.75,3 L245.75,3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M135,2 C135,1.45 135.35,1 135.75,1 C136.15,1 136.5,1.45 136.5,2 C136.5,2.55 136.15,3 135.75,3 C135.35,3 135,2.55 135,2 L135,2 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M206.5,2.55 C206.5,1.95 206.75,1.5 207,1.5 C207.3,1.5 207.5,1.8 207.5,2.2 C207.5,2.6 207.3,3.1 207,3.25 C206.75,3.4 206.5,3.1 206.5,2.55 L206.5,2.55 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M10.5,3.85 C10.5,3.45 10.95,2.75 11.5,2.25 C12.45,1.35 12.5,1.4 12.5,2.3 C12.5,3.3 11.65,4.5 10.9,4.5 C10.7,4.5 10.5,4.2 10.5,3.85 L10.5,3.85 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M260.5,7.45 C260.5,4.85 261.7,5.05 261.9,7.65 C262,9.05 261.85,9.5 261.3,9.5 C260.7,9.5 260.5,8.95 260.5,7.45 L260.5,7.45 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M49.65,7.25 C49.5,6.8 49.5,6.35 49.6,6.2 C50.05,5.75 51.5,6.6 51.5,7.3 C51.5,8.25 50.05,8.2 49.65,7.25 L49.65,7.25 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M126.5,6.35 C126.5,5.6 126.85,5.45 128.1,5.6 C130.45,5.8 130.6,7.25 128.25,7.25 C126.9,7.25 126.5,7.05 126.5,6.35 L126.5,6.35 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M139,6.5 C139,5.95 139.35,5.5 139.75,5.5 C140.15,5.5 140.5,5.95 140.5,6.5 C140.5,7.05 140.15,7.5 139.75,7.5 C139.35,7.5 139,7.05 139,6.5 L139,6.5 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M0.4,14.15 C0.3,13.65 0.25,10.7 0.25,7.65 C0.25,-0.5 1.2,0.1 1.4,8.4 C1.45,12.15 1.35,15 1.05,15 C0.8,15 0.55,14.6 0.4,14.15 L0.4,14.15 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M17.1,13.55 C15.55,12.1 15.5,11.9 15.5,8.25 C15.5,4.9 15.65,4.3 16.7,3.25 C17.35,2.6 18.45,1.9 19.1,1.75 C20.65,1.35 23,2.25 23,3.25 C23,3.65 23.35,4 23.75,4 C24.35,4 24.5,4.8 24.5,8.25 C24.5,11.7 24.35,12.5 23.75,12.5 C23.35,12.5 23,12.75 23,13.05 C23,13.95 21.4,14.95 20,15 C19.25,15 18.05,14.35 17.1,13.55 L17.1,13.55 Z M22.35,12.4 C23.25,11.55 23.5,10.8 23.5,8.65 C23.5,5.6 22.95,4.3 21.45,3.45 C19.35,2.35 16.55,4.55 16.75,7.25 C16.8,7.8 16.85,9 16.9,9.9 C17.1,13.1 20.1,14.5 22.35,12.4 L22.35,12.4 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M38.5,14.3 C38.5,13.9 38.75,13.4 39,13.25 C39.3,13.1 39.5,12.5 39.5,12 C39.5,11.1 38.8,10.85 35,10.35 C34.6,10.3 34.05,9.65 33.8,8.9 C33.05,6.75 34.55,5.4 37.45,5.6 C40.25,5.8 40.5,6.55 37.85,6.8 C35.5,7 35,7.3 35,8.55 C35,9.35 35.35,9.5 37.2,9.5 C40.7,9.5 42.05,11.6 40.05,13.9 C39,15.2 38.5,15.3 38.5,14.3 L38.5,14.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M45.05,13.65 C43.6,12.4 43.45,12 43.6,10.05 C43.7,8.65 44.05,7.65 44.6,7.3 C45.85,6.55 46.2,7.25 45.25,8.7 C43.6,11.2 46.1,14.1 49.05,13.05 C51.9,12.05 52.5,12.7 50.05,14.15 C48.05,15.35 47,15.2 45.05,13.65 L45.05,13.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M53.5,8.05 C53.5,4.2 53.7,0.95 53.95,0.8 C54.6,0.4 55,1.75 55,4.3 C55,6.4 55.05,6.5 56,6 C57.4,5.25 59.7,5.55 59.9,6.55 C60,7.15 59.7,7.3 58.65,7.15 C56.3,6.8 55.1,8.25 54.8,11.75 C54.65,13.4 54.55,14.8 54.55,14.9 C54.5,14.95 54.3,15 54,15 C53.7,15 53.5,12.35 53.5,8.05 L53.5,8.05 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M61.5,12.1 C61.5,10.5 61.25,8.95 60.9,8.6 C60.15,7.85 60.7,7.3 61.75,7.65 C62.3,7.9 62.5,8.8 62.5,11.5 C62.5,13.5 62.3,15 62,15 C61.7,15 61.5,13.7 61.5,12.1 L61.5,12.1 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M67.2,14.1 C64.6,12 64.45,8.4 66.85,6.5 C68.35,5.3 70,5.2 70,6.25 C70,6.65 69.6,7 69.1,7 C68.2,7 66.5,8.45 66.5,9.15 C66.5,9.35 68.1,9.5 70.05,9.5 L73.65,9.5 L72.3,8.25 C70.8,6.85 70.6,5.85 71.9,6.1 C72.75,6.25 74.95,9.7 74.5,10.2 C74.35,10.35 72.75,10.5 70.9,10.55 C66.7,10.7 66.05,11.05 67.55,12.45 C68.9,13.7 69.55,13.75 71.5,12.75 C73.3,11.8 73.6,12.75 72,14.15 C70.7,15.25 68.55,15.2 67.2,14.1 L67.2,14.1 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M76.5,10.35 L76.5,5.7 L79.15,5.65 C80.65,5.6 82.25,5.9 82.9,6.3 C83.9,6.95 84.15,6.95 85.1,6.25 C86.55,5.3 88.5,5.25 88.5,6.25 C88.5,6.7 88.05,7 87.3,7 C85.45,7 84.5,8.75 84.5,12.1 C84.5,13.7 84.3,15 84,15 C83.7,15 83.5,13.6 83.5,11.85 C83.5,8.4 82.65,7 80.6,7 C78.9,7 78,8.35 78,11 C78,13.65 77.65,15 76.95,15 C76.7,15 76.5,12.9 76.5,10.35 L76.5,10.35 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M90.3,13.4 C89.6,9 89.65,8 90.6,8 C91.4,8 91.5,8.45 91.5,11.5 C91.5,15.1 90.75,16.25 90.3,13.4 L90.3,13.4 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M95.5,13.5 C94.15,12.4 93.95,12.05 94.65,12 C95.15,12 96.1,12.35 96.8,12.8 C97.9,13.55 98.3,13.55 100,13 C102.4,12.2 103.5,12.55 103.15,14.05 C102.9,14.9 102.8,15 102.45,14.35 C102,13.55 100,13.75 100,14.55 C100,15.6 97.1,14.9 95.5,13.5 L95.5,13.5 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M125.8,14 C123.9,12.8 123.5,12.1 123.5,9.9 C123.5,8.35 123.7,8 124.5,8 C125.3,8 125.4,8.2 125.05,9.15 C124.45,10.65 125.65,12.9 127.25,13.3 C129.65,13.9 132.65,10.45 131.05,8.85 C130.25,8.05 130.35,7 131.25,7 C132.25,7 132.7,9.1 132.55,13.15 C132.5,14.85 131.5,15.95 131.5,14.25 C131.5,13.85 131.3,13.5 131.05,13.5 C130.8,13.5 130.25,13.85 129.8,14.25 C128.85,15.25 127.6,15.15 125.8,14 L125.8,14 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M135.3,14.65 C135.15,14.5 135,13.45 135,12.4 C135,11.05 135.2,10.5 135.75,10.5 C136.3,10.5 136.5,11.05 136.5,12.45 C136.5,14.35 136,15.3 135.3,14.65 L135.3,14.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M139.3,14.65 C138.7,14 139,12 139.75,12 C140.2,12 140.5,12.45 140.5,13.2 C140.5,14.5 139.9,15.2 139.3,14.65 L139.3,14.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M145.25,14.5 C142.65,12.15 142.5,11.95 142.5,10 C142.5,8.4 142.7,8 143.4,8 C144.15,8 144.25,8.3 144.1,9.7 C143.85,11.65 145.3,13.5 147,13.5 C148.3,13.5 150.5,11.35 150.5,10.1 C150.5,8.65 148.25,6.85 146.8,7.1 C145.75,7.3 145.5,7.15 145.5,6.4 C145.5,5.55 145.75,5.45 147.15,5.6 C148,5.75 149.15,6 149.65,6.25 C150.4,6.55 150.5,6.3 150.5,3.8 C150.5,2.25 150.75,1 151,1 C151.3,1 151.5,3.65 151.5,8 C151.5,12.35 151.3,15 151,15 C150.75,15 150.5,14.7 150.5,14.3 C150.5,13.85 150.15,13.7 149.5,13.85 C148.95,14 148.5,14.3 148.5,14.55 C148.5,15.15 145.9,15.1 145.25,14.5 L145.25,14.5 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M155.6,13.55 C154.45,12.45 154,11.6 154,10.5 C154,8.6 154.8,7 155.7,7 C156.1,7 156.5,6.65 156.7,6.25 C156.85,5.8 157.6,5.5 158.5,5.5 C159.5,5.5 160,5.75 160,6.25 C160,6.75 159.5,7 158.6,7 C155.75,7 154.45,10.45 156.5,12.5 C158.5,14.5 161.7,12.95 161.6,10.1 C161.6,9.1 161.8,8.5 162.25,8.5 C163.4,8.5 163.9,11.25 163.2,13.9 C162.85,15.05 162.85,15.05 162.15,14 C161.25,12.75 160.7,12.75 160.35,14 C159.95,15.55 157.55,15.3 155.6,13.55 L155.6,13.55 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M166.4,14.05 C165.65,13.3 165.5,12.25 165.5,7.6 C165.5,4.45 165.7,1.95 166,1.75 C166.3,1.55 166.5,2.25 166.5,3.45 C166.5,5.4 166.6,5.5 168,5.5 C168.85,5.5 169.5,5.75 169.5,6 C169.5,6.3 168.8,6.5 168,6.5 L166.45,6.5 L166.55,9.55 C166.65,11.9 166.85,12.7 167.6,13.15 C168.6,13.8 168.8,15 167.9,14.95 C167.55,14.95 166.85,14.55 166.4,14.05 L166.4,14.05 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M173.3,14.2 C172.75,12.8 173,11.5 173.75,11.5 C174.25,11.5 174.5,12 174.5,12.95 C174.5,14.65 173.75,15.4 173.3,14.2 L173.3,14.2 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M179.15,14.4 C177.85,13.75 177.55,12.2 178.8,12.7 C181.25,13.65 182.1,13.6 183.3,12.45 C184.8,11.05 184.85,9.55 183.45,8.05 C182.6,7.15 182,6.95 180.65,7.15 C179.25,7.4 178.95,7.3 179.1,6.6 C179.35,5.35 182.5,5.2 183.95,6.35 C185.3,7.45 186,10.25 185.4,12 C184.95,13.3 182.5,15 181.1,14.95 C180.65,14.95 179.75,14.7 179.15,14.4 L179.15,14.4 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M188.35,14.65 C187.75,14.1 187.95,13.5 188.75,13.5 C189.15,13.5 189.5,13.85 189.5,14.25 C189.5,15.05 188.9,15.25 188.35,14.65 L188.35,14.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M196.35,14.65 C195.7,14.05 196,12.5 196.75,12.5 C197.2,12.5 197.5,12.95 197.5,13.75 C197.5,14.95 197,15.35 196.35,14.65 L196.35,14.65 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M206.5,10.25 C206.5,7.4 206.7,5.5 207,5.5 C207.3,5.5 207.5,7.4 207.5,10.25 C207.5,13.1 207.3,15 207,15 C206.7,15 206.5,13.1 206.5,10.25 L206.5,10.25 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M210.35,14.05 C209.95,12.4 210.25,5.85 210.75,5.7 C211.05,5.6 211.6,5.75 212,6 C212.6,6.35 212.6,6.7 212.1,8.15 C211.75,9.05 211.5,11 211.5,12.4 C211.5,14.95 210.85,15.9 210.35,14.05 L210.35,14.05 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M218.3,13.85 C217.75,11.8 217.95,10 218.75,10 C219.3,10 219.5,10.6 219.5,12.2 C219.5,14.65 218.8,15.65 218.3,13.85 L218.3,13.85 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M228.5,10.2 C228.5,6 228.6,5.45 229.3,5.7 C229.75,5.85 230.3,6 230.55,6 C231.25,6 231.1,7.3 230.25,8 C229.75,8.45 229.5,9.6 229.5,11.8 C229.5,13.6 229.3,15 229,15 C228.7,15 228.5,13.05 228.5,10.2 L228.5,10.2 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M235.3,13.9 C235.15,13.25 234.95,11.7 234.9,10.4 C234.75,8.3 234.85,8 235.75,8 C236.65,8 236.75,8.25 236.6,11.5 C236.4,14.9 235.75,16.15 235.3,13.9 L235.3,13.9 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M242,12.2 C242,10.7 241.75,9 241.5,8.45 C241.1,7.7 241.15,7.5 241.65,7.5 C242.9,7.5 243.55,8.8 243.45,11.1 C243.35,13.8 243.05,15 242.45,15 C242.2,15 242,13.75 242,12.2 L242,12.2 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M245.85,14.3 C245.3,12.9 245.45,6.1 246,5.75 C246.3,5.6 246.5,5.85 246.55,6.35 C246.55,6.85 246.7,8.5 246.8,10.05 C247.05,13.2 246.45,15.85 245.85,14.3 L245.85,14.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M249.45,12.9 C249.4,11.7 249.35,9.65 249.3,8.3 C249.25,5.65 249.9,4.95 251.2,6.25 C251.9,7 252,7 252,6.3 C252,5.7 252.5,5.5 253.75,5.5 C255.1,5.5 255.5,5.7 255.5,6.45 C255.5,7.15 255.2,7.3 254.25,7.1 C253.55,7 252.45,7.25 251.75,7.7 C250.65,8.45 250.5,8.9 250.5,11.5 C250.5,14.9 249.55,16.2 249.45,12.9 L249.45,12.9 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M263.35,14.3 C262.95,13.3 263.4,13 264.95,13.3 C267.25,13.75 268.5,12 268.5,8.45 C268.5,6.25 268.65,5.45 269.15,5.6 C269.8,5.85 270.25,11.85 269.75,13.95 C269.5,15 269.4,15.05 268.85,14.3 C268.2,13.45 266.5,13.65 266.5,14.55 C266.5,15.3 263.65,15.05 263.35,14.3 L263.35,14.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M281.15,13.25 C280.25,12.3 279.5,11.15 279.5,10.65 C279.5,8.75 280.15,7.5 281.1,7.5 C281.9,7.5 281.95,7.65 281.5,8.5 C281,9.45 281.1,9.5 284.25,9.5 C286.05,9.5 287.5,9.3 287.5,9.1 C287.5,8.4 285.75,7 284.85,7 C284.4,7 284,6.65 284,6.25 C284,4.1 288.2,6.6 288.8,9.15 L289.1,10.5 L285.35,10.5 C283.25,10.5 281.45,10.7 281.25,10.95 C280.85,11.6 283,13.5 284.1,13.5 C284.6,13.5 285.55,13.15 286.2,12.7 C287.15,12.1 287.5,12.1 287.8,12.55 C288,12.9 287.9,13.3 287.6,13.4 C287.25,13.5 286.65,13.9 286.3,14.3 C285.05,15.5 282.9,15.1 281.15,13.25 L281.15,13.25 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M295,14.3 C295,13.95 295.45,13.5 296.05,13.35 C296.8,13.15 297.05,12.75 296.9,11.95 C296.8,11 296.4,10.8 294.65,10.7 C293.5,10.65 292.3,10.45 292.05,10.25 C291.3,9.8 291.35,6.85 292.1,6.1 C292.8,5.4 297.5,5.3 297.5,6 C297.5,6.3 296.9,6.5 296.15,6.5 C293.55,6.5 292.5,7.05 292.5,8.3 C292.5,9.4 292.7,9.5 295,9.5 C297.4,9.5 297.55,9.55 297.8,11 C298,11.8 298.35,12.35 298.65,12.15 C298.9,12 298.6,12.55 297.95,13.45 C296.8,15.05 295,15.55 295,14.3 L295,14.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M114.85,12.3 C114.15,11.05 113.75,9.95 113.9,9.8 C114.45,9.2 115.05,9.55 115.6,10.75 C115.9,11.45 116.3,12 116.45,12 C116.65,12 117.5,10.55 118.4,8.75 C119.9,5.65 121,4.6 121,6.25 C121,7.55 119.05,11 118.3,11 C117.9,11 117.45,11.75 117.3,12.75 C117.1,13.7 116.75,14.5 116.5,14.5 C116.3,14.5 115.55,13.5 114.85,12.3 L114.85,12.3 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M272.85,13.15 C272.65,13 272.5,10.4 272.5,7.45 C272.5,1.95 273.2,-0.2 273.8,3.5 C274.05,5.15 274.3,5.5 275.3,5.5 C275.9,5.5 276.55,5.7 276.75,5.95 C277.05,6.5 275.2,7.2 274.55,6.8 C273.9,6.35 273.7,7.85 274,10.9 C274.3,13.35 273.85,14.2 272.85,13.15 L272.85,13.15 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M189.5,6.8 C189.5,6.15 190.9,5.5 192.4,5.5 C193.45,5.5 193.05,6.85 191.9,7.2 C190.1,7.65 189.5,7.55 189.5,6.8 L189.5,6.8 Z\\" id=\\"Shape\\"></path>
+            </g>
+            <g id=\\"Group\\" transform=\\"translate(143.000000, 20.000000)\\" fill=\\"#169AD7\\" sketch:type=\\"MSShapeGroup\\">
+                <path d=\\"M0.6,83.9 L0.75,82.25 L28.75,82.25 L56.75,82.25 L56.9,83.9 L57.05,85.5 L28.75,85.5 L0.45,85.5 L0.6,83.9 L0.6,83.9 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M8.7,74.55 C5.3,72.5 3.45,68.1 2.45,60 C1.85,55 2.15,41.35 3.05,33.8 C3.3,31.6 3.5,23.8 3.5,16.5 C3.55,4.25 3.6,3.15 4.45,2.1 C5.35,1.05 5.75,1 13.45,1 C18.25,1 21.55,1.2 21.75,1.5 C21.9,1.8 22.5,2 23,2 C25.35,2 26.35,5.55 24.5,7.25 C23.65,8.05 22.9,8.1 17.7,7.75 C13.05,7.45 11.8,7.55 11.45,8.05 C11.2,8.45 11,10.65 11,12.95 L11,17.15 L17.15,16.85 C20.55,16.7 23.55,16.75 23.85,16.9 C24.75,17.45 25.45,19.8 25.15,21.05 C24.55,23.25 23.65,23.5 17,23.4 L10.75,23.35 L10.15,31.55 C9.85,36.05 9.4,44.15 9.2,49.55 C8.9,58.85 8.9,59.55 9.95,63.05 C10.6,65.1 11.55,67.3 12.15,67.95 C13.2,69.05 13.45,69.1 17.9,68.75 C21.95,68.5 22.75,68.55 23.55,69.3 C24.9,70.5 24.9,74.25 23.55,75 C23,75.25 19.8,75.5 16.4,75.5 C11.25,75.5 10,75.35 8.7,74.55 L8.7,74.55 Z\\" id=\\"Shape\\"></path>
+                <path d=\\"M39.75,74.2 C33.4,72.35 33.4,72.35 32.45,72.9 C31.15,73.7 28.25,73.65 27.55,72.8 C27.2,72.4 26.95,70.05 26.95,66.95 C26.9,61.35 27.55,58.35 30.5,50.5 C31.35,48.15 32.3,45.45 32.6,44.5 C33.8,40.45 37.3,32.4 42.6,21.6 L48.25,10.1 L44.85,9.85 C40.2,9.45 31.95,7.55 30.9,6.6 C29.75,5.6 29.75,3.85 30.9,2.85 C32.1,1.75 36.35,1.75 41.65,2.75 C46.55,3.7 50.35,3.7 52,2.75 C53.95,1.6 55.9,1.85 57.25,3.3 C59.2,5.4 58.85,6.8 54.75,13.3 C52.7,16.55 50.55,20.65 50,22.35 C49.4,24.05 46.95,29.4 44.5,34.25 C41.45,40.25 39.25,45.5 37.5,50.75 C34.95,58.55 33.4,64.75 33.9,65.25 C34.05,65.4 34.9,65.5 35.8,65.5 C36.7,65.5 39.25,66.2 41.5,67 C46.95,69 47.7,68.95 49.25,66.5 C50.9,63.9 52.15,63.25 54.05,64 C54.85,64.35 55.65,65.15 55.8,65.8 C56.45,68.45 53.7,73.05 50.65,74.3 C48.55,75.2 42.95,75.15 39.75,74.2 L39.75,74.2 Z\\" id=\\"Shape\\"></path>
+            </g>
+        </g>
+    </g>
+</svg>"
+`;
diff --git a/tests/system/example.spec.ts b/tests/system/example.spec.ts
index 9b5a1f38..f392130e 100644
--- a/tests/system/example.spec.ts
+++ b/tests/system/example.spec.ts
@@ -73,10 +73,11 @@ describe('Example', () => {
       });
       expect(response.status).toBe(200);
       const json = await response.json();
-      expect(json).toEqual({
+      expect(json).toMatchObject({
         status: 'success',
         data: {
-          status: "I'll fix it later"
+          name: 'John Doe',
+          timestamp: expect.any(Number)
         }
       });
       expect(out).toMatch(/v1\/setUser/);
@@ -90,13 +91,21 @@ describe('Example', () => {
       expect(json).toEqual({
         status: 'success',
         data: {
-          status: 'Some kind of warning',
+          id: 50,
           name: 'John Doe'
         }
       });
       expect(out).toMatch(/v1\/getUser/);
       expect(out).toMatch(/50, method get/);
     });
+
+    test('Should send an image with a correct header', async () => {
+      const response = await fetch('http://localhost:8090/v1/avatar?userId=123');
+      expect(response.status).toBe(200);
+      expect(response.headers.has('Content-type')).toBeTruthy();
+      expect(response.headers.get('Content-type')).toBe('image/svg+xml; charset=utf-8');
+      expect(await response.text()).toMatchSnapshot();
+    });
   });
 
   describe('Negative', () => {
diff --git a/tests/unit/__snapshots__/open-api.spec.ts.snap b/tests/unit/__snapshots__/open-api.spec.ts.snap
index c0cb67e3..1e39c325 100644
--- a/tests/unit/__snapshots__/open-api.spec.ts.snap
+++ b/tests/unit/__snapshots__/open-api.spec.ts.snap
@@ -293,15 +293,12 @@ paths:
                   data:
                     type: object
                     properties:
-                      status:
-                        type: string
-                        enum:
-                          - That's ok
-                          - Some kind of warning
+                      id:
+                        type: number
                       name:
                         type: string
                     required:
-                      - status
+                      - id
                       - name
                 required:
                   - status
@@ -354,13 +351,13 @@ paths:
                   data:
                     type: object
                     properties:
-                      status:
+                      name:
                         type: string
-                        enum:
-                          - Success
-                          - I'll fix it later
+                      timestamp:
+                        type: number
                     required:
-                      - status
+                      - name
+                      - timestamp
                 required:
                   - status
                   - data
@@ -405,6 +402,30 @@ paths:
                 - id
                 - name
               description: POST /v1/setUser request body
+  /v1/avatar:
+    get:
+      responses:
+        \\"200\\":
+          description: Successful response
+          content:
+            image/svg+xml:
+              schema:
+                type: string
+                description: GET /v1/avatar Successful response
+        \\"400\\":
+          description: Error response
+          content:
+            text/plain:
+              schema:
+                type: string
+                description: GET /v1/avatar Error response
+      parameters:
+        - name: userId
+          in: query
+          required: true
+          schema:
+            type: string
+            description: GET /v1/avatar parameter
 components:
   schemas: {}
   responses: {}
@@ -611,6 +632,92 @@ servers:
 "
 `;
 
+exports[`Open API generator should handle enum types 1`] = `
+"openapi: 3.0.0
+info:
+  title: Testing enums
+  version: 3.4.5
+paths:
+  /v1/getSomething:
+    post:
+      responses:
+        \\"200\\":
+          description: Successful response
+          content:
+            application/json:
+              schema:
+                type: object
+                properties:
+                  status:
+                    type: string
+                    enum:
+                      - success
+                  data:
+                    type: object
+                    properties:
+                      nativeEnum:
+                        type: number
+                        enum:
+                          - 1
+                          - 2
+                    required:
+                      - nativeEnum
+                required:
+                  - status
+                  - data
+                description: POST /v1/getSomething Successful response
+        \\"400\\":
+          description: Error response
+          content:
+            application/json:
+              schema:
+                type: object
+                properties:
+                  status:
+                    type: string
+                    enum:
+                      - error
+                  error:
+                    type: object
+                    properties:
+                      message:
+                        type: string
+                    required:
+                      - message
+                required:
+                  - status
+                  - error
+                description: POST /v1/getSomething Error response
+      requestBody:
+        content:
+          application/json:
+            schema:
+              type: object
+              properties:
+                regularEnum:
+                  type: string
+                  enum:
+                    - ABC
+                    - DEF
+              required:
+                - regularEnum
+              description: POST /v1/getSomething request body
+components:
+  schemas: {}
+  responses: {}
+  parameters: {}
+  examples: {}
+  requestBodies: {}
+  headers: {}
+  securitySchemes: {}
+  links: {}
+  callbacks: {}
+tags: []
+servers:
+  - url: http://example.com
+"
+`;
+
 exports[`Open API generator should handle transformation schema in output 1`] = `
 "openapi: 3.0.0
 info:
diff --git a/tests/unit/open-api.spec.ts b/tests/unit/open-api.spec.ts
index b9c6c69e..ab02c9af 100644
--- a/tests/unit/open-api.spec.ts
+++ b/tests/unit/open-api.spec.ts
@@ -194,6 +194,31 @@ describe('Open API generator', () => {
     expect(spec).toMatchSnapshot();
   });
 
+  test('should handle enum types', () => {
+    const spec = new OpenAPI({
+      routing: {
+        v1: {
+          getSomething: defaultEndpointsFactory.build({
+            method: 'post',
+            input: z.object({
+              regularEnum: z.enum(['ABC', 'DEF']),
+            }),
+            output: z.object({
+              nativeEnum: z.nativeEnum({FEG: 1, XYZ: 2})
+            }),
+            handler: async () => ({
+              nativeEnum: 1
+            })
+          })
+        }
+      },
+      version: '3.4.5',
+      title: 'Testing enums',
+      serverUrl: 'http://example.com'
+    }).getSpecAsYaml();
+    expect(spec).toMatchSnapshot();
+  });
+
   test('should throw on unsupported types', () => {
     [
       z.undefined(),