Actualización

This commit is contained in:
Xes
2025-04-10 12:49:05 +02:00
parent 4aff98e77b
commit 1cdd00920f
9151 changed files with 1800913 additions and 0 deletions

View File

@@ -0,0 +1,577 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
/* Copyright 2012 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* globals VBArray, PDFJS */
'use strict';
// Initializing PDFJS global object here, it case if we need to change/disable
// some PDF.js features, e.g. range requests
if (typeof PDFJS === 'undefined') {
(typeof window !== 'undefined' ? window : this).PDFJS = {};
}
// Checking if the typed arrays are supported
// Support: iOS<6.0 (subarray), IE<10, Android<4.0
(function checkTypedArrayCompatibility() {
if (typeof Uint8Array !== 'undefined') {
// Support: iOS<6.0
if (typeof Uint8Array.prototype.subarray === 'undefined') {
Uint8Array.prototype.subarray = function subarray(start, end) {
return new Uint8Array(this.slice(start, end));
};
Float32Array.prototype.subarray = function subarray(start, end) {
return new Float32Array(this.slice(start, end));
};
}
// Support: Android<4.1
if (typeof Float64Array === 'undefined') {
window.Float64Array = Float32Array;
}
return;
}
function subarray(start, end) {
return new TypedArray(this.slice(start, end));
}
function setArrayOffset(array, offset) {
if (arguments.length < 2) {
offset = 0;
}
for (var i = 0, n = array.length; i < n; ++i, ++offset) {
this[offset] = array[i] & 0xFF;
}
}
function TypedArray(arg1) {
var result, i, n;
if (typeof arg1 === 'number') {
result = [];
for (i = 0; i < arg1; ++i) {
result[i] = 0;
}
} else if ('slice' in arg1) {
result = arg1.slice(0);
} else {
result = [];
for (i = 0, n = arg1.length; i < n; ++i) {
result[i] = arg1[i];
}
}
result.subarray = subarray;
result.buffer = result;
result.byteLength = result.length;
result.set = setArrayOffset;
if (typeof arg1 === 'object' && arg1.buffer) {
result.buffer = arg1.buffer;
}
return result;
}
window.Uint8Array = TypedArray;
window.Int8Array = TypedArray;
// we don't need support for set, byteLength for 32-bit array
// so we can use the TypedArray as well
window.Uint32Array = TypedArray;
window.Int32Array = TypedArray;
window.Uint16Array = TypedArray;
window.Float32Array = TypedArray;
window.Float64Array = TypedArray;
})();
// URL = URL || webkitURL
// Support: Safari<7, Android 4.2+
(function normalizeURLObject() {
if (!window.URL) {
window.URL = window.webkitURL;
}
})();
// Object.defineProperty()?
// Support: Android<4.0, Safari<5.1
(function checkObjectDefinePropertyCompatibility() {
if (typeof Object.defineProperty !== 'undefined') {
var definePropertyPossible = true;
try {
// some browsers (e.g. safari) cannot use defineProperty() on DOM objects
// and thus the native version is not sufficient
Object.defineProperty(new Image(), 'id', { value: 'test' });
// ... another test for android gb browser for non-DOM objects
var Test = function Test() {};
Test.prototype = { get id() { } };
Object.defineProperty(new Test(), 'id',
{ value: '', configurable: true, enumerable: true, writable: false });
} catch (e) {
definePropertyPossible = false;
}
if (definePropertyPossible) {
return;
}
}
Object.defineProperty = function objectDefineProperty(obj, name, def) {
delete obj[name];
if ('get' in def) {
obj.__defineGetter__(name, def['get']);
}
if ('set' in def) {
obj.__defineSetter__(name, def['set']);
}
if ('value' in def) {
obj.__defineSetter__(name, function objectDefinePropertySetter(value) {
this.__defineGetter__(name, function objectDefinePropertyGetter() {
return value;
});
return value;
});
obj[name] = def.value;
}
};
})();
// No XMLHttpRequest#response?
// Support: IE<11, Android <4.0
(function checkXMLHttpRequestResponseCompatibility() {
var xhrPrototype = XMLHttpRequest.prototype;
var xhr = new XMLHttpRequest();
if (!('overrideMimeType' in xhr)) {
// IE10 might have response, but not overrideMimeType
// Support: IE10
Object.defineProperty(xhrPrototype, 'overrideMimeType', {
value: function xmlHttpRequestOverrideMimeType(mimeType) {}
});
}
if ('responseType' in xhr) {
return;
}
// The worker will be using XHR, so we can save time and disable worker.
PDFJS.disableWorker = true;
Object.defineProperty(xhrPrototype, 'responseType', {
get: function xmlHttpRequestGetResponseType() {
return this._responseType || 'text';
},
set: function xmlHttpRequestSetResponseType(value) {
if (value === 'text' || value === 'arraybuffer') {
this._responseType = value;
if (value === 'arraybuffer' &&
typeof this.overrideMimeType === 'function') {
this.overrideMimeType('text/plain; charset=x-user-defined');
}
}
}
});
// Support: IE9
if (typeof VBArray !== 'undefined') {
Object.defineProperty(xhrPrototype, 'response', {
get: function xmlHttpRequestResponseGet() {
if (this.responseType === 'arraybuffer') {
return new Uint8Array(new VBArray(this.responseBody).toArray());
} else {
return this.responseText;
}
}
});
return;
}
Object.defineProperty(xhrPrototype, 'response', {
get: function xmlHttpRequestResponseGet() {
if (this.responseType !== 'arraybuffer') {
return this.responseText;
}
var text = this.responseText;
var i, n = text.length;
var result = new Uint8Array(n);
for (i = 0; i < n; ++i) {
result[i] = text.charCodeAt(i) & 0xFF;
}
return result.buffer;
}
});
})();
// window.btoa (base64 encode function) ?
// Support: IE<10
(function checkWindowBtoaCompatibility() {
if ('btoa' in window) {
return;
}
var digits =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
window.btoa = function windowBtoa(chars) {
var buffer = '';
var i, n;
for (i = 0, n = chars.length; i < n; i += 3) {
var b1 = chars.charCodeAt(i) & 0xFF;
var b2 = chars.charCodeAt(i + 1) & 0xFF;
var b3 = chars.charCodeAt(i + 2) & 0xFF;
var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
var d4 = i + 2 < n ? (b3 & 0x3F) : 64;
buffer += (digits.charAt(d1) + digits.charAt(d2) +
digits.charAt(d3) + digits.charAt(d4));
}
return buffer;
};
})();
// window.atob (base64 encode function)?
// Support: IE<10
(function checkWindowAtobCompatibility() {
if ('atob' in window) {
return;
}
// https://github.com/davidchambers/Base64.js
var digits =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
window.atob = function (input) {
input = input.replace(/=+$/, '');
if (input.length % 4 === 1) {
throw new Error('bad atob input');
}
for (
// initialize result and counters
var bc = 0, bs, buffer, idx = 0, output = '';
// get next character
buffer = input.charAt(idx++);
// character found in table?
// initialize bit storage and add its ascii value
~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
// and if not first of each 4 characters,
// convert the first 8 bits to one ascii character
bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
) {
// try to find character in table (0-63, not found => -1)
buffer = digits.indexOf(buffer);
}
return output;
};
})();
// Function.prototype.bind?
// Support: Android<4.0, iOS<6.0
(function checkFunctionPrototypeBindCompatibility() {
if (typeof Function.prototype.bind !== 'undefined') {
return;
}
Function.prototype.bind = function functionPrototypeBind(obj) {
var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);
var bound = function functionPrototypeBindBound() {
var args = headArgs.concat(Array.prototype.slice.call(arguments));
return fn.apply(obj, args);
};
return bound;
};
})();
// HTMLElement dataset property
// Support: IE<11, Safari<5.1, Android<4.0
(function checkDatasetProperty() {
var div = document.createElement('div');
if ('dataset' in div) {
return; // dataset property exists
}
Object.defineProperty(HTMLElement.prototype, 'dataset', {
get: function() {
if (this._dataset) {
return this._dataset;
}
var dataset = {};
for (var j = 0, jj = this.attributes.length; j < jj; j++) {
var attribute = this.attributes[j];
if (attribute.name.substring(0, 5) !== 'data-') {
continue;
}
var key = attribute.name.substring(5).replace(/\-([a-z])/g,
function(all, ch) {
return ch.toUpperCase();
});
dataset[key] = attribute.value;
}
Object.defineProperty(this, '_dataset', {
value: dataset,
writable: false,
enumerable: false
});
return dataset;
},
enumerable: true
});
})();
// HTMLElement classList property
// Support: IE<10, Android<4.0, iOS<5.0
(function checkClassListProperty() {
var div = document.createElement('div');
if ('classList' in div) {
return; // classList property exists
}
function changeList(element, itemName, add, remove) {
var s = element.className || '';
var list = s.split(/\s+/g);
if (list[0] === '') {
list.shift();
}
var index = list.indexOf(itemName);
if (index < 0 && add) {
list.push(itemName);
}
if (index >= 0 && remove) {
list.splice(index, 1);
}
element.className = list.join(' ');
return (index >= 0);
}
var classListPrototype = {
add: function(name) {
changeList(this.element, name, true, false);
},
contains: function(name) {
return changeList(this.element, name, false, false);
},
remove: function(name) {
changeList(this.element, name, false, true);
},
toggle: function(name) {
changeList(this.element, name, true, true);
}
};
Object.defineProperty(HTMLElement.prototype, 'classList', {
get: function() {
if (this._classList) {
return this._classList;
}
var classList = Object.create(classListPrototype, {
element: {
value: this,
writable: false,
enumerable: true
}
});
Object.defineProperty(this, '_classList', {
value: classList,
writable: false,
enumerable: false
});
return classList;
},
enumerable: true
});
})();
// Check console compatibility
// In older IE versions the console object is not available
// unless console is open.
// Support: IE<10
(function checkConsoleCompatibility() {
if (!('console' in window)) {
window.console = {
log: function() {},
error: function() {},
warn: function() {}
};
} else if (!('bind' in console.log)) {
// native functions in IE9 might not have bind
console.log = (function(fn) {
return function(msg) { return fn(msg); };
})(console.log);
console.error = (function(fn) {
return function(msg) { return fn(msg); };
})(console.error);
console.warn = (function(fn) {
return function(msg) { return fn(msg); };
})(console.warn);
}
})();
// Check onclick compatibility in Opera
// Support: Opera<15
(function checkOnClickCompatibility() {
// workaround for reported Opera bug DSK-354448:
// onclick fires on disabled buttons with opaque content
function ignoreIfTargetDisabled(event) {
if (isDisabled(event.target)) {
event.stopPropagation();
}
}
function isDisabled(node) {
return node.disabled || (node.parentNode && isDisabled(node.parentNode));
}
if (navigator.userAgent.indexOf('Opera') !== -1) {
// use browser detection since we cannot feature-check this bug
document.addEventListener('click', ignoreIfTargetDisabled, true);
}
})();
// Checks if possible to use URL.createObjectURL()
// Support: IE
(function checkOnBlobSupport() {
// sometimes IE loosing the data created with createObjectURL(), see #3977
if (navigator.userAgent.indexOf('Trident') >= 0) {
PDFJS.disableCreateObjectURL = true;
}
})();
// Checks if navigator.language is supported
(function checkNavigatorLanguage() {
if ('language' in navigator) {
return;
}
PDFJS.locale = navigator.userLanguage || 'en-US';
})();
(function checkRangeRequests() {
// Safari has issues with cached range requests see:
// https://github.com/mozilla/pdf.js/issues/3260
// Last tested with version 6.0.4.
// Support: Safari 6.0+
var isSafari = Object.prototype.toString.call(
window.HTMLElement).indexOf('Constructor') > 0;
// Older versions of Android (pre 3.0) has issues with range requests, see:
// https://github.com/mozilla/pdf.js/issues/3381.
// Make sure that we only match webkit-based Android browsers,
// since Firefox/Fennec works as expected.
// Support: Android<3.0
var regex = /Android\s[0-2][^\d]/;
var isOldAndroid = regex.test(navigator.userAgent);
// Range requests are broken in Chrome 39 and 40, https://crbug.com/442318
var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(navigator.userAgent);
if (isSafari || isOldAndroid || isChromeWithRangeBug) {
PDFJS.disableRange = true;
PDFJS.disableStream = true;
}
})();
// Check if the browser supports manipulation of the history.
// Support: IE<10, Android<4.2
(function checkHistoryManipulation() {
// Android 2.x has so buggy pushState support that it was removed in
// Android 3.0 and restored as late as in Android 4.2.
// Support: Android 2.x
if (!history.pushState || navigator.userAgent.indexOf('Android 2.') >= 0) {
PDFJS.disableHistory = true;
}
})();
// Support: IE<11, Chrome<21, Android<4.4, Safari<6
(function checkSetPresenceInImageData() {
// IE < 11 will use window.CanvasPixelArray which lacks set function.
if (window.CanvasPixelArray) {
if (typeof window.CanvasPixelArray.prototype.set !== 'function') {
window.CanvasPixelArray.prototype.set = function(arr) {
for (var i = 0, ii = this.length; i < ii; i++) {
this[i] = arr[i];
}
};
}
} else {
// Old Chrome and Android use an inaccessible CanvasPixelArray prototype.
// Because we cannot feature detect it, we rely on user agent parsing.
var polyfill = false, versionMatch;
if (navigator.userAgent.indexOf('Chrom') >= 0) {
versionMatch = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
// Chrome < 21 lacks the set function.
polyfill = versionMatch && parseInt(versionMatch[2]) < 21;
} else if (navigator.userAgent.indexOf('Android') >= 0) {
// Android < 4.4 lacks the set function.
// Android >= 4.4 will contain Chrome in the user agent,
// thus pass the Chrome check above and not reach this block.
polyfill = /Android\s[0-4][^\d]/g.test(navigator.userAgent);
} else if (navigator.userAgent.indexOf('Safari') >= 0) {
versionMatch = navigator.userAgent.
match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//);
// Safari < 6 lacks the set function.
polyfill = versionMatch && parseInt(versionMatch[1]) < 6;
}
if (polyfill) {
var contextPrototype = window.CanvasRenderingContext2D.prototype;
contextPrototype._createImageData = contextPrototype.createImageData;
contextPrototype.createImageData = function(w, h) {
var imageData = this._createImageData(w, h);
imageData.data.set = function(arr) {
for (var i = 0, ii = this.length; i < ii; i++) {
this[i] = arr[i];
}
};
return imageData;
};
}
}
})();
// Support: IE<10, Android<4.0, iOS
(function checkRequestAnimationFrame() {
function fakeRequestAnimationFrame(callback) {
window.setTimeout(callback, 20);
}
var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
if (isIOS) {
// requestAnimationFrame on iOS is broken, replacing with fake one.
window.requestAnimationFrame = fakeRequestAnimationFrame;
return;
}
if ('requestAnimationFrame' in window) {
return;
}
window.requestAnimationFrame =
window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame ||
fakeRequestAnimationFrame;
})();
(function checkCanvasSizeLimitation() {
var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
var isAndroid = /Android/g.test(navigator.userAgent);
if (isIOS || isAndroid) {
// 5MP
PDFJS.maxCanvasPixels = 5242880;
}
})();
// Disable fullscreen support for certain problematic configurations.
// Support: IE11+ (when embedded).
(function checkFullscreenSupport() {
var isEmbeddedIE = (navigator.userAgent.indexOf('Trident') >= 0 &&
window.parent !== window);
if (isEmbeddedIE) {
PDFJS.disableFullscreen = true;
}
})();

View File

@@ -0,0 +1,27 @@
/* This is just a sample file with CSS rules. You should write your own @font-face declarations
* to add support for your desired fonts.
*/
@font-face {
font-family: 'Novecentowide Book';
src: url("/ViewerJS/fonts/Novecentowide-Bold-webfont.eot");
src: url("/ViewerJS/fonts/Novecentowide-Bold-webfont.eot?#iefix") format("embedded-opentype"),
url("/ViewerJS/fonts/Novecentowide-Bold-webfont.woff") format("woff"),
url("/fonts/Novecentowide-Bold-webfont.ttf") format("truetype"),
url("/fonts/Novecentowide-Bold-webfont.svg#NovecentowideBookBold") format("svg");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: 'exotica';
src: url('/ViewerJS/fonts/Exotica-webfont.eot');
src: url('/ViewerJS/fonts/Exotica-webfont.eot?#iefix') format('embedded-opentype'),
url('/ViewerJS/fonts/Exotica-webfont.woff') format('woff'),
url('/ViewerJS/fonts/Exotica-webfont.ttf') format('truetype'),
url('/ViewerJS/fonts/Exotica-webfont.svg#exoticamedium') format('svg');
font-weight: normal;
font-style: normal;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 237 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 B

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
var /**@const{!string}*/pdfjs_version = "v1.1.114";

View File

@@ -0,0 +1,419 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* Copyright 2012 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* globals CustomStyle, PDFJS */
'use strict';
var MAX_TEXT_DIVS_TO_RENDER = 100000;
var NonWhitespaceRegexp = /\S/;
function isAllWhitespace(str) {
return !NonWhitespaceRegexp.test(str);
}
/**
* @typedef {Object} TextLayerBuilderOptions
* @property {HTMLDivElement} textLayerDiv - The text layer container.
* @property {number} pageIndex - The page index.
* @property {PageViewport} viewport - The viewport of the text layer.
* @property {PDFFindController} findController
*/
/**
* TextLayerBuilder provides text-selection functionality for the PDF.
* It does this by creating overlay divs over the PDF text. These divs
* contain text that matches the PDF text they are overlaying. This object
* also provides a way to highlight text that is being searched for.
* @class
*/
var TextLayerBuilder = (function TextLayerBuilderClosure() {
function TextLayerBuilder(options) {
this.textLayerDiv = options.textLayerDiv;
this.renderingDone = false;
this.divContentDone = false;
this.pageIdx = options.pageIndex;
this.pageNumber = this.pageIdx + 1;
this.matches = [];
this.viewport = options.viewport;
this.textDivs = [];
this.findController = options.findController || null;
}
TextLayerBuilder.prototype = {
_finishRendering: function TextLayerBuilder_finishRendering() {
this.renderingDone = true;
var event = document.createEvent('CustomEvent');
event.initCustomEvent('textlayerrendered', true, true, {
pageNumber: this.pageNumber
});
this.textLayerDiv.dispatchEvent(event);
},
renderLayer: function TextLayerBuilder_renderLayer() {
var textLayerFrag = document.createDocumentFragment();
var textDivs = this.textDivs;
var textDivsLength = textDivs.length;
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
// No point in rendering many divs as it would make the browser
// unusable even after the divs are rendered.
if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
this._finishRendering();
return;
}
var lastFontSize;
var lastFontFamily;
for (var i = 0; i < textDivsLength; i++) {
var textDiv = textDivs[i];
if (textDiv.dataset.isWhitespace !== undefined) {
continue;
}
var fontSize = textDiv.style.fontSize;
var fontFamily = textDiv.style.fontFamily;
// Only build font string and set to context if different from last.
if (fontSize !== lastFontSize || fontFamily !== lastFontFamily) {
ctx.font = fontSize + ' ' + fontFamily;
lastFontSize = fontSize;
lastFontFamily = fontFamily;
}
var width = ctx.measureText(textDiv.textContent).width;
if (width > 0) {
textLayerFrag.appendChild(textDiv);
var transform;
if (textDiv.dataset.canvasWidth !== undefined) {
// Dataset values come of type string.
var textScale = textDiv.dataset.canvasWidth / width;
transform = 'scaleX(' + textScale + ')';
} else {
transform = '';
}
var rotation = textDiv.dataset.angle;
if (rotation) {
transform = 'rotate(' + rotation + 'deg) ' + transform;
}
if (transform) {
CustomStyle.setProp('transform' , textDiv, transform);
}
}
}
this.textLayerDiv.appendChild(textLayerFrag);
this._finishRendering();
this.updateMatches();
},
/**
* Renders the text layer.
* @param {number} timeout (optional) if specified, the rendering waits
* for specified amount of ms.
*/
render: function TextLayerBuilder_render(timeout) {
if (!this.divContentDone || this.renderingDone) {
return;
}
if (this.renderTimer) {
clearTimeout(this.renderTimer);
this.renderTimer = null;
}
if (!timeout) { // Render right away
this.renderLayer();
} else { // Schedule
var self = this;
this.renderTimer = setTimeout(function() {
self.renderLayer();
self.renderTimer = null;
}, timeout);
}
},
appendText: function TextLayerBuilder_appendText(geom, styles) {
var style = styles[geom.fontName];
var textDiv = document.createElement('div');
this.textDivs.push(textDiv);
if (isAllWhitespace(geom.str)) {
textDiv.dataset.isWhitespace = true;
return;
}
var tx = PDFJS.Util.transform(this.viewport.transform, geom.transform);
var angle = Math.atan2(tx[1], tx[0]);
if (style.vertical) {
angle += Math.PI / 2;
}
var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));
var fontAscent = fontHeight;
if (style.ascent) {
fontAscent = style.ascent * fontAscent;
} else if (style.descent) {
fontAscent = (1 + style.descent) * fontAscent;
}
var left;
var top;
if (angle === 0) {
left = tx[4];
top = tx[5] - fontAscent;
} else {
left = tx[4] + (fontAscent * Math.sin(angle));
top = tx[5] - (fontAscent * Math.cos(angle));
}
textDiv.style.left = left + 'px';
textDiv.style.top = top + 'px';
textDiv.style.fontSize = fontHeight + 'px';
textDiv.style.fontFamily = style.fontFamily;
textDiv.textContent = geom.str;
// |fontName| is only used by the Font Inspector. This test will succeed
// when e.g. the Font Inspector is off but the Stepper is on, but it's
// not worth the effort to do a more accurate test.
if (PDFJS.pdfBug) {
textDiv.dataset.fontName = geom.fontName;
}
// Storing into dataset will convert number into string.
if (angle !== 0) {
textDiv.dataset.angle = angle * (180 / Math.PI);
}
// We don't bother scaling single-char text divs, because it has very
// little effect on text highlighting. This makes scrolling on docs with
// lots of such divs a lot faster.
if (textDiv.textContent.length > 1) {
if (style.vertical) {
textDiv.dataset.canvasWidth = geom.height * this.viewport.scale;
} else {
textDiv.dataset.canvasWidth = geom.width * this.viewport.scale;
}
}
},
setTextContent: function TextLayerBuilder_setTextContent(textContent) {
this.textContent = textContent;
var textItems = textContent.items;
for (var i = 0, len = textItems.length; i < len; i++) {
this.appendText(textItems[i], textContent.styles);
}
this.divContentDone = true;
},
convertMatches: function TextLayerBuilder_convertMatches(matches) {
var i = 0;
var iIndex = 0;
var bidiTexts = this.textContent.items;
var end = bidiTexts.length - 1;
var queryLen = (this.findController === null ?
0 : this.findController.state.query.length);
var ret = [];
for (var m = 0, len = matches.length; m < len; m++) {
// Calculate the start position.
var matchIdx = matches[m];
// Loop over the divIdxs.
while (i !== end && matchIdx >= (iIndex + bidiTexts[i].str.length)) {
iIndex += bidiTexts[i].str.length;
i++;
}
if (i === bidiTexts.length) {
console.error('Could not find a matching mapping');
}
var match = {
begin: {
divIdx: i,
offset: matchIdx - iIndex
}
};
// Calculate the end position.
matchIdx += queryLen;
// Somewhat the same array as above, but use > instead of >= to get
// the end position right.
while (i !== end && matchIdx > (iIndex + bidiTexts[i].str.length)) {
iIndex += bidiTexts[i].str.length;
i++;
}
match.end = {
divIdx: i,
offset: matchIdx - iIndex
};
ret.push(match);
}
return ret;
},
renderMatches: function TextLayerBuilder_renderMatches(matches) {
// Early exit if there is nothing to render.
if (matches.length === 0) {
return;
}
var bidiTexts = this.textContent.items;
var textDivs = this.textDivs;
var prevEnd = null;
var pageIdx = this.pageIdx;
var isSelectedPage = (this.findController === null ?
false : (pageIdx === this.findController.selected.pageIdx));
var selectedMatchIdx = (this.findController === null ?
-1 : this.findController.selected.matchIdx);
var highlightAll = (this.findController === null ?
false : this.findController.state.highlightAll);
var infinity = {
divIdx: -1,
offset: undefined
};
function beginText(begin, className) {
var divIdx = begin.divIdx;
textDivs[divIdx].textContent = '';
appendTextToDiv(divIdx, 0, begin.offset, className);
}
function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
var div = textDivs[divIdx];
var content = bidiTexts[divIdx].str.substring(fromOffset, toOffset);
var node = document.createTextNode(content);
if (className) {
var span = document.createElement('span');
span.className = className;
span.appendChild(node);
div.appendChild(span);
return;
}
div.appendChild(node);
}
var i0 = selectedMatchIdx, i1 = i0 + 1;
if (highlightAll) {
i0 = 0;
i1 = matches.length;
} else if (!isSelectedPage) {
// Not highlighting all and this isn't the selected page, so do nothing.
return;
}
for (var i = i0; i < i1; i++) {
var match = matches[i];
var begin = match.begin;
var end = match.end;
var isSelected = (isSelectedPage && i === selectedMatchIdx);
var highlightSuffix = (isSelected ? ' selected' : '');
if (this.findController) {
this.findController.updateMatchPosition(pageIdx, i, textDivs,
begin.divIdx, end.divIdx);
}
// Match inside new div.
if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
// If there was a previous div, then add the text at the end.
if (prevEnd !== null) {
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
}
// Clear the divs and set the content until the starting point.
beginText(begin);
} else {
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);
}
if (begin.divIdx === end.divIdx) {
appendTextToDiv(begin.divIdx, begin.offset, end.offset,
'highlight' + highlightSuffix);
} else {
appendTextToDiv(begin.divIdx, begin.offset, infinity.offset,
'highlight begin' + highlightSuffix);
for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
textDivs[n0].className = 'highlight middle' + highlightSuffix;
}
beginText(end, 'highlight end' + highlightSuffix);
}
prevEnd = end;
}
if (prevEnd) {
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
}
},
updateMatches: function TextLayerBuilder_updateMatches() {
// Only show matches when all rendering is done.
if (!this.renderingDone) {
return;
}
// Clear all matches.
var matches = this.matches;
var textDivs = this.textDivs;
var bidiTexts = this.textContent.items;
var clearedUntilDivIdx = -1;
// Clear all current matches.
for (var i = 0, len = matches.length; i < len; i++) {
var match = matches[i];
var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);
for (var n = begin, end = match.end.divIdx; n <= end; n++) {
var div = textDivs[n];
div.textContent = bidiTexts[n].str;
div.className = '';
}
clearedUntilDivIdx = match.end.divIdx + 1;
}
if (this.findController === null || !this.findController.active) {
return;
}
// Convert the matches on the page controller into the match format
// used for the textLayer.
this.matches = this.convertMatches(this.findController === null ?
[] : (this.findController.pageMatches[this.pageIdx] || []));
this.renderMatches(this.matches);
}
};
return TextLayerBuilder;
})();
/**
* @constructor
* @implements IPDFTextLayerFactory
*/
function DefaultTextLayerFactory() {}
DefaultTextLayerFactory.prototype = {
/**
* @param {HTMLDivElement} textLayerDiv
* @param {number} pageIndex
* @param {PageViewport} viewport
* @returns {TextLayerBuilder}
*/
createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) {
return new TextLayerBuilder({
textLayerDiv: textLayerDiv,
pageIndex: pageIndex,
viewport: viewport
});
}
};

View File

@@ -0,0 +1,394 @@
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* Copyright 2012 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
'use strict';
var CSS_UNITS = 96.0 / 72.0;
var DEFAULT_SCALE = 'auto';
var UNKNOWN_SCALE = 0;
var MAX_AUTO_SCALE = 1.25;
var SCROLLBAR_PADDING = 40;
var VERTICAL_PADDING = 5;
// optimised CSS custom property getter/setter
var CustomStyle = (function CustomStyleClosure() {
// As noted on: http://www.zachstronaut.com/posts/2009/02/17/
// animate-css-transforms-firefox-webkit.html
// in some versions of IE9 it is critical that ms appear in this list
// before Moz
var prefixes = ['ms', 'Moz', 'Webkit', 'O'];
var _cache = {};
function CustomStyle() {}
CustomStyle.getProp = function get(propName, element) {
// check cache only when no element is given
if (arguments.length === 1 && typeof _cache[propName] === 'string') {
return _cache[propName];
}
element = element || document.documentElement;
var style = element.style, prefixed, uPropName;
// test standard property first
if (typeof style[propName] === 'string') {
return (_cache[propName] = propName);
}
// capitalize
uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);
// test vendor specific properties
for (var i = 0, l = prefixes.length; i < l; i++) {
prefixed = prefixes[i] + uPropName;
if (typeof style[prefixed] === 'string') {
return (_cache[propName] = prefixed);
}
}
//if all fails then set to undefined
return (_cache[propName] = 'undefined');
};
CustomStyle.setProp = function set(propName, element, str) {
var prop = this.getProp(propName);
if (prop !== 'undefined') {
element.style[prop] = str;
}
};
return CustomStyle;
})();
function getFileName(url) {
var anchor = url.indexOf('#');
var query = url.indexOf('?');
var end = Math.min(
anchor > 0 ? anchor : url.length,
query > 0 ? query : url.length);
return url.substring(url.lastIndexOf('/', end) + 1, end);
}
/**
* Returns scale factor for the canvas. It makes sense for the HiDPI displays.
* @return {Object} The object with horizontal (sx) and vertical (sy)
scales. The scaled property is set to false if scaling is
not required, true otherwise.
*/
function getOutputScale(ctx) {
var devicePixelRatio = window.devicePixelRatio || 1;
var backingStoreRatio = ctx.webkitBackingStorePixelRatio ||
ctx.mozBackingStorePixelRatio ||
ctx.msBackingStorePixelRatio ||
ctx.oBackingStorePixelRatio ||
ctx.backingStorePixelRatio || 1;
var pixelRatio = devicePixelRatio / backingStoreRatio;
return {
sx: pixelRatio,
sy: pixelRatio,
scaled: pixelRatio !== 1
};
}
/**
* Scrolls specified element into view of its parent.
* element {Object} The element to be visible.
* spot {Object} An object with optional top and left properties,
* specifying the offset from the top left edge.
*/
function scrollIntoView(element, spot) {
// Assuming offsetParent is available (it's not available when viewer is in
// hidden iframe or object). We have to scroll: if the offsetParent is not set
// producing the error. See also animationStartedClosure.
var parent = element.offsetParent;
var offsetY = element.offsetTop + element.clientTop;
var offsetX = element.offsetLeft + element.clientLeft;
if (!parent) {
console.error('offsetParent is not set -- cannot scroll');
return;
}
while (parent.clientHeight === parent.scrollHeight) {
if (parent.dataset._scaleY) {
offsetY /= parent.dataset._scaleY;
offsetX /= parent.dataset._scaleX;
}
offsetY += parent.offsetTop;
offsetX += parent.offsetLeft;
parent = parent.offsetParent;
if (!parent) {
return; // no need to scroll
}
}
if (spot) {
if (spot.top !== undefined) {
offsetY += spot.top;
}
if (spot.left !== undefined) {
offsetX += spot.left;
parent.scrollLeft = offsetX;
}
}
parent.scrollTop = offsetY;
}
/**
* Helper function to start monitoring the scroll event and converting them into
* PDF.js friendly one: with scroll debounce and scroll direction.
*/
function watchScroll(viewAreaElement, callback) {
var debounceScroll = function debounceScroll(evt) {
if (rAF) {
return;
}
// schedule an invocation of scroll for next animation frame.
rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {
rAF = null;
var currentY = viewAreaElement.scrollTop;
var lastY = state.lastY;
if (currentY !== lastY) {
state.down = currentY > lastY;
}
state.lastY = currentY;
callback(state);
});
};
var state = {
down: true,
lastY: viewAreaElement.scrollTop,
_eventHandler: debounceScroll
};
var rAF = null;
viewAreaElement.addEventListener('scroll', debounceScroll, true);
return state;
}
/**
* Use binary search to find the index of the first item in a given array which
* passes a given condition. The items are expected to be sorted in the sense
* that if the condition is true for one item in the array, then it is also true
* for all following items.
*
* @returns {Number} Index of the first array element to pass the test,
* or |items.length| if no such element exists.
*/
function binarySearchFirstItem(items, condition) {
var minIndex = 0;
var maxIndex = items.length - 1;
if (items.length === 0 || !condition(items[maxIndex])) {
return items.length;
}
if (condition(items[minIndex])) {
return minIndex;
}
while (minIndex < maxIndex) {
var currentIndex = (minIndex + maxIndex) >> 1;
var currentItem = items[currentIndex];
if (condition(currentItem)) {
maxIndex = currentIndex;
} else {
minIndex = currentIndex + 1;
}
}
return minIndex; /* === maxIndex */
}
/**
* Generic helper to find out what elements are visible within a scroll pane.
*/
function getVisibleElements(scrollEl, views, sortByVisibility) {
var top = scrollEl.scrollTop, bottom = top + scrollEl.clientHeight;
var left = scrollEl.scrollLeft, right = left + scrollEl.clientWidth;
function isElementBottomBelowViewTop(view) {
var element = view.div;
var elementBottom =
element.offsetTop + element.clientTop + element.clientHeight;
return elementBottom > top;
}
var visible = [], view, element;
var currentHeight, viewHeight, hiddenHeight, percentHeight;
var currentWidth, viewWidth;
var firstVisibleElementInd = (views.length === 0) ? 0 :
binarySearchFirstItem(views, isElementBottomBelowViewTop);
for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) {
view = views[i];
element = view.div;
currentHeight = element.offsetTop + element.clientTop;
viewHeight = element.clientHeight;
if (currentHeight > bottom) {
break;
}
currentWidth = element.offsetLeft + element.clientLeft;
viewWidth = element.clientWidth;
if (currentWidth + viewWidth < left || currentWidth > right) {
continue;
}
hiddenHeight = Math.max(0, top - currentHeight) +
Math.max(0, currentHeight + viewHeight - bottom);
percentHeight = ((viewHeight - hiddenHeight) * 100 / viewHeight) | 0;
visible.push({
id: view.id,
x: currentWidth,
y: currentHeight,
view: view,
percent: percentHeight
});
}
var first = visible[0];
var last = visible[visible.length - 1];
if (sortByVisibility) {
visible.sort(function(a, b) {
var pc = a.percent - b.percent;
if (Math.abs(pc) > 0.001) {
return -pc;
}
return a.id - b.id; // ensure stability
});
}
return {first: first, last: last, views: visible};
}
/**
* Event handler to suppress context menu.
*/
function noContextMenuHandler(e) {
e.preventDefault();
}
/**
* Returns the filename or guessed filename from the url (see issue 3455).
* url {String} The original PDF location.
* @return {String} Guessed PDF file name.
*/
function getPDFFileNameFromURL(url) {
var reURI = /^(?:([^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
// SCHEME HOST 1.PATH 2.QUERY 3.REF
// Pattern to get last matching NAME.pdf
var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
var splitURI = reURI.exec(url);
var suggestedFilename = reFilename.exec(splitURI[1]) ||
reFilename.exec(splitURI[2]) ||
reFilename.exec(splitURI[3]);
if (suggestedFilename) {
suggestedFilename = suggestedFilename[0];
if (suggestedFilename.indexOf('%') !== -1) {
// URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf
try {
suggestedFilename =
reFilename.exec(decodeURIComponent(suggestedFilename))[0];
} catch(e) { // Possible (extremely rare) errors:
// URIError "Malformed URI", e.g. for "%AA.pdf"
// TypeError "null has no properties", e.g. for "%2F.pdf"
}
}
}
return suggestedFilename || 'document.pdf';
}
var ProgressBar = (function ProgressBarClosure() {
function clamp(v, min, max) {
return Math.min(Math.max(v, min), max);
}
function ProgressBar(id, opts) {
this.visible = true;
// Fetch the sub-elements for later.
this.div = document.querySelector(id + ' .progress');
// Get the loading bar element, so it can be resized to fit the viewer.
this.bar = this.div.parentNode;
// Get options, with sensible defaults.
this.height = opts.height || 100;
this.width = opts.width || 100;
this.units = opts.units || '%';
// Initialize heights.
this.div.style.height = this.height + this.units;
this.percent = 0;
}
ProgressBar.prototype = {
updateBar: function ProgressBar_updateBar() {
if (this._indeterminate) {
this.div.classList.add('indeterminate');
this.div.style.width = this.width + this.units;
return;
}
this.div.classList.remove('indeterminate');
var progressSize = this.width * this._percent / 100;
this.div.style.width = progressSize + this.units;
},
get percent() {
return this._percent;
},
set percent(val) {
this._indeterminate = isNaN(val);
this._percent = clamp(val, 0, 100);
this.updateBar();
},
setWidth: function ProgressBar_setWidth(viewer) {
if (viewer) {
var container = viewer.parentNode;
var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
if (scrollbarWidth > 0) {
this.bar.setAttribute('style', 'width: calc(100% - ' +
scrollbarWidth + 'px);');
}
}
},
hide: function ProgressBar_hide() {
if (!this.visible) {
return;
}
this.visible = false;
this.bar.classList.add('hidden');
document.body.classList.remove('loadingInProgress');
},
show: function ProgressBar_show() {
if (this.visible) {
return;
}
this.visible = true;
document.body.classList.add('loadingInProgress');
this.bar.classList.remove('hidden');
}
};
return ProgressBar;
})();

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,783 @@
/* For licensing terms, see /license.txt */
(function (window, $) {
"use strict";
function getPointOnImage(referenceElement, x, y) {
var pointerPosition = {
left: x + window.scrollX,
top: y + window.scrollY
},
canvasOffset = {
x: referenceElement.getBoundingClientRect().left + window.scrollX,
y: referenceElement.getBoundingClientRect().top + window.scrollY
};
return {
x: Math.round(pointerPosition.left - canvasOffset.x),
y: Math.round(pointerPosition.top - canvasOffset.y)
};
}
/**
* @param {Object} attributes
* @constructor
*/
var SvgElementModel = function (attributes) {
this.attributes = attributes;
this.id = 0;
this.questionId = 0;
this.changeEvents = [];
this.destroyEvents = [];
};
/**
* @param {string} key
* @param {*} value
*/
SvgElementModel.prototype.set = function (key, value) {
this.attributes[key] = value;
this.changeEvents.forEach(function (event) {
event();
});
};
SvgElementModel.prototype.get = function (key) {
return this.attributes[key];
};
SvgElementModel.prototype.destroy = function () {
this.destroyEvents.forEach(function (event) {
event();
});
};
/**
* @param {string} eventName
* @param {(SvgElementModel~changeEvents|SvgElementModel~destroyEvents)} callback
*/
SvgElementModel.prototype.on = function (eventName, callback) {
this[eventName + 'Events'].push(callback);
};
/**
* @abstract
* @static
* @param {Object} info
* @returns {SvgElementModel}
*/
SvgElementModel.decode = function (info) {
return new this();
};
/**
* @abstract
* @returns {string}
*/
SvgElementModel.prototype.encode = function () {
return "";
};
/**
* @param {Object} userAttributes
* @constructor
* @extends SvgElementModel
*/
var SvgPathModel = function (userAttributes) {
var attributes = $.extend({
color: "#FF0000",
points: []
}, userAttributes);
SvgElementModel.call(this, attributes);
};
SvgPathModel.prototype = Object.create(SvgElementModel.prototype);
SvgPathModel.prototype.addPoint = function (x, y) {
x = parseInt(x);
y = parseInt(y);
var points = this.get("points");
points.push([x, y]);
this.set("points", points);
};
SvgPathModel.prototype.encode = function () {
var pairedPoints = [];
var typeProperties = [
this.get("color"),
];
this.get("points").forEach(function (point) {
pairedPoints.push(
point.join(";")
);
});
return "P;" + typeProperties.join(";") + ")(" + pairedPoints.join(")(");
};
/**
* @static
* @param {Object} pathInfo
* @returns {SvgPathModel}
*/
SvgPathModel.decode = function (pathInfo) {
pathInfo.points = pathInfo.points.map(function (point) {
return [point.x, point.y];
});
return new SvgPathModel(pathInfo);
};
/**
* @param {Object} userAttributes
* @constructor
* @extends SvgElementModel
*/
var SvgTextModel = function (userAttributes) {
var attributes = $.extend({
text: "",
x: 0,
y: 0,
color: "#FF0000",
fontSize: 20
}, userAttributes);
SvgElementModel.call(this, attributes);
};
SvgTextModel.prototype = Object.create(SvgElementModel.prototype);
SvgTextModel.prototype.encode = function () {
var typeProperties = [
this.get("color"),
this.get("fontSize"),
];
return "T;" + typeProperties.join(";") + ")(" + this.get("text") + ")(" + this.get("x") + ';' + this.get("y");
};
/**
* @static
* @param {Object} textInfo
* @returns {SvgTextModel}
*/
SvgTextModel.decode = function (textInfo) {
return new SvgTextModel(textInfo);
};
/**
* @param {SvgElementModel} model
* @constructor
*/
var SvgElementView = function (model) {
var self = this;
this.model = model;
this.model.on('change', function () {
self.render();
});
this.model.on('destroy', function () {
self.el.remove();
});
};
/**
* @param {SvgPathModel} model
* @constructor
* @extends SvgElementView
*/
var SvgPathView = function (model) {
SvgElementView.call(this, model);
this.el = document.createElementNS("http://www.w3.org/2000/svg", "path");
this.el.setAttribute("fill", "transparent");
};
SvgPathView.prototype = Object.create(SvgElementView.prototype);
SvgPathView.prototype.render = function () {
var d = "";
$.each(
this.model.get("points"),
function (i, point) {
d += (i === 0) ? "M" : " L ";
d += point[0] + " " + point[1];
}
);
this.el.setAttribute("d", d);
this.el.setAttribute('stroke', this.model.get('color'));
this.el.setAttribute("stroke-width", "3");
return this;
};
/**
* @param {SvgTextModel} model
* @constructor
* @extends SvgElementView
*/
var SvgTextView = function (model) {
SvgElementView.call(this, model);
this.el = document.createElementNS('http://www.w3.org/2000/svg', 'text');
this.el.setAttribute('stroke', 'none');
};
SvgTextView.prototype = Object.create(SvgElementView.prototype);
SvgTextView.prototype.render = function () {
this.el.setAttribute('x', this.model.get('x'));
this.el.setAttribute('y', this.model.get('y'));
this.el.setAttribute('fill', this.model.get('color'));
this.el.setAttribute('font-size', this.model.get('fontSize'));
this.el.textContent = this.model.get('text');
return this;
};
/**
* @param {SvgElementModel} model
* @constructor
*/
var ControllerView = function (model) {
var self = this;
this.model = model;
this.model.on('change', function () {
self.render();
});
this.model.on('destroy', function () {
self.el.remove();
});
var elChoice = (function () {
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'choice[' + self.model.questionId + '][' + self.model.id + ']';
return input;
})();
var elHotspot = (function () {
var input = document.createElement('input');
input.type = 'hidden';
input.name = 'hotspot[' + self.model.questionId + '][' + self.model.id + ']';
return input;
})();
var elText = (function () {
var input = document.createElement('input');
input.type = 'text';
input.className = 'form-control';
input.disabled = self.model instanceof SvgPathModel;
return input;
})();
elText.addEventListener('change', function () {
commandsHistory.add(new TextElementCommand(self.model, this.value));
self.model.set('text', this.value);
})
var txtColor = (function () {
var input = document.createElement('input');
input.type = 'color';
input.style.border = '0 none';
input.style.padding = '0';
input.style.margin = '0';
input.style.width = '26px';
input.style.height = '26px';
input.style.lineHeight = '28px';
input.style.verticalAlign = 'middle';
return input;
})();
txtColor.addEventListener('change', function () {
commandsHistory.add(new ColorElementCommand(self.model, this.value));
self.model.set('color', this.value);
})
var spanAddonColor = (function () {
var span = document.createElement('span');
span.className = 'input-group-addon';
span.style.padding = '0';
return span;
})();
spanAddonColor.appendChild(txtColor);
var txtSize = (function () {
var input = document.createElement('input');
input.type = 'number';
input.step = '1';
input.min = '15';
input.max = '30';
input.style.border = '0 none';
input.style.padding = '0 0 0 4px';
input.style.margin = '0';
input.style.width = '41px';
input.style.height = '26px';
input.style.lineHeight = '28px';
input.style.verticalAlign = 'middle';
input.disabled = self.model instanceof SvgPathModel;
return input;
})();
txtSize.addEventListener('change', function () {
commandsHistory.add(new SizeElementCommand(self.model, this.value));
self.model.set('fontSize', this.value);
})
var spanAddonSize = (function () {
var span = document.createElement('span');
span.className = 'input-group-addon';
span.style.padding = '0';
return span;
})();
spanAddonSize.appendChild(txtSize);
// var btnRemove = (function () {
// var button = document.createElement('button');
// button.type = 'button';
// button.className = 'btn btn-default';
// button.innerHTML = '<span class="fa fa-trash text-danger" aria-hidden="true"></span>';
//
// return button;
// })();
// btnRemove.addEventListener('click', function (e) {
// e.preventDefault();
// e.stopPropagation();
//
// self.model.destroy();
// });
//
// var spanGroupBtn = (function () {
// var span = document.createElement('span');
// span.className = 'input-group-btn';
//
// return span;
// })();
// spanGroupBtn.appendChild(btnRemove);
this.el = (function () {
var div = document.createElement('div');
div.className = 'input-group input-group-sm';
div.style.marginBottom = '10px';
return div;
})();
this.el.appendChild(elText);
this.el.appendChild(elHotspot);
this.el.appendChild(elChoice);
this.el.appendChild(spanAddonColor);
this.el.appendChild(spanAddonSize);
// this.el.appendChild(spanGroupBtn);
this.render = function () {
elChoice.value = this.model.encode();
elHotspot.value = this.model.encode();
elText.value = self.model instanceof SvgTextModel ? self.model.get('text') : '——————————';
txtColor.value = this.model.get('color');
txtSize.value = this.model.get('fontSize');
return this;
}
};
/**
* @constructor
*/
var ElementsCollection = function () {
/**
* @type {SvgElementModel[]}
*/
this.models = [];
this.addEvent = null;
var lastId = 0;
/**
* @param {SvgElementModel} pathModel
*/
this.add = function (pathModel) {
pathModel.id = ++lastId;
this.models.push(pathModel);
if (this.addEvent) {
this.addEvent(pathModel);
}
};
/**
* @param {number} index
* @returns {SvgElementModel}
*/
this.get = function (index) {
return this.models[index];
};
this.reset = function () {
this.models.forEach(function (model) {
model.destroy();
})
this.models = [];
};
/**
* @param {ElementsCollection~addEvent} callback
*/
this.onAdd = function (callback) {
this.addEvent = callback;
};
};
/**
* @param {ElementsCollection} elementsCollection
* @param {Image} image
* @param {number} questionId
* @constructor
*/
var AnnotationCanvasView = function (elementsCollection, image, questionId) {
var self = this;
this.questionId = questionId;
this.image = image;
var svgImage = (function () {
var image = document.createElementNS('http://www.w3.org/2000/svg', 'image');
image.setAttributeNS('http://www.w3.org/1999/xlink', 'href', self.image.src);
image.setAttribute('width', self.image.width);
image.setAttribute('height', self.image.height);
return image;
})();
this.el = (function () {
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svg.setAttribute('version', '1.1');
svg.setAttribute('viewBox', '0 0 ' + self.image.width + ' ' + self.image.height);
svg.setAttribute('width', self.image.width);
svg.setAttribute('height', self.image.height);
return svg;
})();
this.el.appendChild(svgImage);
this.elementsCollection = elementsCollection;
this.elementsCollection.onAdd(function (pathModel) {
var svgElementView = null;
if (pathModel instanceof SvgPathModel) {
svgElementView = new SvgPathView(pathModel);
} else if (pathModel instanceof SvgTextModel) {
svgElementView = new SvgTextView(pathModel);
} else {
return;
}
self.el.appendChild(svgElementView.render().el);
var controllerView = new ControllerView(pathModel);
$('#annotation-toolbar-' + self.questionId).append(controllerView.render().el);
$(controllerView.el).children('input').eq(0).focus();
});
var $rdbOptions = null;
var $btnReset = null;
var $btnUndo = null;
var $btnRedo = null;
this.render = function () {
$rdbOptions = $('[name="' + this.questionId + '-options"]');
$btnReset = $('#btn-reset-' + this.questionId);
$btnUndo = $('#btn-undo-' + this.questionId);
$btnRedo = $('#btn-redo-' + this.questionId);
setEvents();
return this;
};
function setEvents() {
var isMoving = false,
elementModel = null;
$(self.el)
.on('dragstart', function (e) {
e.preventDefault();
})
.on('click', function (e) {
e.preventDefault();
if ("1" !== $rdbOptions.filter(':checked').val()) {
return;
}
var point = getPointOnImage(self.el, e.clientX, e.clientY);
elementModel = new SvgTextModel({x: point.x, y: point.y, text: ''});
elementModel.questionId = self.questionId;
commandsHistory.add(new AddElementCommand(self.elementsCollection, elementModel));
self.elementsCollection.add(elementModel);
elementModel = null;
isMoving = false;
})
.on('mousedown', function (e) {
e.preventDefault();
var point = getPointOnImage(self.el, e.clientX, e.clientY);
if (isMoving || "0" !== $rdbOptions.filter(':checked').val() || elementModel) {
return;
}
elementModel = new SvgPathModel({points: [[point.x, point.y]]});
elementModel.questionId = self.questionId;
self.elementsCollection.add(elementModel);
isMoving = true;
})
.on('mousemove', function (e) {
e.preventDefault();
if (!isMoving || "0" !== $rdbOptions.filter(':checked').val() || !elementModel) {
return;
}
var point = getPointOnImage(self.el, e.clientX, e.clientY);
elementModel.addPoint(point.x, point.y);
})
.on('mouseup', function (e) {
e.preventDefault();
if (!isMoving || "0" !== $rdbOptions.filter(':checked').val() || !elementModel) {
return;
}
commandsHistory.add(new AddElementCommand(self.elementsCollection, elementModel));
elementModel = null;
isMoving = false;
});
$btnReset.on('click', function (e) {
e.preventDefault();
commandsHistory.add(new ResetCommand(self.elementsCollection));
self.elementsCollection.reset();
});
$btnUndo.on('click', function () {
commandsHistory.undo();
});
$btnRedo.on('click', function () {
commandsHistory.redo();
});
}
};
/**
* @constructor
* @abstract
*/
function Command() {}
/**
* @abstract
*/
Command.prototype.before = function () {
throw new Error('Implement');
}
/**
* @abstract
*/
Command.prototype.after = function () {
throw new Error('Implement');
}
/**
* @param {ElementsCollection} collection
* @param {SvgElementModel} model
* @constructor
*/
function AddElementCommand(collection, model) {
Command.call(this);
this.collection = collection;
this.model = model;
}
AddElementCommand.prototype = Object.create(Command.prototype);
AddElementCommand.prototype.after = function () {
this.collection.add(this.model);
};
AddElementCommand.prototype.before = function () {
this.model.destroy();
};
/**
* @param {SvgElementModel} model
* @param {string} attribute
* @param {*} newValue
* @constructor
* @abstract
* @extends Command
*/
function ElementCommand(model, attribute, newValue) {
Command.call(this);
this.model = model;
this.attribute = attribute;
this.oldValue = this.model.get(this.attribute);
this.newValue = newValue;
}
ElementCommand.prototype = Object.create(Command.prototype);
ElementCommand.prototype.after = function () {
this.model.set(this.attribute, this.newValue);
};
ElementCommand.prototype.before = function () {
this.model.set(this.attribute, this.oldValue);
};
/**
* @param {SvgElementModel} model
* @param {*} newValue
* @constructor
* @extends ElementCommand
*/
function TextElementCommand(model, newValue) {
ElementCommand.call(this, model, 'text', newValue);
}
TextElementCommand.prototype = Object.create(ElementCommand.prototype);
/**
* @param {SvgElementModel} model
* @param {*} newValue
* @constructor
* @extends ElementCommand
*/
function ColorElementCommand(model, newValue) {
ElementCommand.call(this, model, 'color', newValue);
}
ColorElementCommand.prototype = Object.create(ElementCommand.prototype);
/**
* @param {SvgElementModel} model
* @param {*} newValue
* @constructor
* @extends ElementCommand
*/
function SizeElementCommand(model, newValue) {
ElementCommand.call(this, model, 'fontSize', newValue);
}
SizeElementCommand.prototype = Object.create(ElementCommand.prototype);
/**
*
* @param {ElementsCollection} collection
* @constructor
* @extends Command
*/
function ResetCommand(collection) {
Command.call(this);
this.collection = collection;
this.oldModels = collection.models;
}
ResetCommand.prototype = Object.create(Command.prototype);
ResetCommand.prototype.after = function () {
this.collection.reset();
};
ResetCommand.prototype.before = function () {
var self = this;
this.oldModels.forEach(function (model) {
self.collection.add(model);
});
};
function CommandHistory() {
var index = -1;
/**
* @type {Command[]}
*/
var commands = [];
/**
* @param {Command} command
*/
this.add = function (command) {
if (index > -1) {
commands = commands.slice(0, index + 1);
} else {
commands = [];
}
commands.push(command);
++index;
}
this.undo = function () {
(commands, index);
if (-1 === index) {
return;
}
var command = commands[index];
command.before();
--index;
};
this.redo = function () {
if (index + 1 === commands.length) {
return;
}
++index;
var command = commands[index];
command.after();
};
};
var commandsHistory = new CommandHistory();
window.AnnotationQuestion = function (userSettings) {
$(function () {
var settings = $.extend(
{
questionId: 0,
exerciseId: 0,
relPath: '/'
},
userSettings
),
xhrUrl = 'exercise/annotation_user.php?' + _p.web_cid_query,
$container = $('#annotation-canvas-' + settings.questionId);
$
.getJSON(settings.relPath + xhrUrl, {
question_id: parseInt(settings.questionId),
exe_id: parseInt(settings.exerciseId),
course_id: parseInt(settings.courseId)
})
.done(function (questionInfo) {
var image = new Image();
image.onload = function () {
var elementsCollection = new ElementsCollection(),
canvas = new AnnotationCanvasView(elementsCollection, this, parseInt(settings.questionId));
$container.html(canvas.render().el);
/** @namespace questionInfo.answers.paths */
$.each(questionInfo.answers.paths, function (i, pathInfo) {
var pathModel = SvgPathModel.decode(pathInfo);
pathModel.questionId = settings.questionId;
elementsCollection.add(pathModel);
});
/** @namespace questionInfo.answers.texts */
$(questionInfo.answers.texts).each(function (i, textInfo) {
var textModel = SvgTextModel.decode(textInfo);
textModel.questionId = settings.questionId;
elementsCollection.add(textModel);
});
};
image.src = questionInfo.image.path;
});
});
};
})(window, window.jQuery);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,363 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ASCIIMathML: Math on the web for everyone</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="ASCIIMathML.js"></script>
<style type="text/css">
#menu, #title, #subtitle, #author, .display {text-align: center}
body {font-family: Arial; background-color:beige}
p,table {font-family: Times}
</style>
</head>
<body>
<div id="menu">
| <a href="asciimath.html">Home Page</a> |
<a href="asciimathsyntax.html">Syntax</a> |
<a href="asciimathdemo.html">Try it</a> |
<a href="asciimathcalculator.html">Calculator</a> |
<a href="http://mathcs.chapman.edu/~jipsen/mathml/asciimathdownload.html">Download</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathGraphs.html">Graphs</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathFAQ.html">ASCIIMath FAQ</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLSandbox.html">Sandbox</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathCommentsAndSuggestions.html">Comments</a> |
</div>
<hr/>
<h2 id="title">
ASCIIMathML.js (ver 2.0): Translating ASCII math notation to MathML
and graphics</h2>
<h4 align="center">
Would you or your students like to <i>easily</i> produce
<i>good-looking</i> math formulas on webpages<br/>
using a <i>simple</i> calculator-style syntax and your
own ASCII or HTML editor?
<br/>
Here is a free multi-platform solution (and if you prefer it,
LaTeX-style formulas also work).
</h4>
<center>
<b><font color="red">Now even easier to use:</font>
<font color="green"> just add one line to your
HTML file to load ASCIIMathML.js
</font></b><p>
ASCIIMathML.js is mentioned on the <a
href="http://www.w3.org/Math/">MathML</a> page of the <a
href="http://www.w3.org/">World Wide Web Consortium</a>, also on <a
href="http://mathforge.net/index.jsp">mathforge.net</a> and <a
href="http://mathforum.org/library/resource_types/typesetting/">The
Math Forum.</a>
</p>
<font color="red"><b>New:</b></font> Now with <b>automatic math recognition</b>
mode, better LaTeX support and graphics integration<br/>
A <a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLMoodleFilter.html">Moodle filter</a> and a <a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLPmWikiCookbook.html">PmWiki cookbook</a> are also available<br/>
<a href="http://www.pierce.ctc.edu/dlippman/asciimathtex/AMT.html">ASCIIMath Image Fallback Scripts</a> by David Lippman (including a Moodle filter)<br/>
and a <a href="http://www.maths.nottingham.ac.uk/personal/drw/lm.html">LaTeXMathML</a> version of ASCIIMathML by <a href="http://www.maths.nottingham.ac.uk/personal/drw/">Dr Douglas R. Woodall</a>
(<a href="http://www.maths.nott.ac.uk/personal/drw/lmtest.html">examples</a>)
<br />
<a href="http://math.chapman.edu/~jipsen/asciencepad/asciencepad.html">ASciencePad</a> is a WYSIWYG editor that integrates
<a href="http://www.tiddlywiki.com/">TiddlyWiki</a>, ASCIIMathML and ASCIIsvg graphs.<br />
It's free and works locally (no installation or server required).<br />
Useful information about <a
href="http://www.maths.ed.ac.uk/~james/ASCIIMathMLinfo.html">ASCIIMathML</a>
by <a href="http://www.maths.ed.ac.uk/~james/">James Gray</a>, including
a nice <a href="http://www.maths.ed.ac.uk/~james/ASCIIMathTutorial.html">tutorial</a>.<br />
ASCIIMathML also works with <a href="http://www.meyerweb.com/eric/tools/s5/">S5</a> (CSS
Presentation slide show; <a href="http://math.chapman.edu/~jipsen/talks/MathFest2005/JipsenMathFestSlides2005.html">S5 ASCIIMath example</a>)<br/>
and in valid
<a href="http://math.chapman.edu/~jipsen/mathml/asciimathandmathmlsvg.xhtml">
XHTML pages with standard MathML and SVG</a> in several browsers.
<br/>
ASCIIMathML is being used with Movable Type, WordPress, phpBB, and many wikis.
<br/>
Also available: A PHP port of ASCIIMathML.js to <a
href="http://www.jcphysics.com/ASCIIMath/">ASCIIMathPHP</a> by <a
href="mailto:kc56@cornell.edu">Steven Chan</a>.
</center>
<p>
This is the main page (HTML version) for the ASCIIMathML.js script which allows
incorporating mathematical formulas on webpages with a minimum of
fuss (just add one line to a webpage to load the script).
If you like what you see, choose <b>Save As...</b> in your browser
and this page should work equally well locally on your machine.
</p>
<p class="display">
<b>
This page requires Internet Explorer 6 + <a href=
"http://www.dessci.com/en/products/mathplayer/welcome.asp">MathPlayer</a>
or Netscape7.1/Mozilla/Firefox.
</b>
</p>
<p>
ASCIIMathML.js is freely available under the <a
href="http://www.gnu.org/licenses/lgpl.html">GNU Lesser General Public
License</a>. You can get your own copy from the <a href=
"http://www.chapman.edu/~jipsen/mathml/asciimathdownload/">ASCIIMathML.js
download page</a>. The script works with both HTML and XHTML webpages.
(The homepage for an XML
version is at <a href="asciimath.xml">asciimath.xml</a> but is no
longer maintained).
</p>
<p>
If you use it on a webpage, please send me an email at <a
href="mailto:jipsen@chapman.edu">jipsen@chapman.edu</a> with the URL
so that I can add a link to it on the <a
href="http://math.chapman.edu/cgi-bin/mathxml.pl?Webpages_that_use_ASCIIMathML.js">users page</a>.
(Also send me an
email if you have problems or would like to provide some feedback.)
I'm currently using ASCIIMathML on a Wikiserver for lecture notes and
<!--a href="http://math.chapman.edu/cgi-bin/mathxml.pl?Calculus_Text_Puzzles">Text
Puzzles</a>. M-->my students are also using it in Moodle
for writing and reading homework in their calculus class and
discrete mathematics class.
<font color="red">
If you just want to display MathML on HTML pages using
Netscape/Mozilla/Firefox or IE+MathPlayer, have a look at <a
href="http://www1.chapman.edu/~jipsen/mathml/mathhtml">mathhtmltest</a>
(the page includes a 50 line JavaScript program that does the trick).
</font>
</p>
<hr/>
<p>
<b>Let's test the ASCIIMathML.js translator on a simple example.</b>
</p>
<p>amath
<b>Example:</b> Solving the quadratic equation.
Suppose a x^2+b x+c=0 and a!=0. We first
divide by \a to get x^2+b/a x+c/a=0.
Then we complete the square and obtain x^2+b/a x+(b/(2a))^2-(b/(2a))^2+c/a=0.
The first three terms factor to give (x+b/(2a))^2=(b^2)/(4a^2)-c/a.
Now we take square roots on both sides and get
x+b/(2a)=+-sqrt((b^2)/(4a^2)-c/a).
Finally we subtract b/(2a) from both sides and simplify to get
the two solutions: x_(1,2)=(-b+-sqrt(b^2 - 4a c))/(2a)
</p>
endamath
<p>
<b>Here is the text that was typed in (<font color="red">using the new
auto-math-recognize mode</font> started by "a``math"):</b>
</p>
<pre>amath
<b>Example:</b> Solving the quadratic equation.
Suppose a x^2+b x+c=0 and a!=0. We first divide by \a to get x^2+b/a x+c/a=0.
Then we complete the square and obtain x^2+b/a x+(b/(2a))^2-(b/(2a))^2+c/a=0.
The first three terms factor to give (x+b/(2a))^2=(b^2)/(4a^2)-c/a.
Now we take square roots on both sides and get x+b/(2a)=+-sqrt((b^2)/(4a^2)-c/a).
Finally we move the b/(2a) to the right and simplify to get
the two solutions: x_(1,2)=(-b+-sqrt(b^2-4a c))/(2a)
</pre>
<hr/>
<center>
<b>
If you don't believe this, copy the text and paste it on the
<a href="asciimathdemo.html">ASCIIMathML.js: Try it yourself</a> demo page.
</b>
</center>
<hr/>
<h4>
Here are a few more examples:
</h4>
<table id="examples" border="5" cellpadding="10">
<tr>
<th>Type this</th>
<th>See that</th>
<th>Comment</th>
</tr>
<tr>
<td>\`x^2+y_1+z_12^34\`</td>
<td>`x^2+y_1+z_12^34`</td>
<td>subscripts as in TeX, but numbers are treated as a unit</td>
</tr>
<tr>
<td>\`sin^-1(x)\`</td>
<td>`sin^-1(x)`</td>
<td>function names are treated as constants</td>
</tr>
<tr>
<td>\`d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h\`</td>
<td>`d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h`</td>
<td>complex subscripts are bracketed, displayed under lim</td>
</tr>
<tr>
<td>\$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}\$</td>
<td>$\frac{d}{dx}f(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h}$</td>
<td>standard LaTeX notation is an alternative</td>
</tr>
<tr>
<td>\`f(x)=sum_(n=0)^oo(f^((n))(a))/(n!)(x-a)^n\`</td>
<td>`f(x)=sum_(n=0)^oo(f^((n))(a))/(n!)(x-a)^n`</td>
<td>f^((n))(a) must be bracketed, else the numerator is only `a`</td>
</tr>
<tr>
<td>\$f(x)=\sum_{n=0}^\infty\frac{f^{(n)}(a)}{n!}(x-a)^n\$</td>
<td>$f(x)=\sum_{n=0}^\infty\frac{f^{(n)}(a)}{n!}(x-a)^n$</td>
<td>standard LaTeX produces the same result</td>
</tr>
<tr>
<td>\`int_0^1f(x)dx\`</td>
<td>`int_0^1f(x)dx`</td>
<td>subscripts must come before superscripts</td>
</tr>
<tr>
<td>\`[[a,b],[c,d]]((n),(k))\`</td>
<td>`[[a,b],[c,d]]((n),(k))`</td>
<td>matrices and column vectors are simple to type</td>
</tr>
<tr>
<td>\`x/x={(1,if x!=0),(text{undefined},if x=0):}\`</td>
<td>`x/x={(1,if x!=0),(text{undefined},if x=0):}`</td>
<td>piecewise defined function are based on matrix notation</td>
</tr>
<tr>
<td>\`a//b\`</td>
<td>`a//b`</td>
<td>use // for inline fractions</td>
</tr>
<tr>
<td>\`(a/b)/(c/d)\`</td>
<td>`(a/b)/(c/d)`</td>
<td>with brackets, multiple fraction work as expected</td>
</tr>
<tr>
<td>\`a/b/c/d\`</td>
<td>`a/b/c/d`</td>
<td>without brackets the parser chooses this particular expression</td>
</tr>
<tr>
<td>\`((a*b))/c\`</td>
<td>`((a*b))/c`</td>
<td>only one level of brackets is removed; * gives standard product</td>
</tr>
<tr>
<td>\`sqrt sqrt root3x\`</td>
<td>`sqrt sqrt root3x`</td>
<td>spaces are optional, only serve to split strings that should not match</td>
</tr>
<tr>
<td>\`<< a,b >> and {:(x,y),(u,v):}\`</td>
<td>`<< a,b >> and {:(x,y),(u,v):}`</td>
<td>angle brackets and invisible brackets</td>
</tr>
<tr>
<td>\`(a,b]={x in RR | a < x <= b}\`</td>
<td>`(a,b]={x in RR | a < x <= b}`</td>
<td>grouping brackets don't have to match</td>
</tr>
<tr>
<td>\`abc-123.45^-1.1\`</td>
<td>`abc-123.45^-1.1`</td>
<td>non-tokens are split into single characters,<br/>
but decimal numbers are parsed with possible sign</td>
</tr>
<tr>
<td>\`hat(ab) bar(xy) ulA vec v dotx ddot y\`</td>
<td>`hat(ab) bar(xy) ulA vec v dotx ddot y`</td>
<td>accents can be used on any expression (work well in IE)</td>
</tr>
<tr>
<td>\`bb{AB3}.bbb(AB].cc(AB).fr{AB}.tt[AB].sf(AB)\`</td>
<td>`bb{AB3}.bbb(AB].cc(AB).fr{AB}.tt[AB].sf(AB)`</td>
<td>font commands; can use any brackets around argument</td>
</tr>
<tr>
<td>\`stackrel"def"= or \stackrel{\Delta}{=}" "("or ":=)\`</td>
<td>`stackrel"def"= or \stackrel{\Delta}{=}" "("or ":=)`</td>
<td>symbols can be stacked</td>
</tr>
<tr>
<td>\`{::}_(\ 92)^238U\`</td>
<td>`{::}_(\ 92)^238U`</td>
<td>prescripts simulated by subsuperscripts</td>
</tr>
</table>
<p>
If you are familiar with MathML, you can appreciate that this ASCII
input form is less verbose and more readable. If you are familiar with
TeX, this is still somewhat less cluttered. The aim is to have input
notation that is close to graphing calculator notation, so that
students are able to use it on webpages and in emails without having
to learn another specialized syntax.
</p>
<p>
For an explicit description of the input syntax see <a
href="asciimathsyntax.html">ASCIIMathML.js Syntax and List of
Constants</a>.
</p>
<p>
<b>Acknowledgements:</b> Many thanks to the numerous people who have
contributed to the fantastic MathML standard. Without such a
well designed standard, a project like this would be impossible.<br/>
Thanks to the many volunteers who implemented MathML in the
Gecko layout engine for Netscape7/Mozilla/Firefox.<br/>
Thanks to the people at Design Science for producing the excellent
MathPlayer plugin and making it freely available.<br/>
Finally, thanks to the designers and implementors of JavaScript. All
these tools work together fairly seemlessly to allow us to put
mathematical formulas on webpages in a convenient and inexpensive way.<br/>
And thanks to Andrew White for making a logo for ASCIIMathML (see below).
</p>
<hr/>
<div id="author">
<a href="http://www.chapman.edu/~jipsen/">Peter Jipsen</a>,
<a href="http://www.chapman.edu/">Chapman University</a>, September 2007
<a href="http://validator.w3.org/check/referer"><img border="0"
src="http://www.w3.org/Icons/valid-html401"
alt="Valid HTML 4.01!" height="31" width="88"></a>
</div>
<p><div class="display">
<a style="color:white" href="../asciimath.html">
<img src="asciimathml.jpeg" alt="ASCIIMathML"></a>
</div>
</body>
</html>

View File

@@ -0,0 +1,118 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ASCIIMath Calculator Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="ASCIIMathML.js"></script>
<!--script type="text/javascript">mathfontsize=".9em"</script-->
<style type="text/css">
#menu, #title, #subtitle, #author {text-align: center}
body {font-family: Arial; background-color:beige}
p,table {font-family: Times}
</style>
</head>
<body>
<div id="menu">
| <a href="asciimath.html">Home Page</a> |
<a href="asciimathsyntax.html">Syntax</a> |
<a href="asciimathdemo.html">Try it</a> |
<a href="asciimathcalculator.html">Calculator</a> |
<a href="http://mathcs.chapman.edu/~jipsen/mathml/asciimathdownload.html">Download</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathGraphs.html">Graphs</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathFAQ.html">ASCIIMath FAQ</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLSandbox.html">Sandbox</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathCommentsAndSuggestions.html">Comments</a> |
</div>
<hr/>
<h2 id="title">
ASCIIMath Scientific Calculator (ver 1.2)
</h2>
<h4 align="center">
A free webpage calculator with live MathML display
</h4>
<h4 align="center">
This page requires Internet Explorer 6+<a
href="http://www.dessci.com/en/products/mathplayer">MathPlayer</a>
or Mozilla/Firefox/Netscape 7+.
</h4>
<div class="ASCIIMathCalculator"></div>
<p>
More calculator areas:<br>
<textarea id="in1" rows="2" cols="40" onkeyup="calculate('in1','out1')">
2sin^-1(1)</textarea> &nbsp; <span id="out1"></span>
<p/>
<p>
<textarea id="in2" rows="2" cols="30"
onkeyup="calculate('in2','out2');calculate('in3','out3')">
a=5; b=4; c=-1; (-b+sqrt(b^2-4a*c))/(2a)
</textarea> &nbsp; <span id="out2"></span>
<br/>
<textarea id="in3" rows="1" cols="30"
onkeyup="calculate('in2','out2');calculate('in3','out3')">
(-b-sqrt(b^2-4a*c))/(2a)</textarea> &nbsp; <span id="out3"></span>
</p>
<p>
<b>Note that this is dynamic HTML running locally on your machine.</b>
<br/>
Right-click on the output to copy or view the MathML code (or have it
<b>spoken</b> in IE+MathPlayer).
</p>
<p>
<b>Some technical remarks:</b> This calculator works only in radians.
(Multiply angles by pi/180 to convert from degrees to radians.)
<br/>
The syntax is loosely based on JavaScript and a subset of ASCIIMathML.
<br/>
The multiplication symbol * can be omitted after a digit (0-9)
or a closing parenthesis.
<br/>
Available constants and functions:
<br/>
&nbsp; &nbsp; +, -, *, /, ^, pi, e, sqrt(), ln(), abs(), sign(),
floor(), ceil(), n!, C(n,k), ran(a,b,n)
<br/>
&nbsp; &nbsp; sin(), cos(), tan(), sin^-1(), cos^-1(), tan^-1(),
sinh(), cosh(), tanh(), sinh^-1(), cosh^-1(), tanh^-1()
<br/>
&nbsp; &nbsp; sec(), csc(), cot(), sec^-1(), csc^-1(), cot^-1(),
sech(), csch(), coth(), sech^-1(), csch^-1(), coth^-1()
<br/>
Values can be assigned to (legal JavaScript) variable names.
Use ";" to separate expressions.
<br/>
Any number of calculator textareas can be placed anywhere on <b>your own</b>
webpages.
</p>
ASCIIMathML and this calculator are freely available under the
<a href="http://www.gnu.org/licenses/lgpl.html">GNU Lesser General
Public License</a>. Please include a link to <a
href="http://asciimathml.sourceforge.net">asciimathml.sourceforge.net</a>
on any webpage that makes use of them, and send a link of your webpage
to <a href="mailto:jipsen@chapman.edu">jipsen@chapman.edu</a>.
<hr/>
<div id="author">
<a href="http://www.chapman.edu/~jipsen/">Peter Jipsen</a>,
<a href="http://www.chapman.edu/">Chapman University</a>, May 2007
<a href="http://validator.w3.org/check/referer"><img border="0"
src="http://www.w3.org/Icons/valid-html401"
alt="Valid HTML 4.01!" height="31" width="88"></a>
</div>
</body>
</html>

View File

@@ -0,0 +1,227 @@
Changes file for ASCIIMathML.js
===============================
Sep 27, 2007 Version 2.0
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML20.js)
- included LaTeXMathML.js and ASCIIsvg.js in the ASCIIMathML script
- changed license to GNU LGPL 2.1
- Added auto-math-recognize mode (amath ... endamath)
- Added some LaTeX environments and simple formatting
- Created Moodle filter and PmWiki cookbook
- Added MathML text labels to SVG graphs
- Fixed SVG cursor tracking in Firefox
- Added stroke/fillopacity to graphs
- Simplified syntax for graph inclusion
- SVG mouseevents are now added in the scope of the graph code
- MathML fontsize can now be magnified relative to surrounding text
-------------------------------
Aug 7, 2005 Version 1.4.7
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML147.js)
- changed IE MathML prefix from mml: to m: (default of MathPlayer, so now
<html> works without the xmlns attribute)
- for IE the script now writes out the <object ...> and <?import ...> tags
simplifying the header file significantly
- script now uses a generic onload (by www.brothercake.com) so
no need for onload="translate()" in <body> (but earlier pages still work)
- ASCIIMathML.js can now be used on any HTML page by just adding one line to
load the script. So validating your HTML pages is now possible, and use
of HTML editors is simple.
- added unparametrized macros: put <script>newcommand("short","long")</script>
on your webpage and each occurrence of "short" is replaced by "long"
- added /_ (\angle) and :. (\therefore) as symbols
- made an ASCIIMath plugin for Xinha HTML editor (see editor link on homepage)
with instant preview, template popup and builtin calculator
-------------------------------
Apr 23, 2005 Version 1.4.6
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML146.js)
- added "showasciiformulaonhover" variable; if true then pointing at a MathML
expression shows the ascii form that produces the expression
- added "decimalsign" variable; default is "."
- removed "separatetokens" option (to speed up token recognition)
- changed |-, |=, |_, _| to |--, |==, |__, __| to avoid parsing problems
e.g. |-x|, |x|=a, ||A||_1 now parse as expected
- changed parser so that "-" is unary if previous token is INFIX
e.g. now x^-y works like x^(-y) (but x-y is same as x - y)
- added "spanclassAM" option; invoked by translate(true), all math should
then be delimited by <span class="AM">...</span>; translate() works as before
-------------------------------
Jan 30, 2005 Version 1.4.5
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML145.js)
- added TEXT token type for \text{...}, \mbox{...} and "..."
- changed sin, cos, tan, ..., lcm to UNARY type (func); now 1/sinx works
- changed parser so that ^, _ have priority over /
now x_1/3^2 works like (x_1)/(3^2)
-------------------------------
Jan 14, 2005 Version 1.4.4
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML144.js)
- added "mathfontfamily" variable (default "serif")
- mathcolor and mathfontfamily can be "" to inherit values of surrounding text
- added "AMdelimiter" variables to set math delimiters (default "`" and "$")
- added LEFTRIGHT token type for "|"; now `|x|` displays like `{:|x|:}`;
a single | still parses as \mid e.g. in {x | x > 0}
-------------------------------
Dec 28, 2004 Version 1.4.3
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML143.js)
- added mapsto |->
- fixed a parsing error that was generated by incomplete fractions (1/)
- fixed parsing of negative numbers (<mn>-1</mn> is now translated to
<mrow><mo>-</mo><mn>1</mn></mrow>)
- added notifyIfNoMathML flag. If false, no note is inserted at top of page.
- included ASCIIMathCalculator.js: a small script that implements a
webpage calculator with live MathML preview
-------------------------------
Nov 12, 2004 Version 1.4.2
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML142.js)
- added constants for: setminus, vdots, ddots, glb, lub
-------------------------------
Aug 16, 2004 Version 1.4.1
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML141.js)
- fixed a typo to make the check for MathML capability work correctly
- added stackrel command (mover in MathML), e.g. stackrel{def}{=}
- added := as binary relation to get spacing right in Mozilla/Firefox/Netscape
-------------------------------
July 13, 2004 Version 1.4
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML4.js)
- cleaned up the js code, thanks to some very helpful suggestions by Alex V.
- most global variables prefixed with "AM" to avoid conflict with ASCIIsvg.js
- added macro definition ability to define dx, dy, dz, ...
e.g. now dx is replaced by {d x}, so `d/dx` can be used rather than `d/(dx)`.
Users can add their own (parameterless) macros.
- added check for MathML capability. If absent, inserts note at top of page.
- unmatched right bracket no longer ends expression. E.g. in `cosx]_0^1`
the "]" is treated simply as a constant symbol (better to use `{:cosx]_0^1`).
- numeric unicode entity names can be used for unnamed symbols, e.g. `&#x2270;`
-------------------------------
Mar 26, 2004 Version 1.3
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML3.js)
- fixed parser so that unary/binary symbols without arguments are treated
as constants (previously generated js error)
- noticed that ASCIIMathML.js does not require XML, actually works in HTML
on multiple browsers (required no change to the script)
- added `"any"` as alternative to `text{any}`
- added min, max as standard function names (subscripts go underneath)
- added o. (\odot) as symbol
- added separatetokens flag: lowercase tokens must be separated by nonletters
(if true, `sinx` is a sequence of 4 variables, instead use `sin x`)
switched off by default, can be switched on (see top of ASCIIMathML.js)
- added (experimental) doubleblankmathdelimiter so a+b is same as `a+b`
switched off by default, can be switched on (see top of ASCIIMathML.js)
-------------------------------
Feb 8, 2004 Version 1.2
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML2.js)
- added accents: hat bar ul vec dot ddot
- added sans-serif font: sf
- both `...` and $...$ are now allowed as math delimiters
- \$ and \` can now be used to insert $ or ` in plain text
- `a text{ sometext }b` now shows the space around "sometext"
- blocks of ASCIIMathML + text can be enclosed in comments <!-- -->
in which case blank lines are converted to paragraph breaks;
inside comments the < character can be used (does not cause XML error)
(use this "comment mode" with caution; future versions of IE or
Mozilla may not display it the same way)
-------------------------------
Jan 9, 2004 Version 1.1
(at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML1.js)
- added \vdash, \models (actually &vDash;!), \vartheta, \bigwedge, \bigvee,
\bigcup, \bigcap, \propto, \oint to symbol table, with ASCII equivalents
- renamed "subset, supset" to their entity names "sube, supe",
added "sub, sup" and their LaTeX equivalents \subset, \supset
- updated webpages
-------------------------------
Jan 6, 2004 Version 1.0
(now at http://www.chapman.edu/~jipsen/mathml/ASCIIMathML0.js)
- calligraphic, black board bold and fraktur fonts are finally working
also in Mozilla/Netscape 7
- added a download page
- added GNU GPL notices
===============================

View File

@@ -0,0 +1,117 @@
<html>
<head>
<title>ASCIIMathML.js demo</title>
<script type="text/javascript" src="ASCIIMathML.js"></script>
<script type="text/javascript">
translateOnLoad=false;
function display() {
var str = document.getElementById("inputText").value;
var outnode = document.getElementById("outputNode");
var n = outnode.childNodes.length;
for (var i=0; i<n; i++)
outnode.removeChild(outnode.firstChild);
outnode.appendChild(document.createTextNode(str));
AMprocessNode(outnode);
}
</script>
<style type="text/css">
#menu, #title, #subtitle, #author {text-align: center}
body {font-family: Arial; background-color:beige;}
</style>
</head>
<body onload="display()">
<div id="menu">
| <a href="asciimath.html">Home Page</a> |
<a href="asciimathsyntax.html">Syntax</a> |
<a href="asciimathdemo.html">Try it</a> |
<a href="asciimathcalculator.html">Calculator</a> |
<a href="http://mathcs.chapman.edu/~jipsen/mathml/asciimathdownload.html">Download</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathGraphs.html">Graphs</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathFAQ.html">ASCIIMath FAQ</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLSandbox.html">Sandbox</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathCommentsAndSuggestions.html">Comments</a> |
</div>
<hr/>
<h2 id="title">
ASCIIMathML.js: Try it yourself (HTML version)
</h2>
<center>
<b>
This page requires Internet Explorer 6+<a
href="http://www.dessci.com/en/products/mathplayer">MathPlayer</a>
or Mozilla/Firefox/Netscape 7+.
</b>
<p>
Edit the formulas below (the display updates dynamically).
If you know (La)TeX formula syntax, you can try some of that as well
(LaTeX formulas work best when enclosed in $-signs).
The "amath" token switches on the new auto-math-recognize mode.</p>
<form>
<textarea id="inputText" rows="10" cols="80" onkeyup="display()">
amath
Let's try some interesting formulas: E=m c^2
and e^(i pi)=-1
and AA x in CC (sin^2x+cos^2x=1)
and one more: sum_(i=1)^n i^3=((n(n+1))/2)^2
(add your own -- note that text-tokens are only recognized if separated by spaces)
</textarea>
</form>
<p>
<div id="outputNode"></div>
</p>
<hr/>
<p>
<b>Note that this is dynamic XHTML running locally on your machine!</b>
<br>
Right-click on an output formula to copy or view the MathML code.
</p>
</center>
(Copy and paste the following lines to see what symbols they produce)<br/>
<b>You can use the following ASCIIMathML constructs:</b>
<tt> `(x+1)/(x-1) x^(i+j) x_(ij) sqrt(x) root(n)(x) stackrel(+)(->) text(any) "any"`</tt><br/>
<b>Operation symbols</b>
<tt> `+ - * ** // \\ xx -: @ o+ ox sum prod ^^ ^^^ vv vvv nn nnn uu uuu`</tt><br/>
<b>Relation symbols</b>
<tt> `= != &lt; &lt;= > >= -&lt; >- in !in sub sup sube supe -= ~= ~~ prop`</tt><br/>
<b>Logical symbols</b><tt> `\and \or \not => if iff AA EE _|_ TT |-- |==`</tt><br/>
<b>Miscellaneous symbols</b>
<tt> `int oint del grad +- O/ oo aleph ... cdots \ quad qquad diamond square |__ __| |~ ~| CC NN QQ RR ZZ`</tt><br/>
<b>Standard functions</b>
<tt> `sin cos tan csc sec cot sinh cosh tanh log ln det dim lim mod gcd lcm`</tt><br/>
<b>Grouping brackets</b><tt> `( ) [ ] { } (: :) {: :}` </tt>
<b>Arrows</b><tt> `uarr darr rarr -> larr harr rArr lArr hArr` </tt><br/>
<b>Accents</b><tt> `hatx barx ulx vecx dotx ddotx` </tt>
<b>Font commands</b><tt> `bbA bbbA ccA ttA frA sfA` </tt>
<b>Matrices</b><tt> `[[a,b],[c,d]] ((1,0),(0,1))` </tt><br/>
<b>Greek letters</b><tt> `alpha beta chi delta Delta epsi eta gamma Gamma
iota kappa lambda Lambda mu nu omega Omega phi Phi pi Pi psi rho sigma Sigma
tau theta Theta upsilon xi Xi zeta`</tt>
<p>
This demo page shows that ASCIIMathML.js can be used easily to
dynamically preview mathematical formulas (client-side). E.g. here is a
(beta) webpage that can be used to <b><a
href="http://math.chapman.edu/email/">write and read
mathematical emails and discussion group articles</a></b>. Since most
email communication is still done with ASCII text (or at least not yet
with XHTML), this is a reasonable (and inexpensive) solution for
communicating with students in online math courses.
</p>
<hr/>
<div id="author">
<a href="http://www.chapman.edu/~jipsen/">Peter Jipsen</a>,
<a href="http://www.chapman.edu/">Chapman University</a>, September 2007
</div>
</body>
</html>

View File

@@ -0,0 +1,76 @@
<html>
<head>
<title>Extending ASCIIMathML</title>
<script type="text/javascript" src="ASCIIMathML.js"></script>
<script type="text/javascript">
define("!<=","\u2270")
define("!>=","\u2271")
newcommand("\\nle","\u2270")
newcommand("\\nge","\u2271")
</script>
</head>
<body bgcolor="beige">
<h2>ASCIIMathML.js: Extending the symbol table</h2>
<p>
The standard symbol table of ASCIIMathML.js does not contain many symbols.
It can be extended by adding additional symbols on any webpage that
requires them. This is done by adding a few lines of JavaScript code.
</p>
<p>
For example, suppose we want to add symbols for "not less or equal" and
"not greater or equal".
</p>
<p>
We first have to find the four-digit hexadecimal Unicode value for
these symbols by looking them up at, say, <a
href="http://www.w3.org/TR/MathML2/chapter6.html#chars.entity.tables">http://www.w3.org/TR/MathML2/chapter6.html#chars.entity.tables</a>
</p>
<p>
Next we have to decide what input strings we want to associate with these
symbols, say "!<=" and "!>=".
</p>
<p>
Finally we add the following lines to the head or body of our HTML file:
<pre style="border-style:groove">&lt;script type="text/javascript">
define("!<=","\u2270")
define("!>=","\u2271")
&lt;/script>
</pre>
</p>
<p>
Here we test the modified symbol table:
<tt>\`a !<= b !>= c\`</tt> produces `a !<= b !>= c`
</p>
<p>To add a symbol to the LaTeX commands, use the following alternate syntax:
<pre style="border-style:groove">&lt;script type="text/javascript">
newcommand("\\nle","\u2270")
newcommand("\\nge","\u2271")
&lt;/script>
</pre>
</p>
<p>
Now
<tt>\$a \nle b \nge c\$</tt> produces $a \nle b \nge c$.
</p>
<hr/>
<p>
If you know the numeric entity reference of the symbol you want to use
on an ASCIIMathML webpage, you can also refer to the symbol directly
by using that reference. E.g \`&amp;#x2270;\` produces `&#x2270;`.
If a symbol is only used occasionally, this is certainly the simplest
way to include it.
</p>
</body>
</html>

View File

@@ -0,0 +1,38 @@
<html xmlns:mml="http://www.w3.org/1998/Math/MathML">
<head>
<script type="text/javascript" src="ASCIIMathML.js"></script>
<title>ASCIIMathML sample page</title>
</head>
<body>
<h2>ASCIIMathML.js sample page</h2>
<p>
Use auto-math-recognize mode (amath here x^2 and text is
mixed endamath) or surround ASCIIMath formulas
with left-quotes:
`sum_(i=1)^n i=(n(n+1))/2` or LaTeX formulas with \$-signs
$\int_0^{\pi/2} \sin x\,dx=1$.
</p>
<p>
And here is a simple graph:
agraph plot(sin(x)) endagraph
followed by a more elaborate graph (try double-clicking it, also
while holding down shift or alt)
agraph
width=300; height=200; xmin=-5; xmax=5; xscl=1;
plot((x-2)*(x-1)*x*(x+1)*(x+2)/2,-2.5,2.5);
endagraph
</p>
<p>
Note: this page uses a relative link to ASCIIMathML.js,
so the script should be in the same folder as this sample file.
</p>
</body>
</html>

View File

@@ -0,0 +1,506 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ASCIIMathML: Syntax and constants</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="ASCIIMathML.js"></script>
<style type="text/css">
#menu, #title, #subtitle, #author {text-align: center}
body {font-family: Arial; background-color:beige}
p,table {font-family: Times}
</style>
</head>
<body>
<div id="menu">
| <a href="asciimath.html">Home Page</a> |
<a href="asciimathsyntax.html">Syntax</a> |
<a href="asciimathdemo.html">Try it</a> |
<a href="asciimathcalculator.html">Calculator</a> |
<a href="http://mathcs.chapman.edu/~jipsen/mathml/asciimathdownload.html">Download</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathGraphs.html">Graphs</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathFAQ.html">ASCIIMath FAQ</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathMLSandbox.html">Sandbox</a> |
<a href="http://mathcs.chapman.edu/~jipsen/math/index.php/ASCIIMathML/ASCIIMathCommentsAndSuggestions.html">Comments</a> |
</div>
<hr/>
<h2 id="title">
ASCIIMathML.js (ver 2.0): Syntax and List of Constants
</h2>
<h4 id="subtitle">
The main aims of the ASCIIMathML syntax are: -- 1. close to standard
mathematical notation -- 2. easy to read -- 3. easy to type
</h4>
<p>
You can use your favorite editor to write HTML pages that use this
JavaScript program. If the page is viewed by a browser that does not
support MathML or JavaScript, the ASCII formulas are still quite
readable. Most users will not have to read the technicalities on
this page. If you type
</p>
<pre>amath x^2 or a_(m n) or a_{m n} or (x+1)/y or sqrtx endamath</pre>
<p>
you pretty much get what you expect: amath x^2 or a_(m n) or a_{m n} or
(x+1)/y or sqrtx endamath. The a``math ... enda``math tokens are used to
start/stop the <b>new auto-math-recognize mode</b>. Of course one can still use
the \`...\` back-quotes to delimit math formulas explicitly
(\$...\$ should only be used for LaTeX formulas).
The choice of grouping parenthesis is up to you
(they don't have to match either). If the displayed expression can be
parsed uniquely without them, they are omitted. Printing the table of
constant symbols (below) may be helpful (but is not necessary if you
know the LaTeX equivalents).
</p>
<p>
It is hoped that this simple input format for MathML will further
encourage its use on the web. The remainder of this page gives a fairly
detailed specification of the ASCII syntax. <b>The expressions described here
correspond to a wellspecified subset of Presentation MathML and behave
in a predictable way.</b>
</p>
<p>
The syntax is very permissive and does not generate syntax
errors. This allows mathematically incorrect expressions to be
displayed, which is important for teaching purposes. It also causes
less frustration when previewing formulas.
</p>
<p>
The parser uses no operator precedence and only respects the grouping
brackets, subscripts, superscript, fractions and (square) roots. This
is done for reasons of efficiency and generality. The resulting MathML
code can quite easily be processed further to ensure additional syntactic
requirements of any particular application.
</p>
<p>
<b>The grammar:</b> Here is a definition of the grammar used to parse
ASCIIMathML expressions. In the Backus-Naur form given below, the
letter on the left of the ::= represents a category of symbols that
could be one of the possible sequences of symbols listed on the right.
The vertical bar | separates the alternatives.
</p>
<pre>c ::= [A-z] | numbers | greek letters | other constant symbols (see below)
u ::= 'sqrt' | 'text' | 'bb' | other unary symbols for font commands
b ::= 'frac' | 'root' | 'stackrel' binary symbols
l ::= ( | [ | { | (: | {: left brackets
r ::= ) | ] | } | :) | :} right brackets
S ::= c | lEr | uS | bSS | "any" simple expression
E ::= SE | S/S |S_S | S^S | S_S^S expression (fraction, sub-, super-, subsuperscript)
</pre>
<p>
<b>The translation rules:</b> Each terminal symbol is translated into
a corresponding MathML node. The constants are mostly converted to
their respective Unicode symbols. The other expressions are converted
as follows:<br/>
<table>
<tr><td>l`S`r</td><td>`to`</td><td>&lt;mrow>l`S`r&lt;/mrow>
(note that any pair of brackets can be used to delimit subexpressions,
they don't have to match)</td></tr>
<tr><td>sqrt `S`</td><td>`to`</td><td>&lt;msqrt>`S'`&lt;/msqrt></td></tr>
<tr><td>text `S`</td><td>`to`</td><td>&lt;mtext>`S'`&lt;/mtext></td></tr>
<tr><td>"any"</td><td>`to`</td><td>&lt;mtext>any&lt;/mtext></td></tr>
<tr><td>
frac `S_1` `S_2`</td><td>`to`</td><td>&lt;mfrac>`S_1'` `S_2'`&lt;/mfrac>
</td></tr>
<tr><td>
root `S_1` `S_2`</td><td>`to`</td><td>&lt;mroot>`S_2'` `S_1'`&lt;/mroot>
</td></tr>
<tr><td>
stackrel `S_1` `S_2`</td><td>`to`</td><td>&lt;mover>`S_2'` `S_1'`&lt;/mover>
</td></tr>
<tr><td>
`S_1`/`S_2`</td><td>`to`</td><td>&lt;mfrac>`S_1'` `S_2'`&lt;/mfrac>
</td></tr>
<tr><td>
`S_1`_`S_2`</td><td>`to`</td><td>&lt;msub>`S_1` `S_2'`&lt;/msub>
</td></tr>
<tr><td>
`S_1`^`S_2`</td><td>`to`</td><td>&lt;msup>`S_1` `S_2'`&lt;/msup>
</td></tr>
<tr><td>
`S_1`_`S_2`^`S_3`</td><td>`to`</td>
<td>&lt;msubsup>`S_1` `S_2'` `S_3'`&lt;/msubsup> or
&lt;munderover>`S_1` `S_2'` `S_3'`&lt;/munderover> (in some cases)
</td></tr>
</table>
In the rules above, the expression `S'` is the same as `S`, except that if
`S` has an outer level of brackets, then `S'` is the expression inside
these brackets.
<p>
<b>Matrices:</b> A simple syntax for matrices is also recognized:
<br/>
<tt>l(`S_(11)`,...,`S_(1n)`),(...),(`S_(m1)`,...,`S_(mn)`)r</tt>
&#x00A0; &#x00A0; or &#x00A0; &#x00A0;
<tt>l[`S_(11)`,...,`S_(1n)`],[...],[`S_(m1)`,...,`S_(mn)`]r</tt>.
<br/>
Here <tt>l</tt> and <tt>r</tt> stand for any of the left and right
brackets (just like in the grammar they do not have to match). Both of
these expressions are translated to
<br/>
&lt;mrow>l&lt;mtable>&lt;mtr>&lt;mtd>`S_(11)`&lt;/mtd>...
&lt;mtd>`S_(1n)`&lt;/mtd>&lt;/mtr>...
&lt;mtr>&lt;mtd>`S_(m1)`&lt;/mtd>...
&lt;mtd>`S_(mn)`&lt;/mtd>&lt;/mtr>&lt;/mtable>r&lt;/mrow>.
<br/>
For example
<tt>{(S_(11),...,S_(1n)),(vdots,ddots,vdots),(S_(m1),...,S_(mn))]</tt>
displays as `{(S_(11),...,S_(1n)),(vdots,ddots,vdots),(S_(m1),...,S_(mn))]`.
<br/>
Note that each row must have the same number of expressions, and there
should be at least two rows.
<p>
<b>Tokenization:</b> The input formula is broken into tokens using a
"longest matching initial substring search". Suppose the input formula
has been processed from left to right up to a fixed position. The
longest string from the list of constants (given below) that matches
the initial part of the remainder of the formula is the next token. If
there is no matching string, then the first character of the remainder
is the next token. The symbol table at the top of the ASCIIMathML.js
script specifies whether a symbol is a math operator (surrounded by a
&lt;mo> tag) or a math identifier (surrounded by a &lt;mi> tag). For
single character tokens, letters are treated as math identifiers, and
non-alphanumeric characters are treated as math operators. For digits,
see "Numbers" below.
<p>
Spaces are significant when they separate characters and thus prevent
a certain string of characters from matching one of the
constants. Multiple spaces and end-of-line characters are equivalent
to a single space.
</p>
<h4>
Now for a complete list of constants (<a
href="http://math.chapman.edu/cgi-bin/mathxml.pl?Complete_list_of_LaTeX_constants">standard
LaTeX names</a> also work):
</h4>
<p>
Numbers: A string of digits, optionally preceded by a minus sign, and
optionally followed by a decimal point (a period) and another string
of digits, is parsed as a single token and converted to a MathML
number, i.e., enclosed with the &lt;mn> tag. If it is not desirable to
have a preceding minus sign be part of the number, a space should be inserted.
Thus <tt>x-1</tt> is converted to &lt;mi>x&lt;/mi>&lt;mn>-1&lt;/mn>, whereas
<tt>x - 1</tt> is converted to &lt;mi>x&lt;/mi>&lt;mo>-&lt;/mo>&lt;mn>1&lt;/mn>.
</p>
<p>
Greek letters:
alpha `alpha`
beta `beta`
chi `chi`
delta `delta`
Delta `Delta`
epsilon `epsilon`
varepsilon `varepsilon`
eta `eta`
gamma `gamma`
Gamma `Gamma`
iota `iota`
kappa `kappa`
lambda `lambda`
Lambda `Lambda`
mu `mu`
nu `nu`
omega `omega`
Omega `Omega`
phi `phi`
varphi `varphi`
Phi `Phi`
pi `pi`
Pi `Pi`
psi `psi`
Psi `Psi`
rho `rho`
sigma `sigma`
Sigma `Sigma`
tau `tau`
theta `theta`
vartheta `vartheta`
Theta `Theta`
upsilon `upsilon`
xi `xi`
Xi `Xi`
zeta `zeta`
</p>
<table border="5" cellpadding="10">
<tr valign="top"><td>
Operation symbols
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>+</td><td>`+`</td></tr>
<tr><td>-</td><td>`-`</td></tr>
<tr><td>*</td><td>`*`</td></tr>
<tr><td>**</td><td>`**`</td></tr>
<tr><td>//</td><td>`//`</td></tr>
<tr><td>\\</td><td>`\\ `</td></tr>
<tr><td>xx</td><td>`xx`</td></tr>
<tr><td>-:</td><td>`-:`</td></tr>
<tr><td>@</td><td>`@`</td></tr>
<tr><td>o+</td><td>`o+`</td></tr>
<tr><td>ox</td><td>`ox`</td></tr>
<tr><td>o.</td><td>`o.`</td></tr>
<tr><td>sum</td><td>`sum`</td></tr>
<tr><td>prod</td><td>`prod`</td></tr>
<tr><td>^^</td><td>`^^`</td></tr>
<tr><td>^^^</td><td>`^^^`</td></tr>
<tr><td>vv</td><td>`vv`</td></tr>
<tr><td>vvv</td><td>`vvv`</td></tr>
<tr><td>nn</td><td>`nn`</td></tr>
<tr><td>nnn</td><td>`nnn`</td></tr>
<tr><td>uu</td><td>`uu`</td></tr>
<tr><td>uuu</td><td>`uuu`</td></tr>
</table>
</td><td>
Relation symbols
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>=</td><td>`=`</td></tr>
<tr><td>!=</td><td>`!=`</td></tr>
<tr><td>< </td><td>`<`</td></tr>
<tr><td>></td><td>`>`</td></tr>
<tr><td><=</td><td>`<=`</td></tr>
<tr><td>>=</td><td>`>=`</td></tr>
<tr><td>-<</td><td>`-<`</td></tr>
<tr><td>>-</td><td>`>-`</td></tr>
<tr><td>in</td><td>`in`</td></tr>
<tr><td>!in</td><td>`notin`</td></tr>
<tr><td>sub</td><td>`sub`</td></tr>
<tr><td>sup</td><td>`sup`</td></tr>
<tr><td>sube</td><td>`sube`</td></tr>
<tr><td>supe</td><td>`supe`</td></tr>
<tr><td>-=</td><td>`-=`</td></tr>
<tr><td>~=</td><td>`~=`</td></tr>
<tr><td>~~</td><td>`~~`</td></tr>
<tr><td>prop</td><td>`prop`</td></tr>
</table>
</td><td>
Logical symbols
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>and</td><td>`and`</td></tr>
<tr><td>or</td><td>`or`</td></tr>
<tr><td>not</td><td>`not`</td></tr>
<tr><td>=></td><td>`=>`</td></tr>
<tr><td>if</td><td>`if`</td></tr>
<tr><td>iff</td><td>`iff`</td></tr>
<tr><td>AA</td><td>`AA`</td></tr>
<tr><td>EE</td><td>`EE`</td></tr>
<tr><td>_|_</td><td>`_|_`</td></tr>
<tr><td>TT</td><td>`TT`</td></tr>
<tr><td>|--</td><td>`|--`</td></tr>
<tr><td>|==</td><td>`|==`</td></tr>
</table>
<p>
Grouping brackets
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>(</td><td>`(`</td></tr>
<tr><td>)</td><td>`)`</td></tr>
<tr><td>[</td><td>`[`</td></tr>
<tr><td>]</td><td>`]`</td></tr>
<tr><td>{</td><td>`{`</td></tr>
<tr><td>}</td><td>`}`</td></tr>
<tr><td>(:</td><td>`(:`</td></tr>
<tr><td>:)</td><td>`:)`</td></tr>
<tr><td>{:</td><td>`{:`</td></tr>
<tr><td>:}</td><td>`{::}`</td></tr>
</table>
</td><td>
Miscellaneous symbols
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>int</td><td>`int`</td></tr>
<tr><td>oint</td><td>`oint`</td></tr>
<tr><td>del</td><td>`del`</td></tr>
<tr><td>grad</td><td>`grad`</td></tr>
<tr><td>+-</td><td>`+-`</td></tr>
<tr><td>O/</td><td>`O/`</td></tr>
<tr><td>oo</td><td>`oo`</td></tr>
<tr><td>aleph</td><td>`aleph`</td></tr>
<tr><td>/_</td><td>`/_`</td></tr>
<tr><td>:.</td><td>`:.`</td></tr>
<tr><td>|...|</td><td>|`...`|</td></tr>
<tr><td>|cdots|</td><td>|`cdots`|</td></tr>
<tr><td>vdots</td><td>`vdots`</td></tr>
<tr><td>ddots</td><td>`ddots`</td></tr>
<tr><td>|\ |</td><td>|`\ `|</td></tr>
<tr><td>|quad|</td><td>|`quad`|</td></tr>
<tr><td>diamond</td><td>`diamond`</td></tr>
<tr><td>square</td><td>`square`</td></tr>
<tr><td>|__</td><td>`|__`</td></tr>
<tr><td>__|</td><td>`__|`</td></tr>
<tr><td>|~</td><td>`|~`</td></tr>
<tr><td>~|</td><td>`~|`</td></tr>
<tr><td>CC</td><td>`CC`</td></tr>
<tr><td>NN</td><td>`NN`</td></tr>
<tr><td>QQ</td><td>`QQ`</td></tr>
<tr><td>RR</td><td>`RR`</td></tr>
<tr><td>ZZ</td><td>`ZZ`</td></tr>
</table>
</td><td>
Standard functions
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>sin</td><td>`sin`</td></tr>
<tr><td>cos</td><td>`cos`</td></tr>
<tr><td>tan</td><td>`tan`</td></tr>
<tr><td>csc</td><td>`csc`</td></tr>
<tr><td>sec</td><td>`sec`</td></tr>
<tr><td>cot</td><td>`cot`</td></tr>
<tr><td>sinh</td><td>`sinh`</td></tr>
<tr><td>cosh</td><td>`cosh`</td></tr>
<tr><td>tanh</td><td>`tanh`</td></tr>
<tr><td>log</td><td>`log`</td></tr>
<tr><td>ln</td><td>`ln`</td></tr>
<tr><td>det</td><td>`det`</td></tr>
<tr><td>dim</td><td>`dim`</td></tr>
<tr><td>lim</td><td>`lim`</td></tr>
<tr><td>mod</td><td>`mod`</td></tr>
<tr><td>gcd</td><td>`gcd`</td></tr>
<tr><td>lcm</td><td>`lcm`</td></tr>
<tr><td>min</td><td>`min`</td></tr>
<tr><td>max</td><td>`max`</td></tr>
</table>
<p>
Accents
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>hat x</td><td>`hat x`</td></tr>
<tr><td>bar x</td><td>`bar x`</td></tr>
<tr><td>ul x</td><td>`ul x`</td></tr>
<tr><td>vec x</td><td>`vec x`</td></tr>
<tr><td>dot x</td><td>`dot x`</td></tr>
<tr><td>ddot x</td><td>`ddot x`</td></tr>
</table>
</td><td>
Arrows
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>uarr</td><td>`uarr`</td></tr>
<tr><td>darr</td><td>`darr`</td></tr>
<tr><td>rarr</td><td>`rarr`</td></tr>
<tr><td>-></td><td>`->`</td></tr>
<tr><td>|-></td><td>`|->`</td></tr>
<tr><td>larr</td><td>`larr`</td></tr>
<tr><td>harr</td><td>`harr`</td></tr>
<tr><td>rArr</td><td>`rArr`</td></tr>
<tr><td>lArr</td><td>`lArr`</td></tr>
<tr><td>hArr</td><td>`hArr`</td></tr>
</table>
<p>
Font commands
<table border="5" cellpadding="10">
<tr><th>Type</th><th>See</th></tr>
<tr><td>bb A</td><td>`bb A`</td></tr>
<tr><td>bbb A</td><td>`bbb A`</td></tr>
<tr><td>cc A</td><td>`cc A`</td></tr>
<tr><td>tt A</td><td>`tt A`</td></tr>
<tr><td>fr A</td><td>`fr A`</td></tr>
<tr><td>sf A</td><td>`sf A`</td></tr>
</table>
</td></tr>
</table>
<p>
Of course you may want or need other symbols from the thousands of <a
href="http://www.ctan.org/tex-archive/info/symbols/comprehensive/symbols-letter.pdf">LaTeX
symbols</a> or <a
href="http://www.alanwood.net/unicode/#links">unicode
symbols</a>. Fortunately ASCIIMathML.js is very <a
href="asciimathextend.html">easy
to extend</a>, so you can tailor it to your specific needs. (This
could be compared to the LaTeX macro files that many users have
developed over the years.)
</p>
<!--p>
Large files with many formulas can take quite some time to display,
especially on older hardware. To address this problem, there is a
version ASCIIMathMLite.js that has a shorter symbol table (without the
LaTeX symbol names) and slightly simplified parser. Send me an email
at <a href="mailto:jipsen@chapman.edu">jipsen@chapman.edu</a> if you
would like a copy.
</p>
<p>
Another version that also recognizes some <a
href="http://www.latex-project.org/">LaTeX</a> layout commands and
(the fairly standard) <a
href="http://en.wikipedia.org/wiki/Wikipedia:How_to_edit_a_page">Wiki
formatting codes</a> for ASCII text is in the works. This further
simplifies producing mathematical content for the web. However such a
development is less easily justified since there are good free HTML
editors and the HTML syntax is a well-established standard that is
simple enough to be coded by hand.
</p-->
<hr/>
<div id="author">
<a href="http://www.chapman.edu/~jipsen/">Peter Jipsen</a>,
<a href="http://www.chapman.edu/">Chapman University</a>, September 2007
<a href="http://validator.w3.org/check/referer"><img border="0"
src="http://www.w3.org/Icons/valid-html401"
alt="Valid HTML 4.01!" height="31" width="88"></a>
</div>
</body>
</html>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg id="root" xml:space="preserve" width="100%" height="100%"
preserveAspectRatio="xMidYMid meet"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http:///www.w3.org/1999/xlink">
</svg>

After

Width:  |  Height:  |  Size: 346 B

View File

@@ -0,0 +1,8 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
</head>
<body>
<br />
</body>
</html>

View File

@@ -0,0 +1,37 @@
ASCIIMathML.js
Brief Instructions (2007-9-28)
This script can be used in any html page and also in systems like Moodle.
The license is LGPL (see top of ASCIIMathML.js for more info).
In a html page, just add the following line near the top of your file:
<script type="text/javascript" src="ASCIIMathML.js"></script>
To install in Moodle, just move this asciimath-x.y.z folder into moodle/filter,
rename the folder "asciimath" and go to the admin panel Modules->Filters
to switch it on.
Then try some ASCIIMath on your webpages: `x/y`
or LaTeX $\sqrt{x}$ and $$\int_0^1 x^2 dx$$ (only a \emph{subset} works,
including a few environments like \begin{theorem}... and \begin{proof})
Try some graphics like agraph plot(sin(x)) endagraph or
\begin{graph}plot(sin(x))\end{graph}
Try the auto-math-recognize mode: amath here we can mix x^2 and text endamath
All this is supposed to work in Firefox on many platforms (recommended;
you may be asked to install math fonts) and in Internet Explorer (only
on WinXP and you have to install MathPlayer and Adobe SVGview).
For more examples, see http://www.chapman.edu/~jipsen/asciimath.html and
http://mathcs.chapman.edu/~jipsen/math
If you use this script on the web, please send an email to jipsen@chapman.edu
and put a link to http://www.chapman.edu/~jipsen/asciimath.html on your page.
Best wishes with ASCIIMathML.js
Peter Jipsen

View File

@@ -0,0 +1,362 @@
Mozilla Public License, version 2.0
1. Definitions
1.1. "Contributor"
means each individual or legal entity that creates, contributes to the
creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used by a
Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached the
notice in Exhibit A, the Executable Form of such Source Code Form, and
Modifications of such Source Code Form, in each case including portions
thereof.
1.5. "Incompatible With Secondary Licenses"
means
a. that the initial Contributor has attached the notice described in
Exhibit B to the Covered Software; or
b. that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the terms of
a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in a
separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible, whether
at the time of the initial grant or subsequently, any and all of the
rights conveyed by this License.
1.10. "Modifications"
means any of the following:
a. any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered Software; or
b. any new file in Source Code Form that contains any Covered Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the License,
by the making, using, selling, offering for sale, having made, import,
or transfer of either its Contributions or its Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU Lesser
General Public License, Version 2.1, the GNU Affero General Public
License, Version 3.0, or any later versions of those licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that controls, is
controlled by, or is under common control with You. For purposes of this
definition, "control" means (a) the power, direct or indirect, to cause
the direction or management of such entity, whether by contract or
otherwise, or (b) ownership of more than fifty percent (50%) of the
outstanding shares or beneficial ownership of such entity.
2. License Grants and Conditions
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
a. under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
b. under Patent Claims of such Contributor to make, use, sell, offer for
sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
a. for any code that a Contributor has removed from Covered Software; or
b. for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
c. under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights to
grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
Section 2.1.
3. Responsibilities
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
a. such Covered Software must also be made available in Source Code Form,
as described in Section 3.1, and You must inform recipients of the
Executable Form how they can obtain a copy of such Source Code Form by
reasonable means in a timely manner, at a charge no more than the cost
of distribution to the recipient; and
b. You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter the
recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty, or
limitations of liability) contained within the Source Code Form of the
Covered Software, except that You may alter any license notices to the
extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
If it is impossible for You to comply with any of the terms of this License
with respect to some or all of the Covered Software due to statute,
judicial order, or regulation then You must: (a) comply with the terms of
this License to the maximum extent possible; and (b) describe the
limitations and the code they affect. Such description must be placed in a
text file included with all distributions of the Covered Software under
this License. Except to the extent prohibited by statute or regulation,
such description must be sufficiently detailed for a recipient of ordinary
skill to be able to understand it.
5. Termination
5.1. The rights granted under this License will terminate automatically if You
fail to comply with any of its terms. However, if You become compliant,
then the rights granted under this License from a particular Contributor
are reinstated (a) provisionally, unless and until such Contributor
explicitly and finally terminates Your grants, and (b) on an ongoing
basis, if such Contributor fails to notify You of the non-compliance by
some reasonable means prior to 60 days after You have come back into
compliance. Moreover, Your grants from a particular Contributor are
reinstated on an ongoing basis if such Contributor notifies You of the
non-compliance by some reasonable means, this is the first time You have
received notice of non-compliance with this License from such
Contributor, and You become compliant prior to 30 days after Your receipt
of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
license agreements (excluding distributors and resellers) which have been
validly granted by You or Your distributors under this License prior to
termination shall survive termination.
6. Disclaimer of Warranty
Covered Software is provided under this License on an "as is" basis,
without warranty of any kind, either expressed, implied, or statutory,
including, without limitation, warranties that the Covered Software is free
of defects, merchantable, fit for a particular purpose or non-infringing.
The entire risk as to the quality and performance of the Covered Software
is with You. Should any Covered Software prove defective in any respect,
You (not any Contributor) assume the cost of any necessary servicing,
repair, or correction. This disclaimer of warranty constitutes an essential
part of this License. No use of any Covered Software is authorized under
this License except under this disclaimer.
7. Limitation of Liability
Under no circumstances and under no legal theory, whether tort (including
negligence), contract, or otherwise, shall any Contributor, or anyone who
distributes Covered Software as permitted above, be liable to You for any
direct, indirect, special, incidental, or consequential damages of any
character including, without limitation, damages for lost profits, loss of
goodwill, work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses, even if such party shall have been
informed of the possibility of such damages. This limitation of liability
shall not apply to liability for death or personal injury resulting from
such party's negligence to the extent applicable law prohibits such
limitation. Some jurisdictions do not allow the exclusion or limitation of
incidental or consequential damages, so this exclusion and limitation may
not apply to You.
8. Litigation
Any litigation relating to this License may be brought only in the courts
of a jurisdiction where the defendant maintains its principal place of
business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions. Nothing
in this Section shall prevent a party's ability to bring cross-claims or
counter-claims.
9. Miscellaneous
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides that
the language of a contract shall be construed against the drafter shall not
be used to construe this License against a Contributor.
10. Versions of the License
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses If You choose to distribute Source Code Form that is
Incompatible With Secondary Licenses under the terms of this version of
the License, the notice described in Exhibit B of this License must be
attached.
Exhibit A - Source Code Form License Notice
This Source Code Form is subject to the
terms of the Mozilla Public License, v.
2.0. If a copy of the MPL was not
distributed with this file, You can
obtain one at
http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular file,
then You may include the notice in a location (such as a LICENSE file in a
relevant directory) where a recipient would be likely to look for such a
notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
This Source Code Form is "Incompatible
With Secondary Licenses", as defined by
the Mozilla Public License, v. 2.0.

View File

@@ -0,0 +1,5 @@
# Badge Studio
A tool for designing badges
Preview: http://studio.andrewhayward.net

View File

@@ -0,0 +1,266 @@
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans Light'),
local('OpenSans-Light'),
url('../fonts/opensans-light.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'),
local('OpenSans'),
url('../fonts/opensans.woff') format('woff');
}
template {
display: none;
}
.wrapper {
max-width: 320px;
min-width: 180px;
margin: 0 auto;
padding: 20px 600px 20px 20px;
position: relative;
}
.wrapper:before,
.wrapper:after {
content: "";
position: absolute;
bottom: 20px;
box-shadow: 0 0 20px rgba(0,0,0,0.4);
z-index: -1;
width: 50%;
height: 25%;
}
.wrapper:before {
left: 35px;
-webkit-transform: rotate(-1deg);
-webkit-transform-origin: 0 100%;
-moz-transform: rotate(-1deg);
-moz-transform-origin: 0 100%;
transform: rotate(-1deg);
transform-origin: 0 100%;
}
.wrapper:after {
right: 35px;
-webkit-transform: rotate(1deg);
-webkit-transform-origin: 100% 100%;
-moz-transform: rotate(1deg);
-moz-transform-origin: 100% 100%;
transform: rotate(1deg);
transform-origin: 100% 100%;
}
.header {
margin: 0 -532px 20px 0;
padding: 0 20px;
text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.74902);
}
.title {
margin: 0;
font-weight: 100;
font-size: 48px;
letter-spacing: -2px;
}
.subtitle {
overflow: hidden;
position: absolute;
left: -999em;
width: 0;
height: 0;
}
.content .settings {
position: absolute;
right: 0.25em;
bottom: 0.25em;
font-size: 1.5em;
border: none;
background: none;
color: #999;
cursor: pointer;
}
.content .settings:focus,
.content .settings:hover {
color: inherit;
}
#output {
width: 340px;
height: 340px;
margin: auto;
}
.label {
margin: 0 0 0.25em 0;
font-weight: normal;
font-size: 1em;
color: #666;
}
.item {
margin: 0 0 1em 0;
min-height: 2em;
}
.item label {
font-size: 0.8em;
display: block;
}
.overlay {
position: absolute;
top: -1px;
left: -1px;
right: -1px;
bottom: -1px;
color: #484848;
border: solid 1px #EEE;
border-radius: 3px;
background: rgba(255,255,255,0.95);
overflow: auto;
}
.overlay.hidden {
display: none;
}
.overlay .header {
position: absolute;
top: 0.5em;
left: 0.5em;
right: 0.5em;
height: 2em;
border-bottom: solid 1px #999;
margin: 0;
padding: 1em;
}
.overlay .header .title {
font-size: 1.25em;
font-weight: bold;
margin: 0;
padding: 0;
letter-spacing: 0;
}
.overlay .header label {
margin-right: 1em;
}
.overlay .header input {
font: inherit;
width: 25%;
}
.overlay .header button {
cursor: pointer;
font-size: 2em;
border: none;
background: none;
position: absolute;
top: 50%;
right: 0;
margin-top: -0.66em;
}
.overlay .hidden {
position: absolute;
left: -99em;
}
.overlay .panel {
position: absolute;
top: 5em;
left: 0.5em;
right: 0.5em;
bottom: 0.5em;
overflow: auto;
margin: 0;
padding: 0.5em;
}
.overlay ul {
margin: 0;
padding: 0;
list-style: none;
}
.overlay li {
margin: 0;
padding: 0;
display: inline-block;
}
.overlay li label {
font-size: 4em;
width: 1.5em;
height: 1em;
line-height: 1em;
padding: 0.25em 0;
cursor: pointer;
border-radius: 10px;
text-align: center;
color: #666;
}
.overlay .fa-:before {
content: "\00A0";
}
.overlay li :focus + label,
.overlay li label:hover {
background: rgba(0,0,0,0.05);
color: #333;
}
.overlay li :focus + label {
outline: -webkit-focus-ring-color auto 5px;
}
.overlay li :checked + label {
background: rgba(0,0,0,0.1);
color: #000;
}
#raster {
-webkit-transform-origin: 50% 25%;
-moz-transform-origin: 50% 25%;
transform-origin: 50% 25%;
max-width: 100%;
}
@media screen and (max-width: 800px) {
.wrapper {
width: auto;
max-width: 100%;
min-width: 0;
padding: 5px;
margin: 0;
}
.header {
margin: 0 0 20px;
}
.content {
margin-right: 0;
padding-right: 20px;
}
#output {
float: none;
margin: 0 auto;
max-width: 100%;
height: auto;
}
}

View File

@@ -0,0 +1,504 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="fontawesomeregular" horiz-adv-x="1536" >
<font-face units-per-em="1792" ascent="1536" descent="-256" />
<missing-glyph horiz-adv-x="448" />
<glyph unicode=" " horiz-adv-x="448" />
<glyph unicode="&#x09;" horiz-adv-x="448" />
<glyph unicode="&#xa0;" horiz-adv-x="448" />
<glyph unicode="&#xa8;" horiz-adv-x="1792" />
<glyph unicode="&#xa9;" horiz-adv-x="1792" />
<glyph unicode="&#xae;" horiz-adv-x="1792" />
<glyph unicode="&#xb4;" horiz-adv-x="1792" />
<glyph unicode="&#xc6;" horiz-adv-x="1792" />
<glyph unicode="&#xd8;" horiz-adv-x="1792" />
<glyph unicode="&#x2000;" horiz-adv-x="768" />
<glyph unicode="&#x2001;" horiz-adv-x="1537" />
<glyph unicode="&#x2002;" horiz-adv-x="768" />
<glyph unicode="&#x2003;" horiz-adv-x="1537" />
<glyph unicode="&#x2004;" horiz-adv-x="512" />
<glyph unicode="&#x2005;" horiz-adv-x="384" />
<glyph unicode="&#x2006;" horiz-adv-x="256" />
<glyph unicode="&#x2007;" horiz-adv-x="256" />
<glyph unicode="&#x2008;" horiz-adv-x="192" />
<glyph unicode="&#x2009;" horiz-adv-x="307" />
<glyph unicode="&#x200a;" horiz-adv-x="85" />
<glyph unicode="&#x202f;" horiz-adv-x="307" />
<glyph unicode="&#x205f;" horiz-adv-x="384" />
<glyph unicode="&#x2122;" horiz-adv-x="1792" />
<glyph unicode="&#x221e;" horiz-adv-x="1792" />
<glyph unicode="&#x2260;" horiz-adv-x="1792" />
<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M93 1350q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78z" />
<glyph unicode="&#xf001;" d="M0 -64q0 50 34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5 q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89z" />
<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M0 32v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5 t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768zM128 1120q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317 q54 43 100.5 115.5t46.5 131.5v11v13.5t-0.5 13t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5z" />
<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M0 940q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138z " />
<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48z" />
<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354 q-25 27 -25 48zM221 829l306 -297l-73 -421l378 199l377 -199l-72 421l306 297l-422 62l-189 382l-189 -382z" />
<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M0 131q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5q0 -120 -73 -189.5t-194 -69.5 h-874q-121 0 -194 69.5t-73 189.5zM320 1024q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5z" />
<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M0 -96v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 64v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45zM128 320q0 -26 19 -45t45 -19h128 q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM128 704q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM128 1088q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19 h-128q-26 0 -45 -19t-19 -45v-128zM512 -64q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512zM512 704q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512zM1536 64 v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45zM1536 320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM1536 704q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128zM1536 1088q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128z" />
<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M0 128v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM0 896v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM896 128v384q0 52 38 90t90 38h512q52 0 90 -38 t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM896 896v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90z" />
<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M0 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68zM640 1120v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 608v192 q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1280 1120v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68z" />
<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M0 96v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 96v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68zM640 608v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68zM640 1120v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68z" />
<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M121 608q0 40 28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68t-28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68z" />
<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M110 214q0 40 28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68t-28 -68l-294 -294l294 -294q28 -28 28 -68t-28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294 q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68z" />
<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM384 672v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224q13 0 22.5 -9.5t9.5 -22.5v-64 q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M0 704q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90t-37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5z M256 704q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM384 672v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf011;" d="M0 640q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181 q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298zM640 768v640q0 52 38 90t90 38t90 -38t38 -90v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90z" />
<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M0 -96v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM384 -96v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM768 -96v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576 q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1152 -96v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1536 -96v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf013;" d="M0 531v222q0 12 8 23t19 13l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10 q129 -119 165 -170q7 -8 7 -22q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108 q-44 -23 -91 -38q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5z M512 640q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M0 1056v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23zM256 76q0 -22 7 -40.5 t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5v948h-896v-948zM384 224v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM640 224v576q0 14 9 23t23 9h64 q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23zM896 224v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M26 636.5q1 13.5 11 21.5l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5zM256 64 v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf016;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22 v-376z" />
<glyph unicode="&#xf017;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 544v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M50 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256 q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73zM809 540q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4z" />
<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M0 96v320q0 40 28 68t68 28h465l135 -136q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68zM325 985q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39q17 -41 -14 -70 l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70zM1152 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM1408 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf01a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM418 620q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35z" />
<glyph unicode="&#xf01b;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM416 672q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf01c;" d="M0 64v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552q25 -61 25 -123v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM197 576h316l95 -192h320l95 192h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8 t-2.5 -8z" />
<glyph unicode="&#xf01d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 320v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55t-32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56z" />
<glyph unicode="&#xf01e;" d="M0 640q0 156 61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5 t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298z" />
<glyph unicode="&#xf021;" d="M0 0v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129 q-19 -19 -45 -19t-45 19t-19 45zM18 800v7q65 268 270 434.5t480 166.5q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179 q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M0 160v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM128 160q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832z M256 288v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 544v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5z M256 800v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 288v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5z M512 544v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5zM512 800v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5z " />
<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M0 96v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68zM320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192z" />
<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M64 1280q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110zM320 320v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19 q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M0 650q0 151 67 291t179 242.5t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32 q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32 q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314z" />
<glyph unicode="&#xf026;" horiz-adv-x="768" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45zM908 464q0 21 12 35.5t29 25t34 23t29 35.5t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5 q15 0 25 -5q70 -27 112.5 -93t42.5 -142t-42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5z" />
<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M0 448v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45zM908 464q0 21 12 35.5t29 25t34 23t29 35.5t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5 q15 0 25 -5q70 -27 112.5 -93t42.5 -142t-42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5zM1008 228q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5 q140 -59 225 -188.5t85 -282.5t-85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45zM1109 -7q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19 q13 0 26 -5q211 -91 338 -283.5t127 -422.5t-127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M0 0v640h640v-640h-640zM0 768v640h640v-640h-640zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM256 256v128h128v-128h-128zM256 1024v128h128v-128h-128zM768 0v640h384v-128h128v128h128v-384h-384v128h-128v-384h-128zM768 768v640h640v-640h-640z M896 896h384v384h-384v-384zM1024 0v128h128v-128h-128zM1024 1024v128h128v-128h-128zM1280 0v128h128v-128h-128z" />
<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M0 0v1408h63v-1408h-63zM94 1v1407h32v-1407h-32zM189 1v1407h31v-1407h-31zM346 1v1407h31v-1407h-31zM472 1v1407h62v-1407h-62zM629 1v1407h31v-1407h-31zM692 1v1407h31v-1407h-31zM755 1v1407h31v-1407h-31zM880 1v1407h63v-1407h-63zM1037 1v1407h63v-1407h-63z M1163 1v1407h63v-1407h-63zM1289 1v1407h63v-1407h-63zM1383 1v1407h63v-1407h-63zM1541 1v1407h94v-1407h-94zM1666 1v1407h32v-1407h-32zM1729 0v1408h63v-1408h-63z" />
<glyph unicode="&#xf02b;" d="M0 864v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117zM192 1088q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5z" />
<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M0 864v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117zM192 1088q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5zM704 1408h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5z" />
<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M10 184q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23 t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57 q38 -15 59 -43q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5zM575 1056 q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M0 7v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62z" />
<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M0 160v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v160h-224 q-13 0 -22.5 9.5t-9.5 22.5zM384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1408 576q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M0 128v896q0 106 75 181t181 75h224l51 136q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181zM512 576q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5zM672 576q0 119 84.5 203.5t203.5 84.5t203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5z" />
<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8 t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27 q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14zM555 527q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452z" />
<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5 t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12zM533 1292q0 -50 4 -151t4 -152q0 -27 -0.5 -80 t-0.5 -79q0 -46 1 -69q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13zM538.5 165q0.5 -37 4.5 -83.5t12 -66.5q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25 t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5z" />
<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M0 1023v383l81 1l54 -27q12 -5 211 -5q44 0 132 2t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5 q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9 t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44zM1414 109.5q9 18.5 42 18.5h80v1024 h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5z" />
<glyph unicode="&#xf035;" d="M0 1023v383l81 1l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1 t-103 1t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29 t78 27q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44zM5 -64q0 28 26 49q4 3 36 30t59.5 49 t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5q12 0 42 -19.5t57.5 -41.5t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5 t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49z" />
<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 448v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM0 832v128q0 26 19 45t45 19h1536 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM0 1216v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM128 832v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM384 448v128q0 26 19 45t45 19h896 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45zM512 1216v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM128 832v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM384 448v128q0 26 19 45t45 19h1280 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM512 1216v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M0 64v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 448v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 832v128q0 26 19 45t45 19h1664 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 1216v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5zM0 416v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5zM0 800v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5zM0 1184v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192 q-13 0 -22.5 9.5t-9.5 22.5zM384 32v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 416v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 800v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5zM384 1184v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-192 q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM0 1184v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5 t-9.5 22.5zM32 704q0 14 9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23zM640 416v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088 q-13 0 -22.5 9.5t-9.5 22.5zM640 800v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M0 32v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM0 416v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23t-9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5z M0 1184v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5zM640 416v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5 t-9.5 22.5zM640 800v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M0 288v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5q39 -17 39 -59v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5 t-84.5 203.5z" />
<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216z M256 128v192l320 320l160 -160l512 512l416 -416v-448h-1408zM256 960q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136z" />
<glyph unicode="&#xf040;" d="M0 -128v416l832 832l416 -416l-832 -832h-416zM128 128h128v-128h107l91 91l-235 235l-91 -91v-107zM298 384q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17zM896 1184l166 165q36 38 90 38q53 0 91 -38l235 -234 q37 -39 37 -91q0 -53 -37 -90l-166 -166z" />
<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M0 896q0 212 150 362t362 150t362 -150t150 -362q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179zM256 896q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
<glyph unicode="&#xf042;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73v1088q-148 0 -273 -73t-198 -198t-73 -273z" />
<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M0 512q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275q0 -212 -150 -362t-362 -150t-362 150t-150 362zM256 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69z" />
<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29v-190 q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM640 256v288l672 672l288 -288l-672 -672h-288zM736 448h96v-96h56l116 116l-152 152l-116 -116v-56zM944 688q16 -16 33 1l350 350q17 17 1 33t-33 -1l-350 -350q-17 -17 -1 -33zM1376 1280l92 92 q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68l-92 -92z" />
<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h255q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29v-259 q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM256 704q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45l-384 -384 q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5t-38.5 114t-17.5 122z" />
<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3 q20 -8 20 -29v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM257 768q0 33 24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110q24 -24 24 -57t-24 -57l-814 -814q-24 -24 -57 -24t-57 24l-430 430 q-24 24 -24 57z" />
<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M0 640q0 26 19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45t-19 -45l-256 -256 q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45z" />
<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M0 -64v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M0 -64v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710q19 19 32 13t13 -32v-710q4 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45 t-45 -19h-128q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M122 640q0 26 19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19l710 710q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45z" />
<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M0 -96v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31l-1328 -738q-23 -13 -39.5 -3t-16.5 36z" />
<glyph unicode="&#xf04c;" d="M0 -64v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45zM896 -64v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf04d;" d="M0 -64v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32v710 q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M0 -96v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710q-19 -19 -32 -13t-13 32z" />
<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M1 64v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM1 525q-6 13 13 32l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13z" />
<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M154 704q0 26 19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45z" />
<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M90 128q0 26 19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45z" />
<glyph unicode="&#xf055;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 576q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19 t19 45v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128z" />
<glyph unicode="&#xf056;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 576q0 -26 19 -45t45 -19h768q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19 t-19 -45v-128z" />
<glyph unicode="&#xf057;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM387 414q0 -27 19 -46l90 -90q19 -19 46 -19q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19 l90 90q19 19 19 46q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45z" />
<glyph unicode="&#xf058;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 621q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45q0 28 -18 46l-91 90 q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46z" />
<glyph unicode="&#xf059;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM417 939q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26 t37.5 -59q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213zM640 160q0 -14 9 -23t23 -9 h192q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192z" />
<glyph unicode="&#xf05a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320 q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160zM640 1056q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160z" />
<glyph unicode="&#xf05b;" d="M0 576v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143 q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45zM339 512q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5h-109q-26 0 -45 19 t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109z" />
<glyph unicode="&#xf05c;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM429 480q0 13 10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23l-137 -137l137 -137q10 -10 10 -23t-10 -23l-146 -146q-10 -10 -23 -10t-23 10l-137 137 l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23z" />
<glyph unicode="&#xf05d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM346 640q0 26 19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45z" />
<glyph unicode="&#xf05e;" d="M0 643q0 157 61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5t-61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61t-245 164t-163.5 246t-61 300zM224 643q0 -162 89 -299l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199 t-73 -274zM471 185q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5q0 161 -87 295z" />
<glyph unicode="&#xf060;" d="M64 576q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5t32.5 -90.5v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90 z" />
<glyph unicode="&#xf061;" d="M0 512v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5z" />
<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M53 565q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651q37 -39 37 -91q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75 q-38 38 -38 90z" />
<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M53 704q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90z" />
<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M0 416q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45t-19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123 q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22t-13.5 30t-10.5 24q-127 285 -127 451z" />
<glyph unicode="&#xf065;" d="M0 -64v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23t-10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45zM781 800q0 13 10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448 q26 0 45 -19t19 -45v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23z" />
<glyph unicode="&#xf066;" d="M13 32q0 13 10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23zM768 704v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10 t23 -10l114 -114q10 -10 10 -23t-10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68z" />
<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68z" />
<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M122.5 408.5q13.5 51.5 59.5 77.5l266 154l-266 154q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5 l-266 -154l266 -154q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5z" />
<glyph unicode="&#xf06a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM624 1126l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5l18 621q0 12 -10 18 q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18zM640 161q0 -13 10 -23t23 -10h192q13 0 22 9.5t9 23.5v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190z" />
<glyph unicode="&#xf06b;" d="M0 544v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68 t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23zM376 1120q0 -40 28 -68t68 -28h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68zM608 180q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5v56v468v192h-320v-192v-468v-56zM870 1024h194q40 0 68 28 t28 68t-28 68t-68 28q-43 0 -69 -31z" />
<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M0 121q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96 q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5zM384 448q0 -26 19 -45t45 -19q24 0 45 19 q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45t-19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45z" />
<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M0 -160q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64zM256 640q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100 t113.5 -122.5t72.5 -150.5t27.5 -184q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184z" />
<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M0 576q0 34 20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69t-20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69zM128 576q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5q-152 236 -381 353 q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353zM592 704q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34t-14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5z" />
<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M0 576q0 38 20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5q16 -10 16 -27q0 -7 -1 -9q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87 q-143 65 -263.5 173t-208.5 245q-20 31 -20 69zM128 576q167 -258 427 -375l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353zM592 704q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34t-14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5zM896 0l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69t-20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95zM1056 286l280 502q8 -45 8 -84q0 -139 -79 -253.5t-209 -164.5z" />
<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M16 61l768 1408q17 31 47 49t65 18t65 -18t47 -49l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126zM752 992l17 -457q0 -10 10 -16.5t24 -6.5h185q14 0 23.5 6.5t10.5 16.5l18 459q0 12 -10 19q-13 11 -24 11h-220 q-11 0 -24 -11q-10 -7 -10 -21zM768 161q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190z" />
<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M0 477q-1 13 9 25l96 97q9 9 23 9q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16 l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23z" />
<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M0 -128v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90zM128 -128h288v288h-288v-288zM128 224 h288v320h-288v-320zM128 608h288v288h-288v-288zM384 1088q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288zM480 -128h320v288h-320v-288zM480 224h320v320h-320v-320zM480 608h320v288h-320 v-288zM864 -128h320v288h-320v-288zM864 224h320v320h-320v-320zM864 608h320v288h-320v-288zM1152 1088q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288zM1248 -128h288v288h-288v-288z M1248 224h288v320h-288v-320zM1248 608h288v288h-288v-288z" />
<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M0 160v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192 h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23zM0 1056v192q0 14 9 23t23 9h224q250 0 410 -225q-60 -92 -137 -273q-22 45 -37 72.5 t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23zM743 353q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192 q-32 0 -85 -0.5t-81 -1t-73 1t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5z" />
<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M0 640q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5t-120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5 t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281z" />
<glyph unicode="&#xf076;" d="M0 576v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5 t-98.5 362zM0 960v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45zM1024 960v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M90 250.5q0 26.5 19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5z" />
<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M90 773.5q0 26.5 19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5z" />
<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M0 704q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45z M640 1120q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20z " />
<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M0 1216q0 26 19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024 q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45zM384 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM1280 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158z" />
<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5t-0.5 12.5zM73 56q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43 q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43z" />
<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M64 64q0 26 19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45z" />
<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M0 640q0 26 19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45z" />
<glyph unicode="&#xf080;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216z M256 128v384h256v-384h-256zM640 128v896h256v-896h-256zM1024 128v640h256v-640h-256zM1408 128v1024h256v-1024h-256z" />
<glyph unicode="&#xf081;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 286q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109 q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4q21 -63 74.5 -104 t121.5 -42q-116 -90 -261 -90q-26 0 -50 3z" />
<glyph unicode="&#xf082;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-192v608h203l30 224h-233v143q0 54 28 83t96 29l132 1v207q-96 9 -180 9q-136 0 -218 -80.5t-82 -225.5v-166h-224v-224h224v-608h-544 q-119 0 -203.5 84.5t-84.5 203.5z" />
<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M0 0v1280q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5zM128 0h1536v128h-1536v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM256 1216h384v128h-384v-128zM512 574 q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM640 574q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM736 576q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9 t9 23t-9 23t-23 9q-66 0 -113 -47t-47 -113z" />
<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M0 752q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41q0 -17 -49 -66t-66 -49 q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5zM192 768q0 -80 56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56 t56 136t-56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136z" />
<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M0 549v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8 q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90 q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5zM384 640q0 -106 75 -181t181 -75 t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181zM1152 58v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31 v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31zM1152 1082v140q0 16 149 31q13 29 30 52 q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71 q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31zM1408 128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5q0 52 -38 90t-90 38t-90 -38t-38 -90zM1408 1152q0 -53 37.5 -90.5 t90.5 -37.5t90.5 37.5t37.5 90.5q0 52 -38 90t-90 38t-90 -38t-38 -90z" />
<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M0 768q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257t-94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25 t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224zM616 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5 t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132z" />
<glyph unicode="&#xf087;" d="M0 128v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5zM128 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 128h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5 t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85 t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640z" />
<glyph unicode="&#xf088;" d="M0 512v640q0 53 37.5 90.5t90.5 37.5h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186 q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5zM128 1088q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 512h32q16 0 35.5 -9 t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5 t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640z" />
<glyph unicode="&#xf089;" horiz-adv-x="896" d="M0 889q0 37 56 46l502 73l225 455q19 41 49 41v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48z" />
<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M0 940q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138z M128 940q0 -168 187 -355l581 -560l580 559q188 188 188 356q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5 t-21.5 -143z" />
<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M0 288v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5q0 -4 1 -20t0.5 -26.5t-3 -23.5 t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5zM384 448v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45t-19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf08c;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM223 1030q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86z M237 122h231v694h-231v-694zM595 122h231v388q0 38 7 56q15 35 45 59.5t74 24.5q116 0 116 -157v-371h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694z" />
<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M0 320q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19 t-19 45zM416 672q0 -14 9 -23t23 -9t23 9t9 23v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448z" />
<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832 q-119 0 -203.5 84.5t-84.5 203.5zM685 576q0 13 10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23z" />
<glyph unicode="&#xf090;" d="M0 448v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45t-19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45zM894.5 78.5q0.5 10.5 3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113 t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5q0 4 -1 20t-0.5 26.5z" />
<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M0 928v128q0 40 28 68t68 28h288v96q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91t97.5 -37q75 0 133.5 -45.5 t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143zM128 928q0 -78 94.5 -162t235.5 -113q-74 162 -74 371 h-256v-96zM1206 653q141 29 235.5 113t94.5 162v96h-256q0 -209 -74 -371z" />
<glyph unicode="&#xf092;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204 q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52 t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5h-224q-119 0 -203.5 84.5t-84.5 203.5zM271 315q3 5 13 2 q10 -5 7 -12q-5 -7 -13 -2q-10 5 -7 12zM304 290q6 6 16 -3q9 -11 2 -16q-6 -7 -16 3q-9 11 -2 16zM335 233q-9 13 0 18q9 7 17 -6q9 -12 0 -19q-8 -6 -17 7zM370 206q8 9 20 -3q12 -11 4 -19q-8 -9 -20 3q-13 11 -4 19zM419 168q4 11 19 7q16 -5 13 -16q-4 -12 -19 -6 q-17 4 -13 15zM481 154q0 11 16 11q17 2 17 -11q0 -11 -16 -11q-17 -2 -17 11zM540 158q-2 12 14 15q16 2 18 -9q2 -10 -14 -14t-18 8z" />
<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M0 -32v320q0 40 28 68t68 28h427q21 -56 70.5 -92t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68zM325 936q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69q-17 -40 -59 -40 h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40zM1152 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM1408 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf094;" d="M0 433q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5q0 -165 -70 -327.5 t-196 -288t-281 -180.5q-124 -44 -326 -44q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5zM128 434q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5 q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24 q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5z" />
<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M0 1069q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235 t235 -174q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5 t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5z" />
<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM128 288q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47 t-47 -113v-832z" />
<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M0 7v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62zM128 38l423 406l89 85l89 -85l423 -406 v1242h-1024v-1242z" />
<glyph unicode="&#xf098;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 905q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5 q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5 t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5z" />
<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M44 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5 q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145z" />
<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M95 631v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255z" />
<glyph unicode="&#xf09b;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44 l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3 q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5z" />
<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M0 96v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68z" />
<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M0 32v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v608h-1664v-608zM128 1024h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600 q-13 0 -22.5 -9.5t-9.5 -22.5v-224zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M0 192q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM0 697v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5t259 -181.5q114 -113 181.5 -259t80.5 -306q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5 t-391.5 184.5q-25 2 -41.5 20t-16.5 43zM0 1201v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294q187 -186 294 -425.5t120 -501.5q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102 q-25 1 -42.5 19.5t-17.5 43.5z" />
<glyph unicode="&#xf0a0;" d="M0 160v320q0 25 16 75l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113zM128 160q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5v320q0 13 -9.5 22.5t-22.5 9.5h-1216 q-13 0 -22.5 -9.5t-9.5 -22.5v-320zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM880 320q0 33 23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5zM1136 320q0 33 23.5 56.5t56.5 23.5 t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5z" />
<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M0 672v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50 t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113zM768 633q377 -42 768 -341v954q-394 -302 -768 -343v-270z" />
<glyph unicode="&#xf0a2;" horiz-adv-x="1664" d="M0 128q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38 t-38 90zM183 128h1298q-164 181 -246.5 411.5t-82.5 484.5q0 256 -320 256t-320 -256q0 -254 -82.5 -484.5t-246.5 -411.5zM656 0q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16z" />
<glyph unicode="&#xf0a3;" d="M2 435q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70l-53 -186l188 -48 q40 -10 52 -51q10 -42 -20 -70l-138 -135l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53 q-41 -12 -70 19q-31 29 -19 70l53 186l-188 48q-40 10 -52 51z" />
<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M0 128v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179q0 -105 -75.5 -181 t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5zM128 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM384 128h32q72 0 167 -32 t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139 q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106q-69 -57 -140 -57h-32v-640z" />
<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M0 769q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5v-640 q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181zM128 768q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119 q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5 t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5t-39 -89.5zM1536 192q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf0a6;" d="M0 640q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5t-90.5 -37.5h-640 q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5zM128 640q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140 v-32h640v32q0 72 32 167t64 193.5t32 179.5q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576q-20 0 -48.5 15t-55 33t-68 33t-84.5 15 q-67 0 -97.5 -44.5t-30.5 -115.5zM1152 -64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf0a7;" d="M0 640q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317q0 -142 -77.5 -230t-217.5 -87 l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5zM128 640q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33t55 33t48.5 15v-576q0 -50 38.5 -89 t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112 q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5zM1152 1344q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf0a8;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM251 640q0 -27 18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502 q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45z" />
<glyph unicode="&#xf0a9;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM256 576q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18 l362 362l91 91q18 18 18 45t-18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128z" />
<glyph unicode="&#xf0aa;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 641q0 -27 18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19 t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45t-18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45z" />
<glyph unicode="&#xf0ab;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM252 639q0 -27 18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45t-18 45l-91 91 q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45z" />
<glyph unicode="&#xf0ac;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM226 979q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18 q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13 q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5 t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13 q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25 t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5 t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4 q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5q15 10 -7 16q-17 5 -43 -12q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8 q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5 q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26 q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5 q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14 q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5 q-16 0 -22 -1q-146 -80 -235 -222zM877 26q0 -6 2 -16q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7 t-10 1.5t-11.5 -7q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5z" />
<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M21 0q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90zM256 64q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45zM768 960q0 185 131.5 316.5t316.5 131.5q58 0 121.5 -16.5 t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25q0 -39 -23 -106q-47 -134 -164.5 -217.5t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5z" />
<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M0 64v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 576v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM0 1088v256q0 26 19 45t45 19h1664 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45zM640 640h1024v128h-1024v-128zM1024 128h640v128h-640v-128zM1280 1152h384v128h-384v-128z" />
<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M5 1241q17 39 59 39h1280q42 0 59 -39q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70z" />
<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M0 160v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM0 736v384q0 66 47 113t113 47h352v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113v-384h-1792z M640 1280h512v128h-512v-128zM768 512v128h256v-128h-256z" />
<glyph unicode="&#xf0b2;" d="M0 -64v448q0 42 40 59q39 17 69 -14l144 -144l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45 v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19l-144 144l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19 t-19 45z" />
<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M0 671q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5zM128 1280q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM256 3q0 53 3.5 103.5 t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5 zM576 896q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5zM1280 1280q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181zM1327 640q81 117 81 256q0 29 -5 66q66 -23 133 -23 q59 0 119 21.5t97.5 42.5t43.5 21q124 0 124 -353q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128z" />
<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M16 1088q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l206 -207q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204t-85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88 q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204zM208 1088q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15t21.5 -21.5t18.5 -19q33 31 33 73 q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67zM911 383q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26l147 146q28 28 28 67q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5 q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73z" />
<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M0 448q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5z" />
<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M115.5 -64.5q-34.5 63.5 21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399l503 -793q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5zM476 384h712l-272 429l-20 31v37v399h-128v-399v-37 l-20 -31z" />
<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M1 157q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148q4 -48 -10 -97q4 -1 12 -5 l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56l-507 -398l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207zM168 176q-25 -66 21 -108q39 -36 113 -36q100 0 192 59q81 51 106 117t-21 108q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117zM168 976q25 -66 106 -117q92 -59 192 -59q74 0 113 36q46 42 21 108t-106 117q-92 59 -192 59 q-74 0 -113 -36q-46 -42 -21 -108zM672 448l9 -8q2 -2 7 -6q4 -4 11 -12t11 -12l26 -26l160 96l96 -32l736 576l-128 64l-768 -431v-113zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 576q0 26 19 45t45 19t45 -19 t19 -45t-19 -45t-45 -19t-45 19t-19 45zM1018 391l582 -327l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M0 224v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68zM128 256h512v256q0 40 20 88t48 76l316 316v416h-384 v-416q0 -40 -28 -68t-68 -28h-416v-640zM213 1024h299v299zM768 -128h896v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640zM853 640h299v299z" />
<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M4 1023q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581 q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776 q-113 115 -113 271z" />
<glyph unicode="&#xf0c7;" d="M0 -32v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 0h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20 t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280zM384 0h768v384h-768v-384zM640 928q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v320q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320z" />
<glyph unicode="&#xf0c8;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5z" />
<glyph unicode="&#xf0c9;" d="M0 64v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM0 576v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM0 1088v128q0 26 19 45t45 19h1408 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M0 128q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM0 640q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM0 1152q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM512 32v192 q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5zM512 544v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5z M512 1056v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M15 438q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105v-159h-362q-6 36 -6 54zM19 -190 l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66zM34 1400l136 127h106v-404h108v-99 h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54zM512 32v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5zM512 544v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5v-192 q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5zM512 1056v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M0 544v64q0 14 9 23t23 9h1728q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23zM384 972q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6l-14 2q-50 149 -103 205 q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743q-28 35 -51 80q-48 97 -48 188zM414 154q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22 q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156z" />
<glyph unicode="&#xf0cd;" d="M0 -32v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-1472q-14 0 -23 -9t-9 -23zM0 1405q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5 t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2 q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195 q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39q-37 2 -45 4z" />
<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M0 160v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113zM128 160q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM128 544q0 -14 9 -23t23 -9h320 q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM128 928q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM640 160q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192zM640 544q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM640 928q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM1152 160q0 -14 9 -23t23 -9h320q14 0 23 9t9 23 v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM1152 544q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192zM1152 928q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192z" />
<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M27 160q0 27 18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45t-18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45zM128 1408l98 30l30 98l30 -98l98 -30l-98 -30l-30 -98l-30 98zM320 1216l196 60l60 196l60 -196l196 -60l-196 -60 l-60 -196l-60 196zM768 1408l98 30l30 98l30 -98l98 -30l-98 -30l-30 -98l-30 98zM1083 1062l107 -107l293 293l-107 107zM1408 768l98 30l30 98l30 -98l98 -30l-98 -30l-30 -98l-30 98z" />
<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M64 192q0 26 19 45t45 19v320q0 8 -0.5 35t0 38t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45v-1024q0 -15 -4 -26.5t-13.5 -18.5t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5 q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM384 128q0 -52 38 -90t90 -38 t90 38t38 90t-38 90t-90 38t-90 -38t-38 -90zM1280 128q0 -52 38 -90t90 -38t90 38t38 90t-38 90t-90 38t-90 -38t-38 -90z" />
<glyph unicode="&#xf0d2;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63 q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5 q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423z" />
<glyph unicode="&#xf0d3;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5 q-104 0 -194.5 -28.5t-153 -76.5t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118 q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5z" />
<glyph unicode="&#xf0d4;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM276 309q0 -43 18.5 -77.5t48.5 -56.5t69 -37t77.5 -21t76.5 -6q60 0 120.5 15.5t113.5 46t86 82.5t33 117 q0 49 -20 89.5t-49 66.5t-58 47.5t-49 44t-20 44.5t15.5 42.5t37.5 39.5t44 42t37.5 59.5t15.5 82.5q0 60 -22.5 99.5t-72.5 90.5h83l88 64h-265q-85 0 -161 -32t-127.5 -98t-51.5 -153q0 -93 64.5 -154.5t158.5 -61.5q22 0 43 3q-13 -29 -13 -54q0 -44 40 -94 q-175 -12 -257 -63q-47 -29 -75.5 -73t-28.5 -95zM395 338q0 46 25 80t65.5 51.5t82 25t84.5 7.5q20 0 31 -2q2 -1 23 -16.5t26 -19t23 -18t24.5 -22t19 -22.5t17 -26t9 -26.5t4.5 -31.5q0 -76 -58.5 -112.5t-139.5 -36.5q-41 0 -80.5 9.5t-75.5 28.5t-58 53t-22 78z M462 969q0 61 32 104t92 43q53 0 93.5 -45t58 -101t17.5 -107q0 -60 -33 -99.5t-92 -39.5q-53 0 -93 42.5t-57.5 96.5t-17.5 106zM960 672h128v-160h64v160h128v64h-128v128h-64v-128h-128v-64z" />
<glyph unicode="&#xf0d5;" horiz-adv-x="1664" d="M32 182q0 81 44.5 150t118.5 115q131 82 404 100q-32 42 -47.5 74t-15.5 73q0 36 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q77 66 182.5 98t217.5 32h418l-138 -88h-131q74 -63 112 -133t38 -160q0 -72 -24.5 -129.5t-59 -93t-69.5 -65 t-59.5 -61.5t-24.5 -66q0 -36 32 -70.5t77.5 -68t90.5 -73.5t77 -104t32 -142q0 -90 -48 -173q-72 -122 -211 -179.5t-298 -57.5q-132 0 -246.5 41.5t-171.5 137.5q-37 60 -37 131zM218 228q0 -70 35 -123.5t91.5 -83t119 -44t127.5 -14.5q58 0 111.5 13t99 39t73 73 t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -48 2q-53 0 -105 -7t-107.5 -25t-97 -46t-68.5 -74.5t-27 -105.5zM324 1222q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q38 0 78 16.5t66 43.5q53 57 53 159 q0 58 -17 125t-48.5 129.5t-84.5 103.5t-117 41q-42 0 -82.5 -19.5t-65.5 -52.5q-47 -59 -47 -160zM1084 731v108h212v217h105v-217h213v-108h-213v-219h-105v219h-212z" />
<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M0 64v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45zM128 384q106 0 181 -75t75 -181h1152q0 106 75 181t181 75v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512zM640 640q0 70 21 142 t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142t-21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142zM762 791l77 -80q42 37 55 57h2v-288h-128v-96h384v96h-128v448h-114z" />
<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M0 832q0 26 19 45t45 19h896q26 0 45 -19t19 -45t-19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45z" />
<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M0 320q0 26 19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M64 640q0 26 19 45l448 448q19 19 45 19t45 -19t19 -45v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45z" />
<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M0 192v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45t-19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45z" />
<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M0 32v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113zM128 32q0 -13 9.5 -22.5t22.5 -9.5h608v1152h-640v-1120zM896 0h608q13 0 22.5 9.5t9.5 22.5v1120h-640v-1152z" />
<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M0 448q0 26 19 45t45 19h896q26 0 45 -19t19 -45t-19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45zM0 832q0 26 19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M0 448q0 26 19 45t45 19h896q26 0 45 -19t19 -45t-19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45z" />
<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M0 832q0 26 19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M0 32v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113zM0 1098q0 78 41.5 130t118.5 52h1472 q65 0 112.5 -47t47.5 -113q0 -79 -49 -151t-122 -123q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5z" />
<glyph unicode="&#xf0e1;" d="M0 1217q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122zM19 -80v991h330v-991h-330zM531 -80q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5v-568 h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329z" />
<glyph unicode="&#xf0e2;" d="M0 832v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298t-61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12 q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M40 736q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18 q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5 q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5 t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68z" />
<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M0 384q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29q-141 221 -141 483zM128 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z M320 832q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM710 241q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91l101 382q6 26 -7.5 48.5t-38.5 29.5t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5 t-63 -98.5zM768 1024q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM1216 832q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM1408 384q0 -53 37.5 -90.5 t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M0 640q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5t-120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5 t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281zM128 640q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5t-381.5 -69.5 t-282 -187.5t-104.5 -255z" />
<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M0 768q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257t-94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25 t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224zM128 768q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52t-286 -52t-211.5 -141t-78.5 -191zM616 132 q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22 t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132z" />
<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M1 551l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39z" />
<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M0 -32v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68z" />
<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M0 681q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17 q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5z M384 128q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180zM768 1310v98q0 26 19 45t45 19t45 -19t19 -45v-98q-42 2 -64 2t-64 -2z" />
<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M0 96v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88v-672q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68zM256 1312q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5v64 q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64zM768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1280 640h299l-299 299v-299z" />
<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M0 960q0 99 44.5 184.5t117 142t164 89t186.5 32.5t186.5 -32.5t164 -89t117 -142t44.5 -184.5q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47q0 -46 -31.5 -71t-77.5 -25 q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268zM128 960q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228 q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134zM480 1088q0 13 9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5 q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M0 256q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22zM0 800v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23 t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M0 448q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5z M512 608q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5z" />
<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M0 448q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5z M512 672q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24z" />
<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M0 131q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89 q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5 t81 -103t47.5 -132.5t24 -138t5.5 -131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190zM256 192q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM320 1024q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5 t-271.5 112.5t-112.5 271.5z" />
<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M0 768v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48 q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5 t-131.5 271.5v132q-164 20 -274 128t-110 252zM1152 832q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M0 96v832q0 92 66 158t158 66h64v-1280h-64q-92 0 -158 66t-66 158zM384 -128v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128v-1280h-1024zM640 1152h512v128h-512v-128zM1504 -128v1280h64q92 0 158 -66t66 -158v-832q0 -92 -66 -158t-158 -66h-64z " />
<glyph unicode="&#xf0f3;" horiz-adv-x="1664" d="M0 128q190 161 287 397.5t97 498.5q0 165 96 262t264 117q-8 18 -8 37q0 40 28 68t68 28t68 -28t28 -68q0 -19 -8 -37q168 -20 264 -117t96 -262q0 -262 97 -498.5t287 -397.5q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38 t-38 90zM656 0q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16z" />
<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM256 480v736q0 26 19 45t45 19h1152q159 0 271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158zM1408 704h64q80 0 136 56t56 136 t-56 136t-136 56h-64v-384z" />
<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M0 832v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128 q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111zM768 416v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf0f6;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM384 160v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64 q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23zM384 416v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23zM384 672v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23zM1024 1024h376 q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M0 -192v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM128 -128h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224h384v1536h-1152v-1536zM256 160v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 672v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 928v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 1184v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 672v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 928v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 1184v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 672v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 928v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 1184v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 160v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 416v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 928v64q0 13 9.5 22.5t22.5 9.5h64 q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 1184v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M0 -192v1280q0 26 19 45t45 19h320v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM128 -128h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224h384v1152h-256 v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152zM256 160v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5 v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM256 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64 q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM512 1056q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128 v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320zM768 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5 v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM768 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 160v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5 v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 416v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5zM1024 672v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5 v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M64 192q0 26 19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128 q-26 0 -45 19t-19 45zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM384 128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM896 800q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192 q14 0 23 9t9 23v224h224q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192zM1280 128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M0 96v832q0 92 66 158t158 66h32v-1280h-32q-92 0 -158 66t-66 158zM352 -128v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160v-1280h-1088zM512 416q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23v192 q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192zM640 1152h512v128h-512v-128zM1536 -128v1280h32q92 0 158 -66t66 -158v-832q0 -92 -66 -158t-158 -66h-32z" />
<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M0 512v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93l1 -3q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5 t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8z" />
<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M64 1152l32 128h480l32 128h960l32 -192l-64 -32v-800l128 -192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320zM384 768q0 -53 37.5 -90.5t90.5 -37.5h128v384h-256v-256z" />
<glyph unicode="&#xf0fd;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 192q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45 v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896z" />
<glyph unicode="&#xf0fe;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 576q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45 v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128z" />
<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M45 576q0 13 10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23zM429 576q0 13 10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23 l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23z" />
<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M13 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23zM397 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10 l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M77 224q0 13 10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23zM77 608q0 13 10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23 l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M77 672q0 13 10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23zM77 1056q0 13 10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10 l50 -50q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23z" />
<glyph unicode="&#xf104;" horiz-adv-x="640" d="M45 576q0 13 10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23z" />
<glyph unicode="&#xf105;" horiz-adv-x="640" d="M13 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M77 352q0 13 10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M77 800q0 13 10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23z" />
<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M0 288v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113zM128 544q0 -13 9.5 -22.5 t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832z" />
<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M0 96v96h160h1600h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68zM256 416v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113zM384 416q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5 t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-704zM864 112q0 -16 16 -16h160q16 0 16 16t-16 16h-160q-16 0 -16 -16z" />
<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M0 160v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-832q-66 0 -113 47t-47 113zM128 288q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960zM512 128 q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M0 128v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90zM96 288q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704zM288 1136 q0 -16 16 -16h160q16 0 16 16t-16 16h-160q-16 0 -16 -16zM304 128q0 -33 23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5z" />
<glyph unicode="&#xf10c;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273z" />
<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M0 192v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136z M896 192v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136z" />
<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M0 832v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136zM896 832v384 q0 80 56 136t136 56h384q80 0 136 -56t56 -136v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136z" />
<glyph unicode="&#xf110;" horiz-adv-x="1568" d="M0 640q0 66 47 113t113 47t113 -47t47 -113t-47 -113t-113 -47t-113 47t-47 113zM176 1088q0 73 51.5 124.5t124.5 51.5t124.5 -51.5t51.5 -124.5t-51.5 -124.5t-124.5 -51.5t-124.5 51.5t-51.5 124.5zM208 192q0 60 42 102t102 42q59 0 101.5 -42t42.5 -102t-42.5 -102 t-101.5 -42q-60 0 -102 42t-42 102zM608 1280q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM672 0q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM1136 192q0 46 33 79t79 33t79 -33t33 -79 t-33 -79t-79 -33t-79 33t-33 79zM1168 1088q0 33 23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5t-23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5zM1344 640q0 40 28 68t68 28t68 -28t28 -68t-28 -68t-68 -28t-68 28t-28 68z" />
<glyph unicode="&#xf111;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5z" />
<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M0 896q0 26 19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101 t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19l-512 512q-19 19 -19 45z" />
<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M0 496q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218q0 -87 -27 -168q136 -160 136 -398q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86t-170 -47.5t-171.5 -22t-167 -4.5 q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331zM224 320q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11 q-152 21 -195 21q-118 0 -187 -84t-69 -204zM384 320q0 40 12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82t-12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82zM1024 320q0 40 12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82t-12.5 -82t-43 -76t-72.5 -34t-72.5 34 t-43 76t-12.5 82z" />
<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158zM128 224q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64 q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960z" />
<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M0 224v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158zM128 331l256 315q44 53 116 87.5 t140 34.5h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-853zM171 163q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40z " />
<glyph unicode="&#xf116;" horiz-adv-x="1792" />
<glyph unicode="&#xf117;" horiz-adv-x="1792" />
<glyph unicode="&#xf118;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5zM384 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM402 461q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38 q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5q-37 -121 -138 -195t-228 -74t-228 74t-138 195zM896 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
<glyph unicode="&#xf119;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5zM384 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM402 307q37 121 138 195t228 74t228 -74t138 -195q8 -25 -4 -48.5 t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5zM896 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
<glyph unicode="&#xf11a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5zM384 448q0 26 19 45t45 19h640q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45zM384 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM896 896q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M0 512q0 212 150 362t362 150h896q212 0 362 -150t150 -362t-150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150t-150 362zM192 448q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23v128 q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128zM1152 384q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5zM1408 640q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M0 128v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5zM128 128h1664v896h-1664v-896zM256 272v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM256 528v96 q0 16 16 16h224q16 0 16 -16v-96q0 -16 -16 -16h-224q-16 0 -16 16zM256 784v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM512 272v96q0 16 16 16h864q16 0 16 -16v-96q0 -16 -16 -16h-864q-16 0 -16 16zM512 784v96q0 16 16 16h96q16 0 16 -16v-96 q0 -16 -16 -16h-96q-16 0 -16 16zM640 528v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM768 784v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM896 528v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16z M1024 784v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM1152 528v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM1280 784v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16zM1408 528v96q0 16 16 16h112v240 q0 16 16 16h96q16 0 16 -16v-352q0 -16 -16 -16h-224q-16 0 -16 16zM1536 272v96q0 16 16 16h96q16 0 16 -16v-96q0 -16 -16 -16h-96q-16 0 -16 16z" />
<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M64 1280q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64zM320 320v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86 q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56zM448 426 q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599z" />
<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M64 1280q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64zM320 320v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86 q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56zM448 426 q205 96 384 110v192q-181 -16 -384 -117v-185zM448 836q215 111 384 118v197q-172 -8 -384 -126v-189zM832 730h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15 t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2q-23 0 -49 -3v-222zM1280 828q148 -42 384 90v189q-169 -91 -306 -91q-45 0 -78 8v-196z" />
<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M13 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23zM640 32v64q0 14 9 23t23 9h960q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-960 q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M45 576q0 13 10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23zM712 -52l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5 l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5zM1293 160q0 13 10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23z" />
<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M0 896q0 26 19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45l397 -397v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45zM384 896q0 26 19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221 q169 -173 169 -509q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45z" />
<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M2 900.5q9 27.5 54 34.5l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5z M832 310l59 -31l318 -168l-60 355l-12 66l49 47l257 250l-356 52l-66 10l-30 60l-159 322v-963z" />
<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M2 561q-5 22 4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5z" />
<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M0 928v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864 q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23zM512 301l595 595h-595v-595zM557 256h595v595z" />
<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M0 64q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136 q0 -52 -26 -96.5t-70 -69.5q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136zM96 64q0 -40 28 -68t68 -28t68 28t28 68t-28 68t-68 28t-68 -28t-28 -68zM96 1216q0 -40 28 -68 t68 -28t68 28t28 68t-28 68t-68 28t-68 -28t-28 -68zM736 1088q0 -40 28 -68t68 -28t68 28t28 68t-28 68t-68 28t-68 -28t-28 -68z" />
<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M0 448q0 14 9 23t23 9h320q14 0 23 -9t9 -23t-9 -23t-23 -9h-320q-14 0 -23 9t-9 23zM16 1088q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56l-239 -18l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68 l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204zM128 32q0 13 9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23zM544 -96v320q0 14 9 23t23 9t23 -9t9 -23v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23zM633 364 l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56zM1056 1184v320q0 14 9 23t23 9t23 -9t9 -23v-320 q0 -14 -9 -23t-23 -9t-23 9t-9 23zM1216 1120q0 13 9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23zM1280 960q0 14 9 23t23 9h320q14 0 23 -9t9 -23t-9 -23t-23 -9h-320q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M96.5 986q-2.5 15 5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5t-10.5 37.5v45q0 83 65 156.5 t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25zM384 40v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28z" />
<glyph unicode="&#xf129;" horiz-adv-x="640" d="M0 64v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45zM128 1152v192q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-192 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M98 1344q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45zM128 64v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf12b;" d="M5 0v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258zM1013 713q0 64 26 117t65 86.5 t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80h126v-206h-514l-3 27q-4 28 -4 46z " />
<glyph unicode="&#xf12c;" d="M5 0v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258zM1015 -183q0 64 26 117t65 86.5 t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126v-206h-514l-4 27q-3 45 -3 46z" />
<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M1.5 146.5q5.5 37.5 30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5zM128 128h768l336 384h-768z" />
<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M0 0v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5 q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124 q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89 q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1z" />
<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M0 704v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45 t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5zM256 704v512q0 132 94 226t226 94t226 -94t94 -226v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226z" />
<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M13 64q0 13 10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23t-10 -23l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -221 -147.5 -384.5 t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23zM128 704v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113l-101 -101 q-42 103 -42 214zM384 704v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M0 576v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150t-33.5 170.5zM640 79 q119 63 213 137q235 184 235 360v640h-448v-1137z" />
<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M0 -128v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90zM128 -128h1408v1024h-1408v-1024z M384 1088q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288zM1152 1088q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288z" />
<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M3.5 940q-8.5 25 3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96 q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37 zM384 1344q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M36 464l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85 q-3 -1 -9 -1q-14 0 -23 9l-64 64q-17 19 -5 39zM1248 1088q0 -40 28 -68t68 -28t68 28t28 68t-28 68t-68 28t-68 -28t-28 -68z" />
<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M0 0l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334z" />
<glyph unicode="&#xf137;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM346 640q0 -26 19 -45l454 -454q19 -19 45 -19t45 19l102 102q19 19 19 45t-19 45l-307 307l307 307 q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45z" />
<glyph unicode="&#xf138;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM506 288q0 -26 19 -45l102 -102q19 -19 45 -19t45 19l454 454q19 19 19 45t-19 45l-454 454 q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45z" />
<glyph unicode="&#xf139;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM250 544q0 -26 19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19l102 102 q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45z" />
<glyph unicode="&#xf13a;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM250 736q0 -26 19 -45l454 -454q19 -19 45 -19t45 19l454 454q19 19 19 45t-19 45l-102 102 q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45z" />
<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M0 1408h1408l-128 -1438l-578 -162l-574 162zM262 1114l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674l16 175h-884z" />
<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M12 75l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208l59 297h1505l-266 -1333l-804 -267z" />
<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M0 0v352q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192 q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5 l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30zM832 1280q0 -26 19 -45t45 -19t45 19t19 45t-19 45t-45 19t-45 -19t-19 -45z" />
<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M0 96v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181v-320h736q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28 t-28 68z" />
<glyph unicode="&#xf140;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5zM256 640q0 212 150 362t362 150t362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362zM384 640q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM512 640q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181z" />
<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M0 608v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68zM512 608v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68zM1024 608v192q0 40 28 68t68 28h192 q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68z" />
<glyph unicode="&#xf142;" horiz-adv-x="384" d="M0 96v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68zM0 608v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68zM0 1120v192q0 40 28 68t68 28h192q40 0 68 -28 t28 -68v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68z" />
<glyph unicode="&#xf143;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 256q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z M256 575q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10t9 24q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128zM256 959q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128 q13 0 23 10q11 9 9 23q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128z" />
<glyph unicode="&#xf144;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 320q0 -37 32 -56q16 -8 32 -8q17 0 32 9l544 320q32 18 32 55t-32 55l-544 320q-31 19 -64 1 q-32 -19 -32 -56v-640z" />
<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M54 448.5q0 53.5 37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136t-136 56t-136 -56l-125 126q-37 37 -37 90.5z M342 512q0 -26 19 -45l362 -362q18 -18 45 -18t45 18l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45zM452 512l572 572l316 -316l-572 -572z" />
<glyph unicode="&#xf146;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 576q0 -26 19 -45t45 -19h896q26 0 45 19t19 45v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128 z" />
<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM128 288q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47 t-47 -113v-832zM256 672v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M3 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18z" />
<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M3 1261q9 19 29 19h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34z" />
<glyph unicode="&#xf14a;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM218 640q0 -26 19 -45l358 -358q19 -19 45 -19t45 19l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19 t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45z" />
<glyph unicode="&#xf14b;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 128h288l544 544l-288 288l-544 -544v-288zM352 320v56l52 52l152 -152l-52 -52h-56v96h-96zM494 494 q-14 13 3 30l291 291q17 17 30 3q14 -13 -3 -30l-291 -291q-17 -17 -30 -3zM864 1024l288 -288l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28z" />
<glyph unicode="&#xf14c;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM282 320q0 -26 19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59 v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45z" />
<glyph unicode="&#xf14d;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 448q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5t224 23.5v-160 q0 -42 40 -59q12 -5 24 -5q26 0 45 19l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5z" />
<glyph unicode="&#xf14e;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 241v542l512 256v-542zM640 448l256 128l-256 128v-256z" />
<glyph unicode="&#xf150;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 160q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5v960q0 13 -9.5 22.5t-22.5 9.5h-960 q-13 0 -22.5 -9.5t-9.5 -22.5v-960zM391 861q17 35 57 35h640q40 0 57 -35q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66z" />
<glyph unicode="&#xf151;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 160q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5v960q0 13 -9.5 22.5t-22.5 9.5h-960 q-13 0 -22.5 -9.5t-9.5 -22.5v-960zM391 419q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66q-17 -35 -57 -35h-640q-40 0 -57 35z" />
<glyph unicode="&#xf152;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 160q0 -14 9 -23t23 -9h960q14 0 23 9t9 23v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960z M512 320v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52t-27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57z" />
<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M0 514v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5 t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5 l12 3l5 2q13 5 26 -2q12 -7 15 -21l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M0 32v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215 h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M52 171l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242 t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48 t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50t53 -63.5t31.5 -76.5t13 -94q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5 t-17.5 18q-17 21 -2 41z" />
<glyph unicode="&#xf156;" horiz-adv-x="898" d="M0 605v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171 q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22z" />
<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M4 1360q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103 q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214z" />
<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M0 256v128q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315t-126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9 h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23zM487 747h320q106 0 171 62t65 162t-65 162t-171 62h-320v-448z" />
<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M0 672v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111 q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23z M373 896l32 -128h225l35 128h-292zM436 640l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5l81 299h-159zM822 768h139l-35 128h-70zM1118 896l34 -128h230l33 128h-297zM1187 640l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3l78 300h-162z" />
<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M56 0l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89 t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200zM522 182q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30t24.5 40t9.5 51q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1 t-47.5 -1v-338zM522 674q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307z" />
<glyph unicode="&#xf15b;" d="M0 -160v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472z" />
<glyph unicode="&#xf15c;" d="M0 -160v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM384 160q0 -14 9 -23t23 -9h704q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64zM384 416q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64zM384 672q0 -14 9 -23t23 -9h704q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64zM1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472z" />
<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM899 768v106h70l230 662h162l230 -662h70v-106h-288v106h75l-47 144h-243l-47 -144h75v-106 h-287zM988 -166l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121v-233h-584v90zM1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18 t-7.5 -29z" />
<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM899 -150h70l230 662h162l230 -662h70v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287 v106zM988 768v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248v119h121v-233h-584zM1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29 z" />
<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM896 -32q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9 t-9 23v192zM896 288v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23zM896 800v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23zM896 1312v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23 v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM896 -32q0 14 9 23t23 9h256q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9 t-9 23v192zM896 288v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23zM896 800v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23zM896 1312v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23 v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf162;" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM946 261q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5q0 -62 -13 -121.5t-41 -114 t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5zM976 1351l192 185h123v-654h165v-114h-469v114h167v432q0 7 0.5 19t0.5 17 v16h-2l-7 -12q-8 -13 -26 -31l-62 -58zM1085 261q0 -57 36.5 -95t104.5 -38q50 0 85 27t35 68q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94z" />
<glyph unicode="&#xf163;" d="M34 108q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35zM946 1285q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5q0 -62 -13 -121.5t-41 -114 t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5zM976 327l192 185h123v-654h165v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16 h-2l-7 -12q-8 -13 -26 -31l-62 -58zM1085 1285q0 -57 36.5 -95t104.5 -38q50 0 85 27t35 68q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94z" />
<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M0 64v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45zM128 192q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45zM480 64v641q0 25 18 43.5t43 20.5q24 2 76 59 t101 121q68 87 101 120q18 18 31 48t17.5 48.5t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135 q0 -86 -55 -149q15 -44 15 -76q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5z" />
<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M0 448q0 -26 19 -45t45 -19h288q26 0 45 19t19 45v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640zM128 960q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45zM480 447v641q0 26 19 44.5t45 19.5q35 1 158 44 q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76q55 -61 55 -149q-1 -78 -57.5 -135t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39 t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121t-76 59q-25 2 -43 20.5t-18 43.5z" />
<glyph unicode="&#xf166;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM218 366q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73 q20 84 20 260q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5q-20 -87 -20 -260zM300 551v70h232v-70h-80v-423h-74v423h-78zM396 1313l24 -69t23 -69q35 -103 46 -158v-201h74v201l90 296h-75l-51 -195l-53 195 h-78zM542 205v290h66v-270q0 -24 1 -26q1 -15 15 -15q20 0 42 31v280h67v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54zM654 936q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38q-21 -29 -21 -87v-130zM721 923 v156q0 52 32 52t32 -52v-156q0 -51 -32 -51t-32 51zM790 128v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67zM857 200q16 -16 33 -16q29 0 29 49v157q0 50 -29 50q-17 0 -33 -16v-224zM907 893q0 -37 6 -55 q11 -27 43 -27q36 0 77 45v-40h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293zM1037 247v129q0 59 20 86q29 38 80 38t78 -38q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68v-9q0 -29 -2 -43q-3 -22 -15 -40 q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86zM1103 355h66v34q0 51 -33 51t-33 -51v-34z" />
<glyph unicode="&#xf167;" d="M27 260q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99q-26 112 -26 350zM138 509h105v-569h100v569h107v94h-312 v-94zM266 1536h106l71 -263l68 263h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187zM463 43q0 -49 8 -73q12 -37 58 -37q48 0 102 61v-54h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391zM614 1028v175q0 80 28 117q38 51 105 51 q69 0 106 -51q28 -37 28 -117v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51q-28 38 -28 118zM704 1011q0 -70 43 -70t43 70v210q0 69 -43 69t-43 -69v-210zM798 -60h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89 v-663zM887 36v301q22 22 45 22q39 0 39 -67v-211q0 -67 -39 -67q-23 0 -45 22zM955 971v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75zM1130 100q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54 q2 9 2 58v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51q-28 -37 -28 -116v-173zM1219 245v46q0 68 45 68t45 -68v-46h-90z" />
<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M5 384q-10 17 0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45l164 -286q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17zM536 539q18 32 531 942q25 45 64 45h241q22 0 31 -15q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37 q-10 -15 -32 -15h-239q-42 0 -66 45z" />
<glyph unicode="&#xf169;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM227 396q8 -13 24 -13h185q31 0 50 36l199 352q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29 l125 -216v-1l-196 -346q-9 -14 0 -28zM638 516q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1l409 723q8 16 0 28q-7 12 -24 12h-187q-30 0 -49 -35z" />
<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M0 640q0 96 1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150t-1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58 t-69.5 123q-14 65 -21.5 147.5t-8.5 136.5t-1 150zM640 320q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54t-30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640z" />
<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M64 558l338 271l494 -305l-342 -285zM64 1099l490 319l342 -285l-494 -304zM407 166v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284l147 96v-108l-490 -293v-1l-1 1l-1 -1v1zM896 524l494 305l338 -271l-489 -319zM896 1133l343 285l489 -319l-338 -270z" />
<glyph unicode="&#xf16c;" horiz-adv-x="1408" d="M0 -255v736h121v-618h928v618h120v-701l-1 -35v-1h-1132l-35 1h-1zM221 -17v151l707 1v-151zM227 243l14 150l704 -65l-13 -150zM270 563l39 146l683 -183l-39 -146zM395 928l77 130l609 -360l-77 -130zM707 1303l125 86l398 -585l-124 -85zM1136 1510l149 26l121 -697 l-149 -26z" />
<glyph unicode="&#xf16d;" d="M0 69v1142q0 81 58 139t139 58h1142q81 0 139 -58t58 -139v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139zM171 110q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62 q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648zM461 643q0 -124 90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5t-90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5zM1050 1003q0 -29 20 -49t49 -20h174q29 0 49 20t20 49v165q0 28 -20 48.5 t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165z" />
<glyph unicode="&#xf16e;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM274 640q0 -88 62 -150t150 -62t150 62t62 150t-62 150t-150 62t-150 -62t-62 -150zM838 640q0 -88 62 -150 t150 -62t150 62t62 150t-62 150t-150 62t-150 -62t-62 -150z" />
<glyph unicode="&#xf170;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM309 384h94l104 160h522l104 -160h94l-459 691zM567 608l201 306l201 -306h-402z" />
<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M0 1222q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34 t-6 39.5t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158zM173 285l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18t-76.5 27 t-73 43.5t-52 61.5q-25 96 -57 292zM243 1240q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5q-20 27 -56 44.5t-58 22t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43zM481 657q4 -91 77.5 -155t165.5 -56q91 8 152 84 t50 168q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5zM599 710q14 41 52 58q36 18 72.5 12t64 -35.5t27.5 -67.5q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82z" />
<glyph unicode="&#xf172;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM260 1060q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63 q24 13 39.5 23t31 29t19.5 40q48 267 80 473q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54zM385 384q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71q0 7 5.5 26.5t3 32 t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6zM436 1073q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5t-52.5 16t-54.5 32.5zM607 653q-2 49 25.5 93t72.5 64 q70 31 141.5 -10t81.5 -118q8 -66 -36 -121t-110 -61t-119 40t-56 113zM687.5 660.5q0.5 -52.5 43.5 -70.5q39 -23 81 4t36 72q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5z" />
<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M78 779v217q91 30 155 84q64 55 103 132q39 78 54 196h219v-388h364v-241h-364v-394q0 -136 14 -172q13 -37 52 -60q50 -31 117 -31q117 0 232 76v-242q-102 -48 -178 -65q-77 -19 -173 -19q-105 0 -186 27q-78 25 -138 75q-58 51 -79 105q-22 54 -22 161v539h-170z" />
<glyph unicode="&#xf174;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM413 744h127v-404q0 -78 17 -121q17 -42 59 -78q43 -37 104 -57q62 -20 140 -20q67 0 129 14q57 13 134 49v181 q-88 -56 -174 -56q-51 0 -88 23q-29 17 -39 45q-11 30 -11 129v295h274v181h-274v291h-164q-11 -90 -40 -147t-78 -99q-48 -40 -116 -63v-163z" />
<glyph unicode="&#xf175;" horiz-adv-x="768" d="M3 237q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19t-5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35z" />
<glyph unicode="&#xf176;" horiz-adv-x="768" d="M3 1043q-8 19 5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19z" />
<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M64 637q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23z" />
<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M0 544v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M0 634q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32 q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503zM683 1131q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17z" />
<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M0 -27v557h682v-651zM0 614v565l682 94v-659h-682zM757 -131v661h907v-786zM757 614v669l907 125v-794h-907z" />
<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M0 337v430q0 42 30 72t73 30q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30t-73 30t-30 73zM241 886q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20l-71 -131q107 -55 171 -153.5t64 -215.5 h-925zM245 184v666h918v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78zM455 1092q0 -16 11 -27.5t27 -11.5t27.5 11.5t11.5 27.5t-11.5 27.5 t-27.5 11.5t-27 -11.5t-11 -27.5zM876 1092q0 -16 11.5 -27.5t27.5 -11.5t27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5zM1203 337v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73z" />
<glyph unicode="&#xf17c;" d="M11 -115q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48q3 -17 37 -26q20 -6 84.5 -18.5 t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195q-12 112 -16 310q-2 90 24 151.5 t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5 t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13 t16.5 -9.5q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5 q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5zM321 495q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54 t7 -70.5q46 24 7 92q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5 t60 -22.5q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18zM372 630q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12zM603 1190q2 -5 5 -6 q10 0 7 -15q-3 -20 8 -20q3 0 3 3q3 17 -2.5 30t-11.5 15q-9 2 -9 -7zM634 1110q0 12 19 15h10q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5zM721 1122q24 11 32 -2q3 -6 -3 -9q-4 -1 -11.5 6.5t-17.5 4.5zM835 1196l4 -2q14 -4 18 -31q0 -3 8 2l2 3q0 11 -5 19.5t-11 12.5 t-9 3q-14 -1 -7 -7zM851 1381.5q-1 -2.5 3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9zM981 1002q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20q-2 8 -6.5 11.5t-13 5 t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5z" />
<glyph unicode="&#xf17d;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM112 640q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81t99.5 48l37 13 q4 1 13 3.5t13 4.5q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21zM126 775q302 0 606 80q-120 213 -244 378q-138 -65 -234 -186t-128 -272zM350 134q184 -150 418 -150q132 0 256 52q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5 t-103 -148zM609 1276q1 1 2 1q-1 0 -2 -1zM613 1277q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5l12.5 17.5q-185 164 -433 164q-76 0 -155 -19zM909 797q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5 t36.5 -6t25 -4.5l10 -2q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5zM1007 565q87 -239 128 -469q111 75 185 189.5t96 250.5q-210 60 -409 29z" />
<glyph unicode="&#xf17e;" d="M0 1024q0 159 112.5 271.5t271.5 112.5q130 0 234 -80q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225 t-55.5 273.5q0 73 16 150q-80 104 -80 234zM376 399q0 -92 122 -157.5t291 -65.5q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12 t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5 q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75z" />
<glyph unicode="&#xf180;" horiz-adv-x="1664" d="M0 640q0 75 53 128l587 587q53 53 128 53t128 -53l265 -265l-398 -399l-188 188q-42 42 -99 42q-59 0 -100 -41l-120 -121q-42 -40 -42 -99q0 -58 42 -100l406 -408q30 -28 67 -37l6 -4h28q60 0 99 41l619 619l2 -3q53 -53 53 -128t-53 -128l-587 -587 q-52 -53 -127.5 -53t-128.5 53l-587 587q-53 53 -53 128zM302 660q0 21 14 35l121 120q13 15 35 15t36 -15l252 -252l574 575q15 15 36 15t36 -15l120 -120q14 -15 14 -36t-14 -36l-730 -730q-17 -15 -37 -15q-4 0 -6 1q-18 2 -30 14l-407 408q-14 15 -14 36z" />
<glyph unicode="&#xf181;" d="M0 -64v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM160 192q0 -14 9 -23t23 -9h480q14 0 23 9t9 23v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024zM832 576q0 -14 9 -23t23 -9h480q14 0 23 9t9 23 v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640z" />
<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M0 480q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192 q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43q-40 0 -68 28t-28 68zM416 1280q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5z" />
<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M0 416v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68z M288 1280q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5z" />
<glyph unicode="&#xf184;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM399.5 766q8.5 -37 24.5 -59l349 -473l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5 t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85z" />
<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M44 363q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29q-4 -15 -20 -20 l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20zM320 640q0 -117 45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5 t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5z" />
<glyph unicode="&#xf186;" d="M0 640q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384z" />
<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M64 1088v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1536q-26 0 -45 19t-19 45zM128 -64v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45zM704 704q0 -26 19 -45t45 -19h256 q26 0 45 19t19 45t-19 45t-45 19h-256q-26 0 -45 -19t-19 -45z" />
<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M32 576q0 26 19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19t19 -45t-19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19 t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45z M512 1152q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5h-640z" />
<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M-1 1004q0 11 3 16l4 6q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24 q17 19 38 30q53 26 239 24q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5 t13 3t20 0.5l288 2q39 5 64 -2.5t31 -16.5l6 -10q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12 q-30 21 -70 64t-68.5 77.5t-61 58t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211 t-130.5 272q-6 16 -6 27z" />
<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M0 391q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5q0 -68 -37 -139.5 t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5zM181 320q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5zM413.5 230.5 q-40.5 92.5 6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5q-45 -102 -158 -150t-224 -12q-107 34 -147.5 126.5zM495 257.5q9 -34.5 43 -50.5t74.5 -2.5t62.5 47.5q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5zM705 399 q-17 -31 13 -45q14 -5 29 0.5t22 18.5q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5zM1165 1274q-6 28 9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158 q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5zM1224 1047q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5t54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37z" />
<glyph unicode="&#xf18b;" d="M0 638q0 187 83.5 349.5t229.5 269.5t325 137v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495zM398 -34q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211q-171 -94 -368 -94q-196 0 -367 94zM898 909v485q179 -30 325 -137t229.5 -269.5 t83.5 -349.5q0 -280 -181 -495q-204 99 -330.5 306.5t-126.5 459.5z" />
<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M0 -211q0 19 13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23 t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89 t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283 q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32z" />
<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M21 217v66h1238v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5zM21 354v255h1238v-255h-1238zM21 682v255h1238v-255h-1238zM21 1010v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5v-67h-1238z" />
<glyph unicode="&#xf18e;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM384 544v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23t-9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5z" />
<glyph unicode="&#xf190;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM384 640q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23z" />
<glyph unicode="&#xf191;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 160q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5v960q0 13 -9.5 22.5t-22.5 9.5h-960 q-13 0 -22.5 -9.5t-9.5 -22.5v-960zM448 640q0 33 27 52l448 320q17 12 37 12q26 0 45 -19t19 -45v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52z" />
<glyph unicode="&#xf192;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM224 640q0 -148 73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73 t-198 -198t-73 -273zM512 640q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181z" />
<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M0 320q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5zM416 1348q-2 16 6 42 q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455l198 99l58 -114l-256 -128q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5z" />
<glyph unicode="&#xf194;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM128 806q16 -8 25.5 -26t21.5 -20q21 -3 54.5 8.5t58 10.5t41.5 -30q11 -18 18.5 -38.5t15 -48t12.5 -40.5 q17 -46 53 -187q36 -146 57 -197q42 -99 103 -125q43 -12 85 -1.5t76 31.5q131 77 250 237q104 139 172.5 292.5t82.5 226.5q16 85 -21 132q-52 65 -187 45q-17 -3 -41 -12.5t-57.5 -30.5t-64.5 -48.5t-59.5 -70t-44.5 -91.5q80 7 113.5 -16t26.5 -99q-5 -52 -52 -143 q-43 -78 -71 -99q-44 -32 -87 14q-23 24 -37.5 64.5t-19 73t-10 84t-8.5 71.5q-23 129 -34 164q-12 37 -35.5 69t-50.5 40q-57 16 -127 -25q-54 -32 -136.5 -106t-122.5 -102v-7z" />
<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M0 608v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31 l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26z" />
<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M0 288v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5zM128 288q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47 t-47 -113v-832zM256 672v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M0 576q0 12 38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113q-110 -64 -268 -64h-128v64 h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5zM323 336h29q157 0 273 64h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96zM323 816l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5 t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64h-29zM1739 484l81 -30q68 48 68 122t-68 122l-81 -30q53 -36 53 -92t-53 -92z" />
<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M0 796q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5 t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72 l-55 163l-153 -53q-29 -9 -50 -9q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5zM620 811l105 -313l310 105l-105 315z" />
<glyph unicode="&#xf199;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 352q0 -40 28 -68t68 -28h832q40 0 68 28t28 68v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99 q-98 -69 -164 -69t-164 69q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436zM256 928q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13 t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68z" />
<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M0 640q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM41 640q0 -173 68 -331.5t182.5 -273t273 -182.5t331.5 -68t331.5 68t273 182.5t182.5 273t68 331.5 t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5zM127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM254 1062q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5 q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21t14.5 -24t14 -23q63 -107 63 -212q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15 t-1.5 -18.5t9 -16.5t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5zM679 -97l230 670l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1282 -24l235 678q59 169 59 276q0 42 -6 79 q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5z" />
<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M0 455q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360l272 133v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5zM1134 860v172q277 -33 481 -157l140 79l37 -390l-525 114l147 83 q-119 70 -280 99z" />
<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M0 -128q0 26 20.5 45t48.5 19h1782q28 0 48.5 -19t20.5 -45v-128h-1920v128zM0 1024v128l960 384l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128zM128 0v64q0 26 20.5 45t48.5 19h59v768h256v-768h128v768h256v-768h128v768h256 v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664z" />
<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M0 1024q0 23 22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31t-22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433 q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31zM512 384l18 316l574 -181q22 -7 48 -7t48 7l574 181l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128z" />
<glyph unicode="&#xf19e;" d="M109 1536q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610l13 -707q-62 11 -105 11 q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287z" />
<glyph unicode="&#xf1a0;" horiz-adv-x="1280" d="M111 182q0 81 44.5 150t118.5 115q131 82 404 100q-32 41 -47.5 73.5t-15.5 73.5q0 40 21 85q-46 -4 -68 -4q-148 0 -249.5 96.5t-101.5 244.5q0 82 36 159t99 131q76 66 182 98t218 32h417l-137 -88h-132q75 -63 113 -133t38 -160q0 -72 -24.5 -129.5t-59.5 -93 t-69.5 -65t-59 -61.5t-24.5 -66q0 -36 32 -70.5t77 -68t90.5 -73.5t77.5 -104t32 -142q0 -91 -49 -173q-71 -122 -209.5 -179.5t-298.5 -57.5q-132 0 -246.5 41.5t-172.5 137.5q-36 59 -36 131zM297 228q0 -56 23.5 -102t61 -75.5t87 -50t100 -29t101.5 -8.5q58 0 111.5 13 t99 39t73 73t27.5 109q0 25 -7 49t-14.5 42t-27 41.5t-29.5 35t-38.5 34.5t-36.5 29t-41.5 30t-36.5 26q-16 2 -49 2q-53 0 -104.5 -7t-107 -25t-97 -46t-68.5 -74.5t-27 -105.5zM403 1222q0 -46 10 -97.5t31.5 -103t52 -92.5t75 -67t96.5 -26q37 0 77.5 16.5t65.5 43.5 q53 56 53 159q0 59 -17 125.5t-48 129t-84 103.5t-117 41q-42 0 -82.5 -19.5t-66.5 -52.5q-46 -59 -46 -160z" />
<glyph unicode="&#xf1a1;" horiz-adv-x="1984" d="M0 722q0 94 66 160t160 66q83 0 148 -55q248 158 592 164l134 423q4 14 17.5 21.5t28.5 4.5l347 -82q22 50 68.5 81t102.5 31q77 0 131.5 -54.5t54.5 -131.5t-54.5 -132t-131.5 -55q-76 0 -130.5 54t-55.5 131l-315 74l-116 -366q327 -14 560 -166q64 58 151 58 q94 0 160 -66t66 -160q0 -62 -31 -114t-83 -82q5 -33 5 -61q0 -121 -68.5 -230.5t-197.5 -193.5q-125 -82 -285.5 -125.5t-335.5 -43.5q-176 0 -336.5 43.5t-284.5 125.5q-129 84 -197.5 193t-68.5 231q0 29 5 66q-48 31 -77 81.5t-29 109.5zM77 722q0 -67 51 -111 q49 131 180 235q-36 25 -82 25q-62 0 -105.5 -43.5t-43.5 -105.5zM178 465q0 -101 59.5 -194t171.5 -166q116 -75 265.5 -115.5t313.5 -40.5t313.5 40.5t265.5 115.5q112 73 171.5 166t59.5 194t-59.5 193.5t-171.5 165.5q-116 75 -265.5 115.5t-313.5 40.5t-313.5 -40.5 t-265.5 -115.5q-112 -73 -171.5 -165.5t-59.5 -193.5zM555 572q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96zM661 209.5q0 16.5 11 27.5t27 11t27 -11q77 -77 265 -77h2q188 0 265 77q11 11 27 11t27 -11t11 -27.5t-11 -27.5 q-99 -99 -319 -99h-2q-220 0 -319 99q-11 11 -11 27.5zM1153 572q0 57 41.5 98t97.5 41t96.5 -41t40.5 -98q0 -56 -40.5 -96t-96.5 -40q-57 0 -98 40t-41 96zM1555 1350q0 -45 32 -77t77 -32t77 32t32 77t-32 77t-77 32t-77 -32t-32 -77zM1672 843q131 -105 178 -238 q57 46 57 117q0 62 -43.5 105.5t-105.5 43.5q-49 0 -86 -28z" />
<glyph unicode="&#xf1a2;" d="M0 193v894q0 133 94 227t226 94h896q132 0 226 -94t94 -227v-894q0 -133 -94 -227t-226 -94h-896q-132 0 -226 94t-94 227zM155 709q0 -37 19.5 -67.5t52.5 -45.5q-7 -25 -7 -54q0 -98 74 -181.5t201.5 -132t278.5 -48.5q150 0 277.5 48.5t201.5 132t74 181.5q0 27 -6 54 q35 14 57 45.5t22 70.5q0 51 -36 87.5t-87 36.5q-60 0 -98 -48q-151 107 -375 115l83 265l206 -49q1 -50 36.5 -85t84.5 -35q50 0 86 35.5t36 85.5t-36 86t-86 36q-36 0 -66 -20.5t-45 -53.5l-227 54q-9 2 -17.5 -2.5t-11.5 -14.5l-95 -302q-224 -4 -381 -113q-36 43 -93 43 q-51 0 -87 -36.5t-36 -87.5zM493 613q0 37 26 63t63 26t63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64zM560 375q0 11 8 18q7 7 17.5 7t17.5 -7q49 -51 172 -51h1h1q122 0 173 51q7 7 17.5 7t17.5 -7t7 -18t-7 -18q-65 -64 -208 -64h-1h-1q-143 0 -207 64q-8 7 -8 18z M882 613q0 37 26 63t63 26t63 -26t26 -63t-26 -64t-63 -27t-63 27t-26 64zM1143 1120q0 30 21 51t50 21q30 0 51 -21t21 -51q0 -29 -21 -50t-51 -21q-29 0 -50 21t-21 50z" />
<glyph unicode="&#xf1a3;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM320 502q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14 q19 0 32.5 -14t13.5 -33v-54l60 -28l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122zM806 500q0 -80 58 -137t139 -57t138.5 57t57.5 139v122h-150v-126q0 -20 -13.5 -33.5t-33.5 -13.5 q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123z" />
<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M0 336v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58l-131 61v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5zM1062 332 v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275h328v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5z" />
<glyph unicode="&#xf1a5;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM64 640h704v-704h480q93 0 158.5 65.5t65.5 158.5v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480z " />
<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M0 271v697h328v286h204v-983h-532zM205 435h123v369h-123v-369zM614 271h205v697h-205v-697zM614 1050h205v204h-205v-204zM901 26v163h328v82h-328v697h533v-942h-533zM1106 435h123v369h-123v-369zM1516 26v163h327v82h-327v697h532v-942h-532zM1720 435h123v369h-123 v-369z" />
<glyph unicode="&#xf1a7;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM293 388l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229t-88.5 229t-213.5 95q-74 0 -141 -36h-186v-840z M504 804v277q28 17 70 17q53 0 91 -45t38 -109t-38 -109.5t-91 -45.5q-43 0 -70 15zM636 -39l211 41v206q51 -19 117 -19q125 0 213 95t88 229t-88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101v-636zM847 377v277q28 17 70 17q53 0 91 -45.5t38 -109.5 t-38 -109t-91 -45q-43 0 -70 15z" />
<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M41 455q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80 t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5l1 -21q75 3 143.5 -20.5 t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14q6 -5 28 -23.5t25.5 -22t19 -18 t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63 t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27zM764 676q10 1 32.5 7t34.5 6q19 0 35 -10l-96 -20zM822 568l48 12l109 -177l-73 -48zM859 884q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1 v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5 t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43zM1061 45h31l10 -83l-41 -12v95zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM1116 29 q21 2 60.5 8.5t72 10t60.5 3.5h14q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13t-54 -9.5t-53.5 -7.5t-32 -4.5zM1947 1528l1 3l2 4l-1 -5zM1950 1535v1v-1zM1950 1535l1 1z" />
<glyph unicode="&#xf1a9;" d="M0 520q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5 t19.5 -177.5q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302zM333 256q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5zM685.5 -76q-0.5 -10 7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5 q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16zM852 31q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5 t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10q-29 -12 -78 -56q-26 -24 -12 -44z" />
<glyph unicode="&#xf1aa;" d="M0 78q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160l151 -152l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5 t-60 145.5zM2 1202q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5t149.5 -87.5l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5 q-70 15 -115 71t-45 129zM446 803l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126t135.5 51q85 0 145 -60.5t60 -145.5q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152 l-160 -160zM776 793l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5q76 -11 126.5 -68.5t50.5 -134.5q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30 l-152 152z" />
<glyph unicode="&#xf1ab;" d="M0 -16v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5q20 0 20 -21v-418l147 -47v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3zM39 15l694 232v1032l-694 -233v-1031zM147 293q6 4 82 92 q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8 t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110 q-4 -2 -19.5 -4t-18.5 0zM268 933l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41zM310 -116q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11q73 -37 159.5 -61.5t157.5 -24.5 q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5l-43 73l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16zM777 1294l573 -184v380zM885 453l102 -31l45 110l211 -65l37 -135l102 -31l-181 657l-100 31z M1071 630l76 185l63 -227z" />
<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M0 -96v1088q0 66 47 113t113 47h128q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113zM512 -96v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-163q58 -34 93 -93t35 -128v-768q0 -106 -75 -181 t-181 -75h-864q-66 0 -113 47t-47 113zM640 896h896v256h-160q-40 0 -68 28t-28 68v160h-640v-512zM736 0q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM736 256q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9 h-128q-14 0 -23 -9t-9 -23v-128zM736 512q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM992 0q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM992 256q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM992 512q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM1248 0q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23 v-128zM1248 256q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128zM1248 512q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128z" />
<glyph unicode="&#xf1ad;" d="M0 -192v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45zM256 160q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM256 416q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM256 672q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM256 928q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM256 1184q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM512 96v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23zM512 416q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64zM512 672q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM512 928q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM512 1184q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM768 416q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM768 672q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM768 928q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM768 1184q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM1024 160q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64zM1024 416q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM1024 672q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM1024 928q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64zM1024 1184q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64z" />
<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M64 1056q0 40 28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68zM416 1152q0 93 65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5t-65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5z" />
<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M0 724q0 80 42 139.5t119 59.5q76 0 141.5 -55.5t100.5 -134t35 -152.5q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152zM256 19q0 86 56 191.5t139.5 192.5t187.5 146t193 59q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45 t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146zM333 1163q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151zM884 1064 q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5q-61 0 -105 39t-63 92.5t-19 113.5zM1226 581q0 74 35 152.5t100.5 134t141.5 55.5q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5 q-77 0 -119 59t-42 139z" />
<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M64 1008q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5z" />
<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M0 256v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65zM134 1026l698 -254l698 254l-698 254zM896 -93l640 349v636l-640 -233v-752z" />
<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M0 96v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70v-400l434 -186q36 -16 57 -48t21 -70v-416q0 -36 -19 -67t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4 l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67zM172 531l404 -173l404 173l-404 173zM640 -96l384 192v314l-384 -164v-342zM647 1219l441 -189l441 189l-441 189zM1152 651l384 165v266l-384 -164v-267zM1196 531l404 -173l404 173l-404 173zM1664 -96 l384 192v314l-384 -164v-342z" />
<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M0 22v1260h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5 t45.5 113.5q0 144 -190 144h-260v-294zM1137 477q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658q0 -111 57.5 -171.5t166.5 -60.5q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347zM1337 1073h511v124 h-511v-124zM1388 576h408q-18 195 -200 195q-90 0 -146 -52.5t-62 -142.5z" />
<glyph unicode="&#xf1b5;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM128 254h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5t-56.5 60.5t-79 29.5 t-97 8.5h-371v-787zM301 388v217h189q124 0 124 -113q0 -104 -128 -104h-185zM301 723v184h163q119 0 119 -90q0 -94 -106 -94h-176zM838 538q0 -135 79 -217t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20q-68 0 -104 38t-36 107h411q1 10 1 30 q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216zM964 911v77h319v-77h-319zM996 600q4 56 39 89t91 33q113 0 124 -122h-254z" />
<glyph unicode="&#xf1b6;" horiz-adv-x="2048" d="M0 764q0 86 61 146.5t146 60.5q73 0 130 -46t73 -117l783 -315q49 29 106 29q14 0 21 -1l173 248q1 114 82 194.5t195 80.5q115 0 196.5 -81t81.5 -196t-81.5 -196.5t-196.5 -81.5l-265 -194q-8 -80 -67.5 -133.5t-138.5 -53.5q-73 0 -130 46t-73 117l-783 315 q-51 -30 -106 -30q-85 0 -146 61t-61 147zM55 764q0 -64 44.5 -108.5t107.5 -44.5q11 0 33 4l-64 26q-33 14 -52.5 44.5t-19.5 66.5q0 50 35.5 85.5t85.5 35.5q20 0 41 -8v1l76 -31q-20 37 -56.5 59t-78.5 22q-63 0 -107.5 -44.5t-44.5 -107.5zM1164 244q19 -37 55.5 -59 t79.5 -22q63 0 107.5 44.5t44.5 107.5t-44.5 108t-107.5 45q-13 0 -33 -4q2 -1 20 -8t21.5 -8.5t18.5 -8.5t19 -10t16 -11t15.5 -13.5t11 -14.5t10 -18t5 -21t2.5 -25q0 -50 -35.5 -85.5t-85.5 -35.5q-14 0 -31.5 4.5t-29 9t-31.5 13.5t-28 12zM1584 767q0 -77 54.5 -131.5 t131.5 -54.5t132 54.5t55 131.5t-55 131.5t-132 54.5q-76 0 -131 -54.5t-55 -131.5zM1623 767q0 62 43.5 105.5t104.5 43.5t105 -44t44 -105t-43.5 -104.5t-105.5 -43.5q-61 0 -104.5 43.5t-43.5 104.5z" />
<glyph unicode="&#xf1b7;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM128 693q0 -53 38 -91t92 -38q36 0 66 18l489 -197q10 -44 45.5 -73t81.5 -29q50 0 86.5 34t41.5 83l167 122 q71 0 122 50.5t51 122.5t-51 123t-122 51q-72 0 -122.5 -50.5t-51.5 -121.5l-108 -155q-2 0 -6.5 0.5t-6.5 0.5q-35 0 -67 -19l-489 197q-10 44 -45.5 73t-80.5 29q-54 0 -92 -38t-38 -92zM162 693q0 40 28 68t68 28q27 0 49.5 -14t34.5 -37l-48 19q-29 11 -56.5 -2 t-38.5 -41q-12 -29 -0.5 -57t39.5 -40v-1l40 -16q-14 -2 -20 -2q-40 0 -68 27.5t-28 67.5zM855 369q5 -2 47 -19q29 -12 58 0.5t41 41.5q11 29 -1 57.5t-41 40.5l-40 16q14 2 21 2q39 0 67 -27.5t28 -67.5t-28 -67.5t-67 -27.5q-59 0 -85 51zM1118 695q0 48 34 82t83 34 q48 0 82 -34t34 -82t-34 -82t-82 -34q-49 0 -83 34t-34 82zM1142 696q0 -39 27.5 -66t65.5 -27t65.5 27t27.5 66q0 38 -27.5 65.5t-65.5 27.5t-65.5 -27.5t-27.5 -65.5z" />
<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M16 970l433 -17l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188zM270.5 158q-3.5 28 4 65t12 55t21.5 64t19 53q78 -12 509 -28l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5 q-11 27 -14.5 55zM294 1124l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5t36 -39.5t32 -35q-47 -63 -265 -435l-317 187zM782 1524l405 -1q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190l142 83l-220 -373l-419 20l151 86q-34 89 -75 166 t-75.5 123.5t-64.5 80t-47 46.5zM953 197l211 362l7 -173q170 -16 283 -5t170 33l56 22l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164zM1218 847l313 195l19 11l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22 t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436z" />
<glyph unicode="&#xf1b9;" horiz-adv-x="1984" d="M0 160v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h704q98 0 179 -63.5t104 -157.5l105 -419h28q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-128v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-928v-128q0 -80 -56 -136 t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23zM160 448q0 -66 47 -113t113 -47t113 47t47 113t-47 113t-113 47t-113 -47t-47 -113zM516 768h952l-89 357q-2 8 -14 17.5t-21 9.5h-704q-9 0 -21 -9.5t-14 -17.5zM1472 448q0 -66 47 -113t113 -47t113 47t47 113 t-47 113t-113 47t-113 -47t-47 -113z" />
<glyph unicode="&#xf1ba;" horiz-adv-x="1984" d="M0 32v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h64q98 0 179 -63.5t104 -157.5l105 -419h28q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-128v-64q0 -80 -56 -136t-136 -56 t-136 56t-56 136v64h-928v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23zM160 320q0 -66 47 -113t113 -47t113 47t47 113t-47 113t-113 47t-113 -47t-47 -113zM516 640h952l-89 357q-2 8 -14 17.5t-21 9.5h-704q-9 0 -21 -9.5t-14 -17.5zM1472 320 q0 -66 47 -113t113 -47t113 47t47 113t-47 113t-113 47t-113 -47t-47 -113z" />
<glyph unicode="&#xf1bb;" d="M32 64q0 26 19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45t-19 -45t-45 -19 h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45z" />
<glyph unicode="&#xf1bc;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM237 886q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37q159 0 309.5 -34t253.5 -95q21 -12 40 -12 q29 0 50.5 20.5t21.5 51.5q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5zM289 637q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5q0 40 -35 61 q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64zM321 406q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52z" />
<glyph unicode="&#xf1bd;" d="M0 11v1258q0 58 40.5 98.5t98.5 40.5h1258q58 0 98.5 -40.5t40.5 -98.5v-1258q0 -58 -40.5 -98.5t-98.5 -40.5h-1258q-58 0 -98.5 40.5t-40.5 98.5zM71 11q0 -28 20 -48t48 -20h1258q28 0 48 20t20 48v1258q0 28 -20 48t-48 20h-1258q-28 0 -48 -20t-20 -48v-1258z M121 11v141l711 195l-212 439q4 1 12 2.5t12 1.5q170 32 303.5 21.5t221 -46t143.5 -94.5q27 -28 -25 -42q-64 -16 -256 -62l-97 198q-111 7 -240 -16l188 -387l533 145v-496q0 -7 -5.5 -12.5t-12.5 -5.5h-1258q-7 0 -12.5 5.5t-5.5 12.5zM121 709v560q0 7 5.5 12.5 t12.5 5.5h1258q7 0 12.5 -5.5t5.5 -12.5v-428q-85 30 -188 52q-294 64 -645 12l-18 -3l-65 134h-233l85 -190q-132 -51 -230 -137zM246 413q-24 203 166 305l129 -270l-255 -61q-14 -3 -26 4.5t-14 21.5z" />
<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M0 405l17 128q2 9 9 9t9 -9l20 -128l-20 -126q-2 -9 -9 -9t-9 9zM79 405l23 207q0 9 9 9q8 0 10 -9l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10zM169 405l21 245q2 12 12 12q11 0 11 -12l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11zM259 405l21 252q0 13 13 13 q12 0 14 -13l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13zM350 405l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5zM401 159zM442 405l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5l21 -380l-21 -246q0 -7 -5 -12.5 t-12 -5.5q-16 0 -18 18zM534 403l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19zM628 405l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5l18 -506l-18 -242q-2 -21 -22 -21q-19 0 -21 21zM723 405l14 -241 q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17zM784 164zM817 405l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18zM913 404l12 492q1 12 9 20t19 8t18.5 -8 t8.5 -20l14 -492l-14 -236q0 -11 -8 -19t-19 -8t-19 8t-9 19zM1010 405q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11q11 0 20 9q9 7 9 20l1 24l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6zM1079 169zM1103 404l12 636v3q2 15 12 24q9 7 20 7 q8 0 15 -5q14 -8 16 -26l14 -639l-14 -231q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114zM1204 174v899q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22z" />
<glyph unicode="&#xf1c0;" d="M0 0v170q119 -84 325 -127t443 -43t443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128zM0 384v170q119 -84 325 -127t443 -43t443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128zM0 768 v170q119 -84 325 -127t443 -43t443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128zM0 1152v128q0 69 103 128t280 93.5t385 34.5t385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128z" />
<glyph unicode="&#xf1c1;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM257 60q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4 q52 85 107 197q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38 q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83z M714 842q1 7 7 44q0 3 7 43q1 4 4 8q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2q-15 -42 -2 -132zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376zM1098 353q76 -28 124 -28q14 0 18 1q0 1 -2 3q-24 24 -140 24z" />
<glyph unicode="&#xf1c2;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM233 661h70l164 -661h159l128 485q7 20 10 46q2 16 2 24 h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21q-2 26 -7 46l-99 438h90v107h-300v-107zM1024 1024h376 q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf1c3;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM429 0h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4 h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107h-290v-107h68l189 -272l-194 -283h-68v-106zM1024 1024h376 q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf1c4;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM416 0h327v106h-93v167h137q76 0 118 15q67 23 106.5 87 t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92v-106zM650 386v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15h-119zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf1c5;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM256 0v192l192 192l128 -128l384 384l320 -320v-320 h-1024zM256 704q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf1c6;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536zM384 192q0 25 8 52q21 63 120 396 v128h128v-128h79q22 0 39 -13t23 -34l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5zM512 192q0 -26 37.5 -45t90.5 -19t90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45zM512 896h128v128h-128v-128zM512 1152h128v128h-128v-128 zM640 768h128v128h-128v-128zM640 1024h128v128h-128v-128zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf1c7;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM256 288v192q0 14 9 23t23 9h131l166 167q16 15 35 7 q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23zM762 206.5q1 -26.5 20 -44.5q20 -17 44 -17q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5z M973.5 54.5q2.5 -26.5 23.5 -42.5q18 -15 40 -15q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf1c8;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM256 256v384q0 52 38 90t90 38h384q52 0 90 -38t38 -90 v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90zM960 403v90l265 266q9 9 23 9q4 0 12 -2q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf1c9;" d="M0 -160v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48l312 -312q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68zM128 -128h1280v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536zM254 429q-14 19 0 38l226 301q8 11 21 12.5t24 -6.5 l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5zM636 43l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5l-63 10q-13 2 -20.5 13t-5.5 24zM947.5 181 q-1.5 13 6.5 24l182 243l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5l226 -301q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21zM1024 1024h376q-10 29 -22 41l-313 313q-12 12 -41 22v-376z" />
<glyph unicode="&#xf1ca;" d="M39 1286h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132 t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390z" />
<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M0 367v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64v-546q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64zM154 511l193 129l-193 129v-258zM216 367l603 -402v359l-334 223zM216 913l269 -180l334 223v359zM624 640 l272 -182l272 182l-272 182zM973 -35l603 402l-269 180l-334 -223v-359zM973 956l334 -223l269 180l-603 402v-359zM1445 640l193 -129v258z" />
<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M0 407q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5 h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55t121.5 -21 q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5t-85 -189.5z " />
<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M0 640q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM128 640q0 -190 90 -361l194 194q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361zM512 640 q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM535 -38q171 -90 361 -90t361 90l-194 194q-82 -28 -167 -28t-167 28zM535 1318l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90t-361 -90z M1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M0 640q0 222 101 414.5t276.5 317t390.5 155.5v-260q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v260q215 -31 390.5 -155.5t276.5 -317t101 -414.5 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348z" />
<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M0 640q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM44 640q0 -173 67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331 t-67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331zM87 640q0 205 98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385zM206 217l58 34q29 -49 73 -99 l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13v-66q-208 6 -385 109.5t-283 275.5zM207 1063q106 172 282 275.5t385 109.5v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98zM415 805q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10 t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162q-67 77 -98 169l232 80q-14 42 -14 85t14 85zM918 -102 q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99l58 -34q-106 -172 -283 -275.5t-385 -109.5v66zM918 1382v66q209 -6 385 -109.5t282 -275.5l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13zM1516 428q36 103 36 212q0 112 -35 212l82 28 q-19 56 -49 112l57 33q98 -180 98 -385t-98 -385l-57 33q27 52 49 112z" />
<glyph unicode="&#xf1d2;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 218q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5 t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85q0 -53 41 -77v-3q-113 -37 -113 -139zM382 225q0 64 98 64q102 0 102 -61q0 -66 -93 -66 q-107 0 -107 63zM395 693q0 90 77 90q36 0 55 -25.5t19 -63.5q0 -85 -74 -85q-77 0 -77 84zM755 1072q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392q0 -50 -3 -75z M966 771q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117z" />
<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M68 7q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47q98 0 218 47v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58q0 -31 22.5 -51.5t58 -32 t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5zM272 18q0 -101 172 -101q151 0 151 105q0 100 -165 100q-158 0 -158 -104zM293 775q0 -135 124 -135q119 0 119 137q0 61 -30 102t-89 41 q-124 0 -124 -145zM875 1389q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5t-39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5zM901 220q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134h-222zM1217 901v190h96v76q0 54 -6 89h227q-6 -41 -6 -165 h171v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6z" />
<glyph unicode="&#xf1d4;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM368 1135l323 -589v-435h134v436l343 588h-150q-21 -39 -63.5 -118.5t-68 -128.5t-59.5 -118.5t-60 -128.5h-3 q-21 48 -44.5 97t-52 105.5t-46.5 92t-54 104.5t-49 95h-150z" />
<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M57 953q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5t-78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153 t-153 102t-186 38t-186 -38t-153 -102t-102 -153t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265zM113.5 38.5q10.5 121.5 29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5t136.5 -56.5 t56.5 -136.5t-57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5z" />
<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M18 264q0 275 252 466q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5 t3.5 -5t2 -3.5q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9 t-98 20t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20 q-18 -41 -54.5 -74.5t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100z" />
<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M0 858q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490z M380 1075q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5t-25 66t-66 25q-43 0 -76 -25.5t-33 -65.5zM816 404q0 143 81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109q-150 -37 -218 -37 q-169 0 -311 70.5t-223.5 191.5t-81.5 264zM888 1075q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5t-24.5 66t-65.5 25q-43 0 -76 -25.5t-33 -65.5zM1160 568q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5 t-22.5 -49.5zM1559 568q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5z" />
<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M0 508q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55z" />
<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M0 508q-3 39 32 59l1664 960q35 21 68 -2q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55zM209 522l336 -137l863 639l-478 -797l492 -201 l221 1323z" />
<glyph unicode="&#xf1da;" d="M0 832v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298t-61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12 q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45zM512 480v64q0 14 9 23t23 9h224v352 q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf1db;" d="M0 640q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM128 640q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5z" />
<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M62 1338q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5 t45 -15t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18 q-15 10 -45 12t-53 2t-41 14t-18 45z" />
<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M24 926q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108 q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179q-64 117 -64 259z" />
<glyph unicode="&#xf1de;" d="M0 736v64q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-64q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM128 -96v672h256v-672q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM128 960v416q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-416h-256zM512 224v64q0 40 28 68 t68 28h320q40 0 68 -28t28 -68v-64q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM640 64h256v-160q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v160zM640 448v928q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-928h-256zM1024 992v64q0 40 28 68t68 28h320q40 0 68 -28 t28 -68v-64q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68zM1152 -96v928h256v-928q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23zM1152 1216v160q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-160h-256z" />
<glyph unicode="&#xf1e0;" d="M0 640q0 133 93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86q133 0 226.5 -93.5t93.5 -226.5 t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5z" />
<glyph unicode="&#xf1e1;" d="M0 160v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5zM256 640q0 -88 62.5 -150.5t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5 t150.5 62.5t62.5 150.5t-62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5z" />
<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M0 448q0 143 55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68l243 244l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5 t-225 150t-150 225t-55.5 273.5zM170 615q10 -24 35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49t-34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49zM1376 1472q0 13 9 23q10 9 23 9t23 -9l90 -91q10 -9 10 -22.5t-10 -22.5 q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23zM1536 1408v96q0 14 9 23t23 9t23 -9t9 -23v-96q0 -14 -9 -23t-23 -9t-23 9t-9 23zM1605 1242.5q0 13.5 10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5z M1605 1381.5q0 13.5 10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5zM1632 1312q0 14 9 23t23 9h96q14 0 23 -9t9 -23t-9 -23t-23 -9h-96q-14 0 -23 9t-9 23z" />
<glyph unicode="&#xf1e3;" horiz-adv-x="1792" />
<glyph unicode="&#xf1e4;" horiz-adv-x="1792" />
<glyph unicode="&#xf1e5;" horiz-adv-x="1792" />
<glyph unicode="&#xf1e6;" horiz-adv-x="1792" />
<glyph unicode="&#xf1e7;" horiz-adv-x="1792" />
<glyph unicode="&#xf1e8;" horiz-adv-x="1792" />
<glyph unicode="&#xf1e9;" horiz-adv-x="1792" />
<glyph unicode="&#xf1ea;" horiz-adv-x="1792" />
<glyph unicode="&#xf1eb;" horiz-adv-x="1792" />
<glyph unicode="&#xf1ec;" horiz-adv-x="1792" />
<glyph unicode="&#xf1ed;" horiz-adv-x="1792" />
<glyph unicode="&#xf1ee;" horiz-adv-x="1792" />
<glyph unicode="&#xf500;" horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
<glyph horiz-adv-x="1792" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" width="512px" height="512px"
viewBox="15 5 200 220"
xml:space="preserve">
<g id="mask">
<g opacity="0.3">
<defs>
<clipPath id="maskClipPath">
<path d="M187.49,165.321
c4.372-4.314,7.429-10.826,7.429-16.562
V83.179
c0-7.318-4.964-15.914-11.3-19.573
l-56.794-32.791
c-3.09-1.783-7.104-2.767-11.3-2.767
c-4.197,0-8.21,0.983-11.301,2.767
L47.431,63.606
c-6.336,3.658-11.3,12.255-11.3,19.572
v65.578c0,7.316,4.964,15.914,11.3,19.572
l56.793,32.791
c3.09,1.783,7.104,2.767,11.301,2.767
c2.812,0,5.534-0.45,7.96-1.278" />
</clipPath>
<radialGradient id="maskFill"
cx="387.1008" cy="-373.7534" r="110.1988"
gradientTransform="matrix(0.9666 -0.2563 -0.2563 -0.9666 -354.4388 -149.2191)"
gradientUnits="userSpaceOnUse">
<stop offset="0.1191" style="stop-color:#FFFFFF" />
<stop offset="0.8285" style="stop-color:#FFFFFF; stop-opacity:0;" />
</radialGradient>
</defs>
<path fill="url(#maskFill)"
d="M27.931,27.123l191.622,111.302c0.188,0.726,0.392,1.467,0.559,2.161
L25.988,27.825C26.64,27.593,27.29,27.357,27.931,27.123z M17.02,110.476l159.595,92.703c0.52-0.304,1.044-0.61,1.576-0.916
L16.35,108.261C16.575,109,16.797,109.736,17.02,110.476z M178.612-11.653c-0.719,0.2-1.432,0.397-2.146,0.589l8.014,4.654
c-0.183-0.765-0.355-1.479-0.519-2.134L178.612-11.653z M169.945-9.363l16.022,9.309c-0.168-0.727-0.331-1.433-0.49-2.115
l-13.342-7.753C171.404-9.733,170.669-9.542,169.945-9.363z M38.439,188.816l56.42,32.771c1.078,0,2.129-0.002,3.147-0.008
l-60.161-34.939C38.041,187.368,38.238,188.124,38.439,188.816z M40.66,195.601l44.562,25.884
c0.036-0.001,0.071,0.002,0.108,0.002c1.079,0.027,2.121,0.041,3.157,0.057l-48.633-28.248
C40.12,194.081,40.388,194.866,40.66,195.601z M-3.37,43.721l222.214,129.076c0.24-0.418,0.472-0.836,0.686-1.268
c0.02-0.041,0.041-0.091,0.063-0.131L-4.004,41.523C-3.809,42.202-3.599,42.934-3.37,43.721z M156.281-6.321l32.54,18.9
c-0.157-0.705-0.313-1.403-0.469-2.097L158.617-6.79C157.831-6.628,157.054-6.474,156.281-6.321z M149.075-5.006l41.153,23.908
c-0.156-0.707-0.312-1.409-0.469-2.11L151.51-5.426C150.694-5.282,149.881-5.139,149.075-5.006z M15.005,103.813l166.369,96.635
c0.53-0.3,1.052-0.597,1.592-0.902L14.33,101.595C14.555,102.334,14.781,103.074,15.005,103.813z M163.217-7.779l24.189,14.051
c-0.161-0.717-0.32-1.416-0.479-2.111L165.485-8.294C164.721-8.117,163.969-7.948,163.217-7.779z M19.014,117.127l152.945,88.841
c0.505-0.313,1.022-0.624,1.538-0.938L18.352,114.915C18.573,115.651,18.795,116.392,19.014,117.127z M-4.962,37.307
l225.787,131.148c0.17-0.486,0.333-1.002,0.486-1.549L-3.15,36.527C-3.849,36.735-4.498,37.031-4.962,37.307z M13.945,31.814
l208.269,120.972c-0.057-0.637-0.111-1.265-0.193-1.938L16.004,31.18C15.325,31.393,14.632,31.601,13.945,31.814z M32.073,163.157
l115.589,67.139c0.271-0.457,0.545-0.916,0.818-1.356L31.5,160.991C31.694,161.717,31.886,162.444,32.073,163.157z
M24.845,136.991l134.726,78.248c0.404-0.373,0.806-0.76,1.216-1.123L24.21,134.79C24.423,135.524,24.635,136.256,24.845,136.991z
M26.723,143.573l129.393,75.157c0.368-0.405,0.741-0.797,1.11-1.187L26.1,141.377C26.309,142.11,26.517,142.845,26.723,143.573z
M30.346,156.659l119.859,69.621c0.3-0.445,0.601-0.883,0.904-1.309l-121.355-70.49C29.951,155.209,30.152,155.938,30.346,156.659
z M2.904,34.971c-0.556,0.147-1.128,0.285-1.692,0.433l220.802,128.25c0.086-0.545,0.158-1.109,0.223-1.703L3.393,34.837
C3.228,34.88,3.07,34.927,2.904,34.971z M36.348,180.606c0.136,0.607,0.278,1.16,0.416,1.746l67.514,39.217
c1.077-0.002,2.141,0.002,3.189,0.018L36.26,180.225C36.288,180.35,36.321,180.481,36.348,180.606z M20.986,123.764
l146.528,85.113c0.48-0.332,0.973-0.658,1.462-0.985L20.331,121.556C20.551,122.292,20.768,123.026,20.986,123.764z
M33.724,169.604l92.28,53.602c1.843,0.375,3.698,0.84,5.57,1.402l-98.396-57.152C33.364,168.177,33.547,168.894,33.724,169.604z
M12.976,97.15l173.183,100.591c0.521-0.295,1.062-0.603,1.597-0.908L12.293,94.92C12.521,95.66,12.748,96.403,12.976,97.15z
M35.283,175.997l78.812,45.779c1.198,0.062,2.389,0.139,3.567,0.241l-82.889-48.146
C34.948,174.588,35.117,175.297,35.283,175.997z M22.931,130.387l140.439,81.572c0.446-0.354,0.892-0.705,1.345-1.051
L22.286,128.183C22.503,128.92,22.717,129.65,22.931,130.387z M20.055,29.87l201.354,116.96c-0.116-0.67-0.238-1.344-0.377-2.047
L22.05,29.197C21.388,29.423,20.727,29.647,20.055,29.87z M2.684,63.712l206.186,119.767c0.458-0.354,0.899-0.705,1.334-1.057
L1.997,61.477C2.223,62.217,2.453,62.964,2.684,63.712z M6.812,77.092L200.198,189.42c0.515-0.32,1.01-0.641,1.505-0.959
L6.124,74.86C6.352,75.6,6.581,76.342,6.812,77.092z M37.359,23.447l179.002,103.977c-0.211-0.725-0.426-1.463-0.639-2.205
L39.182,22.674C38.575,22.932,37.977,23.19,37.359,23.447z M67.339,7.915l138.835,80.647c-0.172-0.709-0.345-1.423-0.516-2.137
L68.822,6.943C68.337,7.265,67.842,7.589,67.339,7.915z M141.591-3.864l50.04,29.068c-0.116-0.527-0.234-1.062-0.351-1.581
c-0.038-0.175-0.077-0.35-0.117-0.523l-47.04-27.324C143.272-4.1,142.427-3.978,141.591-3.864z M79.859-1.286L201.64,69.452
c-0.165-0.705-0.328-1.413-0.49-2.117L81.132-2.379C80.724-2.025,80.3-1.658,79.859-1.286z M4.746,70.402l199.9,116.111
c0.491-0.331,0.977-0.663,1.443-0.993L4.057,68.167C4.287,68.913,4.516,69.656,4.746,70.402z M-1.395,50.362l217.511,126.339
c0.345-0.416,0.675-0.834,0.989-1.26L-2.063,48.14C-1.846,48.857-1.625,49.6-1.395,50.362z M71.715,4.964l132.921,77.211
c-0.167-0.707-0.337-1.415-0.507-2.127L73.126,3.955C72.665,4.29,72.198,4.624,71.715,4.964z M53.119,16.136l157.88,91.707
c-0.187-0.716-0.372-1.436-0.558-2.161L54.785,15.271C54.242,15.558,53.679,15.849,53.119,16.136z M42.78,21.106l171.705,99.732
c-0.2-0.717-0.401-1.442-0.604-2.176L44.551,20.307C43.967,20.572,43.377,20.839,42.78,21.106z M48.04,18.667l164.664,95.65
c-0.192-0.718-0.384-1.438-0.577-2.166L49.755,17.839C49.195,18.114,48.616,18.392,48.04,18.667z M62.779,10.759L207.74,94.965
c-0.175-0.708-0.35-1.423-0.525-2.14l-142.893-83C63.82,10.136,63.298,10.448,62.779,10.759z M0.632,57.026l212.11,123.204
c0.408-0.378,0.807-0.757,1.187-1.14L-0.047,54.807C0.176,55.536,0.402,56.276,0.632,57.026z M58.042,13.497l151.304,87.885
c-0.18-0.712-0.36-1.427-0.54-2.143L59.643,12.599C59.121,12.897,58.582,13.197,58.042,13.497z M75.893,1.895l127.233,73.908
c-0.167-0.707-0.331-1.411-0.498-2.117L77.238,0.849C76.804,1.192,76.357,1.542,75.893,1.895z M84.924-5.029l-1.219,0.323
c-0.035,0.031-0.072,0.065-0.106,0.099L200.174,63.11c-0.161-0.706-0.325-1.41-0.485-2.118L86.741-4.611
C86.108-4.753,85.494-4.892,84.924-5.029z M125.45-2.26l68.997,40.076c-0.158-0.705-0.315-1.402-0.471-2.101L128.268-2.45
C127.317-2.381,126.375-2.316,125.45-2.26z M133.743-2.933l59.293,34.439c-0.157-0.703-0.313-1.402-0.467-2.099L136.406-3.217
C135.507-3.114,134.622-3.021,133.743-2.933z M50.491,212.288l11.257,6.535c1.652,0.51,3.414,0.922,5.312,1.256L47.35,208.631
C48.421,210.09,49.474,211.29,50.491,212.288z M43.878,202.956l31.108,18.068c1.133,0.086,2.313,0.158,3.528,0.219l-35.871-20.838
C43.053,201.305,43.466,202.157,43.878,202.956z M31.752,25.684l186.583,108.378c-0.157-0.532-0.294-1.036-0.464-1.586
c-0.063-0.205-0.127-0.42-0.19-0.628L33.644,24.95C33.021,25.195,32.386,25.44,31.752,25.684z M10.93,90.469l179.988,104.54
c0.521-0.304,1.036-0.601,1.568-0.913L10.249,88.246C10.474,88.983,10.702,89.725,10.93,90.469z M95.703-3.066l103.021,59.842
c-0.162-0.704-0.32-1.409-0.481-2.109L99.628-2.618C98.256-2.753,96.947-2.903,95.703-3.066z M7.673,33.664L222.45,158.418
c0.01-0.594,0.012-1.2-0.004-1.836L9.782,33.052C9.081,33.258,8.384,33.461,7.673,33.664z M8.875,83.784l186.726,108.46
c0.526-0.32,1.032-0.627,1.54-0.938L8.189,81.555C8.417,82.293,8.644,83.036,8.875,83.784z M106.825-2.097l90.46,52.543
c-0.159-0.703-0.318-1.406-0.478-2.107L110.185-1.978C109.036-2.006,107.912-2.044,106.825-2.097z M28.557,150.124l124.453,72.287
c0.331-0.424,0.667-0.836,1-1.244L27.951,147.946C28.155,148.672,28.359,149.401,28.557,150.124z M116.56-1.935l79.302,46.063
c-0.161-0.705-0.316-1.402-0.474-2.104L119.605-1.997C118.571-1.966,117.558-1.946,116.56-1.935z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,175 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" width="512px" height="512px"
viewBox="15 5 200 220"
xml:space="preserve">
<defs>
<style type="text/css" id="palette">
<![CDATA[
.color-background { fill: #04A; }
.color-stitching { fill: #0AE; }
]]>
</style>
<path id="backgroundShape"
d="M115.089,214.155c-4.736,0-9.265-1.109-12.754-3.123l-64.099-37.009
c-7.151-4.13-12.754-13.833-12.754-22.091V77.917c0-8.26,5.603-17.962,12.754-22.092
l64.099-37.009c3.489-2.014,8.018-3.122,12.754-3.122c4.737,0,9.268,1.108,12.753,3.122
l64.102,37.009c7.15,4.13,12.754,13.832,12.754,22.092
v74.016c0,8.258-5.604,17.961-12.754,22.091l-64.102,37.008
C124.357,213.045,119.826,214.155,115.089,214.155z" />
</defs>
<g id="background" class="color-background">
<use xlink:href="#backgroundShape" />
</g>
<g id="mask"></g>
<path id="stitching"
class="color-stitching optional"
title="Stitching"
d="M115.089,198.725c-0.28,0-0.531-0.227-0.531-0.506c0-0.28,0.201-0.508,0.481-0.508h0.05
c1.333,0,2.661-0.154,3.841-0.447c0.271-0.066,0.545,0.098,0.613,0.369c0.067,0.271-0.098,0.546-0.369,0.613
C117.915,198.56,116.503,198.725,115.089,198.725z M111.029,198.237c-0.042,0-0.084-0.005-0.126-0.016
c-1.038-0.268-1.952-0.626-2.719-1.066l-1.09-0.631c-0.242-0.14-0.325-0.449-0.185-0.691c0.14-0.242,0.448-0.326,0.69-0.186
l1.091,0.629c0.686,0.396,1.515,0.721,2.464,0.965c0.27,0.069,0.434,0.346,0.363,0.616
C111.459,198.086,111.253,198.237,111.029,198.237z M122.744,196.642c-0.175,0-0.345-0.091-0.439-0.253
c-0.14-0.242-0.057-0.553,0.186-0.691l3.507-2.025c0.241-0.139,0.551-0.057,0.691,0.188c0.141,0.241,0.058,0.551-0.186,0.69
l-3.507,2.024C122.917,196.622,122.83,196.642,122.744,196.642z M103.838,194.567c-0.086,0-0.173-0.021-0.253-0.068l-3.507-2.023
c-0.242-0.141-0.325-0.449-0.186-0.691c0.141-0.242,0.45-0.326,0.691-0.186l3.507,2.023c0.242,0.142,0.326,0.449,0.187,0.692
C104.183,194.476,104.013,194.567,103.838,194.567z M129.76,192.593c-0.175,0-0.345-0.091-0.438-0.255
c-0.141-0.241-0.058-0.551,0.185-0.69l3.507-2.024c0.242-0.141,0.552-0.058,0.692,0.186c0.14,0.242,0.057,0.553-0.187,0.691
l-3.507,2.025C129.932,192.571,129.846,192.593,129.76,192.593z M96.823,190.517c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.024
c-0.241-0.14-0.324-0.449-0.186-0.69c0.14-0.244,0.45-0.328,0.692-0.188l3.507,2.025c0.242,0.141,0.325,0.449,0.186,0.691
C97.168,190.426,96.998,190.517,96.823,190.517z M136.776,188.542c-0.176,0-0.346-0.09-0.439-0.252
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.025c0.24-0.14,0.551-0.058,0.69,0.187c0.141,0.241,0.058,0.552-0.186,0.69
l-3.507,2.025C136.948,188.52,136.862,188.542,136.776,188.542z M89.808,186.465c-0.086,0-0.173-0.02-0.253-0.066l-3.507-2.025
c-0.242-0.139-0.325-0.448-0.185-0.69c0.14-0.243,0.449-0.325,0.69-0.187l3.507,2.025c0.242,0.141,0.325,0.449,0.187,0.691
C90.154,186.375,89.984,186.465,89.808,186.465z M143.79,184.493c-0.175,0-0.345-0.092-0.439-0.254
c-0.14-0.242-0.057-0.552,0.186-0.691l3.508-2.024c0.241-0.142,0.551-0.06,0.691,0.187c0.14,0.242,0.057,0.552-0.186,0.69
l-3.508,2.024C143.963,184.471,143.876,184.493,143.79,184.493z M82.793,182.417c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.024
c-0.242-0.141-0.325-0.449-0.187-0.691c0.14-0.242,0.45-0.326,0.692-0.186l3.508,2.024c0.242,0.14,0.325,0.448,0.187,0.69
C83.138,182.325,82.968,182.417,82.793,182.417z M150.805,180.442c-0.175,0-0.345-0.091-0.438-0.254
c-0.141-0.242-0.058-0.552,0.186-0.691l3.507-2.024c0.241-0.142,0.552-0.058,0.691,0.187c0.14,0.242,0.057,0.551-0.186,0.69
l-3.508,2.024C150.978,180.42,150.891,180.442,150.805,180.442z M75.779,178.366c-0.086,0-0.174-0.021-0.252-0.068l-3.509-2.023
c-0.241-0.141-0.324-0.449-0.186-0.691c0.14-0.242,0.45-0.326,0.692-0.186l3.508,2.023c0.242,0.142,0.325,0.449,0.186,0.691
C76.123,178.274,75.953,178.366,75.779,178.366z M157.821,176.392c-0.176,0-0.346-0.09-0.439-0.253
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.025c0.24-0.139,0.551-0.057,0.69,0.188c0.141,0.241,0.058,0.551-0.185,0.69
l-3.507,2.024C157.993,176.37,157.906,176.392,157.821,176.392z M68.762,174.315c-0.086,0-0.173-0.021-0.252-0.066l-3.508-2.025
c-0.242-0.141-0.325-0.449-0.186-0.691c0.139-0.242,0.448-0.324,0.691-0.186l3.508,2.025c0.242,0.14,0.325,0.449,0.187,0.69
C69.109,174.225,68.938,174.315,68.762,174.315z M164.835,172.342c-0.175,0-0.345-0.092-0.439-0.254
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.023c0.24-0.142,0.551-0.059,0.691,0.185c0.14,0.243,0.057,0.552-0.186,0.692
l-3.507,2.023C165.009,172.319,164.921,172.342,164.835,172.342z M61.747,170.266c-0.086,0-0.173-0.021-0.252-0.066l-3.508-2.025
c-0.242-0.141-0.326-0.449-0.187-0.691c0.141-0.242,0.45-0.326,0.692-0.186l3.508,2.023c0.242,0.141,0.325,0.45,0.186,0.692
C62.093,170.175,61.923,170.266,61.747,170.266z M171.85,168.292c-0.175,0-0.345-0.09-0.438-0.254
c-0.141-0.242-0.058-0.551,0.186-0.69l3.507-2.024c0.24-0.142,0.552-0.059,0.692,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.508,2.024C172.025,168.269,171.937,168.292,171.85,168.292z M54.733,166.215c-0.087,0-0.174-0.021-0.253-0.067l-3.507-2.024
c-0.241-0.141-0.326-0.449-0.186-0.691c0.14-0.243,0.449-0.324,0.691-0.186l3.508,2.024c0.241,0.14,0.324,0.449,0.185,0.69
C55.077,166.125,54.908,166.215,54.733,166.215z M178.866,164.241c-0.175,0-0.346-0.091-0.439-0.252
c-0.14-0.242-0.057-0.553,0.187-0.693l3.445-1.988l0.314,0.402l0.251,0.439l-3.505,2.023
C179.039,164.22,178.952,164.241,178.866,164.241z M47.718,162.163c-0.089,0-0.18-0.023-0.262-0.074
c-1.062-0.643-2.137-1.623-3.11-2.832c-0.176-0.217-0.142-0.535,0.076-0.711c0.218-0.178,0.537-0.143,0.712,0.076
c0.9,1.119,1.885,2.019,2.848,2.603c0.238,0.146,0.314,0.456,0.17,0.694C48.056,162.077,47.889,162.163,47.718,162.163z
M185.375,159.526c-0.113,0-0.227-0.037-0.32-0.113c-0.217-0.178-0.249-0.496-0.071-0.713c0.805-0.986,1.532-2.131,2.104-3.314
c0.123-0.251,0.424-0.355,0.676-0.235c0.252,0.123,0.357,0.425,0.235,0.677c-0.607,1.254-1.378,2.469-2.231,3.514
C185.667,159.463,185.521,159.526,185.375,159.526z M42.592,156.02c-0.188,0-0.37-0.105-0.458-0.288
c-0.643-1.346-1.09-2.721-1.295-3.978c-0.044-0.275,0.144-0.535,0.419-0.58c0.273-0.047,0.536,0.142,0.581,0.418
c0.189,1.162,0.606,2.441,1.209,3.701c0.121,0.254,0.014,0.556-0.238,0.677C42.74,156.004,42.665,156.02,42.592,156.02z
M188.824,152.282c-0.029,0-0.059-0.004-0.087-0.009c-0.276-0.048-0.461-0.31-0.414-0.585c0.089-0.512,0.134-1.005,0.134-1.466
v-2.49c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v2.49c0,0.519-0.05,1.067-0.146,1.638
C189.281,152.106,189.066,152.282,188.824,152.282z M41.216,148.137c-0.28,0-0.506-0.227-0.506-0.506v-4.051
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051C41.722,147.911,41.495,148.137,41.216,148.137z M188.964,144.188
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05
C189.47,143.961,189.243,144.188,188.964,144.188z M41.216,140.038c-0.28,0-0.506-0.228-0.506-0.508v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,139.81,41.495,140.038,41.216,140.038z M188.964,136.088
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.507,0.506-0.507s0.506,0.228,0.506,0.507v4.051
C189.47,135.862,189.243,136.088,188.964,136.088z M41.216,131.936c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05C41.722,131.709,41.495,131.936,41.216,131.936z M188.964,127.987
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,127.761,189.243,127.987,188.964,127.987z M41.216,123.836c-0.28,0-0.506-0.228-0.506-0.506v-4.051
c0-0.279,0.227-0.507,0.506-0.507s0.506,0.228,0.506,0.507v4.051C41.722,123.609,41.495,123.836,41.216,123.836z M188.964,119.887
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,119.661,189.243,119.887,188.964,119.887z M41.216,115.735c-0.28,0-0.506-0.227-0.506-0.506v-4.051
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051C41.722,115.509,41.495,115.735,41.216,115.735z M188.964,111.787
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05
C189.47,111.56,189.243,111.787,188.964,111.787z M41.216,107.635c-0.28,0-0.506-0.226-0.506-0.506v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,107.409,41.495,107.635,41.216,107.635z M188.964,103.686
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.28,0.227-0.506,0.506-0.506s0.506,0.226,0.506,0.506v4.05
C189.47,103.46,189.243,103.686,188.964,103.686z M41.216,99.535c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,99.308,41.495,99.535,41.216,99.535z M188.964,95.586
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05
C189.47,95.359,189.243,95.586,188.964,95.586z M41.216,91.434c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.28,0.227-0.506,0.506-0.506s0.506,0.226,0.506,0.506v4.05C41.722,91.208,41.495,91.434,41.216,91.434z M188.964,87.485
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,87.259,189.243,87.485,188.964,87.485z M41.216,83.334c-0.28,0-0.506-0.227-0.506-0.506v-2.543
c0-0.502,0.047-1.034,0.139-1.584c0.046-0.276,0.304-0.468,0.583-0.416c0.275,0.046,0.461,0.307,0.416,0.582
c-0.083,0.495-0.125,0.973-0.125,1.418v2.543C41.722,83.107,41.495,83.334,41.216,83.334z M188.847,79.391
c-0.244,0-0.46-0.178-0.5-0.427c-0.182-1.161-0.595-2.442-1.194-3.706c-0.12-0.253-0.013-0.555,0.24-0.675
c0.247-0.119,0.555-0.013,0.675,0.24c0.64,1.351,1.083,2.728,1.279,3.982c0.044,0.276-0.145,0.536-0.421,0.579
C188.901,79.389,188.873,79.391,188.847,79.391z M42.614,75.455c-0.074,0-0.148-0.016-0.22-0.05
c-0.252-0.121-0.357-0.424-0.236-0.676c0.603-1.254,1.372-2.471,2.222-3.52c0.176-0.217,0.495-0.251,0.712-0.074
c0.217,0.176,0.25,0.495,0.074,0.712c-0.801,0.988-1.525,2.137-2.095,3.32C42.983,75.35,42.801,75.455,42.614,75.455z
M185.471,72.115c-0.147,0-0.295-0.065-0.396-0.189c-0.896-1.12-1.876-2.024-2.837-2.616c-0.238-0.146-0.312-0.459-0.166-0.696
c0.146-0.238,0.458-0.312,0.695-0.166c1.06,0.652,2.131,1.637,3.098,2.846c0.174,0.218,0.14,0.536-0.079,0.712
C185.695,72.079,185.582,72.115,185.471,72.115z M47.762,69.331c-0.172,0-0.34-0.088-0.435-0.246
c-0.144-0.24-0.065-0.551,0.175-0.694l3.513-2.03c0.241-0.14,0.553-0.058,0.691,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.5,2.022C47.942,69.308,47.851,69.331,47.762,69.331z M178.999,67.356c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691c0.14-0.242,0.449-0.326,0.691-0.186l3.508,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C179.344,67.266,179.174,67.356,178.999,67.356z M54.778,65.28c-0.176,0-0.346-0.091-0.439-0.254
c-0.14-0.242-0.057-0.551,0.187-0.691l3.507-2.024c0.24-0.141,0.551-0.058,0.69,0.185c0.141,0.242,0.058,0.552-0.185,0.692
l-3.507,2.024C54.95,65.259,54.865,65.28,54.778,65.28z M171.985,63.307c-0.086,0-0.174-0.022-0.253-0.068l-3.509-2.024
c-0.241-0.141-0.324-0.45-0.185-0.692c0.14-0.241,0.449-0.326,0.69-0.185l3.509,2.024c0.241,0.14,0.324,0.45,0.186,0.692
C172.328,63.216,172.158,63.307,171.985,63.307z M61.792,61.229c-0.175,0-0.345-0.09-0.439-0.253
c-0.14-0.242-0.057-0.552,0.187-0.691l3.507-2.025c0.241-0.141,0.551-0.058,0.692,0.186c0.14,0.242,0.057,0.552-0.187,0.691
l-3.507,2.025C61.966,61.208,61.879,61.229,61.792,61.229z M164.969,59.256c-0.086,0-0.173-0.021-0.253-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691c0.14-0.243,0.449-0.325,0.691-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.187,0.691
C165.313,59.166,165.143,59.256,164.969,59.256z M68.807,57.18c-0.175,0-0.345-0.091-0.438-0.253
c-0.141-0.242-0.058-0.552,0.186-0.692l3.508-2.025c0.241-0.141,0.552-0.058,0.692,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.509,2.026C68.98,57.158,68.893,57.18,68.807,57.18z M157.953,55.206c-0.086,0-0.173-0.021-0.253-0.068l-3.507-2.024
c-0.242-0.14-0.325-0.449-0.187-0.691c0.14-0.243,0.45-0.326,0.692-0.186l3.507,2.024c0.242,0.141,0.325,0.45,0.186,0.692
C158.298,55.115,158.128,55.206,157.953,55.206z M75.823,53.129c-0.175,0-0.346-0.091-0.439-0.253
c-0.14-0.242-0.057-0.552,0.186-0.691l3.508-2.025c0.241-0.141,0.551-0.057,0.691,0.186c0.141,0.242,0.058,0.552-0.186,0.691
l-3.508,2.025C75.995,53.107,75.908,53.129,75.823,53.129z M150.938,51.155c-0.086,0-0.173-0.021-0.253-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691s0.45-0.326,0.691-0.186l3.508,2.025c0.241,0.14,0.324,0.449,0.186,0.691
C151.283,51.065,151.114,51.155,150.938,51.155z M82.838,49.079c-0.175,0-0.345-0.091-0.438-0.254
c-0.141-0.242-0.058-0.552,0.186-0.691l3.507-2.025c0.24-0.14,0.551-0.057,0.692,0.186c0.14,0.242,0.057,0.552-0.187,0.692
l-3.507,2.024C83.011,49.057,82.924,49.079,82.838,49.079z M143.923,47.105c-0.086,0-0.173-0.021-0.252-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.187-0.691c0.141-0.243,0.45-0.325,0.692-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C144.268,47.015,144.098,47.105,143.923,47.105z M89.853,45.028c-0.175,0-0.345-0.09-0.438-0.253
c-0.14-0.242-0.057-0.552,0.185-0.691l3.508-2.025c0.239-0.141,0.552-0.058,0.691,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.508,2.025C90.027,45.007,89.939,45.028,89.853,45.028z M136.908,43.056c-0.086,0-0.173-0.022-0.252-0.068l-3.507-2.024
c-0.242-0.141-0.325-0.45-0.187-0.692c0.139-0.242,0.449-0.325,0.692-0.186l3.507,2.025c0.242,0.141,0.325,0.449,0.185,0.691
C137.253,42.965,137.083,43.056,136.908,43.056z M96.868,40.978c-0.175,0-0.345-0.091-0.439-0.253
c-0.14-0.242-0.057-0.552,0.186-0.692l3.507-2.024c0.241-0.141,0.551-0.059,0.691,0.185c0.141,0.243,0.058,0.552-0.186,0.692
L97.12,40.91C97.041,40.956,96.954,40.978,96.868,40.978z M129.892,39.005c-0.086,0-0.173-0.021-0.252-0.067l-3.507-2.025
c-0.242-0.14-0.326-0.449-0.186-0.691c0.14-0.243,0.448-0.325,0.691-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C130.239,38.915,130.069,39.005,129.892,39.005z M103.883,36.928c-0.175,0-0.345-0.091-0.438-0.253
c-0.141-0.242-0.058-0.552,0.186-0.692l3.507-2.024c0.241-0.141,0.552-0.059,0.691,0.186c0.14,0.242,0.057,0.552-0.187,0.691
l-3.507,2.025C104.056,36.906,103.969,36.928,103.883,36.928z M122.877,34.955c-0.086,0-0.173-0.021-0.252-0.068l-1.137-0.656
c-0.673-0.389-1.486-0.708-2.415-0.95c-0.271-0.071-0.434-0.348-0.362-0.618s0.347-0.432,0.618-0.362
c1.016,0.266,1.913,0.62,2.665,1.054l1.137,0.656c0.242,0.141,0.325,0.45,0.186,0.692
C123.222,34.864,123.053,34.955,122.877,34.955z M111.076,33.27c-0.228,0-0.434-0.152-0.491-0.382
c-0.068-0.271,0.096-0.547,0.367-0.615c1.271-0.321,2.703-0.491,4.137-0.491c0.28,0,0.56,0.227,0.56,0.507
c0,0.279-0.175,0.506-0.454,0.506h-0.112c-1.345,0-2.689,0.159-3.881,0.46C111.159,33.266,111.117,33.27,111.076,33.27z" />
<g id="glyph"></g>
<radialGradient id="glossGradient"
cx="115"
cy="-160"
r="400"
gradientUnits="userSpaceOnUse">
<stop offset="0.50" style="stop-color: #FFF; stop-opacity: 0.1;" />
<stop offset="0.75" style="stop-color: #FFF; stop-opacity: 1.0;" />
<stop offset="0.75" style="stop-color: #FFF; stop-opacity: 0.0;" />
</radialGradient>
<g id="gloss" class="optional" title="Glossy Overlay" display="none">
<use xlink:href="#backgroundShape" style="fill: url(#glossGradient); opacity: 0.1;" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,196 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" width="512px" height="512px"
viewBox="15 5 200 220"
xml:space="preserve">
<defs>
<style id="palette">
<![CDATA[
.color-background { fill: #04A; }
.color-stitching { fill: #0AE; }
.color-border { fill: #0AE; }
.color-detail { fill: #FFF; }
]]>
</style>
<path id="backgroundShape"
d="M115.089,214.155c-4.736,0-9.265-1.109-12.754-3.123l-64.099-37.009
c-7.151-4.13-12.754-13.833-12.754-22.091V77.917c0-8.26,5.603-17.962,12.754-22.092
l64.099-37.009c3.489-2.014,8.018-3.122,12.754-3.122c4.737,0,9.268,1.108,12.753,3.122
l64.102,37.009c7.15,4.13,12.754,13.832,12.754,22.092
v74.016c0,8.258-5.604,17.961-12.754,22.091l-64.102,37.008
C124.357,213.045,119.826,214.155,115.089,214.155z" />
</defs>
<g id="background" class="color-background">
<use xlink:href="#backgroundShape" />
</g>
<g id="mask"></g>
<path id="stitching"
class="color-stitching optional"
title="Stitching"
d="M115.089,198.725c-0.28,0-0.531-0.227-0.531-0.506c0-0.28,0.201-0.508,0.481-0.508h0.05
c1.333,0,2.661-0.154,3.841-0.447c0.271-0.066,0.545,0.098,0.613,0.369c0.067,0.271-0.098,0.546-0.369,0.613
C117.915,198.56,116.503,198.725,115.089,198.725z M111.029,198.237c-0.042,0-0.084-0.005-0.126-0.016
c-1.038-0.268-1.952-0.626-2.719-1.066l-1.09-0.631c-0.242-0.14-0.325-0.449-0.185-0.691c0.14-0.242,0.448-0.326,0.69-0.186
l1.091,0.629c0.686,0.396,1.515,0.721,2.464,0.965c0.27,0.069,0.434,0.346,0.363,0.616
C111.459,198.086,111.253,198.237,111.029,198.237z M122.744,196.642c-0.175,0-0.345-0.091-0.439-0.253
c-0.14-0.242-0.057-0.553,0.186-0.691l3.507-2.025c0.241-0.139,0.551-0.057,0.691,0.188c0.141,0.241,0.058,0.551-0.186,0.69
l-3.507,2.024C122.917,196.622,122.83,196.642,122.744,196.642z M103.838,194.567c-0.086,0-0.173-0.021-0.253-0.068l-3.507-2.023
c-0.242-0.141-0.325-0.449-0.186-0.691c0.141-0.242,0.45-0.326,0.691-0.186l3.507,2.023c0.242,0.142,0.326,0.449,0.187,0.692
C104.183,194.476,104.013,194.567,103.838,194.567z M129.76,192.593c-0.175,0-0.345-0.091-0.438-0.255
c-0.141-0.241-0.058-0.551,0.185-0.69l3.507-2.024c0.242-0.141,0.552-0.058,0.692,0.186c0.14,0.242,0.057,0.553-0.187,0.691
l-3.507,2.025C129.932,192.571,129.846,192.593,129.76,192.593z M96.823,190.517c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.024
c-0.241-0.14-0.324-0.449-0.186-0.69c0.14-0.244,0.45-0.328,0.692-0.188l3.507,2.025c0.242,0.141,0.325,0.449,0.186,0.691
C97.168,190.426,96.998,190.517,96.823,190.517z M136.776,188.542c-0.176,0-0.346-0.09-0.439-0.252
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.025c0.24-0.14,0.551-0.058,0.69,0.187c0.141,0.241,0.058,0.552-0.186,0.69
l-3.507,2.025C136.948,188.52,136.862,188.542,136.776,188.542z M89.808,186.465c-0.086,0-0.173-0.02-0.253-0.066l-3.507-2.025
c-0.242-0.139-0.325-0.448-0.185-0.69c0.14-0.243,0.449-0.325,0.69-0.187l3.507,2.025c0.242,0.141,0.325,0.449,0.187,0.691
C90.154,186.375,89.984,186.465,89.808,186.465z M143.79,184.493c-0.175,0-0.345-0.092-0.439-0.254
c-0.14-0.242-0.057-0.552,0.186-0.691l3.508-2.024c0.241-0.142,0.551-0.06,0.691,0.187c0.14,0.242,0.057,0.552-0.186,0.69
l-3.508,2.024C143.963,184.471,143.876,184.493,143.79,184.493z M82.793,182.417c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.024
c-0.242-0.141-0.325-0.449-0.187-0.691c0.14-0.242,0.45-0.326,0.692-0.186l3.508,2.024c0.242,0.14,0.325,0.448,0.187,0.69
C83.138,182.325,82.968,182.417,82.793,182.417z M150.805,180.442c-0.175,0-0.345-0.091-0.438-0.254
c-0.141-0.242-0.058-0.552,0.186-0.691l3.507-2.024c0.241-0.142,0.552-0.058,0.691,0.187c0.14,0.242,0.057,0.551-0.186,0.69
l-3.508,2.024C150.978,180.42,150.891,180.442,150.805,180.442z M75.779,178.366c-0.086,0-0.174-0.021-0.252-0.068l-3.509-2.023
c-0.241-0.141-0.324-0.449-0.186-0.691c0.14-0.242,0.45-0.326,0.692-0.186l3.508,2.023c0.242,0.142,0.325,0.449,0.186,0.691
C76.123,178.274,75.953,178.366,75.779,178.366z M157.821,176.392c-0.176,0-0.346-0.09-0.439-0.253
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.025c0.24-0.139,0.551-0.057,0.69,0.188c0.141,0.241,0.058,0.551-0.185,0.69
l-3.507,2.024C157.993,176.37,157.906,176.392,157.821,176.392z M68.762,174.315c-0.086,0-0.173-0.021-0.252-0.066l-3.508-2.025
c-0.242-0.141-0.325-0.449-0.186-0.691c0.139-0.242,0.448-0.324,0.691-0.186l3.508,2.025c0.242,0.14,0.325,0.449,0.187,0.69
C69.109,174.225,68.938,174.315,68.762,174.315z M164.835,172.342c-0.175,0-0.345-0.092-0.439-0.254
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.023c0.24-0.142,0.551-0.059,0.691,0.185c0.14,0.243,0.057,0.552-0.186,0.692
l-3.507,2.023C165.009,172.319,164.921,172.342,164.835,172.342z M61.747,170.266c-0.086,0-0.173-0.021-0.252-0.066l-3.508-2.025
c-0.242-0.141-0.326-0.449-0.187-0.691c0.141-0.242,0.45-0.326,0.692-0.186l3.508,2.023c0.242,0.141,0.325,0.45,0.186,0.692
C62.093,170.175,61.923,170.266,61.747,170.266z M171.85,168.292c-0.175,0-0.345-0.09-0.438-0.254
c-0.141-0.242-0.058-0.551,0.186-0.69l3.507-2.024c0.24-0.142,0.552-0.059,0.692,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.508,2.024C172.025,168.269,171.937,168.292,171.85,168.292z M54.733,166.215c-0.087,0-0.174-0.021-0.253-0.067l-3.507-2.024
c-0.241-0.141-0.326-0.449-0.186-0.691c0.14-0.243,0.449-0.324,0.691-0.186l3.508,2.024c0.241,0.14,0.324,0.449,0.185,0.69
C55.077,166.125,54.908,166.215,54.733,166.215z M178.866,164.241c-0.175,0-0.346-0.091-0.439-0.252
c-0.14-0.242-0.057-0.553,0.187-0.693l3.445-1.988l0.314,0.402l0.251,0.439l-3.505,2.023
C179.039,164.22,178.952,164.241,178.866,164.241z M47.718,162.163c-0.089,0-0.18-0.023-0.262-0.074
c-1.062-0.643-2.137-1.623-3.11-2.832c-0.176-0.217-0.142-0.535,0.076-0.711c0.218-0.178,0.537-0.143,0.712,0.076
c0.9,1.119,1.885,2.019,2.848,2.603c0.238,0.146,0.314,0.456,0.17,0.694C48.056,162.077,47.889,162.163,47.718,162.163z
M185.375,159.526c-0.113,0-0.227-0.037-0.32-0.113c-0.217-0.178-0.249-0.496-0.071-0.713c0.805-0.986,1.532-2.131,2.104-3.314
c0.123-0.251,0.424-0.355,0.676-0.235c0.252,0.123,0.357,0.425,0.235,0.677c-0.607,1.254-1.378,2.469-2.231,3.514
C185.667,159.463,185.521,159.526,185.375,159.526z M42.592,156.02c-0.188,0-0.37-0.105-0.458-0.288
c-0.643-1.346-1.09-2.721-1.295-3.978c-0.044-0.275,0.144-0.535,0.419-0.58c0.273-0.047,0.536,0.142,0.581,0.418
c0.189,1.162,0.606,2.441,1.209,3.701c0.121,0.254,0.014,0.556-0.238,0.677C42.74,156.004,42.665,156.02,42.592,156.02z
M188.824,152.282c-0.029,0-0.059-0.004-0.087-0.009c-0.276-0.048-0.461-0.31-0.414-0.585c0.089-0.512,0.134-1.005,0.134-1.466
v-2.49c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v2.49c0,0.519-0.05,1.067-0.146,1.638
C189.281,152.106,189.066,152.282,188.824,152.282z M41.216,148.137c-0.28,0-0.506-0.227-0.506-0.506v-4.051
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051C41.722,147.911,41.495,148.137,41.216,148.137z M188.964,144.188
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05
C189.47,143.961,189.243,144.188,188.964,144.188z M41.216,140.038c-0.28,0-0.506-0.228-0.506-0.508v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,139.81,41.495,140.038,41.216,140.038z M188.964,136.088
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.507,0.506-0.507s0.506,0.228,0.506,0.507v4.051
C189.47,135.862,189.243,136.088,188.964,136.088z M41.216,131.936c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05C41.722,131.709,41.495,131.936,41.216,131.936z M188.964,127.987
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,127.761,189.243,127.987,188.964,127.987z M41.216,123.836c-0.28,0-0.506-0.228-0.506-0.506v-4.051
c0-0.279,0.227-0.507,0.506-0.507s0.506,0.228,0.506,0.507v4.051C41.722,123.609,41.495,123.836,41.216,123.836z M188.964,119.887
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,119.661,189.243,119.887,188.964,119.887z M41.216,115.735c-0.28,0-0.506-0.227-0.506-0.506v-4.051
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051C41.722,115.509,41.495,115.735,41.216,115.735z M188.964,111.787
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05
C189.47,111.56,189.243,111.787,188.964,111.787z M41.216,107.635c-0.28,0-0.506-0.226-0.506-0.506v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,107.409,41.495,107.635,41.216,107.635z M188.964,103.686
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.28,0.227-0.506,0.506-0.506s0.506,0.226,0.506,0.506v4.05
C189.47,103.46,189.243,103.686,188.964,103.686z M41.216,99.535c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,99.308,41.495,99.535,41.216,99.535z M188.964,95.586
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05
C189.47,95.359,189.243,95.586,188.964,95.586z M41.216,91.434c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.28,0.227-0.506,0.506-0.506s0.506,0.226,0.506,0.506v4.05C41.722,91.208,41.495,91.434,41.216,91.434z M188.964,87.485
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,87.259,189.243,87.485,188.964,87.485z M41.216,83.334c-0.28,0-0.506-0.227-0.506-0.506v-2.543
c0-0.502,0.047-1.034,0.139-1.584c0.046-0.276,0.304-0.468,0.583-0.416c0.275,0.046,0.461,0.307,0.416,0.582
c-0.083,0.495-0.125,0.973-0.125,1.418v2.543C41.722,83.107,41.495,83.334,41.216,83.334z M188.847,79.391
c-0.244,0-0.46-0.178-0.5-0.427c-0.182-1.161-0.595-2.442-1.194-3.706c-0.12-0.253-0.013-0.555,0.24-0.675
c0.247-0.119,0.555-0.013,0.675,0.24c0.64,1.351,1.083,2.728,1.279,3.982c0.044,0.276-0.145,0.536-0.421,0.579
C188.901,79.389,188.873,79.391,188.847,79.391z M42.614,75.455c-0.074,0-0.148-0.016-0.22-0.05
c-0.252-0.121-0.357-0.424-0.236-0.676c0.603-1.254,1.372-2.471,2.222-3.52c0.176-0.217,0.495-0.251,0.712-0.074
c0.217,0.176,0.25,0.495,0.074,0.712c-0.801,0.988-1.525,2.137-2.095,3.32C42.983,75.35,42.801,75.455,42.614,75.455z
M185.471,72.115c-0.147,0-0.295-0.065-0.396-0.189c-0.896-1.12-1.876-2.024-2.837-2.616c-0.238-0.146-0.312-0.459-0.166-0.696
c0.146-0.238,0.458-0.312,0.695-0.166c1.06,0.652,2.131,1.637,3.098,2.846c0.174,0.218,0.14,0.536-0.079,0.712
C185.695,72.079,185.582,72.115,185.471,72.115z M47.762,69.331c-0.172,0-0.34-0.088-0.435-0.246
c-0.144-0.24-0.065-0.551,0.175-0.694l3.513-2.03c0.241-0.14,0.553-0.058,0.691,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.5,2.022C47.942,69.308,47.851,69.331,47.762,69.331z M178.999,67.356c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691c0.14-0.242,0.449-0.326,0.691-0.186l3.508,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C179.344,67.266,179.174,67.356,178.999,67.356z M54.778,65.28c-0.176,0-0.346-0.091-0.439-0.254
c-0.14-0.242-0.057-0.551,0.187-0.691l3.507-2.024c0.24-0.141,0.551-0.058,0.69,0.185c0.141,0.242,0.058,0.552-0.185,0.692
l-3.507,2.024C54.95,65.259,54.865,65.28,54.778,65.28z M171.985,63.307c-0.086,0-0.174-0.022-0.253-0.068l-3.509-2.024
c-0.241-0.141-0.324-0.45-0.185-0.692c0.14-0.241,0.449-0.326,0.69-0.185l3.509,2.024c0.241,0.14,0.324,0.45,0.186,0.692
C172.328,63.216,172.158,63.307,171.985,63.307z M61.792,61.229c-0.175,0-0.345-0.09-0.439-0.253
c-0.14-0.242-0.057-0.552,0.187-0.691l3.507-2.025c0.241-0.141,0.551-0.058,0.692,0.186c0.14,0.242,0.057,0.552-0.187,0.691
l-3.507,2.025C61.966,61.208,61.879,61.229,61.792,61.229z M164.969,59.256c-0.086,0-0.173-0.021-0.253-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691c0.14-0.243,0.449-0.325,0.691-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.187,0.691
C165.313,59.166,165.143,59.256,164.969,59.256z M68.807,57.18c-0.175,0-0.345-0.091-0.438-0.253
c-0.141-0.242-0.058-0.552,0.186-0.692l3.508-2.025c0.241-0.141,0.552-0.058,0.692,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.509,2.026C68.98,57.158,68.893,57.18,68.807,57.18z M157.953,55.206c-0.086,0-0.173-0.021-0.253-0.068l-3.507-2.024
c-0.242-0.14-0.325-0.449-0.187-0.691c0.14-0.243,0.45-0.326,0.692-0.186l3.507,2.024c0.242,0.141,0.325,0.45,0.186,0.692
C158.298,55.115,158.128,55.206,157.953,55.206z M75.823,53.129c-0.175,0-0.346-0.091-0.439-0.253
c-0.14-0.242-0.057-0.552,0.186-0.691l3.508-2.025c0.241-0.141,0.551-0.057,0.691,0.186c0.141,0.242,0.058,0.552-0.186,0.691
l-3.508,2.025C75.995,53.107,75.908,53.129,75.823,53.129z M150.938,51.155c-0.086,0-0.173-0.021-0.253-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691s0.45-0.326,0.691-0.186l3.508,2.025c0.241,0.14,0.324,0.449,0.186,0.691
C151.283,51.065,151.114,51.155,150.938,51.155z M82.838,49.079c-0.175,0-0.345-0.091-0.438-0.254
c-0.141-0.242-0.058-0.552,0.186-0.691l3.507-2.025c0.24-0.14,0.551-0.057,0.692,0.186c0.14,0.242,0.057,0.552-0.187,0.692
l-3.507,2.024C83.011,49.057,82.924,49.079,82.838,49.079z M143.923,47.105c-0.086,0-0.173-0.021-0.252-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.187-0.691c0.141-0.243,0.45-0.325,0.692-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C144.268,47.015,144.098,47.105,143.923,47.105z M89.853,45.028c-0.175,0-0.345-0.09-0.438-0.253
c-0.14-0.242-0.057-0.552,0.185-0.691l3.508-2.025c0.239-0.141,0.552-0.058,0.691,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.508,2.025C90.027,45.007,89.939,45.028,89.853,45.028z M136.908,43.056c-0.086,0-0.173-0.022-0.252-0.068l-3.507-2.024
c-0.242-0.141-0.325-0.45-0.187-0.692c0.139-0.242,0.449-0.325,0.692-0.186l3.507,2.025c0.242,0.141,0.325,0.449,0.185,0.691
C137.253,42.965,137.083,43.056,136.908,43.056z M96.868,40.978c-0.175,0-0.345-0.091-0.439-0.253
c-0.14-0.242-0.057-0.552,0.186-0.692l3.507-2.024c0.241-0.141,0.551-0.059,0.691,0.185c0.141,0.243,0.058,0.552-0.186,0.692
L97.12,40.91C97.041,40.956,96.954,40.978,96.868,40.978z M129.892,39.005c-0.086,0-0.173-0.021-0.252-0.067l-3.507-2.025
c-0.242-0.14-0.326-0.449-0.186-0.691c0.14-0.243,0.448-0.325,0.691-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C130.239,38.915,130.069,39.005,129.892,39.005z M103.883,36.928c-0.175,0-0.345-0.091-0.438-0.253
c-0.141-0.242-0.058-0.552,0.186-0.692l3.507-2.024c0.241-0.141,0.552-0.059,0.691,0.186c0.14,0.242,0.057,0.552-0.187,0.691
l-3.507,2.025C104.056,36.906,103.969,36.928,103.883,36.928z M122.877,34.955c-0.086,0-0.173-0.021-0.252-0.068l-1.137-0.656
c-0.673-0.389-1.486-0.708-2.415-0.95c-0.271-0.071-0.434-0.348-0.362-0.618s0.347-0.432,0.618-0.362
c1.016,0.266,1.913,0.62,2.665,1.054l1.137,0.656c0.242,0.141,0.325,0.45,0.186,0.692
C123.222,34.864,123.053,34.955,122.877,34.955z M111.076,33.27c-0.228,0-0.434-0.152-0.491-0.382
c-0.068-0.271,0.096-0.547,0.367-0.615c1.271-0.321,2.703-0.491,4.137-0.491c0.28,0,0.56,0.227,0.56,0.507
c0,0.279-0.175,0.506-0.454,0.506h-0.112c-1.345,0-2.689,0.159-3.881,0.46C111.159,33.266,111.117,33.27,111.076,33.27z" />
<g id="glyph"></g>
<g id="tab" class="optional" title="Chamilo Tab">
<path class="color-border"
d="M123.457,203.577l65.297-37.799l-0.824-1.423l-0.294,0.17
c-4.923,0.761-10.909,0.496-15.256-3.56c-8.746-8.156-15.314-13.549-30.813-4.577c-0.522,0.302-2.136,1.235-2.657,1.538
c-15.499,8.972-14.094,17.354-11.375,29c1.351,5.789-1.401,11.111-4.511,15.003l-0.39,0.226L123.457,203.577z" />
<path class="color-detail"
d="m 151.31362,159.12558 -1.34031,0.30475 c -1.02125,0.23287 -1.46545,0.94933 -1.27487,1.67888 l 1.50227,5.74723 c 0.19061,0.72968 0.58283,1.14115 1.30811,1.00473 l 1.78072,-0.33484 c 0.57367,-0.10775 0.81173,-0.55784 0.71675,-1.3059 l -0.75791,-5.96679 c -0.12184,-0.95954 -1.21522,-1.29198 -1.93477,-1.12784 z m -9.3409,4.58849 c -0.42456,0.10759 -0.81711,0.38017 -1.05402,0.69149 l -0.88209,1.16077 c -0.67235,0.88377 -0.56456,1.77073 0.0651,2.23803 l 4.95827,3.68048 c 0.62957,0.4673 1.2168,0.53742 1.71318,-0.0665 l 1.21806,-1.48258 c 0.39261,-0.47767 0.29088,-1.00774 -0.27344,-1.55511 l -4.50155,-4.3648 c -0.36202,-0.35105 -0.81896,-0.40932 -1.24349,-0.30166 z m 15.03796,4.37856 c -0.11004,0.0195 -0.20898,0.0605 -0.29269,0.12668 -0.66968,0.53051 0.19395,1.49103 0.29786,1.80856 0.12915,0.33523 0.55262,0.83972 0.44645,0.85969 -0.13146,0.002 -2.33,-2.79709 -6.20128,-1.16974 -0.99551,0.43444 -1.80121,1.05796 -2.41285,1.77975 -0.2736,0.2986 -0.4963,0.63307 -0.69797,0.96309 -1.18398,1.88552 -1.47868,3.94023 -1.54556,4.40219 -0.10597,0.71679 -1.15619,3.43081 -1.01326,4.88719 0.16777,1.4739 0.81229,5.01559 4.12999,4.88575 0.39445,-0.007 0.75631,-0.0751 1.06246,-0.20078 0.30625,-0.12498 0.57845,-0.3109 0.77934,-0.52842 1.28127,-1.25224 0.87944,-3.73841 -0.0175,-4.06402 -0.26221,-0.10822 -0.51651,-0.17194 -0.78357,-0.18906 -0.29234,-0.0354 -0.59816,-0.0234 -0.86203,0.094 -0.57416,0.22041 -0.99378,0.79398 -1.06538,1.93097 -0.0536,0.99876 0.99493,1.43117 1.66223,1.23822 0.0424,-0.008 0.10694,-0.0203 0.14539,-0.0501 0,0 -0.035,0.0516 -0.13307,0.11484 -0.28095,0.14271 -0.92225,0.35293 -1.82845,-0.37761 -1.21883,-0.98405 -1.09064,-2.98532 -0.42749,-3.78414 0.42785,-0.52993 0.87076,-0.86136 1.25053,-1.17994 0.18789,-0.17019 0.35534,-0.33606 0.4925,-0.54162 0.0862,-0.12835 0.14943,-0.25255 0.21808,-0.35535 0.20581,-0.30834 0.28759,-0.458 0.28759,-0.458 0,0 0.52141,1.25 1.14142,1.73999 0.62008,0.49005 1.3013,0.72016 1.41057,0.2507 0.11344,-0.44832 -0.81705,-2.1145 -0.81705,-2.1145 0,0 1.30887,0.87707 1.67645,1.07758 0.36753,0.20068 1.04545,0.4095 1.1048,-0.20892 0.0378,-0.61398 -0.57559,-1.41961 -0.96522,-1.50358 -0.36886,-0.0855 -0.58055,-0.0485 -0.58055,-0.0485 0,0 -0.26556,-0.24255 -0.38811,-0.30941 -0.14374,-0.0624 -0.16516,-0.0586 -0.16516,-0.0586 0,0 0.17028,-0.1438 0.76904,-0.23391 0.61992,-0.0942 1.11204,-0.1645 1.11204,-0.1645 0,0 0.7088,0.72119 1.09768,0.9177 0.37167,0.22217 1.3262,0.73875 1.67662,0.96492 0.32924,0.2301 0.52351,0.32818 0.58424,0.0728 0.0415,-0.2542 -0.22787,-0.85609 -0.69585,-1.23988 -0.48525,-0.3581 -0.95491,-0.51642 -1.14448,-0.70546 -0.17646,-0.23637 -0.29745,-0.41614 -0.29745,-0.41614 0,0 0.89548,0.43752 1.12341,0.59687 0.24506,0.1336 1.81454,0.76032 2.07675,0.86834 0.26628,0.12999 0.35172,4.7e-4 0.35172,4.7e-4 0,0 0.19436,0.0987 0.24164,-1e-4 0.0473,-0.0994 0.10603,-0.71744 -0.40396,-0.98063 -0.53671,-0.28099 -0.84584,-0.40256 -0.81157,-0.45396 0.0121,-0.0473 0.50922,0.0167 0.54838,-0.1254 0.0216,-0.11654 -0.0745,-0.27813 -0.14645,-0.30951 -0.0547,-0.057 0.0915,-0.2193 0.0915,-0.2193 0,0 0.17015,-0.0314 0.88319,-0.0981 0.71301,-0.0668 2.36084,-1.00634 2.6973,-1.20445 0.33646,-0.19817 0.51042,-0.32123 0.51042,-0.32123 0,0 0.19317,-0.14833 0.18721,-0.52928 -7.5e-4,-0.0211 -0.008,-0.0432 -0.0122,-0.0644 l -0.0121,-0.0649 c -0.0867,-0.34322 -0.50329,-0.69123 -0.96317,-1.03163 -0.53181,-0.37181 -0.95551,-0.51676 -0.95551,-0.51676 0,0 -0.36268,-0.87571 -1.40673,-1.98253 -0.89495,-0.97201 -2.23849,-1.91124 -3.00896,-1.77544 z m -18.97389,5.85828 c -0.72882,0.14751 -1.13503,1.00397 -1.12245,1.65766 l 0.0276,1.39119 c 0.0204,1.06031 0.61325,1.65193 1.34443,1.61835 l 5.75877,-0.26457 c 0.73121,-0.0337 1.20025,-0.33515 1.21323,-1.08195 l 0.0326,-1.83271 c 0.0103,-0.59069 -0.37154,-0.92201 -1.10148,-0.98704 l -5.82101,-0.51849 c -0.11672,-0.0132 -0.22766,-0.003 -0.3318,0.0182 z m 5.06311,7.21666 c -0.10811,0.0406 -0.2205,0.10275 -0.33884,0.18634 l -3.77546,2.67236 c -0.60701,0.42953 -0.42942,1.32165 -0.0525,1.77195 l 0.702,0.83918 c 0.5352,0.63912 1.18584,0.69647 1.61135,0.30058 l 3.35131,-3.11765 c 0.42554,-0.396 0.56044,-0.82263 0.2,-1.28695 l -0.88507,-1.13873 c -0.21377,-0.27543 -0.48906,-0.34909 -0.81286,-0.22727 z m 7.60789,1.48563 c 0,0 0.11481,0.0214 0.26664,0.12781 0.0716,0.0316 0.14741,0.0853 0.21033,0.1859 0.17652,0.23643 0.1741,0.57329 0.1741,0.57329 0,0 -0.0989,-0.40744 -0.28841,-0.59648 -0.0255,-0.0165 -0.0512,-0.0357 -0.0762,-0.0546 -0.16017,-0.14989 -0.28622,-0.2371 -0.28622,-0.2371 z m -0.35489,0.93377 c 0.0307,0.003 0.0536,0.032 0.0466,0.11223 -0.009,0.0898 -0.0683,0.10278 -0.11116,0.11071 -0.10646,0.0199 -0.20375,-0.0299 -0.18618,-0.1671 0.0547,0.057 0.0969,0.0488 0.15275,-0.006 0.0278,-0.0275 0.067,-0.0521 0.0977,-0.0491 z" />
</g>
<path id="outerRing"
class="color-border"
d="M191.944,55.825l-64.102-37.009c-3.485-2.014-8.016-3.122-12.753-3.122
c-4.736,0-9.265,1.108-12.754,3.122L38.237,55.825c-7.151,4.13-12.754,13.832-12.754,22.092v74.015
c0,8.258,5.603,17.961,12.754,22.091l64.099,37.009c3.489,2.014,8.018,3.123,12.754,3.123c4.737,0,9.268-1.109,12.753-3.123
l64.102-37.008c7.15-4.13,12.754-13.833,12.754-22.091V77.917C204.698,69.657,199.094,59.955,191.944,55.825z M194.484,148.043
c0,7.316-4.965,15.914-11.301,19.572l-56.794,32.791c-3.09,1.783-7.103,2.766-11.3,2.766s-8.21-0.981-11.3-2.766l-56.793-32.791
c-6.336-3.658-11.3-12.256-11.3-19.572V82.465c0-7.317,4.964-15.914,11.3-19.573l56.793-32.79c3.09-1.783,7.103-2.767,11.3-2.767
s8.21,0.983,11.3,2.767l56.794,32.79c6.336,3.659,11.301,12.256,11.301,19.573V148.043z" />
<radialGradient id="glossGradient"
cx="115"
cy="-160"
r="400"
gradientUnits="userSpaceOnUse">
<stop offset="0.50" style="stop-color: #FFF; stop-opacity: 0.1;" />
<stop offset="0.75" style="stop-color: #FFF; stop-opacity: 1.0;" />
<stop offset="0.75" style="stop-color: #FFF; stop-opacity: 0.0;" />
</radialGradient>
<g id="gloss" class="optional" title="Glossy Overlay" display="none">
<use xlink:href="#backgroundShape" style="fill: url(#glossGradient); opacity: 0.1;" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
x="0px" y="0px" width="512px" height="512px"
viewBox="15 5 200 220"
xml:space="preserve">
<defs>
<style id="palette">
<![CDATA[
.color-background { fill: #04A; }
.color-stitching { fill: #0AE; }
.color-border { fill: #0AE; }
.color-detail { fill: #FFF; }
]]>
</style>
<path id="backgroundShape"
d="M115.089,214.155c-4.736,0-9.265-1.109-12.754-3.123l-64.099-37.009
c-7.151-4.13-12.754-13.833-12.754-22.091V77.917c0-8.26,5.603-17.962,12.754-22.092
l64.099-37.009c3.489-2.014,8.018-3.122,12.754-3.122c4.737,0,9.268,1.108,12.753,3.122
l64.102,37.009c7.15,4.13,12.754,13.832,12.754,22.092
v74.016c0,8.258-5.604,17.961-12.754,22.091l-64.102,37.008
C124.357,213.045,119.826,214.155,115.089,214.155z" />
</defs>
<g id="background" class="color-background">
<use xlink:href="#backgroundShape" />
</g>
<g id="mask"></g>
<path id="innerRing"
class="color-detail"
d="M115.089,203.172c-4.197,0-8.21-0.981-11.3-2.766l-56.793-32.791
c-6.336-3.658-11.3-12.256-11.3-19.572V82.465c0-7.317,4.964-15.914,11.3-19.573l56.793-32.79c3.09-1.783,7.103-2.767,11.3-2.767
s8.21,0.983,11.3,2.767l56.794,32.79c6.336,3.659,11.301,12.256,11.301,19.573v65.579c0,7.316-4.965,15.914-11.301,19.572
l-56.794,32.791C123.299,202.19,119.286,203.172,115.089,203.172z M115.089,37.461c-2.412,0-4.685,0.514-6.237,1.41l-56.794,32.79
c-3.265,1.885-6.236,7.034-6.236,10.804v65.579c0,3.77,2.973,8.918,6.236,10.804l56.793,32.791c1.553,0.896,3.826,1.409,6.237,1.409
c2.412,0,4.687-0.514,6.238-1.409l56.794-32.791c3.264-1.886,6.238-7.034,6.238-10.804V82.465c0-3.77-2.975-8.919-6.238-10.804
l-56.794-32.79C119.776,37.975,117.501,37.461,115.089,37.461z" />
<path id="stitching"
class="color-stitching optional"
title="Stitching"
d="M115.089,198.725c-0.28,0-0.531-0.227-0.531-0.506c0-0.28,0.201-0.508,0.481-0.508h0.05
c1.333,0,2.661-0.154,3.841-0.447c0.271-0.066,0.545,0.098,0.613,0.369c0.067,0.271-0.098,0.546-0.369,0.613
C117.915,198.56,116.503,198.725,115.089,198.725z M111.029,198.237c-0.042,0-0.084-0.005-0.126-0.016
c-1.038-0.268-1.952-0.626-2.719-1.066l-1.09-0.631c-0.242-0.14-0.325-0.449-0.185-0.691c0.14-0.242,0.448-0.326,0.69-0.186
l1.091,0.629c0.686,0.396,1.515,0.721,2.464,0.965c0.27,0.069,0.434,0.346,0.363,0.616
C111.459,198.086,111.253,198.237,111.029,198.237z M122.744,196.642c-0.175,0-0.345-0.091-0.439-0.253
c-0.14-0.242-0.057-0.553,0.186-0.691l3.507-2.025c0.241-0.139,0.551-0.057,0.691,0.188c0.141,0.241,0.058,0.551-0.186,0.69
l-3.507,2.024C122.917,196.622,122.83,196.642,122.744,196.642z M103.838,194.567c-0.086,0-0.173-0.021-0.253-0.068l-3.507-2.023
c-0.242-0.141-0.325-0.449-0.186-0.691c0.141-0.242,0.45-0.326,0.691-0.186l3.507,2.023c0.242,0.142,0.326,0.449,0.187,0.692
C104.183,194.476,104.013,194.567,103.838,194.567z M129.76,192.593c-0.175,0-0.345-0.091-0.438-0.255
c-0.141-0.241-0.058-0.551,0.185-0.69l3.507-2.024c0.242-0.141,0.552-0.058,0.692,0.186c0.14,0.242,0.057,0.553-0.187,0.691
l-3.507,2.025C129.932,192.571,129.846,192.593,129.76,192.593z M96.823,190.517c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.024
c-0.241-0.14-0.324-0.449-0.186-0.69c0.14-0.244,0.45-0.328,0.692-0.188l3.507,2.025c0.242,0.141,0.325,0.449,0.186,0.691
C97.168,190.426,96.998,190.517,96.823,190.517z M136.776,188.542c-0.176,0-0.346-0.09-0.439-0.252
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.025c0.24-0.14,0.551-0.058,0.69,0.187c0.141,0.241,0.058,0.552-0.186,0.69
l-3.507,2.025C136.948,188.52,136.862,188.542,136.776,188.542z M89.808,186.465c-0.086,0-0.173-0.02-0.253-0.066l-3.507-2.025
c-0.242-0.139-0.325-0.448-0.185-0.69c0.14-0.243,0.449-0.325,0.69-0.187l3.507,2.025c0.242,0.141,0.325,0.449,0.187,0.691
C90.154,186.375,89.984,186.465,89.808,186.465z M143.79,184.493c-0.175,0-0.345-0.092-0.439-0.254
c-0.14-0.242-0.057-0.552,0.186-0.691l3.508-2.024c0.241-0.142,0.551-0.06,0.691,0.187c0.14,0.242,0.057,0.552-0.186,0.69
l-3.508,2.024C143.963,184.471,143.876,184.493,143.79,184.493z M82.793,182.417c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.024
c-0.242-0.141-0.325-0.449-0.187-0.691c0.14-0.242,0.45-0.326,0.692-0.186l3.508,2.024c0.242,0.14,0.325,0.448,0.187,0.69
C83.138,182.325,82.968,182.417,82.793,182.417z M150.805,180.442c-0.175,0-0.345-0.091-0.438-0.254
c-0.141-0.242-0.058-0.552,0.186-0.691l3.507-2.024c0.241-0.142,0.552-0.058,0.691,0.187c0.14,0.242,0.057,0.551-0.186,0.69
l-3.508,2.024C150.978,180.42,150.891,180.442,150.805,180.442z M75.779,178.366c-0.086,0-0.174-0.021-0.252-0.068l-3.509-2.023
c-0.241-0.141-0.324-0.449-0.186-0.691c0.14-0.242,0.45-0.326,0.692-0.186l3.508,2.023c0.242,0.142,0.325,0.449,0.186,0.691
C76.123,178.274,75.953,178.366,75.779,178.366z M157.821,176.392c-0.176,0-0.346-0.09-0.439-0.253
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.025c0.24-0.139,0.551-0.057,0.69,0.188c0.141,0.241,0.058,0.551-0.185,0.69
l-3.507,2.024C157.993,176.37,157.906,176.392,157.821,176.392z M68.762,174.315c-0.086,0-0.173-0.021-0.252-0.066l-3.508-2.025
c-0.242-0.141-0.325-0.449-0.186-0.691c0.139-0.242,0.448-0.324,0.691-0.186l3.508,2.025c0.242,0.14,0.325,0.449,0.187,0.69
C69.109,174.225,68.938,174.315,68.762,174.315z M164.835,172.342c-0.175,0-0.345-0.092-0.439-0.254
c-0.14-0.242-0.057-0.553,0.187-0.691l3.507-2.023c0.24-0.142,0.551-0.059,0.691,0.185c0.14,0.243,0.057,0.552-0.186,0.692
l-3.507,2.023C165.009,172.319,164.921,172.342,164.835,172.342z M61.747,170.266c-0.086,0-0.173-0.021-0.252-0.066l-3.508-2.025
c-0.242-0.141-0.326-0.449-0.187-0.691c0.141-0.242,0.45-0.326,0.692-0.186l3.508,2.023c0.242,0.141,0.325,0.45,0.186,0.692
C62.093,170.175,61.923,170.266,61.747,170.266z M171.85,168.292c-0.175,0-0.345-0.09-0.438-0.254
c-0.141-0.242-0.058-0.551,0.186-0.69l3.507-2.024c0.24-0.142,0.552-0.059,0.692,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.508,2.024C172.025,168.269,171.937,168.292,171.85,168.292z M54.733,166.215c-0.087,0-0.174-0.021-0.253-0.067l-3.507-2.024
c-0.241-0.141-0.326-0.449-0.186-0.691c0.14-0.243,0.449-0.324,0.691-0.186l3.508,2.024c0.241,0.14,0.324,0.449,0.185,0.69
C55.077,166.125,54.908,166.215,54.733,166.215z M178.866,164.241c-0.175,0-0.346-0.091-0.439-0.252
c-0.14-0.242-0.057-0.553,0.187-0.693l3.445-1.988l0.314,0.402l0.251,0.439l-3.505,2.023
C179.039,164.22,178.952,164.241,178.866,164.241z M47.718,162.163c-0.089,0-0.18-0.023-0.262-0.074
c-1.062-0.643-2.137-1.623-3.11-2.832c-0.176-0.217-0.142-0.535,0.076-0.711c0.218-0.178,0.537-0.143,0.712,0.076
c0.9,1.119,1.885,2.019,2.848,2.603c0.238,0.146,0.314,0.456,0.17,0.694C48.056,162.077,47.889,162.163,47.718,162.163z
M185.375,159.526c-0.113,0-0.227-0.037-0.32-0.113c-0.217-0.178-0.249-0.496-0.071-0.713c0.805-0.986,1.532-2.131,2.104-3.314
c0.123-0.251,0.424-0.355,0.676-0.235c0.252,0.123,0.357,0.425,0.235,0.677c-0.607,1.254-1.378,2.469-2.231,3.514
C185.667,159.463,185.521,159.526,185.375,159.526z M42.592,156.02c-0.188,0-0.37-0.105-0.458-0.288
c-0.643-1.346-1.09-2.721-1.295-3.978c-0.044-0.275,0.144-0.535,0.419-0.58c0.273-0.047,0.536,0.142,0.581,0.418
c0.189,1.162,0.606,2.441,1.209,3.701c0.121,0.254,0.014,0.556-0.238,0.677C42.74,156.004,42.665,156.02,42.592,156.02z
M188.824,152.282c-0.029,0-0.059-0.004-0.087-0.009c-0.276-0.048-0.461-0.31-0.414-0.585c0.089-0.512,0.134-1.005,0.134-1.466
v-2.49c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v2.49c0,0.519-0.05,1.067-0.146,1.638
C189.281,152.106,189.066,152.282,188.824,152.282z M41.216,148.137c-0.28,0-0.506-0.227-0.506-0.506v-4.051
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051C41.722,147.911,41.495,148.137,41.216,148.137z M188.964,144.188
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05
C189.47,143.961,189.243,144.188,188.964,144.188z M41.216,140.038c-0.28,0-0.506-0.228-0.506-0.508v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,139.81,41.495,140.038,41.216,140.038z M188.964,136.088
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.507,0.506-0.507s0.506,0.228,0.506,0.507v4.051
C189.47,135.862,189.243,136.088,188.964,136.088z M41.216,131.936c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05C41.722,131.709,41.495,131.936,41.216,131.936z M188.964,127.987
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,127.761,189.243,127.987,188.964,127.987z M41.216,123.836c-0.28,0-0.506-0.228-0.506-0.506v-4.051
c0-0.279,0.227-0.507,0.506-0.507s0.506,0.228,0.506,0.507v4.051C41.722,123.609,41.495,123.836,41.216,123.836z M188.964,119.887
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,119.661,189.243,119.887,188.964,119.887z M41.216,115.735c-0.28,0-0.506-0.227-0.506-0.506v-4.051
c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051C41.722,115.509,41.495,115.735,41.216,115.735z M188.964,111.787
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05
C189.47,111.56,189.243,111.787,188.964,111.787z M41.216,107.635c-0.28,0-0.506-0.226-0.506-0.506v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,107.409,41.495,107.635,41.216,107.635z M188.964,103.686
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.28,0.227-0.506,0.506-0.506s0.506,0.226,0.506,0.506v4.05
C189.47,103.46,189.243,103.686,188.964,103.686z M41.216,99.535c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.28,0.227-0.507,0.506-0.507s0.506,0.227,0.506,0.507v4.05C41.722,99.308,41.495,99.535,41.216,99.535z M188.964,95.586
c-0.28,0-0.506-0.227-0.506-0.507v-4.05c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.05
C189.47,95.359,189.243,95.586,188.964,95.586z M41.216,91.434c-0.28,0-0.506-0.227-0.506-0.507v-4.05
c0-0.28,0.227-0.506,0.506-0.506s0.506,0.226,0.506,0.506v4.05C41.722,91.208,41.495,91.434,41.216,91.434z M188.964,87.485
c-0.28,0-0.506-0.227-0.506-0.506v-4.051c0-0.279,0.227-0.506,0.506-0.506s0.506,0.227,0.506,0.506v4.051
C189.47,87.259,189.243,87.485,188.964,87.485z M41.216,83.334c-0.28,0-0.506-0.227-0.506-0.506v-2.543
c0-0.502,0.047-1.034,0.139-1.584c0.046-0.276,0.304-0.468,0.583-0.416c0.275,0.046,0.461,0.307,0.416,0.582
c-0.083,0.495-0.125,0.973-0.125,1.418v2.543C41.722,83.107,41.495,83.334,41.216,83.334z M188.847,79.391
c-0.244,0-0.46-0.178-0.5-0.427c-0.182-1.161-0.595-2.442-1.194-3.706c-0.12-0.253-0.013-0.555,0.24-0.675
c0.247-0.119,0.555-0.013,0.675,0.24c0.64,1.351,1.083,2.728,1.279,3.982c0.044,0.276-0.145,0.536-0.421,0.579
C188.901,79.389,188.873,79.391,188.847,79.391z M42.614,75.455c-0.074,0-0.148-0.016-0.22-0.05
c-0.252-0.121-0.357-0.424-0.236-0.676c0.603-1.254,1.372-2.471,2.222-3.52c0.176-0.217,0.495-0.251,0.712-0.074
c0.217,0.176,0.25,0.495,0.074,0.712c-0.801,0.988-1.525,2.137-2.095,3.32C42.983,75.35,42.801,75.455,42.614,75.455z
M185.471,72.115c-0.147,0-0.295-0.065-0.396-0.189c-0.896-1.12-1.876-2.024-2.837-2.616c-0.238-0.146-0.312-0.459-0.166-0.696
c0.146-0.238,0.458-0.312,0.695-0.166c1.06,0.652,2.131,1.637,3.098,2.846c0.174,0.218,0.14,0.536-0.079,0.712
C185.695,72.079,185.582,72.115,185.471,72.115z M47.762,69.331c-0.172,0-0.34-0.088-0.435-0.246
c-0.144-0.24-0.065-0.551,0.175-0.694l3.513-2.03c0.241-0.14,0.553-0.058,0.691,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.5,2.022C47.942,69.308,47.851,69.331,47.762,69.331z M178.999,67.356c-0.086,0-0.173-0.021-0.253-0.067l-3.508-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691c0.14-0.242,0.449-0.326,0.691-0.186l3.508,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C179.344,67.266,179.174,67.356,178.999,67.356z M54.778,65.28c-0.176,0-0.346-0.091-0.439-0.254
c-0.14-0.242-0.057-0.551,0.187-0.691l3.507-2.024c0.24-0.141,0.551-0.058,0.69,0.185c0.141,0.242,0.058,0.552-0.185,0.692
l-3.507,2.024C54.95,65.259,54.865,65.28,54.778,65.28z M171.985,63.307c-0.086,0-0.174-0.022-0.253-0.068l-3.509-2.024
c-0.241-0.141-0.324-0.45-0.185-0.692c0.14-0.241,0.449-0.326,0.69-0.185l3.509,2.024c0.241,0.14,0.324,0.45,0.186,0.692
C172.328,63.216,172.158,63.307,171.985,63.307z M61.792,61.229c-0.175,0-0.345-0.09-0.439-0.253
c-0.14-0.242-0.057-0.552,0.187-0.691l3.507-2.025c0.241-0.141,0.551-0.058,0.692,0.186c0.14,0.242,0.057,0.552-0.187,0.691
l-3.507,2.025C61.966,61.208,61.879,61.229,61.792,61.229z M164.969,59.256c-0.086,0-0.173-0.021-0.253-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691c0.14-0.243,0.449-0.325,0.691-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.187,0.691
C165.313,59.166,165.143,59.256,164.969,59.256z M68.807,57.18c-0.175,0-0.345-0.091-0.438-0.253
c-0.141-0.242-0.058-0.552,0.186-0.692l3.508-2.025c0.241-0.141,0.552-0.058,0.692,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.509,2.026C68.98,57.158,68.893,57.18,68.807,57.18z M157.953,55.206c-0.086,0-0.173-0.021-0.253-0.068l-3.507-2.024
c-0.242-0.14-0.325-0.449-0.187-0.691c0.14-0.243,0.45-0.326,0.692-0.186l3.507,2.024c0.242,0.141,0.325,0.45,0.186,0.692
C158.298,55.115,158.128,55.206,157.953,55.206z M75.823,53.129c-0.175,0-0.346-0.091-0.439-0.253
c-0.14-0.242-0.057-0.552,0.186-0.691l3.508-2.025c0.241-0.141,0.551-0.057,0.691,0.186c0.141,0.242,0.058,0.552-0.186,0.691
l-3.508,2.025C75.995,53.107,75.908,53.129,75.823,53.129z M150.938,51.155c-0.086,0-0.173-0.021-0.253-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.186-0.691s0.45-0.326,0.691-0.186l3.508,2.025c0.241,0.14,0.324,0.449,0.186,0.691
C151.283,51.065,151.114,51.155,150.938,51.155z M82.838,49.079c-0.175,0-0.345-0.091-0.438-0.254
c-0.141-0.242-0.058-0.552,0.186-0.691l3.507-2.025c0.24-0.14,0.551-0.057,0.692,0.186c0.14,0.242,0.057,0.552-0.187,0.692
l-3.507,2.024C83.011,49.057,82.924,49.079,82.838,49.079z M143.923,47.105c-0.086,0-0.173-0.021-0.252-0.067l-3.507-2.025
c-0.242-0.14-0.325-0.449-0.187-0.691c0.141-0.243,0.45-0.325,0.692-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C144.268,47.015,144.098,47.105,143.923,47.105z M89.853,45.028c-0.175,0-0.345-0.09-0.438-0.253
c-0.14-0.242-0.057-0.552,0.185-0.691l3.508-2.025c0.239-0.141,0.552-0.058,0.691,0.186c0.14,0.242,0.057,0.552-0.186,0.691
l-3.508,2.025C90.027,45.007,89.939,45.028,89.853,45.028z M136.908,43.056c-0.086,0-0.173-0.022-0.252-0.068l-3.507-2.024
c-0.242-0.141-0.325-0.45-0.187-0.692c0.139-0.242,0.449-0.325,0.692-0.186l3.507,2.025c0.242,0.141,0.325,0.449,0.185,0.691
C137.253,42.965,137.083,43.056,136.908,43.056z M96.868,40.978c-0.175,0-0.345-0.091-0.439-0.253
c-0.14-0.242-0.057-0.552,0.186-0.692l3.507-2.024c0.241-0.141,0.551-0.059,0.691,0.185c0.141,0.243,0.058,0.552-0.186,0.692
L97.12,40.91C97.041,40.956,96.954,40.978,96.868,40.978z M129.892,39.005c-0.086,0-0.173-0.021-0.252-0.067l-3.507-2.025
c-0.242-0.14-0.326-0.449-0.186-0.691c0.14-0.243,0.448-0.325,0.691-0.186l3.507,2.025c0.242,0.14,0.325,0.449,0.186,0.691
C130.239,38.915,130.069,39.005,129.892,39.005z M103.883,36.928c-0.175,0-0.345-0.091-0.438-0.253
c-0.141-0.242-0.058-0.552,0.186-0.692l3.507-2.024c0.241-0.141,0.552-0.059,0.691,0.186c0.14,0.242,0.057,0.552-0.187,0.691
l-3.507,2.025C104.056,36.906,103.969,36.928,103.883,36.928z M122.877,34.955c-0.086,0-0.173-0.021-0.252-0.068l-1.137-0.656
c-0.673-0.389-1.486-0.708-2.415-0.95c-0.271-0.071-0.434-0.348-0.362-0.618s0.347-0.432,0.618-0.362
c1.016,0.266,1.913,0.62,2.665,1.054l1.137,0.656c0.242,0.141,0.325,0.45,0.186,0.692
C123.222,34.864,123.053,34.955,122.877,34.955z M111.076,33.27c-0.228,0-0.434-0.152-0.491-0.382
c-0.068-0.271,0.096-0.547,0.367-0.615c1.271-0.321,2.703-0.491,4.137-0.491c0.28,0,0.56,0.227,0.56,0.507
c0,0.279-0.175,0.506-0.454,0.506h-0.112c-1.345,0-2.689,0.159-3.881,0.46C111.159,33.266,111.117,33.27,111.076,33.27z" />
<g id="glyph"></g>
<g id="tab" class="optional" title="Chamilo Tab">
<path class="color-border"
d="M123.457,203.577l65.297-37.799l-0.824-1.423l-0.294,0.17
c-4.923,0.761-10.909,0.496-15.256-3.56c-8.746-8.156-15.314-13.549-30.813-4.577c-0.522,0.302-2.136,1.235-2.657,1.538
c-15.499,8.972-14.094,17.354-11.375,29c1.351,5.789-1.401,11.111-4.511,15.003l-0.39,0.226L123.457,203.577z" />
<path class="color-detail"
d="m 151.31362,159.12558 -1.34031,0.30475 c -1.02125,0.23287 -1.46545,0.94933 -1.27487,1.67888 l 1.50227,5.74723 c 0.19061,0.72968 0.58283,1.14115 1.30811,1.00473 l 1.78072,-0.33484 c 0.57367,-0.10775 0.81173,-0.55784 0.71675,-1.3059 l -0.75791,-5.96679 c -0.12184,-0.95954 -1.21522,-1.29198 -1.93477,-1.12784 z m -9.3409,4.58849 c -0.42456,0.10759 -0.81711,0.38017 -1.05402,0.69149 l -0.88209,1.16077 c -0.67235,0.88377 -0.56456,1.77073 0.0651,2.23803 l 4.95827,3.68048 c 0.62957,0.4673 1.2168,0.53742 1.71318,-0.0665 l 1.21806,-1.48258 c 0.39261,-0.47767 0.29088,-1.00774 -0.27344,-1.55511 l -4.50155,-4.3648 c -0.36202,-0.35105 -0.81896,-0.40932 -1.24349,-0.30166 z m 15.03796,4.37856 c -0.11004,0.0195 -0.20898,0.0605 -0.29269,0.12668 -0.66968,0.53051 0.19395,1.49103 0.29786,1.80856 0.12915,0.33523 0.55262,0.83972 0.44645,0.85969 -0.13146,0.002 -2.33,-2.79709 -6.20128,-1.16974 -0.99551,0.43444 -1.80121,1.05796 -2.41285,1.77975 -0.2736,0.2986 -0.4963,0.63307 -0.69797,0.96309 -1.18398,1.88552 -1.47868,3.94023 -1.54556,4.40219 -0.10597,0.71679 -1.15619,3.43081 -1.01326,4.88719 0.16777,1.4739 0.81229,5.01559 4.12999,4.88575 0.39445,-0.007 0.75631,-0.0751 1.06246,-0.20078 0.30625,-0.12498 0.57845,-0.3109 0.77934,-0.52842 1.28127,-1.25224 0.87944,-3.73841 -0.0175,-4.06402 -0.26221,-0.10822 -0.51651,-0.17194 -0.78357,-0.18906 -0.29234,-0.0354 -0.59816,-0.0234 -0.86203,0.094 -0.57416,0.22041 -0.99378,0.79398 -1.06538,1.93097 -0.0536,0.99876 0.99493,1.43117 1.66223,1.23822 0.0424,-0.008 0.10694,-0.0203 0.14539,-0.0501 0,0 -0.035,0.0516 -0.13307,0.11484 -0.28095,0.14271 -0.92225,0.35293 -1.82845,-0.37761 -1.21883,-0.98405 -1.09064,-2.98532 -0.42749,-3.78414 0.42785,-0.52993 0.87076,-0.86136 1.25053,-1.17994 0.18789,-0.17019 0.35534,-0.33606 0.4925,-0.54162 0.0862,-0.12835 0.14943,-0.25255 0.21808,-0.35535 0.20581,-0.30834 0.28759,-0.458 0.28759,-0.458 0,0 0.52141,1.25 1.14142,1.73999 0.62008,0.49005 1.3013,0.72016 1.41057,0.2507 0.11344,-0.44832 -0.81705,-2.1145 -0.81705,-2.1145 0,0 1.30887,0.87707 1.67645,1.07758 0.36753,0.20068 1.04545,0.4095 1.1048,-0.20892 0.0378,-0.61398 -0.57559,-1.41961 -0.96522,-1.50358 -0.36886,-0.0855 -0.58055,-0.0485 -0.58055,-0.0485 0,0 -0.26556,-0.24255 -0.38811,-0.30941 -0.14374,-0.0624 -0.16516,-0.0586 -0.16516,-0.0586 0,0 0.17028,-0.1438 0.76904,-0.23391 0.61992,-0.0942 1.11204,-0.1645 1.11204,-0.1645 0,0 0.7088,0.72119 1.09768,0.9177 0.37167,0.22217 1.3262,0.73875 1.67662,0.96492 0.32924,0.2301 0.52351,0.32818 0.58424,0.0728 0.0415,-0.2542 -0.22787,-0.85609 -0.69585,-1.23988 -0.48525,-0.3581 -0.95491,-0.51642 -1.14448,-0.70546 -0.17646,-0.23637 -0.29745,-0.41614 -0.29745,-0.41614 0,0 0.89548,0.43752 1.12341,0.59687 0.24506,0.1336 1.81454,0.76032 2.07675,0.86834 0.26628,0.12999 0.35172,4.7e-4 0.35172,4.7e-4 0,0 0.19436,0.0987 0.24164,-1e-4 0.0473,-0.0994 0.10603,-0.71744 -0.40396,-0.98063 -0.53671,-0.28099 -0.84584,-0.40256 -0.81157,-0.45396 0.0121,-0.0473 0.50922,0.0167 0.54838,-0.1254 0.0216,-0.11654 -0.0745,-0.27813 -0.14645,-0.30951 -0.0547,-0.057 0.0915,-0.2193 0.0915,-0.2193 0,0 0.17015,-0.0314 0.88319,-0.0981 0.71301,-0.0668 2.36084,-1.00634 2.6973,-1.20445 0.33646,-0.19817 0.51042,-0.32123 0.51042,-0.32123 0,0 0.19317,-0.14833 0.18721,-0.52928 -7.5e-4,-0.0211 -0.008,-0.0432 -0.0122,-0.0644 l -0.0121,-0.0649 c -0.0867,-0.34322 -0.50329,-0.69123 -0.96317,-1.03163 -0.53181,-0.37181 -0.95551,-0.51676 -0.95551,-0.51676 0,0 -0.36268,-0.87571 -1.40673,-1.98253 -0.89495,-0.97201 -2.23849,-1.91124 -3.00896,-1.77544 z m -18.97389,5.85828 c -0.72882,0.14751 -1.13503,1.00397 -1.12245,1.65766 l 0.0276,1.39119 c 0.0204,1.06031 0.61325,1.65193 1.34443,1.61835 l 5.75877,-0.26457 c 0.73121,-0.0337 1.20025,-0.33515 1.21323,-1.08195 l 0.0326,-1.83271 c 0.0103,-0.59069 -0.37154,-0.92201 -1.10148,-0.98704 l -5.82101,-0.51849 c -0.11672,-0.0132 -0.22766,-0.003 -0.3318,0.0182 z m 5.06311,7.21666 c -0.10811,0.0406 -0.2205,0.10275 -0.33884,0.18634 l -3.77546,2.67236 c -0.60701,0.42953 -0.42942,1.32165 -0.0525,1.77195 l 0.702,0.83918 c 0.5352,0.63912 1.18584,0.69647 1.61135,0.30058 l 3.35131,-3.11765 c 0.42554,-0.396 0.56044,-0.82263 0.2,-1.28695 l -0.88507,-1.13873 c -0.21377,-0.27543 -0.48906,-0.34909 -0.81286,-0.22727 z m 7.60789,1.48563 c 0,0 0.11481,0.0214 0.26664,0.12781 0.0716,0.0316 0.14741,0.0853 0.21033,0.1859 0.17652,0.23643 0.1741,0.57329 0.1741,0.57329 0,0 -0.0989,-0.40744 -0.28841,-0.59648 -0.0255,-0.0165 -0.0512,-0.0357 -0.0762,-0.0546 -0.16017,-0.14989 -0.28622,-0.2371 -0.28622,-0.2371 z m -0.35489,0.93377 c 0.0307,0.003 0.0536,0.032 0.0466,0.11223 -0.009,0.0898 -0.0683,0.10278 -0.11116,0.11071 -0.10646,0.0199 -0.20375,-0.0299 -0.18618,-0.1671 0.0547,0.057 0.0969,0.0488 0.15275,-0.006 0.0278,-0.0275 0.067,-0.0521 0.0977,-0.0491 z" />
</g>
<path id="outerRing"
class="color-border"
d="M191.944,55.825l-64.102-37.009c-3.485-2.014-8.016-3.122-12.753-3.122
c-4.736,0-9.265,1.108-12.754,3.122L38.237,55.825c-7.151,4.13-12.754,13.832-12.754,22.092v74.015
c0,8.258,5.603,17.961,12.754,22.091l64.099,37.009c3.489,2.014,8.018,3.123,12.754,3.123c4.737,0,9.268-1.109,12.753-3.123
l64.102-37.008c7.15-4.13,12.754-13.833,12.754-22.091V77.917C204.698,69.657,199.094,59.955,191.944,55.825z M194.484,148.043
c0,7.316-4.965,15.914-11.301,19.572l-56.794,32.791c-3.09,1.783-7.103,2.766-11.3,2.766s-8.21-0.981-11.3-2.766l-56.793-32.791
c-6.336-3.658-11.3-12.256-11.3-19.572V82.465c0-7.317,4.964-15.914,11.3-19.573l56.793-32.79c3.09-1.783,7.103-2.767,11.3-2.767
s8.21,0.983,11.3,2.767l56.794,32.79c6.336,3.659,11.301,12.256,11.301,19.573V148.043z" />
<radialGradient id="glossGradient"
cx="115"
cy="-160"
r="400"
gradientUnits="userSpaceOnUse">
<stop offset="0.50" style="stop-color: #FFF; stop-opacity: 0.1;" />
<stop offset="0.75" style="stop-color: #FFF; stop-opacity: 1.0;" />
<stop offset="0.75" style="stop-color: #FFF; stop-opacity: 0.0;" />
</radialGradient>
<g id="gloss" class="optional" title="Glossy Overlay" display="none">
<use xlink:href="#backgroundShape" style="fill: url(#glossGradient); opacity: 0.1;" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,824 @@
// set superglobal js var by default 100 for glyph
window.size = 'medium';
var SVG_NS = "http://www.w3.org/2000/svg";
var svgCache = {};
var options = {};
var $badge;
var $badgeRaster;
var $studio = document.getElementById('studio');
var $template = document.getElementById('studio-template');
var $palette = document.getElementById('studio-palette');
var $mask = document.getElementById('studio-mask');
var $glyph = document.getElementById('studio-glyph');
var $glyphSelector;
var $glyphSelectorButton;
window.addEventListener('load', function init() {
$badgeRaster = new Image();
$badgeRaster.id = 'raster';
document.getElementById('output').appendChild($badgeRaster);
$template.addEventListener('change', updateTemplate);
$palette.addEventListener('change', updatePalette);
$mask.addEventListener('change', updateMask);
$glyph.addEventListener('change', updateGlyph);
initStudio();
initPalettes();
initOptions();
updateTemplate();
});
// ==[ General Methods ]======================================================
/**
*
*/
function showError(err) {
// TO DO - show errors :)
console.err(err);
}
// ==[ Studio ]===============================================================
/**
*
*/
function initStudio() {
initGlyphSelector();
document.addEventListener('keydown', function (event) {
if (event.keyCode === 27) { // Escape
if ($glyphSelector && $glyphSelector.offsetWidth)
closeGlyphSelector();
}
}, true);
document.addEventListener('focus', function (event) {
[$glyphSelector].forEach(function ($overlay) {
if ($overlay && $overlay.offsetWidth && !$overlay.contains(event.target)) {
event.stopPropagation();
$overlay.focus();
}
});
}, true);
}
// ==[ Glyph Selector ]=======================================================
/**
*
*/
function initGlyphSelector() {
if ($glyphSelector) {
return false;
}
var glyphLog = [];
$glyphSelectorButton = document.createElement('button');
$glyphSelectorButton.className = 'btn btn-default pull-right';
$glyphSelectorButton.id = 'search-glyphs';
$glyphSelectorButton.type = 'button';
$glyphSelectorButton.innerHTML = '<em class="fa fa-search"></em> Search';
$glyphSelectorButton.addEventListener('click', openGlyphSelector);
$glyph.parentNode.insertBefore($glyphSelectorButton, $glyph.nextSibling);
var $$options = $glyph.querySelectorAll('option');
$glyphSelector = importTemplate('glyph-selector', function ($template) {
var $list = $template.querySelector('ul');
for (var i = 0, l = $$options.length; i < l; i++) {
(function ($option, index) {
var value = $option.value;
var id = 'glyph-selector-item-' + value;
var $node = importTemplate('glyph-selector-item', function ($template) {
var $input = $template.querySelector('input');
$input.id = id;
$input.value = index;
var checked = $glyph.selectedIndex === index;
$input[checked ? 'setAttribute' : 'removeAttribute']('checked', 'checked');
var $label = $template.querySelector('label');
$label.id = id + '-label';
$label.className = 'fa fa-' + value;
$label.setAttribute('for', id);
$label.setAttribute('title', $option.text);
}).querySelector('li');
$list.appendChild($node);
glyphLog.push({
id: id,
value: value
});
})($$options[i], i);
}
}).querySelector('#glyph-selector');
$glyphSelector.querySelector('.header').appendChild(makeCloseButton(closeGlyphSelector));
$studio.appendChild($glyphSelector);
$glyphSelector.addEventListener('change', function (event) {
event.stopPropagation();
var index = event.target.value;
$glyph.selectedIndex = index;
updateGlyph();
});
$glyphSelector.addEventListener('click', function (event) {
if (event.target.nodeName.toLowerCase() !== 'label') {
return;
}
event.stopPropagation();
closeGlyphSelector();
});
$glyphSelector.addEventListener('keydown', function (event) {
if (event.keyCode === 13) { // Enter
if (event.target.name)
$glyph.selectedIndex = event.target.value;
return updateGlyph(closeGlyphSelector);
}
if (event.keyCode === 38 || event.keyCode === 40) { // Up / Down
event.preventDefault();
var $container = event.target.parentNode.parentNode;
var itemSize = event.target.parentNode.offsetWidth;
var containerSize = $container.offsetWidth;
var rowCount = Math.floor(containerSize / itemSize);
var currentIndex = parseInt(event.target.value);
var newIndex = currentIndex;
var altFinder;
if (event.keyCode === 38) {
// Move up a row
newIndex = currentIndex - rowCount;
altFinder = 'firstElementChild';
} else {
// Move down a row
newIndex = currentIndex + rowCount;
altFinder = 'lastElementChild';
}
var newItem = $container.querySelector('input[value="' + newIndex + '"]') ||
$container[altFinder].querySelector('input');
$glyph.selectedIndex = newItem.value;
newItem.checked = true;
newItem.focus();
rasterize();
}
});
$glyphSelector.addEventListener('focus', function (event) {
if (event.target !== $glyphSelector)
return;
event.stopPropagation();
}, true);
$glyph.addEventListener('change', function (event) {
var $selectorItem = document.getElementById('glyph-selector-item-' + this.value);
if ($selectorItem) {
$selectorItem.click();
}
});
}
/**
*
*/
function openGlyphSelector() {
if (!$glyphSelector)
initGlyphSelector();
$glyphSelector.classList.remove('hidden');
if ($glyph.value)
document.getElementById('glyph-selector-item-' + $glyph.value + '-label').focus();
$glyphSelector.focus();
}
/**
*
*/
function closeGlyphSelector() {
if (!$glyphSelector)
return;
$glyphSelector.classList.add('hidden');
$glyphSelectorButton.focus();
}
// ==[ Templates ]============================================================
/**
*
*/
function getCurrentTemplate() {
return $template.value;
}
/**
*
*/
function updateTemplate(callback) {
callback = cb(callback);
var path = $template.dataset.path;
var shape = getCurrentTemplate();
loadSVG(path + '/' + shape + '.svg', function (err, $svg) {
if (err)
return showError(err);
$badge = $svg;
extractOptions();
setCustomPalette($svg);
updatePalette(function () {
updateMask(callback);
});
});
}
// ==[ Palettes ]=============================================================
function Palette(colors) {
this._colors = {};
if (colors) {
for (var color in colors) {
if (colors.hasOwnProperty(color)) {
this._colors[color] = Palette.parseColor(colors[color]);
}
}
}
if (!this._colors.hasOwnProperty('glyph'))
this._colors['glyph'] = '#000000';
}
Palette.prototype.toNode = function (id) {
var content = [];
for (var color in this._colors) {
if (this._colors.hasOwnProperty(color)) {
content.push('.color-' + color + ' { fill: ' + this._colors[color] + '; }');
}
}
var $node = document.createElement('style');
$node.type = 'text/css';
$node.id = id || 'palette';
$node.textContent = content.join('\n');
return $node;
}
Palette.prototype.colors = function () {
return Object.keys(this._colors);
}
Palette.prototype.color = function (name) {
return this._colors[name] || '#000';
}
Palette.parseColor = function (str) {
// Should probably be a bit more robust about this!
if (!/^#[a-f0-9]{3}$/i.test(str))
return str.toLowerCase();
return '#' + str.charAt(1) + str.charAt(1)
+ str.charAt(2) + str.charAt(2)
+ str.charAt(3) + str.charAt(3);
}
Palette.fromDataset = function (dataset) {
var colors = {};
for (var item in dataset) {
if (/^color\w+/i.test(item)) {
var color = item
.replace(/^color(\w)/i, function (m, c) {
return c.toLowerCase();
})
.replace(/[A-Z]/, function (m) {
return '-' + m.toLowerCase();
});
colors[color] = dataset[item];
}
}
return new Palette(colors);
}
Palette.fromSVG = function ($svg) {
var colors = {};
var $node = $svg.getElementById('palette');
if (!$node || $node.nodeName !== 'style')
return new Palette();
var $stylesheet = document.createElement('style');
$stylesheet.setAttribute('media', 'print');
$stylesheet.appendChild(document.createTextNode($node.textContent));
document.head.appendChild($stylesheet);
var sheet = $stylesheet.sheet;
document.head.removeChild($stylesheet);
var rules = sheet.rules || sheet.cssRules;
for (var i = 0, l = rules.length; i < l; i++) {
var rule = rules[i];
var selector = rule.selectorText;
if (/^\.color-/.test(selector)) {
var key = selector.replace(/^\.color-/, '');
var value = rule.style.fill || '#000';
colors[key] = value;
}
}
return new Palette(colors);
}
/**
*
*/
function initPalettes() {
var $custom = document.createElement('option');
$custom.disabled = true;
$custom.value = 'custom';
$custom.text = 'Custom';
$custom.id = 'custom-color-option';
$palette.options.add($custom);
var $container = document.getElementById('custom-palette');
$palette.addEventListener('change', function () {
var isCustom = (this.options[this.selectedIndex] === $custom);
$custom.disabled = !isCustom;
setCustomColors();
updatePalette();
});
var changeTimer;
$container.addEventListener('change', function (event) {
var $input = event.target;
$custom.setAttribute('data-color-' + $input.name, $input.value);
$custom.disabled = false;
$palette.selectedIndex = $palette.options.length - 1;
updatePalette();
});
setCustomColors();
}
/**
*
*/
function getCurrentPalette() {
var $option = $palette.options[$palette.selectedIndex];
return Palette.fromDataset($option.dataset);
}
/**
*
*/
function updatePalette(callback) {
callback = cb(callback);
var $oldPalette = $badge.getElementById('palette');
var $newPalette = getCurrentPalette().toNode();
if ($oldPalette) {
$oldPalette.parentNode.insertBefore($newPalette, $oldPalette);
$oldPalette.parentNode.removeChild($oldPalette);
} else {
var $defs = $badge.querySelector('defs') || document.createElement('defs');
if (!$defs.parentNode)
$badge.insertBefore($defs, $badge.childNodes[0]);
$defs.appendChild($newPalette)
}
updateGlyph(callback);
}
/**
*
*/
function setCustomPalette($svg, callback) {
callback = cb(callback);
var colors = Palette.fromSVG($svg).colors();
var $container = document.getElementById('custom-palette');
var display = $container.style.display;
$container.innerHTML = '';
$container.style.display = 'none';
$container.className = 'item';
for (var i = 0, l = colors.length; i < l; i++) {
var name = colors[i];
var label = name.replace(/(^|-)(\w)/g, function (m, x, c) {
return (x ? ' ' : '') + c.toUpperCase();
});
$container.appendChild(importTemplate('custom-color', function ($template) {
var $label = $template.querySelector('span');
$label.textContent = label;
var $input = $template.querySelector('input');
$input.name = name;
$input.id = 'custom-color-picker-' + name;
}));
}
if (colors.length)
$container.style.display = display;
setCustomColors();
}
/**
*
*/
function setCustomColors() {
var $custom = document.getElementById('custom-color-option');
var $option = $palette.options[$palette.selectedIndex];
var palette = Palette.fromDataset($option.dataset);
var colors = palette.colors();
for (var i = 0, l = colors.length; i < l; i++) {
var colorName = colors[i];
var colorValue = palette.color(colorName);
$custom.setAttribute('data-color-' + colorName, colorValue);
var $input = document.getElementById('custom-color-picker-' + colorName);
if ($input) {
$input.value = colorValue;
}
}
}
// ==[ Masks ]================================================================
function getCurrentMask() {
return $mask.value;
}
/**
*
*/
function updateMask(callback) {
callback = cb(callback);
var path = $mask.dataset.path;
var mask = getCurrentMask();
if (!mask) {
var $svg = document.createElementNS(SVG_NS, 'svg');
var $g = document.createElementNS(SVG_NS, 'g');
$g.id = 'mask';
$svg.appendChild($g);
return done(null, $svg);
}
loadSVG(path + '/' + mask + '.svg', done);
function done(err, $svg) {
if (err)
return showError(err);
var $oldMask = $badge.querySelector('#mask');
var $newMask = $svg.querySelector('#mask');
$oldMask.parentNode.insertBefore($newMask, $oldMask);
$oldMask.parentNode.removeChild($oldMask);
rasterize(callback);
}
}
// ==[ Options ]==============================================================
/**
*
*/
function initOptions() {
if ($badge)
extractOptions();
var $options = document.getElementById('options');
$options.addEventListener('change', function (event) {
event.stopPropagation();
var option = event.target.name;
if (!options.hasOwnProperty(option))
return;
options[option] = !!event.target.checked;
setOptions();
});
}
/**
*
*/
function extractOptions() {
var $options = document.getElementById('options');
$options.innerHTML = '';
var $optional = $badge.querySelectorAll('.optional');
if (!$optional.length) {
$options.innerHTML = '<i>None</l>';
return;
}
for (var i = 0, l = $optional.length; i < l; i++) {
var $option = $optional[i];
var label = $option.getAttribute('title');
var name = $option.id;
var enabled = ($option.getAttribute('display') !== 'none');
if (!options.hasOwnProperty(name))
options[name] = enabled;
$option[!!options[name] ? 'removeAttribute' : 'setAttribute']('display', 'none');
$options.appendChild(importTemplate('option', function ($template) {
var $checkbox = $template.querySelector('input');
$checkbox.name = name;
$checkbox.checked = !!options[name];
var $label = $template.querySelector('span');
$label.textContent = label;
}));
}
}
/**
*
*/
function setOptions(callback) {
callback = cb(callback);
if (!$badge)
return callback();
for (var option in options) {
if (options.hasOwnProperty(option)) {
var $node = $badge.getElementById(option);
var visible = !!options[option];
$node && ($node[visible ? 'removeAttribute' : 'setAttribute']('display', 'none'));
}
}
rasterize(callback)
}
// ==[ Glyphs ]===============================================================
/**
*
*/
function getCurrentGlyph() {
return $glyph.value;
}
/**
*
*/
function getCurrentGlyphValue() {
if (!$glyph.value)
return '';
var $i = document.createElement('i');
$i.className = 'fa fa-' + getCurrentGlyph();
document.body.appendChild($i);
var chr = window.getComputedStyle($i, ':before').content;
document.body.removeChild($i);
chr = chr.replace(/["']/g, '');
return chr;
}
/**
*
*/
function updateGlyph(callback) {
var glyph = getCurrentGlyphValue();
if (!glyph)
return setGlyphImage(null, callback);
var $canvas = document.createElement('canvas');
$canvas.width = parseInt($badgeRaster.offsetWidth);
$canvas.height = parseInt($badgeRaster.offsetHeight);
var ctx = $canvas.getContext('2d');
ctx.font = parseInt($canvas.width / 3) + "px FontAwesome";
ctx.fillStyle = getCurrentPalette().color('glyph');
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.shadowColor = "rgba(0,0,0,0.5)";
ctx.shadowOffsetX = 0;
ctx.shadowOffsetY = 0;
ctx.shadowBlur = 5;
ctx.fillText(glyph, $canvas.width / 2, $canvas.height / 2);
var $image = new Image();
$image.onload = function () {
setGlyphImage($image, callback);
}
$image.src = $canvas.toDataURL("image/png");
// $image.src = "./media/images/cheese.jpg";
}
/**
*
*/
function setGlyphImage($image, callback) {
callback = cb(callback);
var $newGlyph = document.createElementNS(SVG_NS, 'g');
$newGlyph.id = 'glyph';
if (!$image)
return done();
var gxyAdd = 0;
var whAdd = 0;
if (window.size == 'big') {
gxyAdd = 40;
whAdd = 80
} else if (window.size == 'small') {
gxyAdd = -40;
whAdd = -80
}
var iWidth = $image.width;
var iHeight = $image.height;
var rWidth = $badgeRaster.width;
var rHeight = $badgeRaster.height;
var box = $badge.getAttribute('viewBox').split(' ');
var bWidth = parseInt(box[2]);
var bHeight = parseInt(box[3]);
var cx = bWidth / 2 + parseInt(box[0]);
var cy = bHeight / 2 + parseInt(box[1]);
var gWidth = iWidth / (rWidth / bWidth);
var gHeight = iHeight / (rHeight / bHeight);
var gx = cx - (gWidth / 2);
var gy = cy - (gHeight / 2);
var $glyph = document.createElementNS(SVG_NS, 'image');
$glyph.setAttribute('x', gx - gxyAdd);
$glyph.setAttribute('y', gy - gxyAdd);
$glyph.setAttribute('width', gWidth + whAdd);
$glyph.setAttribute('height', gHeight + whAdd);
$glyph.setAttribute('xlink:href', $image.src);
$newGlyph.appendChild($glyph);
done();
function done() {
var $oldGlyph = $badge.getElementById('glyph');
$oldGlyph.parentNode.insertBefore($newGlyph, $oldGlyph);
$oldGlyph.parentNode.removeChild($oldGlyph);
rasterize(callback);
}
}
// ==[ Helpers ]==============================================================
/**
*
*/
function rasterize(callback) {
callback = cb(callback);
var $svg = $badge.cloneNode(true);
var $canvas = document.createElement('canvas');
$canvas.width = parseInt($svg.getAttribute('width'));
$canvas.height = parseInt($svg.getAttribute('height'));
var ctx = $canvas.getContext('2d');
var svg_xml = (new XMLSerializer()).serializeToString($svg);
/*
// This is the 'official' way of doing this. However, Firefox seems to have
// an issue referencing relative fragment URIs created by `createObjectURL`.
// So we're using a base64 encoding hack instead :( Worth noting that if
// there are non-standard unicode characters in the XML, it'll die a death.
var DOMURL = window.URL || window.webkitURL || window;
var blob = new Blob([svg_xml], {type: 'image/svg+xml;charset=utf-8'});
var url = DOMURL.createObjectURL(blob);
*/
var url = 'data:image/svg+xml;base64,' + btoa(svg_xml);
var $img = new Image();
$img.onload = function () {
ctx.drawImage($img, 0, 0);
$badgeRaster.src = $canvas.toDataURL("image/png");
callback();
}
$img.src = url;
}
/**
*
*/
function cb(fn) {
if (typeof fn === 'function')
return fn;
return function () {
};
}
/**
*
*/
function load(url, method, callback) {
var request = new XMLHttpRequest();
request.onload = function () {
callback(null, request.responseXML || request.responseText, request);
}
request.onerror = function (err) {
callback(err, null, request);
}
request.open(method, url, true);
request.send();
}
/**
*
*/
function loadSVG(path, callback) {
if (svgCache[path])
return callback(null, svgCache[path].cloneNode(true));
load(path, 'GET', function (err, $doc, request) {
if (err)
return callback(err);
if (!$doc || typeof $doc === 'string')
return callback(new Error('Not valid SVG'));
svgCache[path] = $doc.getElementsByTagName('svg')[0];
callback(null, svgCache[path].cloneNode(true));
})
}
/**
*
*/
function importTemplate(name, builder) {
var $template = document.getElementById(name + '-template');
if (typeof builder === 'function')
builder($template.content);
return document.importNode($template.content, true);
}
/**
*
*/
function makeCloseButton(callback) {
var $template = importTemplate('close-button');
$template.querySelector('button').addEventListener('click', callback);
return $template;
}

View File

@@ -0,0 +1,53 @@
-------------------------------------------------------------------------
BigUpload
version 1.2
Created by: Sean Thielen <sean@p27.us>
[BigUpload: Uploading really big files in the browser](http://p27.us/2013/03/bigupload-uploading-really-big-files-in-the-browser/)
-------------------------------------------------------------------------
BigUpload is a tool for handling large file uploads (tested up to 2GB) through the browser.
![Screenshot](http://i.imgur.com/vESk5dp.png)
-------------------------------------------------------------------------
It uses the HTML5 FileReader library to split large files into manageable chunks,
and then sends these chunks to the server one at a time using an XmlHttpRequest.
The php script then pieces these chunks together into one large file.
Because the chunks are all the same size, it is easy to calculate an accurate progress bar
and a fairly accurate time remaining variable.
This tool is capable of handling file uploads of up to 2GB in size, without the need to tweak
the max_upload and timeout variables on your httpd.
This tool only works on Chrome and Firefox, but falls back to a normal file upload form on other browsers.
If you want to deploy this as-is, the variables you need to worry about are in the top of
* js/bigUpload.js
* inc/bigUpload.php
And you need to be sure to make /BigUpload/files and /BigUpload/files/tmp writeable
Please feel free to contribute and use this in your projects!
-------------------------------------------------------------------------
v 1.2
* Cleaned up the code quite a lot
* Added pause/resume functionality
* Added fallback for unsupported browsers
v 1.0.1
* Added time remaining calculator
* Response from php script is now a json object, allowing for error processing
* Minor script changes and bugfixes
* Better comments
v 1.0.0
* Initial version

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -0,0 +1,299 @@
<?php
require_once '../../../../global.inc.php';
require_once api_get_path(SYS_CODE_PATH).'work/work.lib.php';
class BigUploadResponse
{
/**
* Max allowed filesize. This is for unsupported browsers and
* as an additional security check in case someone bypasses the js filesize check.
*/
private $maxSize;
/**
* Temporary directory.
*
* @var string
*/
private $tempDirectory;
/**
* Name of the temporary file. Used as a reference to make sure chunks get written to the right file.
*
* @var string
*/
private $tempName;
/**
* Constructor function, sets the temporary directory and main directory.
*/
public function __construct()
{
$tempDirectory = api_get_path(SYS_ARCHIVE_PATH);
$this->setTempDirectory($tempDirectory);
$this->maxSize = getIniMaxFileSizeInBytes();
}
/**
* Create a random file name for the file to use as it's being uploaded.
*
* @param string $value Temporary filename
*/
public function setTempName($value = null)
{
if ($value) {
$this->tempName = $value;
} else {
if ('learnpath' === $_REQUEST['origin'] && !empty($_REQUEST['name'])) {
$this->tempName = disable_dangerous_file(
api_replace_dangerous_char($_REQUEST['name'])
);
} else {
$this->tempName = mt_rand().'.tmp';
}
}
}
/**
* Return the name of the temporary file.
*
* @return string Temporary filename
*/
public function getTempName()
{
return $this->tempName;
}
/**
* Set the name of the temporary directory.
*
* @param string $value Temporary directory
*/
public function setTempDirectory($value)
{
$this->tempDirectory = $value;
return true;
}
/**
* Return the name of the temporary directory.
*
* @return string Temporary directory
*/
public function getTempDirectory()
{
return $this->tempDirectory;
}
/**
* Function to upload the individual file chunks.
*
* @return string JSON object with result of upload
*/
public function uploadFile()
{
//Make sure the total file we're writing to hasn't surpassed the file size limit
if (file_exists($this->getTempDirectory().$this->getTempName())) {
if (filesize($this->getTempDirectory().$this->getTempName()) > $this->maxSize) {
$this->abortUpload();
return json_encode([
'errorStatus' => 1,
'errorText' => get_lang('UplFileTooBig'),
]);
}
}
//Open the raw POST data from php://input
$fileData = file_get_contents('php://input');
//Write the actual chunk to the larger file
$handle = fopen($this->getTempDirectory().$this->getTempName(), 'a');
fwrite($handle, $fileData);
fclose($handle);
return json_encode([
'key' => $this->getTempName(),
'errorStatus' => 0,
]);
}
/**
* Function for cancelling uploads while they're in-progress; deletes the temp file.
*
* @return string JSON object with result of deletion
*/
public function abortUpload()
{
if (unlink($this->getTempDirectory().$this->getTempName())) {
return json_encode(['errorStatus' => 0]);
} else {
return json_encode([
'errorStatus' => 1,
'errorText' => get_lang('UnableToDeleteTempFile'),
]);
}
}
/**
* Function to rename and move the finished file.
*
* @return string JSON object with result of rename
*/
public function finishUpload()
{
$tempName = $this->getTempName();
$sessionBigUpload = ChamiloSession::read('bigupload', []);
if (!isset($sessionBigUpload[$tempName])) {
return json_encode(
[
'errorStatus' => 1,
'errorText' => get_lang('UnableToDeleteTempFile'),
]
);
}
/** @var string $finalName Name to rename the finished upload to */
$finalName = $sessionBigUpload[$tempName];
$origin = $_POST['origin'];
if ($origin == 'document') {
$tmpFile = $this->getTempDirectory().$this->getTempName();
chmod($tmpFile, '0777');
$file = [
'name' => $finalName,
'type' => $_POST['type'],
'tmp_name' => $tmpFile,
'error' => 0,
'size' => $_POST['size'],
'copy_file' => true,
];
$files = ['file' => $file];
$unzip = isset($_POST['unzip']) ? $_POST['unzip'] : null;
$index = isset($_POST['index_document']) ? $_POST['index_document'] : null;
DocumentManager::upload_document(
$files,
$_POST['curdirpath'],
$_POST['title'],
$_POST['comment'],
$unzip,
$_POST['if_exists'],
$index,
true
);
$redirectUrl = api_get_path(WEB_CODE_PATH).'document/document.php?'.api_get_cidreq();
if (!empty($_POST['id'])) {
$redirectUrl .= '&'.http_build_query(
[
'id' => $_POST['id'],
]
);
}
return json_encode(['errorStatus' => 0, 'redirect' => $redirectUrl]);
} elseif ($origin == 'learnpath') {
unset($_REQUEST['origin']);
$redirectUrl = api_get_path(WEB_CODE_PATH).'upload/upload.php?'.api_get_cidreq().'&'
.http_build_query(
[
'from' => 'bigUpload',
'name' => $this->getTempName(),
'use_max_score' => $_POST['use_max_score'] ?? 0,
]
);
return json_encode(['errorStatus' => 0, 'redirect' => $redirectUrl]);
} elseif ($origin == 'work') {
$tmpFile = $this->getTempDirectory().$this->getTempName();
chmod($tmpFile, '0777');
$workInfo = get_work_data_by_id($_REQUEST['id']);
$values = $_REQUEST;
$courseInfo = api_get_course_info();
$sessionId = api_get_session_id();
$groupId = api_get_group_id();
$userId = api_get_user_id();
$values['contains_file'] = 1;
$values['title'] = $finalName;
$file = [
'name' => $finalName,
'type' => $_POST['type'],
'tmp_name' => $tmpFile,
'error' => 0,
'size' => $_POST['size'],
'copy_file' => true,
];
// Process work
$result = processWorkForm(
$workInfo,
$values,
$courseInfo,
$sessionId,
$groupId,
$userId,
$file,
api_get_configuration_value('assignment_prevent_duplicate_upload')
);
$extraParams = '';
if (!empty($_SESSION['oLP'])) {
$extraParams .= '&origin=learnpath';
}
$redirectUrl = api_get_path(WEB_CODE_PATH).'work/work.php?'.api_get_cidreq().$extraParams;
return json_encode(['errorStatus' => 0, 'redirect' => $redirectUrl]);
}
return json_encode(['errorStatus' => 0]);
}
}
$sessionBigUpload = ChamiloSession::read('bigupload', []);
//Instantiate the class
$bigUpload = new BigUploadResponse();
//Set the temporary filename
$tempName = null;
if (isset($_GET['key'])) {
$tempName = $_GET['key'];
}
if (isset($_POST['key'])) {
$tempName = $_POST['key'];
}
if (!empty($tempName)) {
$tempName = api_replace_dangerous_char($tempName);
$tempName = disable_dangerous_file($tempName);
}
$bigUpload->setTempName($tempName);
if (isset($_GET['name'])) {
$sessionBigUpload[$bigUpload->getTempName()] = disable_dangerous_file(
api_replace_dangerous_char($_GET['name'])
);
ChamiloSession::write('bigupload', $sessionBigUpload);
}
switch ($_GET['action']) {
case 'upload':
print $bigUpload->uploadFile();
break;
case 'abort':
print $bigUpload->abortUpload();
break;
case 'finish':
print $bigUpload->finishUpload();
if (isset($sessionBigUpload[$bigUpload->getTempName()])) {
unset($sessionBigUpload[$bigUpload->getTempName()]);
ChamiloSession::write('bigupload', $sessionBigUpload);
}
break;
}

View File

@@ -0,0 +1,347 @@
function bigUpload () {
//These are the main config variables and should be able to take care of most of the customization
this.settings = {
//The id of the file input
'inputField': 'bigUploadFile',
//The id of the form with the file upload.
//This should be a valid html form (see index.html) so there is a fallback for unsupported browsers
'formId': 'bigUploadForm',
//The id of the progress bar
//Width of this element will change based on progress
//Content of this element will display a percentage
//See bigUpload.progressUpdate() to change this code
'progressBarField': 'bigUploadProgressBarFilled',
//The id of the time remaining field
//Content of this element will display the estimated time remaining for the upload
//See bigUpload.progressUpdate() to change this code
'timeRemainingField': 'bigUploadTimeRemaining',
//The id of the text response field
//Content of this element will display the response from the server on success or error
'responseField': 'bigUploadResponse',
//The id of the submit button
//This is then changed to become the pause/resume button based on the status of the upload
'submitButton': 'bigUploadSubmit',
//Color of the background of the progress bar
//This must also be defined in the progressBarField css, but it's used here to reset the color after an error
//Default: green
'progressBarColor': '#5bb75b',
//Color of the background of the progress bar when an error is triggered
//Default: red
'progressBarColorError': '#da4f49',
//Path to the php script for handling the uploads
'scriptPath': 'inc/bigUpload.php',
//Size of chunks to upload (in bytes)
//Default: 1MB
'chunkSize': 1000000,
//Max file size allowed
//Default: 2GB
'maxFileSize': 2147483648,
//CidReq
'cidReq': '',
// Message error upload filesize
'errMessageFileSize': '',
};
//Upload specific variables
this.uploadData = {
'uploadStarted': false,
'file': false,
'numberOfChunks': 0,
'aborted': false,
'paused': false,
'pauseChunk': 0,
'key': 0,
'timeStart': 0,
'totalTime': 0
};
parent = this;
//Quick function for accessing objects
this.$ = function(id) {
return document.getElementById(id);
};
//Resets all the upload specific data before a new upload
this.resetKey = function() {
this.uploadData = {
'uploadStarted': false,
'file': false,
'numberOfChunks': 0,
'aborted': false,
'paused': false,
'pauseChunk': 0,
'key': 0,
'timeStart': 0,
'totalTime': 0
};
};
//Inital method called
//Determines whether to begin/pause/resume an upload based on whether or not one is already in progress
this.fire = function() {
if(this.uploadData.uploadStarted === true && this.uploadData.paused === false) {
this.pauseUpload();
}
else if(this.uploadData.uploadStarted === true && this.uploadData.paused === true) {
this.resumeUpload();
}
else {
this.processFiles();
}
};
//Initial upload method
//Pulls the size of the file being uploaded and calculated the number of chunks, then calls the recursive upload method
this.processFiles = function() {
//If the user is using an unsupported browser, the form just submits as a regular form
if(!Blob.prototype.slice) {
this.$(this.settings.formId).submit();
return;
}
//Reset the upload-specific variables
this.resetKey();
this.uploadData.uploadStarted = true;
//Some HTML tidying
//Reset the background color of the progress bar in case it was changed by any earlier errors
//Change the Upload button to a Pause button
this.$(this.settings.progressBarField).style.backgroundColor = this.settings.progressBarColor;
this.$(this.settings.progressBarField).style.width = '0%';
this.$(this.settings.progressBarField).textContent = '0%';
this.$(this.settings.responseField).textContent = '';
this.$(this.settings.submitButton).value = 'Pause';
this.$(this.settings.submitButton).disabled = true;
//Alias the file input object to this.uploadData
this.uploadData.file = this.$(this.settings.inputField).files[0];
//Check the filesize. Obviously this is not very secure, so it has another check in inc/bigUpload.php
//But this should be good enough to catch any immediate errors
var fileSize = this.uploadData.file.size;
if(fileSize > this.settings.maxFileSize) {
this.printResponse(this.settings.errMessageFileSize, true);
this.$(this.settings.submitButton).disabled = false;
return;
}
//Calculate the total number of file chunks
this.uploadData.numberOfChunks = Math.ceil(fileSize / this.settings.chunkSize);
//Start the upload
this.sendFile(0);
};
//Main upload method
this.sendFile = function (chunk) {
//Set the time for the beginning of the upload, used for calculating time remaining
this.uploadData.timeStart = new Date().getTime();
//Check if the upload has been cancelled by the user
if(this.uploadData.aborted === true) {
return;
}
//Check if the upload has been paused by the user
if(this.uploadData.paused === true) {
this.uploadData.pauseChunk = chunk;
this.printResponse('Upload paused.', false);
return;
}
//Set the byte to start uploading from and the byte to end uploading at
var start = chunk * this.settings.chunkSize;
var stop = start + this.settings.chunkSize;
//Initialize a new FileReader object
var reader = new FileReader();
reader.onloadend = function(evt) {
//Build the AJAX request
//
//this.uploadData.key is the temporary filename
//If the server sees it as 0 it will generate a new filename and pass it back in the JSON object
//this.uploadData.key is then populated with the filename to use for subsequent requests
//When this method sends a valid filename (i.e. key != 0), the server will just append the data being sent to that file.
xhr = new XMLHttpRequest();
xhr.open("POST", parent.settings.scriptPath + '?' + parent.settings.cidReq + '&action=upload' + '&key=' + parent.uploadData.key + '&origin=' + parent.settings.origin + (parent.uploadData.key ? '' : '&name=' + parent.uploadData.file.name), true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
var response = JSON.parse(xhr.response);
//If there's an error, call the error method and break the loop
if(response.errorStatus !== 0 || xhr.status != 200) {
parent.printResponse(response.errorText, true);
return;
}
//If it's the first chunk, set this.uploadData.key to the server response (see above)
if(chunk === 0 || parent.uploadData.key === 0) {
parent.uploadData.key = response.key;
}
//If the file isn't done uploading, update the progress bar and run this.sendFile again for the next chunk
if(chunk < parent.uploadData.numberOfChunks) {
parent.progressUpdate(chunk + 1);
parent.sendFile(chunk + 1);
}
//If the file is complete uploaded, instantiate the finalizing method
else {
parent.sendFileData();
}
}
};
//Send the file chunk
xhr.send(blob);
};
//Slice the file into the desired chunk
//This is the core of the script. Everything else is just fluff.
var blob = this.uploadData.file.slice(start, stop);
reader.readAsBinaryString(blob);
};
//This method is for whatever housekeeping work needs to be completed after the file is finished uploading.
//As it's setup now, it passes along the original filename to the server and the server renames the file and removes it form the temp directory.
//This function could also pass things like this.uploadData.file.type for the mime-type (although it would be more accurate to use php for that)
//Or it could pass along user information or something like that, depending on the context of the application.
this.sendFileData = function() {
var data = 'key=' + this.uploadData.key + '&name=' + this.uploadData.file.name + '&type=' + this.uploadData.file.type + '&size=' + this.uploadData.file.size + '&origin=' + parent.settings.origin + '&' + parent.settings.formParams;
xhr = new XMLHttpRequest();
xhr.open("POST", parent.settings.scriptPath + '?' + parent.settings.cidReq + '&action=finish', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
var response = JSON.parse(xhr.response);
//If there's an error, call the error method
if(response.errorStatus !== 0 || xhr.status != 200) {
parent.printResponse(response.errorText, true);
return;
}
//Reset the upload-specific data so we can process another upload
parent.resetKey();
//Change the submit button text so it's ready for another upload and spit out a sucess message
parent.$(parent.settings.submitButton).value = 'Start Upload';
parent.printResponse('File uploaded successfully.', false);
if (response.redirect) {
location.href = response.redirect;
}
}
};
//Send the reques
xhr.send(data);
};
//This method cancels the upload of a file.
//It sets this.uploadData.aborted to true, which stops the recursive upload script.
//The server then removes the incomplete file from the temp directory, and the html displays an error message.
this.abortFileUpload = function() {
this.uploadData.aborted = true;
var data = 'key=' + this.uploadData.key;
xhr = new XMLHttpRequest();
xhr.open("POST", this.settings.scriptPath + '?' + this.settings.cidReq + '&action=abort', true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if(xhr.readyState == 4) {
var response = JSON.parse(xhr.response);
//If there's an error, call the error method.
if(response.errorStatus !== 0 || xhr.status != 200) {
parent.printResponse(response.errorText, true);
return;
}
parent.printResponse('File upload was cancelled.', true);
}
};
//Send the request
xhr.send(data);
};
//Pause the upload
//Sets this.uploadData.paused to true, which breaks the upload loop.
//The current chunk is still stored in this.uploadData.pauseChunk, so the upload can later be resumed.
//In a production environment, you might want to have a cron job to clean up files that have been paused and never resumed,
//because this method won't delete the file from the temp directory if the user pauses and then leaves the page.
this.pauseUpload = function() {
this.uploadData.paused = true;
this.printResponse('', false);
this.$(this.settings.submitButton).value = 'Resume';
};
//Resume the upload
//Undoes the doings of this.pauseUpload and then re-enters the loop at the last chunk uploaded
this.resumeUpload = function() {
this.uploadData.paused = false;
this.$(this.settings.submitButton).value = 'Pause';
this.sendFile(this.uploadData.pauseChunk);
};
//This method updates a simple progress bar by calculating the percentage of chunks uploaded.
//Also includes a method to calculate the time remaining by taking the average time to upload individual chunks
//and multiplying it by the number of chunks remaining.
this.progressUpdate = function(progress) {
var percent = Math.ceil((progress / this.uploadData.numberOfChunks) * 100);
this.$(this.settings.progressBarField).style.width = percent + '%';
this.$(this.settings.progressBarField).textContent = percent + '%';
//Calculate the estimated time remaining
//Only run this every five chunks, otherwise the time remaining jumps all over the place (see: http://xkcd.com/612/)
if(progress % 5 === 0) {
//Calculate the total time for all of the chunks uploaded so far
this.uploadData.totalTime += (new Date().getTime() - this.uploadData.timeStart);
console.log(this.uploadData.totalTime);
//Estimate the time remaining by finding the average time per chunk upload and
//multiplying it by the number of chunks remaining, then convert into seconds
var timeLeft = Math.ceil((this.uploadData.totalTime / progress) * (this.uploadData.numberOfChunks - progress) / 100);
//Update this.settings.timeRemainingField with the estimated time remaining
this.$(this.settings.timeRemainingField).textContent = timeLeft + ' seconds remaining';
}
};
//Simple response/error handler
this.printResponse = function(responseText, error) {
this.$(this.settings.responseField).textContent = responseText;
this.$(this.settings.timeRemainingField).textContent = '';
if(error === true) {
this.$(this.settings.progressBarField).style.backgroundColor = this.settings.progressBarColorError;
}
};
}

14456
main/inc/lib/javascript/chartjs/Chart.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,198 @@
.chatboxmain {
position: fixed;
width: auto;
z-index: 9000;
bottom: 0px;
right: 20px;
display: block;
}
.chatboxheadmain {
color: #ffffff;
background-color: #000;
min-height: 34px;
padding: 0 10px;
}
#chatboxtitlemain {
font-weight: normal;
float: left;
font-size: 12px;
padding-top: 2px;
cursor: pointer;
}
.user_status_main {
width: 18px;
display: inline;
float: left;
}
.chatbox {
position: fixed;
position: expression("absolute");
width: 320px;
display: none;
z-index: 9000;
}
.chatbox-common {
word-wrap: break-word;
}
.chatboxmessage_me {
background-color: #4080ff;
color: #fff;
width: 80%;
float: right !important;
border-radius: 12px;
padding: 10px;
}
.chatboxmessage {
background-color: #ebedf2;
color: #2a2f35;
width: 80%;
float: left;
border-radius: 12px;
padding: 10px;
}
.chatboxmessagecontent {
}
.chatboxmessage_me .chatboxmessagecontent a {
color: #ffffff;
}
.chatboxcontent {
font-family: arial, sans-serif;
font-size: 13px;
color: #333333;
max-height: 200px;
overflow-y: auto;
overflow-x: auto;
padding: 7px;
border-left: 1px solid #cccccc;
border-right: 1px solid #cccccc;
border-bottom: 1px solid #eeeeee;
background-color: #ffffff;
line-height: 1.3em;
}
.chatboxcontent .alert {
margin-bottom: 0;
}
.user_status {
width: 8px;
display: inline-block;
margin-right: 5px;
}
.chatimage {
display: inline-block;
margin-right: 5px;
}
.chatboxtitle {
font-weight: normal;
display: inline-block;
font-size: 10px;
width: auto;
cursor: pointer;
overflow: hidden;
padding-left: 2px;
text-overflow: ellipsis;
white-space: nowrap;
line-height: 10px;
}
.chatboxhead {
/* background-color: #222; */
padding: 5px;
color: #ffffff;
border-right: 1px solid #222;
border-left: 1px solid #222;
background-color: #222;
background-repeat: repeat-x;
background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));
background-image: -moz-linear-gradient(top, #333333, #222222);
background-image: -ms-linear-gradient(top, #333333, #222222);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));
background-image: -webkit-linear-gradient(top, #333333, #222222);
background-image: -o-linear-gradient(top, #333333, #222222);
background-image: linear-gradient(top, #333333, #222222);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
}
.chatboxblink {
background-color: #FF921F;
border-right: 1px solid #EF7A00;
border-left: 1px solid #EF7A00;
background-repeat: repeat-x;
background-image: -khtml-gradient(linear, left top, left bottom, from(#FF921F), to(#FF921F));
background-image: -moz-linear-gradient(top, #FF921F, #FFAC55);
background-image: -ms-linear-gradient(top, #FF921F, #FF921F);
background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #FF921F), color-stop(100%, #FF921F));
background-image: -webkit-linear-gradient(top, #FF921F, #FF921F);
background-image: -o-linear-gradient(top, #FF921F, #FF921F);
background-image: linear-gradient(top, #FF921F, #FF921F);
}
.chatboxinput {
padding: 5px;
background-color: #ffffff;
border-left: 1px solid #cccccc;
border-right: 1px solid #cccccc;
border-bottom: 1px solid #cccccc;
}
.chatboxtextarea {
width: 300px;
height: 44px;
padding: 3px 0pt 3px 3px;
border: 1px solid #eeeeee;
margin: 1px;
overflow: hidden;
}
.chatboxtextareaselected {
border: 2px solid #f99d39;
margin: 0;
}
.chatboxinfo {
margin-left: -1em;
color: #666666;
}
.chatboxmessagefrom {
font-weight: bold;
}
.chatboxoptions {
float: right;
}
.chatboxoptions a {
text-decoration: none;
color: white;
font-weight: bold;
font-family: Verdana, Arial, "Bitstream Vera Sans", sans-serif;
}
.chatboxoptions a:hover {
background-color: #aaa;
}
.chatbox_checks {
float: right;
}
.chatbox_checked {
color: #13A7F0;
}

View File

@@ -0,0 +1,22 @@
@charset "utf-8";
/*
* CSS Document
* Written by Ryan Yonzon
* http://ryan.rawswift.com/
*/
html, body {
/* FF hack: or we'll have double scrollbar showing on the browser */
/*margin:0px; */
/* hide browser's main scrollbar */
/*overflow:hidden;*/
}
#main_container {
width:100%;
background-color:#ffffff; /* DO NOT REMOVE THIS; or you'll have issue w/ the scrollbar, when the mouse pointer is on a white space */
overflow-x: hidden;
overflow-y: scroll;
height:100%; /* this will make sure that the height will extend at the bottom */
position:absolute; /* container div must be absolute, for our fixed bar to work */
}

View File

@@ -0,0 +1,24 @@
@charset "utf-8";
/*
* CSS Document
* Written by Ryan Yonzon
* http://ryan.rawswift.com/
*/
/*
* IE hack
*/
html, body {
/*margin:0px;*/
/* hide browser's main scrollbar */
/*overflow:hidden; */
/* make sure we'll use 100% of the page's height */
/*height:100%; */
}
#main_container {
width:100%; /* make sure we'll use 100% of page's width */
background-color:#ffffff; /* DO NOT REMOVE THIS; or you'll have issue w/ the scrollbar, when the mouse pointer is on a white space */
overflow-x: hidden;
overflow-y: scroll;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -0,0 +1,950 @@
/*
Copyright (c) 2009 Anant Garg (anantgarg.com | inscripts.com)
This script may be used for non-commercial purposes only. For any
commercial purposes, please contact the author at
anant.garg@inscripts.com
Changes and Chamilo Integration: Julio Montoya <gugli100@gmail.com>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*/
var windowFocus = true;
var username;
var currentUserId;
var chatHeartbeatCount = 0;
var minChatHeartbeat = 4000;
var maxChatHeartbeat = 33000;
var chatHeartbeatTime = minChatHeartbeat;
var originalTitle;
var blinkOrder = 0;
var chatboxFocus = new Array();
var newMessages = new Array();
var newMessagesWin = new Array();
var chatBoxes = new Array();
var intervals = new Array();
var timer;
var user_status = 0;
var widthBox = 320; // see css class .chatbox
//var ajax_url = 'chat.php'; // This variable is loaded in the template/layout/head.tpl file
var doubleCheck = '<span class="chatbox_checked"><i class="fa fa-check"></i><i class="fa fa-check"></i></span>';
var currentToken = '';
function set_user_status(status)
{
if (status == 1) {
stopChatHeartBeat();
startChatHeartBeat();
$('.user_status_main').html(online_button);
$('#chatboxtitlemain').html(connect_lang);
} else {
stopChatHeartBeat();
$('.user_status_main').html(offline_button);
$('#chatboxtitlemain').html(disconnect_lang);
}
$.ajax({
url: ajax_url+"?action=set_status",
data: "status="+status,
cache: false,
success: function(data) {
}
});
user_status = status;
}
$(function() {
originalTitle = document.title;
startChatSession();
$([window, document]).blur(function() {
windowFocus = false;
}).focus(function(){
windowFocus = true;
document.title = originalTitle;
});
/* "On" conditions, divs are created dynamically */
// User name header toggle
$('body').on('click', '#chatboxtitlemain', function() {
createMyContactsWindow();
set_user_status(1);
});
// User name header toogle
$('body').on('click', '.chatboxtitle', function(){
chatbox = $(this).parents(".chatbox");
var chat_id = chatbox.attr('id');
chat_id = chat_id.split('_')[1];
toggleChatBoxGrowth(chat_id);
});
// Minimize button
$('body').on('click', '.chatboxhead .togglelink', function(){
var chat_id = $(this).attr('rel');
toggleChatBoxGrowth(chat_id);
});
// Close button
$('body').on('click', '.chatboxhead .closelink', function(){
var chat_id = $(this).attr('rel');
closeWindow(chat_id);
});
// Close main chat
$('body').on('click', '.chatboxhead .close_chat', function(){
closeChat();
});
});
function showChatConnect()
{
if (user_status == 1) {
button = online_button;
label = connect_lang;
} else {
button = offline_button;
label = disconnect_lang;
}
$("<div />").attr("id","chatmain")
.addClass("chatboxmain")
.html('<div class="chatboxheadmain"><div class="user_status_main">'+button+'</div><div id="chatboxtitlemain">'+label+'</div><div class="chatboxoptions"></div></div>')
.appendTo($( "body" ));
}
/**
* Start chat session
*/
function startChatSession()
{
/* fix bug BT#5728 whereby users cannot move to the next question in IE9 */
if (typeof ajax_url != 'undefined') {
$.ajax({
url: ajax_url+"?action=startchatsession",
cache: false,
dataType: "json",
success: function(data) {
if (data) {
currentToken = data.sec_token;
username = data.me;
currentUserId = data.user_id;
user_status = data.user_status;
showChatConnect();
if (user_status == 1) {
startChatHeartBeat();
} else {
stopChatHeartBeat();
}
$.each(data.items, function(my_user_id, user_items) {
if (currentUserId == my_user_id) {
// show contact list
createMyContactsWindow();
return true;
}
my_items = user_items['items'];
window_user_info = user_items['window_user_info'];
$.each(my_items, function(i, item) {
if (item) {
// fix strange ie bug
if ($("#chatbox_"+my_user_id).length <= 0) {
createChatBox(
my_user_id,
window_user_info.complete_name,
1,
window_user_info.online,
window_user_info.avatar_small
);
}
createChatBubble(my_user_id, item);
}
});
});
for (i = 0; i < chatBoxes.length; i++) {
my_user_id = chatBoxes[i];
$("#chatbox_"+my_user_id+" .chatboxcontent").scrollTop(
$("#chatbox_"+my_user_id+" .chatboxcontent")[0].scrollHeight
);
}
}
}
});
}
}
function stopChatHeartBeat()
{
clearInterval(timer);
timer = null;
}
function startChatHeartBeat()
{
timer = setInterval(chatHeartbeat, chatHeartbeatTime);
}
/*
* Shows the user messages in all windows
*
* Item array structure :
*
* item.s = type of message: 1 = message, 2 = "sent at" string
* item.f = from_user
*
**/
function chatHeartbeat()
{
var itemsfound = 0;
if (windowFocus == false) {
var blinkNumber = 0;
var titleChanged = 0;
for (x in newMessagesWin) {
if (newMessagesWin[x].status == true) {
++blinkNumber;
if (blinkNumber >= blinkOrder) {
//document.title = newMessagesWin[x].username+' says...';
//titleChanged = 1;
break;
}
}
}
if (titleChanged == 0) {
document.title = originalTitle;
blinkOrder = 0;
} else {
++blinkOrder;
}
} else {
for (x in newMessagesWin) {
newMessagesWin[x].status = false;
}
}
for (x in newMessages) {
if (newMessages[x] == true) {
if (chatboxFocus[x] == false) {
//FIXME: add toggle all or none policy, otherwise it looks funny
$('#chatbox_'+x+' .chatboxhead').toggleClass('chatboxblink');
}
}
}
$.ajax({
url: ajax_url+"?action=chatheartbeat",
cache: false,
dataType: "json",
success: function(data) {
$.each(data.items, function(my_user_id, user_items) {
// Each window
my_items = user_items['items'];
userInfo = user_items['window_user_info'];
update_online_user(
my_user_id,
userInfo.user_is_online
);
$.each(my_items, function(i, item) {
if (item) {
// fix strange ie bug
if ($("#chatbox_"+my_user_id).length <= 0) {
createChatBox(
my_user_id,
userInfo.complete_name,
0,
userInfo.online,
userInfo.avatar_small
);
}
if ($("#chatbox_"+my_user_id).css('display') == 'none') {
$("#chatbox_"+my_user_id).css('display','block');
restructureChatBoxes();
}
newMessages[my_user_id] = {'status':true, 'username':item.username};
newMessagesWin[my_user_id]= {'status':true, 'username':item.username};
var chatBubble = createChatBubble(my_user_id, item);
$("#chatbox_"+my_user_id+" .chatboxcontent").scrollTop(
$("#chatbox_"+my_user_id+" .chatboxcontent")[0].scrollHeight
);
if ($('#chatbox_'+my_user_id+' .chatboxcontent').css('display') == 'none') {
$('#chatbox_'+my_user_id+' .chatboxhead').toggleClass('chatboxblink');
}
itemsfound += 1;
}
});
});
chatHeartbeatCount++;
if (itemsfound > 0) {
chatHeartbeatTime = minChatHeartbeat;
chatHeartbeatCount = 1;
} else if (chatHeartbeatCount >= 10) {
chatHeartbeatTime *= 2;
chatHeartbeatCount = 1;
if (chatHeartbeatTime > maxChatHeartbeat) {
chatHeartbeatTime = maxChatHeartbeat;
}
}
}
}); //ajax
}
/**
* Draws a message bubble
* @param my_user_id
* @param item
* @returns {string}
*/
function createChatBubble(my_user_id, item, appendType = 'append')
{
var myDiv = 'chatboxmessage_me';
if (my_user_id == item.from_user_info.id) {
myDiv = 'chatboxmessage';
}
var sentDate = '';
if (moment.unix(item.date).isValid()) {
sentDate = moment.unix(item.date).format('LLL');
}
var check = '';
var unCheckClass = ' check_status';
if (my_user_id != item.from_user_info.id) {
check = '<i class="fa fa-check"></i><i class="fa fa-check"></i>';
if (item.recd == 1) {
unCheckClass = '';
check = doubleCheck;
}
}
var messageObject = $("#chatbox_"+my_user_id+" .chatboxcontent").find('#message_id_' + item.id);
var exists = messageObject.length !== 0;
var messageHeader = '<div id="message_id_'+item.id+'" class="chatbox-common well '+myDiv+'" title="'+sentDate+'" >';
var messageEnd = '</div>';
var message = '';
if (my_user_id == item.from_user_info.id) {
message += '<span class="chatboxmessagefrom">'+item.from_user_info.complete_name+':&nbsp;&nbsp;</span>';
}
message += '<div class="chatboxmessagecontent">'+item.message+'</div>';
message += '<div class="chatbox_checks' + unCheckClass + '">'+check+'</div>';
if (exists) {
messageObject.html(message);
$(messageObject).linkify({
target: "_blank"
});
} else {
message = messageHeader + message + messageEnd;
if (appendType == 'append') {
$("#chatbox_"+my_user_id+" .chatboxcontent").append(message);
} else {
$("#chatbox_"+my_user_id+" .chatboxcontent").prepend(message);
}
$("#chatbox_"+my_user_id+" .chatboxcontent").linkify({
target: "_blank"
});
}
return message;
}
/**
* Disconnect user from chat
*/
function closeChat()
{
$.post(
ajax_url + "?action=close", {},
function (data) {
// Disconnects from chat
set_user_status(0);
// Clean cookies
Cookies.set('chatbox_minimized', new Array());
// Delete all windows
$('.chatbox ').remove();
// Reset variables
chatBoxes = new Array();
intervals = new Array();
}
);
}
function closeWindow(user_id)
{
$('#chatbox_'+user_id).css('display','none');
restructureChatBoxes();
$.post(
ajax_url + "?action=close_window",
{
chatbox: user_id
},
function (data) {
}
);
}
function restructureChatBoxes()
{
var align = 0;
for (x in chatBoxes) {
user_id = chatBoxes[x];
if ($("#chatbox_"+user_id).css('display') != 'none') {
if (align == 0) {
$("#chatbox_"+user_id).css('right', '10px');
} else {
width = (align)*(widthBox+7) + 5 + 5;
$("#chatbox_"+user_id).css('right', width+'px');
}
align++;
}
}
}
/**
* Function that fires the chat with an user (creates a chat bloclk)
* @param int user id
* @param string user's firstname + lastname
* @param status
*
**/
function chatWith(user_id, user_name, status, userImage)
{
set_user_status(1);
createChatBox(user_id, user_name, 0, status, userImage);
$("#chatbox_"+user_id+" .chatboxtextarea").focus();
getMoreItems(user_id, 'last');
}
/**
* Creates a div
*/
function createMyContactsWindow()
{
var user_id = 'contacts';
var oldChatBox = $("#chatbox_"+user_id);
if (oldChatBox.length > 0) {
// reload contact list
if (oldChatBox.css('display') == 'none') {
oldChatBox.css('display','block');
restructureChatBoxes();
}
chatboxContent = oldChatBox.find('.chatboxcontent');
$.post(ajax_url + "?action=get_contacts", {
to: 'user_id'
}, function (data) {
chatboxContent.html(data);
});
$("#chatbox_"+user_id+" .chatboxtextarea").focus();
return;
}
var chatbox = $('<div>')
.attr({
id: 'chatbox_' + user_id
})
.addClass('chatbox')
.css('bottom', 0);
var chatboxHead = $('<div>')
.addClass('chatboxhead')
.append('');
$('<div>')
.addClass('chatboxtitle')
.append(chatLang)
.appendTo(chatboxHead);
var chatboxoptions = $('<div>')
.addClass('chatboxoptions')
.appendTo(chatboxHead);
$('<a>')
.addClass('btn btn-xs togglelink')
.attr({
href: 'javascript:void(0)',
rel: user_id
})
.html('<em class="fa fa-toggle-down"></em>')
.appendTo(chatboxoptions);
$('<a>')
.addClass('btn btn-xs close_chat')
.attr({
href: 'javascript:void(0)',
rel: user_id
})
.html('<em class="fa fa-close"></em>')
.appendTo(chatboxoptions);
$('<br>')
.attr('clear', 'all')
.appendTo(chatboxHead);
var chatboxContent = $('<div>').addClass('chatboxcontent');
var chatboxInput = $('<div>').addClass('chatboxinput');
$.post(ajax_url + "?action=get_contacts", {
to: 'user_id'
}, function (data) {
$('<div>').html(data).appendTo(chatboxContent);
});
chatbox
.append(chatboxHead)
.append(chatboxContent)
.append(chatboxInput)
.appendTo('body');
var chatBoxeslength = 0;
for (x in chatBoxes) {
if ($("#chatbox_"+chatBoxes[x]).css('display') != 'none') {
chatBoxeslength++;
}
}
if (chatBoxeslength == 0) {
$("#chatbox_"+user_id).css('right', '10px');
} else {
width = (chatBoxeslength)*(widthBox+7) + 5 + 5;
$("#chatbox_"+user_id).css('right', width+'px');
}
chatBoxes.push(user_id);
chatboxFocus[user_id] = false;
$("#chatbox_"+user_id+" .chatboxtextarea").blur(function(){
chatboxFocus[user_id] = false;
$("#chatbox_"+user_id+" .chatboxtextarea").removeClass('chatboxtextareaselected');
}).focus(function(){
chatboxFocus[user_id] = true;
newMessages[user_id] = false;
$('#chatbox_'+user_id+' .chatboxhead').removeClass('chatboxblink');
$("#chatbox_"+user_id+" .chatboxtextarea").addClass('chatboxtextareaselected');
});
$("#chatbox_"+user_id).click(function() {
if ($('#chatbox_'+user_id+' .chatboxcontent').css('display') != 'none') {
$("#chatbox_"+user_id+" .chatboxtextarea").focus();
}
});
$("#chatbox_"+user_id).show();
$("#chatbox_"+user_id+" .chatboxcontent").scroll(function () {
var iCurScrollPos = $(this).scrollTop();
if (iCurScrollPos == 0) {
getMoreItems(user_id);
return false;
}
});
minimizedChatBoxes = new Array();
if (Cookies.get('chatbox_minimized')) {
minimizedChatBoxes = Cookies.getJSON('chatbox_minimized');
minimize = 0;
for (j = 0; j < minimizedChatBoxes.length; j++) {
if (minimizedChatBoxes[j] == user_id) {
minimize = 1;
}
}
if (minimize == 1) {
$('.togglelink').html('<em class="fa fa-toggle-up"></em>');
$('#chatbox_'+user_id+' .chatboxcontent').css('display','none');
$('#chatbox_'+user_id+' .chatboxinput').css('display','none');
}
}
}
/**
* Creates a div
*/
function createChatBox(user_id, chatboxtitle, minimizeChatBox, online, userImage)
{
var oldChatBox = $("#chatbox_"+user_id);
if (oldChatBox.length > 0) {
if (oldChatBox.css('display') == 'none') {
oldChatBox.css('display','block');
restructureChatBoxes();
}
$("#chatbox_"+user_id+" .chatboxtextarea").focus();
return;
}
var user_is_online = return_online_user(user_id, online, userImage);
var chatbox = $('<div>')
.attr({
id: 'chatbox_' + user_id
})
.addClass('chatbox')
.css('bottom', 0);
var chatboxHead = $('<div>')
.addClass('chatboxhead')
.append(user_is_online);
$('<div>')
.addClass('chatimage')
.append('<img src="'+userImage+'"/>')
.appendTo(chatboxHead);
$('<div>')
.addClass('chatboxtitle')
.append(chatboxtitle)
.appendTo(chatboxHead);
var chatboxoptions = $('<div>')
.addClass('chatboxoptions')
.appendTo(chatboxHead);
if (!hide_chat_video) {
if (!!Modernizr.prefixed('RTCPeerConnection', window) &&
(online === '1' || online === 1)
) {
/*$('<a>')
.addClass('btn btn-xs ajax')
.attr({
href: ajax_url + '?action=create_room&to=' + user_id
})
.data({
title: '<em class="fa fa-video-camera"></em>',
size: 'sm'
})
.on('click', function () {
$(this).data('title', $('.chatboxtitle').text());
})
.html('<em class="fa fa-video-camera"></em>')
.appendTo(chatboxoptions);*/
}
}
$('<a>')
.addClass('btn btn-xs togglelink')
.attr({
href: 'javascript:void(0)',
rel: user_id
})
.html('<em class="fa fa-toggle-down"></em>')
.appendTo(chatboxoptions);
$('<a>')
.addClass('btn btn-xs closelink')
.attr({
href: 'javascript:void(0)',
rel: user_id
})
.html('<em class="fa fa-close"></em>')
.appendTo(chatboxoptions);
$('<br>')
.attr('clear', 'all')
.appendTo(chatboxHead);
var chatboxContent = $('<div>').addClass('chatboxcontent');
var chatboxInput = $('<div>').addClass('chatboxinput');
$('<textarea>')
.addClass('chatboxtextarea')
.on('keydown', function(e) {
return checkChatBoxInputKey(e.originalEvent, this, user_id);
})
.appendTo(chatboxInput);
chatbox
.append(chatboxHead)
.append(chatboxContent)
.append(chatboxInput)
.appendTo('body');
var chatBoxeslength = 0;
for (x in chatBoxes) {
if ($("#chatbox_"+chatBoxes[x]).css('display') != 'none') {
chatBoxeslength++;
}
}
if (chatBoxeslength == 0) {
$("#chatbox_"+user_id).css('right', '10px');
} else {
width = (chatBoxeslength)*(widthBox+7) + 5 + 5;
$("#chatbox_"+user_id).css('right', width+'px');
}
chatBoxes.push(user_id);
if (minimizeChatBox == 1) {
minimizedChatBoxes = new Array();
if (Cookies.get('chatbox_minimized')) {
minimizedChatBoxes = Cookies.getJSON('chatbox_minimized');
}
minimize = 0;
for (j = 0; j < minimizedChatBoxes.length; j++) {
if (minimizedChatBoxes[j] == user_id) {
minimize = 1;
}
}
if (minimize == 1) {
$('.togglelink').html('<em class="fa fa-toggle-up"></em>');
$('#chatbox_'+user_id+' .chatboxcontent').css('display','none');
$('#chatbox_'+user_id+' .chatboxinput').css('display','none');
}
}
chatboxFocus[user_id] = false;
$("#chatbox_"+user_id+" .chatboxtextarea").blur(function(){
chatboxFocus[user_id] = false;
$("#chatbox_"+user_id+" .chatboxtextarea").removeClass('chatboxtextareaselected');
}).focus(function(){
chatboxFocus[user_id] = true;
newMessages[user_id] = false;
$('#chatbox_'+user_id+' .chatboxhead').removeClass('chatboxblink');
$("#chatbox_"+user_id+" .chatboxtextarea").addClass('chatboxtextareaselected');
});
$("#chatbox_"+user_id).click(function() {
if ($('#chatbox_'+user_id+' .chatboxcontent').css('display') != 'none') {
//$("#chatbox_"+user_id+" .chatboxtextarea").focus();
}
});
$("#chatbox_"+user_id).show();
$("#chatbox_"+user_id+" .chatboxcontent").scroll(function () {
var iCurScrollPos = $(this).scrollTop();
if (iCurScrollPos == 0) {
getMoreItems(user_id);
return false;
}
});
}
/**
* @param int userId
* @param string scrollType
*/
function getMoreItems(userId, scrollType)
{
var visibleMessages = $("#chatbox_"+userId+" .chatboxcontent").find('.chatbox-common').length;
$.ajax({
url: ajax_url+"?action=get_previous_messages&user_id="+userId+"&visible_messages="+visibleMessages,
cache: false,
dataType: "json",
success: function(items) {
items = items.reverse();
$.each(items, function(i, item) {
if (item) {
if ($("#chatbox_"+userId).css('display') == 'none') {
$("#chatbox_"+userId).css('display','block');
restructureChatBoxes();
}
var chatBubble = createChatBubble(userId, item, 'prepend');
if ($('#chatbox_'+userId+' .chatboxcontent').css('display') == 'none') {
$('#chatbox_'+userId+' .chatboxhead').toggleClass('chatboxblink');
}
}
});
}
});
}
/**
* Creates the div user status (green/gray button next to the user name)
* @param int user id
* @param int status 1 or 0
*/
function return_online_user(user_id, status, userImage)
{
var div_wrapper = $("<div />" );
var new_div = $("<div />" );
new_div.attr("id","online_"+user_id);
new_div.attr("class","user_status");
if (status == '1' || status == 1) {
new_div.html(online_button);
} else {
new_div.html(offline_button);
}
div_wrapper.append(new_div);
return div_wrapper.html();
}
/**
* Updates the user status (green/gray button next to the user name)
*/
function update_online_user(user_id, status)
{
if ($("#online_" +user_id).length > 0) {
if (status == 1) {
$("#online_" +user_id).html(online_button);
} else {
$("#online_" +user_id).html(offline_button);
}
}
}
/**
* @param user_id
*/
function toggleChatBoxGrowth(user_id)
{
if ($('#chatbox_'+user_id+' .chatboxcontent').css('display') == 'none') {
// Show box
var minimizedChatBoxes = new Array();
if (Cookies.get('chatbox_minimized')) {
minimizedChatBoxes = Cookies.getJSON('chatbox_minimized');
}
var newCookie = new Array();
for (var i = 0; i < minimizedChatBoxes.length; i++) {
if (minimizedChatBoxes[i] != user_id) {
newCookie.push(minimizedChatBoxes[i]);
}
}
Cookies.set('chatbox_minimized', newCookie);
$('#chatbox_'+user_id+' .chatboxcontent').css('display','block');
$('#chatbox_'+user_id+' .chatboxinput').css('display','block');
$('.togglelink').html('<em class="fa fa-toggle-down"></em>');
} else {
// hide box
if (Cookies.get('chatbox_minimized')) {
newCookie = Cookies.getJSON('chatbox_minimized');
if ($.isArray(newCookie)) {
for (i = 0; i < newCookie.length; i++) {
if (newCookie[i] == user_id) {
newCookie.splice(i, 1);
}
}
newCookie.push(user_id);
} else {
newCookie = new Array();
newCookie.push(user_id);
}
Cookies.set('chatbox_minimized', newCookie);
}
$('#chatbox_'+user_id+' .chatboxcontent').css('display','none');
$('#chatbox_'+user_id+' .chatboxinput').css('display','none');
$('.togglelink').html('<em class="fa fa-toggle-up"></em>');
}
}
function checkMessageStatus(messageId, chatBox)
{
$.ajax({
type: 'GET',
dataType: 'json',
url: ajax_url + "?action=get_message_status",
data: {
message_id: messageId
},
success: function (messageInfo) {
if (messageInfo) {
if (messageInfo.recd == 1) {
$('#message_id_' + messageId + ' .chatbox_checks ').html(doubleCheck);
clearInterval(intervals[messageId]);
}
}
}
});
}
/**
* Sending message
* @param event
* @param chatboxtextarea
* @param user_id
* @returns {boolean}
*/
function checkChatBoxInputKey(event, chatboxtextarea, user_id)
{
if(event.keyCode == 13 && event.shiftKey == 0) {
message = $(chatboxtextarea).val();
message = message.replace(/^\s+|\s+$/g,"");
$(chatboxtextarea).val('');
$(chatboxtextarea).focus();
$(chatboxtextarea).css('height','44px');
if (message != '') {
$.post(ajax_url + "?action=sendchat", {
to: user_id,
message: message,
chat_sec_token: currentToken
}, function (messageId) {
if (messageId.id > 0) {
currentToken = messageId.sec_token;
message = message.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\"/g, "&quot;");
var item = {
from_user_info : {id: currentUserId, complete_name: 'me'},
username: username,
date: moment().unix(),
f: currentUserId,
message: message,
id: messageId.id
};
createChatBubble(user_id, item);
$("#chatbox_" + user_id + " .chatboxcontent").scrollTop(
$("#chatbox_" + user_id + " .chatboxcontent")[0].scrollHeight
);
intervals[messageId.id] = setInterval(checkMessageStatus, chatHeartbeatTime, messageId.id);
} else {
$("#chatbox_" + user_id + " .chatboxcontent").
append('<i class="fa fa-exclamation-triangle" aria-hidden="true"></i><br />');
}
});
}
chatHeartbeatTime = minChatHeartbeat;
chatHeartbeatCount = 1;
return false;
}
var adjustedHeight = chatboxtextarea.clientHeight;
var maxHeight = 94;
if (maxHeight > adjustedHeight) {
adjustedHeight = Math.max(chatboxtextarea.scrollHeight, adjustedHeight);
if (maxHeight)
adjustedHeight = Math.min(maxHeight, adjustedHeight);
if (adjustedHeight > chatboxtextarea.clientHeight)
$(chatboxtextarea).css('height',adjustedHeight+8 +'px');
} else {
$(chatboxtextarea).css('overflow','auto');
}
}

View File

@@ -0,0 +1,66 @@
<?php
/* For licensing terms, see /license.txt */
require_once __DIR__.'/../../../global.inc.php';
if (api_is_anonymous()) {
api_not_allowed(true);
}
$roomId = isset($_GET['room']) ? $_GET['room'] : null;
$entityManager = Database::getManager();
$chatVideo = $entityManager->find('ChamiloCoreBundle:ChatVideo', $roomId);
if (!$chatVideo) {
header('Location: '.api_get_path(WEB_PATH));
exit;
}
$friend_html = SocialManager::listMyFriendsBlock($user_id, '', false);
$isSender = $chatVideo->getFromUser() === api_get_user_id();
$isReceiver = $chatVideo->getToUser() === api_get_user_id();
if (!$isSender && !$isReceiver) {
header('Location: '.api_get_path(WEB_PATH));
exit;
}
if ($isSender) {
$chatUser = api_get_user_info($chatVideo->getToUser());
} elseif ($isReceiver) {
$chatUser = api_get_user_info($chatVideo->getFromUser());
}
$idUserLocal = api_get_user_id();
$userLocal = api_get_user_info($idUserLocal, true);
$htmlHeadXtra[] = '<script type="text/javascript" src="'
. api_get_path(WEB_PUBLIC_PATH).'assets/simpleWebRTC/latest-v2.js'
. '"></script>' . "\n";
$navigator = api_get_navigator();
Display::addFlash(
Display::return_message(get_lang('FeatureDisabledBecauseOfUnmaintainedThirdPartyLibraries'), 'error')
);
$template = new Template();
$template->assign('room_name', $chatVideo->getRoomName());
$template->assign('chat_user', $chatUser);
$template->assign('user_local', $userLocal);
$template->assign('block_friends', $friend_html);
$template->assign('navigator_is_firefox', $navigator['name'] == 'Mozilla');
$tpl = $template->get_template('chat/video.tpl');
$content = $template->fetch($tpl);
$templateHeader = Display::returnFontAwesomeIcon('video-camera', 'lg', true)
. $chatVideo->getRoomName();
$template->assign('header', $templateHeader);
$template->assign('content', $content);
$template->assign(
'message',
Display::return_message(get_lang('YourBroswerDoesNotSupportWebRTC'), 'warning')
);
$template->display_one_col_template();

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 B

View File

@@ -0,0 +1,450 @@
/*!
Chosen, a Select Box Enhancer for jQuery and Prototype
by Patrick Filler for Harvest, http://getharvest.com
Version 1.4.0
Full source at https://github.com/harvesthq/chosen
Copyright (c) 2011-2015 Harvest http://getharvest.com
MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
This file is generated by `grunt build`, do not edit it by hand.
*/
/* @group Base */
.chosen-container {
position: relative;
display: inline-block;
vertical-align: middle;
font-size: 13px;
zoom: 1;
*display: inline;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.chosen-container * {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.chosen-container .chosen-drop {
position: absolute;
top: 100%;
left: -9999px;
z-index: 1010;
width: 100%;
border: 1px solid #aaa;
border-top: 0;
background: #fff;
box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
}
.chosen-container.chosen-with-drop .chosen-drop {
left: 0;
}
.chosen-container a {
cursor: pointer;
}
.chosen-container .search-choice .group-name, .chosen-container .chosen-single .group-name {
margin-right: 4px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: normal;
color: #999999;
}
.chosen-container .search-choice .group-name:after, .chosen-container .chosen-single .group-name:after {
content: ":";
padding-left: 2px;
vertical-align: top;
}
/* @end */
/* @group Single Chosen */
.chosen-container-single .chosen-single {
position: relative;
display: block;
overflow: hidden;
padding: 0 0 0 8px;
height: 35px;
border: 1px solid #aaa;
border-radius: 5px;
background-color: #fff;
background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
background-clip: padding-box;
box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
color: #444;
text-decoration: none;
white-space: nowrap;
line-height: 30px;
}
.chosen-container-single .chosen-default {
color: #999;
}
.chosen-container-single .chosen-single span {
display: block;
overflow: hidden;
margin-right: 26px;
text-overflow: ellipsis;
white-space: nowrap;
}
.chosen-container-single .chosen-single-with-deselect span {
margin-right: 38px;
}
.chosen-container-single .chosen-single abbr {
position: absolute;
top: 6px;
right: 26px;
display: block;
width: 12px;
height: 12px;
background: url('chosen-sprite.png') -42px 1px no-repeat;
font-size: 1px;
}
.chosen-container-single .chosen-single abbr:hover {
background-position: -42px -10px;
}
.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
background-position: -42px -10px;
}
.chosen-container-single .chosen-single div {
position: absolute;
top: 0;
right: 0;
display: block;
width: 18px;
height: 100%;
}
.chosen-container-single .chosen-single div b {
display: block;
width: 100%;
height: 100%;
background: url('chosen-sprite.png') no-repeat 0px 7px;
}
.chosen-container-single .chosen-search {
position: relative;
z-index: 1010;
margin: 0;
padding: 3px 4px;
white-space: nowrap;
}
.chosen-container-single .chosen-search input[type="text"] {
margin: 1px 0;
padding: 4px 20px 4px 5px;
width: 100%;
height: auto;
outline: 0;
border: 1px solid #aaa;
background: white url('chosen-sprite.png') no-repeat 100% -20px;
background: url('chosen-sprite.png') no-repeat 100% -20px;
font-size: 1em;
font-family: sans-serif;
line-height: normal;
border-radius: 0;
}
.chosen-container-single .chosen-drop {
margin-top: -1px;
border-radius: 0 0 4px 4px;
background-clip: padding-box;
}
.chosen-container-single.chosen-container-single-nosearch .chosen-search {
position: absolute;
left: -9999px;
}
/* @end */
/* @group Results */
.chosen-container .chosen-results {
color: #444;
position: relative;
overflow-x: hidden;
overflow-y: auto;
margin: 0;
padding: 0;
max-height: 240px;
-webkit-overflow-scrolling: touch;
}
.chosen-container .chosen-results li {
display: none;
margin: 0;
padding: 5px 6px;
list-style: none;
line-height: 15px;
word-wrap: break-word;
-webkit-touch-callout: none;
}
.chosen-container .chosen-results li.active-result {
display: list-item;
cursor: pointer;
}
.chosen-container .chosen-results li.disabled-result {
display: list-item;
color: #ccc;
cursor: default;
}
.chosen-container .chosen-results li.highlighted {
background-color: #3875d7;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
color: #fff;
}
.chosen-container .chosen-results li.no-results {
color: #777;
display: list-item;
background: #f4f4f4;
}
.chosen-container .chosen-results li.group-result {
display: list-item;
font-weight: bold;
cursor: default;
}
.chosen-container .chosen-results li.group-option {
padding-left: 15px;
}
.chosen-container .chosen-results li em {
font-style: normal;
text-decoration: underline;
}
/* @end */
/* @group Multi Chosen */
.chosen-container-multi .chosen-choices {
position: relative;
overflow: hidden;
margin: 0;
padding: 0 5px;
width: 100%;
height: auto !important;
height: 1%;
border: 1px solid #aaa;
background-color: #fff;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
cursor: text;
}
.chosen-container-multi .chosen-choices li {
float: left;
list-style: none;
}
.chosen-container-multi .chosen-choices li.search-field {
margin: 0;
padding: 0;
white-space: nowrap;
}
.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
margin: 1px 0;
padding: 0;
height: 25px;
outline: 0;
border: 0 !important;
background: transparent !important;
box-shadow: none;
color: #999;
font-size: 100%;
font-family: sans-serif;
line-height: normal;
border-radius: 0;
}
.chosen-container-multi .chosen-choices li.search-choice {
position: relative;
margin: 3px 5px 3px 0;
padding: 3px 20px 3px 5px;
border: 1px solid #aaa;
max-width: 100%;
border-radius: 3px;
background-color: #eeeeee;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-size: 100% 19px;
background-repeat: repeat-x;
background-clip: padding-box;
box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
color: #333;
line-height: 13px;
cursor: default;
}
.chosen-container-multi .chosen-choices li.search-choice span {
word-wrap: break-word;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
position: absolute;
top: 4px;
right: 3px;
display: block;
width: 12px;
height: 12px;
background: url('chosen-sprite.png') -42px 1px no-repeat;
font-size: 1px;
}
.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
background-position: -42px -10px;
}
.chosen-container-multi .chosen-choices li.search-choice-disabled {
padding-right: 5px;
border: 1px solid #ccc;
background-color: #e4e4e4;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
color: #666;
}
.chosen-container-multi .chosen-choices li.search-choice-focus {
background: #d4d4d4;
}
.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
background-position: -42px -10px;
}
.chosen-container-multi .chosen-results {
margin: 0;
padding: 0;
}
.chosen-container-multi .chosen-drop .result-selected {
display: list-item;
color: #ccc;
cursor: default;
}
/* @end */
/* @group Active */
.chosen-container-active .chosen-single {
border: 1px solid #5897fb;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.chosen-container-active.chosen-with-drop .chosen-single {
border: 1px solid #aaa;
-moz-border-radius-bottomright: 0;
border-bottom-right-radius: 0;
-moz-border-radius-bottomleft: 0;
border-bottom-left-radius: 0;
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
box-shadow: 0 1px 0 #fff inset;
}
.chosen-container-active.chosen-with-drop .chosen-single div {
border-left: none;
background: transparent;
}
.chosen-container-active.chosen-with-drop .chosen-single div b {
background-position: -18px 7px;
}
.chosen-container-active .chosen-choices {
border: 1px solid #5897fb;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
}
.chosen-container-active .chosen-choices li.search-field input[type="text"] {
color: #222 !important;
}
/* @end */
/* @group Disabled Support */
.chosen-disabled {
opacity: 0.5 !important;
cursor: default;
}
.chosen-disabled .chosen-single {
cursor: default;
}
.chosen-disabled .chosen-choices .search-choice .search-choice-close {
cursor: default;
}
/* @end */
/* @group Right to Left */
.chosen-rtl {
text-align: right;
}
.chosen-rtl .chosen-single {
overflow: visible;
padding: 0 8px 0 0;
}
.chosen-rtl .chosen-single span {
margin-right: 0;
margin-left: 26px;
direction: rtl;
}
.chosen-rtl .chosen-single-with-deselect span {
margin-left: 38px;
}
.chosen-rtl .chosen-single div {
right: auto;
left: 3px;
}
.chosen-rtl .chosen-single abbr {
right: auto;
left: 26px;
}
.chosen-rtl .chosen-choices li {
float: right;
}
.chosen-rtl .chosen-choices li.search-field input[type="text"] {
direction: rtl;
}
.chosen-rtl .chosen-choices li.search-choice {
margin: 3px 5px 3px 0;
padding: 3px 5px 3px 19px;
}
.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
right: auto;
left: 4px;
}
.chosen-rtl.chosen-container-single-nosearch .chosen-search,
.chosen-rtl .chosen-drop {
left: 9999px;
}
.chosen-rtl.chosen-container-single .chosen-results {
margin: 0 0 4px 4px;
padding: 0 4px 0 0;
}
.chosen-rtl .chosen-results li.group-option {
padding-right: 15px;
padding-left: 0;
}
.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
border-right: none;
}
.chosen-rtl .chosen-search input[type="text"] {
padding: 4px 5px 4px 20px;
background: white url('chosen-sprite.png') no-repeat -30px -20px;
background: url('chosen-sprite.png') no-repeat -30px -20px;
direction: rtl;
}
.chosen-rtl.chosen-container-single .chosen-single div b {
background-position: 6px 2px;
}
.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
background-position: -12px 2px;
}
/* @end */
/* @group Retina compatibility */
@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi), only screen and (min-resolution: 1.5dppx) {
.chosen-rtl .chosen-search input[type="text"],
.chosen-container-single .chosen-single abbr,
.chosen-container-single .chosen-single div b,
.chosen-container-single .chosen-search input[type="text"],
.chosen-container-multi .chosen-choices .search-choice .search-choice-close,
.chosen-container .chosen-results-scroll-down span,
.chosen-container .chosen-results-scroll-up span {
background-image: url('chosen-sprite@2x.png') !important;
background-size: 52px 37px !important;
background-repeat: no-repeat !important;
}
}
/* @end */

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,64 @@
<?php
/* For licensing terms, see /license.txt */
use Chamilo\CoreBundle\Component\Utils\ChamiloApi;
require_once __DIR__.'/../../../global.inc.php';
$moreButtonsInMaximizedMode = false;
if (api_get_setting('more_buttons_maximized_mode') === 'true') {
$moreButtonsInMaximizedMode = true;
}
$template = new Template();
$template->assign(
'bootstrap_css',
api_get_path(WEB_PUBLIC_PATH).'assets/bootstrap/dist/css/bootstrap.min.css'
);
$template->assign(
'font_awesome_css',
api_get_path(WEB_PUBLIC_PATH).'assets/fontawesome/css/font-awesome.min.css'
);
$template->assign(
'css_editor',
ChamiloApi::getEditorBlockStylePath()
);
$template->assign('moreButtonsInMaximizedMode', $moreButtonsInMaximizedMode);
$courseId = api_get_course_int_id();
$courseCondition = '';
if (!empty($courseId)) {
$courseCondition = api_get_cidreq();
}
$template->assign('course_condition', $courseCondition);
$languageList = api_get_languages();
$list = [];
foreach ($languageList['all'] as $language) {
$list[] = $language['isocode'].':'.$language['original_name'];
}
$template->assign('language_list', implode("','", $list));
$enterMode = api_get_configuration_value('ck_editor_enter_mode_value');
if (!empty($enterMode)) {
$template->assign('enter_mode', $enterMode);
}
$fontNames = [];
foreach (api_get_configuration_sub_value('ck_editor_font_names/names', [
'Arial' => 'Arial, Helvetica, sans-serif',
'Comic Sans MS' => 'Comic Sans MS, cursive',
'Courier New' => 'Courier New, Courier, monospace',
'Georgia' => 'Georgia, serif',
'Lucida Sans Unicode' => 'Lucida Sans Unicode, Lucida Grande, sans-serif',
'Tahoma' => 'Tahoma, Geneva, sans-serif',
'Times New Roman' => 'Times New Roman, Times, serif',
'Trebuchet MS' => 'Trebuchet MS, Helvetica, sans-serif',
'Verdana' => 'Verdana, Geneva, sans-serif',
]) as $label => $value) {
$fontNames[] = "$label/$value";
}
$template->assign('font_names', join(';', $fontNames));
header('Content-type: application/x-javascript');
$template->display($template->get_template('javascript/editor/ckeditor/config_js.tpl'));

View File

@@ -0,0 +1,255 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--
* Chamilo LMS
*
* Copyright (c) 2009-2010 Ivan Tcholakov <ivantcholakov@gmail.com>
* Copyright (c) 2009 Dokeos SPRL
*
* License:
* GNU Lesser General Public License, Version 3, 29 June 2007
* by Free Software Foundation, Inc. (http://www.gnu.org/licenses/lgpl.html)
-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>AsciiMath Editor</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex, nofollow" />
<script type="text/javascript">
document.write( '<scr' + 'ipt type="text/javascript" src="' + window.parent.frameElement._DialogArguments.Editor.FCKConfig.ScriptASCIIMathML + '"><\/scr' + 'ipt>' ) ;
</script>
<script src="../../dialog/common/fck_dialog_common.js" type="text/javascript"></script>
<script src="fck_asciimath.js" type="text/javascript"></script>
<script type="text/javascript">
document.write( FCKTools.GetStyleHtml( GetCommonDialogCss() ) ) ;
</script>
<style type="text/css">
body, td, input, textarea, select, label, button { font-family: Arial, Verdana, Geneva, helvetica, sans-serif; font-size: 11px; }
form { padding: 0px; margin: 0px; }
form p { margin-top: 5px; margin-bottom: 5px; }
#clickInput
{
width: 100%;
border-collapse: collapse;
background-color: white;
text-align: center;
}
#clickInput td
{
border: 1px solid gray;
font-size: 1.1em;
cursor: pointer;
}
#clickInput img {
cursor: pointer;
}
#inputText, #outputNode
{
padding: 5px;
background-color: white;
width: 98%;
height: 80px;
font-size: 1.3em;
border: 1px solid darkgrey;
overflow: auto;
}
.Hand
{
cursor: pointer;
cursor: hand;
}
</style>
</head>
<body scroll="no" style="overflow: hidden;">
<!--
Table modified from CharacterMap for ASCIIMathML by Peter Jipsen
HTMLSource based on HTMLArea XTD 1.5 (http://mosforge.net/projects/htmlarea3xtd/) modified by Holger Hees
Original Author - Bernhard Pfeifer novocaine@gmx.net
-->
<table id="clickInput">
<tr>
<td colspan="3" class="Hand" title="(x+1)/(x-1)" onclick="javascript: Set('(x+1)/(x-1)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/x1x1.png" /></td>
<td colspan="2" class="Hand" title="x^(m+n)" onclick="javascript: Set('x^(m+n)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/xmn.png" /></td>
<td colspan="2" class="Hand" title="x_(mn)" onclick="javascript: Set('x_(mn)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/x_mn.png" /></td>
<td colspan="2" class="Hand" title="sqrt(x)" onclick="javascript: Set('sqrt(x)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sqrtx.png" /></td>
<td colspan="3" class="Hand" title="root(n)(x)" onclick="javascript: Set('root(n)(x)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rootnx.png" /></td>
<td colspan="3" class="Hand" title="{(1 if x&gt;=0),(0 if x&lt;0):}" onclick="javascript: Set('{(1 if x&gt;=0),(0 if x&lt;0):}');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ifx.png" /></td>
<td colspan="2" class="Hand" title="&quot;text&quot;" onclick="javascript: Set('&quot;text&quot;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/text.png" /></td>
</tr><tr>
<td colspan="2" class="Hand" title="dy/dx" onclick="javascript: Set('dy/dx');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/dydx.png" /></td>
<td colspan="3" class="Hand" title="lim_(x-&gt;oo)" onclick="javascript: Set('lim_(x-&gt;oo)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/lim.png" /></td>
<td colspan="3" class="Hand" title="sum_(n=1)^oo" onclick="javascript: Set('sum_(n=1)^oo');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sumn.png" /></td>
<td colspan="3" class="Hand" title="int_a^bf(x)dx" onclick="javascript: Set('int_a^bf(x)dx');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/intab.png" /></td>
<td colspan="3" class="Hand" title="[[a,b],[c,d]]" onclick="javascript: Set('[[a,b],[c,d]]');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/abcd.png" /></td>
<td colspan="2" class="Hand" title="((n),(k))" onclick="javascript: Set('((n),(k))');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/nk.png" /></td>
</tr><tr>
<td class="Hand" title="*" onclick="javascript: Set('*');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/dot.png" /></td>
<td class="Hand" title="**" onclick="javascript: Set('**');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/star.png" /></td>
<td class="Hand" title="//" onclick="javascript: Set('//');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/slash.png" /></td>
<td class="Hand" title="\\" onclick="javascript: Set('\\\\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/backslash.png" /></td>
<td class="Hand" title="xx" onclick="javascript: Set('xx');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/times.png" /></td>
<td class="Hand" title="-:" onclick="javascript: Set('-:');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/div.png" /></td>
<td class="Hand" title="@" onclick="javascript: Set('@');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/circ.png" /></td>
<td class="Hand" title="o+" onclick="javascript: Set('o+');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/oplus.png" /></td>
<td class="Hand" title="ox" onclick="javascript: Set('ox');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/otimes.png" /></td>
<td class="Hand" title="o." onclick="javascript: Set('o.');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/odot.png" /></td>
<td class="Hand" title="sum" onclick="javascript: Set('sum');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sum.png" /></td>
<td class="Hand" title="prod" onclick="javascript: Set('prod');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/prod.png" /></td>
<td class="Hand" title="^^" onclick="javascript: Set('^^');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/wedge.png" /></td>
<td class="Hand" title="^^^" onclick="javascript: Set('^^^');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bigwedge.png" /></td>
<td class="Hand" title="vv" onclick="javascript: Set('vv');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/vee.png" /></td>
<td class="Hand" title="vvv" onclick="javascript: Set('vvv');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bigvee.png" /></td>
</tr><tr>
<td class="Hand" title="!=" onclick="javascript: Set('!=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ne.png" /></td>
<td class="Hand" title="&lt;=" onclick="javascript: Set('&lt;=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/le.png" /></td>
<td class="Hand" title="&gt;=" onclick="javascript: Set('&gt;=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ge.png" /></td>
<td class="Hand" title="-&lt;" onclick="javascript: Set('-&lt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/prec.png" /></td>
<td class="Hand" title="&gt;-" onclick="javascript: Set('&gt;-');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/succ.png" /></td>
<td class="Hand" title="in" onclick="javascript: Set('in');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/in.png" /></td>
<td class="Hand" title="!in" onclick="javascript: Set('!in');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/notin.png" /></td>
<td class="Hand" title="sub" onclick="javascript: Set('sub');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/subset.png" /></td>
<td class="Hand" title="sup" onclick="javascript: Set('sup');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/supset.png" /></td>
<td class="Hand" title="sube" onclick="javascript: Set('sube');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/subseteq.png" /></td>
<td class="Hand" title="supe" onclick="javascript: Set('supe');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/supseteq.png" /></td>
<td class="Hand" title="O/" onclick="javascript: Set('O/');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/emptyset.png" /></td>
<td class="Hand" title="nn" onclick="javascript: Set('nn');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cap.png" /></td>
<td class="Hand" title="nnn" onclick="javascript: Set('nnn');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bigcap.png" /></td>
<td class="Hand" title="uu" onclick="javascript: Set('uu');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cup.png" /></td>
<td class="Hand" title="uuu" onclick="javascript: Set('uuu');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bigcup.png" /></td>
</tr><tr>
<td class="Hand" title="and" onclick="javascript: Set('and');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/text_and.png" /></td>
<td class="Hand" title="or" onclick="javascript: Set('or');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/text_or.png" /></td>
<td class="Hand" title="not" onclick="javascript: Set('not');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/not.png" /></td>
<td class="Hand" title="=&gt;" onclick="javascript: Set('=&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rightarrow.png" /></td>
<td class="Hand" title="if" onclick="javascript: Set('if');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/if.png" /></td>
<td class="Hand" title="&lt;=&gt;" onclick="javascript: Set('&lt;=&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/leftrightarrow.png" /></td>
<td class="Hand" title="AA" onclick="javascript: Set('AA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/forall.png" /></td>
<td class="Hand" title="EE" onclick="javascript: Set('EE');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/exists.png" /></td>
<td class="Hand" title="_|_" onclick="javascript: Set('_|_');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bot.png" /></td>
<td class="Hand" title="TT" onclick="javascript: Set('TT');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/top.png" /></td>
<td class="Hand" title="|--" onclick="javascript: Set('|--');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/vdash.png" /></td>
<td class="Hand" title="|==" onclick="javascript: Set('|==');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/models.png" /></td>
<td class="Hand" title="-=" onclick="javascript: Set('-=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/equiv.png" /></td>
<td class="Hand" title="~=" onclick="javascript: Set('~=');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cong.png" /></td>
<td class="Hand" title="~~" onclick="javascript: Set('~~');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/approx.png" /></td>
<td class="Hand" title="prop" onclick="javascript: Set('prop');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/propto.png" /></td>
</tr><tr>
<td class="Hand" title="int" onclick="javascript: Set('int');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/int.png" /></td>
<td class="Hand" title="oint" onclick="javascript: Set('oint');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/oint.png" /></td>
<td class="Hand" title="del" onclick="javascript: Set('del');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/partial.png" /></td>
<td class="Hand" title="grad" onclick="javascript: Set('grad');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/nabla.png" /></td>
<td class="Hand" title="+-" onclick="javascript: Set('+-');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/pm.png" /></td>
<td class="Hand" title="oo" onclick="javascript: Set('oo');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/infty.png" /></td>
<td class="Hand" title="A\ B (space between A and B)" onclick="javascript: Set('A\\ B');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/space.png" /></td>
<td class="Hand" title="AquadB (double space between A and B)" onclick="javascript: Set('AquadB');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/quad.png" /></td>
<td class="Hand" title="diamond" onclick="javascript: Set('diamond');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/diamond.png" /></td>
<td class="Hand" title="square" onclick="javascript: Set('square');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/square.png" /></td>
<td class="Hand" title="|__" onclick="javascript: Set('|__');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/lfloor.png" /></td>
<td class="Hand" title="__|" onclick="javascript: Set('__|');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rfloor.png" /></td>
<td class="Hand" title="|~" onclick="javascript: Set('|~');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/lceil.png" /></td>
<td class="Hand" title="~|" onclick="javascript: Set('~|');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rceil.png" /></td>
<td class="Hand" title="&lt;&lt;x&gt;&gt;" onclick="javascript: Set('&lt;&lt;x&gt;&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/braxcket.png" /></td>
<td class="Hand" title="/_" onclick="javascript: Set('/_');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/angle.png" /></td>
</tr><tr>
<td class="Hand" title="uarr" onclick="javascript: Set('uarr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/uarr.png" /></td>
<td class="Hand" title="darr" onclick="javascript: Set('darr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/darr.png" /></td>
<td class="Hand" title="larr" onclick="javascript: Set('larr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/larr.png" /></td>
<td class="Hand" title="-&gt;" onclick="javascript: Set('-&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rarr.png" /></td>
<td class="Hand" title="|-&gt;" onclick="javascript: Set('|-&gt;');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/mapsto.png" /></td>
<td class="Hand" title="harr" onclick="javascript: Set('harr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/harr.png" /></td>
<td class="Hand" title="lArr" onclick="javascript: Set('lArr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/llarr.png" /></td>
<td class="Hand" title="rArr" onclick="javascript: Set('rArr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rrarr.png" /></td>
<td class="Hand" title="hArr" onclick="javascript: Set('hArr');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/hharr.png" /></td>
<td class="Hand" title="hata" onclick="javascript: Set('hata');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/hata.png" /></td>
<td class="Hand" title="ula" onclick="javascript: Set('ula');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ula.png" /></td>
<td class="Hand" title="dota" onclick="javascript: Set('dota');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/dota.png" /></td>
<td class="Hand" title="ddota" onclick="javascript: Set('ddota');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ddota.png" /></td>
<td class="Hand" title="veca" onclick="javascript: Set('veca');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/veca.png" /></td>
<td class="Hand" title="bara" onclick="javascript: Set('bara');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bara.png" /></td>
<td class="Hand" title=":." onclick="javascript: Set(':.');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/therefore.png" /></td>
</tr><tr>
<td class="Hand" title="NN" onclick="javascript: Set('NN');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/nn.png" /></td>
<td class="Hand" title="ZZ" onclick="javascript: Set('ZZ');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/zz.png" /></td>
<td class="Hand" title="QQ" onclick="javascript: Set('QQ');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/qq.png" /></td>
<td class="Hand" title="RR" onclick="javascript: Set('RR');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rr.png" /></td>
<td class="Hand" title="CC" onclick="javascript: Set('CC');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cc.png" /></td>
<td class="Hand" title="bbA" onclick="javascript: Set('bbA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bba.png" /></td>
<td class="Hand" title="bbbA" onclick="javascript: Set('bbbA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/bbba.png" /></td>
<td class="Hand" title="ccA" onclick="javascript: Set('ccA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/cca.png" /></td>
<td class="Hand" title="frA" onclick="javascript: Set('frA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/fra.png" /></td>
<td class="Hand" title="sfA" onclick="javascript: Set('sfA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sfa.png" /></td>
<td class="Hand" title="ttA" onclick="javascript: Set('ttA');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/tta.png" /></td>
<td colspan="3" class="Hand" title="stackrel(-&gt;)(+)" onclick="javascript: Set('stackrel(-&gt;)(+)');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/stackrel.png" /></td>
<td class="Hand" title="aleph" onclick="javascript: Set('aleph');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/aleph.png" /></td>
<td class="Hand" title="upsilon" onclick="javascript: Set('upsilon');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/upsilon.png" /></td>
</tr><tr>
<td class="Hand" title="alpha" onclick="javascript: Set('alpha');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/alpha.png" /></td>
<td class="Hand" title="beta" onclick="javascript: Set('beta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/beta.png" /></td>
<td class="Hand" title="gamma" onclick="javascript: Set('gamma');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/gamma.png" /></td>
<td class="Hand" title="Gamma" onclick="javascript: Set('Gamma');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ggamma.png" /></td>
<td class="Hand" title="delta" onclick="javascript: Set('delta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/delta.png" /></td>
<td class="Hand" title="Delta" onclick="javascript: Set('Delta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ddelta.png" /></td>
<td class="Hand" title="epsi" onclick="javascript: Set('epsi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/epsilon.png" /></td>
<td class="Hand" title="zeta" onclick="javascript: Set('zeta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/zeta.png" /></td>
<td class="Hand" title="eta" onclick="javascript: Set('eta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/eta.png" /></td>
<td class="Hand" title="theta" onclick="javascript: Set('theta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/theta.png" /></td>
<td class="Hand" title="Theta" onclick="javascript: Set('Theta');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ttheta.png" /></td>
<td class="Hand" title="iota" onclick="javascript: Set('iota');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/iota.png" /></td>
<td class="Hand" title="kappa" onclick="javascript: Set('kappa');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/kappa.png" /></td>
<td class="Hand" title="lambda" onclick="javascript: Set('lambda');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/lambda.png" /></td>
<td class="Hand" title="Lambda" onclick="javascript: Set('Lambda');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/llambda.png" /></td>
<td class="Hand" title="mu" onclick="javascript: Set('mu');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/mu.png" /></td>
</tr><tr>
<td class="Hand" title="nu" onclick="javascript: Set('nu');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/nu.png" /></td>
<td class="Hand" title="pi" onclick="javascript: Set('pi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/pi.png" /></td>
<td class="Hand" title="Pi" onclick="javascript: Set('Pi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ppi.png" /></td>
<td class="Hand" title="rho" onclick="javascript: Set('rho');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/rho.png" /></td>
<td class="Hand" title="sigma" onclick="javascript: Set('sigma');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/sigma.png" /></td>
<td class="Hand" title="Sigma" onclick="javascript: Set('Sigma');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ssigma.png" /></td>
<td class="Hand" title="tau" onclick="javascript: Set('tau');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/tau.png" /></td>
<td class="Hand" title="xi" onclick="javascript: Set('xi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/xi.png" /></td>
<td class="Hand" title="Xi" onclick="javascript: Set('Xi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/xxi.png" /></td>
<td class="Hand" title="phi" onclick="javascript: Set('phi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/phi.png" /></td>
<td class="Hand" title="Phi" onclick="javascript: Set('Phi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/pphi.png" /></td>
<td class="Hand" title="chi" onclick="javascript: Set('chi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/chi.png" /></td>
<td class="Hand" title="psi" onclick="javascript: Set('psi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/psi.png" /></td>
<td class="Hand" title="Psi" onclick="javascript: Set('Psi');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/ppsi.png" /></td>
<td class="Hand" title="omega" onclick="javascript: Set('omega');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/omega.png" /></td>
<td class="Hand" title="Omega" onclick="javascript: Set('Omega');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="images/oomega.png" /></td>
</tr>
</table>
<form action="javascript: void(0);">
<table style="width: 100%; border: none;">
<tr>
<td style="width:50%;" nowrap="nowrap"><span fckLang="DlgAsciiMathInput">Input</span>&nbsp;&nbsp;<input id="clear" type="button" fckLang="DlgAsciiMathClear" onclick="javascript: Clear();" style="width: 100px; font-size: 10px;" value="Clear" />&nbsp;&nbsp;<input id="delete" type="button" fckLang="DlgAsciiMathDelete" onclick="javascript: Delete();" style="width: 100px; font-size: 10px;" value="Delete" />&nbsp;&nbsp;</td>
<td style="width:50%;"><input id="show_mathml" type="button" fckLang="DlgAsciiMathShowMathML" onclick="javascript: ShowMathML();" style="float: right; font-size: 10px; display: none;" value="Show MathML" /><span fckLang="DlgAsciiMathPreview">Preview</span></td>
</tr>
</table>
<table style="width: 100%; border: none;">
<tr>
<td style="width:50%; min-width: 300px; max-width: 435px;">
<textarea id="inputText" onkeyup="javascript: Preview();"></textarea>
</td>
<td style="width:50%; min-width: 300px; max-width: 435px;">
<div id="outputNode"></div>
</td>
</tr>
<tr><td colspan="2">
<span fckLang="DlgAsciiMathBasedOn">Based on ASCIIMathML by </span><a href="http://www.chapman.edu/~jipsen" onclick="javascript: window.open(this.href,'_blank','');return false;">Peter Jipsen</a>,
<a href="http://www.chapman.edu" onclick="javascript: window.open(this.href,'_blank','');return false;">Chapman University</a><br />
<span fckLang="DlgAsciiMathForMoreInfo">For more information on AsciiMathML visit this page: </span><a href="http://www1.chapman.edu/~jipsen/mathml/asciimath.html" onclick="javascript: window.open(this.href,'_blank','');return false;">http://www1.chapman.edu/~jipsen/mathml/asciimath.html</a></td></tr>
</table>
</form>
</body>
</html>

View File

@@ -0,0 +1,282 @@
/*
* Chamilo LMS
*
* Copyright (c) 2009-2010 Ivan Tcholakov <ivantcholakov@gmail.com>
* Copyright (c) 2009 Dokeos SPRL
*
* License:
* GNU Lesser General Public License, Version 3, 29 June 2007
* by Free Software Foundation, Inc. (http://www.gnu.org/licenses/lgpl.html)
*/
var dialog = window.parent ;
var oEditor = dialog.InnerDialogLoaded() ;
var FCK = oEditor.FCK ;
var FCKLang = oEditor.FCKLang ;
var FCKConfig = oEditor.FCKConfig ;
var FCKTools = oEditor.FCKTools ;
var FCKBrowserInfo = oEditor.FCKBrowserInfo ;
var FCKUndo = oEditor.FCKUndo ;
var FCKAsciiMath = oEditor.FCKAsciiMath ;
// Set the language direction.
window.document.dir = FCKLang.Dir ;
FCKLang["DlgAsciiIncompatibleBrowser"] = FCKLang["DlgAsciiIncompatibleBrowser"] ? FCKLang["DlgAsciiIncompatibleBrowser"] : 'Your browser is not able to show mathematical formulas. Please, use %s1 or Internet Explorer with %s2 plugin.' ;
FCKLang['DlgAsciiIncompatibleBrowser'] = FCKLang['DlgAsciiIncompatibleBrowser'].replace( '%s1', '<a href="http://www.mozilla.com" onclick="javascript: window.open(this.href,\'_blank\');return false;">Mozilla Firefox 1.5+</a>, <a href="http://www.opera.com" onclick="javascript: window.open(this.href,\'_blank\');return false;">Opera 9.5+</a>' ) ;
FCKLang['DlgAsciiIncompatibleBrowser'] = FCKLang['DlgAsciiIncompatibleBrowser'].replace( '%s2', '<a href="http://www.dessci.com/en/products/mathplayer/" onclick="javascript: window.open(this.href,\'_blank\');return false;">MathPlayer</a>' ) ;
FCKLang["DlgAsciiMathOldIE"] = FCKLang["DlgAsciiMathOldIE"] ? FCKLang["DlgAsciiMathOldIE"] : 'Your browser is not able to show mathematical formulas. You need to upgrade to Internet Explorer 6.0+. Then you need to install the MathPlayer 2 plugin for Internet Explorer. Please, see %s for more information.' ;
FCKLang['DlgAsciiMathOldIE'] = FCKLang['DlgAsciiMathOldIE'].replace( '%s', '<a href="http://www.dessci.com/en/products/mathplayer/" onclick="javascript: window.open(this.href,\'_blank\');return false;">http://www.dessci.com/en/products/mathplayer/</a>' ) ;
FCKLang['DlgAsciiMathInstallMathPlayer'] = FCKLang['DlgAsciiMathInstallMathPlayer'] ? FCKLang['DlgAsciiMathInstallMathPlayer'] : 'Your browser is not able to show mathematical formulas. You need to install the MathPlayer 2 plugin for Internet Explorer. Please, see %s for more information.' ;
FCKLang['DlgAsciiMathInstallMathPlayer'] = FCKLang['DlgAsciiMathInstallMathPlayer'].replace( '%s', '<a href="http://www.dessci.com/en/products/mathplayer/" onclick="javascript: window.open(this.href,\'_blank\');return false;">http://www.dessci.com/en/products/mathplayer/</a>' ) ;
FCKLang['DlgAsciiMathOldMathPlayer'] = FCKLang['DlgAsciiMathOldMathPlayer'] ? FCKLang['DlgAsciiMathOldMathPlayer'] : 'Your browser is not able to show mathematical formulas. You need to upgrade the MathPlayer plugin for Internet Explorer to version 2. Please, see %s for more information.' ;
FCKLang['DlgAsciiMathOldMathPlayer'] = FCKLang['DlgAsciiMathOldMathPlayer'].replace( '%s', '<a href="http://www.dessci.com/en/products/mathplayer/" onclick="javascript: window.open(this.href,\'_blank\');return false;">http://www.dessci.com/en/products/mathplayer/</a>' ) ;
// Settings for ASCIIMathML.js
// Checking for native MathML support, it is always needed for this dialog.
var checkForMathML = true;
// Suppressing the built-in notification messages when the browser is incompatible.
var notifyIfNoMathML = false ;
var alertIfNoMathML = false ;
var notifyIfNoSVG = false ;
var alertIfNoSVG = false ;
// Formula translation will be called explicitly in this dialog after it loads.
var translateOnLoad = false ;
// Formula tooltips are hard-coded in this dialog, there is no need they to be generated.
var showasciiformulaonhover = false ;
// Font size of the formulas in this dialog.
var mathfontsize = "1.1em" ;
// oSpanAM: The actual selected span element in the editor that contains the formula.
var oSpanAM = FCKAsciiMath.FindFormulaContainer( FCKAsciiMath.GetSearchElementFromSelection() ) ;
if ( oSpanAM )
{
FCK.Selection.SelectNode( oSpanAM ) ;
}
function LoadSelection()
{
GetE( 'inputText' ).value = FCKAsciiMath.GetFormula( oSpanAM ) ;
Preview() ;
}
function Ok()
{
if ( FCKBrowserInfo.IsIE )
{
if ( oSpanAM )
{
FCK.Selection.SelectNode( oSpanAM ) ;
// For IE: Before updating, we have to move the selection outside the formula
// in order to prevent "Unspecified error".
var span_target = FCK.EditorDocument.createElement( 'span' ) ;
span_target.innerHTML = '&nbsp;' ;
span_target = oSpanAM.parentNode.insertBefore( span_target, oSpanAM ) ;
FCK.Selection.SelectNode( span_target ) ;
}
}
var formula = GetE( 'inputText' ).value ;
if ( formula != '' )
{
FCK.InsertHtml( '<span class="AM">`' + formula + '`<\/span>' ) ;
}
else
{
FCK.Selection.Delete() ;
}
if ( FCKBrowserInfo.IsIE )
{
if ( oSpanAM )
{
FCKUndo.SaveUndoStep() ;
oSpanAM.parentNode.removeChild( oSpanAM ) ;
}
}
return true ;
}
window.onload = function()
{
// Translate the dialog box texts.
oEditor.FCKLanguageManager.TranslatePage( document ) ;
// Initialization of the script ASCIIMathML.js.
init() ;
// Load the selected element information (if any).
LoadSelection() ;
dialog.SetAutoSize( true ) ;
// When MathML is available show the button "Show MathML code".
if ( !noMathML ) {
GetE( 'show_mathml' ).style.display = '' ;
}
// Activate the "OK" button.
dialog.SetOkButton( true ) ;
var inputField = GetE( 'inputText' ) ;
inputField.focus() ;
}
function Set( string )
{
var inputField = GetE( 'inputText' ) ;
inputField.value += string ;
Preview() ;
inputField.focus() ;
return false ;
}
function Clear()
{
var inputField = GetE( 'inputText' ) ;
inputField.value = '' ;
Preview() ;
inputField.focus() ;
return false ;
}
function Delete()
{
Clear();
dialog.Ok();
}
function Preview()
{
if ( GetE( 'inputText' ).value != '' )
{
var str = GetE( 'inputText' ).value ;
var outnode = GetE( 'outputNode' ) ;
var newnode = createElementXHTML( 'div' ) ;
newnode.setAttribute( 'id', 'outputNode' ) ;
outnode.parentNode.replaceChild( newnode, outnode ) ;
outnode = GetE( 'outputNode' ) ;
var n = outnode.childNodes.length ;
for ( var i = 0; i < n; i++ )
{
outnode.removeChild( outnode.firstChild ) ;
}
outnode.appendChild( document.createComment( '`' + str + '`' ) ) ;
AMprocessNode( outnode, true ) ;
if ( FCKLang['DlgAsciiMathShowMathML'] )
{
GetE( 'show_mathml' ).value = FCKLang['DlgAsciiMathShowMathML'] ;
}
}
else
{
var outnode = GetE( 'outputNode' ) ;
var n = outnode.childNodes.length ;
for ( var i = 0; i < n; i++ )
{
outnode.removeChild( outnode.firstChild ) ;
}
}
}
function AMnode2string( inNode, indent )
{
// thanks to James Frazer for contributing an initial version of this function
var i, str = '' ;
if ( inNode.nodeType == 1 )
{
var name = inNode.nodeName.toLowerCase() ; // (IE fix)
str = '\r' + indent + '<' + name ;
for ( i = 0; i < inNode.attributes.length; i++ )
{
if ( inNode.attributes[i].nodeValue != 'italic' &&
inNode.attributes[i].nodeValue != '' && //stop junk attributes
inNode.attributes[i].nodeValue != 'inherit' && // (mostly IE)
inNode.attributes[i].nodeValue != undefined &&
inNode.attributes[i].nodeName[0] != '-' )
{
str += ' ' + inNode.attributes[i].nodeName + '=' + '"' + inNode.attributes[i].nodeValue + '"' ;
}
}
if ( name == 'math' )
{
str += ' xmlns="http://www.w3.org/1998/Math/MathML"' ;
}
str += '>' ;
for ( i = 0; i < inNode.childNodes.length; i++ )
{
str += AMnode2string( inNode.childNodes[i], indent + ' ' ) ;
}
if ( name != 'mo' && name != 'mi' && name != 'mn' ) str += '\r' + indent ;
str += '</' + name + '>' ;
}
else if( inNode.nodeType == 3 )
{
var st = inNode.nodeValue ;
for ( i = 0; i < st.length; i++ )
{
if ( st.charCodeAt( i ) < 32 || st.charCodeAt( i ) > 126 )
{
str += '&#' + st.charCodeAt( i ) + ';' ;
}
else if ( st.charAt(i) == '<' && indent != ' ' ) str += '&lt;' ;
else if ( st.charAt(i) == '>' && indent != ' ' ) str += '&gt;' ;
else if ( st.charAt(i) == '&' && indent != ' ' ) str += '&amp;' ;
else str += st.charAt( i ) ;
}
}
return str ;
}
function ShowMathML()
{
if ( GetE( 'inputText' ).value != '' )
{
var math = GetE( 'outputNode' ).getElementsByTagName( 'math' )[0] ;
if ( math )
{
var width ;
if ( GetE( 'outputNode' ).offsetWidth )
{
width = GetE( 'outputNode' ).offsetWidth ;
}
math.parentNode.innerHTML = '<pre>' + FCKTools.HTMLEncode( AMnode2string( math, '' ) ) + '</pre>' ;
if ( width && FCKBrowserInfo.IsGecko )
{
GetE( 'outputNode' ).style.width = width + 'px' ;
}
if ( FCKLang['DlgAsciiMathFormulaPreview'] )
{
GetE( 'show_mathml' ).value = FCKLang['DlgAsciiMathFormulaPreview'] ;
}
}
else
{
Preview() ;
}
}
else
{
Preview() ;
}
}
// Highlighting formulas.
function over(td)
{
td.className = 'LightBackground Hand' ;
}
function out(td)
{
td.className = 'Hand' ;
}

View File

@@ -0,0 +1,289 @@
/**
* @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or http://ckeditor.com/license
*/
'use strict';
CKEDITOR.dialog.add( 'asciimath', function( editor ) {
var preview,
lang = editor.lang.asciimath;
var imagePath = CKEDITOR.plugins.getPath('asciimath') + "images/";
return {
title: lang.title,
minWidth: 350,
minHeight: 100,
contents: [
{
id: 'info',
elements: [
{
id: 'equation',
type: 'textarea',
label: lang.dialogInput,
class: 'asciimath_textarea',
onLoad: function( widget ) {
var that = this;
if ( !( CKEDITOR.env.ie && CKEDITOR.env.version == 8 ) ) {
this.getInputElement().on( 'keyup', function() {
// Add ` and ` for preview.
preview.setValue( '`' + that.getInputElement().getValue() + '`' );
} );
$('.Hand').on('click', function() {
preview.setValue( '`' + that.getInputElement().getValue() + '`' );
});
}
},
setup: function( widget ) {
// Remove ` and `.
this.setValue( CKEDITOR.plugins.asciimath.trim( widget.data.math ) );
},
commit: function( widget ) {
// Add ` and ` to make ASCII be parsed by MathJax by default.
widget.setData( 'math', '`' + this.getValue() + '`' );
}
},
{
id: 'clickInput',
type: 'html',
html:
'<style type="text/css">'+
'body, td, input, textarea, select, label, button { font-family: Arial, Verdana, Geneva, helvetica, sans-serif; font-size: 11px; }' +
'form { padding: 0px; margin: 0px; }' +
'form p { margin-top: 5px; margin-bottom: 5px; }' +
'#clickInput' +
'{' +
'width: 100%;' +
'border-collapse: collapse;' +
'background-color: white;' +
'text-align: center;' +
'}' +
'#clickInput td' +
'{' +
'border: 1px solid gray;' +
'font-size: 1.1em;' +
'}' +
'#clickInput img' +
'{' +
'cursor: pointer;' +
'}' +
'.Hand' +
'{' +
'cursor: pointer;' +
'}' +
'</style>'+
'<table id="clickInput">' +
'<tr>' +
'<td colspan="3" class="Hand" title="(x+1)/(x-1)" onclick="javascript: Set(\'(x+1)/(x-1)\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'x1x1.png" /></td>' +
'<td colspan="2" class="Hand" title="x^(m+n)" onclick="javascript: Set(\'x^(m+n)\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'xmn.png" /></td>' +
'<td colspan="2" class="Hand" title="x_(mn)" onclick="javascript: Set(\'x_(mn)\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'x_mn.png" /></td>' +
'<td colspan="2" class="Hand" title="sqrt(x)" onclick="javascript: Set(\'sqrt(x)\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'sqrtx.png" /></td>' +
'<td colspan="3" class="Hand" title="root(n)(x)" onclick="javascript: Set(\'root(n)(x)\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'rootnx.png" /></td>' +
'<td colspan="3" class="Hand" title="{(1 if x&gt;=0),(0 if x&lt;0):}" onclick="javascript: Set(\'{(1 if x&gt;=0),(0 if x&lt;0):}\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ifx.png" /></td>' +
'<td colspan="2" class="Hand" title="&quot;text&quot;" onclick="javascript: Set(\'&quot;text&quot;\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'text.png" /></td>' +
'</tr><tr>' +
'<td colspan="2" class="Hand" title="dy/dx" onclick="javascript: Set(\'dy/dx\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'dydx.png" /></td>' +
'<td colspan="3" class="Hand" title="lim_(x-&gt;oo)" onclick="javascript: Set(\'lim_(x-&gt;oo)\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'lim.png" /></td>' +
'<td colspan="3" class="Hand" title="sum_(n=1)^oo" onclick="javascript: Set(\'sum_(n=1)^oo\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'sumn.png" /></td>' +
'<td colspan="3" class="Hand" title="int_a^bf(x)dx" onclick="javascript: Set(\'int_a^bf(x)dx\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'intab.png" /></td>' +
'<td colspan="3" class="Hand" title="[[a,b],[c,d]]" onclick="javascript: Set(\'[[a,b],[c,d]]\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'abcd.png" /></td>' +
'<td colspan="2" class="Hand" title="((n),(k))" onclick="javascript: Set(\'((n),(k))\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'nk.png" /></td>' +
'</tr><tr>' +
'<td class="Hand" title="*" onclick="javascript: Set(\'*\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'dot.png" /></td>' +
'<td class="Hand" title="**" onclick="javascript: Set(\'**\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'star.png" /></td>' +
'<td class="Hand" title="//" onclick="javascript: Set(\'//\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'slash.png" /></td>' +
'<td class="Hand" title="\\" onclick="javascript: Set(\'\\\\\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'backslash.png" /></td>' +
'<td class="Hand" title="xx" onclick="javascript: Set(\'xx\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'times.png" /></td>' +
'<td class="Hand" title="-:" onclick="javascript: Set(\'-:\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'div.png" /></td>' +
'<td class="Hand" title="@" onclick="javascript: Set(\'@\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'circ.png" /></td>' +
'<td class="Hand" title="o+" onclick="javascript: Set(\'o+\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'oplus.png" /></td>' +
'<td class="Hand" title="ox" onclick="javascript: Set(\'ox\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'otimes.png" /></td>' +
'<td class="Hand" title="o." onclick="javascript: Set(\'o.\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'odot.png" /></td>' +
'<td class="Hand" title="sum" onclick="javascript: Set(\'sum\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'sum.png" /></td>' +
'<td class="Hand" title="prod" onclick="javascript: Set(\'prod\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'prod.png" /></td>' +
'<td class="Hand" title="^^" onclick="javascript: Set(\'^^\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'wedge.png" /></td>' +
'<td class="Hand" title="^^^" onclick="javascript: Set(\'^^^\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'bigwedge.png" /></td>' +
'<td class="Hand" title="vv" onclick="javascript: Set(\'vv\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'vee.png" /></td>' +
'<td class="Hand" title="vvv" onclick="javascript: Set(\'vvv\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'bigvee.png" /></td>' +
'</tr><tr>' +
'<td class="Hand" title="!=" onclick="javascript: Set(\'!=\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ne.png" /></td>' +
'<td class="Hand" title="&lt;=" onclick="javascript: Set(\'&lt;=\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'le.png" /></td>' +
'<td class="Hand" title="&gt;=" onclick="javascript: Set(\'&gt;=\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ge.png" /></td>' +
'<td class="Hand" title="-&lt;" onclick="javascript: Set(\'-&lt;\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'prec.png" /></td>' +
'<td class="Hand" title="&gt;-" onclick="javascript: Set(\'&gt;-\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'succ.png" /></td>' +
'<td class="Hand" title="in" onclick="javascript: Set(\'in\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'in.png" /></td>' +
'<td class="Hand" title="!in" onclick="javascript: Set(\'!in\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'notin.png" /></td>' +
'<td class="Hand" title="sub" onclick="javascript: Set(\'sub\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'subset.png" /></td>' +
'<td class="Hand" title="sup" onclick="javascript: Set(\'sup\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'supset.png" /></td>' +
'<td class="Hand" title="sube" onclick="javascript: Set(\'sube\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'subseteq.png" /></td>' +
'<td class="Hand" title="supe" onclick="javascript: Set(\'supe\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'supseteq.png" /></td>' +
'<td class="Hand" title="O/" onclick="javascript: Set(\'O/\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'emptyset.png" /></td>' +
'<td class="Hand" title="nn" onclick="javascript: Set(\'nn\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'cap.png" /></td>' +
'<td class="Hand" title="nnn" onclick="javascript: Set(\'nnn\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'bigcap.png" /></td>' +
'<td class="Hand" title="uu" onclick="javascript: Set(\'uu\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'cup.png" /></td>' +
'<td class="Hand" title="uuu" onclick="javascript: Set(\'uuu\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'bigcup.png" /></td>' +
'</tr><tr>' +
'<td class="Hand" title="and" onclick="javascript: Set(\'and\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'text_and.png" /></td>' +
'<td class="Hand" title="or" onclick="javascript: Set(\'or\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'text_or.png" /></td>' +
'<td class="Hand" title="not" onclick="javascript: Set(\'not\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'not.png" /></td>' +
'<td class="Hand" title="=&gt;" onclick="javascript: Set(\'=&gt;\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'rightarrow.png" /></td>' +
'<td class="Hand" title="if" onclick="javascript: Set(\'if\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'if.png" /></td>' +
'<td class="Hand" title="&lt;=&gt;" onclick="javascript: Set(\'&lt;=&gt;\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'leftrightarrow.png" /></td>' +
'<td class="Hand" title="AA" onclick="javascript: Set(\'AA\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'forall.png" /></td>' +
'<td class="Hand" title="EE" onclick="javascript: Set(\'EE\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'exists.png" /></td>' +
'<td class="Hand" title="_|_" onclick="javascript: Set(\'_|_\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'bot.png" /></td>' +
'<td class="Hand" title="TT" onclick="javascript: Set(\'TT\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'top.png" /></td>' +
'<td class="Hand" title="|--" onclick="javascript: Set(\'|--\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'vdash.png" /></td>' +
'<td class="Hand" title="|==" onclick="javascript: Set(\'|==\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'models.png" /></td>' +
'<td class="Hand" title="-=" onclick="javascript: Set(\'-=\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'equiv.png" /></td>' +
'<td class="Hand" title="~=" onclick="javascript: Set(\'~=\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'cong.png" /></td>' +
'<td class="Hand" title="~~" onclick="javascript: Set(\'~~\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'approx.png" /></td>' +
'<td class="Hand" title="prop" onclick="javascript: Set(\'prop\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'propto.png" /></td>' +
'</tr><tr>' +
'<td class="Hand" title="int" onclick="javascript: Set(\'int\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'int.png" /></td>' +
'<td class="Hand" title="oint" onclick="javascript: Set(\'oint\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'oint.png" /></td>' +
'<td class="Hand" title="del" onclick="javascript: Set(\'del\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'partial.png" /></td>' +
'<td class="Hand" title="grad" onclick="javascript: Set(\'grad\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'nabla.png" /></td>' +
'<td class="Hand" title="+-" onclick="javascript: Set(\'+-\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'pm.png" /></td>' +
'<td class="Hand" title="oo" onclick="javascript: Set(\'oo\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'infty.png" /></td>' +
'<td class="Hand" title="A\ B (space between A and B)" onclick="javascript: Set(\'A\\ B\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'space.png" /></td>' +
'<td class="Hand" title="AquadB (double space between A and B)" onclick="javascript: Set(\'AquadB\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'quad.png" /></td>' +
'<td class="Hand" title="diamond" onclick="javascript: Set(\'diamond\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'diamond.png" /></td>' +
'<td class="Hand" title="square" onclick="javascript: Set(\'square\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'square.png" /></td>' +
'<td class="Hand" title="|__" onclick="javascript: Set(\'|__\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'lfloor.png" /></td>' +
'<td class="Hand" title="__|" onclick="javascript: Set(\'__|\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'rfloor.png" /></td>' +
'<td class="Hand" title="|~" onclick="javascript: Set(\'|~\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'lceil.png" /></td>' +
'<td class="Hand" title="~|" onclick="javascript: Set(\'~|\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'rceil.png" /></td>' +
'<td class="Hand" title="&lt;&lt;x&gt;&gt;" onclick="javascript: Set(\'&lt;&lt;x&gt;&gt;\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'braxcket.png" /></td>' +
'<td class="Hand" title="/_" onclick="javascript: Set(\'/_\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'angle.png" /></td>' +
'</tr><tr>' +
'<td class="Hand" title="uarr" onclick="javascript: Set(\'uarr\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'uarr.png" /></td>' +
'<td class="Hand" title="darr" onclick="javascript: Set(\'darr\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'darr.png" /></td>' +
'<td class="Hand" title="larr" onclick="javascript: Set(\'larr\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'larr.png" /></td>' +
'<td class="Hand" title="-&gt;" onclick="javascript: Set(\'-&gt;\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'rarr.png" /></td>' +
'<td class="Hand" title="|-&gt;" onclick="javascript: Set(\'|-&gt;\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'mapsto.png" /></td>' +
'<td class="Hand" title="harr" onclick="javascript: Set(\'harr\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'harr.png" /></td>' +
'<td class="Hand" title="lArr" onclick="javascript: Set(\'lArr\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'llarr.png" /></td>' +
'<td class="Hand" title="rArr" onclick="javascript: Set(\'rArr\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'rrarr.png" /></td>' +
'<td class="Hand" title="hArr" onclick="javascript: Set(\'hArr\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'hharr.png" /></td>' +
'<td class="Hand" title="hata" onclick="javascript: Set(\'hata\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'hata.png" /></td>' +
'<td class="Hand" title="ula" onclick="javascript: Set(\'ula\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ula.png" /></td>' +
'<td class="Hand" title="dota" onclick="javascript: Set(\'dota\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'dota.png" /></td>' +
'<td class="Hand" title="ddota" onclick="javascript: Set(\'ddota\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ddota.png" /></td>' +
'<td class="Hand" title="veca" onclick="javascript: Set(\'veca\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'veca.png" /></td>' +
'<td class="Hand" title="bara" onclick="javascript: Set(\'bara\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'bara.png" /></td>' +
'<td class="Hand" title=":." onclick="javascript: Set(\':.\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'therefore.png" /></td>' +
'</tr><tr>' +
'<td class="Hand" title="NN" onclick="javascript: Set(\'NN\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'nn.png" /></td>' +
'<td class="Hand" title="ZZ" onclick="javascript: Set(\'ZZ\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'zz.png" /></td>' +
'<td class="Hand" title="QQ" onclick="javascript: Set(\'QQ\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'qq.png" /></td>' +
'<td class="Hand" title="RR" onclick="javascript: Set(\'RR\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'rr.png" /></td>' +
'<td class="Hand" title="CC" onclick="javascript: Set(\'CC\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'cc.png" /></td>' +
'<td class="Hand" title="bbA" onclick="javascript: Set(\'bbA\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'bba.png" /></td>' +
'<td class="Hand" title="bbbA" onclick="javascript: Set(\'bbbA\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'bbba.png" /></td>' +
'<td class="Hand" title="ccA" onclick="javascript: Set(\'ccA\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'cca.png" /></td>' +
'<td class="Hand" title="frA" onclick="javascript: Set(\'frA\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'fra.png" /></td>' +
'<td class="Hand" title="sfA" onclick="javascript: Set(\'sfA\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'sfa.png" /></td>' +
'<td class="Hand" title="ttA" onclick="javascript: Set(\'ttA\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'tta.png" /></td>' +
'<td colspan="3" class="Hand" title="stackrel(-&gt;)(+)" onclick="javascript: Set(\'stackrel(-&gt;)(+)\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'stackrel.png" /></td>' +
'<td class="Hand" title="aleph" onclick="javascript: Set(\'aleph\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'aleph.png" /></td>' +
'<td class="Hand" title="upsilon" onclick="javascript: Set(\'upsilon\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'upsilon.png" /></td>' +
'</tr><tr>' +
'<td class="Hand" title="alpha" onclick="javascript: Set(\'alpha\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'alpha.png" /></td>' +
'<td class="Hand" title="beta" onclick="javascript: Set(\'beta\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'beta.png" /></td>' +
'<td class="Hand" title="gamma" onclick="javascript: Set(\'gamma\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'gamma.png" /></td>' +
'<td class="Hand" title="Gamma" onclick="javascript: Set(\'Gamma\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ggamma.png" /></td>' +
'<td class="Hand" title="delta" onclick="javascript: Set(\'delta\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'delta.png" /></td>' +
'<td class="Hand" title="Delta" onclick="javascript: Set(\'Delta\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ddelta.png" /></td>' +
'<td class="Hand" title="epsi" onclick="javascript: Set(\'epsi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'epsilon.png" /></td>' +
'<td class="Hand" title="zeta" onclick="javascript: Set(\'zeta\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'zeta.png" /></td>' +
'<td class="Hand" title="eta" onclick="javascript: Set(\'eta\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'eta.png" /></td>' +
'<td class="Hand" title="theta" onclick="javascript: Set(\'theta\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'theta.png" /></td>' +
'<td class="Hand" title="Theta" onclick="javascript: Set(\'Theta\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ttheta.png" /></td>' +
'<td class="Hand" title="iota" onclick="javascript: Set(\'iota\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'iota.png" /></td>' +
'<td class="Hand" title="kappa" onclick="javascript: Set(\'kappa\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'kappa.png" /></td>' +
'<td class="Hand" title="lambda" onclick="javascript: Set(\'lambda\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'lambda.png" /></td>' +
'<td class="Hand" title="Lambda" onclick="javascript: Set(\'Lambda\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'llambda.png" /></td>' +
'<td class="Hand" title="mu" onclick="javascript: Set(\'mu\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'mu.png" /></td>' +
'</tr><tr>' +
'<td class="Hand" title="nu" onclick="javascript: Set(\'nu\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'nu.png" /></td>' +
'<td class="Hand" title="pi" onclick="javascript: Set(\'pi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'pi.png" /></td>' +
'<td class="Hand" title="Pi" onclick="javascript: Set(\'Pi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ppi.png" /></td>' +
'<td class="Hand" title="rho" onclick="javascript: Set(\'rho\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'rho.png" /></td>' +
'<td class="Hand" title="sigma" onclick="javascript: Set(\'sigma\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'sigma.png" /></td>' +
'<td class="Hand" title="Sigma" onclick="javascript: Set(\'Sigma\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ssigma.png" /></td>' +
'<td class="Hand" title="tau" onclick="javascript: Set(\'tau\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'tau.png" /></td>' +
'<td class="Hand" title="xi" onclick="javascript: Set(\'xi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'xi.png" /></td>' +
'<td class="Hand" title="Xi" onclick="javascript: Set(\'Xi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'xxi.png" /></td>' +
'<td class="Hand" title="phi" onclick="javascript: Set(\'phi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'phi.png" /></td>' +
'<td class="Hand" title="Phi" onclick="javascript: Set(\'Phi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'pphi.png" /></td>' +
'<td class="Hand" title="chi" onclick="javascript: Set(\'chi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'chi.png" /></td>' +
'<td class="Hand" title="psi" onclick="javascript: Set(\'psi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'psi.png" /></td>' +
'<td class="Hand" title="Psi" onclick="javascript: Set(\'Psi\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'ppsi.png" /></td>' +
'<td class="Hand" title="omega" onclick="javascript: Set(\'omega\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'omega.png" /></td>' +
'<td class="Hand" title="Omega" onclick="javascript: Set(\'Omega\');" onmouseover="javascript: over(this);" onmouseout="javascript: out(this);"><img src="'+imagePath+'oomega.png" /></td>' +
'</tr>' +
'</table>'
},
{
id: 'documentation',
type: 'html',
html:
'<div style="width:100%;text-align:right;margin:-8px 0 10px">' +
'<a class="cke_mathjax_doc" href="' + lang.docUrl + '" target="_black" style="cursor:pointer;color:#00B2CE;text-decoration:underline">' +
lang.docLabel +
'</a>' +
'</div>'
},
( !( CKEDITOR.env.ie && CKEDITOR.env.version == 8 ) ) && {
id: 'preview',
type: 'html',
html:
'<div style="width:100%;text-align:center;">' +
'<iframe style="border:0;width:0;height:0;font-size:20px" scrolling="no" frameborder="0" allowTransparency="true" src="' + CKEDITOR.plugins.asciimath.fixSrc + '"></iframe>' +
'</div>',
onLoad: function( widget ) {
var iFrame = CKEDITOR.document.getById( this.domId ).getChild( 0 );
preview = new CKEDITOR.plugins.asciimath.frameWrapper( iFrame, editor );
},
setup: function( widget ) {
preview.setValue( widget.data.math );
}
}
]
}
]
};
} );
// Highlighting formulas.
function over(td)
{
td.className = 'LightBackground Hand' ;
}
function out(td)
{
td.className = 'Hand' ;
}
function Set( string )
{
var inputField = document.getElementsByClassName('asciimath_textarea')[0];
inputField.value += string;
return false;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 703 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 516 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 290 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Some files were not shown because too many files have changed in this diff Show More