Generated banner for Company Logos
Generated logo for Company Logos

Company Logos

Meng ToCommunityCreated by Meng To

  • Skill
  • Guidelines
  • Design and creative
  • MIT
  • Medium risk

From the author

Use Iconify Simple Icons logos (64x64) instead of text logos.
— the description by Meng To

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The Company Logos skill provides a standardized approach to incorporating brand marks into digital designs. By leveraging Iconify Simple Icons, it ensures a uniform visual treatment for logos in grids, partner lists, and customer proof sections, moving away from text-based representations.

What it does

  • Defines the use of Iconify Simple Icons as the primary source for brand marks.
  • Sets a standard 64x64 visual box for logo placement.
  • Provides rules for monochrome versus brand-colored logo rendering.
  • Establishes alignment practices for consistent grid and row layouts.
  • Mandates the inclusion of accessible labels for interactive elements.

When to use it

  • When creating logo rows or integration grids.
  • When displaying customer proof or partner lists.
  • When you need to avoid embedding custom SVG files or plain text names.
  • When maintaining visual consistency across tool badges.

Advantages

  • Promotes visual uniformity by avoiding mixed styles.
  • Ensures accessibility through required labeling.
  • Reduces reliance on external or unverified logo assets.
  • Creates intentional, aligned layouts for brand marks.

Usage examples

“How should I display a list of partner logos in my design?”
The agent will guide you to use Iconify Simple Icons, set them in 64x64 boxes, maintain a consistent monochrome style, and ensure they are aligned to a shared baseline.
“Can I mix different styles of logos in my customer proof section?”
The agent will advise against mixing filled, outline, or bitmap styles, recommending a consistent approach using the specified icon library.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/mengto/company-logos/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip company-logos.zip -d .agents/skills

Documentation by Meng To

Company Logos Skill

Use When

  • A design needs recognizable brand marks without embedding custom SVG files or rendering company names as plain text.

  • Logo rows, integrations grids, customer proof, partner lists, and tool badges need consistent icon treatment.

Workflow

  1. Use Iconify Simple Icons as the default source for brand logos.

  2. Render each logo in a 64x64 visual box, then scale the inner SVG to the composition density.

  3. Keep logos monochrome by default; use brand color only when the surrounding design needs recognition more than restraint.

  4. Align logos to a shared baseline or center grid so rows feel intentional.

  5. Add accessible labels when logos are interactive or communicate important proof.

Guardrails

  • Do not use typed company names as a replacement for logos unless no icon exists.

  • Do not mix filled, outline, emoji, bitmap, and wordmark styles in one row.

  • Do not hotlink random logo assets from search results.

Files

