AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides a standardized approach to adding technical, editorial-style grid markers to web layouts. By using CSS pseudo-elements and specific container logic, it allows developers to draw thin vertical lines and corner squares that frame content without interfering with user interaction. The system emphasizes subtle visual tension, ensuring that layout guides remain unobtrusive while providing a precise, measured aesthetic for hero sections or main content areas.
What it does
- Defines CSS variables for consistent container widths and line styling.
- Implements vertical boundary lines using pseudo-elements on a layout shell.
- Provides a structure for adding mini corner squares to section intersections.
- Ensures layout guides are non-interactive by disabling pointer events.
- Maintains alignment between content containers and visual guide markers.
- Offers best practices for maintaining visual subtlety and layout consistency.
When to use it
- When a web page requires subtle vertical guides to define content boundaries.
- To add structural tension to hero sections or product pages that feel too loose.
- When the design calls for a technical, measured, or industrial aesthetic.
- To implement editorial-style grid markers or corner frame details.
Advantages
- Non-intrusive design that does not block UI interactions.
- Highly consistent visual system across different page sections.
- Uses lightweight CSS without requiring heavy external dependencies.
- Provides a clean, professional, and structured look for web layouts.
Usage examples
- “Add vertical container lines to my main layout shell.”
- The agent applies the .container-lines class to the main element and sets up the CSS pseudo-elements to draw thin vertical lines aligned with the content container.
- “How can I add corner markers to my hero section?”
- The agent provides the .corner-squares HTML structure and the corresponding CSS to place small squares at the corners of the section.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/mengto/container-lines/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip container-lines.zip -d .agents/skills
Documentation by Meng To
Container Lines
Use When
A page needs subtle vertical guides that reveal the content container width.
A hero, section, or product page feels too loose and needs structural tension.
The design calls for mini corner squares, measured edges, or quiet technical framing.
Rules
Draw lines at the left and right edges of the main content container.
Keep lines thin:
1pxwith low opacity.Add mini squares at container corners or section intersections.
Keep the line system consistent across sections; do not change width per section.
Place lines behind content but above the page background.
Disable pointer events so the guides never block UI.
Base Tokens
:root {
--container-max: 1120px;
--container-pad: clamp(20px, 4vw, 48px);
--line-color: rgba(24, 24, 27, 0.14);
--line-strong: rgba(24, 24, 27, 0.28);
--corner-size: 6px;
}Page Container Lines
Use pseudo-elements on the layout shell.
.container-lines {
position: relative;
isolation: isolate;
}
.container-lines::before,
.container-lines::after {
content: "";
position: absolute;
top: 0;
bottom: 0;
z-index: -1;
width: 1px;
background: var(--line-color);
pointer-events: none;
}
.container-lines::before {
left: max(var(--container-pad), calc((100vw - var(--container-max)) / 2));
}
.container-lines::after {
right: max(var(--container-pad), calc((100vw - var(--container-max)) / 2));
}Corner Squares
Add four small squares to sections that need a precise measured feel.
.corner-squares {
position: relative;
}
.corner-squares > .corner {
position: absolute;
width: var(--corner-size);
height: var(--corner-size);
background: var(--line-strong);
pointer-events: none;
}
.corner.top-left { top: 0; left: 0; transform: translate(-50%, -50%); }
.corner.top-right { top: 0; right: 0; transform: translate(50%, -50%); }
.corner.bottom-left { bottom: 0; left: 0; transform: translate(-50%, 50%); }
.corner.bottom-right { right: 0; bottom: 0; transform: translate(50%, 50%); }<main class="container-lines">
<section class="corner-squares">
<span class="corner top-left"></span>
<span class="corner top-right"></span>
<span class="corner bottom-left"></span>
<span class="corner bottom-right"></span>
...
</section>
</main>Minimal Section Wrapper
Use the same container width as the line positions.
.content-container {
width: min(100% - (var(--container-pad) * 2), var(--container-max));
margin-inline: auto;
}Taste Rules
Use lines as structure, not decoration. They should organize the page quietly.
Do not add lines to every nested component; keep them at page or major-section level.
Mini squares should be small and exact, usually
4pxto8px.Avoid bright accent colors unless the entire visual system is technical or industrial.
Keep container max-width and padding shared between content and guide lines.
Quick Checks
The vertical lines align exactly with the content container edges.
Corner squares sit on real container or section corners, not arbitrary positions.
Lines remain subtle on light and dark backgrounds.
Mobile still has enough padding between the line and content.
Guides do not intercept clicks, hovers, or text selection.
Files
- ATTRIBUTION.mdAdded by AutoGineer852 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md3.5 KiB
- demo/PROMPT.md2.5 KiB
- demo/assets/page-01-65695f80-23f9-46ee-8487-cbb6c93cc48b-3840w.webp523.8 KiB
- demo/assets/page-02-724142aa-44a6-48d3-9cf3-761e00d05b78-1600w.jpg966.2 KiB
- demo/assets/page-03-4734259a-bad7-422f-981e-ce01e79184f2-1600w.jpg43.7 KiB
- demo/assets/page-04-005600e5-f6ab-4e59-bc86-eaeb02797dfa-1600w.jpg711.5 KiB
- demo/assets/page-05-e534354d-c5f2-4399-a1d9-2f50338e8c47-1600w.jpg83.3 KiB
- demo/assets/page-06-fb6415fd-bf4d-4ccf-8e9d-7ab445e99207-1600w.jpg197.2 KiB
- demo/assets/source-preview.jpg136.3 KiB
- demo/index.html44.4 KiB
- demo/preview.jpg95.9 KiB
- demo/source.json4.4 KiB
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+CjxodG1sIGxhbmc9ImVuIiBjbGFzcz0ic2Nyb2xsLXNtb290aCI+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0iZGVmYXVsdC1zcmMgJ25vbmUnOyBiYXNlLXVyaSAnbm9uZSc7IGNvbm5lY3Qtc3JjICdub25lJzsgZm9udC1zcmMgZGF0YTogaHR0cHM6Ly9mb250cy5nc3RhdGljLmNvbTsgZm9ybS1hY3Rpb24gJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBpbWctc3JjIGJsb2I6OyBtZWRpYS1zcmMgYmxvYjo7IG5hdmlnYXRlLXRvICdub25lJzsgb2JqZWN0LXNyYyAnbm9uZSc7IHNjcmlwdC1zcmMgJ3Vuc2FmZS1pbmxpbmUnIF9fTkVVRk9STV9SVU5USU1FX1NPVVJDRVNfXzsgc3R5bGUtc3JjICd1bnNhZmUtaW5saW5lJyBodHRwczovL2FwaS5mb250c2hhcmUuY29tIGh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb207IHdvcmtlci1zcmMgJ25vbmUnIj4KPHNjcmlwdCBkYXRhLW5ldWZvcm0tYXNzZXQtYm9vdHN0cmFwPgooKCkgPT4gewogIGxldCByZWNlaXZlZCA9IGZhbHNlOwogIGNvbnN0IG9iamVjdFVybHMgPSBbXTsKICBjb25zdCByZXBsYWNlQWxsID0gKHZhbHVlLCByZXBsYWNlbWVudHMpID0+IHsKICAgIGxldCBuZXh0ID0gU3RyaW5nKHZhbHVlIHx8ICIiKTsKICAgIGZvciAoY29uc3QgW2ZpbGUsIG9iamVjdFVybF0gb2YgcmVwbGFjZW1lbnRzKSBuZXh0ID0gbmV4dC5zcGxpdChmaWxlKS5qb2luKG9iamVjdFVybCk7CiAgICByZXR1cm4gbmV4dDsKICB9OwogIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICBpZiAocmVjZWl2ZWQgfHwgZXZlbnQuc291cmNlICE9PSBwYXJlbnQgfHwgZXZlbnQuZGF0YT8udHlwZSAhPT0gIm5ldWZvcm0tYXNzZXRzLXYxIikgcmV0dXJuOwogICAgcmVjZWl2ZWQgPSB0cnVlOwogICAgY29uc3QgcmVwbGFjZW1lbnRzID0gW107CiAgICBmb3IgKGNvbnN0IGFzc2V0IG9mIGV2ZW50LmRhdGEuYXNzZXRzIHx8IFtdKSB7CiAgICAgIGlmICghYXNzZXQgfHwgdHlwZW9mIGFzc2V0LmZpbGUgIT09ICJzdHJpbmciIHx8IHR5cGVvZiBhc3NldC5iYXNlNjQgIT09ICJzdHJpbmciKSBjb250aW51ZTsKICAgICAgY29uc3QgYmluYXJ5ID0gYXRvYihhc3NldC5iYXNlNjQpOwogICAgICBjb25zdCBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShiaW5hcnksIChjaGFyYWN0ZXIpID0+IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApKTsKICAgICAgY29uc3Qgb2JqZWN0VXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChuZXcgQmxvYihbYnl0ZXNdLCB7IHR5cGU6IGFzc2V0LmNvbnRlbnRUeXBlIHx8ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0pKTsKICAgICAgb2JqZWN0VXJscy5wdXNoKG9iamVjdFVybCk7CiAgICAgIHJlcGxhY2VtZW50cy5wdXNoKFthc3NldC5maWxlLCBvYmplY3RVcmxdKTsKICAgIH0KICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIqIikpIHsKICAgICAgZm9yIChjb25zdCBuYW1lIG9mIFsic3JjIiwgInBvc3RlciIsICJzcmNzZXQiLCAic3R5bGUiXSkgewogICAgICAgIGNvbnN0IHZhbHVlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUobmFtZSk7CiAgICAgICAgaWYgKHZhbHVlKSBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCByZXBsYWNlQWxsKHZhbHVlLCByZXBsYWNlbWVudHMpKTsKICAgICAgfQogICAgfQogICAgZm9yIChjb25zdCBzdHlsZSBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJzdHlsZSIpKSB7CiAgICAgIHN0eWxlLnRleHRDb250ZW50ID0gcmVwbGFjZUFsbChzdHlsZS50ZXh0Q29udGVudCwgcmVwbGFjZW1lbnRzKTsKICAgIH0KICB9KTsKICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicGFnZWhpZGUiLCAoKSA9PiB7CiAgICBmb3IgKGNvbnN0IG9iamVjdFVybCBvZiBvYmplY3RVcmxzKSBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7CiAgfSwgeyBvbmNlOiB0cnVlIH0pOwp9KSgpOwo8L3NjcmlwdD4KCjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4KICAgIDx0aXRsZT5LaXdpIEZsb3JhbCB8IEFydGlzYW4gQm90YW5pY2FsIERlc2lnbjwvdGl0bGU+CiAgICAKICAgIDwhLS0gRm9udHMgLS0+CiAgICA8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPgogICAgPGxpbmsgcmVsPSJwcmVjb25uZWN0IiBocmVmPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tIiBjcm9zc29yaWdpbj4KICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9SW50ZXI6d2dodEAzMDA7NDAwOzUwMCZmYW1pbHk9UGxheWZhaXIrRGlzcGxheTppdGFsLHdnaHRAMCw0MDA7MCw1MDA7MSw0MDAmZGlzcGxheT1zd2FwIiByZWw9InN0eWxlc2hlZXQiPgogICAgCiAgICA8IS0tIFRhaWx3aW5kIENTUyAtLT4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9hc3NldHMvcnVudGltZS9ydW50aW1lLWNjYzg4OTRiMzQxOC1ydW50aW1lLmpzIj48L3NjcmlwdD4KICAgIAogICAgPCEtLSBUYWlsd2luZCBDb25maWcgZm9yIHNwZWNpZmljIGZvbnQgZmFtaWxpZXMgLS0+CiAgICA8c2NyaXB0PgogICAgICAgIHRhaWx3aW5kLmNvbmZpZyA9IHsKICAgICAgICAgICAgdGhlbWU6IHsKICAgICAgICAgICAgICAgIGV4dGVuZDogewogICAgICAgICAgICAgICAgICAgIGZvbnRGYW1pbHk6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2FuczogWydJbnRlcicsICdzYW5zLXNlcmlmJ10sCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcmlmOiBbJyJQbGF5ZmFpciBEaXNwbGF5IicsICdzZXJpZiddLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgY29sb3JzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5kOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZzogJyNGNkY1RjInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJyMxQzIwMUMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0ZWQ6ICcjNzY3ODczJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcms6ICcjMUIyNDFBJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIDwvc2NyaXB0PgoKICAgIDwhLS0gSWNvbmlmeSAtLT4KICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9hc3NldHMvcnVudGltZS9ydW50aW1lLTE2M2ViZDA4N2NmYy1pY29uaWZ5LWljb24tbWluLmpzIj48L3NjcmlwdD4KCiAgICA8IS0tIEdTQVAgLS0+CiAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vYXNzZXRzL3J1bnRpbWUvcnVudGltZS0wMjcwNTFlZmZhNDctZ3NhcC1taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Fzc2V0cy9ydW50aW1lL3J1bnRpbWUtNjg5Y2E4ZGRhNDRjLXNjcm9sbHRyaWdnZXItbWluLmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBjbGFzcz0iYmctYnJhbmQtYmcgdGV4dC1icmFuZC10ZXh0IGZvbnQtc2FucyBhbnRpYWxpYXNlZCBvdmVyZmxvdy14LWhpZGRlbiBzZWxlY3Rpb246YmctYnJhbmQtZGFyayBzZWxlY3Rpb246dGV4dC13aGl0ZSI+CgogICAgPCEtLSBDb250YWluZXIgTGluZXMgV3JhcHBlciAtLT4KICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIG1heC13LVsxNDAwcHhdIG14LWF1dG8gYm9yZGVyLXggYm9yZGVyLWJsYWNrLzUgbWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2wgYmctYnJhbmQtYmciPgogICAgICAgIAogICAgICAgIDwhLS0gQ29ybmVyIE1hcmtlcnMgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTAgLWxlZnQtWzNweF0gdy1bNXB4XSBoLVs1cHhdIGJvcmRlciBib3JkZXItYmxhY2svMTUgYmctYnJhbmQtYmcgei01MCI+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTAgLXJpZ2h0LVszcHhdIHctWzVweF0gaC1bNXB4XSBib3JkZXIgYm9yZGVyLWJsYWNrLzE1IGJnLWJyYW5kLWJnIHotNTAiPjwvZGl2PgoKICAgICAgICA8IS0tIElNQUdFIEZJUlNUIEdSSUQgSEVSTyAtLT4KICAgICAgICA8bWFpbiBjbGFzcz0icmVsYXRpdmUgdy1mdWxsIGgtWzk1dmhdIG1pbi1oLVs3MDBweF0gZmxleCBmbGV4LWNvbCBib3JkZXItYiBib3JkZXItYmxhY2svNSBvdmVyZmxvdy1oaWRkZW4iPgogICAgICAgICAgICA8IS0tIEltbWVyc2l2ZSBCYWNrZ3JvdW5kIC0tPgogICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL3BhZ2UtMDEtNjU2OTVmODAtMjNmOS00NmVlLTg0ODctY2JiNmM5M2NjNDhiLTM4NDB3LndlYnAiIGFsdD0iQm90YW5pY2FsIGVsZWdhbmNlIiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCB3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlciBvYmplY3QtdG9wIHNjYWxlLTEwNSIgc3R5bGU9InRyYW5zZm9ybS1vcmlnaW46IHRvcCBjZW50ZXI7Ij4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gRGFyayBHcmFkaWVudCBXYXNoZXMgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDEwLDEyLDEwLDAuOTUpIDAlLCByZ2JhKDEwLDEyLDEwLDAuNCkgNDAlLCByZ2JhKDEwLDEyLDEwLDAuMSkgMTAwJSk7Ij48L2Rpdj4KICAgICAgICAgICAgCiAgICAgICAgICAgIDwhLS0gVmlzaWJsZSBHcmlkIExpbmVzIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBpbnNldC0wIGZsZXgganVzdGlmeS1iZXR3ZWVuIHB4LTYgbWQ6cHgtMTIgcG9pbnRlci1ldmVudHMtbm9uZSB6LTAgb3BhY2l0eS0yMCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVsxcHhdIGgtZnVsbCBiZy13aGl0ZSI+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LVsxcHhdIGgtZnVsbCBiZy13aGl0ZSBoaWRkZW4gbWQ6YmxvY2siPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy1bMXB4XSBoLWZ1bGwgYmctd2hpdGUgaGlkZGVuIGxnOmJsb2NrIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzFweF0gaC1mdWxsIGJnLXdoaXRlIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8IS0tIEhlYWRlciAoRmxvYXRpbmcgb3ZlciBJbWFnZSkgLS0+CiAgICAgICAgICAgIDxoZWFkZXIgY2xhc3M9InctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNiBweS04IG1kOnB4LTEyIHJlbGF0aXZlIHotMjAgdGV4dC13aGl0ZS85MCI+CiAgICAgICAgICAgICAgICA8bmF2IGNsYXNzPSJoaWRkZW4gbWQ6ZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTggdGV4dC1zbSBmb250LWxpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+Q29sbGVjdGlvbnM8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPlBoaWxvc29waHk8L2E+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkpvdXJuYWw8L2E+CiAgICAgICAgICAgICAgICA8L25hdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImFic29sdXRlIGxlZnQtMS8yIC10cmFuc2xhdGUteC0xLzIgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14bCBmb250LXNlcmlmIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGUiPgogICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6bGVhZi1saW5lLWR1b3RvbmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc3Ryb2tlLXdpZHRoPSIxLjUiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgIEtJV0kgRkxPUkFMCiAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTYgdGV4dC1zbSBmb250LWxpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaGlkZGVuIG1kOmJsb2NrIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkxvZ2luPC9hPgogICAgICAgICAgICAgICAgICAgIDwhLS0gU2tldW9tb3JwaGljIEJ1dHRvbiAtLT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0idGV4dC13aGl0ZSBweC01IHB5LTIuNSByb3VuZGVkLWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdHJhbnNpdGlvbi1hbGwiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCByZ2JhKDI1NSwyNTUsMjU1LDAuMTUpIDAlLCByZ2JhKDI1NSwyNTUsMjU1LDAuMDUpIDEwMCUpOyBib3gtc2hhZG93OiBpbnNldCAwIDFweCAxcHggcmdiYSgyNTUsMjU1LDI1NSwwLjIpLCBpbnNldCAwIC0xcHggMXB4IHJnYmEoMCwwLDAsMC4zKSwgMCA0cHggMTJweCByZ2JhKDAsMCwwLDAuMik7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4xKTsiPgogICAgICAgICAgICAgICAgICAgICAgICBPcmRlciBOb3cKICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjphcnJvdy1yaWdodC1saW5lYXIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvaGVhZGVyPgoKICAgICAgICAgICAgPCEtLSBCb3R0b20gQW5jaG9yZWQgR3JpZCBDb250ZW50IC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWxhdGl2ZSBmbGV4LWdyb3cgZmxleCBpdGVtcy1lbmQgcGItMTYgcHgtNiBtZDpweC0xMiB6LTEwIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTEyIGdhcC04IHctZnVsbCBpdGVtcy1lbmQiPgogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1kOmNvbC1zcGFuLTggbGc6Y29sLXNwYW4tNyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggaXRlbXMtY2VudGVyIGdhcC02IHRleHQtd2hpdGUvNTAgbWItOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOnN0YXItZmFsbC1saW5lYXIiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlIGZvbnQtbm9ybWFsIj5Wb2d1ZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UgZm9udC1ub3JtYWwiPktpbmZvbGs8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlIGZvbnQtbm9ybWFsIj5DZXJlYWw8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9ImZvbnQtc2VyaWYgdGV4dC01eGwgbWQ6dGV4dC03eGwgbGc6dGV4dC1bNS41cmVtXSBsZWFkaW5nLVsxLjA1XSB0cmFja2luZy10aWdodCB0ZXh0LXdoaXRlIHJldmVhbC10ZXh0IGRyb3Atc2hhZG93LWxnIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFydGlzYW4gRmxvcmlzdHJ5IGZvciBNZWFuaW5nZnVsIE1vbWVudHMKICAgICAgICAgICAgICAgICAgICAgICAgPC9oMT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibWQ6Y29sLXNwYW4tNCBsZzpjb2wtc3Bhbi00IGxnOmNvbC1zdGFydC05IGZsZXggZmxleC1jb2wganVzdGlmeS1lbmQiPgogICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFRyYW5zbHVjZW50IEdyaWQgQm94IC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJiZy13aGl0ZS81IGJhY2tkcm9wLWJsdXItbWQgcC1bMXB4XSByb3VuZGVkLTJ4bCIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMjU1LDI1NSwyNTUsMC4yKSAwJSwgcmdiYSgyNTUsMjU1LDI1NSwwLjAyKSAxMDAlKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYmctYmxhY2svNDAgcm91bmRlZC1bY2FsYygxcmVtLTFweCldIHAtNiBtZDpwLTggZmxleCBmbGV4LWNvbCBnYXAtNiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtc20gdGV4dC13aGl0ZS84MCBmb250LWxpZ2h0IGxlYWRpbmctcmVsYXhlZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cmF0ZWQgYm90YW5pY2FsIGFycmFuZ2VtZW50cyBkZXNpZ25lZCB0byBlbGV2YXRlIHlvdXIgc3BhY2UgYW5kIG9wdGltaXplIGVtb3Rpb25hbCB3ZWxsLWJlaW5nLiBObyBzeW50aGV0aWMgZmlsbGVycy4gUHVyZSBuYXR1cmFsIGJlYXV0eS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgY2xhc3M9ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ3JvdXAgYm9yZGVyLWIgYm9yZGVyLXdoaXRlLzIwIHBiLTIgdGV4dC13aGl0ZSBob3Zlcjpib3JkZXItd2hpdGUvNjAgdHJhbnNpdGlvbi1jb2xvcnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1zbSBmb250LW5vcm1hbCI+VmlldyBDb2xsZWN0aW9uczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjphcnJvdy1yaWdodC11cC1saW5lYXIiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgY2xhc3M9Imdyb3VwLWhvdmVyOnRyYW5zbGF0ZS14LTEgZ3JvdXAtaG92ZXI6LXRyYW5zbGF0ZS15LTEgdHJhbnNpdGlvbi10cmFuc2Zvcm0iPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L21haW4+CgogICAgICAgIDwhLS0gU1BMSVQgTEFZT1VUIFNFQ1RJT046IFBoaWxvc29waHkgLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InctZnVsbCBib3JkZXItYiBib3JkZXItYmxhY2svNSBmbGV4IGZsZXgtY29sIG1kOmZsZXgtcm93IGJnLWJyYW5kLWJnIHJlbGF0aXZlIHotMTAiPgogICAgICAgICAgICA8IS0tIExlZnQgUGFuZWw6IFRlY2huaWNhbC9FZGl0b3JpYWwgLS0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBtZDp3LTEvMiBwLTggbWQ6cC0xNiBsZzpwLTI0IGJvcmRlci1iIG1kOmJvcmRlci1iLTAgbWQ6Ym9yZGVyLXIgYm9yZGVyLWJsYWNrLzUgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4iPgogICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCBtYi0xNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMiBoLTIgYmctYnJhbmQtdGV4dCI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlIHRleHQtYnJhbmQtbXV0ZWQiPjAxIC8vIEFyY2hpdGVjdHVyZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9InRleHQtNHhsIG1kOnRleHQtNXhsIGZvbnQtc2VyaWYgdHJhY2tpbmctdGlnaHQgdGV4dC1icmFuZC10ZXh0IG1iLTggcmV2ZWFsLXRleHQgbGVhZGluZy1bMS4xXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIEVuZ2luZWVyZWQgQm90YW5pY2FsIEVsZWdhbmNlLgogICAgICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InRleHQtYmFzZSB0ZXh0LWJyYW5kLW11dGVkIGZvbnQtbGlnaHQgbGVhZGluZy1yZWxheGVkIG1iLTEyIG1heC13LW1kIj4KICAgICAgICAgICAgICAgICAgICAgICAgRXZlcnkgc3RlbSBpcyBzZWxlY3RlZCB0aHJvdWdoIGEgcmlnb3JvdXMgYm90YW5pY2FsIHByb3RvY29sLCBlbnN1cmluZyBzcGF0aWFsIGhhcm1vbnkgYW5kIHN1c3RhaW5lZCB2aXRhbGl0eS4gV2UgYnJpZGdlIHRoZSBnYXAgYmV0d2VlbiBvcmdhbmljIHVucHJlZGljdGFiaWxpdHkgYW5kIGFyY2hpdGVjdHVyYWwgcHJlY2lzaW9uLgogICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gU2tldW9tb3JwaGljIFNwZWMgQ2FyZCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InAtWzFweF0gcm91bmRlZC1bMS41cmVtXSBtdC0xMiBtZDptdC0yNCBtYXgtdy1zbSIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsIHJnYmEoMCwwLDAsMC4wOCkgMCUsIHJnYmEoMCwwLDAsMC4wMSkgMTAwJSk7Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3VuZGVkLVtjYWxjKDEuNXJlbS0xcHgpXSBwLTYgcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIGluc2V0IDAgLTFweCAycHggcmdiYSgwLDAsMCwwLjAzKSwgMCA4cHggMjBweCByZ2JhKDAsMCwwLDAuMDMpOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGlnaGxpZ2h0IEVkZ2UgLS0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIHRvcC0wIGxlZnQtMCB3LWZ1bGwgaC1bMXB4XSBiZy1ncmFkaWVudC10by1yIGZyb20tdHJhbnNwYXJlbnQgdmlhLXdoaXRlIHRvLXRyYW5zcGFyZW50IG9wYWNpdHktODAiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtYnJhbmQtdGV4dCB0cmFja2luZy10aWdodCI+U3VzdGFpbmFibGUgU291cmNpbmc8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpsZWFmLWxpbmVhciIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBjbGFzcz0idGV4dC1icmFuZC1tdXRlZCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC14cyB0ZXh0LWJyYW5kLW11dGVkIGZvbnQtbGlnaHQgbGVhZGluZy1yZWxheGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdCBwYXJ0bmVyc2hpcHMgd2l0aCByZWdlbmVyYXRpdmUgbWljcm8tZmFybXMgZ3VhcmFudGVlIHplcm8gc3ludGhldGljIGludGVyZmVyZW5jZSwgbWF4aW1pemluZyB2YXNlIGxpZmUgb3JnYW5pY2FsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDwhLS0gUmlnaHQgUGFuZWw6IEltbWVyc2l2ZSBNZWRpYSAmIFNwZWNzIC0tPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJ3LWZ1bGwgbWQ6dy0xLzIgcmVsYXRpdmUgYmctWyMxNTE5MTRdIG1pbi1oLVs1MDBweF0gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcC04IG1kOnAtMTYgb3ZlcmZsb3ctaGlkZGVuIj4KICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJhc3NldHMvcGFnZS0wMi03MjQxNDJhYS00NGE2LTQ4ZDMtOWNmMy03NjFlMDBkMDViNzgtMTYwMHcuanBnIiBhbHQ9IkFyY2hpdGVjdHVyYWwgU3RydWN0dXJlIiBjbGFzcz0iYWJzb2x1dGUgaW5zZXQtMCB3LWZ1bGwgaC1mdWxsIG9iamVjdC1jb3ZlciBvcGFjaXR5LTUwIG1peC1ibGVuZC1sdW1pbm9zaXR5Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgYmctZ3JhZGllbnQtdG8tYiBmcm9tLXRyYW5zcGFyZW50IHRvLVsjMTUxOTE0XS84MCI+PC9kaXY+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwhLS0gU3BlYyBUYWJsZSBPdmVybGFpZCAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJlbGF0aXZlIHotMTAgdy1mdWxsIG1heC13LW1kIGJnLWJsYWNrLzIwIGJhY2tkcm9wLWJsdXItbWQgYm9yZGVyIGJvcmRlci13aGl0ZS8xMCByb3VuZGVkLTJ4bCBwLTgiPgogICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz0idGV4dC1sZyBmb250LXNlcmlmIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGUgbWItNiI+VGVjaG5pY2FsIFBhcmFtZXRlcnM8L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNlLXktNCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWVuZCBib3JkZXItYiBib3JkZXItd2hpdGUvMTAgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdGV4dC13aGl0ZS81MCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0Ij5Tb3VyY2luZyBSYWRpdXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1zbSBmb250LWxpZ2h0IHRleHQtd2hpdGUiPlVuZGVyIDUwIE1pbGVzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtZW5kIGJvcmRlci1iIGJvcmRlci13aGl0ZS8xMCBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB0ZXh0LXdoaXRlLzUwIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QiPlByZXNlcnZhdGlvbjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC13aGl0ZSI+Q2xpbWF0ZS1TZWFsZWQ8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1lbmQgYm9yZGVyLWIgYm9yZGVyLXdoaXRlLzEwIHBiLTMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHRleHQtd2hpdGUvNTAgdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCI+Q3VyYXRpb24gVGltZTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC13aGl0ZSI+NDggSG91cnM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgPCEtLSBDb2xsZWN0aW9uczogMyBDb2x1bW4gR3JpZCAtLT4KICAgICAgICA8bWFpbiBjbGFzcz0idy1mdWxsIHB0LTI0IHBiLTMyIHB4LTYgbWQ6cHgtMTIgYmctYnJhbmQtYmcgcmVsYXRpdmUgei0xMCBib3JkZXItYiBib3JkZXItYmxhY2svNSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIHRleHQtY2VudGVyIG1iLTE2Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRleHQteHMgZm9udC1tb25vIHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2UgdGV4dC1icmFuZC1tdXRlZCBtYi00Ij4wMiAvLyBUaGUgQ29sbGVjdGlvbnM8L2Rpdj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZm9udC1zZXJpZiB0ZXh0LTR4bCBtZDp0ZXh0LTV4bCB0cmFja2luZy10aWdodCB0ZXh0LWJyYW5kLXRleHQgcmV2ZWFsLXRleHQiPgogICAgICAgICAgICAgICAgICAgIEN1cmF0ZWQgQXJyYW5nZW1lbnRzCiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9InctZnVsbCBncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0zIGdhcC02IHRleHQtbGVmdCI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCAxOiBJbWFnZSAtLT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImgtWzUwMHB4XSBtZDpoLVs2MDBweF0gcm91bmRlZC1bMnJlbV0gb3ZlcmZsb3ctaGlkZGVuIHJlbGF0aXZlIGdyb3VwIHNoYWRvdy1zbSI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTAzLTQ3MzQyNTlhLWJhZDctNDIyZi05ODFlLWNlMDFlNzkxODRmMi0xNjAwdy5qcGciIGFsdD0iQWJzdHJhY3QgZmxvcmFsIGludGVycHJldGF0aW9uIiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgZ3JvdXAtaG92ZXI6c2NhbGUtMTA1IHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTEwMDAgZWFzZS1vdXQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS02IGxlZnQtNiBiZy13aGl0ZS8yMCBiYWNrZHJvcC1ibHVyLW1kIHB4LTQgcHktMiByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci13aGl0ZS8zMCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXdoaXRlIHRleHQteHMgZm9udC1saWdodCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6c3VuLTItbGluZWFyIiB3aWR0aD0iMTQiIGhlaWdodD0iMTQiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICBNb3JuaW5nIEhhcnZlc3QKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDwhLS0gQ2FyZCAyOiBIaWdobHkgU2tldW9tb3JwaGljIFVJIENhcmQgLS0+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoLVs1MDBweF0gbWQ6aC1bNjAwcHhdIHJvdW5kZWQtWzJyZW1dIHJlbGF0aXZlIHotMTAgcC1bMXB4XSIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxNDVkZWcsIHJnYmEoMCwwLDAsMC4xKSAwJSwgcmdiYSgwLDAsMCwwLjAxKSAxMDAlKTsiPgogICAgICAgICAgICAgICAgICAgIDwhLS0gTGF5ZXJlZCBkZXB0aCBjb250YWluZXIgLS0+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm91bmRlZC1bY2FsYygycmVtLTFweCldIGgtZnVsbCBwLTggZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gcmVsYXRpdmUgb3ZlcmZsb3ctaGlkZGVuIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y1RjRGMSAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggM3B4IHJnYmEoMjU1LDI1NSwyNTUsMSksIGluc2V0IDAgLTJweCA2cHggcmdiYSgwLDAsMCwwLjAzKSwgMCAxMHB4IDMwcHggcmdiYSgwLDAsMCwwLjA1KTsiPgogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBTa2V1b21vcnBoaWMgVG9wIEhpZ2hsaWdodCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWJzb2x1dGUgdG9wLTAgbGVmdC0wIHctZnVsbCBoLVsxcHhdIGJnLWdyYWRpZW50LXRvLXIgZnJvbS10cmFuc3BhcmVudCB2aWEtd2hpdGUgdG8tdHJhbnNwYXJlbnQgb3BhY2l0eS04MCI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgbWItOCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idy0xMiBoLTEyIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJyYW5kLWRhcmsiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTgwZGVnLCAjRjZGNUYyIDAlLCAjRUJFOUU0IDEwMCUpOyBib3gtc2hhZG93OiBpbnNldCAwIDFweCAycHggcmdiYSgyNTUsMjU1LDI1NSwwLjkpLCAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjA1KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAzKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOmJveC1saW5lYXIiIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idy0xMCBoLTEwIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJyYW5kLW11dGVkIGhvdmVyOnRleHQtcmVkLTUwMCB0cmFuc2l0aW9uLWNvbG9ycyIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNGRkZGRkYgMCUsICNGNkY1RjIgMTAwJSk7IGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDI1NSwyNTUsMjU1LDEpLCAwIDJweCA1cHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOmhlYXJ0LWxpbmVhciIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJ0ZXh0LTJ4bCBmb250LXNlcmlmIHRyYWNraW5nLXRpZ2h0IHRleHQtYnJhbmQtdGV4dCBtYi0zIGRyb3Atc2hhZG93LVswXzFweF8xcHhfcmdiYSgyNTUsMjU1LDI1NSwxKV0iPlRoZSBFdGhlcmVhbCBCb3VxdWV0PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXNtIHRleHQtYnJhbmQtbXV0ZWQgZm9udC1saWdodCBsZWFkaW5nLXJlbGF4ZWQiPlJpY2ggaW4gdGV4dHVyYWwgZGl2ZXJzaXR5IGZvciBzcGF0aWFsIGJhbGFuY2UuIEVuZ2luZWVyZWQgdG8gZXZvbHZlIGdyYWNlZnVsbHkgb3ZlciBpdHMgbGlmZXNwYW4uPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNwYWNlLXktNCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1lbmQgYm9yZGVyLWIgYm9yZGVyLWJsYWNrLzUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC1icmFuZC1tdXRlZC83MCI+TG9uZ2V2aXR5PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC1icmFuZC10ZXh0IGRyb3Atc2hhZG93LVswXzFweF8wX3JnYmEoMjU1LDI1NSwyNTUsMC44KV0iPjEwLTE0IGRheXM8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXgganVzdGlmeS1iZXR3ZWVuIGl0ZW1zLWVuZCBib3JkZXItYiBib3JkZXItYmxhY2svNSBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LWJyYW5kLW11dGVkLzcwIj5TY2VudCBQcm9maWxlPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC1icmFuZC10ZXh0IGRyb3Atc2hhZG93LVswXzFweF8wX3JnYmEoMjU1LDI1NSwyNTUsMC44KV0iPlN1YnRsZSBKYXNtaW5lPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1lbmQgYm9yZGVyLWIgYm9yZGVyLWJsYWNrLzUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InRleHQteHMgZm9udC1tb25vIHVwcGVyY2FzZSB0cmFja2luZy13aWRlc3QgdGV4dC1icmFuZC1tdXRlZC83MCI+VmFzZSBMaWZlIFNldHVwPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC1icmFuZC10ZXh0IGRyb3Atc2hhZG93LVswXzFweF8wX3JnYmEoMjU1LDI1NSwyNTUsMC44KV0iPlByZS10cmltbWVkPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPCEtLSBDYXJkIDM6IEltYWdlIC0tPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaC1bNTAwcHhdIG1kOmgtWzYwMHB4XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmUgZ3JvdXAgc2hhZG93LXNtIj4KICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iYXNzZXRzL3BhZ2UtMDQtMDA1NjAwZTUtZjZhYi00ZTU5LWJjODYtZWFlYjAyNzk3ZGZhLTE2MDB3LmpwZyIgYWx0PSJCb3RhbmljYWwgYXJjaGl0ZWN0dXJlIiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgZ3JvdXAtaG92ZXI6c2NhbGUtMTA1IHRyYW5zaXRpb24tdHJhbnNmb3JtIGR1cmF0aW9uLTEwMDAgZWFzZS1vdXQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAiIHN0eWxlPSJiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gdG9wLCByZ2JhKDI3LDM2LDI2LDAuOCkgMCUsIHRyYW5zcGFyZW50IDYwJSk7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhYnNvbHV0ZSBib3R0b20tOCBsZWZ0LTggcmlnaHQtOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXdoaXRlIHRleHQteGwgZm9udC1zZXJpZiB0cmFja2luZy10aWdodCBsZWFkaW5nLXNudWciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcGxldGUgbmF0dXJhbCBlbGVnYW5jZSBzb3VyY2VkIGRpcmVjdGx5IGZyb20gc3VzdGFpbmFibGUgZ3Jvd2Vycy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L21haW4+CgogICAgICAgIDwhLS0gUXVvdGUgU2VjdGlvbiAtLT4KICAgICAgICA8c2VjdGlvbiBjbGFzcz0idy1mdWxsIGJnLXdoaXRlIHB5LTMyIG1kOnB5LTQ4IGJvcmRlci1iIGJvcmRlci1ibGFjay81IHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlbiI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGluc2V0LTAgZmxleCBqdXN0aWZ5LWNlbnRlciBwb2ludGVyLWV2ZW50cy1ub25lIG9wYWNpdHktWzAuMDNdIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzFweF0gaC1mdWxsIGJnLWJsYWNrIG14LTEwIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctWzFweF0gaC1mdWxsIGJnLWJsYWNrIG14LTEwIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJtYXgtdy00eGwgbXgtYXV0byBweC02IHRleHQtY2VudGVyIHJlbGF0aXZlIHotMTAiPgogICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjpxdW90ZS1yaWdodC1saW5lYXIiIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgY2xhc3M9InRleHQtYnJhbmQtbXV0ZWQvMjAgbWItOCBteC1hdXRvIGJsb2NrIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgIDxoMiBjbGFzcz0iZm9udC1zZXJpZiB0ZXh0LTN4bCBtZDp0ZXh0LTV4bCBsZzp0ZXh0LTZ4bCB0cmFja2luZy10aWdodCBsZWFkaW5nLXRpZ2h0IHRleHQtYnJhbmQtdGV4dCByZXZlYWwtdGV4dCI+CiAgICAgICAgICAgICAgICAgICAgIkEgc3lzdGVtaWMgcHJvdG9jb2wgZW5naW5lZXJlZCB0byByZXN0b3JlIHNwYXRpYWwgaGFybW9ueSBhbmQgZGVsaXZlciBzdXN0YWluZWQgdml0YWxpdHkgd2l0aG91dCBzeW50aGV0aWMgY29tcHJvbWlzZS4iCiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gU2xpZGVyIFNlY3Rpb24gLS0+CiAgICAgICAgPHNlY3Rpb24gY2xhc3M9InctZnVsbCBwdC0yNCBwYi0zMiBweC02IG1kOnB4LTEyIGJnLWJyYW5kLWJnIHJlbGF0aXZlIGJvcmRlci1iIGJvcmRlci1ibGFjay81Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBpdGVtcy1lbmQganVzdGlmeS1iZXR3ZWVuIG1iLTEyIj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdHJhY2tpbmctd2lkZXN0IHVwcGVyY2FzZSB0ZXh0LWJyYW5kLW11dGVkIG1iLTIiPjAzIC8vIENvbXBvbmVudHM8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImZvbnQtc2VyaWYgdGV4dC0zeGwgbWQ6dGV4dC00eGwgdHJhY2tpbmctdGlnaHQgdGV4dC1icmFuZC10ZXh0Ij5Db3JlIEJvdGFuaWNhbHM8L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoaWRkZW4gbWQ6ZmxleCBnYXAtMyI+CiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0idy0xMiBoLTEyIHJvdW5kZWQtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0ZXh0LWJyYW5kLXRleHQgdHJhbnNpdGlvbi1hbGwgaG92ZXI6LXRyYW5zbGF0ZS15LTAuNSIgc3R5bGU9ImJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxODBkZWcsICNGRkZGRkYgMCUsICNGNkY1RjIgMTAwJSk7IGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDFweCByZ2JhKDI1NSwyNTUsMjU1LDEpLCAwIDRweCAxMHB4IHJnYmEoMCwwLDAsMC4wNSk7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4wMyk7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJzb2xhcjphcnJvdy1sZWZ0LWxpbmVhciIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJ3LTEyIGgtMTIgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtYnJhbmQtdGV4dCB0cmFuc2l0aW9uLWFsbCBob3ZlcjotdHJhbnNsYXRlLXktMC41IiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y2RjVGMiAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgNHB4IDEwcHggcmdiYSgwLDAsMCwwLjA1KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAzKTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249InNvbGFyOmFycm93LXJpZ2h0LWxpbmVhciIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZ2FwLTYgb3ZlcmZsb3cteC1hdXRvIHBiLTggc25hcC14IHNuYXAtbWFuZGF0b3J5IHNjcm9sbGJhci1oaWRlIiBzdHlsZT0ic2Nyb2xsYmFyLXdpZHRoOiBub25lOyI+CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LVszMDBweF0gbWQ6bWluLXctWzM4MHB4XSBzbmFwLXN0YXJ0IGZsZXggZmxleC1jb2wgZ2FwLTUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFzcGVjdC1bNC81XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcC0yIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTAyLTcyNDE0MmFhLTQ0YTYtNDhkMy05Y2YzLTc2MWUwMGQwNWI3OC0xNjAwdy5qcGciIGFsdD0iU3RydWN0dXJlIiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgcm91bmRlZC1bMS41cmVtXSI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtYnJhbmQtdGV4dCB0cmFja2luZy10aWdodCI+U3RydWN0dXJhbCBTdGVtczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtYnJhbmQtbXV0ZWQgbXQtMSBmb250LWxpZ2h0Ij5Gb3VuZGF0aW9uIEFyY2hpdGVjdHVyZTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LVszMDBweF0gbWQ6bWluLXctWzM4MHB4XSBzbmFwLXN0YXJ0IGZsZXggZmxleC1jb2wgZ2FwLTUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFzcGVjdC1bNC81XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcC0yIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTA0LTAwNTYwMGU1LWY2YWItNGU1OS1iYzg2LWVhZWIwMjc5N2RmYS0xNjAwdy5qcGciIGFsdD0iTHVzaCIgY2xhc3M9InctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIHJvdW5kZWQtWzEuNXJlbV0iPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB4LTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWJyYW5kLXRleHQgdHJhY2tpbmctdGlnaHQiPlZlcmRhbnQgRm9saWFnZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtYnJhbmQtbXV0ZWQgbXQtMSBmb250LWxpZ2h0Ij5TcGF0aWFsIFZvbHVtZTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LVszMDBweF0gbWQ6bWluLXctWzM4MHB4XSBzbmFwLXN0YXJ0IGZsZXggZmxleC1jb2wgZ2FwLTUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFzcGVjdC1bNC81XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcC0yIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTA1LWU1MzQzNTRkLWM1ZjItNDM5OS1hMWQ5LTJmNTAzMzhlOGM0Ny0xNjAwdy5qcGciIGFsdD0iRmxvdyIgY2xhc3M9InctZnVsbCBoLWZ1bGwgb2JqZWN0LWNvdmVyIHJvdW5kZWQtWzEuNXJlbV0iPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InB4LTIiPgogICAgICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWJyYW5kLXRleHQgdHJhY2tpbmctdGlnaHQiPlN0YXRlbWVudCBCbG9vbXM8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC14cyB0ZXh0LWJyYW5kLW11dGVkIG10LTEgZm9udC1saWdodCI+VmlzdWFsIEZvY2FsIFBvaW50PC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im1pbi13LVszMDBweF0gbWQ6bWluLXctWzM4MHB4XSBzbmFwLXN0YXJ0IGZsZXggZmxleC1jb2wgZ2FwLTUiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFzcGVjdC1bNC81XSByb3VuZGVkLVsycmVtXSBvdmVyZmxvdy1oaWRkZW4gcC0yIiBzdHlsZT0iYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE4MGRlZywgI0ZGRkZGRiAwJSwgI0Y4RjdGNCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAycHggNHB4IHJnYmEoMjU1LDI1NSwyNTUsMSksIDAgOHB4IDIwcHggcmdiYSgwLDAsMCwwLjA0KTsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjAyKTsiPgogICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9ImFzc2V0cy9wYWdlLTA2LWZiNjQxNWZkLWJmNGQtNGNjZi04ZTlkLTdhYjQ0NWU5OTIwNy0xNjAwdy5qcGciIGFsdD0iQWNjZW50IiBjbGFzcz0idy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXIgcm91bmRlZC1bMS41cmVtXSI+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icHgtMiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtYnJhbmQtdGV4dCB0cmFja2luZy10aWdodCI+VGV4dHVyYWwgQWNjZW50czwvaDQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJ0ZXh0LXhzIHRleHQtYnJhbmQtbXV0ZWQgbXQtMSBmb250LWxpZ2h0Ij5NaWNybyBEZXRhaWxzPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgIDwhLS0gTFVYVVJJT1VTIEZPT1RFUiAtLT4KICAgICAgICA8Zm9vdGVyIGNsYXNzPSJ3LWZ1bGwgYmctYnJhbmQtZGFyayB0ZXh0LXdoaXRlIHB0LTI0IHBiLTEyIHB4LTYgbWQ6cHgtMTIgcmVsYXRpdmUgZmxleC1ncm93IGZsZXggZmxleC1jb2wganVzdGlmeS1lbmQiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC0xNiBtYi0yNCI+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LTJ4bCBmb250LXNlcmlmIHRyYWNraW5nLXRpZ2h0IHRleHQtd2hpdGUgbWItOCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ic29sYXI6bGVhZi1saW5lLWR1b3RvbmUiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgc3Ryb2tlLXdpZHRoPSIxLjUiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICBLSVdJIEZMT1JBTAogICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0idGV4dC1zbSB0ZXh0LXdoaXRlLzUwIGZvbnQtbGlnaHQgbWF4LXctc20gbGVhZGluZy1yZWxheGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgUmVkZWZpbmluZyBib3RhbmljYWwgaW50ZWdyYXRpb24gZm9yIG1vZGVybiBzcGFjZXMuIEVuZ2luZWVyZWQgbmF0dXJlIHdpdGhvdXQgY29tcHJvbWlzZS4KICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZ3JpZCBncmlkLWNvbHMtMiBnYXAtOCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LXhzIGZvbnQtbW9ubyB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXN0IHRleHQtd2hpdGUvNDAgbWItNiI+SW5kZXg8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InNwYWNlLXktNCB0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC13aGl0ZS84MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPlBoaWxvc29waHk8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+U291cmNpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+Sm91cm5hbDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC14cyBmb250LW1vbm8gdXBwZXJjYXNlIHRyYWNraW5nLXdpZGVzdCB0ZXh0LXdoaXRlLzQwIG1iLTYiPkNvbm5lY3Q8L2g0PgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InNwYWNlLXktNCB0ZXh0LXNtIGZvbnQtbGlnaHQgdGV4dC13aGl0ZS84MCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PGEgaHJlZj0iIyIgY2xhc3M9ImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiPkluc3RhZ3JhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9IiMiIGNsYXNzPSJob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIj5QaW50ZXJlc3Q8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyI+Q29udGFjdDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIHB0LTggYm9yZGVyLXQgYm9yZGVyLXdoaXRlLzEwIHRleHQteHMgZm9udC1tb25vIHRleHQtd2hpdGUvMzAiPgogICAgICAgICAgICAgICAgPHA+JmNvcHk7IDIwMjQgS2l3aSBGbG9yYWwgU3lzdGVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZsZXggZ2FwLTYgbXQtNCBtZDptdC0wIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZS82MCB0cmFuc2l0aW9uLWNvbG9ycyI+UHJpdmFjeTwvYT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iaG92ZXI6dGV4dC13aGl0ZS82MCB0cmFuc2l0aW9uLWNvbG9ycyI+VGVybXM8L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9mb290ZXI+CgogICAgICAgIDwhLS0gQm90dG9tIENvcm5lciBNYXJrZXJzIC0tPgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS0wIC1sZWZ0LVszcHhdIHctWzVweF0gaC1bNXB4XSBib3JkZXIgYm9yZGVyLWJsYWNrLzE1IGJnLWJyYW5kLWJnIHotNTAiPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImFic29sdXRlIGJvdHRvbS0wIC1yaWdodC1bM3B4XSB3LVs1cHhdIGgtWzVweF0gYm9yZGVyIGJvcmRlci1ibGFjay8xNSBiZy1icmFuZC1iZyB6LTUwIj48L2Rpdj4KICAgIDwvZGl2PgoKICAgIDwhLS0gV2ViR0wgJiBHU0FQIEFuaW1hdGlvbiBMb2dpYyAtLT4KICAgIDxzY3JpcHQ+CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsICgpID0+IHsKICAgICAgICAgICAgZ3NhcC5yZWdpc3RlclBsdWdpbihTY3JvbGxUcmlnZ2VyKTsKCiAgICAgICAgICAgIGNvbnN0IHNldHVwVGV4dFJldmVhbCA9ICgpID0+IHsKICAgICAgICAgICAgICAgIGNvbnN0IHJldmVhbEVsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnJldmVhbC10ZXh0Jyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHJldmVhbEVsZW1lbnRzLmZvckVhY2goZWwgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBlbC5pbm5lclRleHQ7CiAgICAgICAgICAgICAgICAgICAgZWwuaW5uZXJIVE1MID0gJyc7CiAgICAgICAgICAgICAgICAgICAgY29uc3Qgd29yZHMgPSB0ZXh0LnNwbGl0KCcgJyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgd29yZHMuZm9yRWFjaCh3b3JkID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWFza0RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgbWFza0Rpdi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1mbGV4JzsKICAgICAgICAgICAgICAgICAgICAgICAgbWFza0Rpdi5zdHlsZS5vdmVyZmxvdyA9ICdoaWRkZW4nOwogICAgICAgICAgICAgICAgICAgICAgICBtYXNrRGl2LnN0eWxlLnZlcnRpY2FsQWxpZ24gPSAndG9wJzsKICAgICAgICAgICAgICAgICAgICAgICAgbWFza0Rpdi5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMC4yNWVtJzsKICAgICAgICAgICAgICAgICAgICAgICAgbWFza0Rpdi5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzAuMWVtJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJTcGFuLmlubmVyVGV4dCA9IHdvcmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyU3Bhbi5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7CiAgICAgICAgICAgICAgICAgICAgICAgIGlubmVyU3Bhbi5zdHlsZS50cmFuc2Zvcm0gPSAndHJhbnNsYXRlWSgxMTAlKSByb3RhdGUoNGRlZyknOwogICAgICAgICAgICAgICAgICAgICAgICBpbm5lclNwYW4uc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gJ3RvcCBsZWZ0JzsKICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJTcGFuLmNsYXNzTGlzdC5hZGQoJ3JldmVhbC13b3JkLWlubmVyJyk7CgogICAgICAgICAgICAgICAgICAgICAgICBtYXNrRGl2LmFwcGVuZENoaWxkKGlubmVyU3Bhbik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmFwcGVuZENoaWxkKG1hc2tEaXYpOwogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICBnc2FwLnRvKGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJy5yZXZlYWwtd29yZC1pbm5lcicpLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIHk6ICcwJScsCiAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0ZTogMCwKICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDEuMiwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2dlcjogMC4wMywKICAgICAgICAgICAgICAgICAgICAgICAgZWFzZTogJ3Bvd2VyNC5vdXQnLAogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUcmlnZ2VyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyOiBlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiAndG9wIDkwJScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVBY3Rpb25zOiAncGxheSBub25lIG5vbmUgcmV2ZXJzZScKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICBzZXRUaW1lb3V0KHNldHVwVGV4dFJldmVhbCwgMTAwKTsKICAgICAgICB9KTsKICAgIDwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K";
const assetFiles = ["assets/page-01-65695f80-23f9-46ee-8487-cbb6c93cc48b-3840w.webp","assets/page-02-724142aa-44a6-48d3-9cf3-761e00d05b78-1600w.jpg","assets/page-03-4734259a-bad7-422f-981e-ce01e79184f2-1600w.jpg","assets/page-04-005600e5-f6ab-4e59-bc86-eaeb02797dfa-1600w.jpg","assets/page-05-e534354d-c5f2-4399-a1d9-2f50338e8c47-1600w.jpg","assets/page-06-fb6415fd-bf4d-4ccf-8e9d-7ab445e99207-1600w.jpg"];
const runtimeFiles = ["../../../../assets/runtime/runtime-027051effa47-gsap-min.js","../../../../assets/runtime/runtime-163ebd087cfc-iconify-icon-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/container-lines · 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 or Meng To.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download container-lines.zip