diff --git a/.gitignore b/.gitignore
index 593a6d3..5d818be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
node_modules
# Compiled output
+/dist
/.tmp
/zip
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 0000000..267f346
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+ Pixel borders - Creates pixelated borders on html elements
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Basic examples
+
Pixel border 1
+
Pixel inset 1
+
+
+
Pixel border 2
+
Pixel inset 2
+
+
+
Colour coded examples
+
+
+
+
+
+
+
+
Customisation examples
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/styles/pixel-borders.css b/docs/styles/pixel-borders.css
new file mode 100644
index 0000000..0a22bc3
--- /dev/null
+++ b/docs/styles/pixel-borders.css
@@ -0,0 +1,444 @@
+.pixel-borders {
+ position: relative;
+ display: inline-block;
+ margin: 0 15px 15px 0;
+ padding: 15px 20px;
+ background-color: #fff;
+ font-family: "Press Start 2P", Arial Black, Arial Bold, Arial, sans-serif;
+}
+
+.pixel-borders--1 {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #000;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+}
+
+@supports (border-image-source: none) {
+ .pixel-borders--1 {
+ border-radius: 14px;
+ }
+}
+
+.pixel-borders--1-inset {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #000;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+}
+
+@supports (border-image-source: none) {
+ .pixel-borders--1-inset {
+ border-radius: 14px;
+ }
+}
+
+.pixel-borders--1-inset::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #ddd;
+ box-shadow: inset -4px -4px #ddd;
+}
+
+.pixel-borders--2 {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #000;
+ border-image-slice: 4;
+ border-image-width: 2;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+}
+
+@supports (border-image-source: none) {
+ .pixel-borders--2 {
+ border-radius: 20px;
+ }
+}
+
+.pixel-borders--2-inset {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #000;
+ border-image-slice: 4;
+ border-image-width: 2;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+}
+
+@supports (border-image-source: none) {
+ .pixel-borders--2-inset {
+ border-radius: 20px;
+ }
+}
+
+.pixel-borders--2-inset::after {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #ddd;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ border-image-width: 0 1 1 0;
+ width: calc(100% - 4px);
+ height: calc(100% - 4px);
+}
+
+@supports (border-image-source: none) {
+ .pixel-borders--2-inset::after {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--light {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #cccccc;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #fff;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--light {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--light::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #e6e5e5;
+ box-shadow: inset -4px -4px #e6e5e5;
+}
+
+.pixel-box--light:hover, .pixel-box--light:focus {
+ background-color: #f2f2f2;
+}
+
+.pixel-box--primary {
+ color: #fff;
+ border-style: solid;
+ border-width: 4px;
+ border-color: #0c639c;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #209cee;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--primary {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--primary::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #1081cb;
+ box-shadow: inset -4px -4px #1081cb;
+}
+
+.pixel-box--primary:hover, .pixel-box--primary:focus {
+ background-color: #1190e3;
+}
+
+.pixel-box--success {
+ color: #fff;
+ border-style: solid;
+ border-width: 4px;
+ border-color: #5b8423;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #92cc41;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--success {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--success::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #77ac2e;
+ box-shadow: inset -4px -4px #77ac2e;
+}
+
+.pixel-box--success:hover, .pixel-box--success:focus {
+ background-color: #85c034;
+}
+
+.pixel-box--warning {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #a88f06;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #f7d51d;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--warning {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--warning::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #d9b908;
+ box-shadow: inset -4px -4px #d9b908;
+}
+
+.pixel-box--warning:hover, .pixel-box--warning:focus {
+ background-color: #f2ce09;
+}
+
+.pixel-box--error {
+ color: #fff;
+ border-style: solid;
+ border-width: 4px;
+ border-color: #bc361a;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #e76e55;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--error {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--error::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #e14828;
+ box-shadow: inset -4px -4px #e14828;
+}
+
+.pixel-box--error:hover, .pixel-box--error:focus {
+ background-color: #e45b3f;
+}
+
+.pixel-box--light-custom {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #cccccc;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #fff;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--light-custom {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--light-custom::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #999, inset 4px 4px #999;
+ box-shadow: inset -4px -4px #999, inset 4px 4px #999;
+}
+
+.pixel-box--light-custom:hover, .pixel-box--light-custom:focus {
+ background-color: #f2f2f2;
+}
+
+.pixel-box--primary-custom {
+ color: #fff;
+ border-style: solid;
+ border-width: 4px;
+ border-color: #0c639c;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ background-color: #209cee;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--primary-custom {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--primary-custom:hover, .pixel-box--primary-custom:focus {
+ background-color: #1190e3;
+}
+
+.pixel-box--success-custom {
+ color: #fff;
+ border-style: solid;
+ border-width: 4px;
+ border-color: #5b8423;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #92cc41;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--success-custom {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--success-custom::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset 4px 4px #b5dc7d;
+ box-shadow: inset 4px 4px #b5dc7d;
+}
+
+.pixel-box--success-custom:hover, .pixel-box--success-custom:focus {
+ background-color: #85c034;
+}
+
+.pixel-box--warning-custom {
+ border-style: solid;
+ border-width: 4px;
+ border-color: #a88f06;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #f7d51d;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--warning-custom {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--warning-custom::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #d9b908, inset 4px 4px #fae367;
+ box-shadow: inset -4px -4px #d9b908, inset 4px 4px #fae367;
+}
+
+.pixel-box--warning-custom:hover, .pixel-box--warning-custom:focus {
+ background-color: #f2ce09;
+}
+
+.pixel-box--error-custom {
+ color: #fff;
+ border-style: solid;
+ border-width: 4px;
+ border-color: #000;
+ border-image-slice: 2;
+ border-image-width: 1;
+ border-image-outset: 0;
+ border-image-source: url("data:image/svg+xml,");
+ position: relative;
+ background-color: #e76e55;
+}
+
+@supports (border-image-source: none) {
+ .pixel-box--error-custom {
+ border-radius: 14px;
+ }
+}
+
+.pixel-box--error-custom::after {
+ content: '';
+ position: absolute;
+ z-index: 0;
+ bottom: 0;
+ right: 0;
+ width: 100%;
+ height: 100%;
+ -webkit-box-shadow: inset -4px -4px #e14828;
+ box-shadow: inset -4px -4px #e14828;
+}
+
+.pixel-box--error-custom:hover, .pixel-box--error-custom:focus {
+ background-color: #e45b3f;
+}
+
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBpeGVsLWJvcmRlcnMuc2NzcyIsInBpeGVsLWJvcmRlcnMuY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThJQTtFQUNFLGtCQUFrQjtFQUNsQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtFQUNsQixzQkFBc0I7RUFDdEIseUVBQXlFO0FDN0kzRTs7QURrSkE7RUFuSEUsbUJBQW1CO0VBQ25CLGlCQVBxRDtFQVFyRCxrQkFSMEU7RUFVMUUscUJBVmtDO0VBV2xDLHFCQVhrQztFQVlsQyxzQkFBc0I7RUFFdEIseUxBQTBFO0FDN0I1RTs7QURpQnVDO0VBdUh2QztJQXRISSxtQkFBdUU7RUNiekU7QUFDRjs7QURzSUE7RUF2SEUsbUJBQW1CO0VBQ25CLGlCQVBxRDtFQVFyRCxrQkFSMEU7RUFVMUUscUJBVmtDO0VBV2xDLHFCQVhrQztFQVlsQyxzQkFBc0I7RUFFdEIseUxBQTBFO0VBcUIxRSxrQkFBa0I7QUNqQ3BCOztBREF1QztFQTJIdkM7SUExSEksbUJBQXVFO0VDSXpFO0FBQ0Y7O0FENkJFO0VBQ0UsV0FBVztFQUNYLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsU0FBUztFQUNULFFBQVE7RUFDUixXQUFXO0VBQ1gsWUFBWTtFQWNaLHdDQW9FOEM7VUFwRTlDLGdDQW9FOEM7QUMzR2xEOztBRCtHQTtFQTVIRSxtQkFBbUI7RUFDbkIsaUJBUHFEO0VBUXJELGtCQVIwRTtFQVUxRSxxQkF5SHNDO0VBeEh0QyxxQkF3SHNDO0VBdkh0QyxzQkFBc0I7RUFFdEIseVJBQTBFO0FDZTVFOztBRDNCdUM7RUFnSXZDO0lBL0hJLG1CQUF1RTtFQytCekU7QUFDRjs7QURtR0E7RUFoSUUsbUJBQW1CO0VBQ25CLGlCQVBxRDtFQVFyRCxrQkFSMEU7RUFVMUUscUJBNkhzQztFQTVIdEMscUJBNEhzQztFQTNIdEMsc0JBQXNCO0VBRXRCLHlSQUEwRTtBQytCNUU7O0FEM0N1QztFQW9JdkM7SUFuSUksbUJBQXVFO0VDK0N6RTtBQUNGOztBRG1GQTtF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Qm5ELGlDQStCbUQ7QUMrT3ZEOztBRHJPRTtFQUNFLHlCQTlCbUQ7QUNzUXZEOztBRDNJQTtFQTNMRSxtQkFBbUI7RUFDbkIsaUJBMkxxRDtFQTFMckQscUJBa0U4QztFQWhFOUMscUJBd0xrQztFQXZMbEMscUJBdUxrQztFQXRMbEMsc0JBQXNCO0VBRXRCLDRMQUEwRTtFQXFCMUUsa0JBQWtCO0VBOERsQix5QkFpR2lGO0FDc0puRjs7QUR0VnVDO0VBK0x2QztJQTlMSSxtQkFBdUU7RUMwVnpFO0FBQ0Y7O0FEelRFO0VBQ0UsV0FBVztFQUNYLGtCQUFrQjtFQUNsQixVQUFVO0VBQ1YsU0FBUztFQUNULFFBQVE7RUFDUixXQUFXO0VBQ1gsWUFBWTtFQWNaLGtFQXVCc0Q7VUF2QnRELDBEQXVCc0Q7QUN3UjFEOztBRHRRRTtFQUNFLHlCQTlCbUQ7QUN1U3ZEOztBRHhLQTtFQUNFLFdBQVc7RUFoTVgsbUJBQW1CO0VBQ25CLGlCQWdNcUQ7RUEvTHJELGtCQStMc0c7RUE3THRHLHFCQTZMa0M7RUE1TGxDLHFCQTRMa0M7RUEzTGxDLHNCQUFzQjtFQUV0Qix5TEFBMEU7RUFxQjFFLGtCQUFrQjtFQThEbEIseUJBc0dpRjtBQ21MbkY7O0FEeFh1QztFQW1NdkM7SUFsTUksbUJBQXVFO0VDNFh6RTtBQUNGOztBRDNWRTtFQUNFLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsVUFBVTtFQUNWLFNBQVM7RUFDVCxRQUFRO0VBQ1IsV0FBVztFQUNYLFlBQVk7RUFjWiwyQ0EyQmtEO1VBM0JsRCxtQ0EyQmtEO0FDc1R0RDs7QUR4U0U7RUFDRSx5QkE5Qm1EO0FDeVV2RCIsImZpbGUiOiJwaXhlbC1ib3JkZXJzLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdlbmVyYXRlIFNWRyBpbWFnZSBmb3IgcGl4ZWxhdGVkIGNvcm5lcnNcbkBmdW5jdGlvbiBwaXhlbC1ib3JkZXJzLWltYWdlKCRjb3JuZXItc2l6ZSwgJGNvbG9yKSB7XG4gICRzdmc6ICcnO1xuICAkc3ZnLXBhdGg6ICcnO1xuICAkc3ZnLXNpemU6ICRjb3JuZXItc2l6ZSAqIDY7XG4gICRjb2xvcjogc3RyLXJlcGxhY2UoJycgKyAkY29sb3IsICcjJywgJyUyMycpO1xuXG4gIEBpZiAkY29ybmVyLXNpemUgPT0gMSB7XG4gICAgJHN2Zy1wYXRoOiAnTTAgMmgydjJIMHpNMiAwaDJ2Mkgyek00IDJoMnYySDR6TTIgNGgydjJIMnonO1xuICB9IEBlbHNlIHtcbiAgICAkc3ZnLXBhdGg6ICdNMiAyaDJ2Mkgyek00IDBoMnYySDR6TTEwIDRoMnYyaC0yek0wIDRoMnYySDB6TTYgMGgydjJINnpNOCAyaDJ2Mkg4ek04IDhoMnYySDh6TTYgMTBoMnYySDZ6TTAgNmgydjJIMHpNMTAgNmgydjJoLTJ6TTQgMTBoMnYySDR6TTIgOGgydjJIMnonO1xuICB9XG5cbiAgJHN2ZzogJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPVxcJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFwnIHdpZHRoPVxcJyN7JHN2Zy1zaXplfVxcJyBoZWlnaHQ9XFwnI3skc3ZnLXNpemV9XFwnPjxwYXRoIGQ9XFwnI3skc3ZnLXBhdGh9XFwnIGZpbGw9XFwnI3skY29sb3J9XFwnIC8+PC9zdmc+JztcblxuICBAcmV0dXJuICRzdmc7XG59XG5cblxuLy8gU3RyaW5nIHJlcGxhY2UgZnVuY3Rpb24gLSByZXBsYWNlIGAkc2VhcmNoYCB3aXRoIGAkcmVwbGFjZWAgaW4gYCRzdHJpbmdgXG5AZnVuY3Rpb24gc3RyLXJlcGxhY2UoJHN0cmluZywgJHNlYXJjaCwgJHJlcGxhY2U6ICcnKSB7XG4gICRpbmRleDogc3RyLWluZGV4KCRzdHJpbmcsICRzZWFyY2gpO1xuXG4gIEBpZiAkaW5kZXgge1xuICAgIEByZXR1cm4gc3RyLXNsaWNlKCRzdHJpbmcsIDEsICRpbmRleCAtIDEpICsgJHJlcGxhY2UgKyBzdHItcmVwbGFjZShzdHItc2xpY2UoJHN0cmluZywgJGluZGV4ICsgc3RyLWxlbmd0aCgkc2VhcmNoKSksICRzZWFyY2gsICRyZXBsYWNlKTtcbiAgfVxuXG4gIEByZXR1cm4gJHN0cmluZztcbn1cblxuXG4vLyBQaXhlbCBib3JkZXJcbkBtaXhpbiBwaXhlbC1ib3JkZXJzKCRjb3JuZXItc2l6ZTogMSwgJGJvcmRlci1zaXplOiA0cHgsICRib3JkZXItY29sb3I6ICMwMDAsICRib3JkZXItaW5zZXQtY29sb3I6IGZhbHNlKSB7XG5cbiAgQHN1cHBvcnRzIChib3JkZXItaW1hZ2Utc291cmNlOiBub25lKSB7XG4gICAgYm9yZGVyLXJhZGl1czogKCRib3JkZXItc2l6ZSAqICgkY29ybmVyLXNpemUgKyAyKSkgKyAoJGNvcm5lci1zaXplICogMik7XG4gIH1cblxuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6ICRib3JkZXItc2l6ZTtcbiAgYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yO1xuXG4gIGJvcmRlci1pbWFnZS1zbGljZTogJGNvcm5lci1zaXplICogMjtcbiAgYm9yZGVyLWltYWdlLXdpZHRoOiAkY29ybmVyLXNpemU7XG4gIGJvcmRlci1pbWFnZS1vdXRzZXQ6IDA7XG5cbiAgYm9yZGVyLWltYWdlLXNvdXJjZTogdXJsKHBpeGVsLWJvcmRlcnMtaW1hZ2UoJGNvcm5lci1zaXplLCAkYm9yZGVyLWNvbG9yKSk7XG5cbiAgQGlmICRib3JkZXItaW5zZXQtY29sb3Ige1xuICAgIEBpbmNsdWRlIHBpeGVsLWluc2V0LWJvcmRlcigkYm9yZGVyLXNpemUsICRib3JkZXItaW5zZXQtY29sb3IpO1xuICB9XG5cbn1cblxuXG4vLyBQaXhlbCBpbnNldCBib3JkZXJcbkBtaXhpbiBwaXhlbC1pbnNldC1ib3JkZXIoJGJvcmRlci1pbnNldC1zaXplOiA0cHgsICRib3JkZXItaW5zZXQtY29sb3I6ICNkZGQsICRib3JkZXItaW5zZXQtc2lkZXM6ICdib3R0b20tcmlnaHQnLCAkYm9yZGVyLWluc2V0LWNvbG9yLWJyOiBmYWxzZSwgJGJvcmRlci1pbnNldC1jb2xvci10bDogZmFsc2UpIHtcblxuICAkYm94LXNoYWRvdzogJyc7XG4gIEBpZiBub3QoJGJvcmRlci1pbnNldC1jb2xvci1icikge1xuICAgICRib3JkZXItaW5zZXQtY29sb3ItYnI6ICRib3JkZXItaW5zZXQtY29sb3I7XG4gIH1cblxuICBAaWYgbm90KCRib3JkZXItaW5zZXQtY29sb3ItdGwpIHtcbiAgICAkYm9yZGVyLWluc2V0LWNvbG9yLXRsOiAkYm9yZGVyLWluc2V0LWNvbG9yO1xuICB9XG5cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICY6OmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMDtcbiAgICBib3R0b206IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgQGlmICRib3JkZXItaW5zZXQtc2lkZXMgPT0gJ2JvdHRvbS1yaWdodCcgb3IgJGJvcmRlci1pbnNldC1zaWRlcyA9PSBmYWxzZSB7XG4gICAgICAkYm94LXNoYWRvdzogaW5zZXQgLSN7JGJvcmRlci1pbnNldC1zaXplfSAtI3skYm9yZGVyLWluc2V0LXNpemV9ICRib3JkZXItaW5zZXQtY29sb3ItYnI7XG4gICAgfVxuXG4gICAgQGlmICRib3JkZXItaW5zZXQtc2lkZXMgPT0gJ3RvcC1sZWZ0JyB7XG4gICAgICAkYm94LXNoYWRvdzogaW5zZXQgJGJvcmRlci1pbnNldC1zaXplICRib3JkZXItaW5zZXQtc2l6ZSAkYm9yZGVyLWluc2V0LWNvbG9yLXRsO1xuICAgIH1cblxuICAgIEBpZiAkYm9yZGVyLWluc2V0LXNpZGVzID09ICdhbGwnIHtcbiAgICAgICRib3gtc2hhZG93OiBpbnNldCAtI3skYm9yZGVyLWluc2V0LXNpemV9IC0jeyRib3JkZXItaW5zZXQtc2l6ZX0gJGJvcmRlci1pbnNldC1jb2xvci1iciwgaW5zZXQgJGJvcmRlci1pbnNldC1zaXplICRib3JkZXItaW5zZXQtc2l6ZSAkYm9yZGVyLWluc2V0LWNvbG9yLXRsO1xuICAgIH1cblxuICAgIGJveC1zaGFkb3c6ICRib3gtc2hhZG93O1xuICB9XG5cbn1cblxuXG4vLyAoJGNvcm5lci1zaXplOiAxLCAkYm9yZGVyLXNpemU6IDRweCwgJGJvcmRlci1jb2xvcjogIzAwMCwgJGJvcmRlci1pbnNldC1jb2xvcjogZmFsc2UpXG4vLyAoJGJvcmRlci1pbnNldC1zaXplOiA0cHgsICRib3JkZXItaW5zZXQtY29sb3I6ICNkZGQsICRib3JkZXItaW5zZXQtc2lkZXM6ICdib3R0b20tcmlnaHQnLCAkYm9yZGVyLWluc2V0LWNvbG9yLWJyOiBmYWxzZSwgJGJvcmRlci1pbnNldC1jb2xvci10bDogZmFsc2UpXG5cbi8vIFBpeGVsIGJveCAtIENvbG91cnMgZm9yIGJvcmRlciBhbmQgaW5zZXQgYXJlIGNhbHVsYXRlZCB1c2luZyAkYmFja2dyb3VuZC1jb2xvciB1bmxlc3MgJGJvcmRlci1jb2xvciBpcyBwYXNzZWRcbkBtaXhpbiBwaXhlbC1ib3goJGNvcm5lci1zaXplLCAkYm9yZGVyLXNpemUsICRiYWNrZ3JvdW5kLWNvbG9yLCAkYm9yZGVyLWNvbG9yOiBmYWxzZSwgJGJvcmRlci1pbnNldDogdHJ1ZSwgJGJvcmRlci1pbnNldC1zaXplOiBmYWxzZSwgJGJvcmRlci1pbnNldC1jb2xvcjogZmFsc2UsICRib3JkZXItaW5zZXQtc2lkZXM6IGZhbHNlLCAkYm9yZGVyLWluc2V0LWNvbG9yLWJyOiBmYWxzZSwgJGJvcmRlci1pbnNldC1jb2xvci10bDogZmFsc2UpIHtcbiAgXG4gICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyOiBkYXJrZW4oJGJhY2tncm91bmQtY29sb3IsIDUpO1xuICAvLyAkYm9yZGVyLWluc2V0LWNvbG9yOiAnJztcblxuICBAaWYgbm90KCRib3JkZXItY29sb3IpIHtcbiAgICAkYm9yZGVyLWNvbG9yOiBkYXJrZW4oJGJhY2tncm91bmQtY29sb3IsIDIwKTtcbiAgfVxuXG4gIEBpbmNsdWRlIHBpeGVsLWJvcmRlcnMoJGNvcm5lci1zaXplOiAkY29ybmVyLXNpemUsICRib3JkZXItc2l6ZTogJGJvcmRlci1zaXplLCAkYm9yZGVyLWNvbG9yOiAkYm9yZGVyLWNvbG9yKTtcblxuICBAaWYgJGJvcmRlci1pbnNldC1zaWRlcyA9PSAnYWxsJyBhbmQgbm90KCRib3JkZXItaW5zZXQtY29sb3IpIHtcbiAgICAkYm9yZGVyLWluc2V0LWNvbG9yLWJyOiBkYXJrZW4oJGJhY2tncm91bmQtY29sb3IsIDEwKTtcbiAgICAkYm9yZGVyLWluc2V0LWNvbG9yLXRsOiBsaWdodGVuKCRiYWNrZ3JvdW5kLWNvbG9yLCAxNSk7XG4gIH1cblxuICBAaWYgbm90KCRib3JkZXItaW5zZXQtY29sb3IpIHsgXG4gICAgJGJvcmRlci1pbnNldC1jb2xvcjogZGFya2VuKCRiYWNrZ3JvdW5kLWNvbG9yLCAxMCk7XG4gIH1cblxuICBAaWYgJGJvcmRlci1pbnNldC1zaWRlcyA9PSAndG9wLWxlZnQnIHtcbiAgICAkYm9yZGVyLWluc2V0LWNvbG9yOiBsaWdodGVuKCRiYWNrZ3JvdW5kLWNvbG9yLCAxNSk7XG4gIH1cblxuXG4gIEBpZiAkYm9yZGVyLWluc2V0IHsgXG4gICAgQGluY2x1ZGUgcGl4ZWwtaW5zZXQtYm9yZGVyKCRib3JkZXItaW5zZXQtc2l6ZTogJGJvcmRlci1zaXplLCAkYm9yZGVyLWluc2V0LWNvbG9yOiAkYm9yZGVyLWluc2V0LWNvbG9yLCAkYm9yZGVyLWluc2V0LXNpZGVzOiAkYm9yZGVyLWluc2V0LXNpZGVzLCAkYm9yZGVyLWluc2V0LWNvbG9yLWJyOiAkYm9yZGVyLWluc2V0LWNvbG9yLWJyLCAkYm9yZGVyLWluc2V0LWNvbG9yLXRsOiAkYm9yZGVyLWluc2V0LWNvbG9yLXRsKTtcbiAgfVxuXG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuXG4gICY6aG92ZXIsICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yLWhvdmVyO1xuICB9XG5cbn1cblxuXG5cblxuXG4vLyBEZW1vIHN0eWxlc1xuLnBpeGVsLWJvcmRlcnMge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luOiAwIDE1cHggMTVweCAwO1xuICBwYWRkaW5nOiAxNXB4IDIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIGZvbnQtZmFtaWx5OiBcIlByZXNzIFN0YXJ0IDJQXCIsIEFyaWFsIEJsYWNrLCBBcmlhbCBCb2xkLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuXG4vLyBTaW1wbGUgZXhhbXBsZXMgd2l0aCBkZWZhdWx0IHN0eWxpbmdcbi5waXhlbC1ib3JkZXJzLS0xIHtcbiAgQGluY2x1ZGUgcGl4ZWwtYm9yZGVycygpO1xufVxuXG4ucGl4ZWwtYm9yZGVycy0tMS1pbnNldCB7XG4gIEBpbmNsdWRlIHBpeGVsLWJvcmRlcnMoJGJvcmRlci1pbnNldC1jb2xvcjogI2RkZCk7XG59XG5cblxuLnBpeGVsLWJvcmRlcnMtLTIge1xuICBAaW5jbHVkZSBwaXhlbC1ib3JkZXJzKCRjb3JuZXItc2l6ZTogMik7XG59XG5cbi5waXhlbC1ib3JkZXJzLS0yLWluc2V0IHtcbiAgQGluY2x1ZGUgcGl4ZWwtYm9yZGVycygkY29ybmVyLXNpemU6IDIpO1xuXG4gICY6OmFmdGVyIHtcbiAgICBAaW5jbHVkZSBwaXhlbC1ib3JkZXJzKCRjb3JuZXItc2l6ZTogMSwgJGJvcmRlci1jb2xvcjogI2RkZCk7XG5cbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMDtcbiAgICBib3R0b206IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm9yZGVyLWltYWdlLXdpZHRoOiAwIDEgMSAwO1xuICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA0cHgpO1xuICAgIGhlaWdodDogY2FsYygxMDAlIC0gNHB4KTtcbiAgfVxufVxuXG5cblxuLy8gRXhhbXBsZXMgdXNpbmcgdGhlIHBpeGVsIGJveCBtaXhpbiB0byBjb2xvdXIgY29kZSB0aGUgZWxlbWVudHNcbi5waXhlbC1ib3gtLWxpZ2h0IHtcbiAgQGluY2x1ZGUgcGl4ZWwtYm94KCRjb3JuZXItc2l6ZTogMSwgJGJvcmRlci1zaXplOiA0cHgsICRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmKTtcbn1cblxuLnBpeGVsLWJveC0tcHJpbWFyeSB7XG4gIGNvbG9yOiAjZmZmO1xuICBAaW5jbHVkZSBwaXhlbC1ib3goJGNvcm5lci1zaXplOiAxLCAkYm9yZGVyLXNpemU6IDRweCwgJGJhY2tncm91bmQtY29sb3I6ICMyMDljZWUpO1xufVxuXG4ucGl4ZWwtYm94LS1zdWNjZXNzIHtcbiAgY29sb3I6ICNmZmY7XG4gIEBpbmNsdWRlIHBpeGVsLWJveCgkY29ybmVyLXNpemU6IDEsICRib3JkZXItc2l6ZTogNHB4LCAkYmFja2dyb3VuZC1jb2xvcjogIzkyY2M0MSk7XG59IFxuXG4ucGl4ZWwtYm94LS13YXJuaW5nIHtcbiAgQGluY2x1ZGUgcGl4ZWwtYm94KCRjb3JuZXItc2l6ZTogMSwgJGJvcmRlci1zaXplOiA0cHgsICRiYWNrZ3JvdW5kLWNvbG9yOiAjZjdkNTFkKTtcbn0gXG5cbi5waXhlbC1ib3gtLWVycm9yIHtcbiAgY29sb3I6ICNmZmY7XG4gIEBpbmNsdWRlIHBpeGVsLWJveCgkY29ybmVyLXNpemU6IDEsICRib3JkZXItc2l6ZTogNHB4LCAkYmFja2dyb3VuZC1jb2xvcjogI2U3NmU1NSk7XG59IFxuXG5cbi8vIEN1c3RvbSBleGFtcGxlcyB0byBzaG93IGZsZXhpYmlsaXR5IG9mIHRoZSBtaXhpbnNcbi5waXhlbC1ib3gtLWxpZ2h0LWN1c3RvbSB7XG4gIEBpbmNsdWRlIHBpeGVsLWJveCgkY29ybmVyLXNpemU6IDEsICRib3JkZXItc2l6ZTogNHB4LCAkYmFja2dyb3VuZC1jb2xvcjogI2ZmZiwgJGJvcmRlci1pbnNldC1jb2xvcjogIzk5OSwgJGJvcmRlci1pbnNldC1zaWRlczogJ2FsbCcpO1xufVxuXG4ucGl4ZWwtYm94LS1wcmltYXJ5LWN1c3RvbSB7XG4gIGNvbG9yOiAjZmZmO1xuICBAaW5jbHVkZSBwaXhlbC1ib3goJGNvcm5lci1zaXplOiAxLCAkYm9yZGVyLXNpemU6IDRweCwgJGJhY2tncm91bmQtY29sb3I6ICMyMDljZWUsICRib3JkZXItaW5zZXQ6IGZhbHNlKTtcbn1cblxuLnBpeGVsLWJveC0tc3VjY2Vzcy1jdXN0b20ge1xuICBjb2xvcjogI2ZmZjtcbiAgQGluY2x1ZGUgcGl4ZWwtYm94KCRjb3JuZXItc2l6ZTogMSwgJGJvcmRlci1zaXplOiA0cHgsICRiYWNrZ3JvdW5kLWNvbG9yOiAjOTJjYzQxLCAkYm9yZGVyLWluc2V0LXNpZGVzOiAndG9wLWxlZnQnKTtcbn0gXG5cbi5waXhlbC1ib3gtLXdhcm5pbmctY3VzdG9tIHtcbiAgQGluY2x1ZGUgcGl4ZWwtYm94KCRjb3JuZXItc2l6ZTogMSwgJGJvcmRlci1zaXplOiA0cHgsICRiYWNrZ3JvdW5kLWNvbG9yOiAjZjdkNTFkLCAkYm9yZGVyLWluc2V0LXNpZGVzOiAnYWxsJyk7XG59IFxuXG4ucGl4ZWwtYm94LS1lcnJvci1jdXN0b20ge1xuICBjb2xvcjogI2ZmZjtcbiAgQGluY2x1ZGUgcGl4ZWwtYm94KCRjb3JuZXItc2l6ZTogMSwgJGJvcmRlci1zaXplOiA0cHgsICRiYWNrZ3JvdW5kLWNvbG9yOiAjZTc2ZTU1LCAkYm9yZGVyLWNvbG9yOiAjMDAwKTtcbn0gXG4iLCIucGl4ZWwtYm9yZGVycyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDAgMTVweCAxNXB4IDA7XG4gIHBhZGRpbmc6IDE1cHggMjBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgZm9udC1mYW1pbHk6IFwiUHJlc3MgU3RhcnQgMlBcIiwgQXJpYWwgQmxhY2ssIEFyaWFsIEJvbGQsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG4ucGl4ZWwtYm9yZGVycy0tMSB7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogNHB4O1xuICBib3JkZXItY29sb3I6ICMwMDA7XG4gIGJvcmRlci1pbWFnZS1zbGljZTogMjtcbiAgYm9yZGVyLWltYWdlLXdpZHRoOiAxO1xuICBib3JkZXItaW1hZ2Utb3V0c2V0OiAwO1xuICBib3JkZXItaW1hZ2Utc291cmNlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2JyBoZWlnaHQ9JzYnPjxwYXRoIGQ9J00wIDJoMnYySDB6TTIgMGgydjJIMnpNNCAyaDJ2Mkg0ek0yIDRoMnYySDJ6JyBmaWxsPSclMjMwMDAnIC8+PC9zdmc+XCIpO1xufVxuXG5Ac3VwcG9ydHMgKGJvcmRlci1pbWFnZS1zb3VyY2U6IG5vbmUpIHtcbiAgLnBpeGVsLWJvcmRlcnMtLTEge1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gIH1cbn1cblxuLnBpeGVsLWJvcmRlcnMtLTEtaW5zZXQge1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDRweDtcbiAgYm9yZGVyLWNvbG9yOiAjMDAwO1xuICBib3JkZXItaW1hZ2Utc2xpY2U6IDI7XG4gIGJvcmRlci1pbWFnZS13aWR0aDogMTtcbiAgYm9yZGVyLWltYWdlLW91dHNldDogMDtcbiAgYm9yZGVyLWltYWdlLXNvdXJjZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNicgaGVpZ2h0PSc2Jz48cGF0aCBkPSdNMCAyaDJ2Mkgwek0yIDBoMnYySDJ6TTQgMmgydjJINHpNMiA0aDJ2MkgyeicgZmlsbD0nJTIzMDAwJyAvPjwvc3ZnPlwiKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG5Ac3VwcG9ydHMgKGJvcmRlci1pbWFnZS1zb3VyY2U6IG5vbmUpIHtcbiAgLnBpeGVsLWJvcmRlcnMtLTEtaW5zZXQge1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gIH1cbn1cblxuLnBpeGVsLWJvcmRlcnMtLTEtaW5zZXQ6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNoYWRvdzogaW5zZXQgLTRweCAtNHB4ICNkZGQ7XG59XG5cbi5waXhlbC1ib3JkZXJzLS0yIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiA0cHg7XG4gIGJvcmRlci1jb2xvcjogIzAwMDtcbiAgYm9yZGVyLWltYWdlLXNsaWNlOiA0O1xuICBib3JkZXItaW1hZ2Utd2lkdGg6IDI7XG4gIGJvcmRlci1pbWFnZS1vdXRzZXQ6IDA7XG4gIGJvcmRlci1pbWFnZS1zb3VyY2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJz48cGF0aCBkPSdNMiAyaDJ2Mkgyek00IDBoMnYySDR6TTEwIDRoMnYyaC0yek0wIDRoMnYySDB6TTYgMGgydjJINnpNOCAyaDJ2Mkg4ek04IDhoMnYySDh6TTYgMTBoMnYySDZ6TTAgNmgydjJIMHpNMTAgNmgydjJoLTJ6TTQgMTBoMnYySDR6TTIgOGgydjJIMnonIGZpbGw9JyUyMzAwMCcgLz48L3N2Zz5cIik7XG59XG5cbkBzdXBwb3J0cyAoYm9yZGVyLWltYWdlLXNvdXJjZTogbm9uZSkge1xuICAucGl4ZWwtYm9yZGVycy0tMiB7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgfVxufVxuXG4ucGl4ZWwtYm9yZGVycy0tMi1pbnNldCB7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogNHB4O1xuICBib3JkZXItY29sb3I6ICMwMDA7XG4gIGJvcmRlci1pbWFnZS1zbGljZTogNDtcbiAgYm9yZGVyLWltYWdlLXdpZHRoOiAyO1xuICBib3JkZXItaW1hZ2Utb3V0c2V0OiAwO1xuICBib3JkZXItaW1hZ2Utc291cmNlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMic+PHBhdGggZD0nTTIgMmgydjJIMnpNNCAwaDJ2Mkg0ek0xMCA0aDJ2MmgtMnpNMCA0aDJ2Mkgwek02IDBoMnYySDZ6TTggMmgydjJIOHpNOCA4aDJ2Mkg4ek02IDEwaDJ2Mkg2ek0wIDZoMnYySDB6TTEwIDZoMnYyaC0yek00IDEwaDJ2Mkg0ek0yIDhoMnYySDJ6JyBmaWxsPSclMjMwMDAnIC8+PC9zdmc+XCIpO1xufVxuXG5Ac3VwcG9ydHMgKGJvcmRlci1pbWFnZS1zb3VyY2U6IG5vbmUpIHtcbiAgLnBpeGVsLWJvcmRlcnMtLTItaW5zZXQge1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIH1cbn1cblxuLnBpeGVsLWJvcmRlcnMtLTItaW5zZXQ6OmFmdGVyIHtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiA0cHg7XG4gIGJvcmRlci1jb2xvcjogI2RkZDtcbiAgYm9yZGVyLWltYWdlLXNsaWNlOiAyO1xuICBib3JkZXItaW1hZ2Utd2lkdGg6IDE7XG4gIGJvcmRlci1pbWFnZS1vdXRzZXQ6IDA7XG4gIGJvcmRlci1pbWFnZS1zb3VyY2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzYnIGhlaWdodD0nNic+PHBhdGggZD0nTTAgMmgydjJIMHpNMiAwaDJ2Mkgyek00IDJoMnYySDR6TTIgNGgydjJIMnonIGZpbGw9JyUyM2RkZCcgLz48L3N2Zz5cIik7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIGJvcmRlci1pbWFnZS13aWR0aDogMCAxIDEgMDtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDRweCk7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNHB4KTtcbn1cblxuQHN1cHBvcnRzIChib3JkZXItaW1hZ2Utc291cmNlOiBub25lKSB7XG4gIC5waXhlbC1ib3JkZXJzLS0yLWluc2V0OjphZnRlciB7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgfVxufVxuXG4ucGl4ZWwtYm94LS1saWdodCB7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogNHB4O1xuICBib3JkZXItY29sb3I6ICNjY2NjY2M7XG4gIGJvcmRlci1pbWFnZS1zbGljZTogMjtcbiAgYm9yZGVyLWltYWdlLXdpZHRoOiAxO1xuICBib3JkZXItaW1hZ2Utb3V0c2V0OiAwO1xuICBib3JkZXItaW1hZ2Utc291cmNlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2JyBoZWlnaHQ9JzYnPjxwYXRoIGQ9J00wIDJoMnYySDB6TTIgMGgydjJIMnpNNCAyaDJ2Mkg0ek0yIDRoMnYySDJ6JyBmaWxsPSclMjNjY2NjY2MnIC8+PC9zdmc+XCIpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbkBzdXBwb3J0cyAoYm9yZGVyLWltYWdlLXNvdXJjZTogbm9uZSkge1xuICAucGl4ZWwtYm94LS1saWdodCB7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgfVxufVxuXG4ucGl4ZWwtYm94LS1saWdodDo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3gtc2hhZG93OiBpbnNldCAtNHB4IC00cHggI2U2ZTVlNTtcbn1cblxuLnBpeGVsLWJveC0tbGlnaHQ6aG92ZXIsIC5waXhlbC1ib3gtLWxpZ2h0OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcbn1cblxuLnBpeGVsLWJveC0tcHJpbWFyeSB7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDRweDtcbiAgYm9yZGVyLWNvbG9yOiAjMGM2MzljO1xuICBib3JkZXItaW1hZ2Utc2xpY2U6IDI7XG4gIGJvcmRlci1pbWFnZS13aWR0aDogMTtcbiAgYm9yZGVyLWltYWdlLW91dHNldDogMDtcbiAgYm9yZGVyLWltYWdlLXNvdXJjZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNicgaGVpZ2h0PSc2Jz48cGF0aCBkPSdNMCAyaDJ2Mkgwek0yIDBoMnYySDJ6TTQgMmgydjJINHpNMiA0aDJ2MkgyeicgZmlsbD0nJTIzMGM2MzljJyAvPjwvc3ZnPlwiKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjA5Y2VlO1xufVxuXG5Ac3VwcG9ydHMgKGJvcmRlci1pbWFnZS1zb3VyY2U6IG5vbmUpIHtcbiAgLnBpeGVsLWJveC0tcHJpbWFyeSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgfVxufVxuXG4ucGl4ZWwtYm94LS1wcmltYXJ5OjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJveC1zaGFkb3c6IGluc2V0IC00cHggLTRweCAjMTA4MWNiO1xufVxuXG4ucGl4ZWwtYm94LS1wcmltYXJ5OmhvdmVyLCAucGl4ZWwtYm94LS1wcmltYXJ5OmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzExOTBlMztcbn1cblxuLnBpeGVsLWJveC0tc3VjY2VzcyB7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDRweDtcbiAgYm9yZGVyLWNvbG9yOiAjNWI4NDIzO1xuICBib3JkZXItaW1hZ2Utc2xpY2U6IDI7XG4gIGJvcmRlci1pbWFnZS13aWR0aDogMTtcbiAgYm9yZGVyLWltYWdlLW91dHNldDogMDtcbiAgYm9yZGVyLWltYWdlLXNvdXJjZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNicgaGVpZ2h0PSc2Jz48cGF0aCBkPSdNMCAyaDJ2Mkgwek0yIDBoMnYySDJ6TTQgMmgydjJINHpNMiA0aDJ2MkgyeicgZmlsbD0nJTIzNWI4NDIzJyAvPjwvc3ZnPlwiKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTJjYzQxO1xufVxuXG5Ac3VwcG9ydHMgKGJvcmRlci1pbWFnZS1zb3VyY2U6IG5vbmUpIHtcbiAgLnBpeGVsLWJveC0tc3VjY2VzcyB7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgfVxufVxuXG4ucGl4ZWwtYm94LS1zdWNjZXNzOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJveC1zaGFkb3c6IGluc2V0IC00cHggLTRweCAjNzdhYzJlO1xufVxuXG4ucGl4ZWwtYm94LS1zdWNjZXNzOmhvdmVyLCAucGl4ZWwtYm94LS1zdWNjZXNzOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzg1YzAzNDtcbn1cblxuLnBpeGVsLWJveC0td2FybmluZyB7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogNHB4O1xuICBib3JkZXItY29sb3I6ICNhODhmMDY7XG4gIGJvcmRlci1pbWFnZS1zbGljZTogMjtcbiAgYm9yZGVyLWltYWdlLXdpZHRoOiAxO1xuICBib3JkZXItaW1hZ2Utb3V0c2V0OiAwO1xuICBib3JkZXItaW1hZ2Utc291cmNlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2JyBoZWlnaHQ9JzYnPjxwYXRoIGQ9J00wIDJoMnYySDB6TTIgMGgydjJIMnpNNCAyaDJ2Mkg0ek0yIDRoMnYySDJ6JyBmaWxsPSclMjNhODhmMDYnIC8+PC9zdmc+XCIpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Q1MWQ7XG59XG5cbkBzdXBwb3J0cyAoYm9yZGVyLWltYWdlLXNvdXJjZTogbm9uZSkge1xuICAucGl4ZWwtYm94LS13YXJuaW5nIHtcbiAgICBib3JkZXItcmFkaXVzOiAxNHB4O1xuICB9XG59XG5cbi5waXhlbC1ib3gtLXdhcm5pbmc6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNoYWRvdzogaW5zZXQgLTRweCAtNHB4ICNkOWI5MDg7XG59XG5cbi5waXhlbC1ib3gtLXdhcm5pbmc6aG92ZXIsIC5waXhlbC1ib3gtLXdhcm5pbmc6Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJjZTA5O1xufVxuXG4ucGl4ZWwtYm94LS1lcnJvciB7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDRweDtcbiAgYm9yZGVyLWNvbG9yOiAjYmMzNjFhO1xuICBib3JkZXItaW1hZ2Utc2xpY2U6IDI7XG4gIGJvcmRlci1pbWFnZS13aWR0aDogMTtcbiAgYm9yZGVyLWltYWdlLW91dHNldDogMDtcbiAgYm9yZGVyLWltYWdlLXNvdXJjZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNicgaGVpZ2h0PSc2Jz48cGF0aCBkPSdNMCAyaDJ2Mkgwek0yIDBoMnYySDJ6TTQgMmgydjJINHpNMiA0aDJ2MkgyeicgZmlsbD0nJTIzYmMzNjFhJyAvPjwvc3ZnPlwiKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTc2ZTU1O1xufVxuXG5Ac3VwcG9ydHMgKGJvcmRlci1pbWFnZS1zb3VyY2U6IG5vbmUpIHtcbiAgLnBpeGVsLWJveC0tZXJyb3Ige1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gIH1cbn1cblxuLnBpeGVsLWJveC0tZXJyb3I6OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNoYWRvdzogaW5zZXQgLTRweCAtNHB4ICNlMTQ4Mjg7XG59XG5cbi5waXhlbC1ib3gtLWVycm9yOmhvdmVyLCAucGl4ZWwtYm94LS1lcnJvcjpmb2N1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNlNDViM2Y7XG59XG5cbi5waXhlbC1ib3gtLWxpZ2h0LWN1c3RvbSB7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogNHB4O1xuICBib3JkZXItY29sb3I6ICNjY2NjY2M7XG4gIGJvcmRlci1pbWFnZS1zbGljZTogMjtcbiAgYm9yZGVyLWltYWdlLXdpZHRoOiAxO1xuICBib3JkZXItaW1hZ2Utb3V0c2V0OiAwO1xuICBib3JkZXItaW1hZ2Utc291cmNlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2JyBoZWlnaHQ9JzYnPjxwYXRoIGQ9J00wIDJoMnYySDB6TTIgMGgydjJIMnpNNCAyaDJ2Mkg0ek0yIDRoMnYySDJ6JyBmaWxsPSclMjNjY2NjY2MnIC8+PC9zdmc+XCIpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cbkBzdXBwb3J0cyAoYm9yZGVyLWltYWdlLXNvdXJjZTogbm9uZSkge1xuICAucGl4ZWwtYm94LS1saWdodC1jdXN0b20ge1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gIH1cbn1cblxuLnBpeGVsLWJveC0tbGlnaHQtY3VzdG9tOjphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6IDA7XG4gIGJvdHRvbTogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJveC1zaGFkb3c6IGluc2V0IC00cHggLTRweCAjOTk5LCBpbnNldCA0cHggNHB4ICM5OTk7XG59XG5cbi5waXhlbC1ib3gtLWxpZ2h0LWN1c3RvbTpob3ZlciwgLnBpeGVsLWJveC0tbGlnaHQtY3VzdG9tOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcbn1cblxuLnBpeGVsLWJveC0tcHJpbWFyeS1jdXN0b20ge1xuICBjb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiA0cHg7XG4gIGJvcmRlci1jb2xvcjogIzBjNjM5YztcbiAgYm9yZGVyLWltYWdlLXNsaWNlOiAyO1xuICBib3JkZXItaW1hZ2Utd2lkdGg6IDE7XG4gIGJvcmRlci1pbWFnZS1vdXRzZXQ6IDA7XG4gIGJvcmRlci1pbWFnZS1zb3VyY2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzYnIGhlaWdodD0nNic+PHBhdGggZD0nTTAgMmgydjJIMHpNMiAwaDJ2Mkgyek00IDJoMnYySDR6TTIgNGgydjJIMnonIGZpbGw9JyUyMzBjNjM5YycgLz48L3N2Zz5cIik7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyMDljZWU7XG59XG5cbkBzdXBwb3J0cyAoYm9yZGVyLWltYWdlLXNvdXJjZTogbm9uZSkge1xuICAucGl4ZWwtYm94LS1wcmltYXJ5LWN1c3RvbSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgfVxufVxuXG4ucGl4ZWwtYm94LS1wcmltYXJ5LWN1c3RvbTpob3ZlciwgLnBpeGVsLWJveC0tcHJpbWFyeS1jdXN0b206Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMTE5MGUzO1xufVxuXG4ucGl4ZWwtYm94LS1zdWNjZXNzLWN1c3RvbSB7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDRweDtcbiAgYm9yZGVyLWNvbG9yOiAjNWI4NDIzO1xuICBib3JkZXItaW1hZ2Utc2xpY2U6IDI7XG4gIGJvcmRlci1pbWFnZS13aWR0aDogMTtcbiAgYm9yZGVyLWltYWdlLW91dHNldDogMDtcbiAgYm9yZGVyLWltYWdlLXNvdXJjZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNicgaGVpZ2h0PSc2Jz48cGF0aCBkPSdNMCAyaDJ2Mkgwek0yIDBoMnYySDJ6TTQgMmgydjJINHpNMiA0aDJ2MkgyeicgZmlsbD0nJTIzNWI4NDIzJyAvPjwvc3ZnPlwiKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTJjYzQxO1xufVxuXG5Ac3VwcG9ydHMgKGJvcmRlci1pbWFnZS1zb3VyY2U6IG5vbmUpIHtcbiAgLnBpeGVsLWJveC0tc3VjY2Vzcy1jdXN0b20ge1xuICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7XG4gIH1cbn1cblxuLnBpeGVsLWJveC0tc3VjY2Vzcy1jdXN0b206OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNoYWRvdzogaW5zZXQgNHB4IDRweCAjYjVkYzdkO1xufVxuXG4ucGl4ZWwtYm94LS1zdWNjZXNzLWN1c3RvbTpob3ZlciwgLnBpeGVsLWJveC0tc3VjY2Vzcy1jdXN0b206Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjODVjMDM0O1xufVxuXG4ucGl4ZWwtYm94LS13YXJuaW5nLWN1c3RvbSB7XG4gIGJvcmRlci1zdHlsZTogc29saWQ7XG4gIGJvcmRlci13aWR0aDogNHB4O1xuICBib3JkZXItY29sb3I6ICNhODhmMDY7XG4gIGJvcmRlci1pbWFnZS1zbGljZTogMjtcbiAgYm9yZGVyLWltYWdlLXdpZHRoOiAxO1xuICBib3JkZXItaW1hZ2Utb3V0c2V0OiAwO1xuICBib3JkZXItaW1hZ2Utc291cmNlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc2JyBoZWlnaHQ9JzYnPjxwYXRoIGQ9J00wIDJoMnYySDB6TTIgMGgydjJIMnpNNCAyaDJ2Mkg0ek0yIDRoMnYySDJ6JyBmaWxsPSclMjNhODhmMDYnIC8+PC9zdmc+XCIpO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmN2Q1MWQ7XG59XG5cbkBzdXBwb3J0cyAoYm9yZGVyLWltYWdlLXNvdXJjZTogbm9uZSkge1xuICAucGl4ZWwtYm94LS13YXJuaW5nLWN1c3RvbSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgfVxufVxuXG4ucGl4ZWwtYm94LS13YXJuaW5nLWN1c3RvbTo6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAwO1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBib3gtc2hhZG93OiBpbnNldCAtNHB4IC00cHggI2Q5YjkwOCwgaW5zZXQgNHB4IDRweCAjZmFlMzY3O1xufVxuXG4ucGl4ZWwtYm94LS13YXJuaW5nLWN1c3RvbTpob3ZlciwgLnBpeGVsLWJveC0td2FybmluZy1jdXN0b206Zm9jdXMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjJjZTA5O1xufVxuXG4ucGl4ZWwtYm94LS1lcnJvci1jdXN0b20ge1xuICBjb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgYm9yZGVyLXdpZHRoOiA0cHg7XG4gIGJvcmRlci1jb2xvcjogIzAwMDtcbiAgYm9yZGVyLWltYWdlLXNsaWNlOiAyO1xuICBib3JkZXItaW1hZ2Utd2lkdGg6IDE7XG4gIGJvcmRlci1pbWFnZS1vdXRzZXQ6IDA7XG4gIGJvcmRlci1pbWFnZS1zb3VyY2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzYnIGhlaWdodD0nNic+PHBhdGggZD0nTTAgMmgydjJIMHpNMiAwaDJ2Mkgyek00IDJoMnYySDR6TTIgNGgydjJIMnonIGZpbGw9JyUyMzAwMCcgLz48L3N2Zz5cIik7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U3NmU1NTtcbn1cblxuQHN1cHBvcnRzIChib3JkZXItaW1hZ2Utc291cmNlOiBub25lKSB7XG4gIC5waXhlbC1ib3gtLWVycm9yLWN1c3RvbSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTRweDtcbiAgfVxufVxuXG4ucGl4ZWwtYm94LS1lcnJvci1jdXN0b206OmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMDtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYm94LXNoYWRvdzogaW5zZXQgLTRweCAtNHB4ICNlMTQ4Mjg7XG59XG5cbi5waXhlbC1ib3gtLWVycm9yLWN1c3RvbTpob3ZlciwgLnBpeGVsLWJveC0tZXJyb3ItY3VzdG9tOmZvY3VzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U0NWIzZjtcbn1cbiJdfQ== */
diff --git a/docs/styles/site.css b/docs/styles/site.css
new file mode 100644
index 0000000..67cea59
--- /dev/null
+++ b/docs/styles/site.css
@@ -0,0 +1,535 @@
+/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
+/* Document
+ ========================================================================== */
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in iOS.
+ */
+html {
+ line-height: 1.15;
+ /* 1 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */
+}
+
+/* Sections
+ ========================================================================== */
+/**
+ * Remove the margin in all browsers.
+ */
+body {
+ margin: 0;
+}
+
+/**
+ * Render the `main` element consistently in IE.
+ */
+main {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+hr {
+ -webkit-box-sizing: content-box;
+ box-sizing: content-box;
+ /* 1 */
+ height: 0;
+ /* 1 */
+ overflow: visible;
+ /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+pre {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+/**
+ * Remove the gray background on active links in IE 10.
+ */
+a {
+ background-color: transparent;
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57-
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+abbr[title] {
+ border-bottom: none;
+ /* 1 */
+ text-decoration: underline;
+ /* 2 */
+ -webkit-text-decoration: underline dotted;
+ text-decoration: underline dotted;
+ /* 2 */
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+code,
+kbd,
+samp {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+/**
+ * Remove the border on images inside links in IE 10.
+ */
+img {
+ border-style: none;
+}
+
+/* Forms
+ ========================================================================== */
+/**
+ * 1. Change the font styles in all browsers.
+ * 2. Remove the margin in Firefox and Safari.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: inherit;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ line-height: 1.15;
+ /* 1 */
+ margin: 0;
+ /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+button,
+input {
+ /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+button,
+select {
+ /* 1 */
+ text-transform: none;
+}
+
+/**
+ * Correct the inability to style clickable types in iOS and Safari.
+ */
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+fieldset {
+ padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+legend {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ /* 1 */
+ color: inherit;
+ /* 2 */
+ display: table;
+ /* 1 */
+ max-width: 100%;
+ /* 1 */
+ padding: 0;
+ /* 3 */
+ white-space: normal;
+ /* 1 */
+}
+
+/**
+ * Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+progress {
+ vertical-align: baseline;
+}
+
+/**
+ * Remove the default vertical scrollbar in IE 10+.
+ */
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10.
+ * 2. Remove the padding in IE 10.
+ */
+[type="checkbox"],
+[type="radio"] {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+[type="search"] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+}
+
+/**
+ * Remove the inner padding in Chrome and Safari on macOS.
+ */
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+/*
+ * Add the correct display in Edge, IE 10+, and Firefox.
+ */
+details {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+summary {
+ display: list-item;
+}
+
+/* Misc
+ ========================================================================== */
+/**
+ * Add the correct display in IE 10+.
+ */
+template {
+ display: none;
+}
+
+/**
+ * Add the correct display in IE 10.
+ */
+[hidden] {
+ display: none;
+}
+
+*,
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: "Lato", -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
+ font-size: 1rem;
+ font-weight: 300;
+ line-height: 1.5;
+ color: #333;
+ background-color: #fff;
+}
+
+a {
+ color: #1976D2;
+ text-decoration: none;
+ -webkit-transition: color 0.3s;
+ transition: color 0.3s;
+}
+
+a:hover, a:focus {
+ color: #2196F3;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ font-weight: 300;
+}
+
+h1 small, h2 small, h3 small, h4 small, h5 small, h6 small {
+ font-size: 60%;
+}
+
+h1, h2 {
+ margin: 0 0 20px 0;
+}
+
+h3, h4, h5, h6 {
+ margin: 0 0 15px 0;
+}
+
+h1 {
+ font-size: 38px;
+}
+
+h2 {
+ font-size: 34px;
+}
+
+h3 {
+ font-size: 26px;
+}
+
+h4 {
+ font-size: 20px;
+}
+
+h5 {
+ font-size: 16px;
+}
+
+h6 {
+ font-size: 14px;
+}
+
+p {
+ margin: 0 0 15px 0;
+}
+
+strong {
+ font-weight: 400;
+}
+
+.container {
+ width: 100%;
+ max-width: 1140px;
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.header {
+ position: fixed;
+ top: 0;
+ z-index: 100;
+ width: 100%;
+ padding: 15px 0;
+ color: #fff;
+ background-color: #1976D2;
+ -webkit-box-shadow: 0 0 6px 6px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 0 6px 6px rgba(0, 0, 0, 0.1);
+}
+
+.logo-text {
+ margin: 0;
+}
+
+@media (max-width: 767px) {
+ .logo-text {
+ font-size: 25px;
+ }
+}
+
+@media (min-width: 768px) {
+ .logo-text {
+ display: inline-block;
+ }
+}
+
+.header--links .btn {
+ margin: 0;
+ margin-top: 7px;
+}
+
+.header--links .btn:last-child {
+ margin-left: 7px;
+}
+
+@media (min-width: 768px) {
+ .header--links {
+ float: right;
+ }
+}
+
+.footer {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ font-size: 12px;
+ text-align: center;
+}
+
+.demo {
+ margin-top: 40px;
+ margin-bottom: 40px;
+}
+
+.demo--intro {
+ margin-top: 20px;
+ border-bottom: 1px solid #ddd;
+}
+
+.demo--intro p:last-child {
+ padding-bottom: 20px;
+}
+
+.btn {
+ display: inline-block;
+ text-align: center;
+ vertical-align: middle;
+ cursor: pointer;
+ border: 1px solid #bbb;
+ padding: 4px 12px 6px 12px;
+ font-size: 18px;
+ background-color: #fff;
+ border-radius: 4px;
+ -webkit-transition: background-color .3s, color .3s;
+ transition: background-color .3s, color .3s;
+}
+
+.btn:hover, .btn:active {
+ background-color: #f3f3f3;
+}
+
+.btn-white {
+ color: #fff;
+ border-color: #fff;
+ background-color: transparent;
+}
+
+.install .btn {
+ margin-right: 15px;
+ margin-bottom: 15px;
+}
+
+pre {
+ display: block;
+ padding: 10px 15px;
+ margin: 0 0 20px 0;
+ overflow: auto;
+ font-family: 'Cutive Mono', monospace;
+ font-size: 14px;
+ word-break: break-all;
+ word-wrap: break-word;
+ background-color: #f3f3f3;
+ border: 1px solid #bbb;
+ border-radius: 4px;
+}
+
+/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9ub3JtYWxpemUuc2NzcyIsInNpdGUuY3NzIiwic2l0ZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJFQUFBO0FBRUE7K0VDQStFO0FERy9FOzs7RUNDRTtBRElGO0VBQ0UsaUJBQWlCO0VBQUUsTUFBQTtFQUNuQiw4QkFBOEI7RUFBRSxNQUFBO0FDQWxDOztBREdBOytFQ0ErRTtBREcvRTs7RUNBRTtBRElGO0VBQ0UsU0FBUztBQ0ZYOztBREtBOztFQ0RFO0FES0Y7RUFDRSxjQUFjO0FDSGhCOztBRE1BOzs7RUNERTtBRE1GO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtBQ0psQjs7QURPQTsrRUNKK0U7QURPL0U7OztFQ0hFO0FEUUY7RUFDRSwrQkFBdUI7VUFBdkIsdUJBQXVCO0VBQUUsTUFBQTtFQUN6QixTQUFTO0VBQUUsTUFBQTtFQUNYLGlCQUFpQjtFQUFFLE1BQUE7QUNIckI7O0FETUE7OztFQ0RFO0FETUY7RUFDRSxpQ0FBaUM7RUFBRSxNQUFBO0VBQ25DLGNBQWM7RUFBRSxNQUFBO0FDRmxCOztBREtBOytFQ0YrRTtBREsvRTs7RUNGRTtBRE1GO0VBQ0UsNkJBQTZCO0FDSi9COztBRE9BOzs7RUNGRTtBRE9GO0VBQ0UsbUJBQW1CO0VBQUUsTUFBQTtFQUNyQiwwQkFBMEI7RUFBRSxNQUFBO0VBQzVCLHlDQUFpQztVQUFqQyxpQ0FBaUM7RUFBRSxNQUFBO0FDRnJDOztBREtBOztFQ0RFO0FES0Y7O0VBRUUsbUJBQW1CO0FDSHJCOztBRE1BOzs7RUNERTtBRE1GOzs7RUFHRSxpQ0FBaUM7RUFBRSxNQUFBO0VBQ25DLGNBQWM7RUFBRSxNQUFBO0FDRmxCOztBREtBOztFQ0RFO0FES0Y7RUFDRSxjQUFjO0FDSGhCOztBRE1BOzs7RUNERTtBRE1GOztFQUVFLGNBQWM7RUFDZCxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLHdCQUF3QjtBQ0oxQjs7QURPQTtFQUNFLGVBQWU7QUNKakI7O0FET0E7RUFDRSxXQUFXO0FDSmI7O0FET0E7K0VD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RHVWekM7O0FDcFZFO0VBQ0UsU0FBUztBRHVWYjs7QUNyVkk7RUFIRjtJQUlJLGVBQWU7RUR5Vm5CO0FBQ0Y7O0FDeFZJO0VBTkY7SUFPSSxxQkFBcUI7RUQ0VnpCO0FBQ0Y7O0FDelZFO0VBR0ksU0FBUztFQUNULGVBQWU7QUQwVnJCOztBQzlWRTtFQU9NLGdCQUFnQjtBRDJWeEI7O0FDdlZJO0VBWEY7SUFZSSxZQUFZO0VEMlZoQjtBQUNGOztBQ3hWQTtFQUNFLGlCQUFpQjtFQUNqQixvQkFBb0I7RUFDcEIsZUFBZTtFQUNmLGtCQUFrQjtBRDJWcEI7O0FDdFZBO0VBQ0UsZ0JBQWdCO0VBQ2hCLG1CQUFtQjtBRHlWckI7O0FDdFZBO0VBQ0UsZ0JBQWdCO0VBQ2hCLDZCQUE2QjtBRHlWL0I7O0FDM1ZBO0VBS0ksb0JBQW9CO0FEMFZ4Qjs7QUN0VkE7RUFDRSxxQkFBcUI7RUFDckIsa0JBQWtCO0VBQ2xCLHNCQUFzQjtFQUN0QixlQUFlO0VBQ2Ysc0JBQXNCO0VBQ3RCLDBCQUEwQjtFQUMxQixlQUFlO0VBQ2Ysc0JBQXNCO0VBQ3RCLGtCQUFrQjtFQUNsQixtREFBMkM7RUFBM0MsMkNBQTJDO0FEeVY3Qzs7QUNuV0E7RUFhSSx5QkFBeUI7QUQwVjdCOztBQ3RWQTtFQUNFLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsNkJBQTZCO0FEeVYvQjs7QUN0VkE7RUFDRSxrQkFBa0I7RUFDbEIsbUJBQW1CO0FEeVZyQjs7QUN0VkE7RUFDRSxjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLGtCQUFrQjtFQUNsQixjQUFjO0VBQ2QscUNBQXFDO0VBQ3JDLGVBQWU7RUFDZixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLHlCQUF5QjtFQUN6QixzQkFBc0I7RUFDdEIsa0JBQWtCO0FEeVZwQiIsImZpbGUiOiJzaXRlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qISBub3JtYWxpemUuY3NzIHY4LjAuMSB8IE1JVCBMaWNlbnNlIHwgZ2l0aHViLmNvbS9uZWNvbGFzL25vcm1hbGl6ZS5jc3MgKi9cblxuLyogRG9jdW1lbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gKi9cblxuaHRtbCB7XG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gIC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLyogMiAqL1xufVxuXG4vKiBTZWN0aW9uc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyoqXG4gKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS5cbiAqL1xuXG5tYWluIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgZm9udCBzaXplIGFuZCBtYXJnaW4gb24gYGgxYCBlbGVtZW50cyB3aXRoaW4gYHNlY3Rpb25gIGFuZFxuICogYGFydGljbGVgIGNvbnRleHRzIGluIENocm9tZSwgRmlyZWZveCwgYW5kIFNhZmFyaS5cbiAqL1xuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMmVtO1xuICBtYXJnaW46IDAuNjdlbSAwO1xufVxuXG4vKiBHcm91cGluZyBjb250ZW50XG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuXG5ociB7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyAvKiAxICovXG4gIGhlaWdodDogMDsgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTsgLyogMiAqL1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIGluaGVyaXRhbmNlIGFuZCBzY2FsaW5nIG9mIGZvbnQgc2l6ZSBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBDb3JyZWN0IHRoZSBvZGQgYGVtYCBmb250IHNpemluZyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cblxucHJlIHtcbiAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZSwgbW9ub3NwYWNlOyAvKiAxICovXG4gIGZvbnQtc2l6ZTogMWVtOyAvKiAyICovXG59XG5cbi8qIFRleHQtbGV2ZWwgc2VtYW50aWNzXG4gICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqL1xuXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuXG5hIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qKlxuICogMS4gUmVtb3ZlIHRoZSBib3R0b20gYm9yZGVyIGluIENocm9tZSA1Ny1cbiAqIDIuIEFkZCB0aGUgY29ycmVjdCB0ZXh0IGRlY29yYXRpb24gaW4gQ2hyb21lLCBFZGdlLCBJRSwgT3BlcmEsIGFuZCBTYWZhcmkuXG4gKi9cblxuYWJiclt0aXRsZV0ge1xuICBib3JkZXItYm90dG9tOiBub25lOyAvKiAxICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAvKiAyICovXG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lIGRvdHRlZDsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHdlaWdodCBpbiBDaHJvbWUsIEVkZ2UsIGFuZCBTYWZhcmkuXG4gKi9cblxuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5jb2RlLFxua2JkLFxuc2FtcCB7XG4gIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIG1vbm9zcGFjZTsgLyogMSAqL1xuICBmb250LXNpemU6IDFlbTsgLyogMiAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbi8qKlxuICogUHJldmVudCBgc3ViYCBhbmQgYHN1cGAgZWxlbWVudHMgZnJvbSBhZmZlY3RpbmcgdGhlIGxpbmUgaGVpZ2h0IGluXG4gKiBhbGwgYnJvd3NlcnMuXG4gKi9cblxuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGJvcmRlciBvbiBpbWFnZXMgaW5zaWRlIGxpbmtzIGluIElFIDEwLlxuICovXG5cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxuLyogRm9ybXNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cblxuYnV0dG9uLFxuaW5wdXQsXG5vcHRncm91cCxcbnNlbGVjdCxcbnRleHRhcmVhIHtcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7IC8qIDEgKi9cbiAgZm9udC1zaXplOiAxMDAlOyAvKiAxICovXG4gIGxpbmUtaGVpZ2h0OiAxLjE1OyAvKiAxICovXG4gIG1hcmdpbjogMDsgLyogMiAqL1xufVxuXG4vKipcbiAqIFNob3cgdGhlIG92ZXJmbG93IGluIElFLlxuICogMS4gU2hvdyB0aGUgb3ZlcmZsb3cgaW4gRWRnZS5cbiAqL1xuXG5idXR0b24sXG5pbnB1dCB7IC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbmhlcml0YW5jZSBvZiB0ZXh0IHRyYW5zZm9ybSBpbiBFZGdlLCBGaXJlZm94LCBhbmQgSUUuXG4gKiAxLiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEZpcmVmb3guXG4gKi9cblxuYnV0dG9uLFxuc2VsZWN0IHsgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5cbmJ1dHRvbixcblt0eXBlPVwiYnV0dG9uXCJdLFxuW3R5cGU9XCJyZXNldFwiXSxcblt0eXBlPVwic3VibWl0XCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBib3JkZXIgYW5kIHBhZGRpbmcgaW4gRmlyZWZveC5cbiAqL1xuXG5idXR0b246Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cImJ1dHRvblwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwicmVzZXRcIl06Oi1tb3otZm9jdXMtaW5uZXIsXG5bdHlwZT1cInN1Ym1pdFwiXTo6LW1vei1mb2N1cy1pbm5lciB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgcGFkZGluZzogMDtcbn1cblxuLyoqXG4gKiBSZXN0b3JlIHRoZSBmb2N1cyBzdHlsZXMgdW5zZXQgYnkgdGhlIHByZXZpb3VzIHJ1bGUuXG4gKi9cblxuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5cbmZpZWxkc2V0IHtcbiAgcGFkZGluZzogMC4zNWVtIDAuNzVlbSAwLjYyNWVtO1xufVxuXG4vKipcbiAqIDEuIENvcnJlY3QgdGhlIHRleHQgd3JhcHBpbmcgaW4gRWRnZSBhbmQgSUUuXG4gKiAyLiBDb3JyZWN0IHRoZSBjb2xvciBpbmhlcml0YW5jZSBmcm9tIGBmaWVsZHNldGAgZWxlbWVudHMgaW4gSUUuXG4gKiAzLiBSZW1vdmUgdGhlIHBhZGRpbmcgc28gZGV2ZWxvcGVycyBhcmUgbm90IGNhdWdodCBvdXQgd2hlbiB0aGV5IHplcm8gb3V0XG4gKiAgICBgZmllbGRzZXRgIGVsZW1lbnRzIGluIGFsbCBicm93c2Vycy5cbiAqL1xuXG5sZWdlbmQge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIGNvbG9yOiBpbmhlcml0OyAvKiAyICovXG4gIGRpc3BsYXk6IHRhYmxlOyAvKiAxICovXG4gIG1heC13aWR0aDogMTAwJTsgLyogMSAqL1xuICBwYWRkaW5nOiAwOyAvKiAzICovXG4gIHdoaXRlLXNwYWNlOiBub3JtYWw7IC8qIDEgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgdmVydGljYWwgYWxpZ25tZW50IGluIENocm9tZSwgRmlyZWZveCwgYW5kIE9wZXJhLlxuICovXG5cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuICovXG5cbnRleHRhcmVhIHtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5cbi8qKlxuICogMS4gQWRkIHRoZSBjb3JyZWN0IGJveCBzaXppbmcgaW4gSUUgMTAuXG4gKiAyLiBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gSUUgMTAuXG4gKi9cblxuW3R5cGU9XCJjaGVja2JveFwiXSxcblt0eXBlPVwicmFkaW9cIl0ge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvKiAxICovXG4gIHBhZGRpbmc6IDA7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBjdXJzb3Igc3R5bGUgb2YgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgYnV0dG9ucyBpbiBDaHJvbWUuXG4gKi9cblxuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5cblt0eXBlPVwic2VhcmNoXCJdIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC8qIDEgKi9cbiAgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC8qIDIgKi9cbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGlubmVyIHBhZGRpbmcgaW4gQ2hyb21lIGFuZCBTYWZhcmkgb24gbWFjT1MuXG4gKi9cblxuW3R5cGU9XCJzZWFyY2hcIl06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb24ge1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5hYmlsaXR5IHRvIHN0eWxlIGNsaWNrYWJsZSB0eXBlcyBpbiBpT1MgYW5kIFNhZmFyaS5cbiAqIDIuIENoYW5nZSBmb250IHByb3BlcnRpZXMgdG8gYGluaGVyaXRgIGluIFNhZmFyaS5cbiAqL1xuXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDsgLyogMiAqL1xufVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuLypcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIEVkZ2UsIElFIDEwKywgYW5kIEZpcmVmb3guXG4gKi9cblxuZGV0YWlscyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG5cbi8qIE1pc2NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGRpc3BsYXkgaW4gSUUgMTArLlxuICovXG5cbnRlbXBsYXRlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBJRSAxMC5cbiAqL1xuXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4iLCIvKiEgbm9ybWFsaXplLmNzcyB2OC4wLjEgfCBNSVQgTGljZW5zZSB8IGdpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzICovXG4vKiBEb2N1bWVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgbGluZSBoZWlnaHQgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBpT1MuXG4gKi9cbmh0bWwge1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IDEwMCU7XG4gIC8qIDIgKi9cbn1cblxuLyogU2VjdGlvbnNcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgbWFyZ2luIGluIGFsbCBicm93c2Vycy5cbiAqL1xuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuLyoqXG4gKiBSZW5kZXIgdGhlIGBtYWluYCBlbGVtZW50IGNvbnNpc3RlbnRseSBpbiBJRS5cbiAqL1xubWFpbiB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGZvbnQgc2l6ZSBhbmQgbWFyZ2luIG9uIGBoMWAgZWxlbWVudHMgd2l0aGluIGBzZWN0aW9uYCBhbmRcbiAqIGBhcnRpY2xlYCBjb250ZXh0cyBpbiBDaHJvbWUsIEZpcmVmb3gsIGFuZCBTYWZhcmkuXG4gKi9cbmgxIHtcbiAgZm9udC1zaXplOiAyZW07XG4gIG1hcmdpbjogMC42N2VtIDA7XG59XG5cbi8qIEdyb3VwaW5nIGNvbnRlbnRcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIEZpcmVmb3guXG4gKiAyLiBTaG93IHRoZSBvdmVyZmxvdyBpbiBFZGdlIGFuZCBJRS5cbiAqL1xuaHIge1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbiAgLyogMSAqL1xuICBoZWlnaHQ6IDA7XG4gIC8qIDEgKi9cbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIC8qIDIgKi9cbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmhlcml0YW5jZSBhbmQgc2NhbGluZyBvZiBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuICogMi4gQ29ycmVjdCB0aGUgb2RkIGBlbWAgZm9udCBzaXppbmcgaW4gYWxsIGJyb3dzZXJzLlxuICovXG5wcmUge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07XG4gIC8qIDIgKi9cbn1cblxuLyogVGV4dC1sZXZlbCBzZW1hbnRpY3NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIFJlbW92ZSB0aGUgZ3JheSBiYWNrZ3JvdW5kIG9uIGFjdGl2ZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuYSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vKipcbiAqIDEuIFJlbW92ZSB0aGUgYm90dG9tIGJvcmRlciBpbiBDaHJvbWUgNTctXG4gKiAyLiBBZGQgdGhlIGNvcnJlY3QgdGV4dCBkZWNvcmF0aW9uIGluIENocm9tZSwgRWRnZSwgSUUsIE9wZXJhLCBhbmQgU2FmYXJpLlxuICovXG5hYmJyW3RpdGxlXSB7XG4gIGJvcmRlci1ib3R0b206IG5vbmU7XG4gIC8qIDEgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIC8qIDIgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkO1xuICAvKiAyICovXG59XG5cbi8qKlxuICogQWRkIHRoZSBjb3JyZWN0IGZvbnQgd2VpZ2h0IGluIENocm9tZSwgRWRnZSwgYW5kIFNhZmFyaS5cbiAqL1xuYixcbnN0cm9uZyB7XG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XG59XG5cbi8qKlxuICogMS4gQ29ycmVjdCB0aGUgaW5oZXJpdGFuY2UgYW5kIHNjYWxpbmcgb2YgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqIDIuIENvcnJlY3QgdGhlIG9kZCBgZW1gIGZvbnQgc2l6aW5nIGluIGFsbCBicm93c2Vycy5cbiAqL1xuY29kZSxcbmtiZCxcbnNhbXAge1xuICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBtb25vc3BhY2U7XG4gIC8qIDEgKi9cbiAgZm9udC1zaXplOiAxZW07XG4gIC8qIDIgKi9cbn1cblxuLyoqXG4gKiBBZGQgdGhlIGNvcnJlY3QgZm9udCBzaXplIGluIGFsbCBicm93c2Vycy5cbiAqL1xuc21hbGwge1xuICBmb250LXNpemU6IDgwJTtcbn1cblxuLyoqXG4gKiBQcmV2ZW50IGBzdWJgIGFuZCBgc3VwYCBlbGVtZW50cyBmcm9tIGFmZmVjdGluZyB0aGUgbGluZSBoZWlnaHQgaW5cbiAqIGFsbCBicm93c2Vycy5cbiAqL1xuc3ViLFxuc3VwIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG5zdXAge1xuICB0b3A6IC0wLjVlbTtcbn1cblxuLyogRW1iZWRkZWQgY29udGVudFxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogUmVtb3ZlIHRoZSBib3JkZXIgb24gaW1hZ2VzIGluc2lkZSBsaW5rcyBpbiBJRSAxMC5cbiAqL1xuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vKiBGb3Jtc1xuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qKlxuICogMS4gQ2hhbmdlIHRoZSBmb250IHN0eWxlcyBpbiBhbGwgYnJvd3NlcnMuXG4gKiAyLiBSZW1vdmUgdGhlIG1hcmdpbiBpbiBGaXJlZm94IGFuZCBTYWZhcmkuXG4gKi9cbmJ1dHRvbixcbmlucHV0LFxub3B0Z3JvdXAsXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAvKiAxICovXG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgLyogMSAqL1xuICBsaW5lLWhlaWdodDogMS4xNTtcbiAgLyogMSAqL1xuICBtYXJnaW46IDA7XG4gIC8qIDIgKi9cbn1cblxuLyoqXG4gKiBTaG93IHRoZSBvdmVyZmxvdyBpbiBJRS5cbiAqIDEuIFNob3cgdGhlIG92ZXJmbG93IGluIEVkZ2UuXG4gKi9cbmJ1dHRvbixcbmlucHV0IHtcbiAgLyogMSAqL1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgdGhlIGluaGVyaXRhbmNlIG9mIHRleHQgdHJhbnNmb3JtIGluIEVkZ2UsIEZpcmVmb3gsIGFuZCBJRS5cbiAqIDEuIFJlbW92ZSB0aGUgaW5oZXJpdGFuY2Ugb2YgdGV4dCB0cmFuc2Zvcm0gaW4gRmlyZWZveC5cbiAqL1xuYnV0dG9uLFxuc2VsZWN0IHtcbiAgLyogMSAqL1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyoqXG4gKiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICovXG5idXR0b24sXG5bdHlwZT1cImJ1dHRvblwiXSxcblt0eXBlPVwicmVzZXRcIl0sXG5bdHlwZT1cInN1Ym1pdFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgaW5uZXIgYm9yZGVyIGFuZCBwYWRkaW5nIGluIEZpcmVmb3guXG4gKi9cbmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwiYnV0dG9uXCJdOjotbW96LWZvY3VzLWlubmVyLFxuW3R5cGU9XCJyZXNldFwiXTo6LW1vei1mb2N1cy1pbm5lcixcblt0eXBlPVwic3VibWl0XCJdOjotbW96LWZvY3VzLWlubmVyIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBwYWRkaW5nOiAwO1xufVxuXG4vKipcbiAqIFJlc3RvcmUgdGhlIGZvY3VzIHN0eWxlcyB1bnNldCBieSB0aGUgcHJldmlvdXMgcnVsZS5cbiAqL1xuYnV0dG9uOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJidXR0b25cIl06LW1vei1mb2N1c3JpbmcsXG5bdHlwZT1cInJlc2V0XCJdOi1tb3otZm9jdXNyaW5nLFxuW3R5cGU9XCJzdWJtaXRcIl06LW1vei1mb2N1c3Jpbmcge1xuICBvdXRsaW5lOiAxcHggZG90dGVkIEJ1dHRvblRleHQ7XG59XG5cbi8qKlxuICogQ29ycmVjdCB0aGUgcGFkZGluZyBpbiBGaXJlZm94LlxuICovXG5maWVsZHNldCB7XG4gIHBhZGRpbmc6IDAuMzVlbSAwLjc1ZW0gMC42MjVlbTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSB0ZXh0IHdyYXBwaW5nIGluIEVkZ2UgYW5kIElFLlxuICogMi4gQ29ycmVjdCB0aGUgY29sb3IgaW5oZXJpdGFuY2UgZnJvbSBgZmllbGRzZXRgIGVsZW1lbnRzIGluIElFLlxuICogMy4gUmVtb3ZlIHRoZSBwYWRkaW5nIHNvIGRldmVsb3BlcnMgYXJlIG5vdCBjYXVnaHQgb3V0IHdoZW4gdGhleSB6ZXJvIG91dFxuICogICAgYGZpZWxkc2V0YCBlbGVtZW50cyBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbmxlZ2VuZCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIDEgKi9cbiAgY29sb3I6IGluaGVyaXQ7XG4gIC8qIDIgKi9cbiAgZGlzcGxheTogdGFibGU7XG4gIC8qIDEgKi9cbiAgbWF4LXdpZHRoOiAxMDAlO1xuICAvKiAxICovXG4gIHBhZGRpbmc6IDA7XG4gIC8qIDMgKi9cbiAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcbiAgLyogMSAqL1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCB2ZXJ0aWNhbCBhbGlnbm1lbnQgaW4gQ2hyb21lLCBGaXJlZm94LCBhbmQgT3BlcmEuXG4gKi9cbnByb2dyZXNzIHtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG4vKipcbiAqIFJlbW92ZSB0aGUgZGVmYXVsdCB2ZXJ0aWNhbCBzY3JvbGxiYXIgaW4gSUUgMTArLlxuICovXG50ZXh0YXJlYSB7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4vKipcbiAqIDEuIEFkZCB0aGUgY29ycmVjdCBib3ggc2l6aW5nIGluIElFIDEwLlxuICogMi4gUmVtb3ZlIHRoZSBwYWRkaW5nIGluIElFIDEwLlxuICovXG5bdHlwZT1cImNoZWNrYm94XCJdLFxuW3R5cGU9XCJyYWRpb1wiXSB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIC8qIDEgKi9cbiAgcGFkZGluZzogMDtcbiAgLyogMiAqL1xufVxuXG4vKipcbiAqIENvcnJlY3QgdGhlIGN1cnNvciBzdHlsZSBvZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBidXR0b25zIGluIENocm9tZS5cbiAqL1xuW3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXG5bdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XG4gIGhlaWdodDogYXV0bztcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBvZGQgYXBwZWFyYW5jZSBpbiBDaHJvbWUgYW5kIFNhZmFyaS5cbiAqIDIuIENvcnJlY3QgdGhlIG91dGxpbmUgc3R5bGUgaW4gU2FmYXJpLlxuICovXG5bdHlwZT1cInNlYXJjaFwiXSB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xuICAvKiAxICovXG4gIG91dGxpbmUtb2Zmc2V0OiAtMnB4O1xuICAvKiAyICovXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBpbm5lciBwYWRkaW5nIGluIENocm9tZSBhbmQgU2FmYXJpIG9uIG1hY09TLlxuICovXG5bdHlwZT1cInNlYXJjaFwiXTo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbn1cblxuLyoqXG4gKiAxLiBDb3JyZWN0IHRoZSBpbmFiaWxpdHkgdG8gc3R5bGUgY2xpY2thYmxlIHR5cGVzIGluIGlPUyBhbmQgU2FmYXJpLlxuICogMi4gQ2hhbmdlIGZvbnQgcHJvcGVydGllcyB0byBgaW5oZXJpdGAgaW4gU2FmYXJpLlxuICovXG46Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHtcbiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247XG4gIC8qIDEgKi9cbiAgZm9udDogaW5oZXJpdDtcbiAgLyogMiAqL1xufVxuXG4vKiBJbnRlcmFjdGl2ZVxuICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBFZGdlLCBJRSAxMCssIGFuZCBGaXJlZm94LlxuICovXG5kZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbi8qXG4gKiBBZGQgdGhlIGNvcnJlY3QgZGlzcGxheSBpbiBhbGwgYnJvd3NlcnMuXG4gKi9cbnN1bW1hcnkge1xuICBkaXNwbGF5OiBsaXN0LWl0ZW07XG59XG5cbi8qIE1pc2NcbiAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwKy5cbiAqL1xudGVtcGxhdGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgY29ycmVjdCBkaXNwbGF5IGluIElFIDEwLlxuICovXG5baGlkZGVuXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbiosXG4qOmJlZm9yZSxcbio6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IFwiTGF0b1wiLCAtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxcIlNlZ29lIFVJXCIsUm9ib3RvLFwiSGVsdmV0aWNhIE5ldWVcIixBcmlhbCxcIk5vdG8gU2Fuc1wiLHNhbnMtc2VyaWYsXCJBcHBsZSBDb2xvciBFbW9qaVwiLFwiU2Vnb2UgVUkgRW1vamlcIixcIlNlZ29lIFVJIFN5bWJvbFwiLFwiTm90byBDb2xvciBFbW9qaVwiO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjU7XG4gIGNvbG9yOiAjMzMzO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xufVxuXG5hIHtcbiAgY29sb3I6ICMxOTc2RDI7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMC4zcztcbn1cblxuYTpob3ZlciwgYTpmb2N1cyB7XG4gIGNvbG9yOiAjMjE5NkYzO1xufVxuXG5oMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbn1cblxuaDEgc21hbGwsIGgyIHNtYWxsLCBoMyBzbWFsbCwgaDQgc21hbGwsIGg1IHNtYWxsLCBoNiBzbWFsbCB7XG4gIGZvbnQtc2l6ZTogNjAlO1xufVxuXG5oMSwgaDIge1xuICBtYXJnaW46IDAgMCAyMHB4IDA7XG59XG5cbmgzLCBoNCwgaDUsIGg2IHtcbiAgbWFyZ2luOiAwIDAgMTVweCAwO1xufVxuXG5oMSB7XG4gIGZvbnQtc2l6ZTogMzhweDtcbn1cblxuaDIge1xuICBmb250LXNpemU6IDM0cHg7XG59XG5cbmgzIHtcbiAgZm9udC1zaXplOiAyNnB4O1xufVxuXG5oNCB7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cblxuaDUge1xuICBmb250LXNpemU6IDE2cHg7XG59XG5cbmg2IHtcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG5wIHtcbiAgbWFyZ2luOiAwIDAgMTVweCAwO1xufVxuXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG4uY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTE0MHB4O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG59XG5cbi5oZWFkZXIge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgei1pbmRleDogMTAwO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMTVweCAwO1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE5NzZEMjtcbiAgYm94LXNoYWRvdzogMCAwIDZweCA2cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4ubG9nby10ZXh0IHtcbiAgbWFyZ2luOiAwO1xufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgLmxvZ28tdGV4dCB7XG4gICAgZm9udC1zaXplOiAyNXB4O1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubG9nby10ZXh0IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIH1cbn1cblxuLmhlYWRlci0tbGlua3MgLmJ0biB7XG4gIG1hcmdpbjogMDtcbiAgbWFyZ2luLXRvcDogN3B4O1xufVxuXG4uaGVhZGVyLS1saW5rcyAuYnRuOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tbGVmdDogN3B4O1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmhlYWRlci0tbGlua3Mge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxufVxuXG4uZm9vdGVyIHtcbiAgcGFkZGluZy10b3A6IDE1cHg7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICBmb250LXNpemU6IDEycHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmRlbW8ge1xuICBtYXJnaW4tdG9wOiA0MHB4O1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xufVxuXG4uZGVtby0taW50cm8ge1xuICBtYXJnaW4tdG9wOiAyMHB4O1xuICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RkZDtcbn1cblxuLmRlbW8tLWludHJvIHA6bGFzdC1jaGlsZCB7XG4gIHBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuXG4uYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2JiYjtcbiAgcGFkZGluZzogNHB4IDEycHggNnB4IDEycHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4zcywgY29sb3IgLjNzO1xufVxuXG4uYnRuOmhvdmVyLCAuYnRuOmFjdGl2ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7XG59XG5cbi5idG4td2hpdGUge1xuICBjb2xvcjogI2ZmZjtcbiAgYm9yZGVyLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmluc3RhbGwgLmJ0biB7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICBvdmVyZmxvdzogYXV0bztcbiAgZm9udC1mYW1pbHk6ICdDdXRpdmUgTW9ubycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcbiAgYm9yZGVyOiAxcHggc29saWQgI2JiYjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuIiwiLy8gLS0tLS0gRGVtbyBzaXRlIHN0eWxlcyAtLS0tLVxuQGltcG9ydCBcIm5vcm1hbGl6ZVwiO1xuXG5cblxuLy8gLS0tLS0gQmFzZSBzdHlsZXMgLS0tLS1cblxuKixcbio6YmVmb3JlLFxuKjphZnRlciB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbmJvZHkge1xuICBmb250LWZhbWlseTogXCJMYXRvXCIsIC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LFwiU2Vnb2UgVUlcIixSb2JvdG8sXCJIZWx2ZXRpY2EgTmV1ZVwiLEFyaWFsLFwiTm90byBTYW5zXCIsc2Fucy1zZXJpZixcIkFwcGxlIENvbG9yIEVtb2ppXCIsXCJTZWdvZSBVSSBFbW9qaVwiLFwiU2Vnb2UgVUkgU3ltYm9sXCIsXCJOb3RvIENvbG9yIEVtb2ppXCI7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgY29sb3I6ICMzMzM7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG59XG5cblxuYSB7XG4gIGNvbG9yOiAjMTk3NkQyO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIDAuM3M7XG5cbiAgJjpob3ZlciwgJjpmb2N1cyB7XG4gICAgY29sb3I6ICMyMTk2RjM7XG4gIH1cbn1cblxuLy8gVHlwZVxuaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG5cbiAgc21hbGwge1xuICAgIGZvbnQtc2l6ZTogNjAlO1xuICB9XG59XG5oMSwgaDIge1xuICBtYXJnaW46IDAgMCAyMHB4IDA7XG59XG5oMywgaDQsIGg1LCBoNiB7XG4gIG1hcmdpbjogMCAwIDE1cHggMDtcbn1cblxuaDEgeyBmb250LXNpemU6IDM4cHg7IH1cbmgyIHsgZm9udC1zaXplOiAzNHB4OyB9XG5oMyB7IGZvbnQtc2l6ZTogMjZweDsgfVxuaDQgeyBmb250LXNpemU6IDIwcHg7IH1cbmg1IHsgZm9udC1zaXplOiAxNnB4OyB9XG5oNiB7IGZvbnQtc2l6ZTogMTRweDsgfVxuXG5wIHtcbiAgbWFyZ2luOiAwIDAgMTVweCAwO1xufVxuXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG5cblxuLy8gLS0tLS0gTGF5b3V0IC0tLS0tXG4uY29udGFpbmVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIG1heC13aWR0aDogMTE0MHB4O1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICBwYWRkaW5nLWxlZnQ6IDE1cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDE1cHg7XG59XG5cblxuXG5cbi8vIC0tLS0tIEhlYWRlciBhbmQgZm9vdGVyIC0tLS0tXG4uaGVhZGVyIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIHotaW5kZXg6IDEwMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDE1cHggMDtcbiAgY29sb3I6ICNmZmY7XG4gIGJhY2tncm91bmQtY29sb3I6ICMxOTc2RDI7XG4gIGJveC1zaGFkb3c6IDAgMCA2cHggNnB4IHJnYmEoMCwwLDAsMC4xKTtcbn1cblxuICAubG9nby10ZXh0IHtcbiAgICBtYXJnaW46IDA7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHtcbiAgICAgIGZvbnQtc2l6ZTogMjVweDtcbiAgICB9XG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgLmhlYWRlci0tbGlua3Mge1xuXG4gICAgLmJ0biB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBtYXJnaW4tdG9wOiA3cHg7XG5cbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiA3cHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuICB9XG5cbi5mb290ZXIge1xuICBwYWRkaW5nLXRvcDogMTVweDtcbiAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG5cbi8vIC0tLS0tIERlbW8gLS0tLS1cbi5kZW1vIHtcbiAgbWFyZ2luLXRvcDogNDBweDtcbiAgbWFyZ2luLWJvdHRvbTogNDBweDtcbn1cblxuLmRlbW8tLWludHJvIHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG5cbiAgcDpsYXN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgfVxufVxuXG4uYnRuIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgYm9yZGVyOiAxcHggc29saWQgI2JiYjtcbiAgcGFkZGluZzogNHB4IDEycHggNnB4IDEycHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4zcywgY29sb3IgLjNzO1xuXG4gICY6aG92ZXIsICY6YWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xuICB9XG59XG5cbi5idG4td2hpdGUge1xuICBjb2xvcjogI2ZmZjtcbiAgYm9yZGVyLWNvbG9yOiAjZmZmO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLmluc3RhbGwgLmJ0biB7XG4gIG1hcmdpbi1yaWdodDogMTVweDtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxucHJlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDEwcHggMTVweDtcbiAgbWFyZ2luOiAwIDAgMjBweCAwO1xuICBvdmVyZmxvdzogYXV0bztcbiAgZm9udC1mYW1pbHk6ICdDdXRpdmUgTW9ubycsIG1vbm9zcGFjZTtcbiAgZm9udC1zaXplOiAxNHB4O1xuICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcbiAgYm9yZGVyOiAxcHggc29saWQgI2JiYjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuXG5cblxuLy8gLS0tLS0gQnJlYWtwb2ludCBleGFtcGxlcyAtLS0tLVxuXG4vLyBCcmVha3BvaW50cyB1cFxuXG4vLyBTbWFsbCBkZXZpY2VzIChsYW5kc2NhcGUgcGhvbmVzLCA1NzZweCBhbmQgdXApXG5AbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgfVxuXG5cbi8vIE1lZGl1bSBkZXZpY2VzICh0YWJsZXRzLCA3NjhweCBhbmQgdXApXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgfVxuXG5cbi8vIExhcmdlIGRldmljZXMgKGRlc2t0b3BzLCA5OTJweCBhbmQgdXApXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgfVxuXG5cbi8vIEV4dHJhIGxhcmdlIGRldmljZXMgKGxhcmdlIGRlc2t0b3BzLCAxMjAwcHggYW5kIHVwKVxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyB9XG5cbiJdfQ== */
diff --git a/gulpfile.js b/gulpfile.js
index a436827..639be3a 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -15,7 +15,7 @@ const isDev = !isProd && !isTest;
const paths = {
src: 'src',
- dest: 'dist',
+ dest: 'docs',
tmp: '.tmp',
gulp: './tasks/gulp'
};