body{margin:0;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";color:#333;background-color:#fff;min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}body.dark{color:#e6e6e6;background-color:#333}img{width:100%;height:auto}h1,h2,h3,h4,h5,h6,p{margin:.75rem 0;font-weight:400}h1{font-size:2.027rem}@media screen and (min-width:640px){h1{font-size:2.986rem}}h2{font-size:1.802rem}@media screen and (min-width:640px){h2{font-size:2.488rem}}h3{font-size:1.602rem}@media screen and (min-width:640px){h3{font-size:2.074rem}}h4{font-size:1.424rem}@media screen and (min-width:640px){h4{font-size:1.728rem}}h5{font-size:1.266rem}@media screen and (min-width:640px){h5{font-size:1.44rem}}h6{font-size:1.125rem}@media screen and (min-width:640px){h6{font-size:1.2rem}}small{font-size:.889rem}@media screen and (min-width:640px){small{font-size:.833rem}}a{color:#0000e6;text-decoration:none}body.dark a{color:#99f}a:hover{text-decoration:underline}hr{border-color:rgba(0,0,0,0.1)}.container,.container-sm{margin:0 auto;padding:1rem;padding-bottom:2.5rem;max-width:1024px;width:calc(100% - 2rem)}.container-sm{max-width:640px}.footer{display:flex;align-items:center;justify-content:center;padding:.5rem 0;background:#f2f2f2}body.dark .footer{background:#3d3d3d}.hero{margin:5rem 0}.hero__description{max-width:75ch}.navbar{padding:1rem;box-shadow:0 0 0 1px rgba(0,0,0,0.08)}body.dark .navbar{box-shadow:0 0 0 1px rgba(255,255,255,0.08)}.navbar__inner{display:flex;flex-direction:row;align-items:center;justify-content:space-between;max-width:1024px;margin:0 auto}.navbar__links{display:none}@media screen and (min-width:640px){.navbar__links{display:flex;align-items:center;justify-content:space-between;gap:.25rem}}.navbar__mobile-links{display:none}.navbar__mobile-links--open{display:flex;flex-direction:column;gap:.25rem}@media screen and (min-width:640px){.navbar__mobile-links{display:none}}.navbar__mobile-link{padding:1rem;border-radius:.25rem}.navbar__mobile-link:hover{background-color:#f2f2f2}body.dark .navbar__mobile-link:hover{background-color:#3d3d3d}.navbar__mobile-options{display:flex;gap:.25rem}@media screen and (min-width:640px){.navbar__mobile-options{display:none}}.navbar__button{display:block;line-height:0;padding:.75rem;background-color:transparent;border:none;border-radius:.25rem}.navbar__button:hover{background-color:#f2f2f2}body.dark .navbar__button:hover{background-color:#3d3d3d}body.dark .navbar__hamburger > svg{fill:#fff}.navbar__link{display:inline-block;padding:.75rem}.navbar__logo{display:inline-block;border-radius:.25rem;font-weight:bold}.section-title{font-size:1rem;color:#5c5c5c;font-weight:600}@media screen and (min-width:640px){.section-title{font-size:1rem}}body.dark .section-title{color:#b8b8b8}.card-grid{display:grid;grid-auto-rows:auto;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem}@media screen and (min-width:640px){.card-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}}.card{padding:1rem;border-radius:.25rem;box-shadow:0 0 0 1px rgba(0,0,0,0.06) , 0 2px 2px rgba(0,0,0,0.04) , 0 4px 4px rgba(0,0,0,0.05) , 0 6px 6px rgba(0,0,0,0.06)}body.dark .card{box-shadow:0 0 0 1px rgba(255,255,255,0.06) , 0 2px 2px rgba(255,255,255,0.04) , 0 4px 4px rgba(255,255,255,0.05) , 0 6px 6px rgba(255,255,255,0.06)}.card__title{font-size:1.266rem;margin-top:0;margin-bottom:.1rem}@media screen and (min-width:640px){.card__title{font-size:1.44rem}}.card__date{margin-top:0;color:#5c5c5c;font-size:.889rem}@media screen and (min-width:640px){.card__date{font-size:.833rem}}body.dark .card__date{color:#b8b8b8}.card__description{margin:0}.card__subtitle{margin-top:.5rem;margin-bottom:.1rem;font-weight:600}code[class*="language-"],pre[class*="language-"]{background:#fafafa;color:#383a42;font-family:"Fira Code","Fira Mono",Menlo,Consolas,"DejaVu Sans Mono",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;tab-size:2;hyphens:none}.dark code[class*="language-"],.dark pre[class*="language-"]{background:#282c34;color:#abb2bf;text-shadow:0 1px rgba(0,0,0,0.3)}code[class*="language-"]::selection,code[class*="language-"] *::selection,pre[class*="language-"] *::selection{background:#e5e5e6;color:inherit}.dark code[class*="language-"]::selection,.dark code[class*="language-"] *::selection,.dark pre[class*="language-"] *::selection{background:#3e4451;text-shadow:none}pre[class*="language-"]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre) > code[class*="language-"]{padding:.2em .3em;border-radius:.3em;white-space:normal}@media print{code[class*="language-"],pre[class*="language-"]{text-shadow:none}}.token.comment,.token.prolog,.token.cdata{color:#a0a1a7}.dark .token.comment,.dark .token.prolog,.dark .token.cdata{color:#5c6370}.token.doctype,.token.punctuation,.token.entity{color:#383a42}.dark .token.doctype,.dark .token.punctuation,.dark .token.entity{color:#abb2bf}.token.attr-name,.token.class-name,.token.boolean,.token.constant,.token.number,.token.atrule{color:#b76b01}.dark .token.attr-name,.dark .token.class-name,.dark .token.boolean,.dark .token.constant,.dark .token.number,.dark .token.atrule{color:#d19a66}.token.keyword{color:#a626a4}.dark .token.keyword{color:#c678dd}.token.property,.token.tag,.token.symbol,.token.deleted,.token.important{color:#e45649}.dark .token.property,.dark .token.tag,.dark .token.symbol,.dark .token.deleted,.dark .token.important{color:#e06c75}.token.selector,.token.string,.token.char,.token.builtin,.token.inserted,.token.regex,.token.attr-value,.token.attr-value > .token.punctuation{color:#50a14f}.dark .token.selector,.dark .token.string,.dark .token.char,.dark .token.builtin,.dark .token.inserted,.dark .token.regex,.dark .token.attr-value,.dark .token.attr-value > .token.punctuation{color:#98c379}.token.variable,.token.operator,.token.function{color:#4078f2}.dark .token.variable,.dark .token.operator,.dark .token.function{color:#61afef}.token.url{color:#0184bc}.token.url .dark{color:#56b6c2}.token.attr-value > .token.punctuation.attr-equals,.token.special-attr > .token.attr-value > .token.value.css{color:#383a42}.dark .token.attr-value > .token.punctuation.attr-equals,.dark .token.special-attr > .token.attr-value > .token.value.css{color:#abb2bf}.language-css .token.selector{color:#e45649}.dark .language-css .token.selector{color:#e06c75}.language-css .token.property{color:#383a42}.dark .language-css .token.property{color:#abb2bf}.language-css .token.function,.language-css .token.url > .token.function{color:#0184bc}.dark .language-css .token.function,.dark .language-css .token.url > .token.function{color:#56b6c2}.language-css .token.url > .token.string.url{color:#50a14f}.dark .language-css .token.url > .token.string.url{color:#98c379}.language-css .token.important,.language-css .token.atrule .token.rule{color:#a626a4}.dark .language-css .token.important,.dark .language-css .token.atrule .token.rule{color:#c678dd}.language-javascript .token.operator{color:#a626a4}.dark .language-javascript .token.operator{color:#c678dd}.language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation{color:#ca1243}.dark .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation{color:#be5046}.language-json .token.operator{color:#383a42}.dark .language-json .token.operator{color:#abb2bf}.language-json .token.null.keyword{color:#b76b01}.dark .language-json .token.null.keyword{color:#d19a66}.language-markdown .token.url,.language-markdown .token.url > .token.operator,.language-markdown .token.url-reference.url > .token.string{color:#383a42}.dark .language-markdown .token.url,.dark .language-markdown .token.url > .token.operator,.dark .language-markdown .token.url-reference.url > .token.string{color:#abb2bf}.language-markdown .token.url > .token.content{color:#4078f2}.dark .language-markdown .token.url > .token.content{color:#61afef}.language-markdown .token.url > .token.url,.language-markdown .token.url-reference.url{color:#0184bc}.dark .language-markdown .token.url > .token.url,.dark .language-markdown .token.url-reference.url{color:#56b6c2}.language-markdown .token.blockquote.punctuation,.language-markdown .token.hr.punctuation{color:#a0a1a7;font-style:italic}.dark .language-markdown .token.blockquote.punctuation,.dark .language-markdown .token.hr.punctuation{color:#5c6370}.language-markdown .token.code-snippet{color:#50a14f}.dark .language-markdown .token.code-snippet{color:#98c379}.language-markdown .token.bold .token.content{color:#b76b01}.dark .language-markdown .token.bold .token.content{color:#d19a66}.language-markdown .token.italic .token.content{color:#a626a4}.dark .language-markdown .token.italic .token.content{color:#c678dd}.language-markdown .token.strike .token.content,.language-markdown .token.strike .token.punctuation,.language-markdown .token.list.punctuation,.language-markdown .token.title.important > .token.punctuation{color:#e45649}.dark .language-markdown .token.strike .token.content,.dark .language-markdown .token.strike .token.punctuation,.dark .language-markdown .token.list.punctuation,.dark .language-markdown .token.title.important > .token.punctuation{color:#e06c75}.token.bold{font-weight:bold}.token.comment,.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.8}.token.token.tab:not(:empty):before,.token.token.cr:before,.token.token.lf:before,.token.token.space:before{color:rgba(56,58,66,0.2)}.dark .token.token.tab:not(:empty):before,.dark .token.token.cr:before,.dark .token.token.lf:before,.dark .token.token.space:before{color:rgba(171,178,191,0.15);text-shadow:none}div.code-toolbar > .toolbar.toolbar > .toolbar-item{margin-right:.4em}div.code-toolbar > .toolbar.toolbar > .toolbar-item > button,div.code-toolbar > .toolbar.toolbar > .toolbar-item > a,div.code-toolbar > .toolbar.toolbar > .toolbar-item > span{background:#e5e5e6;color:#696c77;padding:.1em .4em;border-radius:.3em}.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > button,.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > a,.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > span{background:#3a3f4b;color:#828997}div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover,div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus,div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover,div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus,div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover,div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus{background:#c6c7c7;color:#383a42}.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:hover,.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > button:focus,.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:hover,.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > a:focus,.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:hover,.dark div.code-toolbar > .toolbar.toolbar > .toolbar-item > span:focus{background:#3e4451;color:#abb2bf}.line-highlight.line-highlight{background:rgba(56,58,66,0.05)}.dark .line-highlight.line-highlight{background:rgba(153,187,255,0.04)}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background:#e5e5e6;color:#383a42;padding:.1em .6em;border-radius:.3em;box-shadow:0 2px 0 0 rgba(0,0,0,0.2)}.dark .line-highlight.line-highlight:before,.dark .line-highlight.line-highlight[data-end]:after{background:#3a3f4b;color:#abb2bf}pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before{background-color:rgba(56,58,66,0.05)}.dark pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows > span:hover:before{background-color:rgba(153,187,255,0.04)}.line-numbers.line-numbers .line-numbers-rows,.command-line .command-line-prompt{border-right-color:rgba(56,58,66,0.2)}.dark .line-numbers.line-numbers .line-numbers-rows,.dark .command-line .command-line-prompt{border-right-color:rgba(171,178,191,0.15)}.line-numbers .line-numbers-rows > span:before,.command-line .command-line-prompt > span:before{color:#9d9d9f}.dark .line-numbers .line-numbers-rows > span:before,.dark .command-line .command-line-prompt > span:before{color:#636d83}.rainbow-braces .token.token.punctuation.brace-level-1,.rainbow-braces .token.token.punctuation.brace-level-5,.rainbow-braces .token.token.punctuation.brace-level-9{color:#e45649}.dark .rainbow-braces .token.token.punctuation.brace-level-1,.dark .rainbow-braces .token.token.punctuation.brace-level-5,.dark .rainbow-braces .token.token.punctuation.brace-level-9{color:#e06c75}.rainbow-braces .token.token.punctuation.brace-level-2,.rainbow-braces .token.token.punctuation.brace-level-6,.rainbow-braces .token.token.punctuation.brace-level-10{color:#50a14f}.dark .rainbow-braces .token.token.punctuation.brace-level-2,.dark .rainbow-braces .token.token.punctuation.brace-level-6,.dark .rainbow-braces .token.token.punctuation.brace-level-10{color:#98c379}.rainbow-braces .token.token.punctuation.brace-level-3,.rainbow-braces .token.token.punctuation.brace-level-7,.rainbow-braces .token.token.punctuation.brace-level-11{color:#4078f2}.dark .rainbow-braces .token.token.punctuation.brace-level-3,.dark .rainbow-braces .token.token.punctuation.brace-level-7,.dark .rainbow-braces .token.token.punctuation.brace-level-11{color:#61afef}.rainbow-braces .token.token.punctuation.brace-level-4,.rainbow-braces .token.token.punctuation.brace-level-8,.rainbow-braces .token.token.punctuation.brace-level-12{color:#a626a4}.dark .rainbow-braces .token.token.punctuation.brace-level-4,.dark .rainbow-braces .token.token.punctuation.brace-level-8,.dark .rainbow-braces .token.token.punctuation.brace-level-12{color:#c678dd}pre.diff-highlight > code .token.token.deleted:not(.prefix),pre > code.diff-highlight .token.token.deleted:not(.prefix){background-color:rgba(255,82,102,0.15)}pre.diff-highlight > code .token.token.deleted:not(.prefix)::-moz-selection,pre.diff-highlight > code .token.token.deleted:not(.prefix) *::-moz-selection,pre > code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection,pre > code.diff-highlight .token.token.deleted:not(.prefix) *::-moz-selection{background-color:rgba(251,86,105,0.25)}pre.diff-highlight > code .token.token.deleted:not(.prefix)::selection,pre.diff-highlight > code .token.token.deleted:not(.prefix) *::selection,pre > code.diff-highlight .token.token.deleted:not(.prefix)::selection,pre > code.diff-highlight .token.token.deleted:not(.prefix) *::selection{background-color:rgba(251,86,105,0.25)}pre.diff-highlight > code .token.token.inserted:not(.prefix),pre > code.diff-highlight .token.token.inserted:not(.prefix){background-color:rgba(26,255,91,0.15)}pre.diff-highlight > code .token.token.inserted:not(.prefix)::-moz-selection,pre.diff-highlight > code .token.token.inserted:not(.prefix) *::-moz-selection,pre > code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection,pre > code.diff-highlight .token.token.inserted:not(.prefix) *::-moz-selection{background-color:rgba(56,224,98,0.25)}pre.diff-highlight > code .token.token.inserted:not(.prefix)::selection,pre.diff-highlight > code .token.token.inserted:not(.prefix) *::selection,pre > code.diff-highlight .token.token.inserted:not(.prefix)::selection,pre > code.diff-highlight .token.token.inserted:not(.prefix) *::selection{background-color:rgba(56,224,98,0.25)}.prism-previewer.prism-previewer:before,.prism-previewer-gradient.prism-previewer-gradient div{border-color:#f2f2f2}.dark .prism-previewer.prism-previewer:before,.dark .prism-previewer-gradient.prism-previewer-gradient div{border-color:#262931}.prism-previewer-color.prism-previewer-color:before,.prism-previewer-gradient.prism-previewer-gradient div,.prism-previewer-easing.prism-previewer-easing:before{border-radius:.3em}.prism-previewer.prism-previewer:after{border-top-color:#f2f2f2}.dark .prism-previewer.prism-previewer:after{border-top-color:#262931}.prism-previewer-flipped.prism-previewer-flipped.after{border-bottom-color:#f2f2f2}.dark .prism-previewer-flipped.prism-previewer-flipped.after{border-bottom-color:#262931}.prism-previewer-angle.prism-previewer-angle:before,.prism-previewer-time.prism-previewer-time:before,.prism-previewer-easing.prism-previewer-easing{background:#fff}.dark .prism-previewer-angle.prism-previewer-angle:before,.dark .prism-previewer-time.prism-previewer-time:before,.dark .prism-previewer-easing.prism-previewer-easing{background:#31363f}.prism-previewer-angle.prism-previewer-angle circle,.prism-previewer-time.prism-previewer-time circle{stroke:#383a42;stroke-opacity:1}.dark .prism-previewer-angle.prism-previewer-angle circle,.dark .prism-previewer-time.prism-previewer-time circle{stroke:#abb2bf}.prism-previewer-easing.prism-previewer-easing circle,.prism-previewer-easing.prism-previewer-easing path,.prism-previewer-easing.prism-previewer-easing line{stroke:#383a42}.dark .prism-previewer-easing.prism-previewer-easing circle,.dark .prism-previewer-easing.prism-previewer-easing path,.dark .prism-previewer-easing.prism-previewer-easing line{stroke:#abb2bf}.prism-previewer-easing.prism-previewer-easing circle{fill:transparent}.pagination{display:flex;margin:1rem 0}.pagination > a{display:block}.pagination__next{margin-left:auto}.post__date{margin-top:0;color:#5c5c5c;font-size:.889rem}@media screen and (min-width:640px){.post__date{font-size:.833rem}}body.dark .post__date{color:#b8b8b8}/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3N0eWx1cy9iYXNlL2JvZHkuc3R5bCIsIi4uLy4uL3N0eWx1cy9iYXNlL2ltYWdlLnN0eWwiLCIuLi8uLi9zdHlsdXMvYmFzZS90eXBvZ3JhcGh5LnN0eWwiLCIuLi8uLi9zdHlsdXMvYWJzdHJhY3RzL21peGlucy5zdHlsIiwiLi4vLi4vc3R5bHVzL2xheW91dC9jb250YWluZXIuc3R5bCIsIi4uLy4uL3N0eWx1cy9jb21wb25lbnRzL3Bvc3Quc3R5bCIsIi4uLy4uL3N0eWx1cy9sYXlvdXQvZm9vdGVyLnN0eWwiLCIuLi8uLi9zdHlsdXMvbGF5b3V0L2hlcm8uc3R5bCIsIi4uLy4uL3N0eWx1cy9sYXlvdXQvbmF2YmFyLnN0eWwiLCIuLi8uLi9zdHlsdXMvbGF5b3V0L3NlY3Rpb24tdGl0bGUuc3R5bCIsIi4uLy4uL3N0eWx1cy9jb21wb25lbnRzL2NhcmQuc3R5bCIsIi4uLy4uL3N0eWx1cy9jb21wb25lbnRzL2hpZ2hsaWdodGluZy5zdHlsIiwiLi4vLi4vc3R5bHVzL2NvbXBvbmVudHMvcGFnaW5hdGlvbi5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLEtBQ0UsT0FBTyxFQUNQLFlBQVksSUFDWixZQUFZLDhIQUNaLE1BQU0sS0FDTixpQkFBaUIsS0FDakIsV0FBVyxNQUNYLFFBQVEsS0FDUixtQkFBbUIsY0FFbkIsVUFDRSxNQUFNLFFBQ04saUJBQWlCLEtDWnJCLElBQ0UsTUFBTSxLQUNOLE9BQU8sS0NGVCxHQUNBLEdBQ0EsR0FDQSxHQUNBLEdBQ0EsR0FDQSxFQUNFLE9BQU8sU0FDUCxZQUFZLElBR1osR0NWQSxVQUF5RCxTQUVkLG9DQUFBLEdBQ3pDLFVBQTBELFVETzVELEdDVkEsVUFBeUQsU0FFZCxvQ0FBQSxHQUN6QyxVQUEwRCxVRE81RCxHQ1ZBLFVBQXlELFNBRWQsb0NBQUEsR0FDekMsVUFBMEQsVURPNUQsR0NWQSxVQUF5RCxTQUVkLG9DQUFBLEdBQ3pDLFVBQTBELFVETzVELEdDVkEsVUFBeUQsU0FFZCxv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R3BCLHdFQUNBLDBFQUNBLHdFQUNBLDBFQUNFLGlCQUFrQixxQkFPcEIsd0NBQ0EsdURBQ0UsYUFBYyxRQUNkLDJHQUNFLGFBQWMsUUFJbEIsb0RBQ0EsdURBQ0Esc0RBQ0UsY0FBZSxLQUlqQix1Q0FDRSxpQkFBa0IsUUFDbEIsNkNBQ0UsaUJBQWtCLFFBR3RCLHVEQUNFLG9CQUFxQixRQUNyQiw2REFDRSxvQkFBcUIsUUFJekIsb0RBQ0Esa0RBQ0EsK0NBQ0UsV0FBWSxLQUNaLHVLQUNFLFdBQVksUUFLaEIsb0RBQ0Esa0RBQ0UsT0FBUSxRQUdSLGVBQWdCLEVBRmhCLGtIQUNFLE9BQVEsUUFLWixzREFDQSxvREFDQSxvREFDRSxPQUFRLFFBQ1IsZ0xBQ0UsT0FBUSxRQUlaLHNEQUNFLEtBQU0sWUM1aUJSLFlBQ0UsUUFBUSxLQUNSLE9BQU8sT0FFUCxnQkFDRSxRQUFRLE1BRVYsa0JBQ0UsWUFBWSxLUFBkLFlBQ0UsV0FBVyxFQUNYLE1BQU0sUUZGUixVQUF5RCxRQUVkLG9DQUFBLFlBQ3pDLFVBQTBELFNFRTFELHNCQUNFLE1BQU0iLCJmaWxlIjoibWFpbi5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJib2R5XG4gIG1hcmdpbiAwXG4gIGxpbmUtaGVpZ2h0IDEuNVxuICBmb250LWZhbWlseSBkZWZhdWx0X2ZvbnRcbiAgY29sb3IgdGV4dF9jb2xvclxuICBiYWNrZ3JvdW5kLWNvbG9yIGJnX2NvbG9yXG4gIG1pbi1oZWlnaHQgMTAwdmhcbiAgZGlzcGxheSBncmlkXG4gIGdyaWQtdGVtcGxhdGUtcm93cyBhdXRvIDFmciBhdXRvXG5cbiAgJi5kYXJrXG4gICAgY29sb3IgdGV4dF9jb2xvcl9kYXJrXG4gICAgYmFja2dyb3VuZC1jb2xvciBiZ19jb2xvcl9kYXJrXG4iLCJpbWcge1xuICB3aWR0aCAxMDAlXG4gIGhlaWdodCBhdXRvXG59IiwiaDFcbmgyXG5oM1xuaDRcbmg1XG5oNlxucFxuICBtYXJnaW4gMC43NXJlbSAwXG4gIGZvbnQtd2VpZ2h0IDQwMFxuXG5mb3IgaSBpbiAoMS4uNilcbiAgaHtpfVxuICAgIHRleHRfc2NhbGVfc2l6ZSAoNyAtIGkpXG5cbnNtYWxsXG4gIHRleHRfc2NhbGVfc2l6ZSAtMVxuXG5hXG4gIGNvbG9yIHByaW1hcnlfY29sb3JcbiAgdGV4dC1kZWNvcmF0aW9uIG5vbmVcblxuICBib2R5LmRhcmsgJlxuICAgIGNvbG9yIHByaW1hcnlfY29sb3JfZGFya1xuXG4gICY6aG92ZXJcbiAgICB0ZXh0LWRlY29yYXRpb24gdW5kZXJsaW5lXG5cbmhyXG4gIGJvcmRlci1jb2xvciByZ2JhKDAsIDAsIDAsIDAuMSkiLCJ0ZXh0X3NjYWxlX3NpemUoZXhwb25lbnQpXG4gIGZvbnQtc2l6ZSAocm91bmQobW9iaWxlX3RleHRfc2NhbGUgKiogZXhwb25lbnQgKiAxMDAwKSAvIDEwMDApXG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aCBicmVha3BvaW50cy5zbSlcbiAgICBmb250LXNpemUgKHJvdW5kKGRlc2t0b3BfdGV4dF9zY2FsZSAqKiBleHBvbmVudCAqIDEwMDApIC8gMTAwMCkiLCIuY29udGFpbmVyXG4gIG1hcmdpbiAwIGF1dG9cbiAgcGFkZGluZyAxcmVtXG4gIHBhZGRpbmctYm90dG9tIDIuNXJlbVxuICBtYXgtd2lkdGggYnJlYWtwb2ludHMubGdcbiAgd2lkdGggY2FsYygxMDAlIC0gMnJlbSlcblxuLmNvbnRhaW5lci1zbVxuICBAZXh0ZW5kIC5jb250YWluZXJcbiAgbWF4LXdpZHRoIGJyZWFrcG9pbnRzLnNtXG4iLCIucG9zdFxuICAmX19kYXRlXG4gICAgbWFyZ2luLXRvcCAwXG4gICAgY29sb3IgbGlnaHRlbih0ZXh0X2NvbG9yLCAyMCUpXG4gICAgdGV4dF9zY2FsZV9zaXplIC0xXG5cbiAgICBib2R5LmRhcmsgJlxuICAgICAgY29sb3IgZGFya2VuKHRleHRfY29sb3JfZGFyaywgMjAlKVxuIiwiLmZvb3RlclxuICBkaXNwbGF5IGZsZXhcbiAgYWxpZ24taXRlbXMgY2VudGVyXG4gIGp1c3RpZnktY29udGVudCBjZW50ZXJcbiAgcGFkZGluZyAwLjVyZW0gMFxuICBiYWNrZ3JvdW5kIGRhcmtlbihiZ19jb2xvciwgNSUpXG5cbiAgYm9keS5kYXJrICZcbiAgICBiYWNrZ3JvdW5kIGxpZ2h0ZW4oYmdfY29sb3JfZGFyaywgNSUpIiwiLmhlcm9cbiAgbWFyZ2luIDVyZW0gMFxuXG4gICZfX2Rlc2NyaXB0aW9uXG4gICAgbWF4LXdpZHRoIDc1Y2hcbiIsIi5uYXZiYXJcbiAgcGFkZGluZyAxcmVtXG4gIGJveC1zaGFkb3cgMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wOClcblxuICBib2R5LmRhcmsgJlxuICAgIGJveC1zaGFkb3cgMCAwIDAgMXB4IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOClcbiAgXG4gICZfX2lubmVyXG4gICAgZGlzcGxheSBmbGV4XG4gICAgZmxleC1kaXJlY3Rpb24gcm93XG4gICAgYWxpZ24taXRlbXMgY2VudGVyXG4gICAganVzdGlmeS1jb250ZW50IHNwYWNlLWJldHdlZW5cbiAgICBtYXgtd2lkdGggYnJlYWtwb2ludHMubGdcbiAgICBtYXJnaW4gMCBhdXRvXG5cbiAgJl9fbGlua3NcbiAgICBkaXNwbGF5IG5vbmVcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGggYnJlYWtwb2ludHMuc20pXG4gICAgICBkaXNwbGF5IGZsZXhcbiAgICAgIGFsaWduLWl0ZW1zIGNlbnRlclxuICAgICAganVzdGlmeS1jb250ZW50IHNwYWNlLWJldHdlZW5cbiAgICAgIGdhcCAwLjI1cmVtXG5cbiAgJl9fbW9iaWxlLWxpbmtzXG4gICAgZGlzcGxheSBub25lXG5cbiAgICAmLS1vcGVuXG4gICAgICBkaXNwbGF5IGZsZXhcbiAgICAgIGZsZXgtZGlyZWN0aW9uIGNvbHVtblxuICAgICAgZ2FwIDAuMjVyZW1cblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGggYnJlYWtwb2ludHMuc20pXG4gICAgICBkaXNwbGF5IG5vbmVcblxuICAmX19tb2JpbGUtbGlua1xuICAgIHBhZGRpbmcgMXJlbVxuICAgIGJvcmRlci1yYWRpdXMgZGVmYXVsdF9yYWRpdXNcblxuICAgICY6aG92ZXJcbiAgICAgIGJhY2tncm91bmQtY29sb3IgZGFya2VuKGJnX2NvbG9yLCA1JSlcblxuICAgICAgYm9keS5kYXJrICZcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvciBsaWdodGVuKGJnX2NvbG9yX2RhcmssIDUlKVxuXG4gICZfX21vYmlsZS1vcHRpb25zXG4gICAgZGlzcGxheSBmbGV4XG4gICAgZ2FwIDAuMjVyZW1cblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGggYnJlYWtwb2ludHMuc20pXG4gICAgICBkaXNwbGF5IG5vbmVcblxuICAmX19idXR0b25cbiAgICBkaXNwbGF5IGJsb2NrXG4gICAgbGluZS1oZWlnaHQgMCAvLyBmaXhlcyBpc3N1ZSB3aXRoIGV4dHJhIHNwYWNlIGluIHRoZSBib3R0b20gb2YgdGhlIGljb25cbiAgICBwYWRkaW5nIDAuNzVyZW1cbiAgICBiYWNrZ3JvdW5kLWNvbG9yIHRyYW5zcGFyZW50XG4gICAgYm9yZGVyIG5vbmVcbiAgICBib3JkZXItcmFkaXVzIGRlZmF1bHRfcmFkaXVzXG5cbiAgICAmOmhvdmVyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yIGRhcmtlbihiZ19jb2xvciwgNSUpXG5cbiAgICAgIGJvZHkuZGFyayAmXG4gICAgICAgIGJhY2tncm91bmQtY29sb3IgbGlnaHRlbihiZ19jb2xvcl9kYXJrLCA1JSlcblxuICBib2R5LmRhcmsgJl9faGFtYnVyZ2VyID4gc3ZnXG4gICAgZmlsbCAjZmZmXG5cbiAgJl9fbGlua1xuICAgIGRpc3BsYXkgaW5saW5lLWJsb2NrXG4gICAgcGFkZGluZyAwLjc1cmVtXG5cbiAgJl9fbG9nb1xuICAgIGRpc3BsYXkgaW5saW5lLWJsb2NrXG4gICAgYm9yZGVyLXJhZGl1cyBkZWZhdWx0X3JhZGl1c1xuICAgIGZvbnQtd2VpZ2h0IGJvbGRcbiIsIi5zZWN0aW9uLXRpdGxlXG4gIHRleHRfc2NhbGVfc2l6ZSAwXG4gIGNvbG9yIGxpZ2h0ZW4odGV4dF9jb2xvciwgMjAlKVxuICBmb250LXdlaWdodCA2MDBcblxuICBib2R5LmRhcmsgJlxuICAgIGNvbG9yIGRhcmtlbih0ZXh0X2NvbG9yX2RhcmssIDIwJSkiLCIuY2FyZC1ncmlkXG4gIGRpc3BsYXkgZ3JpZFxuICBncmlkLWF1dG8tcm93cyBhdXRvXG4gIGdyaWQtdGVtcGxhdGUtY29sdW1ucyByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMjgwcHgsIDFmcikpXG4gIGdhcCAxLjVyZW1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoIGJyZWFrcG9pbnRzLnNtKVxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1ucyByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoMzIwcHgsIDFmcikpXG5cblxuLmNhcmRcbiAgcGFkZGluZyAxcmVtXG4gIGJvcmRlci1yYWRpdXMgZGVmYXVsdF9yYWRpdXNcbiAgYm94LXNoYWRvdzpcbiAgICAwIDAgMCAxcHggcmdiYSgwIDAgMCAwLjA2KVxcLFxuICAgIDAgMnB4IDJweCByZ2JhKDAgMCAwIDAuMDQpXFwsXG4gICAgMCA0cHggNHB4IHJnYmEoMCAwIDAgMC4wNSlcXCxcbiAgICAwIDZweCA2cHggcmdiYSgwIDAgMCAwLjA2KVxuICBcbiAgYm9keS5kYXJrICZcbiAgICBib3gtc2hhZG93OlxuICAgICAgMCAwIDAgMXB4IHJnYmEoMjU1IDI1NSAyNTUgMC4wNilcXCxcbiAgICAgIDAgMnB4IDJweCByZ2JhKDI1NSAyNTUgMjU1IDAuMDQpXFwsXG4gICAgICAwIDRweCA0cHggcmdiYSgyNTUgMjU1IDI1NSAwLjA1KVxcLFxuICAgICAgMCA2cHggNnB4IHJnYmEoMjU1IDI1NSAyNTUgMC4wNilcblxuXG4gICZfX3RpdGxlXG4gICAgdGV4dF9zY2FsZV9zaXplIDJcbiAgICBtYXJnaW4tdG9wIDBcbiAgICBtYXJnaW4tYm90dG9tIDAuMXJlbVxuICBcbiAgJl9fZGF0ZVxuICAgIG1hcmdpbi10b3AgMFxuICAgIGNvbG9yIGxpZ2h0ZW4odGV4dF9jb2xvciwgMjAlKVxuICAgIHRleHRfc2NhbGVfc2l6ZSAtMVxuXG4gICAgYm9keS5kYXJrICZcbiAgICAgIGNvbG9yIGRhcmtlbih0ZXh0X2NvbG9yX2RhcmssIDIwJSlcbiAgXG4gICZfX2Rlc2NyaXB0aW9uXG4gICAgbWFyZ2luIDBcblxuICAmX19zdWJ0aXRsZVxuICAgIG1hcmdpbi10b3AgMC41cmVtXG4gICAgbWFyZ2luLWJvdHRvbSAwLjFyZW1cbiAgICBmb250LXdlaWdodCA2MDBcbiIsIi8qKlxuICogUHJpc20gdGhlbWUgdGhhdCB3b3JrcyBkb3IgbGlnaHQgYW5kIGRhcmsgdGhlbWUgYmFzZWQgb24gT25lIExpZ2h0IGFuZCBPbmUgRGFya1xuICogaHR0cHM6Ly9naXRodWIuY29tL1ByaXNtSlMvcHJpc20tdGhlbWVzL2Jsb2IvbWFzdGVyL3RoZW1lcy9wcmlzbS1vbmUtbGlnaHQuY3NzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vUHJpc21KUy9wcmlzbS10aGVtZXMvYmxvYi9tYXN0ZXIvdGhlbWVzL3ByaXNtLW9uZS1kYXJrLmNzc1xuICovXG5cbi8qKlxuICogT25lIExpZ2h0IHRoZW1lIGZvciBwcmlzbS5qc1xuICogQmFzZWQgb24gQXRvbSdzIE9uZSBMaWdodCB0aGVtZTogaHR0cHM6Ly9naXRodWIuY29tL2F0b20vYXRvbS90cmVlL21hc3Rlci9wYWNrYWdlcy9vbmUtbGlnaHQtc3ludGF4XG4gKi9cbi8qKlxuICogT25lIERhcmsgdGhlbWUgZm9yIHByaXNtLmpzXG4gKiBCYXNlZCBvbiBBdG9tJ3MgT25lIERhcmsgdGhlbWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9hdG9tL2F0b20vdHJlZS9tYXN0ZXIvcGFja2FnZXMvb25lLWRhcmstc3ludGF4XG4gKi9cblxuLyoqXG4gKiBPbmUgTGlnaHQgY29sb3VycyAoYWNjdXJhdGUgYXMgb2YgY29tbWl0IGViMDY0YmYgb24gMTkgRmViIDIwMjEpXG4gKiBGcm9tIGNvbG9ycy5sZXNzXG4gKiAtLW1vbm8tMTogaHNsKDIzMCwgOCUsIDI0JSk7XG4gKiAtLW1vbm8tMjogaHNsKDIzMCwgNiUsIDQ0JSk7XG4gKiAtLW1vbm8tMzogaHNsKDIzMCwgNCUsIDY0JSlcbiAqIC0taHVlLTE6IGhzbCgxOTgsIDk5JSwgMzclKTtcbiAqIC0taHVlLTI6IGhzbCgyMjEsIDg3JSwgNjAlKTtcbiAqIC0taHVlLTM6IGhzbCgzMDEsIDYzJSwgNDAlKTtcbiAqIC0taHVlLTQ6IGhzbCgxMTksIDM0JSwgNDclKTtcbiAqIC0taHVlLTU6IGhzbCg1LCA3NCUsIDU5JSk7XG4gKiAtLWh1ZS01LTI6IGhzbCgzNDQsIDg0JSwgNDMlKTtcbiAqIC0taHVlLTY6IGhzbCgzNSwgOTklLCAzNiUpO1xuICogLS1odWUtNi0yOiBoc2woMzUsIDk5JSwgNDAlKTtcbiAqIC0tc3ludGF4LWZnOiBoc2woMjMwLCA4JSwgMjQlKTtcbiAqIC0tc3ludGF4LWJnOiBoc2woMjMwLCAxJSwgOTglKTtcbiAqIC0tc3ludGF4LWd1dHRlcjogaHNsKDIzMCwgMSUsIDYyJSk7XG4gKiAtLXN5bnRheC1ndWlkZTogaHNsYSgyMzAsIDglLCAyNCUsIDAuMik7XG4gKiAtLXN5bnRheC1hY2NlbnQ6IGhzbCgyMzAsIDEwMCUsIDY2JSk7XG4gKiBGcm9tIHN5bnRheC12YXJpYWJsZXMubGVzc1xuICogLS1zeW50YXgtc2VsZWN0aW9uLWNvbG9yOiBoc2woMjMwLCAxJSwgOTAlKTtcbiAqIC0tc3ludGF4LWd1dHRlci1iYWNrZ3JvdW5kLWNvbG9yLXNlbGVjdGVkOiBoc2woMjMwLCAxJSwgOTAlKTtcbiAqIC0tc3ludGF4LWN1cnNvci1saW5lOiBoc2xhKDIzMCwgOCUsIDI0JSwgMC4wNSk7XG4gKi9cbi8qKlxuICogT25lIERhcmsgY29sb3VycyAoYWNjdXJhdGUgYXMgb2YgY29tbWl0IDhhZTQ1Y2Egb24gNiBTZXAgMjAxOClcbiAqIEZyb20gY29sb3JzLmxlc3NcbiAqIC0tbW9uby0xOiBoc2woMjIwLCAxNCUsIDcxJSk7XG4gKiAtLW1vbm8tMjogaHNsKDIyMCwgOSUsIDU1JSk7XG4gKiAtLW1vbm8tMzogaHNsKDIyMCwgMTAlLCA0MCUpO1xuICogLS1odWUtMTogaHNsKDE4NywgNDclLCA1NSUpO1xuICogLS1odWUtMjogaHNsKDIwNywgODIlLCA2NiUpO1xuICogLS1odWUtMzogaHNsKDI4NiwgNjAlLCA2NyUpO1xuICogLS1odWUtNDogaHNsKDk1LCAzOCUsIDYyJSk7XG4gKiAtLWh1ZS01OiBoc2woMzU1LCA2NSUsIDY1JSk7XG4gKiAtLWh1ZS01LTI6IGhzbCg1LCA0OCUsIDUxJSk7XG4gKiAtLWh1ZS02OiBoc2woMjksIDU0JSwgNjElKTtcbiAqIC0taHVlLTYtMjogaHNsKDM5LCA2NyUsIDY5JSk7XG4gKiAtLXN5bnRheC1mZzogaHNsKDIyMCwgMTQlLCA3MSUpO1xuICogLS1zeW50YXgtYmc6IGhzbCgyMjAsIDEzJSwgMTglKTtcbiAqIC0tc3ludGF4LWd1dHRlcjogaHNsKDIyMCwgMTQlLCA0NSUpO1xuICogLS1zeW50YXgtZ3VpZGU6IGhzbGEoMjIwLCAxNCUsIDcxJSwgMC4xNSk7XG4gKiAtLXN5bnRheC1hY2NlbnQ6IGhzbCgyMjAsIDEwMCUsIDY2JSk7XG4gKiBGcm9tIHN5bnRheC12YXJpYWJsZXMubGVzc1xuICogLS1zeW50YXgtc2VsZWN0aW9uLWNvbG9yOiBoc2woMjIwLCAxMyUsIDI4JSk7XG4gKiAtLXN5bnRheC1ndXR0ZXItYmFja2dyb3VuZC1jb2xvci1zZWxlY3RlZDogaHNsKDIyMCwgMTMlLCAyNiUpO1xuICogLS1zeW50YXgtY3Vyc29yLWxpbmU6IGhzbGEoMjIwLCAxMDAlLCA4MCUsIDAuMDQpO1xuICovXG5cbmNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdLFxucHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXVxuICBiYWNrZ3JvdW5kOiBoc2woMjMwLCAxJSwgOTglKTtcbiAgY29sb3I6IGhzbCgyMzAsIDglLCAyNCUpO1xuICAuZGFyayAmXG4gICAgYmFja2dyb3VuZDogaHNsKDIyMCwgMTMlLCAxOCUpO1xuICAgIGNvbG9yOiBoc2woMjIwLCAxNCUsIDcxJSk7XG4gICAgdGV4dC1zaGFkb3c6IDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgZm9udC1mYW1pbHk6IFwiRmlyYSBDb2RlXCIsIFwiRmlyYSBNb25vXCIsIE1lbmxvLCBDb25zb2xhcywgXCJEZWphVnUgU2FucyBNb25vXCIsIG1vbm9zcGFjZTtcbiAgZGlyZWN0aW9uOiBsdHI7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHdoaXRlLXNwYWNlOiBwcmU7XG4gIHdvcmQtc3BhY2luZzogbm9ybWFsO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIHRhYi1zaXplOiAyO1xuICBoeXBoZW5zOiBub25lO1xuXG5cbi8qIFNlbGVjdGlvbiAqL1xuY29kZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl06OnNlbGVjdGlvbixcbmNvZGVbY2xhc3MqPVwibGFuZ3VhZ2UtXCJdICo6OnNlbGVjdGlvbixcbnByZVtjbGFzcyo9XCJsYW5ndWFnZS1cIl0gKjo6c2VsZWN0aW9uXG4gIGJhY2tncm91bmQ6IGhzbCgyMzAsIDElLCA5MCUpO1xuICAuZGFyayAmXG4gICAgYmFja2dyb3VuZDogaHNsKDIyMCwgMTMlLCAyOCUpO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcblxuXG4vKiBDb2RlIGJsb2NrcyAqL1xucHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXVxuICBwYWRkaW5nOiAxZW07XG4gIG1hcmdpbjogMC41ZW0gMDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIGJvcmRlci1yYWRpdXM6IDAuM2VtO1xuXG5cbi8qIElubGluZSBjb2RlICovXG46bm90KHByZSkgPiBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXVxuICBwYWRkaW5nOiAwLjJlbSAwLjNlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4zZW07XG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7XG5cblxuLyogUHJpbnQgKi9cbkBtZWRpYSBwcmludFxuICBjb2RlW2NsYXNzKj1cImxhbmd1YWdlLVwiXSxcbiAgcHJlW2NsYXNzKj1cImxhbmd1YWdlLVwiXVxuICAgIHRleHQtc2hhZG93OiBub25lO1xuXG5cblxuLnRva2VuLmNvbW1lbnQsXG4udG9rZW4ucHJvbG9nLFxuLnRva2VuLmNkYXRhXG4gIGNvbG9yOiBoc2woMjMwLCA0JSwgNjQlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjIwLCAxMCUsIDQwJSk7XG5cblxuLnRva2VuLmRvY3R5cGUsXG4udG9rZW4ucHVuY3R1YXRpb24sXG4udG9rZW4uZW50aXR5XG4gIGNvbG9yOiBoc2woMjMwLCA4JSwgMjQlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjIwLCAxNCUsIDcxJSk7XG5cblxuLnRva2VuLmF0dHItbmFtZSxcbi50b2tlbi5jbGFzcy1uYW1lLFxuLnRva2VuLmJvb2xlYW4sXG4udG9rZW4uY29uc3RhbnQsXG4udG9rZW4ubnVtYmVyLFxuLnRva2VuLmF0cnVsZVxuICBjb2xvcjogaHNsKDM1LCA5OSUsIDM2JSk7XG4gIC5kYXJrICZcbiAgICBjb2xvcjogaHNsKDI5LCA1NCUsIDYxJSk7XG5cblxuLnRva2VuLmtleXdvcmRcbiAgY29sb3I6IGhzbCgzMDEsIDYzJSwgNDAlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjg2LCA2MCUsIDY3JSk7XG5cblxuLnRva2VuLnByb3BlcnR5LFxuLnRva2VuLnRhZyxcbi50b2tlbi5zeW1ib2wsXG4udG9rZW4uZGVsZXRlZCxcbi50b2tlbi5pbXBvcnRhbnRcbiAgY29sb3I6IGhzbCg1LCA3NCUsIDU5JSk7XG4gIC5kYXJrICZcbiAgICBjb2xvcjogaHNsKDM1NSwgNjUlLCA2NSUpO1xuXG5cbi50b2tlbi5zZWxlY3Rvcixcbi50b2tlbi5zdHJpbmcsXG4udG9rZW4uY2hhcixcbi50b2tlbi5idWlsdGluLFxuLnRva2VuLmluc2VydGVkLFxuLnRva2VuLnJlZ2V4LFxuLnRva2VuLmF0dHItdmFsdWUsXG4udG9rZW4uYXR0ci12YWx1ZSA+IC50b2tlbi5wdW5jdHVhdGlvblxuICBjb2xvcjogaHNsKDExOSwgMzQlLCA0NyUpO1xuICAuZGFyayAmXG4gICAgY29sb3I6IGhzbCg5NSwgMzglLCA2MiUpO1xuXG5cbi50b2tlbi52YXJpYWJsZSxcbi50b2tlbi5vcGVyYXRvcixcbi50b2tlbi5mdW5jdGlvblxuICBjb2xvcjogaHNsKDIyMSwgODclLCA2MCUpO1xuICAuZGFyayAmXG4gICAgY29sb3I6IGhzbCgyMDcsIDgyJSwgNjYlKTtcblxuXG4udG9rZW4udXJsXG4gIGNvbG9yOiBoc2woMTk4LCA5OSUsIDM3JSk7XG4gIC5kYXJrXG4gICAgY29sb3I6IGhzbCgxODcsIDQ3JSwgNTUlKTtcblxuXG4vKiBIVE1MIG92ZXJyaWRlcyAqL1xuLnRva2VuLmF0dHItdmFsdWUgPiAudG9rZW4ucHVuY3R1YXRpb24uYXR0ci1lcXVhbHMsXG4udG9rZW4uc3BlY2lhbC1hdHRyID4gLnRva2VuLmF0dHItdmFsdWUgPiAudG9rZW4udmFsdWUuY3NzXG4gIGNvbG9yOiBoc2woMjMwLCA4JSwgMjQlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjIwLCAxNCUsIDcxJSk7XG5cblxuLyogQ1NTIG92ZXJyaWRlcyAqL1xuLmxhbmd1YWdlLWNzcyAudG9rZW4uc2VsZWN0b3JcbiAgY29sb3I6IGhzbCg1LCA3NCUsIDU5JSk7XG4gIC5kYXJrICZcbiAgICBjb2xvcjogaHNsKDM1NSwgNjUlLCA2NSUpO1xuXG5cbi5sYW5ndWFnZS1jc3MgLnRva2VuLnByb3BlcnR5XG4gIGNvbG9yOiBoc2woMjMwLCA4JSwgMjQlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjIwLCAxNCUsIDcxJSk7XG5cblxuLmxhbmd1YWdlLWNzcyAudG9rZW4uZnVuY3Rpb24sXG4ubGFuZ3VhZ2UtY3NzIC50b2tlbi51cmwgPiAudG9rZW4uZnVuY3Rpb25cbiAgY29sb3I6IGhzbCgxOTgsIDk5JSwgMzclKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMTg3LCA0NyUsIDU1JSk7XG5cblxuLmxhbmd1YWdlLWNzcyAudG9rZW4udXJsID4gLnRva2VuLnN0cmluZy51cmxcbiAgY29sb3I6IGhzbCgxMTksIDM0JSwgNDclKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woOTUsIDM4JSwgNjIlKTtcblxuXG4ubGFuZ3VhZ2UtY3NzIC50b2tlbi5pbXBvcnRhbnQsXG4ubGFuZ3VhZ2UtY3NzIC50b2tlbi5hdHJ1bGUgLnRva2VuLnJ1bGVcbiAgY29sb3I6IGhzbCgzMDEsIDYzJSwgNDAlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjg2LCA2MCUsIDY3JSk7XG5cblxuLyogSlMgb3ZlcnJpZGVzICovXG4ubGFuZ3VhZ2UtamF2YXNjcmlwdCAudG9rZW4ub3BlcmF0b3JcbiAgY29sb3I6IGhzbCgzMDEsIDYzJSwgNDAlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjg2LCA2MCUsIDY3JSk7XG5cblxuLmxhbmd1YWdlLWphdmFzY3JpcHQgLnRva2VuLnRlbXBsYXRlLXN0cmluZyA+IC50b2tlbi5pbnRlcnBvbGF0aW9uID4gLnRva2VuLmludGVycG9sYXRpb24tcHVuY3R1YXRpb24ucHVuY3R1YXRpb25cbiAgY29sb3I6IGhzbCgzNDQsIDg0JSwgNDMlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woNSwgNDglLCA1MSUpO1xuXG5cbi8qIEpTT04gb3ZlcnJpZGVzICovXG4ubGFuZ3VhZ2UtanNvbiAudG9rZW4ub3BlcmF0b3JcbiAgY29sb3I6IGhzbCgyMzAsIDglLCAyNCUpO1xuICAuZGFyayAmXG4gICAgY29sb3I6IGhzbCgyMjAsIDE0JSwgNzElKTtcblxuXG4ubGFuZ3VhZ2UtanNvbiAudG9rZW4ubnVsbC5rZXl3b3JkXG4gIGNvbG9yOiBoc2woMzUsIDk5JSwgMzYlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjksIDU0JSwgNjElKTtcblxuXG4vKiBNRCBvdmVycmlkZXMgKi9cbi5sYW5ndWFnZS1tYXJrZG93biAudG9rZW4udXJsLFxuLmxhbmd1YWdlLW1hcmtkb3duIC50b2tlbi51cmwgPiAudG9rZW4ub3BlcmF0b3IsXG4ubGFuZ3VhZ2UtbWFya2Rvd24gLnRva2VuLnVybC1yZWZlcmVuY2UudXJsID4gLnRva2VuLnN0cmluZ1xuICBjb2xvcjogaHNsKDIzMCwgOCUsIDI0JSk7XG4gIC5kYXJrICZcbiAgICBjb2xvcjogaHNsKDIyMCwgMTQlLCA3MSUpO1xuXG5cbi5sYW5ndWFnZS1tYXJrZG93biAudG9rZW4udXJsID4gLnRva2VuLmNvbnRlbnRcbiAgY29sb3I6IGhzbCgyMjEsIDg3JSwgNjAlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjA3LCA4MiUsIDY2JSk7XG5cblxuLmxhbmd1YWdlLW1hcmtkb3duIC50b2tlbi51cmwgPiAudG9rZW4udXJsLFxuLmxhbmd1YWdlLW1hcmtkb3duIC50b2tlbi51cmwtcmVmZXJlbmNlLnVybFxuICBjb2xvcjogaHNsKDE5OCwgOTklLCAzNyUpO1xuICAuZGFyayAmXG4gICAgY29sb3I6IGhzbCgxODcsIDQ3JSwgNTUlKTtcblxuXG4ubGFuZ3VhZ2UtbWFya2Rvd24gLnRva2VuLmJsb2NrcXVvdGUucHVuY3R1YXRpb24sXG4ubGFuZ3VhZ2UtbWFya2Rvd24gLnRva2VuLmhyLnB1bmN0dWF0aW9uXG4gIGNvbG9yOiBoc2woMjMwLCA0JSwgNjQlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjIwLCAxMCUsIDQwJSk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcblxuXG4ubGFuZ3VhZ2UtbWFya2Rvd24gLnRva2VuLmNvZGUtc25pcHBldFxuICBjb2xvcjogaHNsKDExOSwgMzQlLCA0NyUpO1xuICAuZGFyayAmXG4gICAgY29sb3I6IGhzbCg5NSwgMzglLCA2MiUpO1xuXG5cbi5sYW5ndWFnZS1tYXJrZG93biAudG9rZW4uYm9sZCAudG9rZW4uY29udGVudFxuICBjb2xvcjogaHNsKDM1LCA5OSUsIDM2JSk7XG4gIC5kYXJrICZcbiAgICBjb2xvcjogaHNsKDI5LCA1NCUsIDYxJSk7XG5cblxuLmxhbmd1YWdlLW1hcmtkb3duIC50b2tlbi5pdGFsaWMgLnRva2VuLmNvbnRlbnRcbiAgY29sb3I6IGhzbCgzMDEsIDYzJSwgNDAlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjg2LCA2MCUsIDY3JSk7XG5cblxuLmxhbmd1YWdlLW1hcmtkb3duIC50b2tlbi5zdHJpa2UgLnRva2VuLmNvbnRlbnQsXG4ubGFuZ3VhZ2UtbWFya2Rvd24gLnRva2VuLnN0cmlrZSAudG9rZW4ucHVuY3R1YXRpb24sXG4ubGFuZ3VhZ2UtbWFya2Rvd24gLnRva2VuLmxpc3QucHVuY3R1YXRpb24sXG4ubGFuZ3VhZ2UtbWFya2Rvd24gLnRva2VuLnRpdGxlLmltcG9ydGFudCA+IC50b2tlbi5wdW5jdHVhdGlvblxuICBjb2xvcjogaHNsKDUsIDc0JSwgNTklKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMzU1LCA2NSUsIDY1JSk7XG5cblxuLyogR2VuZXJhbCAqL1xuLnRva2VuLmJvbGRcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cblxuLnRva2VuLmNvbW1lbnQsXG4udG9rZW4uaXRhbGljXG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcblxuXG4udG9rZW4uZW50aXR5XG4gIGN1cnNvcjogaGVscDtcblxuXG4udG9rZW4ubmFtZXNwYWNlXG4gIG9wYWNpdHk6IDAuODtcblxuXG4vKiBQbHVnaW4gb3ZlcnJpZGVzICovXG4vKiBTZWxlY3RvcnMgc2hvdWxkIGhhdmUgaGlnaGVyIHNwZWNpZmljaXR5IHRoYW4gdGhvc2UgaW4gdGhlIHBsdWdpbnMnIGRlZmF1bHQgc3R5bGVzaGVldHMgKi9cblxuLyogU2hvdyBJbnZpc2libGVzIHBsdWdpbiBvdmVycmlkZXMgKi9cbi50b2tlbi50b2tlbi50YWI6bm90KDplbXB0eSk6YmVmb3JlLFxuLnRva2VuLnRva2VuLmNyOmJlZm9yZSxcbi50b2tlbi50b2tlbi5sZjpiZWZvcmUsXG4udG9rZW4udG9rZW4uc3BhY2U6YmVmb3JlXG4gIGNvbG9yOiBoc2xhKDIzMCwgOCUsIDI0JSwgMC4yKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2xhKDIyMCwgMTQlLCA3MSUsIDAuMTUpO1xuICAgIHRleHQtc2hhZG93OiBub25lO1xuXG5cbi8qIFRvb2xiYXIgcGx1Z2luIG92ZXJyaWRlcyAqL1xuLyogU3BhY2Ugb3V0IGFsbCBidXR0b25zIGFuZCBtb3ZlIHRoZW0gYXdheSBmcm9tIHRoZSByaWdodCBlZGdlIG9mIHRoZSBjb2RlIGJsb2NrICovXG5kaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIudG9vbGJhciA+IC50b29sYmFyLWl0ZW1cbiAgbWFyZ2luLXJpZ2h0OiAwLjRlbTtcblxuXG4vKiBTdHlsaW5nIHRoZSBidXR0b25zICovXG5kaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIudG9vbGJhciA+IC50b29sYmFyLWl0ZW0gPiBidXR0b24sXG5kaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIudG9vbGJhciA+IC50b29sYmFyLWl0ZW0gPiBhLFxuZGl2LmNvZGUtdG9vbGJhciA+IC50b29sYmFyLnRvb2xiYXIgPiAudG9vbGJhci1pdGVtID4gc3BhblxuICBiYWNrZ3JvdW5kOiBoc2woMjMwLCAxJSwgOTAlKTtcbiAgY29sb3I6IGhzbCgyMzAsIDYlLCA0NCUpO1xuICAuZGFyayAmXG4gICAgYmFja2dyb3VuZDogaHNsKDIyMCwgMTMlLCAyNiUpO1xuICAgIGNvbG9yOiBoc2woMjIwLCA5JSwgNTUlKTtcbiAgcGFkZGluZzogMC4xZW0gMC40ZW07XG4gIGJvcmRlci1yYWRpdXM6IDAuM2VtO1xuXG5cbmRpdi5jb2RlLXRvb2xiYXIgPiAudG9vbGJhci50b29sYmFyID4gLnRvb2xiYXItaXRlbSA+IGJ1dHRvbjpob3ZlcixcbmRpdi5jb2RlLXRvb2xiYXIgPiAudG9vbGJhci50b29sYmFyID4gLnRvb2xiYXItaXRlbSA+IGJ1dHRvbjpmb2N1cyxcbmRpdi5jb2RlLXRvb2xiYXIgPiAudG9vbGJhci50b29sYmFyID4gLnRvb2xiYXItaXRlbSA+IGE6aG92ZXIsXG5kaXYuY29kZS10b29sYmFyID4gLnRvb2xiYXIudG9vbGJhciA+IC50b29sYmFyLWl0ZW0gPiBhOmZvY3VzLFxuZGl2LmNvZGUtdG9vbGJhciA+IC50b29sYmFyLnRvb2xiYXIgPiAudG9vbGJhci1pdGVtID4gc3Bhbjpob3ZlcixcbmRpdi5jb2RlLXRvb2xiYXIgPiAudG9vbGJhci50b29sYmFyID4gLnRvb2xiYXItaXRlbSA+IHNwYW46Zm9jdXNcbiAgYmFja2dyb3VuZDogaHNsKDIzMCwgMSUsIDc4JSk7IC8qIGN1c3RvbTogZGFya2VuKC0tc3ludGF4LWJnLCAyMCUpICovXG4gIGNvbG9yOiBoc2woMjMwLCA4JSwgMjQlKTtcbiAgLmRhcmsgJlxuICAgIGJhY2tncm91bmQ6IGhzbCgyMjAsIDEzJSwgMjglKTtcbiAgICBjb2xvcjogaHNsKDIyMCwgMTQlLCA3MSUpO1xuXG5cbi8qIExpbmUgSGlnaGxpZ2h0IHBsdWdpbiBvdmVycmlkZXMgKi9cbi8qIFRoZSBoaWdobGlnaHRlZCBsaW5lIGl0c2VsZiAqL1xuLmxpbmUtaGlnaGxpZ2h0LmxpbmUtaGlnaGxpZ2h0XG4gIGJhY2tncm91bmQ6IGhzbGEoMjMwLCA4JSwgMjQlLCAwLjA1KTtcbiAgLmRhcmsgJlxuICAgIGJhY2tncm91bmQ6IGhzbGEoMjIwLCAxMDAlLCA4MCUsIDAuMDQpO1xuXG5cbi8qIERlZmF1bHQgbGluZSBudW1iZXJzIGluIExpbmUgSGlnaGxpZ2h0IHBsdWdpbiAqL1xuLmxpbmUtaGlnaGxpZ2h0LmxpbmUtaGlnaGxpZ2h0OmJlZm9yZSxcbi5saW5lLWhpZ2hsaWdodC5saW5lLWhpZ2hsaWdodFtkYXRhLWVuZF06YWZ0ZXJcbiAgYmFja2dyb3VuZDogaHNsKDIzMCwgMSUsIDkwJSk7XG4gIGNvbG9yOiBoc2woMjMwLCA4JSwgMjQlKTtcbiAgLmRhcmsgJlxuICAgIGJhY2tncm91bmQ6IGhzbCgyMjAsIDEzJSwgMjYlKTtcbiAgICBjb2xvcjogaHNsKDIyMCwgMTQlLCA3MSUpO1xuICBwYWRkaW5nOiAwLjFlbSAwLjZlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4zZW07XG4gIGJveC1zaGFkb3c6IDAgMnB4IDAgMCByZ2JhKDAsIDAsIDAsIDAuMik7IC8qIHNhbWUgYXMgVG9vbGJhciBwbHVnaW4gZGVmYXVsdCAqL1xuXG5cbi8qIEhvdmVyaW5nIG92ZXIgYSBsaW5rYWJsZSBsaW5lIG51bWJlciAoaW4gdGhlIGd1dHRlciBhcmVhKSAqL1xuLyogUmVxdWlyZXMgTGluZSBOdW1iZXJzIHBsdWdpbiBhcyB3ZWxsICovXG5wcmVbaWRdLmxpbmthYmxlLWxpbmUtbnVtYmVycy5saW5rYWJsZS1saW5lLW51bWJlcnMgc3Bhbi5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46aG92ZXI6YmVmb3JlXG4gIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMjMwLCA4JSwgMjQlLCAwLjA1KTtcbiAgLmRhcmsgJlxuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMjIwLCAxMDAlLCA4MCUsIDAuMDQpO1xuXG5cbi8qIExpbmUgTnVtYmVycyBhbmQgQ29tbWFuZCBMaW5lIHBsdWdpbnMgb3ZlcnJpZGVzICovXG4vKiBMaW5lIHNlcGFyYXRpbmcgZ3V0dGVyIGZyb20gY29kaW5nIGFyZWEgKi9cbi5saW5lLW51bWJlcnMubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93cyxcbi5jb21tYW5kLWxpbmUgLmNvbW1hbmQtbGluZS1wcm9tcHRcbiAgYm9yZGVyLXJpZ2h0LWNvbG9yOiBoc2xhKDIzMCwgOCUsIDI0JSwgMC4yKTtcbiAgLmRhcmsgJlxuICAgIGJvcmRlci1yaWdodC1jb2xvcjogaHNsYSgyMjAsIDE0JSwgNzElLCAwLjE1KTtcblxuXG4vKiBTdHVmZiBpbiB0aGUgZ3V0dGVyICovXG4ubGluZS1udW1iZXJzIC5saW5lLW51bWJlcnMtcm93cyA+IHNwYW46YmVmb3JlLFxuLmNvbW1hbmQtbGluZSAuY29tbWFuZC1saW5lLXByb21wdCA+IHNwYW46YmVmb3JlXG4gIGNvbG9yOiBoc2woMjMwLCAxJSwgNjIlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjIwLCAxNCUsIDQ1JSk7XG5cblxuLyogTWF0Y2ggQnJhY2VzIHBsdWdpbiBvdmVycmlkZXMgKi9cbi8qIE5vdGU6IE91dGxpbmUgY29sb3VyIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBicmFjZXMgKi9cbi5yYWluYm93LWJyYWNlcyAudG9rZW4udG9rZW4ucHVuY3R1YXRpb24uYnJhY2UtbGV2ZWwtMSxcbi5yYWluYm93LWJyYWNlcyAudG9rZW4udG9rZW4ucHVuY3R1YXRpb24uYnJhY2UtbGV2ZWwtNSxcbi5yYWluYm93LWJyYWNlcyAudG9rZW4udG9rZW4ucHVuY3R1YXRpb24uYnJhY2UtbGV2ZWwtOVxuICBjb2xvcjogaHNsKDUsIDc0JSwgNTklKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMzU1LCA2NSUsIDY1JSk7XG5cblxuLnJhaW5ib3ctYnJhY2VzIC50b2tlbi50b2tlbi5wdW5jdHVhdGlvbi5icmFjZS1sZXZlbC0yLFxuLnJhaW5ib3ctYnJhY2VzIC50b2tlbi50b2tlbi5wdW5jdHVhdGlvbi5icmFjZS1sZXZlbC02LFxuLnJhaW5ib3ctYnJhY2VzIC50b2tlbi50b2tlbi5wdW5jdHVhdGlvbi5icmFjZS1sZXZlbC0xMFxuICBjb2xvcjogaHNsKDExOSwgMzQlLCA0NyUpO1xuICAuZGFyayAmXG4gICAgY29sb3I6IGhzbCg5NSwgMzglLCA2MiUpO1xuXG5cbi5yYWluYm93LWJyYWNlcyAudG9rZW4udG9rZW4ucHVuY3R1YXRpb24uYnJhY2UtbGV2ZWwtMyxcbi5yYWluYm93LWJyYWNlcyAudG9rZW4udG9rZW4ucHVuY3R1YXRpb24uYnJhY2UtbGV2ZWwtNyxcbi5yYWluYm93LWJyYWNlcyAudG9rZW4udG9rZW4ucHVuY3R1YXRpb24uYnJhY2UtbGV2ZWwtMTFcbiAgY29sb3I6IGhzbCgyMjEsIDg3JSwgNjAlKTtcbiAgLmRhcmsgJlxuICAgIGNvbG9yOiBoc2woMjA3LCA4MiUsIDY2JSk7XG5cblxuLnJhaW5ib3ctYnJhY2VzIC50b2tlbi50b2tlbi5wdW5jdHVhdGlvbi5icmFjZS1sZXZlbC00LFxuLnJhaW5ib3ctYnJhY2VzIC50b2tlbi50b2tlbi5wdW5jdHVhdGlvbi5icmFjZS1sZXZlbC04LFxuLnJhaW5ib3ctYnJhY2VzIC50b2tlbi50b2tlbi5wdW5jdHVhdGlvbi5icmFjZS1sZXZlbC0xMlxuICBjb2xvcjogaHNsKDMwMSwgNjMlLCA0MCUpO1xuICAuZGFyayAmXG4gICAgY29sb3I6IGhzbCgyODYsIDYwJSwgNjclKTtcblxuXG4vKiBEaWZmIEhpZ2hsaWdodCBwbHVnaW4gb3ZlcnJpZGVzICovXG4vKiBUYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9hdG9tL2dpdGh1Yi9ibG9iL21hc3Rlci9zdHlsZXMvdmFyaWFibGVzLmxlc3MgKi9cbnByZS5kaWZmLWhpZ2hsaWdodCA+IGNvZGUgLnRva2VuLnRva2VuLmRlbGV0ZWQ6bm90KC5wcmVmaXgpLFxucHJlID4gY29kZS5kaWZmLWhpZ2hsaWdodCAudG9rZW4udG9rZW4uZGVsZXRlZDpub3QoLnByZWZpeClcbiAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgzNTMsIDEwMCUsIDY2JSwgMC4xNSk7XG5cblxucHJlLmRpZmYtaGlnaGxpZ2h0ID4gY29kZSAudG9rZW4udG9rZW4uZGVsZXRlZDpub3QoLnByZWZpeCk6Oi1tb3otc2VsZWN0aW9uLFxucHJlLmRpZmYtaGlnaGxpZ2h0ID4gY29kZSAudG9rZW4udG9rZW4uZGVsZXRlZDpub3QoLnByZWZpeCkgKjo6LW1vei1zZWxlY3Rpb24sXG5wcmUgPiBjb2RlLmRpZmYtaGlnaGxpZ2h0IC50b2tlbi50b2tlbi5kZWxldGVkOm5vdCgucHJlZml4KTo6LW1vei1zZWxlY3Rpb24sXG5wcmUgPiBjb2RlLmRpZmYtaGlnaGxpZ2h0IC50b2tlbi50b2tlbi5kZWxldGVkOm5vdCgucHJlZml4KSAqOjotbW96LXNlbGVjdGlvblxuICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDM1MywgOTUlLCA2NiUsIDAuMjUpO1xuXG5cbnByZS5kaWZmLWhpZ2hsaWdodCA+IGNvZGUgLnRva2VuLnRva2VuLmRlbGV0ZWQ6bm90KC5wcmVmaXgpOjpzZWxlY3Rpb24sXG5wcmUuZGlmZi1oaWdobGlnaHQgPiBjb2RlIC50b2tlbi50b2tlbi5kZWxldGVkOm5vdCgucHJlZml4KSAqOjpzZWxlY3Rpb24sXG5wcmUgPiBjb2RlLmRpZmYtaGlnaGxpZ2h0IC50b2tlbi50b2tlbi5kZWxldGVkOm5vdCgucHJlZml4KTo6c2VsZWN0aW9uLFxucHJlID4gY29kZS5kaWZmLWhpZ2hsaWdodCAudG9rZW4udG9rZW4uZGVsZXRlZDpub3QoLnByZWZpeCkgKjo6c2VsZWN0aW9uXG4gIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMzUzLCA5NSUsIDY2JSwgMC4yNSk7XG5cblxucHJlLmRpZmYtaGlnaGxpZ2h0ID4gY29kZSAudG9rZW4udG9rZW4uaW5zZXJ0ZWQ6bm90KC5wcmVmaXgpLFxucHJlID4gY29kZS5kaWZmLWhpZ2hsaWdodCAudG9rZW4udG9rZW4uaW5zZXJ0ZWQ6bm90KC5wcmVmaXgpXG4gIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTM3LCAxMDAlLCA1NSUsIDAuMTUpO1xuXG5cbnByZS5kaWZmLWhpZ2hsaWdodCA+IGNvZGUgLnRva2VuLnRva2VuLmluc2VydGVkOm5vdCgucHJlZml4KTo6LW1vei1zZWxlY3Rpb24sXG5wcmUuZGlmZi1oaWdobGlnaHQgPiBjb2RlIC50b2tlbi50b2tlbi5pbnNlcnRlZDpub3QoLnByZWZpeCkgKjo6LW1vei1zZWxlY3Rpb24sXG5wcmUgPiBjb2RlLmRpZmYtaGlnaGxpZ2h0IC50b2tlbi50b2tlbi5pbnNlcnRlZDpub3QoLnByZWZpeCk6Oi1tb3otc2VsZWN0aW9uLFxucHJlID4gY29kZS5kaWZmLWhpZ2hsaWdodCAudG9rZW4udG9rZW4uaW5zZXJ0ZWQ6bm90KC5wcmVmaXgpICo6Oi1tb3otc2VsZWN0aW9uXG4gIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTM1LCA3MyUsIDU1JSwgMC4yNSk7XG5cblxucHJlLmRpZmYtaGlnaGxpZ2h0ID4gY29kZSAudG9rZW4udG9rZW4uaW5zZXJ0ZWQ6bm90KC5wcmVmaXgpOjpzZWxlY3Rpb24sXG5wcmUuZGlmZi1oaWdobGlnaHQgPiBjb2RlIC50b2tlbi50b2tlbi5pbnNlcnRlZDpub3QoLnByZWZpeCkgKjo6c2VsZWN0aW9uLFxucHJlID4gY29kZS5kaWZmLWhpZ2hsaWdodCAudG9rZW4udG9rZW4uaW5zZXJ0ZWQ6bm90KC5wcmVmaXgpOjpzZWxlY3Rpb24sXG5wcmUgPiBjb2RlLmRpZmYtaGlnaGxpZ2h0IC50b2tlbi50b2tlbi5pbnNlcnRlZDpub3QoLnByZWZpeCkgKjo6c2VsZWN0aW9uXG4gIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMTM1LCA3MyUsIDU1JSwgMC4yNSk7XG5cblxuLyogUHJldmlld2VycyBwbHVnaW4gb3ZlcnJpZGVzICovXG4vKiBCYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vYXRvbS1jb21tdW5pdHkvYXRvbS1pZGUtZGF0YXRpcC9ibG9iL21hc3Rlci9zdHlsZXMvYXRvbS1pZGUtZGF0YXRpcHMubGVzcyBhbmQgaHR0cHM6Ly9naXRodWIuY29tL2F0b20vYXRvbS9ibG9iL21hc3Rlci9wYWNrYWdlcy9vbmUtbGlnaHQtdWkgKi9cbi8qIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9hdG9tLWNvbW11bml0eS9hdG9tLWlkZS1kYXRhdGlwL2Jsb2IvbWFzdGVyL3N0eWxlcy9hdG9tLWlkZS1kYXRhdGlwcy5sZXNzIGFuZCBodHRwczovL2dpdGh1Yi5jb20vYXRvbS9hdG9tL2Jsb2IvbWFzdGVyL3BhY2thZ2VzL29uZS1kYXJrLXVpICovXG4vKiBCb3JkZXIgYXJvdW5kIHBvcHVwICovXG4ucHJpc20tcHJldmlld2VyLnByaXNtLXByZXZpZXdlcjpiZWZvcmUsXG4ucHJpc20tcHJldmlld2VyLWdyYWRpZW50LnByaXNtLXByZXZpZXdlci1ncmFkaWVudCBkaXZcbiAgYm9yZGVyLWNvbG9yOiBoc2woMCwgMCwgOTUlKTtcbiAgLmRhcmsgJlxuICAgIGJvcmRlci1jb2xvcjogaHNsKDIyNCwgMTMlLCAxNyUpO1xuXG5cbi8qIEFuZ2xlIGFuZCB0aW1lIHNob3VsZCByZW1haW4gYXMgY2lyY2xlcyBhbmQgYXJlIGhlbmNlIG5vdCBpbmNsdWRlZCAqL1xuLnByaXNtLXByZXZpZXdlci1jb2xvci5wcmlzbS1wcmV2aWV3ZXItY29sb3I6YmVmb3JlLFxuLnByaXNtLXByZXZpZXdlci1ncmFkaWVudC5wcmlzbS1wcmV2aWV3ZXItZ3JhZGllbnQgZGl2LFxuLnByaXNtLXByZXZpZXdlci1lYXNpbmcucHJpc20tcHJldmlld2VyLWVhc2luZzpiZWZvcmVcbiAgYm9yZGVyLXJhZGl1czogMC4zZW07XG5cblxuLyogVHJpYW5nbGVzIHBvaW50aW5nIHRvIHRoZSBjb2RlICovXG4ucHJpc20tcHJldmlld2VyLnByaXNtLXByZXZpZXdlcjphZnRlclxuICBib3JkZXItdG9wLWNvbG9yOiBoc2woMCwgMCwgOTUlKTtcbiAgLmRhcmsgJlxuICAgIGJvcmRlci10b3AtY29sb3I6IGhzbCgyMjQsIDEzJSwgMTclKTtcblxuXG4ucHJpc20tcHJldmlld2VyLWZsaXBwZWQucHJpc20tcHJldmlld2VyLWZsaXBwZWQuYWZ0ZXJcbiAgYm9yZGVyLWJvdHRvbS1jb2xvcjogaHNsKDAsIDAsIDk1JSk7XG4gIC5kYXJrICZcbiAgICBib3JkZXItYm90dG9tLWNvbG9yOiBoc2woMjI0LCAxMyUsIDE3JSk7XG5cblxuLyogQmFja2dyb3VuZCBjb2xvdXIgd2l0aGluIHRoZSBwb3B1cCAqL1xuLnByaXNtLXByZXZpZXdlci1hbmdsZS5wcmlzbS1wcmV2aWV3ZXItYW5nbGU6YmVmb3JlLFxuLnByaXNtLXByZXZpZXdlci10aW1lLnByaXNtLXByZXZpZXdlci10aW1lOmJlZm9yZSxcbi5wcmlzbS1wcmV2aWV3ZXItZWFzaW5nLnByaXNtLXByZXZpZXdlci1lYXNpbmdcbiAgYmFja2dyb3VuZDogaHNsKDAsIDAlLCAxMDAlKTtcbiAgLmRhcmsgJlxuICAgIGJhY2tncm91bmQ6IGhzbCgyMTksIDEzJSwgMjIlKTtcblxuXG4vKiBGb3IgYW5nbGUsIHRoaXMgaXMgdGhlIHBvc2l0aXZlIGFyZWEgKGVnLiA5MGRlZyB3aWxsIGRpc3BsYXkgb25lIHF1YWRyYW50IGluIHRoaXMgY29sb3VyKSAqL1xuLyogRm9yIHRpbWUsIHRoaXMgaXMgdGhlIGFsdGVybmF0ZSBjb2xvdXIgKi9cbi5wcmlzbS1wcmV2aWV3ZXItYW5nbGUucHJpc20tcHJldmlld2VyLWFuZ2xlIGNpcmNsZSxcbi5wcmlzbS1wcmV2aWV3ZXItdGltZS5wcmlzbS1wcmV2aWV3ZXItdGltZSBjaXJjbGVcbiAgc3Ryb2tlOiBoc2woMjMwLCA4JSwgMjQlKTtcbiAgLmRhcmsgJlxuICAgIHN0cm9rZTogaHNsKDIyMCwgMTQlLCA3MSUpO1xuICBzdHJva2Utb3BhY2l0eTogMTtcblxuXG4vKiBTdHJva2UgY29sb3VycyBvZiB0aGUgaGFuZGxlLCBkaXJlY3Rpb24gcG9pbnQsIGFuZCB2ZWN0b3IgaXRzZWxmICovXG4ucHJpc20tcHJldmlld2VyLWVhc2luZy5wcmlzbS1wcmV2aWV3ZXItZWFzaW5nIGNpcmNsZSxcbi5wcmlzbS1wcmV2aWV3ZXItZWFzaW5nLnByaXNtLXByZXZpZXdlci1lYXNpbmcgcGF0aCxcbi5wcmlzbS1wcmV2aWV3ZXItZWFzaW5nLnByaXNtLXByZXZpZXdlci1lYXNpbmcgbGluZVxuICBzdHJva2U6IGhzbCgyMzAsIDglLCAyNCUpO1xuICAuZGFyayAmXG4gICAgc3Ryb2tlOiBoc2woMjIwLCAxNCUsIDcxJSk7XG5cblxuLyogRmlsbCBjb2xvdXIgb2YgdGhlIGhhbmRsZSAqL1xuLnByaXNtLXByZXZpZXdlci1lYXNpbmcucHJpc20tcHJldmlld2VyLWVhc2luZyBjaXJjbGVcbiAgZmlsbDogdHJhbnNwYXJlbnQ7XG5cbiIsIi5wYWdpbmF0aW9uXG4gIGRpc3BsYXkgZmxleFxuICBtYXJnaW4gMXJlbSAwXG5cbiAgJiA+IGFcbiAgICBkaXNwbGF5IGJsb2NrXG4gIFxuICAmX19uZXh0XG4gICAgbWFyZ2luLWxlZnQgYXV0byJdfQ== */