Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nberlette/migo

Generate dynamic OpenGraph images on Deno's Edge Network
https://github.com/nberlette/migo

api cloudflare-kv deno deno-deploy icns iconify migo og-image opengraph svg svg-to-png

Last synced: about 1 month ago
JSON representation

Generate dynamic OpenGraph images on Deno's Edge Network

Awesome Lists containing this project

README

        



migo


[![Click here for example OpenGraph Images][example-img-0]](#examples "Click
here for example OpenGraph Images")

---


### _Generate dynamic OpenGraph images on Deno's Edge Network_


[![Deploy with Deno][deploy-btn]][deploy]


## Schema

migo.deno.dev/:title.(png|svg)?:params

migo.deno.dev/:title/:subtitle.(png|svg)?:params

migo.deno.dev/:params/:title.(png|svg)

migo.deno.dev/:params/:title/:subtitle.(png|svg)


## Features

- [x] Just-in-time rendered, globally deployed via [**Deno Deploy**][deno]
- [x] Cached as immutable assets via [**Cloudflare**][kv] for fast loads.
- [x] Rendered as **`.svg`**, rasterized to **`.png`** via [**`resvg`**][resvg]
- [x] Integrated with 100,000 icons via [**Iconify**][iconify] + [**icns.ml**][icns]
- [x] [**Parameters**](#parameters) for fine-grained control of image colors,
dimensions, icon, and text.
- [ ] `TODO` create a friendly GUI for image creation ([see vercel][vercel])


## Formats

Every image is initially sculpted as an SVG ([Scalable Vector Graphics][svg]),
and you can optionally add the extension **`.svg`** to force that format in
the response.

Unfortunately most social media platforms don't support social images in SVG
format yet, so requests without an `.{svg,png}` extension are redirected to
`.png` prior to rendering.


## Icons

Icons are embedded from [**icns**][icns], another Deno-powered project of
mine. This means direct access to **over 100,000 icons**, and **millions of
color combinations**. A great tool to browse the available icons and make a
selection is [**icones**][icones] by [Anthony Fu][antfu].

To add an icon to an OG image, use the slug (in Iconify format) for the `icon`
param, like so:

> `icon={collection}:{icon}` (e.g. `?icon=tabler:brand-github`).

You can also use an override `iconUrl` parameter, with an encoded URI you'd
like to embed, e.g.:

> `icon=https%3A%2F%2Fcdn.jsdelivr.net%2Fgh%2Fremojansen%2Flogo.ts%40master%2Fts.svg`


## Parameters

There are numerous parameters you can use to control the look and feel of the
generated images. Parameters can be provided in either the first part of the
path or in the query string of the URL.


### Path (recommended)

For the best caching potential, I recommend only using the path-style
parameters on your images. Some CDN providers have unexpected caching behavior
when assets have query string parameters in their URI.

migo.deno.dev/bgColor=white&titleColor=black&icon=typescript/Title.png

> **Note**: Allowed delimiters are `&` (ampersand), `;` (semi-colon), or `::`.


### Query String

migo.deno.dev/title.png?bgColor=white&titleColor=black&icon=typescript

> **Note**: Query string params **must** use the `&` (ampersand) delimiter.


### Default Values

All available parameters and their default value (or formula used to calculate it):

```jsonc
// base props
width = 1280,
height = 640,
viewBox = "0 0 1280 640",
pxRatio = 1.5, // set to 1 for low-res
bgColor = "white",
borderRadius = 0, // rounded image corners

// icon
icon = "noto:t-rex", // set to false to disable icon
iconUrl = "https://icns.ml/{icon}.svg",
iconW = 240,
iconH = 240, // +iconW
iconX = 520, // ((width - iconW) / 2)
iconY = 60, // (iconH / 4)
iconColor = "black", // fill color
iconStroke = "none", // stroke color
iconStrokeWidth = 0, // stroke width

// title (first line of text)
titleX = 640, // (width / 2)
titleY = 450, // (iconH + iconY + (titleFontSize * 2.5))
titleFontSize = 64,
titleFontFamily = "sans-serif", // "Inter"
titleFontWeight = "bold",
titleColor = "#112233", // text color
titleStroke = "none", // stroke color
titleStrokeWidth = 0, // stroke width
titleTextAnchor = "middle", // text-anchor

// subtitle (second line of text)
subtitleX = 640, // (width / 2)
subtitleY = 530, // (titleY + (subtitleFontSize * 2.5))
subtitleFontSize = 32,
// "serif" | "sans-serif" | "monospace"
subtitleFontFamily = "monospace",
subtitleFontWeight = "normal",
subtitleColor = "#334455", // text color
subtitleStroke = "none", // stroke color
subtitleStrokeWidth = 0, // stroke width
subtitleTextAnchor = "middle" // text-anchor
```

---

## Performance

The only lag you might encounter is the very first time an image is requested
(this is unavoidable due to the render/raster steps). Thankfully, your users
should essentially never be the ones encountering that lag time; they get a
cache hit from their nearest edge datacenter.

---

## Examples

![Deno Module Starter][example-img-4]

![Nuxt Content Wind Starter][example-img-3]

![Creating Dynamic Social Cover Images][example-img-2]

---

[MIT] © [**Nicholas Berlette**][nberlette]

[MIT]: https://github.com/nberlette/migo/blob/main/LICENSE
[nberlette]: https://github.com/nberlette "Nicholas Berlette"
[icns]: https://icns.ml "icns - SVG as a Service"
[antfu]: https://github.com/antfu "Anthony Fu"
[icones]: https://icones.js.org "Browse every Iconify Collection with Icones"
[vercel]: https://og-image.vercel.app "Vercel's OG Image App"
[iconify]: https://iconify.design "Iconify Project Homepage"
[kv]: https://developers.cloudflare.com/workers/runtime-apis/kv "Cloudflare KV"
[svg]: https://w3.org/TR/SVG "SVG Specification from W3.org"
[resvg]: https://deno.land/x/resvg_wasm "Resvg Wasm"
[deno]: https://deno.com/deploy "Deno Deploy"
[deploy]: https://dash.deno.com/new?url=https%3a%2f%2fgithub.com%2fnberlette%2fmigo%2fraw%2fmain%2fmain.tsx "Deploy with Deno!"
[deploy-btn]: data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMzIiIHJvbGU9ImltZyI+CiAgPGRlZnM+CiAgICA8c3R5bGU+CiAgICAgIDwhW0NEQVRBWwogICAgICAuc3QwIHsKICAgICAgICBmaWxsOiAjRkZGRkZGCiAgICAgIH0KCiAgICAgIC5zdDEgewogICAgICAgIGZpbGw6ICMwMDAwMDAKICAgICAgfQoKICAgICAgQGZvbnQtZmFjZSB7CiAgICAgICAgZm9udC1mYW1pbHk6ICdFbmNvZGUgU2Fucyc7CiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOwogICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7CiAgICAgICAgZm9udC1zdHJldGNoOiAxMDAlOwogICAgICAgIGZvbnQtZGlzcGxheTogc3dhcDsKICAgICAgICBzcmM6IHVybCgnZGF0YTpmb250L3dvZmYyO2Jhc2U2NCxkMDlHTWdBQkFBQUFBRGdBQUE4QUFBQUFnU0FBQURlaUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR29Fa0c3eHNISWNZQm1BL1UxUkJWRUFBaFJJUkNBcUJuaFQvVXd1RWRnQUJOZ0lrQTRsYUJDQUZoandISUJ0a2JnWGNHR2ZZT0FEQ3c3blpTSVN3Y1VBUXRGbjIveTJCRXhsQzlhRmJwMTZVVUNLY29LaFJqTFV6eTdLeDJHbGFyUW1nVEgzcXg2YUl1dURHWGFPanQ2RDhmdWV0VC9FWkJjNmxZSC9CZUFMY2s5RXlSQkwwaUhBSm5SVEJNRkRIZ204YllrZG83Sk1rbCtlLzF2N2Z0YnQ3NXI0QWZ3eWhJd0FGeENxVjhzUXVMZ3JMb3dJaUh3dDR6L0g4M083OUdDdHFETWFJOGFrY0VXV0RnWUUyVVRhT2lMUUtzeWlKTWxDWWtZd0tzekZxRk1EL0VHeXpXNXNiRWhaaTkweFFRQkNRS2dzVkE4UW9RTXlhbTlrb1dETnF6bTN2b2wzOXozVit4LzcvcjkvUzc1OVU5T05QL1U4c3FzcHBBbk5EeE1oSnc5RFFIVzYzOG9aQ2I1WXlHem1EL3pkZDd3bFlzZDZIMFdvMk1GcU45VFVCQjd6S2QrQXpPRURjY2NYVWxLbFNWQ25hVkdXYTRoNWVXeFhaQXpmcVcxL1k0dmpjZW1mZ1JYZ1RoYThxRVNEYmhhd2grU1pKWHYzSTluQVd2NHBiV0czOTFnUWcrdi83VTVNTmxQTzNML3IvQmc2SFd1MFZxZFdDYmk1d3lSc0FGcDNtS1NBU3NUQUU3QXVtemU3Vjl2ZW1wdTEvL0Z3UnZEdEpXTklCNTd3WFJvQXpKVSsvdUR1SEdDcTVqSC8vZ3RqOSs3R0hKVUJ4RUlRN0tITkpTZ1JKSlZBSkN4NmxCVWg1TUhTaTZKQVRjRkNBamc0Z1R5R2sxcm1Mc1hNWmNpVVhuVXFWTHQyMU1kZVY2c3BqRTF1YVI3SWhCK1JTcUVxRTQ2akc4TzBlZnR0WE5xOGN1dmVhWE0xZ2dwaFpZMHpqdWlKRlVZZ0U5N2kvZG41czlzT0J1MnB2ajVWRVdxaGcxUDMvR1Nrd2NzQmx3S013c2hBT2hNc1lZczRXWXM4ZTRpZ0FNczBzeUJ5TElFdUVRcGFKaE1TS2c2eVRBa21WQmdzVkNzSkdVR1dFWWdRaHVFaUpVWmRCVGNHMnN0dnpmaGdITmplZENHejlobFJSc09OUG5Ea2YxRzVhRmI4TzFLQWJyOTYwTGk3SzRkNkNnTzhwT2d6SE5sQUZBVmx6QlJEQVlXdEdQa2hQVmQ3endrUWE3OXdFbTdjbmF6QnRrVnpFVzQ2T01MNWdPVzhUWDNVbG5YODRYMDVZaHdXQ1h0cUViN2t4ZTVDbWI0YzNZT3ZlQVFJb1M2Rk96S2dhT0FHUlVZRGNGeDBVeDRIVEI2RkxsR0JqNWxjb0pSUkx5Q3pwWGc4Nkc1clBwMmVSdXZuVk5ZZGR0RzJuaW9iTm80cW5EdTBxblVDcDdlL29xd1VJb0w1TGcwQVJpQTVPQlpBWG9kVDZrK2lCSERSSnkvNTJrWHkzVmorY1JNM3dYUXBUYVU2ekdZWmlGUXFXbGtoODVHVGl6dVZ2QU1RVGE5b0xENHdjVm9aYTBpcFRrbnJwWnpVdEQvVHNRaGpjNlZsU09IZFdCTzRBTXM4VmluV3U4bzQwR293UEU3TngxeVlycXhhTVFrMEE1UW9GZEhVSkE4ZjRRYUlUYWpFemM0d0p0R0YyZjRHWVNJNkpSRFlKaFFDYlF2VWhQYnp1SXFQRklRcnh3dlZzR2taYUphZTJRUW55c0pjKzBWSXRYMlFnSGJybVJWV0cwbHIzdzc3QldzUVBhVitIaHBHRFYrc3p2YlRXWjhsanp5MFIyRGpQYTVsd0VMaGwvTmNERWJRRWJCTTBoMEtUL2tCVHI1R29WQkNyRU9XVzZFK2ZPbG05NXRCeEQ0SENlb0J3eVZZMGxWQlpRTjVvWENmVFI4eDZoVFVlY1FpVTNNQXlUTWliS29VUlZzNWs2SUY1NWg5K285SGQ1WGV2K3BxSnEwVkRHOURoMm4vT3FUUzhaMHBRcTh4QWE1enlNalhIak05QXZoMHNPS1dwMnd0Z2FOaTQ4MzZiMm5vTEZTK3FYMUV2cGFERkgxM3BEclhEVFhzNE10MUQwTWQ2WlNyTjNFbFB0NVFtUFh6ZmxzQ2l1T0VDQTVDQjFpRU8xQXhrWmlUNGFHYW1vcEhjMHp6dk5qNHpQR3h1eTZicGw5ZkVWbWk5bktyRXdSdE9OZ0xjN1QxRjdWdlVrMVFYQ2xSbVFSWkljNG9Ucm9oNytPZUJBZkRhMGlBMi9wdi8yQlFIalFHc3RGZGRFTVhxSXhmaTZnYUpRTHZaUjdZOGlaYkFMZWlESWFrTmxydnpIbVJad0Y1aUszY0JOOStReE5wTU9laWVBS29jVTg0T0cxSitRNjIzbnpkbnh5OTAydWptMjhSeEdxbnpxNHhkUENQZkFmUUR3bEV4YmVyL1VBRFFCM0NEU05YYXdka0NVUTdOa1FLYlhOR0dZTHJZaHdTczRQYS9DRm5LaS9hUVNMMEVaZUtmcGVKTnczT2VuSi9CakxGRkY2aFRYYis4bkZtTG9aV3NMeWkxdXlnQVRrMTFUUFJNK1Z0c1JaZUhGaUJhQnkvTndESUlTUnZLTzRGQkRPVDZnQnNGU0FMdWQ0YkRaaE1BNllNRjdPQnpaeTFLUDFVUkt1WHJMTTNEcXhVSmFRZlByQ1V3aTJud21IU2UzSkdFWGhCdnByUitERmlJWmVQY1U2T2hDU3l6aHBacGJzazVLNnFQRmcyY2VodWFyZFNtQ29EeE5Tby9QOGdFWUxKd1oza2ZiZVJYY3o5YzhtWmFvV3NIa2w2NkNzVFhRWGZGRjlUWXVZZ1VCMUV3ZHhpc3ZBZHhIREl1T3ViaEhBcnRGZk8rTDdkeG5nZERCc0I0bER2bmNjYmRqZW42VkxYd2RaNE8rZHhYOEVmNWdibnVrS0VvK0REL01nTTNPOGFjYnRBT3I1dFJadjE2VHNFRTFBVEl0K0Y4MnU0Y3ZoeHFDQ3lQZXNQcEJvOExBOTNWOUIvZCtmZFNjeXlGNnNGNjBWelZYZDV6cDNLUTIwMmxtS1dxdklHQmtIczlaRVdNTm9YZFdJRkx0azlUNTdTSXVwbVVjeVVoUFgyaE1ZZ2V0TGlzME9KZ0VBTkNuMjBLekNuVnpobUpWK2hzWTJnaEJEUGpsTXF0N054VzZDRzNML1NDQUVFOEJqcHZzRmUvSWlPdVY1TG1lZ1NhNGtxUnU5VVFKQ090RlNadDdwSEFObGVzMm9Pa1NrempwdEpKMElkV3FLY052UjB5UDV1ckYvU3F5TGU2RVB2Qk0zWm5uWTBzajZSMmFaODZCV2oxczRqM1BOVTlXenl5TVBSZUswS3RyeXdLSnZuS1I2SFhmZTlSUmRxb3FZKzBYRkNKc2NCZlROeFhKMHBXYnhzNGNhY3VVNHpjaDN6UXRxQ3FTNXkzOWptL2xqcHVsK2RBeFE2MmxVSEhUSEdRYit3QWcvU3dhS0xaeFdoYVlYY1g2azA4YkhYakUrUjU0L3dpc25KQ1BMVnZUTTlJZ25DcjQwenBqUlFNS2NWWjZkS3BOcjdGQUdMY1BqQmtYQTBhU2RRd21BZE1pZWtUdzMydjRaVWxWSVJqSXpZNjI5VXNaVFFGcm1veitWZGcwUW5SZUp4cHQ1MmQvU2UrazUwSXpHRTBkaTd1Z0VmK0ZwelRBQUNvMW1abDRQdm1xQXFFSlIzbkxYZ1EzRFhvbDZNYm9Cd0FoUnM2aEVKNHk1eU1JVjVTZkxXZ2RqSUVQbENSR2VteTRrYkxoOUVDMitZTUprNnFwTzVnZXBpamxQVjhwUlZTN0I1eXIxQ24yTlRwMWs1dWZmYVFrQ293cGlFWlNxM3FJKzBDR3FLc2tjTDlmYUNoQ2I5MlVGOGJ3aWdYTFlKUUpTZkI4MW53MzBmb2t6NVJMcEc2OUM3c2hnWmkyOXd4MDFyMk9ZYU1jbDM1ZkJVbzdUVDhVb0sxYnR4T0xDcHlXeDBZMHQ3V2traUpjVkRxRGFONEpTM3VZMmpESEhOT0pqZXVvVndtaXpzYjdUell5TFpwbCtEZTJndGNnZUR1Tzg1WUI3T0J3RFgvT3o5T1BiM1c5a0VtZ1RhSzNUQkVFeWF6TjlsK2ZrdWd1YlluY21OWmpZWjdZVGtvREI3MDZkVlQ4MXpHSUVDWTd3aFR5MUVxc3BQRWc2S3NMT2p0bmNxQU1GT0lOc2V5Mm1SS2hlb1AxMzQ4U0s5d2dXRHduNlY5QmpFa1pNZWVBMStCWmx0aXBWVldXeU5NdUFoUm9vbWt5MUNnV28xNlRacTFhTld1MnkxMzNIUGZBdzg5MGtPaVY1OStBd1lOR1RaaTFKaXY0VUhqZFNUR3NSbzVVV1hyYVR6cUlPOHFOYk02cktrS202cFpValVrSlcrZzE1SS96YVRHOC9ETjUyRUJrWVVLckNtVkZnaWZXSGo5SkNPMGt1THJyeTFraStxYkJHV0pnQ1NPSWpScElRcWtxWUxnUE9xb21lV3doZ0xEb2NJd3dJRUFFbWdnQTNTSldTRXM0SFpWdDVwT1NlaUNIdWlEQVJpQ0VSaURXVmRoRGJLckx2YVNZNDF5NnVwYlBMK2kvQ0VBQW1FYVRJY1pNQk5td1J3cHFIakJNQTlDN0VVV1dLSXNGTEJVV2xuVUtsZ05heUFNd2lFQ0lpR21hMXJ4MG92SXlNOHNpYXhxa3UzbDU5WUhlZlZhZmxtN29BWVYxZy9WVmFPR29KNWQzbU0zMWdQTmRkWkMrYTJWb0oydjdsWmJiSm5iZ0x2U3ZRTDM0UUU4bEI3Vm9oNlFTTDNGNjROK0dNZ2ZMR1NvcUdHRkVYdTBzREd3bDViL2xXOFVTaEl1YnFGY3o4SlRSYXFYQmFQTzJTSkZ2dkhnSERmSDRTVll3TWVBMStDSFYyWTBEQmVpQW14dEVSVkxoRnBnbVNJTFZhdVZxMTZqQXMxYWxXalhybHluVGhWcVpwVjlyVWUyNnpGbW41ZjNuOGVUWG52bmxLLytPVWRLcWlFS1VkQVlUamlhd2cxWGMxVEMwd0pCNGFFZEpCbUtPQUJ0QzRtaURXR0FpRHBVTUFxR2o3YWd5d0RZRlk4KzFnR1VSRU9xajIwRXdTUTZuUElPSkJ4OXBDa0NobVF1RDB5bXdaNEk3U3JGaWRQSkpsaFN3dzF0RUNEWGFVK3VxeU41Q0Vuek9pQVFkaFNaTTJORmlhSWoyeENjYjJrTHRoRFlnRzdYR05nQmRLNEgwVlZiQm1IQVpHWXdGWkJXcDJHWUFNSEFWdU5kcjhWaHpRRkEzQUU3S292USt2cURBYWd6WU5iK1RQVGloSWpnYTBEYXhXc0dDRHRKU3gxV3Bva0ZVQkVGZUk5TEN5Snp2d21ZcEFoRFNDUUNoNTRIOVlFQlRLNEpTNU1BU1dPS2FHT0RiS2NGMmE2V1NBaEI2VG9abkNGenB2VG93cG5RWWVESU5nUlh0YlJhMDBndlFNbTNGZFpGKzA5MHl5dkFsTDlOODZsdFRCM0JFTmlBMWJpbFFzTzM3VDR1WjBJcjBKOWZNSmxvdDhOS3pHai9uRm1ZanBlLzY5WG9WOTJ5ZmkzRS9KK0JoNEFOTjYxZkV3ZkpCbWZtNWQraVhMc0pTbTlMS2RoMkYvNVE3Q0VuVHJ4VStjcWR0RXVWa3k1cTB1UXFzVnJnSmZoeHg4eW5vT05NbWk4RkQ4K2ZPNE9DcDBEUWdFNEdIUU1JREFnRUJDQklJTmhBeUVKQW5FVUFjUm9OYUM2NmZoRzlld3BHd20xVG5KenBNa0RtQkxXT0hTRFdvS3FnT3Qyb1BxYVZ4OVkxNHdLUlJQR2NiNEdhQWFKbWZCT1ltWENnaFlRM1JBZUFnSDRwdXNjQ3U3TkJqQkl3QUIwd1NwcmdJaVdvVDcvOGVTOENlSHJHR2pRaXZRSVZnV0liMlptVG0yS3djSmpLbENWYmpseDU4aFVvVkxRUUUydlZzYmFPUDFway9XUDYwaXV2dmZIV08xOTlNK203SDM3NjViYy8vdnJuUDZtcDhLSVdkWmpuVEJVclVhcE11UXFWdHRwbXU2dXV1YTdURFRkMWVXemNoUGMrK09pVHo3NEVVQkNHY0VRZ0V0R1FES0lqQm1JaUZtSWpXYVFSelFnZ1NERGtPdVFHcEFzaWhpRE5FQ1FVMGdGQk5DRXRFS1FkQnNsVUJBUnlIZ2JaNFNEUUlGVk9BWTJNWXR1Qk4zVmhldXd4UmVNbWNMejNCVGVBTmdHMWFFVEFDSWFwcmQ0cjZqQTFheWJuTENiZms1NHJIcEljTDVseG1VM3Q4dkxDVTUyVE5wYTZCT0V1MzVEV3VVZ0tMTzFzSmpockNFRUZUN0I1aUg0cWswZ3dyUnJWd05QSlc5UmVaZDBLLzdjR2V3ZzNYanhPT210T0FGd0ZPNittczZVbkEyejRWcU5UMEJPQWNmQWtCblljenNmU1ljQ3FQZHIxU3IzMzJxaDRCSkI3cjRxUFFnakFvQUJCc0ZnSkF3TEl3WmtFYUVBSFZzR2gvZFU3MGRLQncxRUlHc0FtaEp5a200cFY1clcyMXRXRzJzaU9ER29qYWhXbFJna29IY3FBc3FHY0tWOHFuanF2cmFPOVZYdTdEa2RIZVdvS1lCTVVTODRPeHlwelc2dmt5cTBvVlVyai9saFRUbGUzY1RJQW5BMm9uUURMYTZVOEtYZml5Y1RnUkJzQXZ6dzdVVDd4Y3VMb1JOUkU0SVRiK09SNDJualoySnV4VVVBQUJ3UG5Hd0Y1TnZ1OFBZRjVORHQ4clA3cXNsRnRYcHVLb2pIZHhGcDlVK09lYXUxcTFmbnRwMThhb3dCaFlHS1RvNFJMbVFwMUdqUnBvZWd3WWNhY0JTSExMZFgvSFRweWRrZUh1LzU3RkZPdWZQa0pNTTFzY3dRSnRzZ1NvWlpaYnFVb01XTEZXV2U5ZUZ1SUpFaDJLMnB1Kyt1cEJpKzk5Y3E3cUVjcEp1RktOK2lmKzFHT1pYaitPT05zekVqRDBSd3JwMlVZY3RFRmx6UWhZWEF5Q0RSMExCenlGQ2hTdzZPS1Q1WTJBN3IwR05IM1hZajUrL2o2QmJ0bFl6RmgrSEJjUkNROWlrb1Rjbmw4Y21LcU9GbVM4dnRKbnBkZlVDUXJkcEhDaFlxV2ZnTjY5T29qZ2FCS2tnY1NaMEM3QytRcXNPbzZnQjErQnhnWGdQWVh3SUFWb09jZVNDMlJsa3F2NmJ0Mm5rTHdPTFF2NURId1QyMjVXNVRmUkhyVnZkT2lISmNqTjhibnRFdlROeFc0RU5YNWpMQ0NLRXluNzFwaUlwdk82M3NlY3BhMElDb29TYUd0YllpQ0orMUowK1BBam1lTlFvRmpNUk9sTFZJZFdGdklGc3ZyODRraDA3V0dOTWpFNFRJSHQrTllydDZLdVRjTDl3VkRWNUZnTXBPY1dUUG1XeWFMOUt6NlFvMXBDbU95cFZrV2d6N055elYxVzU5dDJkcS9ScDJpV3V1M1N0TldMcHRadEkxNVU0eFpGbHRxczNuR2RPVEhtRGE5T0QweGkraXBMNnVRWGk5S1l1VVJOaHJUWlN5WkpWMy9TT2E4dVd0VWFkNG1kVmN5R1k3dDNJVGFaNjE2Nk5YcWp0VmtTNklvYTNlWXVZZG16V1NRekx6NHJMTW1mVlhIMVd1cldJUWgvM3JuTVViNmhLV3RoVDcveU95MWhOYlB1b0UyQ1BNVW9iSENscXJHN0F4Wm5kNHo2K2E4MVRwRjE4NmJLeFQ4bWZOTnRuaUpOY3N0V1ZKVWl3eVdybHJtR2pkNVptYXc2Y2ZMYjlhTXF4MzJ4S2lnUm02U0llM0FTYnBFVFJ3WEkzdjdVUHQwNjJEcnlxbm9jSFN5ZVlDRW52Q1U0c0EzWFlzNUdsZ1VsRk1iak1TRUZFMjQydUdSWStJclZmMnBDNEFPVGFkSjRtOXYrTU1CRVprWDFKKzNWSEZFL1lLU1RoNlpRRGIvR1kvQnlLMTBCdkJvK2ZDaXlyQzMzMmc1a2lyQ2txOUhEVTNvSVkraDJ3WkR6Um9IM0pQMGRxODllU0pQNUMzMkgzY2tZcGxGOTZTYmJDZGNNcGhsazRvM2V1dkhTT3FqZmw3cDNuMjZzemdwZnRxOUZ3bEkzUHlPOE05RXpGTlZ6NkZBYklONnRXT3BJbzFuejlRbVU2b2JDa3lHWHBqYkNKV0dXYTdTc0hGNzRjdTg4MFlCYVRVY1Y4cEIxU3B2eTlXR0haM2N3dDRZWnhPOFJia3JDRExKdjdrbTFBd2dZTHl1WDZhNXV1NjFuRVNvc3ZWa0hBeCt6R3pUM1h2aFN1OW5iM3kvQ0wya2g5LzhvdXFENVhuSEYwY3NlbVh2NnJwZDN6aTRmbXRZQWkyNTJqNXFBajNKang3VTN6MWxabDRPQlQzc1hLUTFGNWZhWHB0YTd0MzB2aDlSMDJucWtwdm1PcmZGeHo0akZITXRMRUU4ejRhd3c0akM3M2ZyOXFqUzNzdjVMTVlkYlBWVnVtQzR4ek1rSFNlRDAyUHhrRERRM01GVG1VRjdoTlRBbDk0TUpWQnZJbmVtR21vMFJPbUhCREg2N1h3ajFUN25vQU54dXFwRlpaempLSHpaN3ZIWEJJYWhHRnRiWWNyakg5ZTFlRmg2azBLSGJNTDFSbTZXUitXYkhCOEhrSm4vcTF4N3BKNXdPYldDcllQVlM1RzYrMVo0OFdmQkNDRmpETlppQ0E1SS9qRzRraVFQUFE2ZmxCK1B2ZmxSQVMycjV0QzQ5SmoyTVh0a0twQWFQbXB6RXRTMDJ4RTFzWlVpd2NESnBFOWVxeWRsb3c1MVpYMTVWMHRtalZ3NjltM3cwZ3VZbk9hY1pTVW83ZzR1YnRHUzdIUE80VDdmbm1kOXFsT0gxa1lmY2l6d2NxMXJma0M2amdUUEdWTVI1TkpuZEZwTG5JZW4weU40eFZzMm1UcFRJalhBREVrN0RsZEc3SkE2VkYvVVFDd0NWWjl6QWdxTmhLbjhGMmo0KzhWUzU2bXl2Z2dFWHFpR21lYThLSjlLVVI4SEJ0QUdwSWJHd0g4N3ZBNHZRcUhpeEloQnNuV1AvUXFwUVRlVjNybUJ0OXREZ1lOdXF4ajVqZDBHQmdQZlJWV1dERDR3MEw0Sm1oRGR3SGNkWWY5OW5NRHZNaDhqOHF5SjZ3NWRwVU1yak5LaHR6aHRsSDY3QTlpd0dvdEdVME9kdk84dG9ldlZuWUZGSmpnNHdSTmVOQzdoUFJJanMzM25zeEtnb0hpVERRUDVnT3BHU2VOckpoaCtqK2QyeDFBVy8rKzBFYkxqSkh3Ykd3TkVrWmJEdmdQb01YVHM0bTdWZExkWWNxRlFVNzEreEl1TkJKYzRYcmpsaEFmalNibENNS21KaWR4eHp5YW41YnM3VGJvejJraS9ZeTJnVFlBb1RKM0NiN2hqazNod0ROWnZjdlF3L0p6eC91SHRNZzRrL3c2SGkvbEM1V0lkKzBtdW93a3VOZ2dGUHF2RGlpR25QRThIbTA3bk9Ybm9BOFo4SHlOcXJqT2hIaU5NeE9sUG91YVhWVFlXUW9sSzdOZ0s3K0pNMDl1eEJ6K2k2SDNwaW9zR21oQ0hsVFlwMkxFTjM0RlJDc05kdEEvZWY2RlFpVWNuZ3ZKb0xiVld1Tk5FUVdMZG96dFJKTlR1SE5HZEtIclZ1cURZSGRKWXBhdWMrY1c3ZElKZWlWaFArVEMyUmc4d0xna2NZck1hMVMzRkJ5bnFlWTVvNC8xS050Zkp3TnNRSTFZWkJGcmNBWE81UmszbUN0ZDFQTThScis5N1pESGdJWUV6WkErWWd1SmJZYWtvcEFBdkZxYVVLSnArV0VBSFpmb3Bsd09VTkhTZkw0TGl3UkdmNStCVEpzY0ExTGhiSGpXVGlIckNvNjdMa1hWdXRrYTFOM0V0RmxzS0RXT3FpR2d1VVliblVXbGF2NHhoZ3c4aklzWkwzS0VvSEcybUlrelFFaDNLdVB4Tm1Fa2d5eUdQOWtvQkx0b1RsQUFKMnFxQUlzdGxlVUhmWW44MW9ITEZENnBVS1l0ZTZ2azBLWm5Fdk5OMjhwUkxpWXM2aW9YZUhZOHhqcWZvNzZCYUN5NWM4RThTcFoyOGIyUXlHOERkVXl6QjV3ejlpcGE0cTkrY2JZTTU3NmV0aUY0ZjVPb1RQYytEVmZQYVNGYTBCdzhTdEhVcG1naHBTUFozNFdwVCtOYWxJckRYMFpicndwQnlQbU54STYraG5xZWNEbHF1aGpZRVhtUElIMnk0QTRQTzBMbDdvRFc0ZTdFaE9ocmwvVXJ3TnR6Q0JFU0tBbTdnVFYwd29OOXY1N3Q2dXRnRmxPSTdlNlQ1RDBNbThoYVdXQzJpRm05VDA1UG1rZ1J6T3Jxb1p5YU9WbnZSUEJuYVZIb2hyMDJOSFJJRjhaRWF2NjQrQ29oYnpIVGI2YWZndWpMZzNiL3JETW5YNy9tRENza05kNU1mMThjS0hESnFaSnA4RFN2NFhOMVNWK242dnlrVnN6RmsvdU5mZlVucXBXcTRhOEJNY2gwZW83Uk9HeUh2elpyNitjK1Exc2c5aGJwRzZ3NEFaM2dyVzkzdnovOW5COTUzNlp1MHpyRHl4RG4wandhQTlkVW1tN1VWM3V5czN0UHdkbXk0OU1LMFFCVE8rTTl0cVpmaytXN2RZM285cWZHelBEbkJURnlpZFJxS2hqWm9zcTZFa1NWemVKdThQVTFSTjNRalppV2k1WUdRWXlWb1VIL04wL2VZZlJEZmRleU9zVFhpWkt4WVR5OERqc3ZLUy9pblc4TkJJcmRLRlJGUVdZaDZlTldSbnZDR1gvWTl2RjdzOW5xM3ZUbi9VQjBYZVdPZWNLQk1vQWszNXhIR1dmcTlrT0NjQ1MxbmxaZUJuZVllV0krY2tvOVE3SDNjT1pkZHZiQXZJQnNWYm4wOW5RWklUMjdjLzR0aEtFU1ZCU21Jc3lDLzlFbTNadTNYUVZwMW9QRHluQ1N2ek43Ry9ySm1HcEc2NnltTUVxLzR6aGhLamtmcStBUFRwcWZ1Y2RKajNrWjZBVlByZzF1V1VsMmlxWlNpVUdsUzNtWGhmR05VdlA5cGRIS3JFeTd1dEFnM0UxNFNMaVl2b1M3UmxGdGRsOTd2c1kvUkx2bDJqaTF0TGdFMVEzVEduaXk5ajBBZS9mYVFVcmN1L1hOY1dMemN3TWUwVkNlbFFsQWEyTXptVUJwbFpFeTJ3ejUvZk9Ka0NGTVIyekJUZVFvM2FWL2FIUkNSeGFtYkxMZ3liYlB1dEpyQ2pOM2dDMkNhblp6amE0bFd0K2l6TEt6NkRmOGdqQW8vUm9YM3dsaFRyL0kyLzlzekZQOXZKSzZLMVcvS1F4NGptODRpZ1FHN2luYW42SGp2Z3ozSHYyM210T2dTU2lyemF2YXUwU1FqVDVjdi82QkkrUGYrM1MzUzk2SmFueXlkUU1udWxYdGdaMjNyVE92SVdaRjVSd0VwYnJuMFpjYlhTLzYyWTB2M2x5NnU3UHFhVjREaytUV3ZYRndCQjlaKzRqaTZUTjNOK0RCNTZ1LzR4K0ZzK0RHKzhTQ1V0dko3ZnRiLzNiM2t2OS9rallSU3ZVQUJKK1BxMVdWeXgvYkwyNUxOZzV0N2RjL2VQWVA5a1NJWEE2VEdISXJIOEtMR2JJOFhhdTZ1Skh2ZmlyMEdlajYvN0E4K3A3NHh0cTgxem1mYVQ2dnY5RCtuUld5bDI1Zmg2Q3QveWtwQnNiZjhsVEpsdGJ1QmxBOWE4UEFUVnQzaDZLRHlIWFRBbW5EVDdLYjRhVUh3QkhwT2EzU1VxVU8vTVMxSHo1M1hHaHRsa003UXBzNHVWMi9tU1Q0OUhveUV0dnlxcXMxYzZhY2U2S2o4WWdzUWpCRFhyNDhZcmo4VHUvSWNJUHE3RHFPTFVYdlFuUzRZLzRkOTJDQlM5OUpXeHVOTExJL0kzYkY3Rmk4SEorN0t5VVFrN2JhNzhLRnc4MzkzN29yK3Zvbi84V3RweWVFWFRFMmkwVVZ1dG5mQTczb3gzNzFoUXQ2dVp5T1hreDUzbnFvOWNYYnlTa2p5dnA4amx3VUVVLzR0eVdqNHFuMU81djdwRmo1N01aYjgreTFkSC9waHcra0E2dllqY2pQdHpGTXliMUZ2akdVNWR1NmMxc2dZUSs5RDRmVDk1NjlaWTNjcExVeHhmdTcwVGo5WEwrcm5Bbm1ISW9BYSt3MTc0Yk5hV0xzZXc4UDU4ZXRkNWRjaGtpdU93dDJQUTg3OXMvWVZxSHY0ODRQTzBwMFNac1ZVU0IwaFhkZkl3Rlo3RGd4QkV5OEpoS2pWZTdYcWxZWXVGOFpLbGFtcWpHNkhHT1BUM21ldmFHNGlYbkhqNW93SjhGV0tzZGFZVnpZUVNKSlJFck5raCt4ampKdHRWM1A0WTlsTlZlZCtUWU92WUkvUzg4dFY2KzhCcVFSM29KZi9WeFh0dlZNb0diMi8ySHJ5NU1Kbm40OCtiTHFqb3YycEFuU0szQnJYN01ueVFsMk9lMlRWNEpiWjVOWmpub1Brb0tsVS80VzNMdkV4VVVwdThIdTJZTnFRRUdqeTNoZk0xZEdsdzM5dGYyNzBpUTJnZjdJL2c5RnY1WWVhZkw3KzhYazQ0K1BSWVBLbDZiQjlTc09IQzIzZW01c1A3VFFON29QUGdWdWh6NjgzU3pYWDlNRnYyVlRyTlhETWFIUjEvRWpIUlUwL0ZHSU9yNEFobGZvUjBTeDJnaUFlVytubnZyWFVLVTNsSWdvYlFsQk50V1NUSlJONnp5WGF5clhoWXd2N0ZRWTIzdW9JTUJzTFgvbGFIditYZUtJdS9LZU9vcnI2MDhWcGYxMXoyODYxTFc0Sm5KUkYwbWlaa1NHYXc0eEdzbnFJV0JyV0FDZkR0RXhFT3l3d2FlZkdFVEtuSVRGSjBIbUdNL1JmOVE4eFVSN3ViSDkyRWw5RTZ5RmhSQkhaMGFxYmkycjlSdU5EMG9wYzRzTUd6ZjkxRTJVeVpVSnJPY1dJWCttWkF0K2hzWnRtYkRPd1YvZ29uVVcvRUpNS1RtZm1mOXVwYjJXcnA1bGQrT3hCai85a0daNkZML2M3M3FZVGJRQnNtT2FOYXNzZm5UZlNmMzVUWGtMTERXZk8wMUlOckJOSHFMU1psbmJ5WEJzMXd6OFBGZ21mdTllb0F2WnhFaTdGYnZuMnh2VU03RS8xQ1ZmdVhqM1dOdENDVmd3VUJuOTdxVzZMK1BMQXp3N3ZFK2lZWGxnNitiRGJiNm9zQWpqRHVoOFhpdjY4M3JubHg2UDQwb1JwUm1BYTdZQmVVdE4zVzZNNXEvNk5uWFB5M1dGRmhsUFhmU1Y3SUdPN2hsZEV4ODIzOStNV2l5azhYZ2tadTlEVGh5OWdvMS9kVEVyOGJsZW9sSUJOc0dNL3loUCs3RzViOStlOWxJb2pGMHJEL3I2Q05xakxWVFlIYWpJajZmUWNZcWhMYjUraUhpRldoRFhDS2I5bFdZZ09HSGg4TFcvRjhjMkV3NDdVUFg1SGY3dEhsUlptbE43bCsvWE5QcHFGZHpmbVZKdlFqWThLek5TbTVEbDF5M3lpL3E4ZW9qanZkSWI4NjZzNjF2WklkSVZCa3JIM2U4N2VIOWR6Y0JWK3g1dDFvdldFcDVaTzN1LzIxNVRpUUJtZ0JXM25zOEs4dFJIaWxHRjY3RUxueGUzR3pOd2trYWZZTkRZUVpRWmFzTnVlRUwxZEVJcm1ValUyR3dYZDI4MlozbzlpdWlGVzY5Rmc5RzY3U2RBNnpYdmwwZHpEdWVLSGVoU1pFWlQ5NWo0OTVFc01EdzZHU1VoT08yakJMdTVYR2JqNmpCTGlSQjAwN2x6NzFxMm16R1F4eDBWb3pneitYZ1d5UU5JR3J2RklBZTZqc0orZXZNbUtUVDd0SVZqc3ZDQlZxOURBdzJ1ZUtFNVgwK1BlbTk5dXpNeE9UblFYbThVRmVwaURZRmpYSTFYQ0g5Yzd0L3hVYTJlUEVGUzdmazMwZXpCaG01WlhUTjZTN2UzSExVRG5XUXVwUG5haGhBS2M1U2VEQ0pnYlJTelZ0ck9iSEl1OWlaMlM5c0N5OTFxQml0UENhbkpJOTRuc3ZEc1FVa3JCei9jeGpCWGszcUNkUXRRdXJ2WFFQQm0vME1jMFZsSDYwTHVpVWNBTDFucFBKZnJqZW1mOFQ5Mkt5bzdycFZGL3RXMW0vSFU3TlYvTExTSmpiUlBvSE91T3ZqWkZsTURseWRWM2hldis3S0pXMG43cUtBbTJaZFNzMjZHb0I0bGxtSk1Fam13QTh0ZUtZYUgrdjc0b2NlR2xhTkczWFo2TlhNYmExa3hRRmhkUGhVdE9CQXRYRWJCNWlnbDEyRGREcC84eVdlWTdpT0w4d0pyNnhrTWdub212UERqYk9naSs0eWZzL1FrVmtNdFFwNEdWclFYb0Izc2tiZk9pNkgrODNXTjVraitTSXZoTXd5NUEydlQ5WjJubzhhWnJkbWZsTy9tMldaYUpHTU1kelFTTVAySk1Sb3d6alFlTldiVUZYQm9XaDJkQ2hpeDdMV3U2aTl0ZXJiOG1GMENXeHJGR2xRZjhVZ3RjdlVrZWdXRWtodEVRcWh2VjFGclYvMllabkszaDlHRVlDVDd1SVlHbTZsaVZLTGswTEY3OE4xY1BxcWFucU8zWjhnVGN4bytqaU83VDQ3b28yYzF0YUZIK01JdTVjQVM3N1ZWWC9jc3ZwZWRibjZhazNUdnJCSkdmZVU4aUxhTUtYWDFJSG9IaEpMclJNS3Jic3JHbHF2Lzlzdi9hekR4cUhuaEJsOCt0ZGo3WGJWeUlxSlpLTWl3M1NQTk5zWG9HdWtkbkg4L0NDeU9wbWhhMzBIRmx1eVVqUnh6am5tZ1dFK2h1Y2R2em9xRmMzd3MvalFjSHpmeXh6N2xyR29TY3R0dG05bGl3RHFiQVhwT3ZyWUpBdUZVL1FDS3FZQWZXcWk3QWVGaTdBQy91VklTODNRbDY1dTNGblJYSXJ6bDFxcTRteHozMWR1VzkwTHEzNWFxbFBjaDJZTE9oMlNBTTZ4bXdTL3N6ckZGeGZkNHhMUENvdGY4RmF4WXg2NXg4VXNUTmdoQjJRM2REcm1xOFp0M3dneEk4NHcxSHBETVhqdzZuNDJrK3lZNFpHVmozcUdSTFZrQ1YwZDJkWHp0aEVUVkh3ems5VmRZVGhpTDlFdzJCNERYNzZ2akVzeGZqSTFldmpvMDkyeDEydFRtc3NpZENISFN3TnIvZ1lJMDRJQ0lpT1NCWUJmbDVnK1FnVUE3VmZOdWZTWWRBS3Vud0hkZCsxMDhNcXIvTW95dkpyVkw2cDdHSldmL0wwNU4zL3k0Q2FZQjBuWWxlOXJsWmJkTUV5SHZnS0ord0k4WndXdTJMUW1xN0ZFTkNMU29TdWJxVWIxWm02UFpKZXI1bnRuRnYwaXhiSnJ2VGRIZ05WRUdUVGlLNTVsTjg4MU1XZ3ZXbHB0cXl5YVlUcDZjTE40ODFsQlgwRmc1d3A1QjA1TlFydVdxcGdldVhQNjgybEU2ZDdyRGN0V2g4OHN4WVhjbm1iNmxneGxIYVhvS0h0dG9kMnFYWkk1eFB2SWRuSktBWktqNkZZcHRQY2MwK1EwVWZXempVR0MxUWZ1NVZyM3RLeitmL3p6TkhSTkhPaWRYY1UzcjNXSHJua2xQTmowemVRaWxVZFhGVzJReHQvelhsdmxTNytUdlVDdGpHMGF0SGxJbDkxNHJEZHQ0TDN1VnhiWUdveUpmS0tBMG1saVFuUjVVMWhzU0hsQ0R6TU8yYWw5Y0Qxalo4SVJLZDIxbXB2TklUQVNkc2VnUTQ3SzkxbFhMclNUN0loWjc0TFNGcFVYVms1bWF2WlU5SW5WUERWRWJwVXQzUzFIUjVRUlJPTWtwdHRsbHl2WjBTT3AycFVpeS9GaC8vc1BQcXhRV1k5dXFDRk1mbTBPcWcvRGFaZktTNHE2KzdYRWJHcEkreTJ1eVczTDhRTFJyTEtDcmUrRjRLUWRDQmwvMkpkQWhFUlVkNjM5QUxZQlhUVVczdlNteVZoUGpQeEZPLy8yRlViRXgxR3ZFVDJFS1dCT2lEUFY1VW5NYjU1akdUaHZxdFlMU1d2UWJ5NU1mdFNERXhyYzVGSWJVakNxM29LSXFDWFAxQ3lhODJ4UDNKRU9BeFE5Z3JuZVhKQ3Uvc3Vid0dYa0JUenFzTHpLZGl6TTlyeEp4ckxhd3RXMjY2ZVBsVXl0V3IrYWtGNmtJdGZ4SEpRazZCQk5OcWcvQS9PN2NhU2hkTzkxbnVXamMrMzNHb3JuTHovd0ZUanRKR0FlN1krTy9RanN5MmNENnAxcGZmWDJqYUJVMWVvTURzb21iYzJaUE54Q3VmZXJYcm5tZjYvWWZNVEVWSHV5YVdjeGYyY3hZOHNncklya3M1VkhGdVZ2RU1kUkU5cVpienQ4aWxzT21qRzAySWlLNUx4YXQzdGR5dnpSTXBmQ2swVlhCRTZFb3VxdzJKQ1ZZaHM3dDhjVGtndHZhR2FJdFhjZVZCVlJDRUFJOGxydDJWNjZXRmdFWFF4UzhUNHJ1TzNteXo3QXdwZFNyM202aWI2QnVzYUE0dDZhQldXays3WGs0Sm1jNVM1UzdkRis5LyttdW9rVkYvdWNXNUtWUVZsTkZKbmNYMXpZZHFCYVYzc0Jyc3B0d3ZpdVlIcjN6ajlhRU9Rc2xINE1lUFhzMWk2eXI1WENCdE1UWklaWkdEcnRJc1hpWEgxTjRVeGUrT2NQVkJlS0h5TFAxd1dUOGsyTkV0SFVvVnZHcHRGYjdhRnlhVjRCWitsY01CVEl5YnVxZlhmVno3RHg1a1lkeFJ2Y2R0bkJVRzBuTmx5OGdMQng3LzlWZ3ZLZWExSnJhQ2tNWTRtNHhJQWJvNGtKTkN5Y0xJNFR1TzdLeUJFaGFPMTNXQzJaRURQTWxQcHRRTDVUQ3RPNklPdWx4L3Q0NFRVcXJnYytpWjNLS3VPbW1SZ2tzbFN5aXlJSlVSb1c1SFBSUzd0TnBZSWNvdFM0SWJLZzZrVm1VMFh1NEREWjRvZW1GQ3VPQ1VVbS94YkxYQXI3Z1hoSFFUNm1BZGRTdDFjRXlKbk04SkNpSTN1TWozN05DeGs3Zk12VWIwUjNhS3c2djI5dWg4Rmltc0ZQVmNHNEtyM1d1MWlYRjNMbkkvc08vYkpCbGtORmJGRzVxdnJLQ0ZhMm9peTcxYmhhR2g1SGhldkNpWnh3M0lkMmtyTDZyMUlnbWF3cGkxa3E3RlVYQ3UwZVJ0V1paN3kzQ2NTVW9MMk50ZE1vWmpLRm1pOUFheFRiNDcwNXllZ1dla2NkTVNFNWxrVHlkc29qY1hrWWVxRjRUa1Uwcm1Pelg5TS9VcXJyQXV5Vm5tRWVXQWo4ZFJZcW5jYUFFRDUybVBUZktMTnMyenJHTUhaWk01elBJaEV1QjMreVlabGplMnh4bWFyNnlraFdWTDlHcU5Eb2pqaXVLVCtUN1hpdkowUlBhR00yc0dsMGZic2laSzlBYit5QWJkc1kyNHhzcDFrMVl3U2ZET0V2dGNVSThmV0ZQc0EwNXBjTDZ6eFFaTHI1Mnh1enRYN0FoR284K0RnVnE1M0dIUzhDcURIQjVPcCtEd3RLZ3dERDBLN0lod0ZMdE5DdzVaWUJsUlllRlVNamFTS296THh0MjI0UU54dXdYVS9vV2VPeFEzaW1WRW90SDB5QjNOazBKRDZTUWcxbWE3RzhMR2xQYitzb0dqVThJd05DcGV6MmhVV0RpRERGWTAyRFUzT0F4RWgrZFQ4dnFVZzV4SkpCMTU5RldCYXRrNGVjSmJqVEYwOWFTcTJ0UElCdHV0RU5HdEVQb3V5V3ZEL2xDalgxZ09LYXRQN3B0QzBzdzc1THpTQmxmcW91Z2pXbFdOSjhRYTI0UGI0WWNPcFpId09DTUV6RGc1VmFRR01hNlV3Z2lDZ2tZaktBdnhGQlB4QktXdUtLc0FIVVZIWTZ1NG9aQXZWc0pxeDVKblFxUm9kTloyUHRDaitXamdLdC84MHRIdEUyZnluWjBMZEcvbUFLRFVQYkUxbFhlOGZ2THBwSjNOK3NpbWtZVHR5c2xId0dlTFA3RDNNUm9lL0tDNUQzdjdtUHYrRThFM1BEZ1l2UVJpVWdjNEcrTG81UEJ3R3NWQjlUR01LQ0FPZEJTNWFkbkZ5Q3B2alhvdDZkalBiVmlNcWQzNFZzRU9VZWhlbS90cnRHYnRPSzZNWmpTYXNoeEhuM0tNUGpaM1o2UDIwYmlNbmU2NHp1ckRGOGw3QjhpUjRyTm5oU2l4UEVBMmxnNzBrMGx2aEFrVFRyeFk2MStqckd0NjM5b2pzT2hHeDlYMXV2Zk1PYlFvK3huN0tDYU5PYkQyMW5TSEszMVA3K0hrdE5Sb1Nac3FyN3BhM3p4TEw2K202RWxvRUpOV29yNUhwNEg4aGlsdHIrUm4rdGpnU2VMR21rbzl0UXo5amRXcU5rbTdRbzN2MDBqVGpyUHJhd05NSm8xcVAyTlAvVW93MzllOXhVRE5KcUwyY29ZQWFBM1lXU0RZbU1YTlNjSXMzS25WTkQ5YjlGOEVyd1p5QjU2SkRWV2dIMWd5TTN0MUZxTHZOclYxajVDWE1DazB3V0xFSFd0dWlWTlNBelNSNnVnd0Noa3c1cHZLQlBOUjdNRzJiWGhnVGVNL2MzZnZ3MDl6Y2VDQjhZTkdqTG9LMTIySjhUYkl6S3V3M041OTV2WGZXWkRiWHZHQjlSeGZKQmltZmYzM2dRK1RiN2gwNTZjWjJDUU9VNmw1eTA5MTFuWDBkMU51Q3BqQWxCUDFXZExjM1BUTWVrMGVuVUZ2ME13a0kwVUMrT3hOMVNxSEdNeVJ5Z3hwd0tzTktac3BIYTVjVnE4WVF0aWxEZ2lGSTdKMDRiQldTVTBkRkFxRzAyV0NrZEFvcFZ5a1VHWW1aMVdraUpTRkdSbnluUVc5ME5oTG1rS0wxWHUxL0hKREIxRlBRR1FtUStiM3FXN1A1SldxY0JaQmdEMUpDQTJDVVRrY1NMNWlmMCs3T2FKd2tUUm1SNnAxTHRGQmFCSnNmQ2RuWTAxc2RZcyt4OEtxWC9NUHdHandaU3E4RDhhY2ZwdS8rYi9la1hqcGVOd2hWcjhaejN6NWU3MzU2QWw0dzc0R2JENXZHZzJvaUl0djFiLzZsSWpvalVKTVhCQlZFMEgwY3NuMW96Nkx4WXVremxIMW9Ccmc0MmJEOWhFTkg4NjErWnpkZkdoMzk3dFRlUWNzODJrTi91Zm4wOFVIdnNIY3NLWm01Z3pUTUVHbkVkRm9qbktnd0lqeGNhUkZmTE8vNVE1NWw3SFliSTVzZXRUOEhzdS96cC9XUHgzOHBvcmlPNXFpYWpqNEViTW13N0RzeVFCbStxVEZCMGZYaCtVaGs0d2JyZFpsY1dONVYweGZXb2pXRVZHd1ZTWmlHU0ZzV1Foa3lpaFlmMEZ4bU13c3liamI5bHhzNkVoZVUvTTVuYlJiSXdxWFNHTzJRSzF6bVE0Q0FPeXl5bWduZlI5eFpWbG9yMFdXUUhHSTVYdlZTdmp1OC9MbC96L0JwZEFtNzhMVW1wQ1J5M2l6WHJPQWdxTnZvQ0c0bzJYZzlxKzhrZjBvejFZanNIZElRUFFpeUtVRFFXUWZZNUh3QnVYQzg4M2FjaHZlYXRwd0U1djNiTjRlMEIraVJZTVBzcGpmMVdUUDFnTWVZZ3U2b21laHRXajZncWtKaWllMURsb3dMdHNzTjdzVlJlaXB4WFNNb2NrUklhR2tDQXlHUkFnSkloTkRQendTUTBpRUV5TUdCNU1KZ0Y1WE1Pa3c2Y3Nlb0NxZ21IRlV1OS95dU1IUjB5aktPWERad2JTS0VBY1oxTmtQcnNSNW9TZlJ1SVZUN012UTVJWDBwVHVtT2YyK3hyWnhDWmY0NzF0bUpod0t6a0dEc00zL3NjSVFBYytraTg5U2pqczNnZ1Z2SzUvZDNmcnNkbEFpL2ZGWkJ5ekZ4WFUwMGtMSFJ2YmMxOTAxbkwyNzhVOU9BUGx6VzVvQ05zNi9iZFVZdlJjejBESGppYkUzang2THVhRkdwbXY2eHJHamNUY1ByNUFkRHVTSGVCMHBLZkZxNFljR0J2RkNnNmU0ZUY4ZUd0LzU5RG14bUp2UEQ3MDBIbmNEQW04Ym51cEdBUjhUeE5aOXBvUC80STVPZTFuQkdndlVwMTVTNTFnb0JmU1JBM2ZKK2hiY2NiZmNjV3Y1Kzlnc1YyV1VzbUI1U0RCV2VveVJ5NzJlY05tQW1IZmZwUXBSWWkyTjNKSWpScnNuZVMwc3R0SCtZS2ZHNURmSHZIYXQwRUI1L0tRbUxxbGJMQmFya2RzVGhGMHpTWEsySUVjaUZlU3ltZEU1YWRMb1BPWDdpak1KSW5Fa3NFWklCSGtzbGxDckN2UEFpdG5pckN4cHVyUFRqUXhrN2xJTTZtYWRuYVZTWS9xamYrRkpnV2YxVGMreFd3K3FGM0R2VkpmZlFsbzBiVjNiWmY4a2pIWlJrWnRTUmJNazdEZWZwaVVsamF5cFd6b3VqUGRBalZGR1pTYW9YTDBJSVpzbjVzWmlhdjBNTGl4eFRGVTZ4NFFObWthWkFRM0pkTjZjM25tZXVtcTVYOHNJamdqeUZ6RDh6cDkvR0dOMGJQT0FjSDBORXJkK09kN2w5Yk5sN21ldVdNVmRpQldyeTVDZENXYmJHaUFHQy9mREM2dEViYVBCdmR4Ym5MZXFwRExEME5Yc0lrUDNqQ0YwcEp3YllpOU9TT2ZqL1RoQy8xZjdtbjZYcFp5dVNDUU1sOHQ1dHRtSlFvK1lGckdBV2FVbWxWYWU1S2F0ZDRYREQwR3hpMUFzdERGOHMvMi9Bd1ZnNjVNNzIzUStqTkErNmVFZjc2YVY3SHNJcERoYjRNQjVEbGRoOUNFNENUN0lNdTZDMFVSNURqNGtYeHcrZ2dGWnRtdENOYlFYTTJtbEVTNXlsdHFGNm80aHNnWFFZVEh0bHZXTjh0NDNTeHVlSnM0OVlEck5tMENtSFM2YlZzdkc1cHpFcEk2Ym5NT0Vhc1BGUVN4RWJ1QVJWK3pxUjNZUHhwTG9rR08yTGFpNmxsSWVvd3pZM2xaNU5hZjlwT0Q5Q3hCMXYzTG42VkxNaVpmYjNUZWU5TjJ4aTljZkxSN21NYTJLV21vYkR6WFhsN2dsN0s4N3ZKM0J5WHpXd1IzdVJWMjRUb1RjWjZnaGVLNi9EaDBjZ0I4L1BvQ0FEcTJ2RXlHRmRIaloySkxhOHppVlAvV0wvdTg5VHl0U1B1dy93RGxQTS9iMHY2NGt6NEg5bng1UDBsMC9CTjFPU3hNbmlFcVRLaE4zUEVKdUcycFRKYlY1WU1iTHhlNXRMbTNoTVVOZmZ1RjZpUjl3NmY3ckkzT2NnczlWZXA2ellBSkJMVUk2SGh1bmxramp4c2JqcE9ucXVQZ3hxU1Jlclk2VjFDWVVxeVRweGNxRWhCSmx1cVJFQlE1T1BPeExOUnJkWjc3c0t3YjYvMDk5UDNDQUlhUnJ5WHBMSXQwMnBmcmxxMHFVb29UU3RpOTNaV1hYZkkveFRTVyt1dzBVOTlyWTlaVTcvbDlYRCt2czU2RDlYdVdWNCtKcGszMHIreWVQd0swQmZ0dkU1VGJZOUppRTRNSUNnc1F2SkJRYkZoVEEvbFdTRTdCUWp4QkJIZUJRRHljUXc0TkNpQk52ZTBqUU9LdTZsMy9sVFF4dXVFZVBpZVdDNHFYeEp4dnFINzVEU3k2T0J3Y09kVStFRzNNRkFra0tvL01VNVgxYThMMmYyUng4WXVuOXhNN3ZHVmlzZTdtekxCS3Q4Q2Eydm15SHBoWjhaSTRIQzhYMHhKbmErckVkVlMxNElsQWtVdXViNnNHaWFjOVlvL0NFVGlIRVBsRGd3czV4UHBzemlKREkrQXhhamhEWTltYWkvL0wxK3hzZCtyZWY3MStvVUxNa0ZEMGVXUFVTN21pL3FOVys5NjNZdk96SmdRUVEvdEErOWZETm5YN3IvRktBZmtQbzU3ZnNxZTJaOVg4S3dnYWxMOCtzRlVPQ093VnhiUXZxaklUV0dGKythU1dOaEhCOHRHQ0kwQVl3cC8xVG9Vc0pkdkVRTnd6T3dkVU43eERtTm54YmptY3FPQ3hta1FEUURHQUhnR1pDSWRUSm85ekp2VHpoalBXV2xIUzgveTZDa3p6S0hmWmdyTSt0czZUTDRCUWNnNTNnVzFBQmNIYm5RYmpNcmNPZEdUcTVMZTR6UUhOd0RIYkJYc2dSN3laY0tVNGU1UTU3SExSbklNSHVEOXdhVW5RdmdOd0pxUWFmNStpa0NxNTNjcEdEbk9TS0RST1hyTTJZY2hmY0xSYzVZT0ljZWhHVWpvSlRNQWRMTUFTalFHWk1XQndHUkNTaHlwWkpuRlRCVDUxYzVDQW5iRGozTHZpNVhPU0FDYXZ1Z204amlCQ25pTFZuTlliNGp2ZXJsNkhSSkpRVkVrbkpNTnVJam05cGtHOGFkbTlURDA3aU40RTJ3eUZuZkJnZjRVZFQrYUY4SGVlNzBVdXpheXdPQ0h2V2NnVE52TnFUcWtFL1RWWVRHV0cwUjIvNktONHZGT1Z0WjM0dkgvVG9DOFJUN3VGK29SOFBDQU40dUhNNGpYaEVHTUZqNmJHc3o4ckhDSTNlZU14SUcrdGlQYXlQRGJBaE52cEZaQXlPMnVMSjArV1pHY0tuNkJWWldlRHpEK0FKL0hrd29zbUZBZkFtanpjQjFvSHB6RVdFTGVmbkM5Mk52SzFaUmhQcnAyRlZZRnhSSzBZbGZtUzFROUZleTNBSjlPaDM4d0hxR09TTzFJN0RKM0ZzT2pCbnNzeHBUekZienM4WHZlMEdaaEVJZnY0UjlSMk1Md05VTFY4MDAzZmV2UHJYcSthZ2NqaUVpRVlNQ0ZsRzQ4dEdzSkF5ZWwrdEdFVnhxaDRIY3Y5TWd6TFF6ZzQ5NVFUc0M1MGJ6cHR4RXpEVkEzTEpsdkRTSW1rekU4ckEySURHeU9FWmdtSlVEdmY5R1pCZEgvdGtNVVJ4RERPWEp4T09HSTlEMlhMZGNKcm50NTZqY3lheE9GcEFqNTZaNEZ3ZmhzRTByS2hGdGRjMU5vTnZ0WGRleHIrRjZwcVU3UXB6RVBrcWNXR2hFa1JqLzl0ZkpxS3M1STdaUzVhYmxCWTFXUVdITURDT21zUktNdG9ldFJMcTBSd3ZFVG1ZSERBSGlSaXF0WmFMVXRpLzlnbWVBVzdiRzNwNnF5TUZudmhxZnZXL0U2OWZubkdRanZIV0ZLejhRbnV2QlEzWWNXSVZZNmhyenhIaFRzSitZR1lFTk9PMFRROXpmbG5HN1hEZi9DalFQSkxST0JFN0Q2ZlhKK1YxNjByZGRyclNYZEgvdit4blhkVkh2WHBVSmlDZ3kvbUFmMWhhazNmOVhjVmxIZ0srKytTMERRRGZyL2UxbEdaUzI1WHBLNEhBREFNSStQY1gxc3J6RmM4L3dURWg5SG1VL1VhSDZpbUM2dVpaUk8xb1FsQTE5bHF6Zk5xdDZuSGo0NHdxbHVtejBEcnE2R3NLMUY1MWNBRDZrdC9HbDVaSUFIYXlJT0RvSkZIMUFOMjB4clA0WlkyMzJIWk1NaXY3Ykh2ekhjM2twaU4yVXpWLzlCVVI0YVJSMG5xOGhoQzRuOXZRVnJWTzh6eHo2WTVHb2JLZUw0U3dBb2hmaTJDUDlvcHliR1NKc3J3WGg5YXk5bkt5VG9ZNDZERXdlb1lUbzNkVzJ3M1BmRzNaS0tHNU53bWVCWTNXMG8xRVNQdklYL1YrVU5CMGduSm5ndXpJa28ya0R5WUdISVl5aGd2VHVGN1BvL2NyYTEvUjh6ZXVKM0h0bmJ6SFAydmJIL3orbmVGZ2dkVm9aajVVekJ3SEpmU2IyT09mWld3N2oyTldNTnlEelJBRFpwQUJPVEFIWmtuKzNZZ0xGTUVNOEFkTm1BL3p3QUdzbmw1bUtjNTRUcXlXci9qc3N0czhsbi9laXZCTXUyL1VPSktYOTJQMERTZnl0TDRGOUJxQ2NVeFlPd2phY3lEZjJwekI5aEVsQXI5ZzJIRUpmdlduM2FYUlV5aUgyc0d4dmxRSmF1V0N4UXJBdUU5b3V4RmFJdDRUQ1NKcExTd1NVc1N3RmlWNXRtUlIvcDVkMTRiVUwyL0JRbFpleVFjdzlDakFqZXNQQ0JuSHJOSjR6VWtvY0dMQ3pERlFSc2tLR1ZaQkVIaWhtY1FiMXc1eUhTNUtzRWVmRk9jbWdtZXlVOXFORUoxa0Y5bFdzeFVyM3RhVnlBMU1ESENERU5penduMktWTEtBUmEwMTAyK1o0NjM1ZzJ2ZHZDL2YzRzA1SzdyaytpTTVMYXF0cHY2cU1yNXh6UHVsK2VwMWFPbzFjZ0Q0RitRamhTWDdDN0F0UENLc2tsNFlEdjRpYVh0K2dRWlVDTnhxNTRIZllwRGZ3YjN2cWlCVUNnVGtVR0ZrUkNDSDNza2JjR0JURitIUVlBQllBcmNhOFNaZGpaR0w1MnJjM014MkUvSFZKTFVjWGszam1wYlZjdXp6WTdVQzIyYTJTaEc3cmV4QkFDRnVOUUptSzZpSStVQ280VUdwV3h1Um0xZGNJSk9tSzZ4OXZiZWtOYStBTkp1WWs5TEVVNzBrcThBZ2c2ZWsyamlsZ2crWld5QzNkczR4bnlKUEh1TGxKWlZGQjVYSm5xZE10dGNGejhuSUNsU1NGZVdXZXBXeVBiamkzSmE3dUErZEtwbHR6VWtqdW84VlRvT3AxcEhodmJTZVFZWTR1OUpTcDB4dDFzU2JqdWZLclJsUmExSjlOYS9LQTVNUklVNC9EY3FVMmVYbmt5cXp4QVYrbnQ3TWpRd2xNWmxUU1NpMC9NVVhiUW4yQUFGbGxNdFNYZGJtS010WVhCcWlQRVg4Wko3Q1JFODV5eUlxSnBQVzN1RE1TQnBUemdXRVlZVVJrMlNwQ3M0b3NIdTJXSzNxelJQeGdBTT0nKSBmb3JtYXQoJ3dvZmYyJyk7CiAgICAgICAgdW5pY29kZS1yYW5nZTogVSswMDAwLTAwRkYsIFUrMDEzMSwgVSswMTUyLTAxNTMsIFUrMDJCQi0wMkJDLCBVKzAyQzYsIFUrMDJEQSwgVSswMkRDLCBVKzIwMDAtMjA2RiwgVSsyMDc0LCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKICAgICAgfQogICAgICBdXT4KICAgIDwvc3R5bGU+CiAgICA8c3ltYm9sIGlkPSJkZW5vIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgYXJpYS1oaWRkZW49InRydWUiIHJvbGU9ImltZyI+CiAgICAgIDxwYXRoCiAgICAgICAgZD0iTTEyIDBjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnMtNS4zNzMgMTItMTIgMTJTMCAxOC42MjcgMCAxMlM1LjM3MyAwIDEyIDBabS0uNDY5IDYuNzkzYy0zLjQ5IDAtNi4yMDQgMi4xOTYtNi4yMDQgNC45MjhjMCAyLjU4IDIuNDk4IDQuMjI4IDYuMzcgNC4xNDVsLjExOC0uMDAzbC40MjUtLjAxMmwtLjEwOS4yNzlsLjAxMy4wMjljLjAzMS4wNzIuMDYuMTQ1LjA4NC4yMmwuMDEuMDI4bC4wMTUuMDQ1bC4wMjEuMDY1bC4wMTQuMDQ1bC4wMTQuMDQ3bC4wMTUuMDQ5bC4wMjEuMDc1bC4wMjIuMDc5bC4wMTUuMDU0bC4wMjMuMDg0bC4wMjIuMDg4bC4wMjMuMDkxbC4wMjMuMDk1bC4wMTUuMDY1bC4wMjQuMWwuMDIzLjEwM2wuMDMyLjE0M2wuMDE3LjA3NGwuMDI0LjExNGwuMDI0LjExN2wuMDI1LjEybC4wMzUuMTc0bC4wMjkuMTQybC4wMzcuMTk1bC4wMi4xbC4wMjguMTU1bC4wMy4xNThsLjAzOS4yMTdsLjA0LjIyNWwuMDQuMjMxbC4wNDEuMjRsLjA0Mi4yNDZsLjA0Mi4yNTRsLjA0Mi4yNmwuMDMyLjIwMWwuMDU1LjM0NGwuMDIyLjE0bC4wNTUuMzZsLjA0NS4yOTVsLjAzNC4yMjdsLjA0Ni4zMDhsLjAyMy4xNTZhMTAuNzU4IDEwLjc1OCAwIDAgMCA2LjUyOS0zLjQxMmwuMDUtLjA1NWwtLjIzOC0uODkxbC0uNjMzLTIuMzdsLS4zOTUtMS40N2wtLjM0OC0xLjI5NmwtLjIxMy0uNzg3bC0uMTM2LS40OThsLS4wODEtLjI5N2wtLjA3My0uMjY0bC0uMDMyLS4xMWwtLjAxOC0uMDY0bC0uMDEtLjAzNGwtLjAwOC0uMDI2YTYuMDQyIDYuMDQyIDAgMCAwLTIuMDM4LTIuOTdjLTEuMTM0LS44ODctMi41NzMtMS4zNTEtNC4yNTItMS4zNTFaTTguNDY3IDE5LjNhLjU4Ni41ODYgMCAwIDAtLjcxNC40bC0uMDA0LjAxM2wtLjUyNyAxLjk1M2MuMzI4LjE2My42NjUuMzA5IDEuMDA4LjQzN2wuMDguMDNsLjU3LTIuMTE0bC4wMDQtLjAxNWEuNTg2LjU4NiAwIDAgMC0uNDE3LS43MDRabTMuMjY0LTEuNDNhLjU4Ni41ODYgMCAwIDAtLjcxNS40bC0uMDA0LjAxNGwtLjc5NiAyLjk1M2wtLjAwNC4wMTRhLjU4Ni41ODYgMCAwIDAgMS4xMzEuMzA1bC4wMDQtLjAxNGwuNzk3LTIuOTUzbC4wMDMtLjAxNGEuNTg1LjU4NSAwIDAgMCAuMDEzLS4wNjdsLjAwMi0uMDIybC0uMDE5LS4wOTZsLS4wMjctLjEzOGwtLjAxOC0uMDg2YS41ODQuNTg0IDAgMCAwLS4zNjctLjI5NVptLTUuNTUzLTMuMDRhLjU5LjU5IDAgMCAwLS4wMzcuMDlsLS4wMDUuMDJsLS43OTcgMi45NTNsLS4wMDQuMDE0YS41ODYuNTg2IDAgMCAwIDEuMTMxLjMwNmwuMDA0LS4wMTRsLjcyMy0yLjY3OGE1LjI5NSA1LjI5NSAwIDAgMS0xLjAxNS0uNjkyWm0tMS45LTMuMzk3YS41ODYuNTg2IDAgMCAwLS43MTUuNGwtLjAwNC4wMTNsLS43OTcgMi45NTNsLS4wMDMuMDE1YS41ODYuNTg2IDAgMCAwIDEuMTMuMzA1bC4wMDUtLjAxNGwuNzk3LTIuOTUzbC4wMDMtLjAxNWEuNTg2LjU4NiAwIDAgMC0uNDE2LS43MDRabTE3Ljg2OC0uNjdhLjU4Ni41ODYgMCAwIDAtLjcxNS4zOTlsLS4wMDQuMDE0bC0uNzk3IDIuOTUzbC0uMDAzLjAxNGEuNTg2LjU4NiAwIDAgMCAxLjEzLjMwNWwuMDA1LS4wMTRsLjc5Ny0yLjk1M2wuMDAzLS4wMTRhLjU4Ni41ODYgMCAwIDAtLjQxNi0uNzA0Wk0yLjU0MiA2LjgyYTEwLjcwNyAxMC43MDcgMCAwIDAtMS4yNTEgMy45MjZhLjU4Ni41ODYgMCAwIDAgMS4wMDItLjIybC4wMDQtLjAxNGwuNzk3LTIuOTUzbC4wMDMtLjAxNGEuNTg2LjU4NiAwIDAgMC0uNTU1LS43MjVabTE3LjU4NS4wMmEuNTg2LjU4NiAwIDAgMC0uNzE0LjRsLS4wMDQuMDE0bC0uNzk3IDIuOTUzbC0uMDA0LjAxNGEuNTg2LjU4NiAwIDAgMCAxLjEzMS4zMDVsLjAwNC0uMDE0bC43OTctMi45NTNsLjAwNC0uMDE0YS41ODYuNTg2IDAgMCAwLS40MTctLjcwNFptLTcuODQ2IDEuOTI2YS43NS43NSAwIDEgMSAwIDEuNWEuNzUuNzUgMCAwIDEgMC0xLjVabS02LjI3LTQuNzMzYS41ODYuNTg2IDAgMCAwLS43MTUuMzk4bC0uMDA0LjAxNWwtLjc5NyAyLjk1M2wtLjAwNC4wMTRhLjU4Ni41ODYgMCAwIDAgMS4xMzIuMzA1bC4wMDMtLjAxNGwuNzk3LTIuOTUzbC4wMDQtLjAxNGEuNTg2LjU4NiAwIDAgMC0uNDE3LS43MDRabTEwLjIzOC41NThhLjU4Ni41ODYgMCAwIDAtLjcxNC4zOTlsLS4wMDQuMDE0bC0uNTM2IDEuOTg0Yy4zNDcuMTcxLjY3OC4zNzMuOTkuNjAzbC4wNTEuMDM4bC42MjYtMi4zMmwuMDA0LS4wMTRhLjU4Ni41ODYgMCAwIDAtLjQxNy0uNzA0Wm0tNS4yMTEtMy4zM2ExMC43NiAxMC43NiAwIDAgMC0xLjExNS4xNThsLS4wNzguMDE1bC0uNzQyIDIuNzUzbC0uMDA0LjAxNWEuNTg2LjU4NiAwIDAgMCAxLjEzMS4zMDVsLjAwNC0uMDE0bC43OTctMi45NTNsLjAwNC0uMDE1YS41ODMuNTgzIDAgMCAwIC4wMDMtLjI2NFptNy4zMzIgMi4wNGwtLjE1Ni41OGwtLjAwNC4wMTVhLjU4Ni41ODYgMCAwIDAgMS4xMzEuMzA1bC4wMDQtLjAxNGwuMDE3LS4wNjNhMTAuODM4IDEwLjgzOCAwIDAgMC0uOTIzLS43NzJsLS4wNjktLjA1MVptLTQuNjM2LTEuOTQ0bC0uMjgzIDEuMDQ4bC0uMDAzLjAxNGEuNTg2LjU4NiAwIDAgMCAxLjEzLjMwNWwuMDA1LS4wMTRsLjI5Ny0xLjEwMmMtLjM1LS4wOTctLjcwNS0uMTc2LTEuMDYzLS4yMzdsLS4wODMtLjAxNFoiPgogICAgICA8L3BhdGg+CiAgICA8L3N5bWJvbD4KICAgIDxtYXNrIGlkPSJtYXNrLTEiPgogICAgICA8cmVjdCB3aWR0aD0iMTY4IiBoZWlnaHQ9IjMyIiBmaWxsPSIjZmZmIiB4PSIxNiIgeT0iMCIgLz4KICAgICAgPGNpcmNsZSBjeD0iMTYiIGN5PSIxNiIgcj0iMTYiIGZpbGw9IiNmZmYiIC8+CiAgICAgIDxjaXJjbGUgY3g9IjE4NCIgY3k9IjE2IiByPSIxNiIgZmlsbD0iI2ZmZiIgLz4KICAgIDwvbWFzaz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iZ3JhZC0xIiB4MT0iMCIgeDI9IjAiIHkxPSIxIiB5Mj0iMCI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNjY2MiIC8+CiAgICAgIDxzdG9wIG9mZnNldD0iODAlIiBzdG9wLWNvbG9yPSIjZmZmIiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHJlY3Qgd2lkdGg9IjIwMCIgaGVpZ2h0PSIzMiIgZmlsbD0idXJsKCNncmFkLTEpIiBtYXNrPSJ1cmwoI21hc2stMSkiIHJ4PSIxNiIgcnk9IjE2IiB4PSIwIiBjbGFzcz0iYnV0dG9uIgogICAgc3Ryb2tlPSIjYWFhYSIgc3Ryb2tlLXdpZHRoPSIyLjMiIC8+CiAgPHVzZSBocmVmPSIjZGVubyIgd2lkdGg9IjE4IiBmaWxsPSIjMTIzIiB4PSIxMiIgeT0iMC4yNSIgZmlsdGVyPSJkcm9wLXNoYWRvdygxcHggMXB4IDAuNXB4ICMwMDAxKSIgLz4KICA8dGV4dCB4PSIxMDUiIHk9IjIxLjUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHRleHRMZW5ndGg9IjExMCIgZm9udC1zaXplLWFkanVzdD0iMTAwJSIgZm9udC1zaXplPSIxMyIKICAgIGZvbnQtZmFtaWx5PSInRW5jb2RlIFNhbnMnLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmIiBmb250LXN0eWxlPSJub3JtYWwiCiAgICBmaWx0ZXI9ImRyb3Atc2hhZG93KDAuNXB4IDEuNXB4IDAgIzAwMDEpIiBmaWxsPSIjMTIzIj4KICAgIERlcGxveSB3aXRoIERlbm8KICA8L3RleHQ+Cjwvc3ZnPgo= "Deploy with Deno!"

[examples-splash]: https://migo.deno.dev/image.png?icon=deno&iconStrokeWidth=0.33&subtitleFontSize=48&iconColor=fff&bgColor=234&iconStroke=fff&titleColor=fff&subtitleColor=999&titleY=425&subtitleFontSize=36&title=Click%20here%20for%20example%20OG%20Images&subtitle=(or%20scroll%20down)&pxRatio=1&borderRadius=25
[example-img-0]: https://migo.deno.dev/image.png?title=migo.deno.dev&subtitle=Dynamic+OpenGraph+Images+on+Deno+Deploy&titleFontFamily=serif&titleFontSize=72&titleFontWeight=900&titleTextAnchor=left&titleX=160&titleY=110&subtitleFontSize=36&subtitleFontWeight=900&subtitleFontFamily=monospace&subtitleTextAnchor=left&subtitleX=40&subtitleY=250&pxRatio=1&width=1000&height=300&bgColor=111827&titleColor=fff&subtitleColor=ddd&icon=noto:t-rex&iconW=100&iconH=100&iconX=40&iconY=30&borderRadius=20
[example-img-1]: https://migo.deno.dev/image.png?icon=deno&iconStrokeWidth=0.33&subtitleFontSize=48&iconColor=fff&bgColor=234&iconStroke=fff&titleColor=fff&subtitleColor=papayawhip&titleY=425&subtitleFontSize=48&title=Edge-rendered%20OpenGraph%20Images&subtitle=migo.deno.dev&pxRatio=1&borderRadius=25&titleFontFamily=sans-serif
[example-img-2]: https://migo.deno.dev/image.png?icon=twitter&subtitleFontSize=48&iconColor=0cf&titleY=460&subtitleFontSize=48&title=Creating%20Dynamic%20Cover%20Images&subtitle=By%20Nicholas%20Berlette&borderRadius=25&titleFontFamily=monospace
[example-img-3]: https://migo.deno.dev/image.png?icon=nuxtdotjs&bgColor=112233&iconColor=00DC82&iconStroke=00DC82&iconStrokeWidth=0.55&titleColor=00DC82&subtitleColor=e0e0e0&iconW=300&iconY=50&titleY=460&title=Nuxt%20ContentWind%20Starter&subtitle=stackblitz.com%2fedit%2fcontent-wind&borderRadius=30&pxRatio=1
[example-img-4]: https://migo.deno.dev/image.png?title=deno911⁄+kit&subtitle=this+one+has+custom+alignment+and+size!&titleFontFamily=sans-serif&titleFontSize=80&titleFontWeight=900&titleTextAnchor=right&titleX=160&titleY=115&subtitleFontSize=36&subtitleFontWeight=900&subtitleFontFamily=monospace&subtitleTextAnchor=left&subtitleX=40&subtitleY=260&pxRatio=1&width=1000&height=300&bgColor=fff&titleColor=123&subtitleColor=456&icon=noto:sauropod&iconW=100&iconH=100&iconX=40&iconY=30&borderRadius=20