demo/index.html

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="neuform-sandboxed-demo" content="1">
  <meta http-equiv="Content-Security-Policy" content="default-src 'none'; connect-src 'self'; frame-src 'self'; script-src 'unsafe-inline'; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none'; object-src 'none'">
  <title>Sandboxed Neuform demo</title>
  <style>
    html, body, iframe { width: 100%; height: 100%; margin: 0; border: 0; }
    body { overflow: hidden; background: #0b0b0b; }
    iframe { display: block; background: white; }
    .error { box-sizing: border-box; min-height: 100%; padding: 32px; color: #fff; font: 16px/1.5 system-ui, sans-serif; }
  </style>
</head>
<body>
  <iframe id="neuform-demo" title="Sandboxed Neuform design demo" sandbox="allow-scripts" referrerpolicy="no-referrer"></iframe>
  <script>
    const encodedHtml = "PCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtU2VjdXJpdHktUG9saWN5IiBjb250ZW50PSJkZWZhdWx0LXNyYyAnbm9uZSc7IGJhc2UtdXJpICdub25lJzsgY29ubmVjdC1zcmMgJ25vbmUnOyBmb250LXNyYyBkYXRhOiBodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tOyBmb3JtLWFjdGlvbiAnbm9uZSc7IGZyYW1lLXNyYyAnbm9uZSc7IGltZy1zcmMgYmxvYjo7IG1lZGlhLXNyYyBibG9iOjsgbmF2aWdhdGUtdG8gJ25vbmUnOyBvYmplY3Qtc3JjICdub25lJzsgc2NyaXB0LXNyYyAndW5zYWZlLWlubGluZScgX19ORVVGT1JNX1JVTlRJTUVfU09VUkNFU19fOyBzdHlsZS1zcmMgJ3Vuc2FmZS1pbmxpbmUnIGh0dHBzOi8vYXBpLmZvbnRzaGFyZS5jb20gaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbTsgd29ya2VyLXNyYyAnbm9uZSciPgo8c2NyaXB0IGRhdGEtbmV1Zm9ybS1hc3NldC1ib290c3RyYXA+CigoKSA9PiB7CiAgbGV0IHJlY2VpdmVkID0gZmFsc2U7CiAgY29uc3Qgb2JqZWN0VXJscyA9IFtdOwogIGNvbnN0IHJlcGxhY2VBbGwgPSAodmFsdWUsIHJlcGxhY2VtZW50cykgPT4gewogICAgbGV0IG5leHQgPSBTdHJpbmcodmFsdWUgfHwgIiIpOwogICAgZm9yIChjb25zdCBbZmlsZSwgb2JqZWN0VXJsXSBvZiByZXBsYWNlbWVudHMpIG5leHQgPSBuZXh0LnNwbGl0KGZpbGUpLmpvaW4ob2JqZWN0VXJsKTsKICAgIHJldHVybiBuZXh0OwogIH07CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgIGlmIChyZWNlaXZlZCB8fCBldmVudC5zb3VyY2UgIT09IHBhcmVudCB8fCBldmVudC5kYXRhPy50eXBlICE9PSAibmV1Zm9ybS1hc3NldHMtdjEiKSByZXR1cm47CiAgICByZWNlaXZlZCA9IHRydWU7CiAgICBjb25zdCByZXBsYWNlbWVudHMgPSBbXTsKICAgIGZvciAoY29uc3QgYXNzZXQgb2YgZXZlbnQuZGF0YS5hc3NldHMgfHwgW10pIHsKICAgICAgaWYgKCFhc3NldCB8fCB0eXBlb2YgYXNzZXQuZmlsZSAhPT0gInN0cmluZyIgfHwgdHlwZW9mIGFzc2V0LmJhc2U2NCAhPT0gInN0cmluZyIpIGNvbnRpbnVlOwogICAgICBjb25zdCBiaW5hcnkgPSBhdG9iKGFzc2V0LmJhc2U2NCk7CiAgICAgIGNvbnN0IGJ5dGVzID0gVWludDhBcnJheS5mcm9tKGJpbmFyeSwgKGNoYXJhY3RlcikgPT4gY2hhcmFjdGVyLmNoYXJDb2RlQXQoMCkpOwogICAgICBjb25zdCBvYmplY3RVcmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtieXRlc10sIHsgdHlwZTogYXNzZXQuY29udGVudFR5cGUgfHwgImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSkpOwogICAgICBvYmplY3RVcmxzLnB1c2gob2JqZWN0VXJsKTsKICAgICAgcmVwbGFjZW1lbnRzLnB1c2goW2Fzc2V0LmZpbGUsIG9iamVjdFVybF0pOwogICAgfQogICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIioiKSkgewogICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgWyJzcmMiLCAicG9zdGVyIiwgInNyY3NldCIsICJzdHlsZSJdKSB7CiAgICAgICAgY29uc3QgdmFsdWUgPSBlbGVtZW50LmdldEF0dHJpYnV0ZShuYW1lKTsKICAgICAgICBpZiAodmFsdWUpIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHJlcGxhY2VBbGwodmFsdWUsIHJlcGxhY2VtZW50cykpOwogICAgICB9CiAgICB9CiAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInN0eWxlIikpIHsKICAgICAgc3R5bGUudGV4dENvbnRlbnQgPSByZXBsYWNlQWxsKHN0eWxlLnRleHRDb250ZW50LCByZXBsYWNlbWVudHMpOwogICAgfQogIH0pOwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsICgpID0+IHsKICAgIGZvciAoY29uc3Qgb2JqZWN0VXJsIG9mIG9iamVjdFVybHMpIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTsKICB9LCB7IG9uY2U6IHRydWUgfSk7Cn0pKCk7Cjwvc2NyaXB0PgoKPG1ldGEgY2hhcnNldD0iVVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPHRpdGxlPkZsdWlkIFByb3RvY29sIHwgRmxvdyBBbmFseXRpY3M8L3RpdGxlPgogICAgCiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS1jY2M4ODk0YjM0MTgtcnVudGltZS5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS0xNjNlYmQwODdjZmMtaWNvbmlmeS1pY29uLW1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPgogICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbj4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW5zdHJ1bWVudCtTZXJpZjppdGFsQDA7MSZmYW1pbHk9SW50ZXI6d2dodEAzMDA7NDAwOzUwMDs2MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgCiAgICA8IS0tIEdTQVAgLS0+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS0wMjcwNTFlZmZhNDctZ3NhcC1taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Fzc2V0cy9ydW50aW1lL3J1bnRpbWUtNjg5Y2E4ZGRhNDRjLXNjcm9sbHRyaWdnZXItbWluLmpzIj48L3NjcmlwdD4KICAgIAogICAgPCEtLSBUaHJlZS5qcyAtLT4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9hc3NldHMvcnVudGltZS9ydW50aW1lLTJmMDFjNjljYmQyMi10aHJlZS1taW4uanMiPjwvc2NyaXB0PgoKICAgIDxzY3JpcHQ+CiAgICAgICAgdGFpbHdpbmQuY29uZmlnID0gewogICAgICAgICAgICB0aGVtZTogewogICAgICAgICAgICAgICAgZXh0ZW5kOiB7CiAgICAgICAgICAgICAgICAgICAgZm9udEZhbWlseTogewogICAgICAgICAgICAgICAgICAgICAgICBzYW5zOiBbJ0ludGVyJywgJ3NhbnMtc2VyaWYnXSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWY6IFsnSW5zdHJ1bWVudCBTZXJpZicsICdzZXJpZiddLAogICAgICAgICAgICAgICAgICAgICAgICBtb25vOiBbJ3VpLW1vbm9zcGFjZScsICdTRk1vbm8tUmVndWxhcicsICdNZW5sbycsICdNb25hY28nLCAnQ29uc29sYXMnLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgJ21vbm9zcGFjZSddLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29sb3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGdsYXNzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDogJyNmOGZhZmMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwOiAnI2YxZjVmOScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA6ICcjZTJlOGYwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwMDogJyNjYmQ1ZTEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgNDAwOiAnIzk0YTNiOCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA5MDA6ICcjMGYxNzJhJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgd2F0ZXI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDogJyNlMGYyZmUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAwOiAnIzdkZDNmYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1MDA6ICcjMGVhNWU5JywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIDwvc2NyaXB0PgogICAgPHN0eWxlPgogICAgICAgIDo6LXdlYmtpdC1zY3JvbGxiYXIgeyBkaXNwbGF5OiBub25lOyB9CiAgICAgICAgKiB7IC1tcy1vdmVyZmxvdy1zdHlsZTogbm9uZTsgc2Nyb2xsYmFyLXdpZHRoOiBub25lOyB9CiAgICAgICAgCiAgICAgICAgLm1hc2tlZC13b3JkIHsKICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogICAgICAgIH0KICAgICAgICAubWFza2VkLXdvcmQtaW5uZXIgewogICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMTAlKTsKICAgICAgICB9CgogICAgICAgIC8qIFN1YnRsZSBncmlkIHRleHR1cmUgZm9yIHRoZSBpbnN0cnVtZW50IHBhbmVsICovCiAgICAgICAgLmJnLWluc3RydW1lbnQtZ3JpZCB7CiAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IAogICAgICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCByZ2JhKDE0OCwgMTYzLCAxODQsIDAuMDUpIDFweCwgdHJhbnNwYXJlbnQgMXB4KSwKICAgICAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sIHJnYmEoMTQ4LCAxNjMsIDE4NCwgMC4wNSkgMXB4LCB0cmFuc3BhcmVudCAxcHgpOwogICAgICAgICAgICBiYWNrZ3JvdW5kLXNpemU6IDQwcHggNDBweDsKICAgICAgICB9CgogICAgICAgIC8qIEN1c3RvbSByYW5nZSBzbGlkZXIgZm9yIGNhbGlicmF0aW9uICovCiAgICAgICAgaW5wdXRbdHlwZT1yYW5nZV0gewogICAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKICAgICAgICB9CiAgICAgICAgaW5wdXRbdHlwZT1yYW5nZV06Oi13ZWJraXQtc2xpZGVyLXRodW1iIHsKICAgICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogICAgICAgICAgICBoZWlnaHQ6IDE2cHg7CiAgICAgICAgICAgIHdpZHRoOiA4cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzBmMTcyYTsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBtYXJnaW4tdG9wOiAtNnB4OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDAgMTBweCByZ2JhKDI1NSwyNTUsMjU1LDEpLCBpbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjUpOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDE1LCAyMywgNDIsIDAuMik7CiAgICAgICAgfQogICAgICAgIGlucHV0W3R5cGU9cmFuZ2VdOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgICAgICBoZWlnaHQ6IDRweDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDE1LCAyMywgNDIsIDAuMSk7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwwLjUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvKiBSb3RhdGluZyBwYXRoIHRleHQgYWRqdXN0bWVudCAqLwogICAgICAgIC5zdmctdGV4dC1wYXRoIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjwvaGVhZD4KPGJvZHkgY2xhc3M9ImJnLWdsYXNzLTUwIHRleHQtZ2xhc3MtOTAwIGZvbnQtc2FucyBhbnRpYWxpYXNlZCBvdmVyZmxvdy14LWhpZGRlbiByZWxhdGl2ZSBzZWxlY3Rpb246Ymctd2F0ZXItMzAwLzMwIGJnLWluc3RydW1lbnQtZ3JpZCBtaW4taC1zY3JlZW4iPgoKICAgIDwhLS0gV2ViR0wgRmx1aWQgQ2FudmFzIC0tPgogICAgPGNhbnZhcyBpZD0id2ViZ2wtY2FudmFzIiBjbGFzcz0iZml4ZWQgaW5zZXQtMCB6LTAgcG9pbnRlci1ldmVudHMtbm9uZSBvcGFjaXR5LTgwIj48L2NhbnZhcz4KCiAgICA8IS0tIENhbGlicmF0aW9uIENyb3NzaGFpcnMgJiBHbG9iYWwgRnJhbWluZyAtLT4KICAgIDxkaXYgY2xhc3M9ImZpeGVkIGluc2V0LTAgei0wIHBvaW50ZXItZXZlbnRzLW5vbmUgZmxleCBqdXN0aWZ5LWNlbnRlciBweC00IG1kOnB4LTggbWl4LWJsZW5kLW11bHRpcGx5IG9wYWNpdHktMjAiPgogICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBtYXgtdy03eGwgaC1mdWxsIGJvcmRlci14IGJvcmRlci1nbGFzcy00MDAvMjAgZmxleCBqdXN0aWZ5LWNlbnRlciByZWxhdGl2ZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzFweF0gaC1mdWxsIGJnLWdsYXNzLTQwMC8yMCBhYnNvbHV0ZSBsZWZ0LTEvNCBoaWRkZW4gbWQ6YmxvY2siPjwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVsxcHhdIGgtZnVsbCBiZy1nbGFzcy00MDAvMjAgYWJzb2x1dGUgcmlnaHQtMS80IGhpZGRlbiBtZDpibG9jayI+PC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHctZnVsbCBoLVsxcHhdIGJnLWdsYXNzLTQwMC8yMCB0b3AtMS8zIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gTmF2aWdhdGlvbiAtLT4KICAgIDxuYXYgY2xhc3M9ImZpeGVkIHRvcC04IGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgei01MCB3LWZ1bGwgbWF4LXcteGwgcHgtNCI+CiAgICAgICAgPCEtLSBUaGluIEdyYWRpZW50IEJvcmRlciBTaGVsbCAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJwLVsxcHhdIHJvdW5kZWQtZnVsbCBiZy1ncmFkaWVudC10by1iIGZyb20td2hpdGUgdmlhLWdsYXNzLTIwMCB0by1nbGFzcy0zMDAgc2hhZG93LXNtIHJlbGF0aXZlIGdyb3VwIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGJnLXdoaXRlLzUwIGJhY2tkcm9wLWJsdXItbWQgcHgtNiBweS0zIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXdoaXRlLzYwIHNoYWRvdy1baW5zZXRfMF8ycHhfMTBweF9yZ2JhKDI1NSwyNTUsMjU1LDEpXSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiI+CiAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjp3YXRlcmRyb3BzLWxpbmVhciIgY2xhc3M9InRleHQtd2F0ZXItNTAwIHRleHQtbGciIHN0cm9rZS13aWR0aD0iMS41Ij48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtZ2xhc3MtOTAwIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UiPkZsdWlkX09TPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtOCB0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UgZm9udC1tb25vIHRleHQtZ2xhc3MtNDAwIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC1nbGFzcy05MDAgdHJhbnNpdGlvbi1jb2xvcnMiPlRlbGVtZXRyeTwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC1nbGFzcy05MDAgdHJhbnNpdGlvbi1jb2xvcnMiPlN5c3RlbXM8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMiBoLTIgcm91bmRlZC1mdWxsIGJnLXdhdGVyLTUwMCBzaGFkb3ctWzBfMF84cHhfcmdiYSgxNCwxNjUsMjMzLDAuNildIGFuaW1hdGUtcHVsc2UiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvbmF2PgoKICAgIDwhLS0gTWFpbiBDb250ZW50IC0tPgogICAgPG1haW4gY2xhc3M9InJlbGF0aXZlIHotMTAgdy1mdWxsIG1heC13LTd4bCBteC1hdXRvIHB4LTQgbWQ6cHgtOCBwdC00OCBwYi0yNCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciI+CiAgICAgICAgCiAgICAgICAgPCEtLSBIZXJvIFNlY3Rpb24gLS0+CiAgICAgICAgPGRpdiBjbGFzcz0idy1mdWxsIGZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMTYgaGVyby1yZXZlYWwiPgogICAgICAgICAgICAKICAgICAgICAgICAgPCEtLSBMZWZ0IENvcHkgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgtMSBtYXgtdy14bCByZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSAtbGVmdC04IHRvcC0wIGJvdHRvbS0wIHctWzFweF0gYmctZ3JhZGllbnQtdG8tYiBmcm9tLWdsYXNzLTMwMC8wIHZpYS1nbGFzcy0zMDAgdG8tZ2xhc3MtMzAwLzAgaGlkZGVuIG1kOmJsb2NrIj48L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHAtWzFweF0gcm91bmRlZC1mdWxsIGJnLWdyYWRpZW50LXRvLXIgZnJvbS13aGl0ZSB0by1nbGFzcy0yMDAgbWItMTAgc2hhZG93LXNtIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS82MCBiYWNrZHJvcC1ibHVyLXNtIHB4LTQgcHktMS41IHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBib3JkZXIgYm9yZGVyLXdoaXRlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpyYWRhci1saW5lYXIiIGNsYXNzPSJ0ZXh0LWdsYXNzLTQwMCB0ZXh0LXNtIiBzdHJva2Utd2lkdGg9IjEuNSI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UgdGV4dC1nbGFzcy01MDAgZm9udC1tb25vIj5DYWxpYnJhdGlvbiBDb21wbGV0ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9ImZvbnQtc2VyaWYgdGV4dC01eGwgbWQ6dGV4dC03eGwgdHJhY2tpbmctdGlnaHQgdGV4dC1nbGFzcy05MDAgbGVhZGluZy1bMS4xXSBtYi04Ij4KICAgICAgICAgICAgICAgICAgICBPcmNoZXN0cmF0ZSB0aGUgPGJyPiA8c3BhbiBjbGFzcz0iaXRhbGljIHRleHQtZ2xhc3MtNDAwIGZvbnQtbm9ybWFsIj5mbG93IG9mIGNhcGl0YWwuPC9zcGFuPgogICAgICAgICAgICAgICAgPC9oMT4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtYmFzZSB0ZXh0LWdsYXNzLTUwMCBmb250LW5vcm1hbCBsZWFkaW5nLXJlbGF4ZWQgbWItMTAiPgogICAgICAgICAgICAgICAgICAgIENoYW5uZWwgbGlxdWlkaXR5IHRocm91Z2ggY3J5c3RhbGxpbmUgc3RyZWFtcyB3aXRoIHN1Yi1taWxsaXNlY29uZCBwcmVjaXNpb24uIEEgc3RyaWN0LCBjYWxpYnJhdGVkIGluc3RydW1lbnQgcGFuZWwgZm9yIHVuaWZpZWQgYXNzZXQgbmF2aWdhdGlvbi4KICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNiI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0icC1bMXB4XSByb3VuZGVkLWZ1bGwgYmctZ3JhZGllbnQtdG8tYiBmcm9tLWdsYXNzLTQwMCB0by1nbGFzcy05MDAgZ3JvdXAgc2hhZG93LW1kIGhvdmVyOnNoYWRvdy1sZyB0cmFuc2l0aW9uLWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLWdsYXNzLTkwMCBweC04IHB5LTMgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIGdyb3VwLWhvdmVyOmJnLWdsYXNzLTgwMCB0cmFuc2l0aW9uLWNvbG9ycyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemUgU3luYwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjphcnJvdy1yaWdodC1saW5lYXIiIGNsYXNzPSJ0ZXh0LXNtIGdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTEgdHJhbnNpdGlvbi10cmFuc2Zvcm0iIHN0cm9rZS13aWR0aD0iMS41Ij48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBnYXAtMSBmb250LW1vbm8gdGV4dC14cyB0ZXh0LWdsYXNzLTQwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TGF0ZW5jeTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ2xhc3MtOTAwIGZvbnQtc2VtaWJvbGQiPjEybXMgPHNwYW4gY2xhc3M9InRleHQtd2F0ZXItNTAwIGFuaW1hdGUtcHVsc2UiPuKXjzwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIFJpZ2h0IENsb2NrL0RpYWwgRm9jYWwgRWxlbWVudCAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleC0xIGZsZXgganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyIHJlbGF0aXZlIHctZnVsbCBtYXgtdy1tZCBhc3BlY3Qtc3F1YXJlIj4KICAgICAgICAgICAgICAgIDwhLS0gR2xvd2luZyBiYWNrZHJvcCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgYmctd2hpdGUvMjAgYmx1ci0zeGwgcm91bmRlZC1mdWxsIj48L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVsYXRpdmUgdy1mdWxsIGgtZnVsbCBwLVsxcHhdIHJvdW5kZWQtZnVsbCBiZy1ncmFkaWVudC10by1iciBmcm9tLXdoaXRlIHZpYS1nbGFzcy0yMDAgdG8tZ2xhc3MtMTAwIHNoYWRvdy1bMF8yMHB4XzQwcHhfcmdiYSgwLDAsMCwwLjAzKV0iPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBoLWZ1bGwgcm91bmRlZC1mdWxsIGJnLXdoaXRlLzMwIGJhY2tkcm9wLWJsdXIteGwgYm9yZGVyIGJvcmRlci13aGl0ZSBzaGFkb3ctW2luc2V0XzBfMF8zMHB4X3JnYmEoMjU1LDI1NSwyNTUsMC44KV0gcmVsYXRpdmUgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgb3ZlcmZsb3ctaGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ3Jvc3NoYWlycyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdy1mdWxsIGgtWzFweF0gYmctZ2xhc3MtMzAwLzQwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaC1mdWxsIHctWzFweF0gYmctZ2xhc3MtMzAwLzQwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gT3V0ZXIgUm90YXRpbmcgVGV4dCBSaW5nIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC00IGFuaW1hdGUtW3NwaW5fNDBzX2xpbmVhcl9pbmZpbml0ZV0gb3BhY2l0eS02MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyMDAgMjAwIiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvdmVyZmxvdy12aXNpYmxlIHRleHQtZ2xhc3MtNTAwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBpZD0idGV4dFBhdGgiIGQ9Ik0gMTAwLCAxMDAgbSAtODAsIDAgYSA4MCw4MCAwIDEsMSAxNjAsMCBhIDgwLDgwIDAgMSwxIC0xNjAsMCIgZmlsbD0ibm9uZSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dCBjbGFzcz0ic3ZnLXRleHQtcGF0aCB1cHBlcmNhc2UgdHJhY2tpbmctWzAuM2VtXSBmb250LW1vbm8gZmlsbC1jdXJyZW50IGZvbnQtbWVkaXVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRQYXRoIGhyZWY9IiN0ZXh0UGF0aCIgc3RhcnRPZmZzZXQ9IjAlIj5TWVNURU0gQ0FMSUJSQVRJT04g4oCiIExJUVVJRElUWSBGTE9XIOKAoiBTWVNURU0gQ0FMSUJSQVRJT04g4oCiIExJUVVJRElUWSBGTE9XIOKAoiA8L3RleHRQYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGV4dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2FsaWJyYXRpb24gVGlja3MgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTEyIHJvdW5kZWQtZnVsbCBib3JkZXItWzFweF0gYm9yZGVyLWRhc2hlZCBib3JkZXItZ2xhc3MtNDAwLzQwIGFuaW1hdGUtW3NwaW5fNjBzX2xpbmVhcl9pbmZpbml0ZV9yZXZlcnNlXSI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIElubmVyIFJpbmdzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0yMCByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci1nbGFzcy0zMDAvNTAgc2hhZG93LVtpbnNldF8wXzRweF8yMHB4X3JnYmEoMjU1LDI1NSwyNTUsMC42KV0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgYmctd2hpdGUvNDAgYmFja2Ryb3AtYmx1ci1tZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENlbnRlciBFbWJsZW0gLS0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LTIwIGgtMjAgcm91bmRlZC1mdWxsIGJnLWdyYWRpZW50LXRvLXRyIGZyb20tZ2xhc3MtMTAwIHRvLXdoaXRlIHNoYWRvdy1zbSBib3JkZXIgYm9yZGVyLXdoaXRlIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJlbGF0aXZlIGdyb3VwIGN1cnNvci1wb2ludGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0wIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXdhdGVyLTMwMC8wIGdyb3VwLWhvdmVyOmJvcmRlci13YXRlci0zMDAvMTAwIHRyYW5zaXRpb24tY29sb3JzIGR1cmF0aW9uLTUwMCBzY2FsZS0xMTAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6dHVuaW5nLXNxdWFyZS1saW5lYXIiIGNsYXNzPSJ0ZXh0LWdsYXNzLTkwMCB0ZXh0LTN4bCBncm91cC1ob3Zlcjpyb3RhdGUtOTAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tNzAwIiBzdHJva2Utd2lkdGg9IjEuNSI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEluZGljYXRvciBEb3RzIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSB0b3AtOCBsZWZ0LTEvMiAtdHJhbnNsYXRlLXgtMS8yIHctMSBoLTEgYmctZ2xhc3MtOTAwIHJvdW5kZWQtZnVsbCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS04IGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgdy0xIGgtMSBiZy1nbGFzcy05MDAgcm91bmRlZC1mdWxsIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgbGVmdC04IHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB3LTEgaC0xIGJnLWdsYXNzLTkwMCByb3VuZGVkLWZ1bGwiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSByaWdodC04IHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB3LTEgaC0xIGJnLWdsYXNzLTkwMCByb3VuZGVkLWZ1bGwiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPCEtLSBMb2dvcyBBcnJheSAtLT4KICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgbWF4LXctNXhsIG10LTMyIGJvcmRlci15IGJvcmRlci1nbGFzcy0zMDAvMzAgcHktOCBoZXJvLXJldmVhbCBmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgZ2FwLTEyIG1kOmdhcC0yNCBvcGFjaXR5LTYwIG1peC1ibGVuZC1tdWx0aXBseSI+CiAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic2ltcGxlLWljb25zOm5hc2EiIGNsYXNzPSJ0ZXh0LWdsYXNzLTkwMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzaW1wbGUtaWNvbnM6c3BhY2V4IiBjbGFzcz0idGV4dC1nbGFzcy05MDAiIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic2ltcGxlLWljb25zOnViZXIiIGNsYXNzPSJ0ZXh0LWdsYXNzLTkwMCIgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0Ij48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzaW1wbGUtaWNvbnM6c29ueSIgY2xhc3M9InRleHQtZ2xhc3MtOTAwIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNpbXBsZS1pY29uczpuaWtvbiIgY2xhc3M9InRleHQtZ2xhc3MtOTAwIiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjwvaWNvbmlmeS1pY29uPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8IS0tIEZlYXR1cmVzIEdyaWQgKEluc3RydW1lbnQgTW9kdWxlcykgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMyBnYXAtNiB3LWZ1bGwgbXQtMjQgcmVsYXRpdmUgZmVhdHVyZS1ncmlkIG1heC13LTZ4bCI+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIE1vZHVsZSAxIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWNhcmQgcmVsYXRpdmUgZ3JvdXAgcC1bMXB4XSByb3VuZGVkLTJ4bCBiZy1ncmFkaWVudC10by1iciBmcm9tLXdoaXRlIHZpYS1nbGFzcy0yMDAgdG8tZ2xhc3MtMzAwIHNoYWRvdy1zbSBob3ZlcjpzaGFkb3ctbWQgdHJhbnNpdGlvbi1zaGFkb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNTAgYmFja2Ryb3AtYmx1ci14bCByb3VuZGVkLTJ4bCBoLWZ1bGwgcC04IGZsZXggZmxleC1jb2wgcmVsYXRpdmUgei0xMCBib3JkZXIgYm9yZGVyLXdoaXRlLzYwIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItOCBib3JkZXItYiBib3JkZXItZ2xhc3MtMzAwLzQwIHBiLTQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOnJvdXRpbmctMi1saW5lYXIiIGNsYXNzPSJ0ZXh0LWdsYXNzLTkwMCB0ZXh0LTJ4bCIgc3Ryb2tlLXdpZHRoPSIxLjUiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdGV4dC1nbGFzcy00MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCI+TW9kXzAxPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ2xhc3MtOTAwIHRyYWNraW5nLXdpZGUgdXBwZXJjYXNlIG1iLTMiPkZsdWlkIFJvdXRpbmc8L2gzPgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtZ2xhc3MtNTAwIGZvbnQtbm9ybWFsIGxlYWRpbmctcmVsYXhlZCBtYi0xMCI+CiAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRlIHRoZSBjbGVhbmVzdCBleGVjdXRpb24gcGF0aHMgYWNyb3NzIHVuaWZpZWQgcG9vbHMsIGNpcmN1bXZlbnRpbmcgaGlnaC10dXJidWxlbmNlIHZvbGF0aWxpdHkuCiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im10LWF1dG8gcmVsYXRpdmUgYmctZ2xhc3MtNTAvODAgYm9yZGVyIGJvcmRlci1nbGFzcy0yMDAgcC00IHJvdW5kZWQtbGcgc2hhZG93LWlubmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTQgZm9udC1tb25vIHRleHQteHMgdGV4dC1nbGFzcy01MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlBhdGg8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC13YXRlci01MDAiPkFjdGl2ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNlLXktMiBib3JkZXItbCBib3JkZXItZ2xhc3MtMzAwIHBsLTMgZm9udC1tb25vIHRleHQteHMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtZ2xhc3MtNDAwIj5Ob2RlX0EgPHNwYW4gY2xhc3M9InRleHQtZ2xhc3MtOTAwIG1sLTIiPkNsZWFyPC9zcGFuPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LWdsYXNzLTQwMCI+Tm9kZV9CIDxzcGFuIGNsYXNzPSJ0ZXh0LWdsYXNzLTkwMCBtbC0yIj5DbGVhcjwvc3Bhbj48L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoLTEgdy1mdWxsIGJnLWdsYXNzLTIwMCByb3VuZGVkLWZ1bGwgbXQtMyBvdmVyZmxvdy1oaWRkZW4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImgtZnVsbCB3LTMvNCBiZy1nbGFzcy05MDAgcm91bmRlZC1mdWxsIHJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCBiZy13aGl0ZS8yMCBhbmltYXRlLXB1bHNlIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gTW9kdWxlIDIgKERpYWwgZm9jdXMpIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmZWF0dXJlLWNhcmQgcmVsYXRpdmUgZ3JvdXAgbWQ6LXRyYW5zbGF0ZS15LTggcC1bMXB4XSByb3VuZGVkLTJ4bCBiZy1ncmFkaWVudC10by1iciBmcm9tLXdoaXRlIHZpYS13YXRlci0xMDAgdG8tZ2xhc3MtMjAwIHNoYWRvdy1zbSBob3ZlcjpzaGFkb3ctbWQgdHJhbnNpdGlvbi1zaGFkb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctd2hpdGUvNjAgYmFja2Ryb3AtYmx1ci14bCByb3VuZGVkLTJ4bCBoLWZ1bGwgcC04IGZsZXggZmxleC1jb2wgcmVsYXRpdmUgei0xMCBib3JkZXIgYm9yZGVyLXdoaXRlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItOCBib3JkZXItYiBib3JkZXItZ2xhc3MtMzAwLzQwIHBiLTQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOnNjYWxlLWxpbmVhciIgY2xhc3M9InRleHQtd2F0ZXItNTAwIHRleHQtMnhsIiBzdHJva2Utd2lkdGg9IjEuNSI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB0ZXh0LWdsYXNzLTQwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0Ij5Nb2RfMDI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGQgdGV4dC1nbGFzcy05MDAgdHJhY2tpbmctd2lkZSB1cHBlcmNhc2UgbWItMyI+UHJlc3N1cmUgQ29udHJvbDwvaDM+CiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQteHMgdGV4dC1nbGFzcy01MDAgZm9udC1ub3JtYWwgbGVhZGluZy1yZWxheGVkIG1iLTgiPgogICAgICAgICAgICAgICAgICAgICAgICBBZGp1c3QgY2FsaWJyYXRpb24gcGFyYW1ldGVycyBzbW9vdGhseS4gQ3J5cHRvZ3JhcGhpYyBzdGFiaWxpdHkgdGhyZXNob2xkcyBidWlsdCBmb3IgaGlnaCBkZXB0aC4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXQtYXV0byBmbGV4IGZsZXgtY29sIGdhcC00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGZvbnQtbW9ubyB0ZXh0LXhzIHRleHQtZ2xhc3MtNTAwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+VGhyZXNob2xkPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtZ2xhc3MtOTAwIGZvbnQtc2VtaWJvbGQiPjg0JTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ3VzdG9tIEluc3RydW1lbnQgU2xpZGVyIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgcmVsYXRpdmUgcHgtMSBweS00IGZsZXggaXRlbXMtY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQ2FsaWJyYXRpb24gdGlja3MgZm9yIHNsaWRlciAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHctZnVsbCBmbGV4IGp1c3RpZnktYmV0d2VlbiBweC0yIC10b3AtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1bMXB4XSBoLTIgYmctZ2xhc3MtNDAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVsxcHhdIGgtMSBiZy1nbGFzcy0zMDAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzFweF0gaC0yIGJnLWdsYXNzLTQwMCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1bMXB4XSBoLTEgYmctZ2xhc3MtMzAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVsxcHhdIGgtMiBiZy1nbGFzcy00MDAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFuZ2UiIG1pbj0iMCIgbWF4PSIxMDAiIHZhbHVlPSI4NCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPCEtLSBNb2R1bGUgMyAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmVhdHVyZS1jYXJkIHJlbGF0aXZlIGdyb3VwIHAtWzFweF0gcm91bmRlZC0yeGwgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS13aGl0ZSB2aWEtZ2xhc3MtMjAwIHRvLWdsYXNzLTMwMCBzaGFkb3ctc20gaG92ZXI6c2hhZG93LW1kIHRyYW5zaXRpb24tc2hhZG93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJnLXdoaXRlLzUwIGJhY2tkcm9wLWJsdXIteGwgcm91bmRlZC0yeGwgaC1mdWxsIHAtOCBmbGV4IGZsZXgtY29sIHJlbGF0aXZlIHotMTAgYm9yZGVyIGJvcmRlci13aGl0ZS82MCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIG1iLTggYm9yZGVyLWIgYm9yZGVyLWdsYXNzLTMwMC80MCBwYi00Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpncmFwaC11cC1saW5lYXIiIGNsYXNzPSJ0ZXh0LWdsYXNzLTkwMCB0ZXh0LTJ4bCIgc3Ryb2tlLXdpZHRoPSIxLjUiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdGV4dC1nbGFzcy00MDAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCI+TW9kXzAzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC1zbSBmb250LXNlbWlib2xkIHRleHQtZ2xhc3MtOTAwIHRyYWNraW5nLXdpZGUgdXBwZXJjYXNlIG1iLTMiPllpZWxkIER5bmFtaWNzPC9oMz4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC14cyB0ZXh0LWdsYXNzLTUwMCBmb250LW5vcm1hbCBsZWFkaW5nLXJlbGF4ZWQgbWItMTAiPgogICAgICAgICAgICAgICAgICAgICAgICBFeHRyYWN0IGJhc2UgdmFsdWUgZnJvbSBoaWRkZW4gbG93LXZpc2liaWxpdHkgZW52aXJvbm1lbnRzIHByZXZpb3VzbHkgb2JzY3VyZWQgYnkgc3RhbmRhcmQgdG9vbGluZy4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXQtYXV0byByZWxhdGl2ZSBiZy1nbGFzcy01MC84MCBib3JkZXIgYm9yZGVyLWdsYXNzLTIwMCBwLTQgcm91bmRlZC1sZyBzaGFkb3ctaW5uZXIgZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSB3LTI0IGgtMjQgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItZ2xhc3MtMzAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGJnLXdoaXRlIHNoYWRvdy1zbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0yIGJvcmRlciBib3JkZXItZGFzaGVkIGJvcmRlci1nbGFzcy00MDAvNTAgcm91bmRlZC1mdWxsIGFuaW1hdGUtW3NwaW5fMjBzX2xpbmVhcl9pbmZpbml0ZV0iPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtbGcgZm9udC1zZXJpZiB0ZXh0LWdsYXNzLTkwMCB0cmFja2luZy10aWdodCI+NC4yPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHRleHQtZ2xhc3MtNDAwIG1sLTEiPkFQWTwvc3Bhbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgIDwvbWFpbj4KCiAgICA8IS0tIFNlY29uZGFyeSBTdGF0ZW1lbnQgU2VjdGlvbiB3aXRoIE1hc2tlZCBSZXZlYWwgLS0+CiAgICA8c2VjdGlvbiBjbGFzcz0icmVsYXRpdmUgdy1mdWxsIGJvcmRlci10IGJvcmRlci1nbGFzcy0zMDAvMzAgYmctd2hpdGUvNDAgYmFja2Ryb3AtYmx1ci1sZyBwdC0zMiBwYi00MCBvdmVyZmxvdy1oaWRkZW4gbXQtMjQiPgogICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIHotMTAgdy1mdWxsIG1heC13LTV4bCBteC1hdXRvIHB4LTQgbWQ6cHgtOCI+CiAgICAgICAgICAgIAogICAgICAgICAgICA8IS0tIEZyYW1lIGZvciBTdGF0ZW1lbnQgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIGJvcmRlci1sIGJvcmRlci1nbGFzcy00MDAvMzAgcGwtNiBtZDpwbC0xMiBweS00Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIC10b3AtNCAtbGVmdC1bMS41cHhdIHctMyBoLTMgYm9yZGVyLXQgYm9yZGVyLWwgYm9yZGVyLWdsYXNzLTQwMC82MCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSAtYm90dG9tLTQgLWxlZnQtWzEuNXB4XSB3LTMgaC0zIGJvcmRlci1iIGJvcmRlci1sIGJvcmRlci1nbGFzcy00MDAvNjAiPjwvZGl2PgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBtYi0xMCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy04IGgtWzFweF0gYmctZ2xhc3MtNDAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyB0cmFja2luZy1bMC4zZW1dIHVwcGVyY2FzZSB0ZXh0LWdsYXNzLTUwMCBmb250LW1vbm8gZm9udC1tZWRpdW0iPkZsdWlkIExvZ2ljPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJzdGF0ZW1lbnQtdGV4dCIgY2xhc3M9ImZvbnQtc2VyaWYgdGV4dC00eGwgbWQ6dGV4dC02eGwgdHJhY2tpbmctdGlnaHQgbGVhZGluZy1bMS4xXSBtYXgtdy0zeGwgdGV4dC1nbGFzcy05MDAiPgogICAgICAgICAgICAgICAgICAgIFRoZSBtb2Rlcm4gb3BlcmF0b3Igb3JjaGVzdHJhdGVzIHRoZSBjdXJyZW50LiBUaHJvdWdoIGluc3RydW1lbnRlZCBwcmVjaXNpb24gYW5kIGFic29sdXRlIHRyYW5zcGFyZW5jeSwgPHNwYW4gY2xhc3M9Iml0YWxpYyB0ZXh0LWdsYXNzLTUwMCBmb250LW5vcm1hbCI+Y29tcGxleGl0eSBiZWNvbWVzIGNsYXJpdHkuPC9zcGFuPgogICAgICAgICAgICAgICAgPC9oMj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIEZvb3RlciAvIENhbGlicmF0aW9uIFNpZ25hdHVyZSAtLT4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibXQtMzIgdy1mdWxsIGZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWVuZCBib3JkZXItdCBib3JkZXItZ2xhc3MtMzAwLzMwIHB0LTggZm9udC1tb25vIHRleHQteHMgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LWdsYXNzLTQwMCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0yIGgtMiBib3JkZXIgYm9yZGVyLWdsYXNzLTQwMCByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVsxcHhdIGgtWzFweF0gYmctZ2xhc3MtOTAwIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5TWVNfT05MSU5FPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8c3Bhbj7CqSBGbHVpZF9PUzwvc3Bhbj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgIDwvZGl2PgogICAgPC9zZWN0aW9uPgoKICAgIDxzY3JpcHQ+CiAgICAgICAgLy8gLS0tIFdlYkdMIEJhY2tncm91bmQgc2V0dXAgKExpZ2h0IFNlYSBDYXVzdGljcyBTaW11bGF0aW9uKSAtLS0KICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2ViZ2wtY2FudmFzJyk7CiAgICAgICAgY29uc3QgcmVuZGVyZXIgPSBuZXcgVEhSRUUuV2ViR0xSZW5kZXJlcih7IGNhbnZhcywgYWxwaGE6IHRydWUsIGFudGlhbGlhczogZmFsc2UgfSk7CiAgICAgICAgcmVuZGVyZXIuc2V0UGl4ZWxSYXRpbyhNYXRoLm1pbih3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgMikpOwogICAgICAgIAogICAgICAgIGNvbnN0IHNjZW5lID0gbmV3IFRIUkVFLlNjZW5lKCk7CiAgICAgICAgY29uc3QgY2FtZXJhID0gbmV3IFRIUkVFLk9ydGhvZ3JhcGhpY0NhbWVyYSgtMSwgMSwgMSwgLTEsIDAsIDEpOwogICAgICAgIGNvbnN0IGdlb21ldHJ5ID0gbmV3IFRIUkVFLlBsYW5lR2VvbWV0cnkoMiwgMik7CiAgICAgICAgCiAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuU2hhZGVyTWF0ZXJpYWwoewogICAgICAgICAgICB1bmlmb3JtczogewogICAgICAgICAgICAgICAgdVRpbWU6IHsgdmFsdWU6IDAgfSwKICAgICAgICAgICAgICAgIHVSZXNvbHV0aW9uOiB7IHZhbHVlOiBuZXcgVEhSRUUuVmVjdG9yMigpIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgdmVydGV4U2hhZGVyOiBgCiAgICAgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2OwogICAgICAgICAgICAgICAgdm9pZCBtYWluKCkgewogICAgICAgICAgICAgICAgICAgIHZVdiA9IHV2OwogICAgICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMS4wKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgYCwKICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXI6IGAKICAgICAgICAgICAgICAgIHVuaWZvcm0gZmxvYXQgdVRpbWU7CiAgICAgICAgICAgICAgICB1bmlmb3JtIHZlYzIgdVJlc29sdXRpb247CiAgICAgICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdlV2OwoKICAgICAgICAgICAgICAgIC8vIFNpbXBsZXggbm9pc2UgZnVuY3Rpb24KICAgICAgICAgICAgICAgIHZlYzMgbW9kMjg5KHZlYzMgeCkgeyByZXR1cm4geCAtIGZsb29yKHggKiAoMS4wIC8gMjg5LjApKSAqIDI4OS4wOyB9CiAgICAgICAgICAgICAgICB2ZWMyIG1vZDI4OSh2ZWMyIHgpIHsgcmV0dXJuIHggLSBmbG9vcih4ICogKDEuMCAvIDI4OS4wKSkgKiAyODkuMDsgfQogICAgICAgICAgICAgICAgdmVjMyBwZXJtdXRlKHZlYzMgeCkgeyByZXR1cm4gbW9kMjg5KCgoeCozNC4wKSsxLjApKngpOyB9CiAgICAgICAgICAgICAgICBmbG9hdCBzbm9pc2UodmVjMiB2KSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjNCBDID0gdmVjNCgwLjIxMTMyNDg2NTQwNTE4NywgMC4zNjYwMjU0MDM3ODQ0MzksIC0wLjU3NzM1MDI2OTE4OTYyNiwgMC4wMjQzOTAyNDM5MDI0MzkpOwogICAgICAgICAgICAgICAgICAgIHZlYzIgaSAgPSBmbG9vcih2ICsgZG90KHYsIEMueXkpICk7CiAgICAgICAgICAgICAgICAgICAgdmVjMiB4MCA9IHYgLSAgIGkgKyBkb3QoaSwgQy54eCk7CiAgICAgICAgICAgICAgICAgICAgdmVjMiBpMTsKICAgICAgICAgICAgICAgICAgICBpMSA9ICh4MC54ID4geDAueSkgPyB2ZWMyKDEuMCwgMC4wKSA6IHZlYzIoMC4wLCAxLjApOwogICAgICAgICAgICAgICAgICAgIHZlYzQgeDEyID0geDAueHl4eSArIEMueHh6ejsKICAgICAgICAgICAgICAgICAgICB4MTIueHkgLT0gaTE7CiAgICAgICAgICAgICAgICAgICAgaSA9IG1vZDI4OShpKTsKICAgICAgICAgICAgICAgICAgICB2ZWMzIHAgPSBwZXJtdXRlKCBwZXJtdXRlKCBpLnkgKyB2ZWMzKDAuMCwgaTEueSwgMS4wICkpICsgaS54ICsgdmVjMygwLjAsIGkxLngsIDEuMCApKTsKICAgICAgICAgICAgICAgICAgICB2ZWMzIG0gPSBtYXgoMC41IC0gdmVjMyhkb3QoeDAseDApLCBkb3QoeDEyLnh5LHgxMi54eSksIGRvdCh4MTIuencseDEyLnp3KSksIDAuMCk7CiAgICAgICAgICAgICAgICAgICAgbSA9IG0qbSA7CiAgICAgICAgICAgICAgICAgICAgbSA9IG0qbSA7CiAgICAgICAgICAgICAgICAgICAgdmVjMyB4ID0gMi4wICogZnJhY3QocCAqIEMud3d3KSAtIDEuMDsKICAgICAgICAgICAgICAgICAgICB2ZWMzIGggPSBhYnMoeCkgLSAwLjU7CiAgICAgICAgICAgICAgICAgICAgdmVjMyBveCA9IGZsb29yKHggKyAwLjUpOwogICAgICAgICAgICAgICAgICAgIHZlYzMgYTAgPSB4IC0gb3g7CiAgICAgICAgICAgICAgICAgICAgbSAqPSAxLjc5Mjg0MjkxNDAwMTU5IC0gMC44NTM3MzQ3MjA5NTMxNCAqICggYTAqYTAgKyBoKmggKTsKICAgICAgICAgICAgICAgICAgICB2ZWMzIGc7CiAgICAgICAgICAgICAgICAgICAgZy54ICA9IGEwLnggICogeDAueCAgKyBoLnggICogeDAueTsKICAgICAgICAgICAgICAgICAgICBnLnl6ID0gYTAueXogKiB4MTIueHogKyBoLnl6ICogeDEyLnl3OwogICAgICAgICAgICAgICAgICAgIHJldHVybiAxMzAuMCAqIGRvdChtLCBnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2b2lkIG1haW4oKSB7CiAgICAgICAgICAgICAgICAgICAgdmVjMiBzdCA9IGdsX0ZyYWdDb29yZC54eSAvIHVSZXNvbHV0aW9uLnh5OwogICAgICAgICAgICAgICAgICAgIHN0LnggKj0gdVJlc29sdXRpb24ueCAvIHVSZXNvbHV0aW9uLnk7CgogICAgICAgICAgICAgICAgICAgIC8vIExpZ2h0IEluc3RydW1lbnQgUGFuZWwgV2F0ZXIgQmFzZQogICAgICAgICAgICAgICAgICAgIHZlYzMgYmFzZUNvbG9yID0gdmVjMygwLjk2LCAwLjk4LCAxLjApOyAKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBTbG93LCByaXBwbGluZyBsaXF1aWQgbW92ZW1lbnQKICAgICAgICAgICAgICAgICAgICB2ZWMyIHBvcyA9IHZlYzIoc3QgKiAzLjApOwogICAgICAgICAgICAgICAgICAgIGZsb2F0IG4xID0gc25vaXNlKHBvcyArIHVUaW1lICogMC4wNCk7CiAgICAgICAgICAgICAgICAgICAgZmxvYXQgbjIgPSBzbm9pc2UocG9zICsgdmVjMih1VGltZSAqIDAuMDMsIC11VGltZSAqIDAuMDUpKTsKICAgICAgICAgICAgICAgICAgICBmbG9hdCBuMyA9IHNub2lzZShwb3MgKiAwLjYgLSB1VGltZSAqIDAuMDIpOwoKICAgICAgICAgICAgICAgICAgICAvLyBMaWdodCBmbHVpZCBoaWdobGlnaHRzIChjYXVzdGljcyBmZWVsKQogICAgICAgICAgICAgICAgICAgIHZlYzMgaGlnaGxpZ2h0MSA9IHZlYzMoMS4wLCAxLjAsIDEuMCk7IC8vIEJyaWdodCB3aGl0ZSBjcmVzdHMKICAgICAgICAgICAgICAgICAgICB2ZWMzIGhpZ2hsaWdodDIgPSB2ZWMzKDAuODgsIDAuOTUsIDEuMCk7IC8vIFZlcnkgbGlnaHQgY3lhbiBkZXB0aHMKCiAgICAgICAgICAgICAgICAgICAgdmVjMyBjb2xvciA9IGJhc2VDb2xvcjsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGUgdGhpbiBjYXVzdGljLWxpa2UgYmFuZHMKICAgICAgICAgICAgICAgICAgICBmbG9hdCBjYXVzdGljID0gc21vb3Roc3RlcCgwLjcsIDAuOSwgc2luKG4xICogMTAuMCkpICogMC41OwogICAgICAgICAgICAgICAgICAgIGNvbG9yICs9IGhpZ2hsaWdodDEgKiBjYXVzdGljOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIEFkZCBzb2Z0IGRlcHRoIHNoYWRvd3MKICAgICAgICAgICAgICAgICAgICBjb2xvciA9IG1peChjb2xvciwgaGlnaGxpZ2h0Miwgc21vb3Roc3RlcCgwLjIsIDAuOCwgbjIpICogMC42KTsKICAgICAgICAgICAgICAgICAgICBjb2xvciAtPSB2ZWMzKDAuMDIpICogc21vb3Roc3RlcCgwLjAsIDEuMCwgbjMpOwoKICAgICAgICAgICAgICAgICAgICAvLyBTb2Z0IHZpZ25ldHRlIGZyYW1pbmcKICAgICAgICAgICAgICAgICAgICBmbG9hdCBkaXN0ID0gZGlzdGFuY2Uoc3QsIHZlYzIoMC41ICogdVJlc29sdXRpb24ueC91UmVzb2x1dGlvbi55LCAwLjUpKTsKICAgICAgICAgICAgICAgICAgICBjb2xvciA9IG1peChjb2xvciwgdmVjMygwLjk0LCAwLjk2LCAwLjk4KSwgc21vb3Roc3RlcCgwLjgsIDEuNSwgZGlzdCkpOwoKICAgICAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCAxLjApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBgCiAgICAgICAgfSk7CgogICAgICAgIGNvbnN0IG1lc2ggPSBuZXcgVEhSRUUuTWVzaChnZW9tZXRyeSwgbWF0ZXJpYWwpOwogICAgICAgIHNjZW5lLmFkZChtZXNoKTsKCiAgICAgICAgZnVuY3Rpb24gcmVzaXplKCkgewogICAgICAgICAgICByZW5kZXJlci5zZXRTaXplKHdpbmRvdy5pbm5lcldpZHRoLCB3aW5kb3cuaW5uZXJIZWlnaHQpOwogICAgICAgICAgICBtYXRlcmlhbC51bmlmb3Jtcy51UmVzb2x1dGlvbi52YWx1ZS5zZXQod2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodCk7CiAgICAgICAgfQogICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemUpOwogICAgICAgIHJlc2l6ZSgpOwoKICAgICAgICBmdW5jdGlvbiBhbmltYXRlKHRpbWUpIHsKICAgICAgICAgICAgbWF0ZXJpYWwudW5pZm9ybXMudVRpbWUudmFsdWUgPSB0aW1lICogMC4wMDE7CiAgICAgICAgICAgIHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTsKICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGUpOwogICAgICAgIH0KICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7CgogICAgICAgIC8vIC0tLSBHU0FQIEFuaW1hdGlvbnMgLS0tCiAgICAgICAgZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyKTsKCiAgICAgICAgLy8gSGVybyBSZXZlYWwKICAgICAgICBnc2FwLmZyb20oIi5oZXJvLXJldmVhbCIsIHsKICAgICAgICAgICAgeTogMjAsCiAgICAgICAgICAgIG9wYWNpdHk6IDAsCiAgICAgICAgICAgIGR1cmF0aW9uOiAxLjIsCiAgICAgICAgICAgIHN0YWdnZXI6IDAuMiwKICAgICAgICAgICAgZWFzZTogInBvd2VyMi5vdXQiLAogICAgICAgICAgICBkZWxheTogMC4xCiAgICAgICAgfSk7CgogICAgICAgIC8vIEZlYXR1cmUgQ2FyZHMgRW50cnkKICAgICAgICBnc2FwLmZyb20oIi5mZWF0dXJlLWNhcmQiLCB7CiAgICAgICAgICAgIHNjcm9sbFRyaWdnZXI6IHsKICAgICAgICAgICAgICAgIHRyaWdnZXI6ICIuZmVhdHVyZS1ncmlkIiwKICAgICAgICAgICAgICAgIHN0YXJ0OiAidG9wIDg1JSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHk6IDMwLAogICAgICAgICAgICBvcGFjaXR5OiAwLAogICAgICAgICAgICBkdXJhdGlvbjogMSwKICAgICAgICAgICAgc3RhZ2dlcjogMC4xLAogICAgICAgICAgICBlYXNlOiAicG93ZXIxLm91dCIKICAgICAgICB9KTsKCiAgICAgICAgLy8gTWFza2VkIFdvcmQgUmV2ZWFsIExvZ2ljCiAgICAgICAgY29uc3QgdGV4dEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RhdGVtZW50LXRleHQnKTsKICAgICAgICAKICAgICAgICBmdW5jdGlvbiB3cmFwV29yZHNQcmVzZXJ2aW5nSFRNTChlbGVtZW50KSB7CiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gQXJyYXkuZnJvbShlbGVtZW50LmNoaWxkTm9kZXMpOwogICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICcnOwogICAgICAgICAgICAKICAgICAgICAgICAgbm9kZXMuZm9yRWFjaChub2RlID0+IHsKICAgICAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29yZHMgPSBub2RlLm5vZGVWYWx1ZS5zcGxpdCgvXHMrLykuZmlsdGVyKHcgPT4gdy5sZW5ndGggPiAwKTsKICAgICAgICAgICAgICAgICAgICB3b3Jkcy5mb3JFYWNoKHdvcmQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXIuY2xhc3NOYW1lID0gJ21hc2tlZC13b3JkIG1yLVswLjI1ZW1dJzsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyLmNsYXNzTmFtZSA9ICdtYXNrZWQtd29yZC1pbm5lcic7CiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyLnRleHRDb250ZW50ID0gd29yZDsKICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZXIuYXBwZW5kQ2hpbGQoaW5uZXIpOwogICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKG91dGVyKTsKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMSkgewogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsb25lID0gbm9kZS5jbG9uZU5vZGUoZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIHdyYXBXb3Jkc1ByZXNlcnZpbmdIVE1MKG5vZGUpOwogICAgICAgICAgICAgICAgICAgIHdoaWxlKG5vZGUuZmlyc3RDaGlsZCkgewogICAgICAgICAgICAgICAgICAgICAgICBjbG9uZS5hcHBlbmRDaGlsZChub2RlLmZpcnN0Q2hpbGQpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGNsb25lKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICB3cmFwV29yZHNQcmVzZXJ2aW5nSFRNTCh0ZXh0RWxlbWVudCk7CgogICAgICAgIGdzYXAudG8oIiNzdGF0ZW1lbnQtdGV4dCAubWFza2VkLXdvcmQtaW5uZXIiLCB7CiAgICAgICAgICAgIHNjcm9sbFRyaWdnZXI6IHsKICAgICAgICAgICAgICAgIHRyaWdnZXI6ICIjc3RhdGVtZW50LXRleHQiLAogICAgICAgICAgICAgICAgc3RhcnQ6ICJ0b3AgODAlIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgeTogIjAlIiwKICAgICAgICAgICAgZHVyYXRpb246IDEuMiwKICAgICAgICAgICAgc3RhZ2dlcjogMC4wMTUsCiAgICAgICAgICAgIGVhc2U6ICJwb3dlcjQub3V0IgogICAgICAgIH0pOwoKICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K";
    const assetFiles = [];
    const runtimeFiles = ["../../../../assets/runtime/runtime-027051effa47-gsap-min.js","../../../../assets/runtime/runtime-163ebd087cfc-iconify-icon-min.js","../../../../assets/runtime/runtime-2f01c69cbd22-three-min.js","../../../../assets/runtime/runtime-689ca8dda44c-scrolltrigger-min.js","../../../../assets/runtime/runtime-ccc8894b3418-runtime.js"];
    const frame = document.getElementById("neuform-demo");
    const decodeBytes = (value) => Uint8Array.from(atob(value), (character) => character.charCodeAt(0));
    const decode = (value) => new TextDecoder().decode(decodeBytes(value));
    const encodeBytes = (bytes) => {
      let binary = "";
      for (let index = 0; index < bytes.length; index += 32768) {
        binary += String.fromCharCode(...bytes.subarray(index, index + 32768));
      }
      return btoa(binary);
    };
    const mediaTypes = {
      avif: "image/avif",
      gif: "image/gif",
      jpg: "image/jpeg",
      jpeg: "image/jpeg",
      mp4: "video/mp4",
      png: "image/png",
      webm: "video/webm",
      webp: "image/webp"
    };
    const loadAsset = async (file) => {
      const response = await fetch(file, { cache: "no-store", credentials: "omit", redirect: "error" });
      if (!response.ok) throw new Error("Could not load local demo asset: " + file);
      const extension = file.split(".").pop().toLowerCase();
      const contentType = mediaTypes[extension] || "application/octet-stream";
      const bytes = new Uint8Array(await response.arrayBuffer());
      return { base64: encodeBytes(bytes), contentType, file, kind: "asset" };
    };
    Promise.allSettled(assetFiles.map(loadAsset)).then((results) => {
      const runtimeSources = runtimeFiles.map((file) => new URL(file, location.href).href).join(" ");
      const source = decode(encodedHtml).replace("__NEUFORM_RUNTIME_SOURCES__", runtimeSources);
      const mediaAssets = [];
      for (const result of results) {
        if (result.status !== "fulfilled") continue;
        mediaAssets.push(result.value);
      }
      frame.addEventListener("load", () => {
        frame.contentWindow.postMessage({ type: "neuform-assets-v1", assets: mediaAssets }, "*");
      }, { once: true });
      frame.srcdoc = source;
    }).catch((error) => {
      document.body.innerHTML = '<div class="error">Unable to load this sandboxed demo.</div>';
      console.error(error);
    });
  </script>
</body>
</html>

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Security

What our scanner noticed· Medium risk

  • Large base64-encoded blobs

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Meng To
Publisher
Meng To (Community)
Source
MengTo/Skills · agent-skills/web-design/company-logos · commit 5ea1661
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Meng To.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download company-logos.zip