├── logo.png ├── img └── rainbow-wood.jpg ├── README.markdown ├── sample-slideshow.css ├── license.txt ├── classList.js ├── slideshow.css ├── sample-slideshow.html ├── theme.css ├── slideshow.js └── logo.svg /logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ttscoff/CSSS/master/logo.png -------------------------------------------------------------------------------- /img/rainbow-wood.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ttscoff/CSSS/master/img/rainbow-wood.jpg -------------------------------------------------------------------------------- /README.markdown: -------------------------------------------------------------------------------- 1 | # CSSS 2 | ### CSS-based SlideShow System 3 | 4 | Warning: Only works in latest Firefox, Opera, Safari or Chrome. 5 | For more information, see the [sample slideshow](http://leaverou.me/csss/sample-slideshow.html) -------------------------------------------------------------------------------- /sample-slideshow.css: -------------------------------------------------------------------------------- 1 | #intro { 2 | background: rgba(0,0,0,.7); 3 | padding: 0; 4 | border: 0; 5 | } 6 | 7 | #intro h1 { 8 | width: 60%; 9 | min-height: 500px; 10 | margin: 5% auto 0; 11 | } 12 | 13 | #intro .attribution { 14 | font-family: Helvetica, sans-serif; 15 | font-weight: bold; 16 | text-align: center; 17 | font-size: 100%; 18 | line-height: .3; 19 | color: rgba(0,0,0,.7); 20 | text-shadow: none; 21 | background: url(img/rainbow-wood.jpg) bottom; 22 | padding:.6em 0 0; 23 | overflow: hidden; 24 | } 25 | 26 | @media only screen and (-webkit-min-device-pixel-ratio:0) { 27 | /* hack to avoid using the Object element in Safari/WebKit, due to WebKit Bug 27190 */ 28 | object[type="image/svg+xml"] { 29 | display: none; 30 | } 31 | 32 | #intro h1 { 33 | background: url(logo.svg) no-repeat center; 34 | background-size:100% auto; 35 | } 36 | } -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2010 Lea Verou 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. -------------------------------------------------------------------------------- /classList.js: -------------------------------------------------------------------------------- 1 | /* 2 | * classList.js: Implements a cross-browser element.classList getter. 3 | * 2010-09-06 4 | * 5 | * By Eli Grey, http://eligrey.com 6 | * Public Domain. 7 | * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK. 8 | */ 9 | 10 | "use strict"; 11 | 12 | if (typeof Element !== "undefined") { 13 | 14 | (function () { 15 | 16 | var 17 | classListProp = "classList" 18 | , protoProp = "prototype" 19 | , elemCtrProto = Element[protoProp] 20 | , objCtr = Object 21 | ; 22 | if (!objCtr.hasOwnProperty.call(elemCtrProto, classListProp)) { 23 | var 24 | strTrim = String[protoProp].trim || function () { 25 | return this.replace(/^\s+|\s+$/g, ""); 26 | } 27 | , arrIndexOf = Array[protoProp].indexOf || function (item) { 28 | for (var i = 0, len = this.length; i < len; i++) { 29 | if (i in this && this[i] === item) { 30 | return i; 31 | } 32 | } 33 | return -1; 34 | } 35 | , checkTokenAndGetIndex = function (classList, token) { 36 | if (token === "") { 37 | throw "SYNTAX_ERR"; 38 | } 39 | if (/\s/.test(token)) { 40 | throw "INVALID_CHARACTER_ERR"; 41 | } 42 | return arrIndexOf.call(classList, token); 43 | } 44 | , ClassList = function (elem) { 45 | var 46 | trimmedClasses = strTrim.call(elem.className) 47 | , classes = trimmedClasses ? trimmedClasses.split(/\s+/) : [] 48 | ; 49 | for (var i = 0, len = classes.length; i < len; i++) { 50 | this.push(classes[i]); 51 | } 52 | this.updateClassName = function () { 53 | elem.className = this.toString(); 54 | }; 55 | } 56 | , classListProto = ClassList[protoProp] = [] 57 | , classListGetter = function () { 58 | return new ClassList(this); 59 | } 60 | ; 61 | classListProto.item = function (i) { 62 | return this[i] || null; 63 | }; 64 | classListProto.contains = function (token) { 65 | token += ""; 66 | return checkTokenAndGetIndex(this, token) !== -1; 67 | }; 68 | classListProto.add = function (token) { 69 | token += ""; 70 | if (checkTokenAndGetIndex(this, token) === -1) { 71 | this.push(token); 72 | this.updateClassName(); 73 | } 74 | }; 75 | classListProto.remove = function (token) { 76 | token += ""; 77 | var index = checkTokenAndGetIndex(this, token); 78 | if (index !== -1) { 79 | this.splice(index, 1); 80 | this.updateClassName(); 81 | } 82 | }; 83 | classListProto.toggle = function (token) { 84 | token += ""; 85 | if (checkTokenAndGetIndex(this, token) === -1) { 86 | this.add(token); 87 | } else { 88 | this.remove(token); 89 | } 90 | }; 91 | classListProto.toString = function () { 92 | return this.join(" "); 93 | }; 94 | 95 | if (objCtr.defineProperty) { 96 | var classListDescriptor = { 97 | get: classListGetter 98 | , enumerable: true 99 | , configurable: true 100 | }; 101 | try { 102 | objCtr.defineProperty(elemCtrProto, classListProp, classListDescriptor); 103 | } catch (ex) { // IE 8 doesn't support enumerable:true 104 | if (ex.number === -0x7FF5EC54) { 105 | classListDescriptor.enumerable = false; 106 | objCtr.defineProperty(elemCtrProto, classListProp, classListDescriptor); 107 | } 108 | } 109 | } else if (objCtr[protoProp].__defineGetter__) { 110 | elemCtrProto.__defineGetter__(classListProp, classListGetter); 111 | } 112 | } 113 | 114 | }()); 115 | 116 | } -------------------------------------------------------------------------------- /slideshow.css: -------------------------------------------------------------------------------- 1 | /** 2 | Basic CSS so that the slideshow script functions as a slideshow 3 | @author Lea Verou 4 | @version 1.0 5 | */ 6 | 7 | body { 8 | counter-reset: slide; 9 | } 10 | 11 | .slide { 12 | position:absolute; 13 | top:0; 14 | right:0; 15 | bottom:0; 16 | left:0; 17 | z-index:1; 18 | 19 | font-size:250%; 20 | line-height:1.6; 21 | 22 | opacity:0; 23 | height:0; 24 | width:0; 25 | overflow:hidden; 26 | 27 | counter-increment: slide; 28 | 29 | -webkit-transition:1s opacity, 1s -webkit-transform; 30 | -moz-transition:1s opacity, 1s -moz-transform; 31 | -o-transition:1s opacity, 1s -o-transform; 32 | transition:1s opacity, 1s transform; 33 | } 34 | 35 | .slide:target { 36 | z-index:100; 37 | opacity:1; 38 | height:auto; 39 | width: auto; 40 | overflow: visible; 41 | } 42 | 43 | /** 44 | Slide numbers 45 | */ 46 | .slide:target::before { 47 | content: counter(slide); 48 | position: absolute; 49 | top: .05in; 50 | right: .5em; 51 | z-index: 1010; 52 | 53 | font-size: .15in; 54 | color: white; 55 | background: rgba(0,0,0,.25); 56 | font-weight: 900; 57 | text-shadow: .05em .05em .1em black; 58 | text-align: center; 59 | padding: .1em .3em 0; 60 | min-width: 1.6em; 61 | -moz-box-sizing: border-box; 62 | -webkit-box-sizing: border-box; 63 | box-sizing: border-box; 64 | 65 | -moz-border-radius: 50%; 66 | -webkit-border-radius: 50%; 67 | border-radius: 50%; 68 | } 69 | 70 | /* If there's nothing selected, show the first */ 71 | .slide:first-child { 72 | z-index:2; 73 | } 74 | 75 | /* Delayed items that are shown incrementally after the slide is */ 76 | .slide .delayed { 77 | opacity: 0; 78 | 79 | -webkit-transition:.7s opacity; 80 | -moz-transition:.7s opacity; 81 | -o-transition:.7s opacity; 82 | transition:.7s opacity; 83 | } 84 | 85 | .slide .delayed.displayed { 86 | opacity: .3; 87 | } 88 | 89 | .slide .delayed.current, 90 | .slide .delayed.displayed.non-dismissable { 91 | opacity: 1; 92 | } 93 | 94 | /** 95 | Show thumbnails 96 | */ 97 | 98 | .show-thumbnails { 99 | overflow-x: hidden; 100 | } 101 | 102 | .show-thumbnails .slide { 103 | width: 1024px; 104 | height: 768px; 105 | -moz-box-sizing: border-box; 106 | -webkit-box-sizing: border-box; 107 | box-sizing: border-box; 108 | 109 | float: left; 110 | overflow: hidden; 111 | position: static; 112 | opacity: 1; 113 | margin:-292px -395px; 114 | cursor: pointer; 115 | 116 | -moz-transform: scale(.2, .2); 117 | -o-transform: scale(.2, .2); 118 | -webkit-transform: scale(.2, .2); 119 | transform: scale(.2, .2); 120 | 121 | -webkit-transition:1s -webkit-transform; 122 | -moz-transition:1s -moz-transform; 123 | -o-transition:1s -o-transform; 124 | transition:1s transform; 125 | } 126 | 127 | .show-thumbnails .slide .delayed { 128 | opacity: 1; 129 | } 130 | 131 | .show-thumbnails .slide:hover, 132 | .show-thumbnails .slide:target { 133 | outline: 20px solid rgba(255, 255, 255, .6); 134 | -moz-outline-radius:5px; 135 | 136 | box-shadow: 5px 5px 10px black; 137 | } 138 | 139 | .show-thumbnails .slide:target { 140 | outline-color: rgba(255, 255, 255, .3); 141 | } 142 | 143 | .show-thumbnails .slide:target:hover { 144 | outline-color: rgba(255, 255, 255, .9); 145 | } 146 | 147 | /* Display titles */ 148 | .show-thumbnails .slide[data-title]:after { 149 | content: attr(data-title); 150 | position: absolute; 151 | left: 0; 152 | right: 0; 153 | bottom: 0; 154 | padding: .1em 0; 155 | background: rgba(0,0,0,.5); 156 | color: white; 157 | font-size: 250%; 158 | text-align: center; 159 | text-shadow: .05em .05em .1em black; 160 | } 161 | 162 | /* Hide all elements in slide by hitting Ctrl + J or Shift + J */ 163 | .hide-elements .slide:target > * { 164 | opacity: 0; 165 | 166 | -moz-transition:.5s; 167 | -webkit-transition:.5s; 168 | -o-transition:.5s; 169 | transition:.5s; 170 | } 171 | 172 | /* Mark slides as incomplete to spot them easier */ 173 | .incomplete.slide::after { 174 | content: 'INCOMPLETE'; 175 | font-weight: bold; 176 | position: absolute; 177 | top: 40%; 178 | left: 30%; 179 | padding: .1em .4em 0; 180 | border: .1em solid; 181 | color: rgba(255, 0, 0, .8); 182 | font-size: 140%; 183 | 184 | -moz-border-radius: .2em; 185 | -webkit-border-radius: .2em; 186 | border-radius: .2em; 187 | 188 | -moz-transform: rotate(30deg); 189 | -o-transform: rotate(30deg); 190 | -webkit-transform: rotate(30deg); 191 | transform: rotate(30deg); 192 | } -------------------------------------------------------------------------------- /sample-slideshow.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CSSS: A brief introduction 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |

15 | 16 | CSSS: CSS-based SlideShow System 17 | 18 |

19 |

By Lea Verou

20 |
21 | 22 |
23 |

What is it?

24 |

A simple framework for building presentations with modern web standards

25 | 30 |
31 | 32 |
33 |

History

34 | 41 |
42 | 43 |
44 |

What about S5?

45 | 52 |
53 | 54 | 67 | 68 |
69 |

Features

70 | 77 |
78 | 79 |
80 |

Drawbacks

81 | 91 |
92 | 93 |
94 |

Thank you!

95 |

Get it or contribute at http://github.com/LeaVerou/CSSS 96 |

Credits:

97 | 102 |
103 | 104 | 105 | 106 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /theme.css: -------------------------------------------------------------------------------- 1 | /** 2 | CSSS basic slideshow theme 3 | 4 | @author Lea Verou 5 | @version 1.0 6 | */ 7 | 8 | * { 9 | padding:0; 10 | margin:0; 11 | font:inherit; 12 | color:inherit; 13 | } 14 | 15 | html { 16 | background: black url(img/rainbow-wood.jpg) bottom center; 17 | background-size: cover; 18 | } 19 | 20 | body { 21 | font-family:Helvetica, Arial, sans-serif; 22 | background:black; 23 | } 24 | 25 | button { 26 | padding:.2em .5em; 27 | } 28 | 29 | a:hover { 30 | text-shadow: 0 0 .5em white, 0 0 1em white; 31 | } 32 | 33 | code, pre, style { 34 | font-family: Consolas, 'Andale Mono', 'Courier New', monospace; 35 | background:rgba(0,0,0,.4); 36 | } 37 | 38 | code { 39 | padding:.2em .2em .1em; 40 | white-space: nowrap; 41 | 42 | -moz-border-radius:.2em; 43 | -webkit-border-radius:.2em; 44 | border-radius:.2em; 45 | 46 | -moz-box-shadow:.05em .05em .3em black; 47 | -webkit-box-shadow:.05em .05em .3em black; 48 | box-shadow:.05em .05em .3em black; 49 | 50 | border: 1px solid rgba(0,0,0,0.5); 51 | background: rgba(0,0,0,0.25); 52 | 53 | -webkit-box-shadow: 0 2px 6px rgba(0,0,0,0.5), inset 0 1px rgba(255,255,255,0.3), inset 0 12px rgba(255,255,255,0.15), inset 0 10px 20px rgba(255,255,255,0.25), inset 0 -15px 30px rgba(0,0,0,0.3); 54 | -moz-box-shadow: 0 2px 6px rgba(0,0,0,0.5), inset 0 1px rgba(255,255,255,0.3), inset 0 12px rgba(255,255,255,0.15), inset 0 10px 20px rgba(255,255,255,0.25), inset 0 -15px 30px rgba(0,0,0,0.3); 55 | box-shadow: 0 2px 6px rgba(0,0,0,0.5), inset 0 1px rgba(255,255,255,0.3), inset 0 12px rgba(255,255,255,0.15), inset 0 10px 20px rgba(255,255,255,0.25), inset 0 -15px 30px rgba(0,0,0,0.3); 56 | } 57 | 58 | pre, style { 59 | padding:.3em .5em; 60 | margin-left: -.1em; 61 | border:2px solid rgba(255, 255, 255, .1); 62 | 63 | -webkit-box-shadow:.1em .1em .5em black inset; 64 | -moz-box-shadow:.1em .1em .5em black inset; 65 | box-shadow:.1em .1em .5em black inset; 66 | } 67 | 68 | strong, b { 69 | font-weight:bold; 70 | } 71 | 72 | pre strong { 73 | text-shadow: 0 0 .6em white; 74 | } 75 | 76 | .slide { 77 | padding:0 2.5% 2%; 78 | background: rgba(0,0,0,.5); 79 | background-clip: padding-box; 80 | -moz-background-clip: padding-box; 81 | text-shadow:.05em .05em .1em rgba(0,0,0,.4); 82 | color: white; 83 | border:30px solid transparent; 84 | } 85 | 86 | .slide:target::before { 87 | background: rgba(255, 255, 255, .6); 88 | color: black; 89 | text-shadow: .03em .03em .1em white; 90 | } 91 | 92 | .slide h2 { 93 | font-family: 'Helvetica Neue', Helvetica, sans-serif; 94 | font-weight: 100; 95 | font-size: 1.2in; 96 | } 97 | 98 | .slide p, 99 | .slide li { 100 | font-weight: bold; 101 | letter-spacing: -.03em; 102 | } 103 | 104 | .slide > ul { 105 | list-style:none; 106 | } 107 | 108 | .slide ol { 109 | margin-left:2em; 110 | } 111 | 112 | .slide > ul ul { 113 | margin-left:2em; 114 | list-style: none; 115 | } 116 | 117 | .slide li li { 118 | font-size:80%; 119 | } 120 | 121 | .slide li { 122 | margin:.2em 0; 123 | } 124 | 125 | .slide > ul > li:before { 126 | content:'\2714'; 127 | color: #a0c12c; 128 | padding-right: .2em; 129 | } 130 | 131 | .slide li li:before { 132 | content: '\279C'; 133 | color: #28bcbc; 134 | padding-right: .2em; 135 | } 136 | 137 | .slide .emphasis { 138 | padding: .4em .5em .3em; 139 | margin: .3em 0; 140 | background: #f80; 141 | background: -webkit-gradient(linear, left top, left bottom, from(#fa0), to(#f80)); 142 | background: -moz-linear-gradient(#fa0, #f80); 143 | color: white; 144 | font-weight: bold; 145 | letter-spacing: -.05em; 146 | line-height: .85; 147 | text-shadow: .05em .05em .1em rgba(0,0,0,.4); 148 | 149 | -moz-border-radius: .3em; 150 | -webkit-border-radius: .3em; 151 | border-radius: .3em; 152 | 153 | -moz-box-shadow:.1em .1em .5em black; 154 | -webkit-box-shadow:.1em .1em .5em black; 155 | box-shadow:.1em .1em .5em black; 156 | } 157 | 158 | .light.slide .emphasis { 159 | -moz-box-shadow:.1em .1em .5em rgba(0,0,0,.4); 160 | -webkit-box-shadow:.1em .1em .5em rgba(0,0,0,.4); 161 | box-shadow:.1em .1em .5em rgba(0,0,0,.4); 162 | } 163 | 164 | .slide .emphasis::before { 165 | content: '\279C'; 166 | color: rgba(255,255,255,.5); 167 | float: left; 168 | width: .75em; 169 | height: 0; 170 | padding: .45em 0 .3em; 171 | margin: -.2em .2em 0 -.25em; 172 | border: .12em solid; 173 | text-align: center; 174 | line-height: 0; 175 | font-size: 120%; 176 | font-family: inherit; 177 | text-shadow: none; 178 | 179 | -moz-border-radius:50%; 180 | -webkit-border-radius:50%; 181 | border-radius:50%; 182 | 183 | -moz-transform: rotate(45deg); 184 | -o-transform: rotate(45deg); 185 | -webkit-transform: rotate(45deg); 186 | transform: rotate(45deg); 187 | } 188 | 189 | .attribution { 190 | background: rgba(0,0,0,.8); 191 | color: white; 192 | display: block; 193 | position: absolute; 194 | left: 0; 195 | right: 0; 196 | bottom: 1em; 197 | padding: .5em 1em; 198 | font-size: 30%; 199 | text-shadow: .05em .05em .1em black; 200 | } 201 | 202 | .attribution a { 203 | text-decoration: none; 204 | } 205 | 206 | .attribution a::after { 207 | content: ' (' attr(href) ')'; 208 | } 209 | 210 | -------------------------------------------------------------------------------- /slideshow.js: -------------------------------------------------------------------------------- 1 | /** 2 | * CSSS javascript code 3 | * @author Lea Verou (http://leaverou.me) 4 | * @version 1.0 5 | */ 6 | 7 | (function(){ 8 | // Cache element, we may need it for slides that don't have titles 9 | var documentTitle = document.getElementsByTagName('title')[0].textContent; 10 | 11 | window.SlideShow = function(container, slide) { 12 | var me = this; 13 | 14 | container = container || document.body; 15 | 16 | // Current slide 17 | this.slide = slide || 0; 18 | 19 | // Current .delayed item in the slide 20 | this.item = 0; 21 | 22 | // Get the slide elements into an array 23 | this.slides = Array.prototype.slice.apply(container.querySelectorAll('.slide')); 24 | 25 | for(var i=0; i<this.slides.length; i++) { 26 | var slide = this.slides[i]; // to speed up references 27 | 28 | // Asign ids to slides that don't have one 29 | if(!slide.id) { 30 | slide.id = 'slide' + (i+1); 31 | } 32 | 33 | // Set data-title attribute to the title of the slide 34 | if(!slide.title) { 35 | // no title attribute, fetch title from heading(s) 36 | var heading = slide.querySelector('hgroup') || slide.querySelector('h1,h2,h3,h4,h5,h6'); 37 | 38 | if(heading && heading.textContent.trim()) { 39 | slide.setAttribute('data-title', heading.textContent); 40 | } 41 | } 42 | else { 43 | // The title attribute is set, use that 44 | slide.setAttribute('data-title', slide.title); 45 | slide.removeAttribute('title'); 46 | } 47 | } 48 | 49 | // If there's already a hash, update current slide number... 50 | this.goto(location.hash.substr(1) || 0); 51 | 52 | // ...and keep doing so every time the hash changes 53 | this.onhashchange = function() { 54 | me.goto(location.hash.substr(1) || 0); 55 | }; 56 | window.addEventListener('hashchange', this.onhashchange, false); 57 | 58 | // Adjust the font-size when the window is resized 59 | window.addEventListener('resize', function() { 60 | me.adjustFontSize(); 61 | }, false); 62 | 63 | // In some browsers DOMContentLoaded is too early, so try again onload 64 | window.addEventListener('load', function() { 65 | me.adjustFontSize(); 66 | }, false); 67 | 68 | /** 69 | Keyboard navigation 70 | Home : First slide 71 | End : Last slide 72 | Up/Right arrow : Next item/slide 73 | Ctrl + Up/Right arrow : Next slide 74 | Down/Left arrow : Previous item/slide 75 | Ctrl + Down/Left arrow : Previous slide 76 | Ctrl+G : Go to slide... 77 | Ctrl+H : Show thumbnails and go to slide 78 | (Shift instead of Ctrl works too) 79 | */ 80 | document.addEventListener('keyup', function(evt) { 81 | if(evt.ctrlKey || evt.shiftKey) { 82 | switch(evt.keyCode) { 83 | case 71: // G 84 | var slide = prompt('Which slide?'); 85 | me.goto(+slide? slide - 1 : slide); 86 | break; 87 | case 72: // H 88 | if(document.body.classList.contains('show-thumbnails')) { 89 | document.body.classList.remove('show-thumbnails'); 90 | } 91 | else { 92 | document.body.classList.add('show-thumbnails'); 93 | 94 | document.body.addEventListener('click', function(evt) { 95 | var slide = evt.target; 96 | 97 | while(slide && !slide.classList.contains('slide')) { 98 | slide = slide.parentNode; 99 | } 100 | 101 | if(slide) { 102 | me.goto(slide.id); 103 | setTimeout(function() { me.adjustFontSize(); }, 1000); // for Opera 104 | } 105 | 106 | document.body.classList.remove('show-thumbnails'); 107 | }, false); 108 | } 109 | break; 110 | case 74: // J 111 | if(document.body.classList.contains('hide-elements')) { 112 | document.body.classList.remove('hide-elements'); 113 | } 114 | else { 115 | document.body.classList.add('hide-elements'); 116 | } 117 | } 118 | } 119 | 120 | if(evt.target === document.body || evt.target === document.body.parentNode) { 121 | if(evt.keyCode >= 35 && evt.keyCode <= 40) { 122 | evt.preventDefault(); 123 | } 124 | 125 | switch(evt.keyCode) { 126 | case 35: // end 127 | me.end(); 128 | break; 129 | case 36: // home 130 | me.start(); 131 | break; 132 | case 37: // <- 133 | case 38: // up arrow 134 | me.previous(evt.ctrlKey || evt.shiftKey); 135 | break; 136 | case 39: // -> 137 | case 40: // down arrow 138 | me.next(evt.ctrlKey || evt.shiftKey); 139 | break; 140 | } 141 | } 142 | }, false); 143 | } 144 | 145 | SlideShow.prototype = { 146 | start: function() { 147 | this.goto(0); 148 | }, 149 | 150 | end: function() { 151 | this.goto(this.slides.length - 1); 152 | }, 153 | 154 | /** 155 | @param hard {Boolean} Whether to advance to the next slide (true) or 156 | just the next step (which could very well be showing a list item) 157 | */ 158 | next: function(hard) { 159 | if(!hard && this.items.length) { 160 | // If there's no current, then just mark the first one as such 161 | if(!this.item) { 162 | this.items[this.item++].classList.add('current'); 163 | } 164 | // Add .current to current item if it exists, otherwise advance to next slide 165 | else if(this.item < this.items.length) { 166 | classes = this.items[this.item - 1].classList; // to speed up lookups 167 | 168 | classes.remove('current'); 169 | classes.add('displayed'); 170 | 171 | this.items[this.item++].classList.add('current'); 172 | } 173 | else { 174 | this.item = 0; 175 | this.next(true); 176 | } 177 | } 178 | else { 179 | this.goto(this.slide + 1); 180 | 181 | this.item = 0; 182 | 183 | // Mark all items as not displayed, if there are any 184 | if(this.items.length) { 185 | for (var i=0; i<this.items.length; i++) { 186 | if(this.items[i].classList) { 187 | this.items[i].classList.remove('displayed'); 188 | this.items[i].classList.remove('current'); 189 | } 190 | } 191 | } 192 | } 193 | }, 194 | 195 | previous: function(hard) { 196 | if(!hard && this.item > 0) { 197 | var classes = this.items[this.item - 1].classList; // to speed up lookups 198 | 199 | classes.remove('current'); 200 | 201 | if(this.item > 1) { 202 | classes = this.items[--this.item - 1].classList; 203 | 204 | classes.remove('displayed'); 205 | classes.add('current'); 206 | } 207 | else { 208 | this.item = 0; 209 | } 210 | } 211 | else { 212 | 213 | this.goto(this.slide - 1); 214 | 215 | this.item = this.items.length; 216 | 217 | // Mark all items as displayed, if there are any 218 | if(this.items.length) { 219 | for (var i=0; i<this.items.length; i++) { 220 | if(this.items[i].classList) { 221 | this.items[i].classList.add('displayed'); 222 | } 223 | } 224 | 225 | // Mark the last one as current 226 | var lastItem = this.items[this.items.length - 1]; 227 | 228 | lastItem.classList.remove('displayed'); 229 | lastItem.classList.add('current'); 230 | } 231 | } 232 | }, 233 | 234 | /** 235 | Go to an aribtary slide 236 | @param which {String|Integer} Which slide (identifier or slide number) 237 | */ 238 | goto: function(which) { 239 | var slide; 240 | 241 | // We have to remove it to prevent multiple calls to goto messing up 242 | // our current item (and there's no point either, so we save on performance) 243 | window.removeEventListener('hashchange', this.onhashchange, false); 244 | 245 | if(which + 0 === which && which in this.slides) { // Argument is a valid slide number 246 | this.slide = which; 247 | 248 | slide = this.slides[this.slide]; 249 | location.hash = '#' + slide.id; 250 | } 251 | else if(which + '' === which) { // Argument is a slide id 252 | slide = document.getElementById(which); 253 | 254 | if(slide) { 255 | this.slide = this.slides.indexOf(slide); 256 | location.hash = '#' + which; 257 | } 258 | } 259 | 260 | if(slide) { // Slide actually changed, perform any other tasks needed 261 | document.title = slide.getAttribute('data-title') || documentTitle; 262 | 263 | this.adjustFontSize(); 264 | 265 | // Update items collection 266 | this.items = this.slides[this.slide].querySelectorAll('.delayed'); 267 | this.item = 0; 268 | } 269 | 270 | // If you attach the listener immediately again then it will catch the event 271 | // We have to do it asynchronously 272 | var me = this; 273 | setTimeout(function() { 274 | window.addEventListener('hashchange', me.onhashchange, false); 275 | }, 1000); 276 | }, 277 | 278 | adjustFontSize: function() { 279 | // Cache long lookup chains, for performance 280 | var bodyStyle = document.body.style, 281 | scrollRoot = document[document.documentElement.scrollHeight? 'documentElement' : 'body'], 282 | innerHeight = window.innerHeight, 283 | innerWidth = window.innerWidth, 284 | slide = this.slides[this.slide]; 285 | 286 | // Clear previous styles 287 | bodyStyle.fontSize = ''; 288 | 289 | if(document.body.classList.contains('show-thumbnails') 290 | || slide.classList.contains('dont-resize')) { 291 | return; 292 | } 293 | 294 | for( 295 | var percent = 100; 296 | (scrollRoot.scrollHeight > innerHeight || scrollRoot.scrollWidth > innerWidth) && percent >= 35; 297 | percent-=5 298 | ) { 299 | bodyStyle.fontSize = percent + '%'; 300 | } 301 | 302 | // Individual slide 303 | 304 | if(slide.clientHeight && slide.clientWidth) { 305 | // Strange FF bug: scrollHeight doesn't work properly with overflow:hidden 306 | slide.style.overflow = 'auto'; 307 | 308 | for( 309 | ; 310 | (slide.scrollHeight > slide.clientHeight || slide.scrollWidth > slide.clientWidth) && percent >= 35; 311 | percent-- 312 | ) { 313 | bodyStyle.fontSize = percent + '%'; 314 | } 315 | 316 | slide.style.overflow = ''; 317 | } 318 | } 319 | }; 320 | 321 | })(); -------------------------------------------------------------------------------- /logo.svg: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> 2 | <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'> 3 | <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" height="211.06px" width="508px" version="1.0" y="0px" x="0px" 4 | xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 508 211.064" enable-background="new 0 0 508 211.064"> 5 | <defs> 6 | <linearGradient id="whiteToLightGray" gradientUnits="userSpaceOnUse" y2=".00048828" y1="152" x2="101.57" x1="101.57"> 7 | <stop stop-color="#B3B3B3" offset="0"/> 8 | <stop stop-color="#fff" offset="1"/> 9 | </linearGradient> 10 | </defs> 11 | <g fill="#fff" fill-opacity=".35"> 12 | <path d="m225.36 89.787c-.977-.891-2.063-1.498-3.255-1.855-1.371-.414-3.016-.677-4.859-.783l-29.482-.002c-3.704-.122-7.117-.693-10.135-1.7-2.925-.976-5.485-2.104-7.608-3.354-2.139-1.25-4.291-2.893-6.387-4.875l-.141-.141c-5.963-6.32-9.343-13.285-10.05-20.704-.169-.797-.392-2.04-.324-4.802.055-2.419-.115-5.068-.115-7.868v-7.703h-76v79h151v-19.168c0-2.521-.88-4.441-2.64-6.045z"/> 13 | <path d="m357 43.702v-7.702h-77v18.254c0 2.249 1.146 3.908 2.535 5.071 2.109 1.839 4.766 2.709 8.097 2.709l29.695.002c3.726.13 7.133.743 10.108 1.819 2.809 1.023 5.287 2.131 7.364 3.295 2.197 1.234 4.39 2.941 6.515 5.074 2.881 3.02 5.108 6.176 6.67 9.438 1.536 3.198 2.401 6.52 3.021 9.869.104.54-.005 1.5-.005 5.721v8.988c0 2.832.195 5.927.133 9.229l1.337-.284 75.53.284v-19.638c0-2.521-.738-4.441-2.497-6.045-.978-.892-1.991-1.498-3.181-1.855-1.371-.414-2.979-.677-4.822-.783l-29.464-.002c-3.705-.122-7.109-.693-10.127-1.7-2.926-.976-5.483-2.104-7.605-3.355-2.133-1.247-4.283-2.89-6.382-4.874l-.142-.141c-5.962-6.32-9.341-13.284-10.049-20.705-.168-.795-.037-2.035.031-4.801.06-2.433.24-5.083.24-7.869z"/> 14 | <path d="m327.18 89.787c-.977-.891-2.151-1.498-3.343-1.855-1.371-.414-3.059-.677-4.903-.783l-29.505-.002c-3.705-.122-7.13-.693-10.147-1.7-2.92-.974-5.486-2.103-7.611-3.354-2.135-1.248-4.291-2.891-6.39-4.875l-.144-.141c-5.964-6.322-9.346-13.287-10.051-20.709-.168-.798-.214-2.045-.146-4.797.054-2.391.06-5.04.06-7.868v-7.703h-76v18.254c0 2.248.823 3.908 2.213 5.072 2.108 1.838 4.603 2.708 7.935 2.708l29.614.002c3.726.131 7.092.743 10.068 1.819 2.809 1.023 5.268 2.131 7.344 3.295 2.2 1.236 4.383 2.943 6.505 5.076 2.881 3.019 5.104 6.176 6.664 9.436 1.535 3.199 2.72 6.521 3.338 9.871.105.529.319 1.493.319 5.719v8.988c0 2.833-.127 5.927-.192 9.229l1.5-.284 75.69.28v-19.638c0-2.52-1.06-4.44-2.82-6.045z"/> 15 | <path d="m52 36h-18.705c-1.932 1-2.648 1.326-2.766 1.443-.537.541-1.529 2.295-1.529 6.407v12.449c0 4.554-.539 8.152-1.836 11-1.402 3.049-3.589 5.719-6.622 7.985 2.413 1.558 4.144 3.285 5.371 5.212 2.04 3.192 3.087 7.336 3.087 12.664v13.631c0 2.014.393 4.688 1.832 6l.127.076c.294.287 1.311.809 4.179 1.656l2.432.47h14.43v-79z"/> 16 | <path d="m482.14 69.525c-2.12-3.457-3.14-7.908-3.14-13.226v-12.45c0-4.4-.898-5.817-1.07-6.011-.34-.383-1.223-.838-3.115-1.838h-92.82v18.254c0 2.248.971 3.908 2.359 5.072 2.109 1.838 4.677 2.708 8.009 2.708l29.649.002c3.726.13 7.111.743 10.087 1.819 2.81 1.023 5.277 2.131 7.354 3.295 2.198 1.236 4.385 2.942 6.51 5.074 2.882 3.021 5.106 6.178 6.667 9.438 1.537 3.203 2.577 6.525 3.194 9.871.113.582.171 1.704.171 5.719v8.988c0 2.816.071 5.76.008 8.76h14.494l2.435-.479c2.861-.84 3.904-1.5 4.2-1.795 1.439-1.409 1.863-3.984 1.863-6v-13.505c0-5.96 1.18-10.373 3.697-13.493 1.299-1.608 2.947-3.067 4.98-4.398-2.42-1.762-4.25-3.683-5.54-5.799z"/> 17 | </g> 18 | <g fill="url(#whiteToLightGray)"> 19 | <path d="m76.467 22.059c2.149-2.83 5.506-4.059 9.583-4.059h31.407c3.96 0 7.018 1.463 9.167 4.286 2.26 2.823 3.39 5.714 3.39 10.714h18.113c0-10-3.043-17.038-9.125-23.353-5.96-6.433-13.34-9.647-22.12-9.647h-30.251c-8.789 0-16.406 2.979-22.488 9.413-5.972 6.315-9.141 13.867-9.141 23.118v86.153c0 9.03 3.169 17.058 9.141 23.601 6.082 6.33 13.699 9.72 22.488 9.72h30.249c8.781 0 16.157-3.364 22.13-9.633 6.082-6.37 9.125-14.251 9.125-23.391l-18.113-.232c0 2.259-.282 4.18-.848 5.811-.564 1.639-1.418 2.97-2.548 4.437-2.149 2.823-5.207 4.009-9.167 4.009h-31.41c-4.077 0-7.434-1.206-9.583-4.031-2.148-2.823-3.467-6.18-3.467-10.471v-85.959c0-4.518 1.319-7.896 3.467-10.492z"/> 20 | <path d="m178.38 22.105c2.135-2.805 5.184-4.105 9.123-4.105h13.678c3.939 0 8.445-.152 13.514-.27 4.167 0 7.824 1.66 10.972 4.586 3.044 2.597 5.014 5.684 5.917 10.684h17.9c-.34-10-3.775-17.175-10.305-23.436-6.65-6.377-14.48-9.564-23.49-9.564h-27.708c-8.899 0-16.229 2.979-22.084 9.413-5.971 6.088-8.9 13.64-8.9 23.118v11.171c0 2.823-.08 5.476-.136 7.954-.062 2.486-.061 3.836.057 4.064.564 6.77 3.596 13.092 9.126 18.953 1.915 1.812 3.831 3.279 5.75 4.402 1.916 1.129 4.227 2.323 6.933 3.226 2.707.902 5.755 1.698 9.136 1.698h29.457c2.143 0 4.057.244 5.751.755 1.694.509 3.033 1.296 4.39 2.534 2.479 2.261 3.535 5.053 3.535 8.543v22.516c0 4.291-.891 7.722-3.032 10.539-2.142 2.823-5.058 4.113-9.122 4.113h-13.54c-3.954 0-8.464.068-13.54-.05-4.4 0-8.189-1.187-11.344-4.01-2.935-2.597-4.855-5.94-5.758-9.94h-18.617c.447 9 3.947 16.955 10.477 23.27 6.756 6.434 14.808 9.73 24.16 9.73h27.536c8.788 0 16.227-3.406 22.308-9.735 5.745-6.22 8.46-14.143 8.46-23.523.111-4.524.012-8.769.012-12.501v-8.988c0-2.825.099-4.52-.012-5.084-.564-3.059-1.471-6.053-2.882-8.994-1.405-2.935-3.365-5.765-5.954-8.479-1.914-1.923-3.81-3.416-5.725-4.492-1.914-1.073-4.185-1.861-6.829-2.824-2.645-.957-5.645-1.379-9.02-1.379h-29.554c-4.167 0-7.608-1.403-10.308-3.757-2.16-1.793-3.73-4.546-3.73-7.797v-21.853c0-4.257 1.13-7.686 3.38-10.488z"/> 21 | <path d="m280.2 22.105c2.135-2.805 5.006-4.105 8.945-4.105h13.679c3.939 0 8.444-.152 13.514-.27 4.166 0 7.823 1.66 10.972 4.586 3.044 2.597 5.014 5.684 5.915 10.684h17.9c-.336-10-3.773-17.175-10.304-23.436-6.64-6.377-14.47-9.564-23.48-9.564h-27.707c-8.9 0-16.053 2.979-21.908 9.413-5.97 6.088-8.724 13.64-8.724 23.118v11.171c0 2.823-.256 5.476-.312 7.954-.062 2.486-.151 3.836-.032 4.064.564 6.77 3.552 13.092 9.082 18.953 1.916 1.812 3.808 3.279 5.729 4.402 1.916 1.129 4.215 2.323 6.922 3.226 2.706.902 5.744 1.698 9.125 1.698h29.458c2.141 0 4.057.244 5.751.755 1.694.509 3.209 1.296 4.565 2.534 2.479 2.261 3.712 5.053 3.712 8.543v22.516c0 4.291-1.068 7.722-3.209 10.539-2.144 2.823-5.233 4.113-9.297 4.113h-13.541c-3.953 0-8.464.068-13.542-.05-4.399 0-8.188-1.187-11.343-4.01-2.935-2.597-4.855-5.94-5.758-9.94h-18.617c.449 9 3.948 16.955 10.477 23.27 6.757 6.434 14.808 9.73 24.161 9.73h27.536c8.787 0 16.227-3.406 22.308-9.735 5.744-6.22 8.64-14.143 8.64-23.523.109-4.524.186-8.769.186-12.501v-8.988c0-2.825-.076-4.52-.186-5.084-.566-3.059-1.562-6.053-2.975-8.994-1.405-2.935-3.407-5.765-5.996-8.479-1.916-1.923-3.833-3.416-5.747-4.492-1.915-1.073-4.197-1.861-6.841-2.824-2.66-.957-5.67-1.379-9.05-1.379h-29.554c-4.166 0-7.431-1.403-10.13-3.757-2.14-1.793-3.54-4.546-3.54-7.797v-21.853c0-4.257.95-7.686 3.2-10.488z"/> 22 | <path d="m449.48 83.174c-1.405-2.935-3.403-5.765-5.991-8.479-1.916-1.923-3.831-3.416-5.745-4.492-1.914-1.073-4.194-1.861-6.839-2.824-2.646-.957-5.654-1.379-9.03-1.379h-29.552c-4.167 0-7.756-1.403-10.455-3.757-2.14-1.793-2.86-4.546-3.86-7.797v-21.853c0-4.257 1.273-7.686 3.525-10.487 2.135-2.805 5.33-4.105 9.27-4.105h13.679c3.939 0 8.444-.152 13.514-.27 4.167 0 7.824 1.66 10.971 4.586 3.045 2.597 5.016 5.684 5.918 10.684h17.898c-.336-10-3.773-17.175-10.303-23.436-6.64-6.378-14.47-9.565-23.48-9.565h-27.708c-8.899 0-16.377 2.979-22.229 9.413-5.97 6.088-9.05 13.64-9.05 23.118v11.171c0 2.823.066 5.476.012 7.954-.062 2.486.013 3.836.129 4.064.566 6.77 3.634 13.092 9.163 18.953 1.916 1.812 3.849 3.279 5.77 4.402 1.914 1.129 4.234 2.323 6.942 3.226 2.706.902 5.764 1.698 9.146 1.698h29.457c2.142 0 4.058.244 5.751.755 1.694.509 3.385 1.296 4.742 2.534 2.479 2.261 3.889 5.053 3.889 8.543v22.516c0 4.291-1.244 7.722-3.386 10.539-2.142 2.823-5.411 4.113-9.474 4.113h-13.54c-3.953 0-8.464.068-13.54-.05-4.401 0-8.189-1.187-11.344-4.01-2.935-2.597-4.855-5.94-5.759-9.94h-18.616c.448 9 3.946 16.955 10.476 23.27 6.757 6.434 14.808 9.73 24.161 9.73h27.536c8.787 0 16.227-3.406 22.308-9.735 5.745-6.22 8.815-14.143 8.815-23.523.109-4.524.363-8.769.363-12.501v-8.988c0-2.825-.254-4.52-.363-5.084-.57-3.059-1.75-6.053-3.16-8.994z"/> 23 | <path d="m17.556 28.389c-2.577 2.042-4.483 4.801-5.559 8.274-.604 2.007-.997 3.923-.997 5.749v14.399c0 5.087-1.185 8.864-3.726 11.335-1.434 1.434-3.798 2.742-7.274 3.924v6.5c3.081.861 5.357 2.023 7.006 3.492 2.719 2.401 3.994 5.857 3.994 10.37v16.817c0 5.587 2.007 9.841 5.85 12.761 3.841 2.918 8.277 4.45 13.389 4.593l3.761.11v-8.597c-2-.787-4.294-1.699-5.36-2.736-1.924-1.753-2.64-4.615-2.64-8.586v-13.565c0-4.613-1.098-8.227-2.767-10.839-1.661-2.608-4.994-4.899-9.83-6.868 5.338-2.468 9.038-5.688 10.865-9.658 1.076-2.363 1.732-5.543 1.732-9.551v-12.449c0-4.114.577-6.994 2.213-8.64 1.067-1.073 2.787-1.931 5.787-2.577v-8.595c-3 .036-6.295.25-8.225.646-3.178.608-5.864 1.843-8.219 3.705z"/> 24 | <path d="m500.4 68.094c-2.328-2.399-3.404-6.16-3.404-11.282v-14.4c0-2.042-.453-4.424-1.389-7.146s-2.599-5.015-5.002-6.878c-2.406-1.862-5.166-3.098-8.359-3.706-1.939-.395-4.25-.608-8.25-.645v8.595c3 .646 5.063 1.682 6.335 3.114 1.271 1.431 1.665 4.131 1.665 8.102v12.45c0 4.686 1.094 8.487 2.873 11.403 1.779 2.915 5.128 5.517 9.837 7.806-4.315 1.826-7.613 3.962-9.591 6.412-1.98 2.452-3.12 6.218-3.12 11.296v13.576c0 3.898-.776 6.744-2.604 8.533-1.075 1.07-2.396 2.002-5.396 2.789v8.597l3.785-.106c5.312-.144 9.821-1.711 13.59-4.701 3.772-2.992 5.625-7.209 5.625-12.653v-16.818c0-4.584 1.326-8.094 4.156-10.531 1.576-1.36 3.844-2.469 6.844-3.33v-6.5c-3-1.219-6.16-2.544-7.6-3.977z"/> 25 | </g> 26 | <g fill="#fff"> 27 | <path d="m27.383 194.14c-.667 1.454-1.527 2.7-2.58 3.74-1.054 1.04-2.3 1.854-3.74 2.439-1.44.587-3.067.88-4.88.88-1.894 0-3.634-.366-5.22-1.1-1.587-.733-2.947-1.746-4.08-3.04-1.134-1.293-2.02-2.84-2.66-4.64-.64-1.801-.96-3.767-.96-5.9 0-1.733.246-3.5.74-5.3.493-1.8 1.273-3.434 2.34-4.9 1.066-1.466 2.453-2.666 4.16-3.6 1.706-.934 3.773-1.4 6.2-1.4 1.893 0 3.546.314 4.96.94 1.413.627 2.593 1.413 3.54 2.359.946.947 1.66 1.954 2.14 3.021s.733 2.04.76 2.92h-.8c-.08-1.04-.387-2.06-.92-3.06-.534-1-1.26-1.9-2.18-2.7s-2.014-1.446-3.28-1.94c-1.267-.493-2.674-.74-4.22-.74-2.347 0-4.327.475-5.94 1.421-1.614.946-2.914 2.133-3.9 3.56-.987 1.427-1.7 2.979-2.14 4.66-.44 1.68-.66 3.267-.66 4.76 0 1.813.267 3.56.8 5.24s1.32 3.16 2.36 4.439c1.04 1.28 2.313 2.308 3.82 3.08 1.506.774 3.22 1.16 5.14 1.16 1.707 0 3.24-.28 4.6-.84s2.533-1.333 3.52-2.32c.986-.986 1.786-2.16 2.4-3.52.613-1.36 1.026-2.826 1.24-4.4h.8c-.240 1.73-.694 3.33-1.36 4.78z"/> 28 | <path d="m50.083 176.3c-.494-1-1.147-1.813-1.96-2.44-.813-.626-1.78-1.073-2.9-1.34s-2.32-.4-3.6-.4c-.987 0-2.014.101-3.08.301-1.067.199-2.034.554-2.9 1.06-.867.507-1.58 1.18-2.14 2.021-.56.84-.84 1.899-.84 3.18s.286 2.307.86 3.08c.573.773 1.32 1.399 2.24 1.88.92.479 1.966.854 3.14 1.12 1.173.267 2.373.547 3.6.84 1.333.347 2.593.68 3.78 1 1.186.32 2.22.747 3.1 1.28s1.58 1.239 2.1 2.12c.52.88.78 2.066.78 3.56 0 1.36-.294 2.52-.88 3.48-.587.96-1.36 1.753-2.32 2.38s-2.04 1.08-3.24 1.359c-1.2.28-2.414.42-3.64.42-1.627 0-3.127-.187-4.5-.56-1.374-.373-2.56-.967-3.56-1.78-1-.812-1.774-1.859-2.32-3.14-.547-1.28-.807-2.826-.78-4.641h.8c0 1.707.253 3.154.76 4.341.506 1.187 1.22 2.153 2.14 2.899.92.747 2.013 1.287 3.28 1.62 1.267.334 2.66.5 4.18.5 1.12 0 2.233-.126 3.34-.38 1.106-.253 2.1-.66 2.98-1.22.88-.561 1.593-1.28 2.14-2.16.546-.88.82-1.934.82-3.16 0-1.44-.313-2.58-.94-3.42s-1.427-1.506-2.4-2c-.974-.493-2.054-.866-3.24-1.12-1.187-.253-2.327-.513-3.42-.78-1.146-.266-2.293-.546-3.44-.84-1.147-.293-2.18-.7-3.1-1.22-.92-.521-1.66-1.213-2.22-2.08-.56-.866-.84-1.993-.84-3.38 0-1.413.293-2.593.88-3.54.586-.946 1.346-1.7 2.28-2.26.933-.561 1.98-.96 3.14-1.2s2.313-.36 3.46-.36c1.413 0 2.713.154 3.9.46 1.187.308 2.227.8 3.12 1.48s1.606 1.573 2.14 2.68c.533 1.107.84 2.46.92 4.061h-.8c-.054-1.47-.327-2.7-.820-3.7z"/> 29 | <path d="m74.522 176.3c-.494-1-1.147-1.813-1.96-2.44-.813-.626-1.78-1.073-2.9-1.34s-2.32-.4-3.6-.4c-.987 0-2.014.101-3.08.301-1.067.199-2.034.554-2.9 1.06-.867.507-1.58 1.18-2.14 2.021-.56.84-.84 1.899-.84 3.18s.286 2.307.86 3.08c.573.773 1.32 1.399 2.24 1.88.92.479 1.966.854 3.14 1.12 1.173.267 2.373.547 3.6.84 1.333.347 2.593.68 3.78 1 1.186.32 2.22.747 3.1 1.28s1.58 1.239 2.1 2.12c.52.88.78 2.066.78 3.56 0 1.36-.294 2.52-.88 3.48-.587.96-1.36 1.753-2.32 2.38s-2.04 1.08-3.24 1.359c-1.2.28-2.414.42-3.64.42-1.627 0-3.127-.187-4.5-.56-1.374-.373-2.56-.967-3.56-1.78-1-.812-1.774-1.859-2.32-3.14-.547-1.28-.807-2.826-.78-4.641h.8c0 1.707.253 3.154.76 4.341.506 1.187 1.22 2.153 2.14 2.899.92.747 2.013 1.287 3.28 1.62 1.267.334 2.66.5 4.18.5 1.12 0 2.233-.126 3.34-.38 1.106-.253 2.1-.66 2.98-1.22.88-.561 1.593-1.28 2.14-2.16.546-.88.82-1.934.82-3.16 0-1.44-.313-2.58-.94-3.42s-1.427-1.506-2.4-2c-.974-.493-2.054-.866-3.24-1.12-1.187-.253-2.327-.513-3.42-.78-1.146-.266-2.293-.546-3.44-.84-1.147-.293-2.18-.7-3.1-1.22-.92-.521-1.66-1.213-2.22-2.08-.56-.866-.84-1.993-.84-3.38 0-1.413.293-2.593.88-3.54.586-.946 1.346-1.7 2.28-2.26.933-.561 1.98-.96 3.14-1.2s2.313-.36 3.46-.36c1.413 0 2.713.154 3.9.46 1.187.308 2.227.8 3.12 1.48s1.606 1.573 2.14 2.68c.533 1.107.84 2.46.92 4.061h-.8c-.053-1.47-.326-2.7-.820-3.7z"/> 30 | <path d="m88.702 189.44v.8h-7v-.8h7z"/> 31 | <path d="m94.942 185.76c.48-1.866 1.426-3.373 2.84-4.521 1.413-1.146 3.213-1.72 5.4-1.72 1.413 0 2.667.294 3.76.88 1.093.587 2.006 1.374 2.74 2.36s1.293 2.134 1.68 3.439c.386 1.308.58 2.681.58 4.12 0 1.547-.2 2.974-.6 4.28s-.98 2.434-1.74 3.38c-.76.947-1.68 1.687-2.76 2.22s-2.3.801-3.66.801c-2.107 0-3.874-.573-5.3-1.721-1.427-1.146-2.407-2.64-2.94-4.479h-.08v5.76h-.8v-28.56h.8v13.76h.082zm.480 8.36c.373 1.2.913 2.254 1.62 3.16.706.907 1.58 1.627 2.62 2.16 1.04.534 2.213.8 3.52.8 1.333 0 2.5-.266 3.5-.8 1-.533 1.827-1.26 2.48-2.18s1.146-1.98 1.48-3.181c.333-1.199.5-2.453.5-3.76 0-1.2-.153-2.393-.46-3.58-.307-1.186-.78-2.253-1.42-3.199s-1.46-1.721-2.46-2.32c-1-.601-2.207-.9-3.62-.9-2.507 0-4.52.86-6.04 2.58s-2.28 4.194-2.28 7.42c.002 1.33.188 2.6.562 3.8z"/> 32 | <path d="m116.1 183.66c.347-.84.847-1.565 1.5-2.18.653-.613 1.453-1.093 2.4-1.439.946-.347 2.06-.521 3.34-.521.906 0 1.766.094 2.58.28.813.187 1.526.514 2.14.979.613.467 1.106 1.074 1.48 1.82.373.747.573 1.68.6 2.8v13.08c0 .4.08.693.24.88.16.188.373.313.64.38.266.067.553.094.86.08.306-.013.593-.033.86-.06v.8h-1.2c-.587 0-1.1-.14-1.54-.42s-.66-.807-.66-1.58v-2.68h-.08c-.214.667-.554 1.307-1.02 1.92-.467.613-1.054 1.16-1.76 1.64-.707.48-1.514.86-2.42 1.14-.907.28-1.894.421-2.96.421-2.08 0-3.747-.46-5-1.381-1.253-.92-1.88-2.3-1.88-4.14 0-1.28.207-2.307.62-3.08s.953-1.38 1.62-1.82c.666-.439 1.426-.746 2.28-.92.853-.173 1.707-.286 2.56-.34 1.413-.08 2.626-.153 3.64-.22 1.013-.066 1.846-.2 2.5-.4.653-.199 1.133-.506 1.44-.92.306-.413.46-1.006.46-1.779 0-.613-.054-1.254-.16-1.921-.107-.666-.367-1.279-.78-1.84-.414-.56-1.02-1.02-1.82-1.38-.8-.359-1.88-.54-3.24-.54-2.16 0-3.84.527-5.04 1.58-1.2 1.054-1.867 2.54-2 4.46h-.8c.05-.96.25-1.86.60-2.7zm13.16 4.82c-.267.374-.68.66-1.24.86s-1.2.354-1.92.46c-.72.106-1.5.174-2.34.2s-1.66.066-2.46.119c-.8.054-1.58.154-2.34.301-.76.146-1.434.413-2.02.8-.587.387-1.054.92-1.4 1.6-.347.681-.52 1.567-.52 2.66 0 .587.1 1.167.3 1.74s.54 1.08 1.02 1.52c.48.44 1.1.801 1.86 1.08.76.28 1.7.42 2.82.42 1.333 0 2.52-.226 3.56-.68 1.04-.453 1.913-1.046 2.62-1.78.707-.732 1.24-1.58 1.6-2.54s.54-1.946.54-2.96v-3.8h-.08z"/> 33 | <path d="m147.7 183.44c-.32-.72-.774-1.313-1.36-1.78-.586-.466-1.287-.806-2.1-1.02-.814-.213-1.714-.32-2.7-.32-1.44 0-2.574.194-3.4.58-.827.387-1.44.827-1.84 1.32s-.654.979-.76 1.46c-.107.479-.16.813-.16 1 0 1.014.207 1.794.62 2.34.413.547.966.967 1.66 1.26.72.294 1.5.547 2.34.761.84.213 1.82.467 2.94.76.8.214 1.593.434 2.38.66.786.227 1.493.54 2.12.939.626.4 1.133.907 1.52 1.521.386.613.58 1.413.58 2.399 0 1.04-.22 1.92-.66 2.641-.44.72-1.014 1.307-1.72 1.76-.707.453-1.507.78-2.4.979-.894.2-1.78.301-2.66.301-2.747 0-4.82-.601-6.22-1.801-1.4-1.199-2.1-3.093-2.1-5.68h.8c0 2.32.646 4.021 1.94 5.1 1.293 1.08 3.153 1.62 5.58 1.62.746 0 1.513-.086 2.3-.26.787-.173 1.5-.453 2.14-.84s1.167-.887 1.58-1.5c.413-.613.62-1.36.62-2.24 0-.906-.207-1.64-.62-2.2-.414-.56-.947-1.02-1.6-1.38-.654-.359-1.407-.646-2.26-.859-.854-.214-1.72-.427-2.6-.641-.987-.24-1.854-.466-2.6-.68-.747-.213-1.414-.453-2-.72-.854-.373-1.48-.894-1.88-1.561-.4-.666-.6-1.56-.6-2.68 0-.561.12-1.146.36-1.76.24-.613.64-1.174 1.2-1.681.56-.506 1.28-.92 2.16-1.239.88-.32 1.96-.48 3.24-.48 2.293 0 4.106.521 5.44 1.56 1.333 1.04 2 2.707 2 5h-.8c0-1.04-.16-1.92-.48-2.64z"/> 34 | <path d="m153.4 194.3c.307 1.187.78 2.22 1.42 3.1s1.466 1.574 2.48 2.08c1.013.507 2.253.76 3.72.76 2.16 0 3.953-.566 5.38-1.699 1.426-1.134 2.313-2.834 2.66-5.101h.8c-.293 2.4-1.24 4.26-2.84 5.58s-3.574 1.98-5.92 1.98c-1.6.025-2.967-.228-4.1-.761-1.134-.533-2.06-1.286-2.78-2.26-.72-.973-1.254-2.12-1.6-3.439-.347-1.32-.52-2.74-.52-4.261 0-1.706.253-3.226.76-4.56.506-1.333 1.173-2.46 2-3.38s1.787-1.62 2.88-2.101c1.093-.479 2.213-.72 3.36-.72 1.6 0 2.98.307 4.14.92 1.16.614 2.106 1.427 2.84 2.44.733 1.014 1.266 2.174 1.6 3.479.333 1.307.473 2.667.42 4.08h-17.2c.03 1.39.19 2.67.50 3.86zm15.38-8.24c-.347-1.133-.86-2.126-1.54-2.98-.68-.853-1.527-1.525-2.54-2.02-1.014-.493-2.187-.74-3.52-.74-1.12 0-2.167.214-3.14.641-.974.427-1.827 1.047-2.56 1.859-.733.814-1.327 1.794-1.78 2.94-.454 1.146-.72 2.439-.8 3.88h16.4c0-1.25-.17-2.45-.52-3.58z"/> 35 | <path d="m190.1 172v28.56h-.8v-5.76h-.08c-.534 1.84-1.514 3.334-2.94 4.479-1.427 1.147-3.194 1.721-5.3 1.721-1.36 0-2.58-.268-3.66-.801s-2-1.272-2.76-2.22c-.76-.946-1.34-2.073-1.74-3.38s-.6-2.733-.6-4.28c0-1.439.193-2.812.58-4.12.386-1.306.946-2.453 1.68-3.439s1.646-1.773 2.74-2.36c1.093-.586 2.346-.88 3.76-.88 2.187 0 3.986.574 5.4 1.72 1.414 1.147 2.36 2.654 2.84 4.521h.08v-13.76h.80zm-3.08 10.9c-1.52-1.72-3.534-2.58-6.04-2.58-1.387 0-2.587.3-3.6.9-1.014.6-1.84 1.374-2.48 2.32s-1.114 2.014-1.42 3.199c-.307 1.188-.46 2.38-.46 3.58 0 1.307.167 2.561.5 3.76.333 1.2.826 2.261 1.48 3.181.653.92 1.48 1.646 2.48 2.18s2.167.8 3.5.8 2.513-.266 3.54-.8c1.026-.533 1.893-1.253 2.6-2.16.706-.906 1.246-1.96 1.62-3.16.373-1.199.56-2.466.56-3.8 0-3.23-.76-5.7-2.28-7.42z"/> 36 | <path d="m224.12 176.3c-.494-1-1.147-1.813-1.96-2.44-.813-.626-1.78-1.073-2.9-1.34s-2.32-.4-3.6-.4c-.987 0-2.014.101-3.08.301-1.067.199-2.034.554-2.9 1.06-.867.507-1.58 1.18-2.14 2.021-.56.84-.84 1.899-.84 3.18s.286 2.307.86 3.08c.573.773 1.32 1.399 2.24 1.88.92.479 1.966.854 3.14 1.12 1.173.267 2.373.547 3.6.84 1.333.347 2.593.68 3.78 1 1.186.32 2.22.747 3.1 1.28s1.58 1.239 2.1 2.12c.52.88.78 2.066.78 3.56 0 1.36-.294 2.52-.88 3.48-.587.96-1.36 1.753-2.32 2.38s-2.04 1.08-3.24 1.359c-1.2.28-2.414.42-3.64.42-1.627 0-3.127-.187-4.5-.56-1.374-.373-2.56-.967-3.56-1.78-1-.812-1.774-1.859-2.32-3.14-.547-1.28-.807-2.826-.78-4.641h.8c0 1.707.253 3.154.76 4.341.506 1.187 1.22 2.153 2.14 2.899.92.747 2.013 1.287 3.28 1.62 1.267.334 2.66.5 4.18.5 1.12 0 2.233-.126 3.34-.38 1.106-.253 2.1-.66 2.98-1.22.88-.561 1.593-1.28 2.14-2.16.546-.88.82-1.934.82-3.16 0-1.44-.313-2.58-.94-3.42s-1.427-1.506-2.4-2c-.974-.493-2.054-.866-3.24-1.12-1.187-.253-2.327-.513-3.42-.78-1.146-.266-2.293-.546-3.44-.84-1.147-.293-2.18-.7-3.1-1.22-.92-.521-1.66-1.213-2.22-2.08-.56-.866-.84-1.993-.84-3.38 0-1.413.293-2.593.88-3.54.586-.946 1.346-1.7 2.28-2.26.933-.561 1.98-.96 3.14-1.2s2.313-.36 3.46-.36c1.413 0 2.713.154 3.9.46 1.187.308 2.227.8 3.12 1.48s1.606 1.573 2.14 2.68c.533 1.107.84 2.46.92 4.061h-.8c-.05-1.47-.33-2.7-.82-3.7z"/> 37 | <path d="m231.14 172v28.56h-.8v-28.56h.80z"/> 38 | <path d="m235.54 176.04v-4.04h.8v4.04h-.80zm0 24.52v-20.56h.8v20.56h-.80z"/> 39 | <path d="m257.54 172v28.56h-.8v-5.76h-.08c-.534 1.84-1.514 3.334-2.94 4.479-1.427 1.147-3.194 1.721-5.3 1.721-1.36 0-2.58-.268-3.66-.801s-2-1.272-2.76-2.22c-.76-.946-1.34-2.073-1.74-3.38s-.6-2.733-.6-4.28c0-1.439.193-2.812.58-4.12.386-1.306.946-2.453 1.68-3.439s1.646-1.773 2.74-2.36c1.093-.586 2.346-.88 3.76-.88 2.187 0 3.986.574 5.4 1.72 1.414 1.147 2.36 2.654 2.84 4.521h.08v-13.76h.80zm-3.08 10.9c-1.52-1.72-3.534-2.58-6.04-2.58-1.387 0-2.587.3-3.6.9-1.014.6-1.84 1.374-2.48 2.32s-1.114 2.014-1.42 3.199c-.307 1.188-.46 2.38-.46 3.58 0 1.307.167 2.561.5 3.76.333 1.2.826 2.261 1.48 3.181.653.92 1.48 1.646 2.48 2.18s2.167.8 3.5.8 2.513-.266 3.54-.8c1.026-.533 1.893-1.253 2.6-2.16.706-.906 1.247-1.96 1.62-3.16.373-1.199.561-2.466.561-3.8 0-3.23-.76-5.7-2.28-7.42z"/> 40 | <path d="m262.32 194.3c.307 1.187.78 2.22 1.42 3.1.641.88 1.467 1.574 2.48 2.08 1.013.507 2.253.76 3.72.76 2.16 0 3.953-.566 5.38-1.699 1.427-1.134 2.313-2.834 2.66-5.101h.8c-.294 2.4-1.24 4.26-2.84 5.58s-3.573 1.98-5.92 1.98c-1.6.025-2.967-.228-4.1-.761-1.134-.533-2.061-1.286-2.78-2.26-.72-.973-1.254-2.12-1.601-3.439-.347-1.32-.52-2.74-.52-4.261 0-1.706.253-3.226.76-4.56.507-1.333 1.174-2.46 2-3.38s1.786-1.62 2.88-2.101c1.094-.479 2.214-.72 3.36-.72 1.6 0 2.98.307 4.14.92 1.16.614 2.106 1.427 2.841 2.44.732 1.014 1.266 2.174 1.6 3.479.333 1.307.473 2.667.42 4.08h-17.2c.03 1.39.19 2.67.50 3.86zm15.38-8.24c-.347-1.133-.859-2.126-1.54-2.98-.68-.853-1.526-1.525-2.54-2.02-1.014-.493-2.187-.74-3.52-.74-1.12 0-2.167.214-3.14.641-.975.427-1.827 1.047-2.561 1.859-.733.814-1.327 1.794-1.78 2.94s-.72 2.439-.8 3.88h16.4c0-1.25-.17-2.45-.52-3.58z"/> 41 | <path d="m300.44 176.3c-.494-1-1.146-1.813-1.96-2.44-.813-.626-1.78-1.073-2.9-1.34-1.119-.267-2.319-.4-3.6-.4-.987 0-2.014.101-3.08.301-1.066.199-2.033.554-2.899 1.06-.867.507-1.58 1.18-2.141 2.021-.56.84-.84 1.899-.84 3.18s.286 2.307.86 3.08c.573.773 1.319 1.399 2.239 1.88.92.479 1.967.854 3.141 1.12 1.173.267 2.373.547 3.6.84 1.333.347 2.594.68 3.78 1s2.22.747 3.1 1.28 1.58 1.239 2.101 2.12c.52.88.779 2.066.779 3.56 0 1.36-.293 2.52-.88 3.48s-1.359 1.753-2.319 2.38-2.04 1.08-3.24 1.359c-1.2.28-2.414.42-3.641.42-1.626 0-3.126-.187-4.5-.56-1.373-.373-2.56-.967-3.56-1.78-1-.812-1.773-1.859-2.32-3.14s-.807-2.826-.779-4.641h.8c0 1.707.253 3.154.76 4.341.506 1.187 1.22 2.153 2.14 2.899.921.747 2.014 1.287 3.28 1.62 1.267.334 2.66.5 4.18.5 1.12 0 2.233-.126 3.341-.38 1.105-.253 2.1-.66 2.979-1.22.88-.561 1.594-1.28 2.141-2.16.546-.88.819-1.934.819-3.16 0-1.44-.313-2.58-.939-3.42-.627-.84-1.427-1.506-2.4-2-.974-.493-2.054-.866-3.24-1.12-1.187-.253-2.326-.513-3.42-.78-1.146-.266-2.294-.546-3.439-.84-1.147-.293-2.181-.7-3.101-1.22-.92-.521-1.66-1.213-2.22-2.08-.56-.866-.84-1.993-.84-3.38 0-1.413.293-2.593.88-3.54.586-.946 1.346-1.7 2.28-2.26.933-.561 1.979-.96 3.14-1.2s2.313-.36 3.46-.36c1.413 0 2.713.154 3.9.46 1.186.308 2.226.8 3.12 1.48.893.68 1.605 1.573 2.14 2.68.533 1.107.84 2.46.92 4.061h-.8c-.05-1.47-.33-2.7-.82-3.7z"/> 42 | <path d="m307.46 172v13.079h.08c.187-.8.486-1.532.9-2.199.413-.667.933-1.254 1.56-1.761.626-.506 1.354-.899 2.18-1.18s1.746-.42 2.761-.42c1.065 0 2.046.16 2.939.48.894.319 1.666.793 2.32 1.42.653.627 1.16 1.399 1.52 2.319s.54 1.98.54 3.181v13.64h-.8v-13.52c0-1.2-.174-2.221-.52-3.061-.348-.84-.82-1.533-1.421-2.08-.6-.546-1.293-.946-2.079-1.2-.787-.253-1.62-.38-2.5-.38-1.228 0-2.308.234-3.24.7-.934.467-1.714 1.094-2.34 1.88-.627.787-1.101 1.7-1.42 2.74-.32 1.04-.48 2.134-.48 3.28v11.64h-.8v-28.56h.80z"/> 43 | <path d="m326.18 186.22c.4-1.293.993-2.434 1.78-3.42.786-.986 1.753-1.78 2.9-2.38 1.146-.601 2.479-.9 4-.9 1.493 0 2.812.3 3.96.9 1.146.6 2.112 1.394 2.899 2.38.786.986 1.38 2.127 1.78 3.42.4 1.294.6 2.646.6 4.06s-.199 2.768-.6 4.061c-.4 1.294-.994 2.434-1.78 3.42-.787.986-1.754 1.773-2.899 2.359-1.147.587-2.48.881-4 .881-1.494 0-2.814-.294-3.96-.881-1.147-.586-2.114-1.373-2.9-2.359-.787-.986-1.38-2.126-1.78-3.42-.399-1.293-.6-2.646-.6-4.061 0-1.41.20-2.77.60-4.06zm.74 7.82c.36 1.199.9 2.26 1.62 3.18s1.606 1.653 2.66 2.2c1.053.547 2.272.819 3.66.819 1.359 0 2.565-.272 3.619-.819s1.94-1.28 2.66-2.2c.721-.92 1.261-1.98 1.62-3.18.36-1.2.54-2.453.54-3.761 0-1.279-.18-2.52-.54-3.72-.359-1.2-.899-2.26-1.62-3.18-.72-.92-1.606-1.66-2.66-2.221-1.054-.56-2.26-.84-3.619-.84-1.388 0-2.607.28-3.66.84-1.054.561-1.94 1.301-2.66 2.221s-1.26 1.979-1.62 3.18-.54 2.44-.54 3.72c0 1.31.18 2.56.54 3.76z"/> 44 | <path d="m372.94 180l-6.56 20.56h-1.04l-6.4-19.76h-.08l-6.439 19.76h-1.12l-6.36-20.56h.761l6.119 19.76h.08l6.36-19.76h1.24l6.319 19.76h.08l6.24-19.76h.80z"/> 45 | <path d="m404.16 176.3c-.494-1-1.146-1.813-1.96-2.44-.813-.626-1.78-1.073-2.9-1.34-1.119-.267-2.319-.4-3.6-.4-.987 0-2.014.101-3.08.301-1.066.199-2.033.554-2.899 1.06-.867.507-1.58 1.18-2.141 2.021-.56.84-.84 1.899-.84 3.18s.286 2.307.86 3.08c.573.773 1.319 1.399 2.239 1.88.92.479 1.967.854 3.141 1.12 1.173.267 2.373.547 3.6.84 1.333.347 2.594.68 3.78 1s2.22.747 3.1 1.28 1.58 1.239 2.101 2.12c.52.88.779 2.066.779 3.56 0 1.36-.293 2.52-.88 3.48s-1.359 1.753-2.319 2.38-2.04 1.08-3.24 1.359c-1.2.28-2.414.42-3.641.42-1.626 0-3.126-.187-4.5-.56-1.373-.373-2.56-.967-3.56-1.78-1-.812-1.773-1.859-2.32-3.14s-.807-2.826-.779-4.641h.8c0 1.707.253 3.154.76 4.341.506 1.187 1.22 2.153 2.14 2.899.921.747 2.014 1.287 3.28 1.62 1.267.334 2.66.5 4.18.5 1.12 0 2.233-.126 3.341-.38 1.105-.253 2.1-.66 2.979-1.22.88-.561 1.594-1.28 2.141-2.16.546-.88.819-1.934.819-3.16 0-1.44-.313-2.58-.939-3.42-.627-.84-1.427-1.506-2.4-2-.974-.493-2.054-.866-3.24-1.12-1.187-.253-2.326-.513-3.42-.78-1.146-.266-2.294-.546-3.439-.84-1.147-.293-2.181-.7-3.101-1.22-.92-.521-1.66-1.213-2.22-2.08-.56-.866-.84-1.993-.84-3.38 0-1.413.293-2.593.88-3.54.586-.946 1.346-1.7 2.28-2.26.933-.561 1.979-.96 3.14-1.2s2.313-.36 3.46-.36c1.413 0 2.713.154 3.9.46 1.186.308 2.226.8 3.12 1.48.893.68 1.605 1.573 2.14 2.68.533 1.107.84 2.46.92 4.061h-.8c-.05-1.47-.33-2.7-.82-3.7z"/> 46 | <path d="m424.94 180l-9.479 24.72c-.268.693-.587 1.233-.96 1.62-.374.386-.787.673-1.24.859-.454.187-.954.301-1.5.341-.547.039-1.127.06-1.74.06v-.8c.693 0 1.286-.021 1.78-.061.493-.04.92-.146 1.28-.319.359-.174.68-.44.96-.801.279-.359.54-.847.779-1.46l1.48-3.8-8.56-20.36h.841l8.159 19.479 7.36-19.479h.84z"/> 47 | <path d="m439.58 183.44c-.32-.72-.773-1.313-1.36-1.78-.587-.466-1.287-.806-2.1-1.02-.813-.213-1.714-.32-2.7-.32-1.44 0-2.573.194-3.4.58-.826.387-1.439.827-1.84 1.32-.399.493-.653.979-.76 1.46-.106.479-.16.813-.16 1 0 1.014.206 1.794.62 2.34.413.547.967.967 1.66 1.26.72.294 1.5.547 2.34.761.84.213 1.82.467 2.94.76.8.214 1.593.434 2.38.66.786.227 1.493.54 2.12.939.626.4 1.133.907 1.52 1.521s.58 1.413.58 2.399c0 1.04-.22 1.92-.66 2.641-.439.72-1.014 1.307-1.72 1.76-.707.453-1.507.78-2.4.979-.894.2-1.779.301-2.66.301-2.746 0-4.819-.601-6.22-1.801-1.399-1.199-2.1-3.093-2.1-5.68h.8c0 2.32.646 4.021 1.94 5.1 1.293 1.08 3.152 1.62 5.579 1.62.747 0 1.514-.086 2.301-.26.786-.173 1.5-.453 2.14-.84s1.166-.887 1.58-1.5c.413-.613.62-1.36.62-2.24 0-.906-.207-1.64-.62-2.2-.414-.56-.947-1.02-1.6-1.38-.654-.359-1.407-.646-2.261-.859-.854-.214-1.72-.427-2.6-.641-.987-.24-1.854-.466-2.6-.68-.747-.213-1.414-.453-2-.72-.854-.373-1.48-.894-1.881-1.561-.399-.666-.6-1.56-.6-2.68 0-.561.12-1.146.36-1.76.239-.613.64-1.174 1.199-1.681.561-.506 1.28-.92 2.16-1.239.88-.32 1.96-.48 3.24-.48 2.293 0 4.106.521 5.44 1.56 1.333 1.04 2 2.707 2 5h-.801c0-1.04-.16-1.92-.48-2.64z"/> 48 | <path d="m447.38 196.56c0 .773.086 1.374.26 1.8.173.427.393.747.66.96.266.214.56.34.88.38.319.04.64.061.96.061.399 0 .76-.007 1.08-.021.319-.013.546-.046.68-.1v.8c-.24.027-.474.054-.7.08-.227.027-.646.04-1.26.04-.934 0-1.727-.273-2.38-.82-.654-.546-.98-1.553-.98-3.02v-15.92h-3.76v-.80h3.76v-6.48h.801v6.48h4.64v.8h-4.64v15.76z"/> 49 | <path d="m454.92 194.3c.307 1.187.78 2.22 1.42 3.1.641.88 1.467 1.574 2.48 2.08 1.013.507 2.253.76 3.72.76 2.16 0 3.953-.566 5.38-1.699 1.427-1.134 2.313-2.834 2.66-5.101h.8c-.294 2.4-1.24 4.26-2.84 5.58s-3.573 1.98-5.92 1.98c-1.6.025-2.967-.228-4.1-.761-1.134-.533-2.061-1.286-2.78-2.26-.72-.973-1.254-2.12-1.601-3.439-.347-1.32-.52-2.74-.52-4.261 0-1.706.253-3.226.76-4.56.507-1.333 1.174-2.46 2-3.38s1.786-1.62 2.88-2.101c1.094-.479 2.214-.72 3.36-.72 1.6 0 2.98.307 4.14.92 1.16.614 2.106 1.427 2.841 2.44.732 1.014 1.266 2.174 1.6 3.479.333 1.307.473 2.667.42 4.08h-17.2c.02 1.39.19 2.67.50 3.86zm15.38-8.24c-.347-1.133-.859-2.126-1.54-2.98-.68-.853-1.526-1.525-2.54-2.02-1.014-.493-2.187-.74-3.52-.74-1.12 0-2.167.214-3.14.641-.975.427-1.827 1.047-2.561 1.859-.733.814-1.327 1.794-1.78 2.94s-.72 2.439-.8 3.88h16.4c0-1.25-.18-2.45-.52-3.58z"/> 50 | <path d="m475.62 180v5.079h.08c.187-.8.479-1.532.88-2.199s.894-1.254 1.48-1.761c.586-.506 1.232-.899 1.939-1.18.706-.28 1.46-.42 2.26-.42 1.601-.053 2.94.354 4.021 1.22 1.08.867 1.793 2.061 2.14 3.58h.08c.4-1.439 1.187-2.6 2.36-3.479 1.173-.88 2.56-1.32 4.16-1.32 1.253 0 2.293.187 3.119.56.827.374 1.493.888 2 1.54.507.654.867 1.44 1.08 2.36.214.92.32 1.94.32 3.061v13.52h-.8v-13.52c0-1.014-.087-1.934-.26-2.761-.174-.826-.48-1.533-.92-2.12-.44-.586-1.027-1.04-1.761-1.359-.733-.32-1.66-.48-2.779-.48-.987 0-1.881.194-2.681.58-.8.387-1.479.914-2.04 1.58-.56.667-.986 1.434-1.279 2.3-.294.867-.44 1.78-.44 2.74v13.04h-.8v-13.2c0-.96-.074-1.866-.22-2.72-.147-.854-.421-1.6-.82-2.24-.4-.64-.96-1.146-1.68-1.52-.721-.373-1.654-.561-2.801-.561-1.014 0-1.934.234-2.76.7-.827.467-1.526 1.094-2.1 1.88-.574.787-1.014 1.7-1.32 2.74s-.46 2.134-.46 3.28v11.64h-.8v-20.56h.80z"/> 51 | </g> 52 | </svg> 53 | --------------------------------------------------------------------------------