

/*****************************************************************

typeface.js, version 0.11 | typefacejs.neocracy.org

Copyright (c) 2008, David Chester davidchester@gmx.net 

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

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.

*****************************************************************/

(function() {

var _typeface_js = {

	faces: {},

	loadFace: function(typefaceData) {

		var familyName = typefaceData.familyName.toLowerCase();
		
		if (!this.faces[familyName]) {
			this.faces[familyName] = {};
		}
		if (!this.faces[familyName][typefaceData.cssFontWeight]) {
			this.faces[familyName][typefaceData.cssFontWeight] = {};
		}

		var face = this.faces[familyName][typefaceData.cssFontWeight][typefaceData.cssFontStyle] = typefaceData;
		face.loaded = true;
	},

	log: {
		debug: function(message) {
			var typefaceConsole = document.getElementById('typeface-console');
			if (typefaceConsole) 
				typefaceConsole.innerHTML += 'DEBUG: ' + message + "<br>";
		},

		error: function(message) {
			var typefaceConsole = document.getElementById('typeface-console');
			if (typefaceConsole) 
				typefaceConsole.innerHTML += 'ERROR: ' + message + "<br>";
		}
	},
	
	pixelsFromPoints: function(face, style, points, dimension) {
		var pixels = points * parseInt(style.fontSize) * 72 / (face.resolution * 100);
		if (dimension == 'horizontal' && style.fontStretchPercent) {
			pixels *= style.fontStretchPercent;
		}
		return pixels;
	},

	pointsFromPixels: function(face, style, pixels, dimension) {
		var points = pixels * face.resolution / (parseInt(style.fontSize) * 72 / 100);
		if (dimension == 'horizontal' && style.fontStretchPrecent) {
			points *= style.fontStretchPercent;
		}
		return points;
	},

	cssFontWeightMap: {
		normal: 'normal',
		bold: 'bold',
		400: 'normal',
		700: 'bold'
	},

	cssFontStretchMap: {
		'ultra-condensed': 0.55,
		'extra-condensed': 0.77,
		'condensed': 0.85,
		'semi-condensed': 0.93,
		'normal': 1,
		'semi-expanded': 1.07,
		'expanded': 1.15,
		'extra-expanded': 1.23,
		'ultra-expanded': 1.45,
		'default': 1
	},
	
	fallbackCharacter: '.',

	getTextExtents: function(face, style, text) {
		var extentX = 0;
		var extentY = 0;
		var horizontalAdvance;
	
		for (var i = 0; i < text.length; i++) {
			var glyph = face.glyphs[text.charAt(i)] ? face.glyphs[text.charAt(i)] : face.glyphs[this.fallbackCharacter];
			var letterSpacingAdjustment = this.pointsFromPixels(face, style, style.letterSpacing);
			extentX += Math.max(glyph.ha, glyph.x_max) + letterSpacingAdjustment;
			horizontalAdvance += glyph.ha + letterSpacingAdjustment;
		}
		return { 
			x: extentX, 
			y: extentY,
			ha: horizontalAdvance
			
		};
	},

	pixelsFromCssAmount: function(cssAmount, defaultValue) {

		var matches = undefined;

		if (cssAmount == 'normal') {
			return defaultValue;

		} else if (matches = cssAmount.match(/([\-\d+\.]+)px/)) {
			return matches[1];

		} else if (matches = cssAmount.match(/([\-\d\.]+)pt/)) {
			return matches[1] * 100 / 75;
		} else {
			return defaultValue;
		}
	},

	getRenderedText: function(e) {

		var browserStyle = window.getComputedStyle ? 
			document.defaultView.getComputedStyle(e.parentNode, '') : 
			e.parentNode.currentStyle ? 
				e.parentNode.currentStyle : 
				{ color: '#ff0000', fontSize: 12, fontFamily: 'arial' };
		var inlineStyleAttribute = e.parentNode.getAttribute('style');
		if (inlineStyleAttribute && typeof(inlineStyleAttribute) == 'object') {
			inlineStyleAttribute = inlineStyleAttribute.cssText;
		}

		if (inlineStyleAttribute) {

			var inlineStyleDeclarations = inlineStyleAttribute.split(/\s*\;\s*/);

			var inlineStyle = {};
			for (var i = 0; i < inlineStyleDeclarations.length; i++) {
				var declaration = inlineStyleDeclarations[i];
				var declarationOperands = declaration.split(/\s*\:\s*/);
				inlineStyle[declarationOperands[0]] = declarationOperands[1];
			}
		}

		var style = { 
			color: browserStyle.color, 
			fontFamily: browserStyle.fontFamily.split(/\s*,\s*/)[0].replace(/(^"|^'|'$|"$)/g, '').toLowerCase(), 
			fontSize: this.pixelsFromCssAmount(browserStyle.fontSize, 12),
			fontWeight: this.cssFontWeightMap[browserStyle.fontWeight],
			fontStyle: browserStyle.fontStyle ? browserStyle.fontStyle : 'normal',
			fontStretchPercent: this.cssFontStretchMap[inlineStyle && inlineStyle['font-stretch'] ? inlineStyle['font-stretch'] : 'default'],
			textDecoration: browserStyle.textDecoration,
			lineHeight: this.pixelsFromCssAmount(browserStyle.lineHeight, 'normal'),
			letterSpacing: this.pixelsFromCssAmount(browserStyle.letterSpacing, 0)
		};

		var face;
		if (
			this.faces[style.fontFamily] && 
			this.faces[style.fontFamily][style.fontWeight]
		) {
			face = this.faces[style.fontFamily][style.fontWeight][style.fontStyle];
		}

		if (!face) {
			return;
		}
	
		var text = e.nodeValue.replace(/(?:^\s+|\s+$)/g, '');
		text = text.replace(/\s+/g, ' ');
		var words = text.split(/\s/);

		var containerSpan = document.createElement('span');

		for (var i = 0; i < words.length; i++) {
			var word = words[i];
			var delimiter = i == words.length - 1 ? '' : ' ';
			var vectorElement = this.renderWord(face, style, word + delimiter);
			if (vectorElement)
				containerSpan.appendChild(vectorElement);
		}

		return containerSpan;
	},

	renderDocument: function(callback) { // args: onComplete
		
		if (this.renderDocumentLock) 
			return;

		this.renderDocumentLock = true;

		if (!callback)
			callback = function(e) { e.style.visibility = 'visible' };

		var elements = document.getElementsByTagName('*');
		
		var elementsLength = elements.length;
		for (var i = 0; i < elements.length; i++) {
			if (elements[i].className.match(/(^|\s)typeface-js(\s|$)/) || elements[i].tagName.match(/^(H1|H2|H3|H4|H5|H6)$/)) {
				this.replaceText(elements[i]);
				if (typeof callback == 'function') {
					callback(elements[i]);
				}
			}
		}
	},

	replaceText: function(e) {
		if (e.hasChildNodes()) {
			var childNodes = [];
			for (var i = 0; i < e.childNodes.length; i++) {
				childNodes[i] = e.childNodes[i];
			}
			for (var i = 0; i < childNodes.length; i++) {
				this.replaceText(childNodes[i]);
			}
		}
		
		if (e.nodeType == 3 && e.nodeValue.match(/\S/)) {
			var parentNode = e.parentNode;
		
			var renderedText = this.getRenderedText(e);
			
			if (renderedText) {	
				parentNode.insertBefore(renderedText, e);
				parentNode.removeChild(e);
			}	
		}
	},

	applyElementVerticalMetrics: function(face, style, e) {

		var boundingBoxAdjustmentTop = this.pixelsFromPoints(face, style, face.ascender - Math.max(face.boundingBox.yMax, face.ascender)); 
		var boundingBoxAdjustmentBottom = this.pixelsFromPoints(face, style, Math.min(face.boundingBox.yMin, face.descender) - face.descender); 
				
		var cssLineHeightAdjustment = 0;
		if (style.lineHeight != 'normal') {
			cssLineHeightAdjustment = style.lineHeight - this.pixelsFromPoints(face, style, face.lineHeight);
		}
		
		var marginTop = Math.round(boundingBoxAdjustmentTop + cssLineHeightAdjustment / 2);
		var marginBottom = Math.round(boundingBoxAdjustmentBottom + cssLineHeightAdjustment / 2);

		e.style.marginTop = marginTop + 'px';
		e.style.marginBottom = marginBottom + 'px';
	
	},

	vectorBackends: {

		canvas: {

			_initializeSurface: function(face, style, text) {

				var extents = this.getTextExtents(face, style, text);

				var canvas = document.createElement('canvas');
				canvas.innerHTML = text;

				this.applyElementVerticalMetrics(face, style, canvas);
				canvas.height = Math.round(this.pixelsFromPoints(face, style, face.lineHeight));

				canvas.width = Math.round(this.pixelsFromPoints(face, style, extents.x, 'horizontal'));
	
				if (extents.x > extents.ha) 
					canvas.style.marginRight = Math.round(this.pixelsFromPoints(face, style, extents.x - extents.ha, 'horizontal')) + 'px';

				var ctx = canvas.getContext('2d');

				var pointScale = this.pixelsFromPoints(face, style, 1);
				ctx.scale(pointScale * style.fontStretchPercent, -1 * pointScale);
				ctx.translate(0, -1 * face.ascender);
				ctx.fillStyle = style.color;

				return { context: ctx, canvas: canvas };
			},

			_renderGlyph: function(ctx, face, char, style) {

				var glyph = face.glyphs[char];

				if (!glyph) {
					//this.log.error("glyph not defined: " + char);
					return this.renderGlyph(ctx, face, this.fallbackCharacter, style);
				}

				if (glyph.o) {

					var outline;
					if (glyph.cached_outline) {
						outline = glyph.cached_outline;
					} else {
						outline = glyph.o.split(' ');
						glyph.cached_outline = outline;
					}

					for (var i = 0; i < outline.length; ) {

						var action = outline[i++];

						switch(action) {
							case 'm':
								ctx.moveTo(outline[i++], outline[i++]);
								break;
							case 'l':
								ctx.lineTo(outline[i++], outline[i++]);
								break;

							case 'q':
								var cpx = outline[i++];
								var cpy = outline[i++];
								ctx.quadraticCurveTo(outline[i++], outline[i++], cpx, cpy);
								break;
						}
					}					
				}
				if (glyph.ha) {
					var letterSpacingPoints = 
						style.letterSpacing && style.letterSpacing != 'normal' ? 
							this.pointsFromPixels(face, style, style.letterSpacing) : 
							0;

					ctx.translate(glyph.ha + letterSpacingPoints, 0);
				}
			},

			_renderWord: function(face, style, text) {
				var surface = this.initializeSurface(face, style, text);
				var ctx = surface.context;
				var canvas = surface.canvas;
				ctx.beginPath();
				ctx.save();

				var chars = text.split('');
				for (var i = 0; i < chars.length; i++) {
					var char = chars[i];
					this.renderGlyph(ctx, face, char, style);
				}

				ctx.fill();

				if (style.textDecoration == 'underline') {

					ctx.beginPath();
					ctx.moveTo(0, face.underlinePosition);
					ctx.restore();
					ctx.lineTo(0, face.underlinePosition);
					ctx.strokeStyle = style.color;
					ctx.lineWidth = face.underlineThickness;
					ctx.stroke();
				}

				return ctx.canvas;
			}
		},

		vml: {

			_initializeSurface: function(face, style, text) {

				var shape = document.createElement('v:shape');

				var extents = this.getTextExtents(face, style, text);
				
				shape.style.width = style.fontSize + 'px'; 
				shape.style.height = style.fontSize + 'px'; 

				if (extents.x > extents.ha) {
					shape.style.marginRight = this.pixelsFromPoints(face, style, extents.x - extents.ha, 'horizontal') + 'px';
				}

				this.applyElementVerticalMetrics(face, style, shape);

				shape.coordsize = (face.resolution * 100 / style.fontStretchPercent / 72 ) + "," + (face.resolution * 100 / 72);
				
				shape.coordorigin = '0,' + face.ascender;
				shape.style.flip = 'y';

				shape.fillColor = style.color;
				shape.stroked = false;

				shape.path = 'hh m 0,' + face.ascender + ' l 0,' + face.descender + ' ';

				return shape;
			},

			_renderGlyph: function(shape, face, char, offsetX, style) {

				var glyph = face.glyphs[char];

				if (!glyph) {
					//this.log.error("glyph not defined: " + char);
					this.renderGlyph(shape, face, this.fallbackCharacter, offsetX, style);
				}
				
				var vmlSegments = [];

				if (glyph.o) {
					
					var outline;
					if (glyph.cached_outline) {
						outline = glyph.cached_outline;
					} else {
						outline = glyph.o.split(' ');
						glyph.cached_outline = outline;
					}

					var prevAction, prevX, prevY;

					var i;
					for (i = 0; i < outline.length;) {

						var action = outline[i++];
						var vmlSegment = '';

						var x = Math.round(outline[i++]) + offsetX;
						var y = Math.round(outline[i++]);
	
						switch(action) {
							case 'm':
								vmlSegment = (vmlSegments.length ? 'x ' : '') + 'm ' + x + ',' + y;
								break;
	
							case 'l':
								vmlSegment = 'l ' + x + ',' + y;
								break;

							case 'q':
								var cpx = Math.round(outline[i++]) + offsetX;
								var cpy = Math.round(outline[i++]);

								var cp1x = Math.round(prevX + 2.0 / 3.0 * (cpx - prevX));
								var cp1y = Math.round(prevY + 2.0 / 3.0 * (cpy - prevY));

								var cp2x = Math.round(cp1x + (x - prevX) / 3.0);
								var cp2y = Math.round(cp1y + (y - prevY) / 3.0);

								vmlSegment = 'c ' + cp1x + ',' + cp1y + ',' + cp2x + ',' + cp2y + ',' + x + ',' + y;
								break;
						}
						
						prevAction = action;
						prevX = x;
						prevY = y;
				
						if (vmlSegment.length) {
							vmlSegments.push(vmlSegment);
						}
					}					
				}

				vmlSegments.push('x', 'e');
				return vmlSegments.join(' ');
			},

			_renderWord: function(face, style, text) {
				var offsetX = 0;
				var shape = this.initializeSurface(face, style, text);
		
				var letterSpacingPoints = 
					style.letterSpacing && style.letterSpacing != 'normal' ? 
						this.pointsFromPixels(face, style, style.letterSpacing) : 
						0;

				letterSpacingPoints = Math.round(letterSpacingPoints);
				var chars = text.split('');
				for (var i = 0; i < chars.length; i++) {
					var char = chars[i];
					shape.path += this.renderGlyph(shape, face, char, offsetX, style) + ' ';
					offsetX += face.glyphs[char].ha + letterSpacingPoints ;	
				}

				shape.style.marginRight = this.pixelsFromPoints(face, style, face.glyphs[' '].ha) + 'px';
				return shape;
			}

		}

	},

	setVectorBackend: function(backend) {

		var backendFunctions = ['renderWord', 'initializeSurface', 'renderGlyph'];

		for (var i = 0; i < backendFunctions.length; i++) {
			var backendFunction = backendFunctions[i];
			this[backendFunction] = this.vectorBackends[backend]['_' + backendFunction];
		}
	}
};

// IE won't accept real selectors...
var typefaceSelectors = ['.typeface-js', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];

if (document.createStyleSheet) { 
	var styleSheet = document.createStyleSheet();
	for (var i = 0; i < typefaceSelectors.length; i++) {
		var selector = typefaceSelectors[i];
		styleSheet.addRule(selector, 'visibility: hidden');
	}

} else if (document.styleSheets && document.styleSheets.length) {
	var styleSheet = document.styleSheets[0];
	document.styleSheets[0].insertRule(typefaceSelectors.join(',') + ' { visibility: hidden; }', styleSheet.cssRules.length); 
}

var backend = !!(window.attachEvent && !window.opera) ? 'vml' : window.CanvasRenderingContext2D || document.createElement('canvas').getContext ? 'canvas' : null;

if (backend == 'vml') {
	
	document.namespaces.add("v");
	
	var styleSheet = document.createStyleSheet();
	styleSheet.addRule('v\\:*', "behavior: url(#default#VML); display: inline-block;");
}

_typeface_js.setVectorBackend(backend);

window._typeface_js = _typeface_js;
	
// based on code by Dean Edwards / Matthias Miller / John Resig

function typefaceInit() {

	// quit if this function has already been called
	if (arguments.callee.done) return;
	
	// flag this function so we don't do the same thing twice
	arguments.callee.done = true;

	// kill the timer
	if (window._typefaceTimer) clearInterval(_typefaceTimer);

	_typeface_js.renderDocument( function(e) { e.style.visibility = 'visible' } );
};

if (/WebKit/i.test(navigator.userAgent)) {

	var _typefaceTimer = setInterval(function() {
		if (/loaded|complete/.test(document.readyState)) {
			typefaceInit(); 
		}
	}, 10);
}

if (document.addEventListener) {
	window.addEventListener('DOMContentLoaded', function() { typefaceInit() }, false);
} 

/*@cc_on @*/
/*@if (@_win32)

document.write("<script id=__ie_onload_typeface defer src=javascript:void(0)><\/script>");
var script = document.getElementById("__ie_onload_typeface");
script.onreadystatechange = function() {
	if (this.readyState == "complete") {
		typefaceInit(); 
	}
};

/*@end @*/

})();


if (_typeface_js && _typeface_js.loadFace) _typeface_js.loadFace({"glyphs":{"S":{"x_min":-79.9375,"x_max":840.03125,"ha":826,"o":"m 839 101 q 832 155 842 131 q 821 159 828 167 q 788 124 808 140 q 746 94 769 108 q 679 70 705 70 q 614 79 644 70 q 604 87 604 82 q 613 112 604 91 q 644 273 644 195 q 554 448 644 377 l 415 527 q 329 644 329 579 q 345 708 329 672 q 544 821 399 821 q 598 814 573 821 q 685 750 667 793 q 692 724 689 736 q 705 709 696 712 q 764 748 743 700 q 770 779 770 759 q 734 862 770 823 q 599 920 689 909 q 579 922 588 922 q 558 922 569 922 q 368 872 458 922 q 230 728 274 818 q 202 614 202 670 q 354 402 202 475 q 512 227 512 327 q 475 108 512 176 q 439 91 464 87 l 260 137 q 45 169 101 174 q -78 58 -66 159 q -40 -51 -86 0 q 105 -131 7 -109 q 166 -142 136 -138 q 226 -147 196 -147 q 532 -12 406 -147 q 565 0 549 4 q 696 0 620 -12 q 829 70 770 9 q 839 101 836 77 m 365 -8 q 193 -53 281 -53 q 42 -2 99 -53 q 22 38 22 14 q 37 72 22 58 q 76 86 52 86 q 229 55 160 70 q 355 26 298 40 q 387 9 387 19 q 365 -8 387 1 "},"¦":{"x_min":112,"x_max":191,"ha":303,"o":"m 112 0 l 191 0 l 191 375 l 112 375 l 112 0 m 112 627 l 191 627 l 191 1002 l 112 1002 l 112 627 "},"/":{"x_min":-23.140625,"x_max":490,"ha":378,"o":"m 490 1002 l 371 1002 l -23 -32 l 88 -32 l 490 1002 "},"y":{"x_min":-16,"x_max":674.28125,"ha":660,"o":"m 673 101 q 666 155 676 131 q 655 159 662 168 q 592 101 631 129 q 514 68 547 70 q 469 68 487 68 q 448 66 453 68 q 404 61 411 62 q 396 60 398 60 q 394 65 394 62 q 398 79 396 69 q 543 521 543 512 q 519 555 543 544 q 484 560 507 560 q 453 562 460 564 q 425 541 430 553 q 377 432 400 485 q 331 326 354 378 q 210 137 256 173 q 136 119 172 108 q 111 186 111 129 q 169 358 111 209 q 234 516 222 496 q 232 553 249 539 q 169 577 200 577 q 157 576 164 577 q 145 574 151 575 q 105 549 117 570 q 72 482 90 523 q 34 384 53 441 q -16 136 -16 235 q -16 113 -16 124 q -14 92 -16 102 q -2 58 -11 74 q 20 29 7 41 q 49 8 33 16 q 78 0 64 0 q 217 56 140 -7 q 297 147 272 105 q 309 157 302 157 q 313 145 320 157 q 248 -33 278 51 q 237 -50 242 -47 q 174 -100 214 -64 q 109 -181 128 -144 q 89 -252 89 -223 q 147 -308 89 -308 q 241 -259 185 -308 q 313 -149 271 -233 q 359 -57 357 -61 q 395 -19 385 -28 q 445 -10 407 -10 q 530 0 502 -10 q 664 70 606 12 q 673 101 670 77 "},"Á":{"x_min":-12,"x_max":854.015625,"ha":825,"o":"m 838 100 q 831 154 841 131 q 821 159 827 167 q 746 93 791 117 q 671 71 703 68 q 625 81 635 75 q 608 118 608 90 q 621 193 608 146 q 661 311 635 238 q 728 489 688 385 q 782 621 760 568 q 817 702 804 674 q 825 731 825 718 q 783 768 825 763 q 700 735 720 778 q 593 526 639 613 q 513 386 547 439 q 221 102 332 102 q 191 107 203 102 q 138 189 138 125 q 199 372 138 257 q 248 456 223 418 q 299 524 273 493 q 754 829 545 807 q 809 853 809 835 q 789 888 809 860 q 732 920 766 920 q 467 835 623 920 q 174 593 290 739 q -12 170 -12 359 q 50 23 -12 66 q 156 -10 99 -10 q 381 102 260 -10 q 518 270 467 181 q 528 279 524 279 q 531 263 537 279 q 481 74 481 146 q 490 35 481 47 q 637 -4 525 -4 q 696 0 671 -4 q 829 70 774 15 q 838 100 835 77 m 853 1254 q 795 1271 850 1271 q 731 1259 756 1271 q 712 1243 716 1252 q 675 1165 693 1183 q 606 1098 628 1111 q 592 1080 592 1090 q 606 1061 592 1069 q 663 1058 632 1046 q 793 1144 737 1086 q 853 1254 859 1211 "},"g":{"x_min":-26,"x_max":718.859375,"ha":705,"o":"m 718 101 q 711 155 720 131 q 700 159 707 168 q 636 101 676 129 q 559 68 588 68 q 449 57 493 68 q 439 56 445 56 q 439 64 436 57 q 441 66 441 65 q 442 70 441 68 q 527 295 455 105 q 608 518 608 509 q 584 552 608 541 q 542 559 572 559 q 503 557 512 559 q 474 537 480 546 q 446 507 461 507 q 432 515 438 507 q 329 544 385 544 q 154 481 242 544 q 21 327 69 418 q -26 133 -26 236 q 92 -7 -26 -7 q 233 37 153 -16 q 317 115 297 82 q 329 125 322 125 q 333 113 340 125 q 295 29 314 69 q 259 -50 277 -11 q 240 -62 250 -56 q 170 -116 206 -80 q 112 -189 128 -158 q 97 -247 97 -220 q 117 -296 97 -278 q 167 -315 137 -315 q 262 -267 210 -315 q 385 -62 318 -222 q 489 -9 401 -22 q 539 -4 518 -7 q 575 0 560 -1 q 708 70 651 12 q 718 101 715 77 m 415 405 q 325 241 385 327 q 161 87 216 87 q 114 146 114 87 q 167 288 114 201 q 212 351 187 322 q 263 401 236 380 q 316 434 289 422 q 367 447 342 447 q 405 437 387 447 q 415 405 423 428 "},"–":{"x_min":-10.890625,"x_max":692.8125,"ha":681,"o":"m 668 205 l 692 288 l 12 288 l -10 205 l 668 205 "},"ë":{"x_min":-33,"x_max":539.4375,"ha":525,"o":"m 538 101 q 532 155 541 131 q 521 159 527 167 q 378 70 462 78 q 189 92 248 58 q 173 106 173 101 q 179 115 173 108 q 231 158 205 134 q 285 213 258 182 q 383 375 372 309 q 388 422 388 400 q 308 557 388 522 q 252 567 288 567 q 131 533 190 567 q 21 415 60 495 q -33 210 -33 306 q 40 38 -33 101 q 261 -14 104 -14 q 396 -1 336 -14 q 529 70 472 12 q 538 101 536 77 m 262 459 q 302 411 302 459 q 272 327 302 378 q 133 185 224 244 q 106 210 106 166 q 149 366 106 273 q 201 433 168 407 q 262 459 235 459 m 438 803 q 449 849 449 822 q 405 915 449 896 q 379 920 393 920 q 307 882 325 920 q 288 817 288 846 q 331 754 288 774 q 360 749 343 749 q 438 803 405 749 m 247 803 q 258 849 258 822 q 214 915 258 896 q 189 920 202 920 q 116 882 134 920 q 97 817 97 846 q 140 754 97 774 q 169 749 153 749 q 247 803 214 749 "},"ƒ":{"x_min":-53,"x_max":687,"ha":654,"o":"m -28 -126 q -53 -271 -53 -212 q 47 -405 -53 -405 q 245 -158 158 -405 q 312 77 271 -83 q 412 489 354 239 l 541 489 l 563 589 l 433 589 q 475 759 460 698 q 495 834 490 820 q 577 972 536 972 q 603 927 603 972 q 573 784 603 894 l 651 784 q 677 845 665 784 q 687 922 687 892 q 598 1058 687 1058 q 417 905 491 1058 q 369 777 394 856 q 317 589 344 698 l 204 589 l 186 489 l 291 489 q 205 95 252 273 q 106 -230 158 -83 q 49 -311 78 -311 q 25 -249 25 -311 q 29 -201 25 -234 q 44 -119 34 -169 l -28 -126 "},"Î":{"x_min":-39,"x_max":718,"ha":612,"o":"m 569 566 q 605 809 605 728 q 524 965 605 941 q 484 971 508 971 q 299 875 397 971 q 152 661 210 788 q 112 460 112 571 q 148 286 112 358 q 267 176 189 204 q 274 152 290 169 q 204 90 229 107 q 118 63 162 63 q 16 123 43 63 q 0 136 9 136 q -39 69 -39 136 q -9 -8 -39 22 q 112 -61 29 -61 q 377 69 272 -61 q 569 566 490 210 m 463 819 q 415 549 463 733 q 371 388 392 456 q 330 276 349 320 q 313 257 321 257 q 291 266 306 257 q 239 420 239 297 q 272 600 239 510 q 337 743 299 672 q 438 856 396 856 q 463 819 463 856 m 718 1070 q 708 1085 718 1075 q 630 1244 644 1166 l 521 1244 q 358 1087 439 1146 q 342 1073 342 1075 q 370 1062 342 1062 q 566 1162 449 1062 q 705 1060 660 1060 q 718 1070 718 1060 "},"e":{"x_min":-33,"x_max":539.6875,"ha":525,"o":"m 539 101 q 532 155 541 131 q 521 159 528 167 q 378 70 462 78 q 189 92 249 58 q 173 106 173 101 q 179 115 173 108 q 232 158 205 134 q 285 213 258 182 q 383 375 372 309 q 388 422 388 400 q 308 557 388 522 q 253 567 288 567 q 131 533 190 567 q 21 415 61 495 q -33 210 -33 306 q 40 38 -33 101 q 261 -14 104 -14 q 396 -1 336 -14 q 529 70 472 12 q 539 101 536 77 m 262 459 q 302 411 302 459 q 272 327 302 378 q 133 185 224 244 q 106 210 106 166 q 149 366 106 273 q 201 433 168 407 q 262 459 235 459 "},"Ã":{"x_min":-12,"x_max":839.234375,"ha":825,"o":"m 838 100 q 831 154 841 131 q 821 158 827 167 q 746 93 791 117 q 671 71 703 68 q 625 81 635 75 q 608 118 608 90 q 621 193 608 146 q 661 311 635 238 q 728 489 688 385 q 782 621 760 568 q 817 701 804 674 q 825 731 825 718 q 783 768 825 763 q 700 735 720 778 q 593 526 639 612 q 513 386 547 439 q 220 102 332 102 q 191 107 203 102 q 138 189 138 125 q 199 372 138 257 q 248 456 223 418 q 300 524 274 493 q 754 829 546 807 q 809 853 809 835 q 789 888 809 860 q 732 920 766 920 q 467 835 623 920 q 174 593 290 739 q -12 170 -12 359 q 50 23 -12 66 q 156 -10 99 -10 q 381 102 260 -10 q 519 269 467 181 q 528 278 524 278 q 531 262 538 278 q 481 74 481 146 q 490 35 481 46 q 637 -4 525 -4 q 696 0 671 -4 q 829 70 774 15 q 838 100 835 77 m 742 1110 q 798 1179 798 1167 q 777 1199 798 1199 q 751 1182 768 1199 q 697 1149 719 1149 q 633 1175 679 1149 q 530 1214 562 1214 q 450 1161 494 1214 q 395 1085 395 1092 q 414 1066 395 1066 q 461 1102 425 1066 q 494 1122 481 1122 q 560 1097 508 1122 q 660 1062 637 1062 q 742 1110 694 1062 "},"J":{"x_min":-39,"x_max":832.296875,"ha":818,"o":"m 831 102 q 824 156 834 132 q 814 160 820 168 q 741 95 785 121 q 664 70 697 70 q 563 82 585 70 q 555 102 551 89 q 584 189 570 146 q 614 275 599 232 q 657 427 639 358 q 684 550 675 496 q 707 699 699 643 q 716 780 716 756 q 588 926 716 926 q 385 841 488 926 q 239 633 279 754 q 207 452 207 533 q 297 253 207 319 q 347 224 320 235 q 404 208 374 214 q 421 185 427 204 q 400 122 406 143 q 373 91 389 91 q 310 91 343 91 q 241 82 276 91 q 60 19 121 64 q -7 -55 18 -8 q -39 -156 -39 -108 q -24 -215 -39 -187 q 128 -293 19 -293 q 272 -258 203 -293 q 434 -117 361 -215 q 467 -67 452 -94 q 498 -10 483 -41 q 524 3 503 3 q 527 1 518 3 q 556 0 535 0 q 688 0 643 -8 q 822 71 765 12 q 831 102 828 78 m 578 753 q 563 679 576 730 q 531 548 551 629 q 493 410 509 465 q 467 328 478 355 q 458 306 461 314 q 453 296 455 299 q 431 290 448 287 q 349 428 349 308 q 351 467 349 447 q 358 509 353 487 q 382 586 365 544 q 426 676 399 627 q 498 785 474 765 q 550 808 524 808 q 578 753 584 808 m 327 -28 q 215 -155 287 -106 q 129 -190 165 -190 q 83 -169 101 -190 q 73 -138 73 -155 q 140 -52 73 -90 q 297 0 208 -16 q 306 2 302 2 q 316 2 312 2 q 334 -9 334 2 q 327 -28 334 -14 "},"»":{"x_min":-23.140625,"x_max":481.828125,"ha":554,"o":"m 329 37 q 481 199 363 106 q 408 369 443 253 q 368 365 385 365 q 337 365 351 365 q 305 366 328 365 q 246 373 283 367 q 328 265 287 328 q 359 219 353 224 q 306 170 328 191 q 270 133 284 148 q 168 39 230 84 q 264 43 268 43 q 289 41 273 43 q 329 37 306 40 m 136 37 q 295 199 172 109 q 215 369 247 259 q 174 365 191 365 q 144 365 157 365 q 111 367 134 365 q 50 374 88 369 q 87 336 73 351 q 103 319 100 321 q 136 269 115 303 q 171 219 155 235 q 77 133 127 188 q -23 34 38 87 q 70 43 74 43 q 96 41 80 43 q 136 37 112 40 "},"©":{"x_min":45,"x_max":1044,"ha":1089,"o":"m 545 -32 q 894 106 750 -32 q 1044 468 1044 250 q 894 829 1044 685 q 545 968 750 968 q 194 829 338 968 q 45 468 45 685 q 194 106 45 250 q 545 -32 338 -32 m 157 468 q 268 763 157 645 q 545 881 379 881 q 820 761 707 881 q 932 468 932 643 q 820 171 932 289 q 545 54 710 54 q 268 171 379 54 q 157 468 157 289 m 708 378 q 661 290 700 323 q 561 258 622 258 q 431 320 481 258 q 382 471 382 382 q 428 622 382 564 q 558 681 475 681 q 657 649 616 681 q 708 565 697 618 l 801 565 q 719 721 789 665 q 559 774 652 774 q 352 688 428 774 q 276 470 276 602 q 353 253 276 338 q 561 165 432 165 q 718 221 652 165 q 802 378 784 278 l 708 378 "},"ò":{"x_min":-11,"x_max":480,"ha":560,"o":"m 437 499 q 386 515 410 515 q 311 426 311 515 q 340 356 311 379 q 355 327 355 345 q 334 245 355 308 q 285 133 309 168 q 184 68 240 68 q 148 77 165 68 q 123 133 123 91 q 168 293 123 190 q 258 434 198 361 q 323 504 302 492 q 334 535 347 517 q 290 548 324 548 q 142 487 221 548 q 17 309 52 417 q -11 157 -11 219 q 84 1 -11 43 q 172 -15 126 -15 q 421 166 333 -15 q 480 387 480 287 q 437 499 480 474 m 116 943 q 173 959 116 959 q 237 949 217 959 q 256 931 252 942 q 292 853 274 875 q 362 787 338 800 q 377 768 377 781 q 362 749 377 759 q 305 746 336 734 q 175 834 233 773 q 116 943 109 899 "},"^":{"x_min":153.8125,"x_max":662.859375,"ha":817,"o":"m 582 275 l 662 275 l 443 779 l 372 779 l 153 275 l 234 275 l 408 674 l 582 275 "},"«":{"x_min":70.78125,"x_max":551.25,"ha":554,"o":"m 442 266 q 509 331 481 305 q 551 369 536 357 q 488 369 513 369 q 450 369 464 369 q 421 369 435 369 q 393 367 408 369 q 334 292 370 332 q 251 203 299 252 q 295 124 273 163 q 329 37 317 85 q 354 38 341 38 q 382 40 367 38 q 470 37 378 40 q 413 127 431 91 q 372 203 386 182 q 442 266 419 242 m 243 262 q 348 369 283 313 q 288 369 313 369 q 250 369 264 369 q 220 369 235 369 q 191 367 206 369 q 70 202 142 284 q 157 37 137 101 q 181 38 168 38 q 209 40 194 38 q 298 37 205 40 q 236 135 262 92 q 191 205 209 177 q 215 228 202 214 q 243 262 228 242 "},"D":{"x_min":27,"x_max":962,"ha":1016,"o":"m 938 392 q 962 554 962 482 q 907 753 962 672 q 804 841 864 815 q 783 867 776 852 q 793 886 789 878 q 801 900 798 895 q 804 909 804 906 q 752 921 804 921 q 706 921 719 926 q 686 906 693 915 q 672 888 678 897 q 644 880 665 880 q 483 854 565 880 q 202 676 320 807 q 119 567 155 624 q 61 449 84 511 q 27 278 27 357 q 31 238 27 252 q 85 197 44 197 q 101 199 91 197 q 125 227 119 205 q 127 258 126 242 q 131 288 129 273 q 291 585 152 421 q 559 763 436 763 q 589 751 589 763 q 579 733 589 744 q 437 424 544 689 q 369 249 396 320 q 326 140 341 178 q 311 115 318 120 q 281 113 303 110 q 260 115 271 115 q 235 115 249 115 q 81 49 92 115 q 198 -28 70 -17 q 351 12 258 -33 q 430 3 376 24 q 475 -6 448 -6 q 494 -6 477 -6 q 541 -6 511 -6 q 752 74 649 -6 q 938 392 883 178 m 774 371 q 713 243 742 295 q 657 164 684 192 q 471 93 589 93 q 436 104 436 93 q 438 112 436 104 q 516 273 482 197 q 574 420 551 349 q 647 601 597 488 q 708 732 693 710 q 738 760 727 760 q 756 755 745 760 q 833 610 833 728 q 774 371 833 507 "},"∙":{"x_min":34,"x_max":225,"ha":327,"o":"m 129 150 q 196 179 167 150 q 225 247 225 209 q 196 314 225 284 q 129 344 167 344 q 62 314 91 344 q 34 247 34 284 q 62 179 34 209 q 129 150 91 150 "},"ÿ":{"x_min":-16,"x_max":675.078125,"ha":661,"o":"m 674 101 q 667 155 677 131 q 656 159 663 167 q 592 101 632 128 q 514 68 547 70 q 469 68 487 68 q 448 66 453 68 q 404 61 411 62 q 396 60 397 60 q 394 65 394 62 q 397 79 396 69 q 543 521 543 512 q 519 555 543 544 q 484 560 507 560 q 453 562 460 564 q 425 541 430 553 q 377 432 400 485 q 331 325 354 378 q 209 137 256 173 q 136 119 171 107 q 111 185 111 128 q 169 357 111 209 q 234 516 221 496 q 231 553 249 539 q 169 577 200 577 q 157 576 163 577 q 144 574 151 575 q 105 549 117 570 q 72 482 90 523 q 34 384 53 441 q -16 136 -16 235 q -16 113 -16 124 q -14 92 -16 102 q -2 58 -11 74 q 20 29 7 41 q 49 8 33 16 q 78 0 64 0 q 216 56 140 -7 q 296 146 272 105 q 309 156 302 156 q 313 145 320 156 q 247 -33 277 51 q 236 -50 242 -47 q 174 -100 213 -64 q 109 -181 128 -144 q 89 -252 89 -223 q 147 -308 89 -308 q 240 -259 185 -308 q 313 -149 270 -233 q 359 -57 357 -61 q 395 -19 385 -28 q 445 -10 407 -10 q 530 0 502 -10 q 664 70 607 12 q 674 101 671 77 m 574 803 q 586 849 586 822 q 541 915 586 896 q 515 920 529 920 q 443 882 461 920 q 425 817 425 846 q 468 754 425 774 q 497 749 480 749 q 574 803 542 749 m 384 803 q 395 849 395 822 q 351 915 395 896 q 325 920 339 920 q 253 882 270 920 q 234 817 234 846 q 277 754 234 774 q 306 749 290 749 q 384 803 351 749 "},"í":{"x_min":-12,"x_max":478.890625,"ha":372,"o":"m 385 101 q 378 155 388 132 q 367 160 374 168 q 335 124 354 140 q 292 94 316 108 q 226 70 252 70 q 128 93 155 70 q 119 119 119 101 q 129 172 119 135 q 188 350 161 265 q 241 512 215 434 q 236 544 243 529 q 216 562 228 559 q 120 559 171 574 q 88 517 97 552 q 62 429 75 473 q 35 340 49 384 q 0 213 12 261 q -12 150 -10 165 q -9 107 -12 125 q 0 74 -7 89 q 19 46 7 60 q 52 18 31 33 q 173 -4 86 -4 q 209 -4 192 -4 q 242 0 226 -4 q 375 71 318 12 q 385 101 382 78 m 478 943 q 420 959 478 959 q 356 949 377 959 q 337 931 341 942 q 302 853 320 875 q 231 787 256 800 q 218 768 218 781 q 231 749 218 759 q 288 746 257 734 q 419 834 359 773 q 478 943 486 899 "},"ˆ":{"x_min":162,"x_max":538,"ha":690,"o":"m 538 753 q 528 767 538 757 q 450 926 464 848 l 341 926 q 178 769 260 828 q 162 755 162 757 q 190 744 162 744 q 385 844 268 744 q 525 743 480 743 q 538 753 538 743 "},"w":{"x_min":-41,"x_max":702,"ha":771,"o":"m 702 456 q 676 528 702 502 q 621 551 654 551 q 557 519 580 551 q 535 444 535 487 q 575 367 535 384 q 578 330 582 365 q 533 216 573 287 q 461 116 495 150 q 395 82 425 82 q 358 122 358 82 q 395 291 358 184 q 420 358 408 327 q 443 412 432 388 q 453 444 453 430 q 399 483 453 471 q 387 485 393 484 q 374 485 380 485 q 314 445 330 485 q 250 222 270 334 q 227 174 244 194 q 193 134 209 154 q 165 114 179 123 q 134 100 150 105 q 115 96 123 96 q 84 141 84 96 q 140 355 84 218 q 212 510 182 456 q 215 522 215 519 q 159 556 215 556 q 109 552 123 556 q 73 524 86 545 q -6 330 24 440 q -41 129 -41 213 q -14 34 -41 72 q 73 -11 16 -11 q 223 58 153 -3 q 248 55 240 75 q 314 -2 266 9 q 371 -12 342 -12 q 504 39 433 -12 q 627 204 563 83 q 702 456 702 342 "},"$":{"x_min":-26,"x_max":686,"ha":713,"o":"m 671 774 q 548 846 615 824 q 530 854 532 853 q 534 872 529 858 q 539 890 539 885 q 509 906 539 906 q 466 890 475 911 q 435 870 460 870 q 312 842 373 870 q 199 729 232 804 q 178 627 178 679 q 270 435 178 509 q 296 403 296 414 q 290 379 296 395 q 250 262 271 321 q 206 142 229 203 q 168 125 198 121 q 55 163 122 132 q 21 173 35 173 q -12 135 1 173 q -26 80 -26 99 q -11 44 -26 59 q 116 -1 23 6 q 151 -16 151 -5 q 133 -69 151 -25 q 119 -107 125 -93 q 111 -127 114 -121 q 131 -162 97 -158 q 173 -150 167 -166 q 199 -80 188 -111 q 217 -28 210 -50 q 229 -10 224 -11 q 253 -10 233 -10 q 405 16 318 -15 q 560 184 534 66 q 569 250 569 217 q 506 420 569 343 q 425 498 492 438 q 416 535 409 512 q 459 659 442 613 q 483 720 476 705 q 494 734 488 731 q 515 729 498 735 q 611 666 578 707 q 639 644 628 644 q 672 680 657 644 q 686 732 686 709 q 671 774 686 759 m 416 738 q 360 584 416 721 q 348 572 353 572 q 333 581 341 572 q 302 645 302 617 q 311 684 302 666 q 380 746 333 734 q 416 738 416 757 m 425 209 q 303 117 397 131 q 274 132 267 112 q 317 259 300 207 q 346 338 335 310 q 363 359 354 359 q 378 350 369 359 q 433 246 433 299 q 425 209 433 229 "},"\\":{"x_min":-39.46875,"x_max":419.21875,"ha":378,"o":"m -39 1002 l 306 -32 l 419 -32 l 77 1002 l -39 1002 "},"Ì":{"x_min":-39,"x_max":605,"ha":612,"o":"m 569 566 q 605 809 605 728 q 524 965 605 941 q 485 971 508 971 q 299 875 398 971 q 152 661 210 788 q 112 460 112 571 q 148 286 112 358 q 267 176 189 204 q 273 152 290 169 q 204 90 229 107 q 118 63 162 63 q 16 123 43 63 q 0 136 9 136 q -39 69 -39 136 q -9 -8 -39 22 q 112 -61 29 -61 q 377 69 272 -61 q 569 566 490 210 m 463 819 q 415 549 463 733 q 370 388 392 456 q 330 276 349 320 q 313 257 321 257 q 291 266 306 257 q 239 420 239 297 q 272 600 239 510 q 337 743 299 672 q 438 856 396 856 q 463 819 463 856 m 267 1258 q 324 1274 267 1274 q 389 1264 368 1274 q 408 1246 404 1257 q 443 1168 426 1190 q 515 1101 490 1115 q 529 1083 529 1096 q 515 1064 529 1073 q 457 1061 489 1048 q 326 1148 385 1087 q 267 1258 260 1214 "},"Ç":{"x_min":-64.359375,"x_max":778,"ha":696,"o":"m 164 -299 q 521 -30 338 -299 q 535 8 535 -12 q 521 47 535 26 q 490 68 506 68 q 445 19 474 68 q 332 -105 411 -40 q 188 -178 245 -178 q 154 -168 168 -178 q 100 -41 100 -133 q 132 144 100 40 q 156 212 139 167 q 199 323 173 256 q 279 484 230 402 q 394 653 327 566 q 617 838 536 838 q 669 776 669 838 q 643 679 669 733 q 490 550 600 586 q 462 521 462 542 q 474 489 462 510 q 523 453 491 457 q 629 506 558 453 q 748 643 711 566 q 778 770 778 705 q 739 889 778 842 q 632 937 701 937 q 375 821 508 937 q 25 320 175 646 q -63 -39 -63 124 q 40 -272 -63 -208 q 117 -301 78 -296 l 73 -397 q 69 -406 69 -405 q 75 -415 69 -415 q 91 -413 78 -415 q 110 -411 105 -411 q 171 -459 171 -411 q 94 -523 171 -523 q -34 -475 28 -523 l -64 -524 q 111 -576 10 -576 q 222 -548 175 -576 q 277 -455 277 -514 q 248 -386 277 -414 q 168 -357 219 -357 q 151 -359 162 -357 q 135 -361 140 -361 l 164 -299 "},"’":{"x_min":136,"x_max":373,"ha":400,"o":"m 370 966 q 310 983 364 993 q 274 974 289 980 q 247 961 258 968 q 231 934 232 950 q 206 821 221 853 q 146 718 167 739 q 136 694 136 707 q 150 667 136 679 q 179 656 164 656 q 209 667 191 656 q 326 804 274 711 q 373 940 373 886 q 372 953 373 947 q 370 966 371 959 "},"-":{"x_min":18,"x_max":439,"ha":526,"o":"m 376 272 q 421 292 403 272 q 439 341 439 312 q 411 369 439 366 q 238 369 317 369 q 88 369 158 369 q 33 327 53 374 q 18 283 18 292 q 37 270 18 267 q 219 272 86 272 q 280 272 242 272 q 376 272 320 272 "},"Q":{"x_min":-26,"x_max":839,"ha":868,"o":"m 837 539 q 839 569 839 554 q 839 597 839 583 q 744 837 839 753 q 542 920 666 920 q 282 849 392 920 q 158 686 181 785 q 154 656 156 671 q 152 625 152 640 q 195 492 152 545 q 300 449 238 442 q 348 465 333 453 q 367 506 356 474 q 373 533 373 518 q 344 567 373 571 q 321 570 333 564 q 299 587 310 576 q 281 614 288 598 q 275 645 275 629 q 330 756 275 708 q 480 806 387 806 q 500 806 491 806 q 521 804 510 806 q 653 708 606 794 q 689 564 689 643 q 684 525 689 539 q 541 288 655 404 q 412 184 463 209 q 378 196 389 173 q 314 277 360 235 q 179 334 250 334 q 46 296 100 334 q -21 187 -6 258 q -26 153 -26 168 q 11 54 -26 95 q 105 0 48 13 q 145 -3 124 -1 q 187 -6 165 -6 q 306 7 257 -6 q 337 -3 332 14 q 386 -128 375 -110 q 493 -243 436 -233 q 512 -246 503 -246 q 527 -246 521 -246 q 594 -209 571 -246 q 608 -166 608 -187 q 595 -144 608 -147 q 572 -140 583 -141 q 541 -125 556 -136 q 491 -44 522 -112 q 473 -5 481 -25 q 455 32 465 13 q 469 64 445 53 q 561 120 515 86 q 653 199 606 154 q 837 539 818 354 m 273 145 q 264 116 284 125 q 157 96 212 91 q 79 161 73 105 q 153 223 86 223 q 173 221 167 223 q 246 186 218 214 q 273 145 259 170 "},"M":{"x_min":27,"x_max":1464.25,"ha":1450,"o":"m 1463 100 q 1456 155 1466 131 q 1445 159 1452 167 q 1413 123 1432 139 q 1370 93 1394 107 q 1304 69 1330 69 q 1179 118 1204 69 q 1194 206 1169 143 q 1407 739 1392 678 q 1416 806 1416 774 q 1308 920 1416 920 q 1125 838 1214 920 q 986 675 1080 796 q 933 606 959 640 q 880 536 907 571 q 860 520 865 520 q 857 524 857 520 q 862 542 857 532 q 948 776 907 643 q 954 812 954 794 q 919 888 954 858 q 835 918 885 918 q 721 876 775 918 q 562 694 651 823 q 513 621 538 658 q 466 546 489 583 q 447 542 447 518 q 451 567 447 550 q 461 604 457 586 q 471 640 466 622 q 488 758 488 707 q 352 918 488 904 q 337 920 345 920 q 323 920 330 920 q 145 857 222 920 q 47 706 69 795 q 27 572 27 626 q 65 454 27 499 q 107 438 78 438 q 166 475 166 438 q 157 496 166 485 q 136 588 136 526 q 159 700 136 642 q 292 808 203 808 q 307 807 299 808 q 322 805 315 806 q 374 722 374 794 q 360 629 374 683 q 284 381 337 531 q 149 30 232 232 q 148 23 148 27 q 213 -1 148 -1 q 296 26 269 -1 q 365 170 331 98 q 435 314 399 242 q 658 697 577 606 q 788 788 739 788 q 826 739 826 788 q 822 708 826 725 q 775 573 809 664 q 681 345 740 482 q 617 196 650 270 q 553 48 584 123 q 548 26 548 37 q 608 0 548 0 q 677 7 654 0 q 715 48 700 15 q 780 189 743 116 q 864 346 817 263 q 1149 742 1008 606 q 1239 790 1196 790 q 1270 756 1270 790 q 1256 704 1270 733 q 1105 352 1158 478 q 1046 197 1053 226 q 1038 134 1038 161 q 1158 7 1038 40 q 1320 0 1237 -15 q 1454 70 1396 12 q 1463 100 1460 77 "},"C":{"x_min":-63,"x_max":778,"ha":696,"o":"m 748 643 q 778 770 778 705 q 739 889 778 842 q 632 937 701 937 q 375 821 508 937 q 25 320 175 646 q -63 -39 -63 124 q 40 -272 -63 -208 q 151 -304 94 -304 q 521 -30 330 -304 q 535 8 535 -12 q 521 47 535 26 q 490 68 506 68 q 445 19 474 68 q 332 -105 411 -40 q 188 -178 245 -178 q 154 -168 168 -178 q 100 -41 100 -133 q 132 144 100 40 q 156 212 139 167 q 199 323 173 256 q 279 484 230 402 q 394 653 327 566 q 617 838 536 838 q 669 776 669 838 q 643 679 669 733 q 490 550 600 586 q 462 521 462 542 q 474 489 462 510 q 523 453 491 457 q 629 506 558 453 q 748 643 711 566 "},"œ":{"x_min":-11,"x_max":889.703125,"ha":874,"o":"m 612 459 q 652 411 652 459 q 622 327 652 378 q 483 185 574 244 q 455 210 455 166 q 499 366 455 273 q 551 433 518 407 q 612 459 585 459 m 359 70 q 373 54 366 62 q 390 38 381 45 q 611 -14 454 -14 q 746 -1 686 -14 q 879 70 822 12 q 889 101 886 77 q 882 155 891 131 q 871 159 878 167 q 728 70 812 79 q 539 92 599 58 q 523 106 523 101 q 529 115 523 108 q 582 158 555 134 q 635 213 608 183 q 733 375 722 309 q 738 423 738 400 q 658 557 738 523 q 603 567 638 567 q 435 501 509 567 q 386 515 412 515 q 326 484 344 515 l 325 482 q 310 420 310 455 q 341 356 310 375 q 357 327 357 345 q 335 245 357 307 q 285 133 310 167 q 185 68 240 68 q 148 77 165 68 q 123 133 123 91 q 168 292 123 190 q 258 434 198 360 q 324 503 303 492 q 335 535 348 517 q 291 548 325 548 q 142 486 221 548 q 17 309 53 416 q -11 156 -11 219 q 84 1 -11 42 q 172 -15 126 -15 q 359 70 279 -15 "},"!":{"x_min":150,"x_max":586,"ha":654,"o":"m 583 828 q 586 846 586 839 q 531 909 586 891 q 468 923 494 923 q 423 893 433 923 q 399 805 419 879 q 342 596 378 731 q 286 391 305 462 q 265 312 267 320 q 294 267 260 277 q 362 274 348 254 q 472 546 372 291 q 550 743 523 673 q 583 828 577 813 m 317 55 q 323 95 323 73 q 256 168 323 168 q 192 158 215 174 q 154 87 169 141 q 150 56 150 70 q 211 -6 150 -1 q 277 4 246 -11 q 317 55 308 20 "},"ç":{"x_min":-33,"x_max":487.640625,"ha":473,"o":"m 295 -5 q 321 -4 308 -4 q 344 0 333 -4 q 477 70 420 12 q 487 100 484 77 q 480 154 489 131 q 469 158 476 167 q 436 124 455 139 q 394 95 417 109 q 327 66 356 69 q 164 114 217 66 q 117 224 117 158 q 122 279 117 251 q 198 424 138 379 q 284 447 242 453 q 308 435 302 444 q 316 415 314 425 q 323 396 319 404 q 338 388 326 388 q 363 390 352 383 q 397 473 405 412 q 263 557 397 557 q 89 493 174 557 q -28 267 -5 412 q -33 220 -33 243 q 61 45 -33 104 q 247 -3 133 -3 l 200 -105 q 196 -115 196 -114 q 202 -124 196 -124 q 219 -121 205 -124 q 238 -119 232 -119 q 298 -168 298 -119 q 221 -232 298 -232 q 91 -184 155 -232 l 61 -233 q 237 -285 135 -285 q 349 -257 301 -285 q 404 -164 404 -223 q 375 -95 404 -123 q 295 -66 346 -66 q 278 -68 289 -66 q 262 -70 268 -70 l 295 -5 "},"È":{"x_min":-135,"x_max":686.140625,"ha":606,"o":"m 686 845 q 634 916 686 891 q 555 930 606 930 q 370 874 458 930 q 168 634 251 796 q 130 499 130 561 q 156 407 130 450 q 184 361 184 362 q 168 343 184 354 q 43 232 108 302 q -99 12 -50 127 q -135 -132 -135 -70 q -4 -298 -135 -259 q 44 -305 18 -305 q 254 -229 145 -305 q 400 -100 332 -177 q 475 0 463 -33 q 478 15 478 11 q 450 58 478 34 q 416 75 430 75 q 389 55 401 75 q 269 -80 356 2 q 92 -191 152 -191 q 32 -116 32 -191 q 107 83 32 -38 q 270 295 193 226 q 306 309 288 312 q 381 308 351 300 q 480 395 480 334 q 402 457 480 457 q 347 444 375 457 q 293 419 319 432 q 272 420 280 412 q 265 445 265 427 q 323 620 265 519 q 435 765 373 707 q 561 833 506 833 q 601 826 585 833 q 628 813 617 820 q 645 801 639 806 q 653 796 651 796 q 676 812 665 796 q 686 845 687 828 m 335 1258 q 392 1274 335 1274 q 457 1264 436 1274 q 476 1246 472 1257 q 511 1168 493 1190 q 582 1102 557 1115 q 596 1083 596 1096 q 582 1064 596 1074 q 525 1061 556 1049 q 394 1149 453 1088 q 335 1258 328 1214 "},"{":{"x_min":59,"x_max":694.171875,"ha":604,"o":"m 102 271 q 154 243 136 271 q 173 179 173 215 q 169 142 173 161 q 158 103 165 123 l 72 -153 q 59 -232 59 -194 q 87 -306 59 -275 q 158 -337 116 -337 l 255 -337 l 284 -251 l 216 -251 q 177 -203 177 -251 q 191 -130 177 -176 l 277 125 q 294 215 294 172 q 274 279 294 251 q 223 315 255 308 l 224 319 q 310 363 262 325 q 404 504 375 417 l 491 762 q 597 883 532 883 l 665 883 l 694 969 l 596 969 q 387 785 449 969 l 300 526 q 269 461 288 490 q 227 409 250 431 q 179 375 204 387 q 133 363 155 363 l 102 271 "},"X":{"x_min":-230,"x_max":1007.859375,"ha":994,"o":"m 1007 100 q 1000 155 1009 131 q 989 159 996 167 q 956 123 975 139 q 914 94 937 107 q 847 69 873 69 q 653 151 722 69 q 555 359 601 210 q 560 426 542 398 q 756 701 658 589 q 918 822 862 822 q 947 817 932 822 q 970 813 962 813 q 995 842 995 810 q 982 876 995 860 q 902 909 954 909 q 822 891 862 909 q 658 742 756 863 q 587 647 615 689 q 545 574 559 605 q 521 547 533 547 q 507 562 511 547 q 491 634 499 598 q 476 707 482 671 q 423 846 453 799 q 320 917 383 909 q 299 919 310 919 q 282 919 289 919 q 202 880 229 919 q 197 862 197 873 q 225 840 197 833 q 238 842 232 841 q 250 843 244 843 q 307 801 280 843 q 390 380 339 749 q 383 330 394 349 q 198 94 333 238 q -58 -94 37 -73 q -91 -98 -77 -96 q -117 -101 -106 -101 q -178 -85 -136 -101 q -193 -83 -186 -83 q -230 -122 -230 -83 q -223 -148 -230 -134 q -65 -211 -191 -211 q 414 199 167 -211 q 433 215 425 215 q 457 191 446 215 q 771 -9 551 -9 q 864 0 815 -9 q 997 70 940 11 q 1007 100 1004 77 "},"ô":{"x_min":-11,"x_max":555,"ha":560,"o":"m 437 499 q 385 515 410 515 q 311 426 311 515 q 340 356 311 379 q 355 327 355 345 q 334 245 355 308 q 285 133 309 168 q 184 68 240 68 q 148 77 165 68 q 123 133 123 91 q 168 293 123 190 q 257 434 198 361 q 323 504 302 492 q 334 535 347 517 q 290 548 324 548 q 142 487 221 548 q 17 309 52 417 q -11 157 -11 219 q 84 1 -11 43 q 172 -15 126 -15 q 421 166 333 -15 q 480 387 480 287 q 437 499 480 474 m 555 753 q 545 767 555 757 q 467 926 481 848 l 358 926 q 195 769 276 828 q 179 755 179 757 q 207 744 179 744 q 402 844 285 744 q 542 743 497 743 q 555 753 555 743 "},"#":{"x_min":59,"x_max":595,"ha":655,"o":"m 563 309 l 463 309 l 485 467 l 595 467 l 595 539 l 494 539 l 527 777 l 447 777 l 415 539 l 285 539 l 317 777 l 237 777 l 204 539 l 89 539 l 89 467 l 195 467 l 173 309 l 59 309 l 59 237 l 163 237 l 129 0 l 210 0 l 242 237 l 373 237 l 340 0 l 419 0 l 452 237 l 563 237 l 563 309 m 405 467 l 383 309 l 252 309 l 274 467 l 405 467 "},"Ê":{"x_min":-135,"x_max":758,"ha":606,"o":"m 686 845 q 634 916 686 891 q 555 930 606 930 q 369 874 458 930 q 168 634 251 796 q 130 499 130 561 q 156 407 130 450 q 184 361 184 362 q 168 343 184 354 q 43 232 108 302 q -99 12 -50 127 q -135 -132 -135 -70 q -4 -298 -135 -259 q 44 -305 18 -305 q 254 -229 145 -305 q 399 -100 331 -177 q 475 0 462 -33 q 478 15 478 11 q 450 58 478 34 q 416 75 430 75 q 388 55 401 75 q 268 -80 356 2 q 91 -191 151 -191 q 32 -116 32 -191 q 107 83 32 -38 q 270 295 193 226 q 305 309 288 312 q 380 308 350 300 q 480 395 480 334 q 402 457 480 457 q 347 444 375 457 q 293 419 319 432 q 272 420 279 412 q 265 445 265 427 q 323 620 265 519 q 435 765 373 707 q 561 833 506 833 q 601 826 585 833 q 628 813 617 820 q 645 801 639 806 q 653 795 651 795 q 676 812 665 795 q 686 845 687 828 m 758 1070 q 748 1085 758 1075 q 671 1243 684 1166 l 561 1243 q 398 1086 480 1146 q 382 1073 382 1075 q 410 1062 382 1062 q 606 1161 489 1062 q 745 1061 700 1061 q 758 1070 758 1061 "},")":{"x_min":-94,"x_max":438,"ha":438,"o":"m 393 277 q 438 561 438 424 q 322 960 438 788 q 293 977 311 977 q 256 960 274 977 q 232 922 232 936 q 242 896 232 911 q 296 786 271 859 q 333 564 333 679 q 285 295 333 432 q 211 130 254 203 q 116 -1 168 56 q -68 -148 47 -76 q -94 -187 -94 -165 q -85 -218 -94 -201 q -55 -246 -70 -246 q -34 -240 -46 -246 q 174 -91 69 -196 q 393 277 326 59 "},"\u001c":{"x_min":-14,"x_max":931,"ha":912,"o":"m 826 881 q 867 839 867 881 q 830 763 867 804 q 725 692 789 720 q 704 691 711 686 q 702 709 699 696 q 747 815 712 760 q 826 881 787 881 m 363 140 q 289 91 340 112 q 190 68 232 68 q 70 143 70 68 q 187 226 70 226 q 244 220 217 226 q 297 202 271 214 q 323 188 308 196 q 357 166 338 180 q 363 140 375 153 m 762 452 q 759 493 766 477 q 730 505 752 509 q 652 488 711 502 q 667 555 662 528 q 687 587 673 582 q 910 741 852 631 q 931 814 931 778 q 888 909 931 874 q 815 934 857 934 q 727 910 771 934 q 657 853 682 886 q 569 696 591 767 q 537 686 564 675 q 457 742 470 713 q 451 760 455 752 q 444 777 447 768 q 425 791 438 789 q 394 767 406 791 q 383 715 383 744 q 428 632 383 667 q 516 592 468 602 q 530 569 537 588 l 493 453 q 413 440 429 440 q 368 385 377 435 q 362 344 362 353 q 373 328 362 328 q 383 329 379 328 q 457 346 396 333 q 419 249 429 265 q 403 241 411 232 q 319 284 383 262 q 171 311 240 311 q 44 262 102 311 q -14 139 -14 212 q 192 0 -14 0 q 344 13 267 -14 q 453 83 417 41 q 481 83 464 95 q 600 15 542 37 q 725 -6 658 -6 q 916 70 841 -6 q 925 101 922 77 q 918 155 928 131 q 907 159 914 167 q 832 92 881 122 q 766 68 792 68 q 627 94 689 68 q 534 149 575 116 q 534 170 526 155 q 576 255 554 202 q 621 381 598 308 q 676 393 652 388 q 715 400 699 398 q 762 452 756 409 "},"Å":{"x_min":-12,"x_max":839.234375,"ha":825,"o":"m 838 100 q 831 154 841 131 q 821 159 827 167 q 745 93 791 117 q 671 71 702 68 q 625 81 634 75 q 608 118 608 90 q 621 193 608 146 q 661 311 635 238 q 728 489 688 385 q 782 621 760 568 q 817 702 804 674 q 825 731 825 718 q 782 768 825 763 q 699 735 719 778 q 593 526 638 613 q 513 386 547 439 q 221 102 332 102 q 191 107 203 102 q 138 189 138 125 q 199 372 138 257 q 248 456 223 418 q 299 524 273 493 q 753 829 545 807 q 809 853 809 835 q 789 888 809 860 q 732 920 766 920 q 467 835 623 920 q 174 593 290 739 q -12 170 -12 359 q 50 23 -12 66 q 156 -10 99 -10 q 381 102 260 -10 q 518 270 467 181 q 527 279 523 279 q 530 263 537 279 q 481 74 481 146 q 490 35 481 47 q 637 -4 525 -4 q 695 0 670 -4 q 829 70 774 15 q 838 100 835 77 m 736 1163 q 706 1235 736 1204 q 636 1266 677 1266 q 565 1235 595 1266 q 536 1163 536 1204 q 565 1091 536 1121 q 636 1062 595 1062 q 706 1091 677 1062 q 736 1163 736 1121 m 637 1109 q 599 1124 615 1109 q 584 1163 584 1140 q 599 1201 584 1186 q 637 1217 615 1217 q 675 1201 660 1217 q 690 1163 690 1186 q 675 1124 690 1140 q 637 1109 660 1109 "},"ø":{"x_min":-36.25,"x_max":504,"ha":504,"o":"m 344 656 l 285 532 q 73 441 160 532 q -24 166 -24 338 q 41 19 -24 60 l -36 -144 l 58 -144 l 126 -5 q 137 -7 128 -7 q 261 17 211 -7 q 362 102 311 42 q 401 91 381 91 q 483 117 430 91 q 504 181 504 127 q 495 241 504 241 q 471 223 497 241 q 425 205 445 205 q 403 207 408 205 q 406 217 404 210 q 412 235 408 224 q 419 261 419 253 q 407 313 419 275 q 416 323 412 318 q 426 334 421 328 q 439 384 439 352 q 377 505 439 465 l 451 656 l 344 656 m 178 108 q 105 192 105 108 q 158 348 105 281 q 256 408 204 408 q 316 353 316 408 q 280 307 316 346 q 245 220 245 271 q 262 159 245 203 q 249 140 258 149 q 227 123 239 131 q 202 112 215 116 q 178 108 189 108 "},"â":{"x_min":-39,"x_max":704.671875,"ha":690,"o":"m 704 101 q 697 155 706 132 q 686 159 693 168 q 653 124 672 140 q 611 94 634 108 q 544 70 570 70 q 453 92 475 70 q 444 119 444 101 q 453 168 444 139 q 477 236 463 197 q 513 327 491 276 q 589 499 570 457 q 585 541 599 525 q 538 556 576 549 q 486 560 499 564 q 464 545 475 556 q 448 523 457 538 q 418 520 440 507 q 316 544 372 544 q 168 502 241 544 q 15 339 69 446 q -39 143 -39 233 q 0 30 -39 74 q 102 -15 35 -15 q 248 54 172 -15 q 321 144 301 103 q 329 154 324 150 q 336 157 334 158 q 336 148 338 154 q 326 87 326 107 q 360 21 326 46 q 490 -4 395 -4 q 527 -4 509 -4 q 561 0 544 -4 q 694 71 637 12 q 704 101 701 78 m 399 407 q 272 190 335 267 q 235 145 249 162 q 214 121 221 127 q 153 85 178 85 q 104 149 104 85 q 165 314 104 216 q 255 403 199 366 q 354 441 313 441 q 401 416 401 441 q 399 407 401 410 m 538 753 q 528 767 538 757 q 451 926 464 848 l 342 926 q 178 769 260 828 q 162 755 162 757 q 190 744 162 744 q 386 844 268 744 q 525 743 480 743 q 538 753 538 743 "},"}":{"x_min":-154.8125,"x_max":479,"ha":604,"o":"m 435 360 q 383 387 401 360 q 365 451 365 415 q 368 488 365 469 q 379 527 372 507 l 465 785 q 479 864 479 826 q 450 938 479 907 q 379 969 421 969 l 282 969 l 253 883 l 321 883 q 361 835 361 883 q 346 762 361 808 l 260 505 q 244 415 244 457 q 263 350 244 379 q 314 315 282 322 l 313 311 q 227 266 275 305 q 133 126 162 212 l 46 -130 q -58 -251 5 -251 l -126 -251 l -154 -337 l -56 -337 q 150 -153 88 -337 l 237 104 q 268 168 249 139 q 310 220 287 198 q 357 254 333 243 q 404 266 381 266 l 435 360 "},"‰":{"x_min":-3,"x_max":1352,"ha":1362,"o":"m 1207 486 q 1021 379 1102 486 q 948 170 948 280 q 1091 11 948 11 q 1278 117 1197 11 q 1352 326 1352 215 q 1207 486 1352 486 m 1199 402 q 1259 317 1259 402 q 1215 174 1259 248 q 1100 94 1165 94 q 1041 179 1041 94 q 1085 322 1041 248 q 1199 402 1135 402 m 254 771 q 68 664 149 771 q -3 456 -3 566 q 139 297 -3 297 q 321 397 243 297 q 393 597 393 488 q 574 656 467 597 l 630 686 l 632 683 l 553 591 q 449 463 499 526 q 355 337 399 399 q 110 -41 110 -4 q 126 -86 110 -59 q 159 -112 144 -112 q 198 -73 174 -112 q 213 -47 205 -59 q 228 -20 221 -34 q 590 494 344 177 q 639 555 615 524 q 689 617 664 585 q 766 731 766 715 q 738 779 766 747 q 700 813 711 813 q 647 778 695 813 q 590 739 617 756 q 537 710 563 722 q 393 664 462 671 q 254 771 368 771 m 246 688 q 294 664 279 688 q 283 649 283 661 q 305 609 283 621 q 262 463 305 535 q 147 380 214 380 q 88 464 88 380 q 133 607 88 534 q 246 688 182 688 m 768 486 q 583 379 663 486 q 510 170 510 280 q 652 11 510 11 q 839 117 759 11 q 913 326 913 215 q 768 486 913 486 m 760 402 q 820 317 820 402 q 776 174 820 248 q 662 94 726 94 q 603 179 603 94 q 647 322 603 248 q 760 402 696 402 "},"Ä":{"x_min":-12,"x_max":839.234375,"ha":825,"o":"m 838 100 q 831 154 841 131 q 821 159 827 167 q 746 93 791 117 q 671 71 703 68 q 625 81 635 75 q 608 118 608 90 q 621 193 608 146 q 661 311 635 238 q 728 489 688 385 q 782 621 760 568 q 817 702 804 674 q 825 731 825 718 q 783 768 825 763 q 700 735 720 778 q 593 526 639 613 q 513 386 547 439 q 220 102 332 102 q 190 107 203 102 q 138 189 138 125 q 199 372 138 257 q 248 456 223 418 q 299 524 274 493 q 754 829 546 807 q 809 853 809 835 q 789 888 809 860 q 732 920 766 920 q 467 835 623 920 q 174 593 290 739 q -12 170 -12 359 q 50 23 -12 66 q 156 -10 99 -10 q 381 102 260 -10 q 518 270 467 181 q 528 279 524 279 q 531 263 537 279 q 481 74 481 146 q 490 35 481 47 q 637 -4 525 -4 q 696 0 671 -4 q 829 70 774 15 q 838 100 835 77 m 726 1110 q 737 1156 737 1129 q 693 1222 737 1203 q 667 1227 681 1227 q 595 1189 613 1227 q 576 1124 576 1153 q 619 1061 576 1081 q 648 1056 631 1056 q 726 1110 693 1056 m 535 1110 q 546 1156 546 1129 q 502 1222 546 1203 q 476 1227 490 1227 q 404 1189 422 1227 q 385 1124 385 1153 q 428 1061 385 1081 q 457 1056 440 1056 q 535 1110 502 1056 "},"¸":{"x_min":-165.75,"x_max":176,"ha":303,"o":"m 22 -1 l -26 -106 q -31 -115 -31 -114 q -24 -124 -31 -124 q -9 -122 -22 -124 q 9 -120 4 -120 q 70 -168 70 -120 q -5 -232 70 -232 q -135 -184 -71 -232 l -165 -233 q 9 -285 -90 -285 q 121 -257 73 -285 q 176 -164 176 -223 q 147 -95 176 -123 q 67 -66 118 -66 q 50 -68 61 -66 q 34 -70 39 -70 l 70 -1 l 22 -1 "},"a":{"x_min":-39,"x_max":704.875,"ha":691,"o":"m 704 101 q 697 155 706 132 q 686 159 693 168 q 653 124 672 140 q 611 94 634 108 q 545 70 570 70 q 453 92 475 70 q 444 119 444 101 q 453 168 444 139 q 477 236 463 197 q 513 327 491 276 q 589 499 570 457 q 585 541 599 525 q 538 556 576 549 q 486 560 500 564 q 464 545 475 556 q 448 523 457 538 q 418 520 440 507 q 316 544 372 544 q 168 502 241 544 q 15 339 69 446 q -39 143 -39 233 q 0 30 -39 74 q 102 -15 35 -15 q 248 54 172 -15 q 321 144 301 103 q 329 154 324 150 q 336 157 334 158 q 336 148 338 154 q 326 87 326 107 q 360 21 326 46 q 490 -4 395 -4 q 527 -4 509 -4 q 561 0 545 -4 q 694 71 637 12 q 704 101 701 78 m 399 407 q 272 190 335 267 q 235 145 249 162 q 214 121 221 127 q 153 85 178 85 q 104 149 104 85 q 165 314 104 216 q 255 403 199 366 q 354 441 313 441 q 401 416 401 441 q 399 407 401 410 "},"—":{"x_min":-10.890625,"x_max":1373.359375,"ha":1361,"o":"m 1348 205 l 1373 288 l 12 288 l -10 205 l 1348 205 "},"=":{"x_min":166,"x_max":651,"ha":817,"o":"m 651 388 l 166 388 l 166 307 l 651 307 l 651 388 m 651 185 l 166 185 l 166 105 l 651 105 l 651 185 "},"N":{"x_min":27,"x_max":1062.03125,"ha":1048,"o":"m 1061 101 q 1054 155 1064 132 q 1043 160 1050 168 q 1011 124 1030 140 q 968 94 992 108 q 902 70 928 70 q 832 88 862 70 q 799 150 799 110 q 804 185 799 168 q 830 262 807 194 q 896 459 853 330 q 955 640 934 572 q 983 733 977 709 q 992 798 992 767 q 918 909 992 885 q 892 913 905 911 q 866 916 880 916 q 642 785 756 916 q 557 669 599 734 q 477 526 515 605 q 461 511 470 511 q 455 519 455 511 q 458 533 455 522 q 497 734 497 649 q 391 907 497 871 q 317 921 352 921 q 97 783 200 921 q 27 570 27 688 q 73 442 27 491 q 126 418 94 418 q 169 451 169 418 q 165 465 169 455 q 158 486 162 474 q 151 511 155 498 q 148 534 148 523 q 200 724 148 616 q 303 797 234 797 q 385 695 385 797 q 356 547 385 634 q 237 236 318 431 q 182 104 205 157 q 146 25 160 51 q 141 7 141 15 q 192 -10 141 -10 q 311 58 277 -10 q 400 235 351 143 q 511 427 450 326 q 755 767 667 690 q 812 797 788 797 q 852 751 852 797 q 849 737 852 745 q 717 391 763 524 q 663 197 671 257 q 659 143 659 165 q 720 29 659 64 q 856 -5 779 -5 q 887 -3 871 -5 q 918 0 903 -2 q 1051 71 994 12 q 1061 101 1058 78 "},"ú":{"x_min":-19,"x_max":686.96875,"ha":673,"o":"m 686 101 q 679 155 689 131 q 668 159 675 167 q 636 124 655 140 q 593 94 616 108 q 527 69 553 69 q 433 95 459 69 q 429 173 416 112 q 482 342 436 203 q 535 495 525 477 q 545 527 545 513 q 480 559 545 552 q 396 511 411 566 q 370 437 386 481 q 328 334 354 394 q 216 134 260 178 q 159 97 180 97 q 123 127 123 97 q 125 146 123 134 q 129 174 127 158 q 186 342 135 206 q 222 438 208 400 q 245 495 237 475 q 252 520 252 511 q 197 564 252 548 q 144 574 167 574 q 101 543 110 574 q -16 134 -10 199 q -19 114 -19 123 q -19 98 -19 105 q 42 1 -19 23 q 95 -7 68 -7 q 310 148 204 -7 q 315 156 313 153 q 320 160 318 159 q 323 159 323 163 q 321 148 323 153 q 313 84 313 106 q 340 22 313 41 q 472 -7 382 -7 q 508 -4 491 -7 q 543 0 525 -2 q 676 70 619 12 q 686 101 683 77 m 587 943 q 529 959 587 959 q 465 949 486 959 q 446 931 451 942 q 411 853 429 875 q 340 786 365 800 q 327 768 327 781 q 340 749 327 759 q 397 746 366 734 q 528 834 468 772 q 587 943 595 899 "},"2":{"x_min":-46,"x_max":591,"ha":618,"o":"m 591 649 q 519 849 591 775 q 327 916 446 916 q 231 904 281 916 q 183 842 183 893 q 218 771 183 771 q 236 775 225 771 q 309 794 279 794 q 350 787 327 794 q 395 764 374 780 q 432 722 417 748 q 447 661 447 696 q 440 617 447 642 q 214 283 396 468 q 142 220 179 251 q 70 156 105 188 q -46 27 -46 52 q 1 -3 -46 -8 q 244 -3 67 -3 q 455 -5 423 -3 q 486 5 475 -9 q 505 48 496 17 q 514 87 514 70 q 481 122 514 115 q 455 121 470 121 q 418 121 440 121 q 287 121 370 121 q 204 121 206 121 q 182 124 182 121 q 197 143 182 127 q 326 260 274 212 q 406 338 378 309 q 591 649 591 532 "},"ü":{"x_min":-19,"x_max":687.328125,"ha":673,"o":"m 686 101 q 679 155 689 131 q 669 159 675 167 q 636 124 655 140 q 594 94 617 108 q 527 69 553 69 q 433 95 459 69 q 429 173 416 112 q 482 342 435 203 q 535 495 525 477 q 545 527 545 513 q 480 559 545 552 q 396 511 411 566 q 370 437 386 481 q 328 334 354 394 q 216 134 260 178 q 159 97 180 97 q 123 127 123 97 q 125 146 123 134 q 129 174 127 158 q 186 342 135 206 q 222 438 208 400 q 245 495 236 475 q 252 520 252 511 q 197 564 252 548 q 144 574 167 574 q 101 543 110 574 q -16 134 -10 199 q -19 114 -19 123 q -19 98 -19 105 q 42 1 -19 23 q 95 -7 68 -7 q 310 148 204 -7 q 315 156 313 153 q 320 160 318 159 q 323 159 323 163 q 321 148 323 153 q 313 84 313 106 q 340 22 313 41 q 472 -7 382 -7 q 508 -4 491 -7 q 543 0 525 -2 q 677 70 619 12 q 686 101 684 77 m 575 803 q 586 849 586 822 q 542 915 586 896 q 516 920 529 920 q 444 882 461 920 q 425 817 425 846 q 468 754 425 774 q 497 749 480 749 q 575 803 542 749 m 384 803 q 395 849 395 822 q 351 915 395 896 q 325 920 339 920 q 253 882 270 920 q 234 817 234 846 q 277 754 234 774 q 306 749 289 749 q 384 803 351 749 "},"Z":{"x_min":-53.234375,"x_max":846.578125,"ha":832,"o":"m 845 101 q 839 155 848 131 q 828 159 835 167 q 795 124 814 140 q 753 94 776 108 q 686 69 712 69 q 623 73 637 69 q 614 104 609 77 q 618 131 617 118 q 620 161 620 145 q 538 371 620 275 q 535 404 517 395 q 731 653 708 494 q 733 674 733 664 q 733 693 733 684 q 681 839 733 778 q 553 912 632 893 q 489 919 522 919 q 343 886 410 919 q 239 775 265 848 q 227 714 227 741 q 292 641 227 641 q 333 665 333 641 q 323 684 333 676 q 322 717 317 688 q 339 761 326 747 q 454 816 389 816 q 511 807 480 816 q 589 686 589 786 q 580 632 589 659 q 512 514 563 567 q 449 461 509 514 q 407 449 428 443 q 333 459 371 459 q 232 382 232 459 q 308 323 224 323 q 409 338 349 323 q 451 318 440 346 q 466 221 466 277 q 443 93 466 136 q 405 71 430 71 q 149 26 263 71 q -52 -178 -37 -47 q 66 -312 -63 -266 q 132 -322 93 -322 q 300 -284 215 -322 q 473 -154 385 -247 q 561 -29 546 -75 q 602 -6 567 -6 q 658 -6 633 -6 q 703 0 683 -6 q 836 70 779 12 q 845 101 843 77 m 385 -19 q 315 -118 385 -50 q 264 -166 287 -145 q 221 -198 240 -187 q 118 -233 167 -233 q 56 -179 56 -233 q 140 -71 56 -131 q 259 -26 182 -43 q 297 -19 274 -23 q 354 -11 320 -15 q 385 -19 385 -7 "},"u":{"x_min":-19,"x_max":687.171875,"ha":673,"o":"m 686 101 q 679 155 689 131 q 668 159 675 167 q 636 124 655 140 q 593 94 617 108 q 527 69 553 69 q 433 95 459 69 q 429 173 416 112 q 482 342 436 203 q 535 495 525 477 q 545 527 545 513 q 480 559 545 552 q 396 511 411 566 q 370 437 387 481 q 328 334 354 394 q 216 134 260 178 q 159 97 180 97 q 123 127 123 97 q 125 146 123 134 q 129 174 127 158 q 186 342 135 206 q 222 438 208 400 q 245 495 237 475 q 252 520 252 511 q 197 564 252 548 q 144 574 167 574 q 101 543 110 574 q -16 134 -10 199 q -19 114 -19 123 q -19 98 -19 105 q 42 1 -19 23 q 95 -7 68 -7 q 310 148 204 -7 q 315 156 313 153 q 320 160 318 159 q 323 159 323 163 q 321 148 323 153 q 313 84 313 106 q 340 22 313 41 q 472 -7 382 -7 q 508 -4 491 -7 q 543 0 525 -2 q 677 70 619 12 q 686 101 683 77 "},"˜":{"x_min":191,"x_max":594,"ha":691,"o":"m 538 791 q 594 862 594 848 q 573 882 594 882 q 547 865 564 882 q 493 832 515 832 q 429 857 475 832 q 325 897 357 897 q 246 843 289 897 q 191 768 191 775 q 210 749 191 749 q 257 784 219 749 q 290 804 276 804 q 355 780 302 804 q 456 743 430 743 q 538 791 490 743 "},"Ó":{"x_min":-26,"x_max":802.734375,"ha":704,"o":"m 799 781 q 750 843 767 843 q 729 830 741 843 l 688 788 q 675 780 680 780 q 663 799 665 780 q 653 832 660 814 q 635 868 646 849 q 570 929 608 912 q 484 954 514 954 q 401 933 447 954 q 375 928 390 928 q 163 809 265 928 q 17 547 77 708 q -26 291 -26 421 q 113 0 -26 54 q 203 -19 154 -19 q 416 71 309 -19 q 585 300 517 157 q 663 510 639 414 q 679 609 667 526 q 691 640 683 634 q 749 691 725 667 q 788 734 773 714 q 799 781 810 762 m 560 688 q 506 661 558 661 q 456 670 479 661 q 418 694 434 679 q 393 728 402 709 q 385 769 385 748 q 420 840 385 808 q 466 857 438 857 q 505 846 487 857 q 537 819 524 836 q 557 781 550 802 q 565 740 565 761 q 560 688 565 736 m 526 528 q 443 324 511 453 q 230 105 329 105 q 202 109 216 105 q 116 271 116 138 q 170 530 116 380 q 282 747 220 672 q 299 761 292 761 q 306 734 306 761 q 361 590 295 651 q 468 544 410 544 q 489 546 477 544 q 519 551 502 548 q 526 546 524 553 q 526 528 529 539 m 800 1255 q 741 1272 797 1272 q 677 1260 702 1272 q 658 1244 663 1253 q 622 1166 639 1184 q 552 1099 574 1112 q 539 1081 539 1091 q 552 1062 539 1070 q 609 1059 578 1047 q 740 1145 683 1087 q 800 1255 805 1212 "},"k":{"x_min":-40.0625,"x_max":604.515625,"ha":590,"o":"m 603 100 q 597 154 606 131 q 586 159 593 167 q 553 123 572 139 q 511 93 534 107 q 444 69 470 69 q 375 74 392 69 q 345 125 338 84 q 360 231 360 204 q 330 289 366 268 q 326 307 313 299 q 456 481 429 382 q 461 511 461 497 q 406 562 461 557 q 347 515 355 568 q 319 418 341 474 q 302 376 309 393 q 289 352 294 359 q 256 320 266 321 q 222 320 237 320 q 197 320 207 320 q 183 320 186 317 q 180 326 179 322 q 183 339 182 333 q 186 350 184 345 q 277 610 233 485 q 364 853 322 735 q 369 877 369 865 q 303 916 369 916 q 209 867 228 916 q 82 460 186 804 q -39 25 -32 74 q 10 -6 -43 -6 q 80 20 70 -6 q 111 111 97 71 q 134 182 124 152 q 154 214 145 216 q 224 224 187 211 q 244 206 251 234 q 230 115 235 149 q 227 70 225 81 q 275 16 227 38 q 394 -6 324 -6 q 461 0 429 -6 q 594 70 537 12 q 603 100 601 77 "},"Ù":{"x_min":27,"x_max":1107.015625,"ha":1093,"o":"m 1106 101 q 1099 155 1109 132 q 1088 159 1095 168 q 1056 124 1075 140 q 1012 94 1036 108 q 944 70 968 70 q 849 140 849 70 q 850 158 849 151 q 944 524 899 352 q 1031 849 989 695 q 1037 878 1037 866 q 987 918 1037 910 q 951 923 964 923 q 895 890 908 923 q 783 652 831 751 q 703 493 736 552 q 442 145 559 229 q 372 114 394 114 q 351 137 351 114 q 360 179 351 155 q 528 654 509 584 q 539 731 539 695 q 362 909 539 891 q 345 911 353 911 q 330 911 337 911 q 155 852 233 911 q 52 727 78 799 q 27 595 27 656 q 50 509 27 540 q 110 479 73 479 q 162 510 162 479 q 155 544 162 519 q 148 585 148 569 q 164 667 148 631 q 232 757 188 722 q 319 793 276 793 q 351 787 338 793 q 391 717 391 770 q 381 659 391 688 q 355 592 378 654 q 288 412 331 530 q 221 232 246 303 q 187 130 195 162 q 180 83 180 102 q 255 -9 180 17 q 300 -17 277 -17 q 443 29 352 -17 q 756 389 604 115 q 771 410 765 410 q 765 384 775 410 q 733 268 750 348 q 709 129 709 182 q 738 32 700 68 q 873 -8 782 -8 q 963 0 914 -8 q 1096 71 1037 10 q 1106 101 1103 78 m 513 1258 q 570 1274 513 1274 q 635 1264 614 1274 q 654 1246 650 1257 q 689 1168 672 1190 q 760 1101 736 1115 q 774 1083 774 1096 q 760 1064 774 1074 q 703 1061 734 1049 q 573 1149 631 1088 q 513 1258 506 1214 "},"Ÿ":{"x_min":27,"x_max":1131.40625,"ha":1117,"o":"m 1130 101 q 1124 155 1133 131 q 1113 159 1119 167 q 1080 123 1099 140 q 1038 93 1061 107 q 971 68 997 68 q 937 68 954 68 q 903 66 920 68 q 854 62 864 62 q 841 70 842 62 q 846 97 839 74 q 889 231 858 133 q 968 491 919 330 q 1070 836 1058 790 q 1075 863 1075 850 q 1019 904 1075 893 q 994 908 1005 907 q 977 910 983 910 q 935 881 944 910 q 736 474 885 725 q 483 144 579 215 q 381 109 423 98 q 365 135 365 113 q 375 178 365 152 q 534 670 511 504 q 536 694 536 681 q 536 719 536 708 q 358 909 536 909 q 52 699 152 909 q 27 585 27 645 q 51 484 27 529 q 99 430 71 445 q 130 421 115 421 q 171 450 171 421 q 160 470 171 461 q 144 523 144 484 q 167 632 144 570 q 328 802 231 802 q 341 801 334 802 q 355 799 348 800 q 409 714 409 789 q 404 674 409 690 q 310 414 401 663 q 211 126 221 174 q 209 109 210 117 q 209 94 209 101 q 239 17 209 44 q 319 -8 270 -8 q 485 45 400 -8 q 653 206 560 95 q 723 296 692 252 q 779 382 754 339 q 787 393 787 393 q 792 392 792 395 q 791 385 792 389 q 789 374 790 381 q 727 199 776 328 q 683 87 703 135 q 648 8 663 40 q 615 -27 633 -22 q 492 -113 573 -43 q 399 -251 399 -197 q 415 -290 399 -276 q 492 -319 448 -319 q 664 -225 569 -319 q 771 -66 746 -141 q 804 -33 779 -44 q 862 -16 827 -21 q 935 -8 896 -12 q 1011 4 974 -4 q 1079 34 1049 13 q 1100 50 1089 41 q 1121 70 1110 59 q 1130 101 1128 77 m 924 1114 q 935 1160 935 1133 q 891 1226 935 1207 q 865 1231 879 1231 q 793 1193 811 1231 q 774 1128 774 1157 q 817 1065 774 1085 q 846 1060 829 1060 q 924 1114 891 1060 m 733 1114 q 744 1160 744 1133 q 700 1226 744 1207 q 674 1231 688 1231 q 602 1193 619 1231 q 583 1128 583 1157 q 626 1065 583 1085 q 655 1060 638 1060 q 733 1114 700 1060 "},"¢":{"x_min":42,"x_max":543.21875,"ha":655,"o":"m 443 439 q 476 448 471 439 q 486 470 480 455 q 498 505 491 484 q 512 561 512 547 q 425 641 512 622 q 440 690 431 661 q 464 759 450 719 q 482 830 482 808 q 430 857 482 857 q 397 800 416 857 q 339 641 357 684 q 138 528 232 623 q 42 321 42 426 q 71 200 42 242 q 171 141 100 159 q 151 85 164 121 q 119 -3 138 49 q 95 -82 95 -72 q 162 -120 95 -120 q 196 -60 178 -120 q 236 62 219 11 q 263 144 253 113 q 402 182 334 144 q 483 229 450 209 q 532 264 515 249 q 543 304 543 275 q 540 367 543 350 q 528 385 537 385 q 483 349 531 385 q 378 279 430 307 q 247 244 304 244 q 173 314 173 244 q 244 476 173 394 q 353 549 307 549 q 378 526 378 549 q 364 484 378 516 q 352 451 352 452 q 364 439 352 439 l 443 439 "},"ß":{"x_min":-38,"x_max":646.203125,"ha":636,"o":"m 128 216 q 193 440 149 296 q 213 423 198 423 q 233 432 218 423 q 263 442 248 442 q 302 429 282 442 q 339 364 339 401 q 332 327 339 348 q 245 246 315 280 q 149 218 186 218 q 128 216 138 220 m 645 102 q 638 157 648 133 q 627 161 634 169 q 482 75 568 75 q 372 73 400 68 q 363 80 366 76 q 341 111 344 106 q 328 123 334 118 q 314 136 321 129 q 310 159 295 155 q 402 209 358 172 q 465 338 465 262 q 470 356 470 346 q 470 377 470 366 q 330 554 470 522 q 299 559 311 559 q 218 529 251 559 l 222 540 q 251 599 236 579 q 354 827 354 739 q 336 886 354 861 q 288 915 319 912 q 136 747 202 915 q 113 671 130 732 q 64 501 95 610 q -9 166 1 277 q -14 140 -11 157 q -24 100 -17 123 q -38 32 -38 54 q -8 4 -38 8 q 38 3 -4 3 l 65 3 q 70 8 66 4 q 79 22 73 12 q 88 54 84 40 q 96 77 92 68 q 104 117 100 100 q 111 148 109 134 q 159 134 142 138 q 179 127 176 129 q 237 86 213 113 q 250 65 250 70 q 236 55 250 59 q 171 34 197 43 q 134 19 145 25 q 17 -90 51 -19 q -7 -186 -7 -144 q 63 -297 -7 -255 q 151 -318 99 -318 q 330 -224 256 -318 q 401 -25 401 -136 q 397 -11 401 -15 l 397 -10 q 403 -6 397 -6 q 636 72 544 -21 q 645 102 642 79 m 264 -36 q 260 -69 262 -53 q 254 -101 258 -86 q 210 -178 244 -142 q 136 -219 175 -219 q 86 -169 86 -219 q 115 -98 86 -134 q 226 -23 165 -35 q 259 -22 252 -18 q 264 -36 264 -25 "},"é":{"x_min":-33,"x_max":539.421875,"ha":525,"o":"m 538 101 q 532 155 541 131 q 521 159 527 167 q 378 70 462 78 q 189 92 248 58 q 173 106 173 101 q 179 115 173 108 q 231 158 205 134 q 285 213 258 182 q 383 375 372 309 q 388 422 388 400 q 308 557 388 522 q 253 567 288 567 q 131 533 190 567 q 21 415 61 495 q -33 210 -33 306 q 40 38 -33 101 q 261 -14 104 -14 q 396 -1 336 -14 q 529 70 472 12 q 538 101 536 77 m 262 459 q 302 411 302 459 q 272 327 302 378 q 133 185 224 244 q 106 210 106 166 q 149 366 106 273 q 201 433 168 407 q 262 459 235 459 m 532 943 q 474 959 532 959 q 411 949 431 959 q 392 931 396 942 q 356 853 374 875 q 285 786 310 800 q 272 768 272 781 q 285 749 272 758 q 342 746 311 733 q 473 833 413 772 q 532 943 540 899 "},"s":{"x_min":-150,"x_max":577.390625,"ha":563,"o":"m 576 101 q 569 155 579 131 q 559 159 565 167 q 484 92 533 122 q 417 68 443 68 q 348 74 359 68 q 347 91 337 81 q 380 141 359 104 q 401 190 394 167 q 408 233 408 213 q 374 373 408 305 q 349 420 361 401 q 324 451 337 439 q 324 476 317 456 q 332 493 327 481 q 347 524 337 505 q 365 571 362 553 q 299 624 365 624 q 226 602 266 624 q 182 545 189 580 q 180 532 181 538 q 180 520 180 526 q 187 485 180 502 q 193 458 195 467 q 102 306 181 420 q 40 218 67 255 q -6 159 13 181 q -144 69 -73 81 q -150 54 -150 68 q -140 8 -150 29 q -126 0 -139 0 q -23 45 -64 12 q -10 44 -18 51 q 144 -10 45 -10 q 216 0 192 -10 q 251 13 218 1 q 267 12 260 16 q 343 -4 285 -4 q 433 0 394 -4 q 567 70 510 12 q 576 101 574 77 m 252 187 q 161 80 226 102 q 132 83 135 72 q 101 130 124 119 q 85 144 85 136 q 91 158 85 148 q 161 245 109 179 q 225 337 219 324 q 236 347 229 347 q 246 340 242 349 q 262 255 262 306 q 252 187 262 216 "},"B":{"x_min":-12,"x_max":882,"ha":855,"o":"m 880 699 q 882 717 882 708 q 882 733 882 725 q 737 922 882 904 q 635 906 701 927 q 604 894 620 899 q 571 881 588 888 q 554 901 554 876 q 532 918 554 918 q 465 902 502 918 q 419 857 423 884 q 413 815 416 833 q 408 783 411 797 q 385 748 404 764 q 323 689 362 730 q 230 581 284 647 q 43 295 94 413 q -12 82 -12 157 q 52 -40 -12 -3 q 106 -56 79 -56 q 201 -22 152 -56 q 253 21 241 1 q 302 30 265 44 q 476 -10 411 -10 q 616 35 548 -2 q 725 159 701 84 q 740 246 740 205 q 674 442 740 353 q 683 466 665 456 q 811 557 776 521 q 880 699 873 617 m 735 675 q 667 575 717 628 q 597 523 619 523 q 592 524 593 523 q 500 561 558 549 q 487 588 480 567 q 504 648 494 610 q 528 744 514 686 q 548 780 533 769 q 657 821 608 821 q 698 814 678 821 q 745 728 745 800 q 735 675 745 699 m 351 560 q 257 286 332 467 q 120 69 167 69 q 97 117 90 69 q 175 334 97 188 q 336 570 254 489 q 347 577 343 577 q 351 560 355 577 m 582 209 q 409 111 539 111 q 347 123 369 111 q 345 155 332 133 q 447 411 393 242 q 490 423 449 423 q 555 427 544 423 q 580 410 573 431 q 606 307 606 339 q 582 209 606 263 "},"…":{"x_min":150,"x_max":1488,"ha":1740,"o":"m 1471 30 q 1488 78 1488 51 q 1465 136 1488 112 q 1410 160 1443 160 q 1337 122 1369 160 q 1310 50 1310 90 q 1373 -15 1310 -15 q 1471 30 1436 -15 m 891 30 q 908 78 908 51 q 885 136 908 112 q 830 160 863 160 q 757 122 789 160 q 730 50 730 90 q 793 -15 730 -15 q 891 30 856 -15 m 311 30 q 328 78 328 51 q 305 136 328 112 q 250 160 283 160 q 177 122 209 160 q 150 50 150 90 q 213 -15 150 -15 q 311 30 276 -15 "},"?":{"x_min":150,"x_max":614,"ha":682,"o":"m 614 743 q 502 909 614 874 q 419 923 461 923 q 343 910 381 923 q 304 875 309 899 q 300 791 291 831 q 336 777 305 761 q 400 791 362 791 q 438 782 423 791 q 462 761 453 774 q 475 734 472 749 q 479 706 479 718 q 405 560 479 649 q 249 307 263 381 q 253 257 241 265 q 310 246 274 246 q 344 275 334 246 q 363 322 355 305 q 374 345 372 340 q 427 415 392 373 q 514 516 463 458 q 614 743 614 623 m 225 -4 q 297 25 265 -4 q 330 95 330 54 q 305 154 330 133 q 244 175 280 175 q 158 112 180 175 q 150 68 150 88 q 225 -4 150 -4 "},"H":{"x_min":1,"x_max":1049,"ha":1010,"o":"m 1044 811 q 1049 841 1049 825 q 1028 891 1049 872 q 978 911 1008 911 q 778 710 889 911 q 726 599 747 644 q 696 527 706 553 q 660 497 681 497 q 642 497 657 497 q 602 497 628 497 q 565 497 579 497 q 549 497 552 497 q 529 503 535 497 q 529 524 522 509 q 631 839 616 768 q 604 888 638 876 q 352 924 514 924 q 237 905 271 924 q 145 793 145 857 q 173 755 145 755 q 198 778 187 755 q 330 817 215 817 q 441 805 407 817 q 476 785 476 793 q 471 770 476 779 q 382 495 422 621 q 353 473 371 476 q 220 435 301 473 q 52 300 104 383 q 1 147 1 218 q 45 35 1 76 q 160 -6 90 -6 q 324 70 251 -6 q 435 252 386 134 q 454 305 444 274 q 478 376 465 335 q 516 401 486 401 l 628 401 q 639 376 643 394 q 593 105 590 125 q 613 50 598 64 q 809 -5 672 -5 q 847 -5 828 -5 q 880 0 865 -5 q 971 34 926 4 q 992 50 982 41 q 1013 70 1002 59 q 1023 101 1020 77 q 1016 155 1025 131 q 1005 159 1012 167 q 934 94 976 120 q 864 69 892 69 q 824 70 842 69 q 793 74 807 72 q 740 128 740 87 q 824 449 740 183 q 875 597 851 537 q 917 695 898 658 q 947 722 930 722 q 1000 744 974 722 q 1044 811 1034 770 m 324 345 q 266 201 304 269 q 164 111 214 111 q 113 155 113 111 q 179 270 113 202 q 308 359 245 338 q 323 360 317 363 q 324 345 327 356 "},"î":{"x_min":-12,"x_max":386.40625,"ha":372,"o":"m 385 101 q 379 156 388 132 q 368 160 374 168 q 335 124 354 140 q 293 94 316 108 q 226 70 252 70 q 128 93 155 70 q 119 119 119 101 q 129 172 119 135 q 188 350 161 265 q 241 512 215 434 q 236 544 244 529 q 217 562 229 559 q 120 559 172 575 q 88 518 97 552 q 62 429 75 473 q 35 340 49 384 q 0 213 12 261 q -12 150 -10 165 q -9 107 -12 125 q 0 74 -7 89 q 19 46 7 60 q 52 18 31 33 q 173 -4 86 -4 q 209 -4 192 -4 q 242 0 226 -4 q 376 71 319 12 q 385 101 383 78 m 379 753 q 369 767 379 757 q 291 926 305 848 l 182 926 q 19 769 101 828 q 3 755 3 757 q 31 744 3 744 q 226 844 109 744 q 366 743 321 743 q 379 753 379 743 "},"c":{"x_min":-33,"x_max":487.453125,"ha":473,"o":"m 486 101 q 480 155 489 132 q 469 159 475 168 q 436 125 455 140 q 394 96 417 109 q 327 67 356 70 q 164 115 217 67 q 117 225 117 159 q 122 280 117 252 q 198 424 138 380 q 284 448 242 454 q 307 436 301 445 q 316 415 314 426 q 322 397 319 405 q 338 388 326 388 q 363 391 352 384 q 397 474 405 413 q 263 558 397 558 q 89 494 174 558 q -28 268 -5 413 q -33 220 -33 244 q 72 39 -33 100 q 270 -4 154 -4 q 309 -4 290 -4 q 343 0 327 -4 q 477 71 420 12 q 486 101 484 78 "},"¶":{"x_min":79.21875,"x_max":872.75,"ha":817,"o":"m 79 -264 l 190 -264 l 576 880 l 732 880 l 347 -263 l 458 -263 l 872 969 l 518 969 q 114 707 203 969 q 101 627 101 667 q 158 501 101 548 q 321 455 215 455 l 79 -264 "},"•":{"x_min":103,"x_max":575,"ha":680,"o":"m 575 483 q 505 654 575 584 q 339 725 437 725 q 171 654 240 725 q 103 483 103 584 q 172 312 103 383 q 339 243 243 243 q 505 312 437 243 q 575 483 575 383 "},"¥":{"x_min":105,"x_max":737,"ha":655,"o":"m 393 403 l 445 457 l 577 457 q 596 483 588 457 q 602 512 602 500 q 593 524 602 524 l 503 524 l 732 773 q 737 781 737 777 q 696 787 737 787 q 652 781 657 787 l 383 489 l 328 770 q 253 787 325 787 q 184 767 184 787 q 188 744 184 764 l 231 524 l 131 524 q 113 507 121 524 q 105 480 105 490 q 111 457 105 457 l 243 457 l 254 403 l 134 403 q 115 386 123 403 q 108 359 108 369 q 114 336 108 336 l 239 336 l 134 43 q 125 15 125 18 q 193 0 125 0 q 265 19 258 0 l 377 336 l 510 336 q 529 362 521 336 q 535 391 535 379 q 526 403 535 403 l 393 403 "},"(":{"x_min":0,"x_max":564,"ha":523,"o":"m 555 942 q 528 980 543 980 q 510 975 523 980 q 258 802 382 936 q 58 466 123 659 q 0 140 0 295 q 108 -233 0 -68 q 145 -257 125 -257 q 185 -238 164 -257 q 207 -201 207 -220 q 198 -173 207 -188 q 113 158 113 -36 q 147 385 113 273 q 347 739 209 598 q 547 884 440 834 q 564 909 564 889 q 555 942 564 918 "},"U":{"x_min":27,"x_max":1107.015625,"ha":1093,"o":"m 1106 101 q 1099 155 1109 132 q 1088 159 1095 168 q 1056 124 1075 140 q 1012 94 1036 108 q 944 70 968 70 q 849 140 849 70 q 850 158 849 151 q 944 524 899 352 q 1031 849 989 695 q 1037 878 1037 866 q 987 918 1037 910 q 951 923 964 923 q 895 890 908 923 q 783 652 831 751 q 703 493 736 552 q 442 145 559 229 q 372 114 394 114 q 351 137 351 114 q 360 179 351 155 q 528 654 509 584 q 539 731 539 695 q 362 909 539 891 q 345 911 353 911 q 330 911 337 911 q 155 852 233 911 q 52 727 78 799 q 27 595 27 656 q 50 509 27 540 q 110 479 73 479 q 162 510 162 479 q 155 544 162 519 q 148 585 148 569 q 164 667 148 631 q 232 757 188 722 q 319 793 276 793 q 351 787 338 793 q 391 717 391 770 q 381 659 391 688 q 355 592 378 654 q 288 412 331 530 q 221 232 246 303 q 187 130 195 162 q 180 83 180 102 q 255 -9 180 17 q 300 -17 277 -17 q 443 29 352 -17 q 756 389 604 115 q 771 410 766 410 q 766 384 775 410 q 733 268 751 348 q 709 129 709 182 q 738 32 700 68 q 873 -8 782 -8 q 963 0 914 -8 q 1096 71 1037 10 q 1106 101 1103 78 "},"Ñ":{"x_min":27,"x_max":1062.03125,"ha":1048,"o":"m 1061 101 q 1054 155 1064 132 q 1043 160 1050 168 q 1011 124 1030 140 q 968 94 992 108 q 902 70 928 70 q 832 88 862 70 q 799 150 799 110 q 804 185 799 168 q 830 262 807 194 q 896 459 853 330 q 955 640 934 572 q 983 733 977 709 q 992 798 992 767 q 918 909 992 885 q 892 913 904 911 q 866 916 880 916 q 642 785 756 916 q 557 669 599 734 q 477 526 515 605 q 461 511 470 511 q 455 519 455 511 q 458 533 455 522 q 497 734 497 649 q 391 907 497 871 q 317 921 352 921 q 97 783 200 921 q 27 570 27 688 q 73 442 27 491 q 126 418 94 418 q 169 451 169 418 q 165 465 169 455 q 158 486 162 474 q 151 511 155 498 q 148 534 148 523 q 200 724 148 616 q 303 797 234 797 q 385 695 385 797 q 356 547 385 634 q 237 236 318 431 q 182 104 205 157 q 146 25 160 51 q 141 7 141 15 q 192 -10 141 -10 q 311 58 277 -10 q 400 235 351 143 q 511 427 450 326 q 755 767 667 690 q 812 797 788 797 q 852 751 852 797 q 849 737 852 745 q 717 391 763 524 q 663 197 671 257 q 659 143 659 165 q 720 29 659 64 q 855 -5 779 -5 q 887 -3 870 -5 q 918 0 903 -2 q 1051 71 994 12 q 1061 101 1058 78 m 797 1110 q 853 1179 853 1167 q 832 1199 853 1199 q 807 1182 823 1199 q 752 1149 774 1149 q 688 1175 735 1149 q 585 1215 617 1215 q 505 1162 549 1215 q 450 1085 450 1092 q 469 1066 450 1066 q 517 1103 480 1066 q 550 1123 536 1123 q 615 1097 563 1123 q 715 1062 692 1062 q 797 1110 749 1062 "},"F":{"x_min":0,"x_max":872.203125,"ha":915,"o":"m 871 362 q 856 399 876 391 q 758 426 815 417 q 740 451 733 430 q 807 650 775 556 q 866 828 838 743 q 858 867 875 859 q 811 888 839 877 q 743 910 782 899 q 555 944 638 944 q 378 925 435 944 q 280 792 280 892 q 299 736 280 757 q 339 720 316 717 q 362 736 362 720 q 360 747 362 739 q 359 760 359 754 q 364 782 359 772 q 412 822 376 807 q 487 837 447 837 q 534 831 506 837 q 600 815 562 825 q 684 786 670 796 q 687 754 698 778 q 642 633 668 706 q 585 462 616 560 q 556 447 578 447 q 409 424 509 447 q 368 367 375 419 q 368 330 364 340 q 386 322 372 320 q 521 337 465 337 q 532 305 541 337 q 513 250 522 277 q 494 195 503 223 q 390 9 446 76 q 217 -88 310 -88 q 77 -7 93 -88 q 58 16 70 16 q 52 15 55 16 q 43 13 48 14 q 0 -64 0 -2 q 138 -197 0 -158 q 214 -207 171 -207 q 504 -69 387 -207 q 679 283 601 41 q 707 322 691 322 q 759 309 724 322 q 764 280 773 305 q 761 269 763 277 q 755 245 759 260 q 743 205 745 213 q 774 182 737 189 q 805 181 796 178 q 823 205 819 182 q 848 292 837 253 q 871 362 860 331 "},":":{"x_min":150,"x_max":456,"ha":599,"o":"m 435 429 q 456 492 456 452 q 426 553 456 535 q 371 569 400 569 q 293 535 322 569 q 265 461 265 502 q 300 399 265 422 q 349 384 326 384 q 435 429 396 384 m 320 30 q 338 87 338 52 q 312 153 338 131 q 260 172 290 172 q 177 130 213 172 q 150 62 150 98 q 186 -2 150 19 q 227 -14 204 -14 q 320 30 284 -14 "},"Û":{"x_min":27,"x_max":1107.015625,"ha":1093,"o":"m 1106 101 q 1099 155 1109 132 q 1088 159 1095 168 q 1056 124 1075 140 q 1012 94 1036 108 q 944 70 968 70 q 849 140 849 70 q 850 158 849 151 q 944 524 899 352 q 1031 849 989 695 q 1037 878 1037 866 q 988 918 1037 910 q 951 923 964 923 q 895 890 909 923 q 783 652 831 751 q 703 493 736 552 q 442 145 559 229 q 372 114 394 114 q 351 137 351 114 q 360 179 351 155 q 528 654 509 584 q 539 731 539 695 q 362 909 539 891 q 345 911 353 911 q 330 911 337 911 q 155 852 233 911 q 52 727 78 799 q 27 595 27 656 q 50 509 27 540 q 110 479 73 479 q 162 510 162 479 q 155 544 162 519 q 148 585 148 569 q 164 667 148 631 q 232 757 188 722 q 319 793 276 793 q 351 787 338 793 q 391 717 391 770 q 381 659 391 688 q 355 592 378 654 q 288 412 331 530 q 221 232 246 303 q 187 130 195 162 q 180 83 180 102 q 255 -9 180 17 q 300 -17 277 -17 q 443 29 352 -17 q 756 389 604 115 q 771 410 766 410 q 766 384 775 410 q 733 268 751 348 q 709 129 709 182 q 738 32 700 68 q 873 -8 782 -8 q 963 0 914 -8 q 1096 71 1037 10 q 1106 101 1103 78 m 890 1070 q 880 1085 890 1075 q 802 1244 816 1166 l 694 1244 q 530 1087 612 1146 q 514 1073 514 1075 q 542 1062 514 1062 q 738 1162 621 1062 q 877 1061 832 1061 q 890 1070 890 1061 "},"*":{"x_min":112.828125,"x_max":570.171875,"ha":504,"o":"m 163 882 l 112 787 l 280 733 l 141 610 l 217 538 l 327 687 l 397 519 l 491 565 l 390 715 l 570 738 l 551 841 l 380 780 l 431 969 l 317 969 l 317 795 l 163 882 "},"†":{"x_min":127,"x_max":760,"ha":757,"o":"m 513 720 l 563 915 q 572 951 572 937 q 548 968 572 968 l 484 968 q 468 950 473 968 l 400 720 l 154 720 q 137 685 147 720 q 127 638 127 647 q 149 623 127 623 l 371 623 l 186 -75 q 177 -108 177 -108 q 183 -122 177 -122 l 268 -122 q 277 -104 272 -122 l 484 623 l 730 623 q 749 653 739 623 q 760 702 760 686 q 747 720 760 720 l 513 720 "},"°":{"x_min":118,"x_max":507,"ha":544,"o":"m 312 723 q 402 685 369 723 q 436 588 436 648 q 402 491 436 528 q 312 454 369 454 q 222 491 255 454 q 189 588 189 528 q 222 685 189 648 q 312 723 255 723 m 312 390 q 449 446 394 390 q 507 588 507 505 q 449 728 507 671 q 312 787 393 787 q 173 728 230 787 q 118 588 118 671 q 173 447 118 506 q 312 390 232 390 "},"\u001e":{"x_min":-53.078125,"x_max":846.578125,"ha":832,"o":"m 845 101 q 839 155 848 131 q 828 159 835 167 q 795 124 814 140 q 753 94 776 108 q 686 69 712 69 q 624 73 639 69 q 614 104 609 77 q 618 131 617 118 q 620 161 620 145 q 538 371 620 275 q 535 404 517 395 q 731 653 709 494 q 733 674 733 664 q 733 693 733 684 q 681 839 733 778 q 553 912 632 893 q 489 919 522 919 q 344 886 410 919 q 239 775 265 848 q 227 714 227 741 q 292 641 227 641 q 333 665 333 641 q 323 684 333 676 q 322 717 318 688 q 339 761 326 747 q 454 816 389 816 q 511 807 480 816 q 589 686 589 786 q 580 632 589 659 q 512 514 563 567 q 449 461 509 514 q 407 449 428 443 q 333 459 371 459 q 232 382 232 459 q 308 323 224 323 q 409 338 349 323 q 451 318 440 346 q 466 221 466 277 q 443 93 466 136 q 405 71 430 71 q 149 26 263 71 q -52 -178 -37 -47 q 66 -312 -63 -266 q 132 -322 93 -322 q 300 -284 215 -322 q 473 -154 386 -247 q 561 -29 546 -75 q 602 -6 567 -6 q 659 -6 633 -6 q 704 0 684 -6 q 836 70 779 12 q 845 101 843 77 m 385 -19 q 315 -118 385 -50 q 264 -166 288 -145 q 221 -198 240 -187 q 118 -233 167 -233 q 56 -179 56 -233 q 140 -71 56 -131 q 259 -26 182 -43 q 297 -19 274 -23 q 354 -11 320 -15 q 385 -19 385 -7 m 328 1233 q 337 1218 328 1229 q 414 1062 401 1136 l 523 1062 q 687 1216 601 1156 q 704 1232 704 1229 q 675 1243 704 1243 q 479 1142 595 1243 q 340 1244 383 1244 q 328 1233 328 1244 "},"V":{"x_min":-11,"x_max":807,"ha":725,"o":"m 798 607 q 807 635 807 621 q 793 658 807 654 q 759 673 774 667 q 736 685 745 679 q 727 718 727 689 q 731 747 727 720 q 736 796 736 774 q 735 813 736 804 q 733 829 734 821 q 703 882 728 858 q 647 906 679 906 q 617 899 634 906 q 558 800 558 871 q 600 675 558 720 q 600 633 608 667 q 518 413 573 525 q 351 187 443 261 q 208 119 268 119 q 131 232 131 119 q 135 286 131 257 q 159 414 144 354 q 193 525 174 474 q 365 858 245 661 q 370 871 370 864 q 317 906 370 899 q 293 907 303 907 q 276 907 283 907 q 209 878 241 907 q 75 620 150 824 q -11 210 -11 388 q -11 170 -11 189 q -6 132 -11 150 q 51 27 1 65 q 168 -11 101 -11 q 406 87 278 -11 q 690 575 590 232 q 718 590 695 597 q 736 583 729 586 q 746 579 742 581 q 798 607 774 568 "},"å":{"x_min":-39,"x_max":705,"ha":691,"o":"m 704 101 q 697 155 707 132 q 686 159 693 168 q 654 124 673 140 q 611 94 634 108 q 545 70 570 70 q 453 92 475 70 q 444 119 444 101 q 453 168 444 139 q 477 236 463 197 q 513 327 491 276 q 590 499 571 457 q 585 541 599 525 q 538 556 576 549 q 486 560 500 564 q 464 545 475 556 q 448 523 457 538 q 418 520 440 507 q 316 544 372 544 q 168 502 241 544 q 15 339 70 446 q -39 143 -39 233 q 0 30 -39 74 q 102 -15 35 -15 q 247 54 171 -15 q 321 144 300 103 q 329 154 324 150 q 336 157 334 158 q 336 148 338 154 q 326 87 326 107 q 360 21 326 46 q 490 -4 395 -4 q 527 -4 509 -4 q 561 0 545 -4 q 694 71 637 12 q 704 101 701 78 m 399 407 q 272 190 335 267 q 235 145 249 162 q 214 121 221 127 q 153 85 178 85 q 104 149 104 85 q 165 314 104 216 q 254 403 199 366 q 354 441 313 441 q 401 416 401 441 q 399 407 401 410 m 473 847 q 443 919 473 888 q 373 950 414 950 q 302 919 332 950 q 272 847 272 888 q 302 775 272 805 q 373 746 332 746 q 443 775 414 746 q 473 847 473 805 m 373 793 q 335 808 351 793 q 320 847 320 824 q 335 885 320 870 q 373 901 351 901 q 411 885 396 901 q 427 847 427 870 q 411 808 427 824 q 373 793 396 793 "},"0":{"x_min":48,"x_max":617,"ha":651,"o":"m 598 771 q 565 798 588 798 q 542 791 555 798 q 475 703 471 752 q 480 599 480 655 q 450 344 480 444 q 380 187 422 255 q 268 97 323 97 q 187 245 187 97 q 214 424 187 324 q 353 691 252 563 q 428 774 391 738 q 503 836 465 810 q 518 861 518 847 q 482 903 518 886 q 432 916 455 916 q 383 904 413 916 q 236 774 326 882 q 71 460 117 630 q 48 291 48 373 q 90 99 48 176 q 234 -6 139 11 q 271 -11 252 -11 q 466 106 375 -11 q 577 332 538 203 q 617 621 617 470 q 598 771 617 716 "},"”":{"x_min":136,"x_max":626,"ha":653,"o":"m 623 966 q 563 983 617 993 q 527 974 542 980 q 500 961 511 968 q 484 934 485 950 q 459 821 474 853 q 399 718 420 739 q 389 694 389 707 q 403 667 389 679 q 432 656 417 656 q 462 667 444 656 q 579 804 527 711 q 626 940 626 886 q 625 953 626 947 q 623 966 624 959 m 370 966 q 310 983 364 993 q 274 974 289 980 q 247 961 258 968 q 231 934 232 950 q 206 821 221 853 q 146 718 167 739 q 136 694 136 707 q 150 667 136 679 q 179 656 164 656 q 209 667 191 656 q 326 804 274 711 q 373 940 373 886 q 372 953 373 947 q 370 966 371 959 "},"@":{"x_min":71,"x_max":1018,"ha":1089,"o":"m 491 304 q 413 339 444 304 q 383 430 383 374 q 434 590 383 513 q 569 674 491 674 q 610 664 590 674 q 644 637 630 654 q 667 599 658 621 q 676 552 676 577 q 623 388 676 467 q 491 304 566 304 m 714 678 q 563 777 669 777 q 348 664 435 777 q 267 417 267 557 q 324 261 267 327 q 464 196 381 196 q 616 278 544 196 l 621 278 q 697 196 621 196 q 898 295 797 196 q 1018 585 1018 413 q 882 886 1018 765 q 564 1002 748 1002 q 215 854 359 1002 q 71 498 71 707 q 215 138 71 284 q 571 -7 359 -7 q 805 52 699 -7 q 977 222 911 112 l 882 222 q 576 80 763 80 q 288 196 404 80 q 174 492 174 313 q 284 792 174 671 q 564 913 394 913 q 819 822 718 913 q 927 568 927 725 q 871 378 927 464 q 751 294 816 294 q 726 327 726 294 q 729 353 726 338 q 737 391 732 369 l 835 757 l 740 757 l 714 678 "},"ö":{"x_min":-11,"x_max":531,"ha":561,"o":"m 437 499 q 386 515 410 515 q 311 426 311 515 q 341 356 311 379 q 355 327 355 345 q 334 245 355 308 q 285 133 309 168 q 184 68 240 68 q 148 77 165 68 q 123 133 123 91 q 168 293 123 190 q 257 434 198 361 q 323 504 302 492 q 334 535 347 517 q 290 548 324 548 q 142 487 221 548 q 17 309 52 417 q -11 157 -11 219 q 84 1 -11 43 q 172 -15 126 -15 q 421 166 333 -15 q 480 387 480 287 q 437 499 480 474 m 519 804 q 531 850 531 823 q 486 916 531 897 q 461 921 474 921 q 389 883 406 921 q 370 818 370 847 q 413 755 370 775 q 442 750 425 750 q 519 804 487 750 m 328 804 q 340 850 340 823 q 296 916 340 897 q 270 921 283 921 q 198 883 215 921 q 179 818 179 847 q 222 755 179 775 q 251 750 234 750 q 328 804 296 750 "},"i":{"x_min":-12,"x_max":386.71875,"ha":373,"o":"m 337 803 q 348 849 348 822 q 304 915 348 896 q 278 920 292 920 q 206 882 223 920 q 187 817 187 846 q 230 754 187 774 q 259 749 242 749 q 337 803 304 749 m 386 101 q 379 155 388 132 q 368 160 375 168 q 335 124 354 140 q 293 94 316 108 q 226 70 252 70 q 128 93 155 70 q 119 119 119 101 q 129 172 119 135 q 188 349 161 265 q 241 512 215 434 q 236 543 244 528 q 217 561 229 559 q 120 559 172 574 q 88 517 97 552 q 62 428 75 473 q 35 340 49 384 q 0 213 12 261 q -12 150 -10 165 q -9 107 -12 125 q 0 74 -7 89 q 19 46 7 60 q 52 18 31 33 q 173 -4 86 -4 q 209 -4 192 -4 q 242 0 226 -4 q 376 71 319 12 q 386 101 383 78 "},"Õ":{"x_min":-26,"x_max":802.53125,"ha":704,"o":"m 798 781 q 749 843 767 843 q 729 830 741 843 l 688 788 q 675 780 680 780 q 662 799 665 780 q 653 832 660 814 q 635 868 646 849 q 570 929 608 912 q 484 954 514 954 q 401 933 447 954 q 375 928 390 928 q 163 809 265 928 q 17 547 77 708 q -26 291 -26 421 q 113 0 -26 54 q 202 -19 154 -19 q 416 71 309 -19 q 585 300 517 157 q 662 510 639 414 q 679 609 666 526 q 691 640 683 634 q 749 691 725 667 q 788 734 773 714 q 798 781 809 762 m 560 688 q 506 661 558 661 q 456 670 479 661 q 418 694 434 679 q 393 728 402 709 q 385 769 385 748 q 420 840 385 808 q 466 857 438 857 q 505 846 487 857 q 537 819 524 836 q 557 781 550 802 q 565 740 565 761 q 560 688 565 736 m 526 528 q 443 324 511 453 q 230 105 329 105 q 202 109 216 105 q 116 271 116 138 q 170 530 116 380 q 282 747 220 672 q 299 761 292 761 q 306 734 306 761 q 361 590 295 651 q 468 544 410 544 q 490 546 477 544 q 520 551 502 548 q 526 546 524 553 q 526 528 529 539 m 698 1110 q 754 1180 754 1167 q 733 1200 754 1200 q 707 1183 724 1200 q 653 1149 675 1149 q 589 1175 635 1149 q 485 1215 518 1215 q 406 1162 450 1215 q 351 1085 351 1092 q 370 1066 351 1066 q 417 1103 380 1066 q 450 1123 436 1123 q 515 1097 464 1123 q 616 1062 593 1062 q 698 1110 650 1062 "},"þ":{"x_min":-58,"x_max":738,"ha":731,"o":"m 180 406 q 80 317 127 359 q -8 240 33 276 q -28 204 -28 220 l -28 133 q -21 114 -28 114 q 25 151 -18 114 q 100 223 67 189 l 145 271 l 147 271 q -58 -338 -58 -215 q -2 -407 -58 -407 q 65 -326 49 -407 q 110 -138 87 -225 q 161 17 134 -52 q 317 273 214 159 q 467 377 411 377 q 497 354 497 377 q 425 190 497 292 q 317 89 354 89 q 287 93 307 89 q 259 98 267 98 q 224 62 224 98 q 248 14 224 35 q 297 -7 273 -7 q 392 16 342 -7 q 454 5 417 5 q 680 92 558 5 q 738 189 738 132 q 720 239 738 239 q 690 214 716 239 q 642 173 663 190 q 604 145 621 155 q 503 108 561 120 l 503 111 q 625 360 625 241 q 593 457 625 420 q 508 494 561 494 q 286 361 388 494 l 283 361 q 320 477 305 448 q 476 932 476 786 q 429 1001 476 1001 q 364 931 390 1001 q 305 772 342 877 q 215 510 268 667 l 180 406 "},"]":{"x_min":99.46875,"x_max":536.84375,"ha":454,"o":"m 349 897 q 335 872 349 890 l 407 872 l 178 -176 l 103 -176 q 109 -201 109 -188 q 99 -226 109 -210 l 286 -226 l 536 922 l 343 922 q 349 897 349 906 "},"m":{"x_min":-41.859375,"x_max":985.609375,"ha":971,"o":"m 985 101 q 978 155 987 131 q 967 159 974 167 q 892 92 941 122 q 825 68 851 68 q 747 83 772 68 q 728 115 728 94 q 732 138 728 123 q 744 172 733 141 q 776 262 755 202 q 829 420 817 371 q 838 473 838 449 q 794 548 838 527 q 740 562 768 562 q 624 509 688 562 q 534 410 583 474 q 492 358 493 358 q 496 381 485 358 q 522 483 522 439 q 453 560 522 548 q 441 563 447 562 q 430 564 436 564 q 205 378 324 564 q 182 363 182 342 q 205 444 182 377 q 237 524 224 498 q 243 544 243 534 q 213 577 243 565 q 165 587 192 587 q 98 545 108 587 q 26 275 60 403 q -41 29 -8 147 q 17 -4 -48 -4 q 93 23 82 -4 q 183 197 111 65 q 301 391 263 346 q 379 447 350 451 q 391 403 404 442 q 315 204 351 298 q 247 26 278 111 q 311 -5 236 -5 q 388 26 377 -5 q 422 99 396 52 q 492 215 448 147 q 556 313 527 270 q 610 388 586 356 q 666 436 647 436 q 687 415 687 436 q 669 364 687 399 q 643 307 657 340 q 614 234 629 274 q 581 101 581 140 q 655 7 581 36 q 757 -8 697 -8 q 842 0 798 -8 q 975 70 918 12 q 985 101 982 77 "},"8":{"x_min":27,"x_max":631,"ha":583,"o":"m 614 857 q 462 919 540 912 q 440 921 451 921 q 417 921 428 921 q 183 779 242 921 q 166 690 166 739 q 221 504 166 611 q 221 467 235 476 q 128 379 182 442 q 39 246 57 302 q 27 173 27 210 q 66 58 27 106 q 193 -7 110 2 q 214 -10 204 -10 q 235 -10 224 -10 q 412 55 336 -10 q 487 221 487 119 q 425 438 487 327 q 412 470 412 460 q 425 490 412 478 q 480 543 458 521 q 514 581 503 565 q 539 644 539 611 q 532 690 539 660 q 495 735 521 735 q 480 725 485 735 q 422 651 463 700 q 387 612 401 628 q 364 589 372 596 q 336 589 345 574 q 305 699 305 637 q 336 781 305 746 q 413 817 367 817 q 461 808 436 817 q 560 764 551 772 q 613 790 583 758 q 631 829 631 808 q 614 857 631 846 m 349 191 q 311 121 341 149 q 232 90 276 90 q 168 110 194 90 q 139 171 139 133 q 155 225 139 198 q 283 371 204 310 q 307 364 298 382 q 354 227 354 291 q 349 191 354 209 "},"\u001b":{"x_min":-76,"x_max":883.53125,"ha":871,"o":"m 407 824 q 436 782 436 819 q 378 608 436 729 q 198 314 291 428 q 179 298 183 298 q 177 302 177 298 q 185 331 177 310 q 250 517 220 431 q 307 679 280 603 q 407 824 360 829 m 177 2 q 156 -91 177 -35 q 68 -215 107 -226 q 49 -184 49 -210 q 77 -67 49 -174 q 108 41 103 29 q 122 60 114 60 q 130 55 126 60 q 170 22 157 29 q 177 2 177 18 m 882 102 q 876 156 885 133 q 865 160 872 169 q 832 125 851 141 q 790 95 813 109 q 723 71 749 71 q 630 90 649 71 q 621 119 621 100 q 630 172 621 133 q 736 542 660 309 q 765 600 757 589 q 859 775 831 689 q 867 827 867 802 q 849 889 867 864 q 802 917 831 914 q 671 796 717 917 q 563 468 612 643 q 502 136 502 253 q 379 69 435 69 q 280 84 325 69 q 261 108 268 88 q 224 167 249 149 q 204 192 204 181 q 217 210 204 201 q 352 343 274 249 q 489 570 448 459 q 544 793 544 714 q 445 932 544 907 q 410 937 426 937 q 136 610 268 937 q 21 259 83 477 q -22 95 -5 156 q -44 12 -39 34 q -67 -104 -59 -54 q -76 -190 -76 -153 q -8 -313 -76 -298 q 39 -319 13 -319 q 251 -115 183 -319 q 266 -63 261 -88 q 274 -12 272 -37 q 291 -2 276 0 q 396 0 330 -11 q 511 55 461 11 q 556 12 527 27 q 658 -7 596 -7 q 697 -4 677 -7 q 739 0 717 -2 q 873 72 817 15 q 882 102 880 79 "},"R":{"x_min":-12,"x_max":928.140625,"ha":914,"o":"m 927 101 q 920 155 930 132 q 909 159 916 168 q 877 124 896 140 q 834 94 858 108 q 768 70 794 70 q 672 87 706 70 q 670 162 652 99 q 684 204 676 183 q 699 245 693 225 q 723 355 723 316 q 714 397 723 380 q 663 461 693 443 q 651 472 651 467 q 661 484 651 475 q 869 747 869 634 q 748 920 869 908 q 636 903 690 920 q 604 888 621 896 q 573 874 588 881 q 544 863 547 863 q 540 875 537 863 q 546 913 546 907 q 507 920 546 933 q 460 898 479 907 q 430 881 441 889 q 412 864 419 872 q 401 846 405 856 q 390 798 394 818 q 382 763 385 777 q 354 713 375 727 q 220 578 318 691 q 131 472 168 519 q 72 388 94 424 q -12 126 -12 248 q 35 16 -12 48 q 107 -4 69 -4 q 222 43 166 -4 q 317 175 277 91 q 375 302 355 258 q 397 355 394 347 q 423 389 409 389 q 530 410 481 389 q 547 413 541 413 q 576 398 565 413 q 582 362 588 384 q 573 332 581 359 q 548 252 565 305 q 524 170 533 205 q 513 112 515 136 q 509 75 509 85 q 536 23 509 40 q 652 -5 566 2 q 784 0 719 -12 q 917 71 863 15 q 927 101 924 78 m 723 762 q 727 731 727 746 q 668 606 727 670 q 627 567 648 587 q 585 529 607 548 q 544 512 566 512 q 510 518 532 512 q 479 525 488 525 q 456 537 456 527 q 462 562 456 541 q 511 724 492 659 q 536 762 521 750 q 661 812 607 812 q 723 762 708 812 m 303 507 q 286 450 301 492 q 244 341 271 409 q 162 165 185 200 q 117 132 139 132 q 96 163 96 132 q 100 191 96 176 q 181 360 115 241 q 283 519 248 483 q 302 533 297 533 q 303 507 309 533 "},"á":{"x_min":-39,"x_max":704.671875,"ha":690,"o":"m 704 101 q 697 155 706 132 q 686 159 693 168 q 653 124 672 140 q 611 94 634 108 q 544 70 570 70 q 453 92 475 70 q 444 119 444 101 q 453 168 444 139 q 477 236 463 197 q 513 327 491 276 q 589 499 570 457 q 585 541 599 525 q 538 556 576 549 q 486 560 500 564 q 464 545 475 556 q 448 523 457 538 q 418 520 440 507 q 316 544 372 544 q 168 502 241 544 q 15 339 69 446 q -39 143 -39 233 q 0 30 -39 74 q 102 -15 35 -15 q 248 54 172 -15 q 321 144 301 103 q 329 154 324 150 q 336 157 333 158 q 336 148 337 154 q 326 87 326 107 q 360 21 326 46 q 490 -4 395 -4 q 527 -4 509 -4 q 561 0 544 -4 q 694 71 637 12 q 704 101 701 78 m 399 407 q 272 190 335 267 q 235 145 249 162 q 214 121 220 127 q 152 85 178 85 q 104 149 104 85 q 165 314 104 216 q 255 403 199 366 q 354 441 313 441 q 401 416 401 441 q 399 407 401 410 m 587 944 q 529 959 587 959 q 466 949 486 959 q 447 931 451 942 q 411 853 429 876 q 340 787 365 801 q 327 769 327 781 q 340 749 327 759 q 398 746 366 734 q 528 834 468 773 q 587 944 595 899 "},"×":{"x_min":166.0625,"x_max":650.609375,"ha":817,"o":"m 352 247 l 166 56 l 221 0 l 408 190 l 596 0 l 650 58 l 464 247 l 650 435 l 596 494 l 408 301 l 221 494 l 166 438 l 352 247 "},"o":{"x_min":-11,"x_max":480,"ha":560,"o":"m 437 499 q 385 515 410 515 q 311 426 311 515 q 340 356 311 379 q 355 327 355 345 q 334 245 355 308 q 285 133 309 168 q 184 68 240 68 q 148 77 165 68 q 123 133 123 91 q 168 293 123 190 q 258 434 198 361 q 323 504 302 492 q 334 535 347 517 q 290 548 324 548 q 142 487 221 548 q 17 309 52 417 q -11 157 -11 219 q 84 1 -11 43 q 172 -15 126 -15 q 421 166 333 -15 q 480 387 480 287 q 437 499 480 474 "},"5":{"x_min":-51.21875,"x_max":626,"ha":584,"o":"m 617 866 q 626 902 626 884 q 596 927 626 933 q 457 915 551 915 q 312 923 370 915 q 257 894 270 928 q 234 828 250 877 q 193 699 219 780 q 151 565 165 613 q 133 506 136 518 q 131 481 129 487 q 156 477 136 475 q 263 455 202 483 q 347 327 347 416 q 336 262 347 300 q 142 117 292 117 q 82 125 108 117 q 61 133 76 128 q 28 148 47 139 q -15 164 -1 164 q -46 122 -40 164 q -35 28 -59 46 q 157 -11 20 -11 q 333 36 259 -11 q 476 223 440 98 q 494 338 494 283 q 293 581 494 515 q 269 593 272 587 q 272 613 266 601 q 303 711 291 673 q 319 766 315 748 q 356 786 325 786 q 555 792 510 786 q 594 816 579 798 q 617 866 602 826 "},"õ":{"x_min":-11,"x_max":539,"ha":561,"o":"m 437 499 q 385 515 410 515 q 311 426 311 515 q 340 356 311 379 q 355 327 355 345 q 334 245 355 308 q 285 133 309 168 q 184 68 240 68 q 148 77 165 68 q 123 133 123 91 q 168 293 123 190 q 258 434 198 361 q 323 504 302 492 q 334 535 347 517 q 290 548 324 548 q 142 487 221 548 q 17 309 52 417 q -11 157 -11 219 q 84 1 -11 43 q 172 -15 126 -15 q 421 166 333 -15 q 480 387 480 287 q 437 499 480 474 m 482 791 q 539 862 539 848 q 518 882 539 882 q 492 865 508 882 q 437 832 459 832 q 373 857 419 832 q 270 897 301 897 q 191 843 233 897 q 136 767 136 774 q 155 748 136 748 q 202 784 164 748 q 235 804 221 804 q 300 780 247 804 q 400 743 375 743 q 482 791 435 743 "},"7":{"x_min":82,"x_max":633,"ha":572,"o":"m 613 882 q 378 916 544 916 q 170 905 263 916 q 123 856 132 900 q 119 820 119 832 q 166 794 119 787 q 234 797 193 797 q 328 797 275 797 q 485 784 436 797 q 500 774 500 781 q 490 751 500 766 q 211 279 309 444 q 94 90 113 115 q 82 58 82 75 q 133 0 82 23 q 184 -11 162 -11 q 236 18 221 -11 q 306 168 259 70 q 423 411 352 266 q 540 651 494 558 q 609 785 586 745 q 633 852 633 831 q 613 882 633 873 "},"K":{"x_min":-11.09375,"x_max":1141,"ha":1074,"o":"m 1136 853 q 1141 881 1141 867 q 1116 912 1141 909 l 1043 912 q 983 884 1002 912 q 932 810 968 859 q 838 686 895 761 q 738 559 775 603 q 688 509 700 516 q 657 498 669 498 q 641 516 641 498 q 646 542 641 529 q 722 817 722 780 q 712 864 722 848 q 671 891 702 880 q 487 919 593 919 q 392 910 438 919 q 312 884 347 901 q 257 844 277 868 q 237 792 237 820 q 251 750 237 771 q 286 730 266 730 q 324 759 315 730 q 426 809 337 809 q 541 790 500 809 q 556 757 562 779 q 454 449 513 582 q 359 240 367 255 q 198 114 287 114 q 97 130 131 114 q 79 151 88 141 q 59 172 70 161 q 24 188 43 188 q -11 126 -11 188 q 205 0 -11 0 q 368 45 300 0 q 545 287 465 112 q 589 345 567 338 q 645 373 620 356 q 660 384 650 376 q 684 404 669 392 q 705 411 694 411 q 745 369 745 411 q 717 273 745 361 q 684 166 685 169 q 679 122 679 145 q 860 -7 679 -7 q 946 0 899 -7 q 1036 34 992 5 q 1057 50 1047 41 q 1078 70 1067 59 q 1087 101 1085 77 q 1081 155 1090 132 q 1070 159 1077 168 q 996 94 1045 122 q 928 65 955 68 q 818 114 818 65 q 823 143 818 127 q 892 379 892 330 q 863 452 892 424 q 801 479 835 475 q 780 490 780 479 q 799 511 780 499 q 878 573 834 535 q 980 664 923 611 q 1136 853 1119 795 "},",":{"x_min":82,"x_max":319,"ha":578,"o":"m 316 138 q 256 155 310 164 q 220 146 235 152 q 193 132 204 139 q 177 106 178 121 q 152 -5 166 23 q 92 -108 113 -87 q 82 -132 82 -119 q 96 -159 82 -147 q 125 -171 110 -171 q 155 -159 137 -171 q 272 -22 220 -115 q 319 112 319 58 q 318 125 319 119 q 316 138 317 131 "},"d":{"x_min":-26,"x_max":713.90625,"ha":700,"o":"m 713 101 q 706 155 716 132 q 695 159 702 168 q 662 124 682 140 q 620 94 643 108 q 554 70 579 70 q 462 92 484 70 q 460 170 449 105 q 549 463 473 241 q 638 686 597 588 q 710 860 679 785 q 699 907 720 886 q 656 921 692 914 q 607 921 620 925 q 562 886 581 915 q 495 720 555 878 q 451 606 468 648 q 432 553 435 564 q 409 543 428 539 q 346 555 371 550 q 307 555 321 559 q 183 517 251 555 q 24 340 74 456 q -26 137 -26 225 q 8 29 -26 69 q 108 -15 44 -15 q 333 154 208 -15 q 347 168 343 168 q 348 158 349 168 q 341 113 343 130 q 339 89 339 96 q 375 22 339 48 q 503 -4 411 -4 q 538 -4 521 -4 q 570 0 555 -4 q 703 71 646 12 q 713 101 710 78 m 390 430 q 377 395 388 419 q 347 333 366 371 q 308 261 325 292 q 277 211 291 230 q 242 159 255 179 q 221 132 228 138 q 154 92 186 92 q 110 144 110 92 q 174 315 110 206 q 280 422 214 384 q 364 451 330 451 q 390 430 396 448 "},"¨":{"x_min":186,"x_max":537,"ha":371,"o":"m 526 803 q 537 849 537 822 q 493 915 537 896 q 467 920 481 920 q 395 882 412 920 q 376 817 376 846 q 419 754 376 774 q 448 749 431 749 q 526 803 493 749 m 336 803 q 347 849 347 822 q 303 915 347 896 q 277 920 291 920 q 205 882 222 920 q 186 817 186 846 q 229 754 186 774 q 258 749 241 749 q 336 803 303 749 "},"Ô":{"x_min":-26,"x_max":802.640625,"ha":704,"o":"m 799 781 q 750 843 767 843 q 729 830 741 843 l 688 788 q 675 780 680 780 q 662 799 665 780 q 653 832 660 814 q 635 868 646 849 q 570 929 608 912 q 484 954 514 954 q 401 933 447 954 q 375 928 390 928 q 163 809 265 928 q 17 547 77 708 q -26 291 -26 421 q 113 0 -26 54 q 202 -19 154 -19 q 416 71 309 -19 q 585 300 517 157 q 662 510 639 414 q 679 609 667 526 q 691 640 683 634 q 749 691 725 667 q 788 734 773 714 q 799 781 809 762 m 560 688 q 506 661 558 661 q 456 670 479 661 q 418 694 434 679 q 393 728 402 709 q 385 769 385 748 q 420 840 385 808 q 466 857 438 857 q 505 846 487 857 q 537 819 524 836 q 557 781 550 802 q 565 740 565 761 q 560 688 565 736 m 526 528 q 443 324 511 453 q 230 105 329 105 q 202 109 216 105 q 116 271 116 138 q 170 530 116 380 q 282 747 220 672 q 299 761 292 761 q 306 734 306 761 q 361 590 295 651 q 468 544 410 544 q 489 546 477 544 q 519 551 502 548 q 526 546 524 553 q 526 528 529 539 m 765 1070 q 755 1085 765 1075 q 677 1244 691 1166 l 569 1244 q 405 1087 487 1146 q 389 1073 389 1075 q 417 1062 389 1062 q 613 1162 496 1062 q 752 1061 707 1061 q 765 1070 765 1061 "},"E":{"x_min":-135,"x_max":686.140625,"ha":606,"o":"m 686 845 q 634 916 686 891 q 555 930 606 930 q 370 874 458 930 q 168 634 251 796 q 130 499 130 561 q 156 407 130 450 q 184 361 184 362 q 168 343 184 354 q 43 232 108 302 q -99 12 -50 127 q -135 -132 -135 -70 q -4 -298 -135 -259 q 43 -305 18 -305 q 254 -229 145 -305 q 400 -100 331 -177 q 475 0 462 -33 q 478 15 478 11 q 450 58 478 34 q 416 75 430 75 q 389 55 401 75 q 269 -80 356 2 q 91 -191 151 -191 q 32 -116 32 -191 q 107 83 32 -38 q 270 295 193 226 q 305 309 288 312 q 380 308 351 300 q 480 395 480 334 q 402 457 480 457 q 347 444 375 457 q 293 419 319 432 q 272 420 280 412 q 265 445 265 427 q 323 620 265 519 q 435 765 373 707 q 561 833 506 833 q 601 826 585 833 q 628 813 617 820 q 645 801 639 806 q 653 796 651 796 q 676 812 665 796 q 686 845 687 828 "},"Y":{"x_min":27,"x_max":1131.40625,"ha":1117,"o":"m 1130 101 q 1124 155 1133 131 q 1113 159 1119 167 q 1080 123 1099 140 q 1038 93 1061 107 q 971 68 997 68 q 936 68 953 68 q 903 66 919 68 q 854 62 864 62 q 840 70 842 62 q 846 97 839 74 q 889 231 858 133 q 968 491 919 330 q 1070 836 1058 790 q 1075 863 1075 850 q 1019 904 1075 893 q 994 908 1005 907 q 977 910 983 910 q 934 881 944 910 q 736 474 885 725 q 483 144 579 215 q 381 109 423 98 q 365 135 365 113 q 375 178 365 152 q 534 670 511 504 q 536 694 536 681 q 536 719 536 708 q 358 909 536 909 q 52 699 152 909 q 27 585 27 645 q 51 484 27 529 q 99 430 71 445 q 130 421 115 421 q 171 450 171 421 q 160 470 171 461 q 144 523 144 484 q 167 632 144 570 q 328 802 231 802 q 341 801 334 802 q 355 799 348 800 q 409 714 409 789 q 404 674 409 690 q 310 414 401 663 q 211 126 221 174 q 209 109 210 117 q 209 94 209 101 q 241 14 209 44 q 319 -8 271 -8 q 485 45 401 -8 q 654 206 560 95 q 723 296 692 252 q 779 382 755 339 q 787 393 787 393 q 792 392 792 395 q 791 385 792 389 q 789 374 790 381 q 728 199 777 328 q 683 87 703 135 q 649 8 663 40 q 616 -27 634 -22 q 492 -113 574 -43 q 399 -251 399 -197 q 415 -290 399 -276 q 492 -319 448 -319 q 665 -225 569 -319 q 771 -66 747 -141 q 804 -33 779 -44 q 862 -16 827 -21 q 935 -8 896 -12 q 1011 4 974 -4 q 1079 34 1049 13 q 1100 50 1089 41 q 1121 70 1110 59 q 1130 101 1128 77 "},"\"":{"x_min":136,"x_max":626,"ha":653,"o":"m 623 966 q 563 983 617 993 q 527 974 542 980 q 500 961 511 968 q 484 934 485 950 q 459 821 474 853 q 399 718 420 739 q 389 694 389 707 q 403 667 389 679 q 432 656 417 656 q 462 667 444 656 q 579 804 527 711 q 626 940 626 886 q 625 953 626 947 q 623 966 624 959 m 370 966 q 310 983 364 993 q 274 974 289 980 q 247 961 258 968 q 231 934 232 950 q 206 821 221 853 q 146 718 167 739 q 136 694 136 707 q 150 667 136 679 q 179 656 164 656 q 209 667 191 656 q 326 804 274 711 q 373 940 373 886 q 372 953 373 947 q 370 966 371 959 "},"‹":{"x_min":78.9375,"x_max":356.609375,"ha":429,"o":"m 251 262 q 298 315 272 288 q 356 369 325 342 q 296 369 321 369 q 258 369 272 369 q 228 369 243 369 q 200 367 215 369 q 78 202 151 284 q 166 37 145 101 q 189 38 176 38 q 217 40 202 38 q 306 37 213 40 q 244 135 270 92 q 200 205 217 177 q 251 262 219 221 "},"ê":{"x_min":-33,"x_max":539.390625,"ha":525,"o":"m 538 101 q 531 155 541 131 q 521 159 527 167 q 378 70 462 78 q 189 92 249 58 q 173 106 173 101 q 179 115 173 108 q 232 158 205 134 q 285 213 258 182 q 383 375 372 309 q 388 422 388 400 q 308 557 388 522 q 253 567 288 567 q 131 533 190 567 q 21 415 60 495 q -33 210 -33 306 q 40 38 -33 101 q 261 -14 104 -14 q 396 -1 336 -14 q 529 70 472 12 q 538 101 536 77 m 262 459 q 302 411 302 459 q 272 327 302 378 q 133 185 224 244 q 106 210 106 166 q 149 366 106 273 q 201 433 168 407 q 262 459 235 459 m 419 753 q 409 767 419 757 q 332 926 345 848 l 223 926 q 59 769 141 828 q 43 755 43 757 q 71 744 43 744 q 266 844 149 744 q 406 742 362 742 q 419 753 419 742 "},"Ï":{"x_min":-39,"x_max":665,"ha":612,"o":"m 569 566 q 605 809 605 728 q 524 965 605 941 q 484 971 508 971 q 299 875 397 971 q 152 661 210 788 q 112 460 112 571 q 148 286 112 358 q 267 176 189 204 q 273 152 290 169 q 204 90 229 107 q 118 63 162 63 q 16 123 43 63 q 0 136 9 136 q -39 69 -39 136 q -9 -8 -39 22 q 112 -61 29 -61 q 377 69 272 -61 q 569 566 490 210 m 463 819 q 415 549 463 733 q 370 388 392 456 q 329 276 349 320 q 313 257 321 257 q 291 266 306 257 q 239 420 239 297 q 272 600 239 510 q 337 743 299 672 q 438 856 396 856 q 463 819 463 856 m 654 1110 q 665 1156 665 1129 q 621 1222 665 1203 q 595 1227 609 1227 q 523 1189 540 1227 q 504 1124 504 1153 q 547 1061 504 1081 q 576 1056 559 1056 q 654 1110 621 1056 m 463 1110 q 474 1156 474 1129 q 430 1222 474 1203 q 404 1227 417 1227 q 332 1189 349 1227 q 313 1124 313 1153 q 356 1061 313 1081 q 385 1056 368 1056 q 463 1110 430 1056 "},"„":{"x_min":136,"x_max":626,"ha":653,"o":"m 623 138 q 563 155 617 164 q 527 146 542 152 q 500 132 511 139 q 484 106 485 121 q 459 -5 473 23 q 399 -108 420 -87 q 389 -132 389 -119 q 403 -159 389 -147 q 432 -171 417 -171 q 462 -159 444 -171 q 579 -22 527 -115 q 626 112 626 58 q 625 125 626 119 q 623 138 624 131 m 370 138 q 310 155 364 164 q 274 146 289 152 q 247 132 258 139 q 231 106 232 121 q 206 -5 220 23 q 146 -108 167 -87 q 136 -132 136 -119 q 150 -159 136 -147 q 179 -171 164 -171 q 209 -159 191 -171 q 326 -22 274 -115 q 373 112 373 58 q 372 125 373 119 q 370 138 371 131 "},"Â":{"x_min":-12,"x_max":858,"ha":825,"o":"m 838 100 q 831 154 841 131 q 821 159 827 167 q 746 93 791 117 q 671 71 703 68 q 625 81 635 75 q 608 118 608 90 q 621 193 608 146 q 661 311 635 238 q 728 489 688 385 q 782 621 760 568 q 817 702 804 674 q 825 731 825 718 q 783 768 825 763 q 700 735 720 778 q 593 526 639 613 q 513 386 547 439 q 221 102 332 102 q 191 107 203 102 q 138 189 138 125 q 199 372 138 257 q 248 456 223 418 q 299 524 274 493 q 754 829 546 807 q 809 853 809 835 q 789 888 809 860 q 732 920 766 920 q 467 835 623 920 q 174 593 290 739 q -12 170 -12 359 q 50 23 -12 66 q 156 -10 99 -10 q 381 102 260 -10 q 518 270 467 181 q 528 279 524 279 q 531 263 538 279 q 481 74 481 146 q 490 35 481 47 q 637 -4 525 -4 q 696 0 671 -4 q 829 70 774 15 q 838 100 836 77 m 858 1069 q 848 1084 858 1074 q 770 1243 784 1165 l 662 1243 q 498 1086 580 1145 q 482 1072 482 1074 q 510 1061 482 1061 q 707 1161 590 1061 q 845 1060 800 1060 q 858 1069 858 1060 "},"Í":{"x_min":-39,"x_max":770.125,"ha":612,"o":"m 569 566 q 605 809 605 728 q 524 965 605 941 q 484 971 508 971 q 299 875 397 971 q 152 661 209 788 q 112 460 112 571 q 148 286 112 358 q 267 176 189 204 q 274 152 290 169 q 204 90 229 107 q 118 63 162 63 q 16 123 43 63 q 0 136 9 136 q -39 69 -39 136 q -9 -8 -39 22 q 112 -61 29 -61 q 377 69 272 -61 q 569 566 490 210 m 463 819 q 416 549 463 733 q 371 388 392 456 q 330 276 349 320 q 313 257 322 257 q 291 266 306 257 q 239 420 239 297 q 272 600 239 510 q 338 743 300 672 q 438 856 396 856 q 463 819 463 856 m 769 1254 q 711 1271 766 1271 q 647 1259 671 1271 q 628 1243 632 1252 q 591 1165 609 1183 q 521 1098 543 1111 q 508 1080 508 1090 q 521 1061 508 1069 q 579 1058 547 1046 q 709 1144 652 1086 q 769 1254 775 1211 "},"´":{"x_min":327,"x_max":587.890625,"ha":673,"o":"m 587 943 q 529 959 587 959 q 465 949 486 959 q 446 931 450 942 q 411 853 429 875 q 340 786 365 800 q 327 768 327 781 q 340 749 327 759 q 397 746 366 734 q 528 834 468 773 q 587 943 595 899 "},"ì":{"x_min":-46.640625,"x_max":386.109375,"ha":372,"o":"m 385 101 q 378 155 388 132 q 367 160 374 168 q 335 124 354 140 q 293 94 316 108 q 226 70 252 70 q 128 93 155 70 q 119 119 119 101 q 129 172 119 135 q 188 350 161 265 q 241 512 215 434 q 236 544 243 529 q 216 562 228 559 q 120 559 171 574 q 88 517 97 552 q 62 429 75 473 q 35 340 49 384 q 0 213 12 261 q -12 150 -10 165 q -9 107 -12 125 q 0 74 -7 89 q 19 46 7 60 q 52 18 31 33 q 173 -4 86 -4 q 209 -4 192 -4 q 242 0 226 -4 q 375 71 318 12 q 385 101 382 78 m -46 943 q 10 959 -46 959 q 75 949 54 959 q 94 931 90 942 q 129 853 112 875 q 200 787 176 800 q 214 768 214 781 q 200 749 214 759 q 143 746 174 734 q 12 834 71 773 q -46 943 -52 899 "},"±":{"x_min":166,"x_max":651,"ha":817,"o":"m 369 344 l 166 344 l 166 263 l 369 263 l 369 114 l 448 114 l 448 263 l 651 263 l 651 344 l 448 344 l 448 494 l 369 494 l 369 344 m 166 0 l 651 0 l 651 81 l 166 81 l 166 0 "},"Ú":{"x_min":27,"x_max":1107.015625,"ha":1093,"o":"m 1106 101 q 1099 155 1109 132 q 1088 159 1095 168 q 1056 124 1075 140 q 1012 94 1036 108 q 944 70 968 70 q 849 140 849 70 q 850 158 849 151 q 944 524 899 352 q 1031 849 989 695 q 1037 878 1037 866 q 987 918 1037 910 q 951 923 964 923 q 895 890 908 923 q 783 652 831 751 q 703 493 736 552 q 442 145 559 229 q 372 114 394 114 q 351 137 351 114 q 360 179 351 155 q 528 654 509 584 q 539 731 539 695 q 362 909 539 891 q 345 911 353 911 q 330 911 337 911 q 155 852 233 911 q 52 727 78 799 q 27 595 27 656 q 50 509 27 540 q 110 479 73 479 q 162 510 162 479 q 155 544 162 519 q 148 585 148 569 q 164 667 148 631 q 232 757 188 722 q 319 793 276 793 q 351 787 338 793 q 391 717 391 770 q 381 659 391 688 q 355 592 378 654 q 288 412 331 530 q 221 232 246 303 q 187 130 195 162 q 180 83 180 102 q 255 -9 180 17 q 300 -17 277 -17 q 443 29 352 -17 q 756 389 604 115 q 771 410 766 410 q 766 384 775 410 q 733 268 751 348 q 709 129 709 182 q 738 32 700 68 q 873 -8 782 -8 q 963 0 914 -8 q 1096 71 1037 10 q 1106 101 1103 78 m 933 1255 q 874 1271 930 1271 q 810 1260 835 1271 q 791 1244 795 1253 q 755 1166 772 1184 q 685 1099 707 1112 q 672 1081 672 1091 q 685 1062 672 1070 q 742 1059 711 1046 q 873 1145 816 1087 q 933 1255 938 1212 "},"|":{"x_min":112,"x_max":191,"ha":303,"o":"m 112 0 l 191 0 l 191 1002 l 112 1002 l 112 0 "},"§":{"x_min":36.96875,"x_max":720.109375,"ha":757,"o":"m 446 205 q 587 254 530 205 q 646 387 646 304 q 579 551 646 467 q 517 621 548 586 q 454 690 486 656 q 388 829 388 767 q 423 883 388 860 q 487 902 453 902 q 577 871 543 902 q 621 817 587 864 q 670 787 643 787 q 720 842 720 787 q 650 947 720 895 q 491 1002 577 1002 q 340 960 398 1002 q 271 824 271 911 q 313 699 271 763 q 176 665 218 699 q 108 515 108 613 q 174 355 108 441 q 236 284 205 318 q 298 214 266 249 q 365 90 365 138 q 356 58 365 73 q 335 31 348 43 q 305 13 322 19 q 271 7 288 7 q 177 37 215 7 q 128 91 161 49 q 87 122 106 122 q 51 108 67 122 q 36 73 36 94 q 108 -45 36 1 q 254 -92 170 -92 q 426 -36 367 -92 q 482 103 482 16 q 470 153 482 127 q 446 205 458 180 m 529 373 q 432 294 529 294 q 302 384 383 294 q 225 527 225 472 q 311 613 225 613 q 450 524 375 613 q 529 373 529 436 "},"Ý":{"x_min":27,"x_max":1131.40625,"ha":1117,"o":"m 1130 101 q 1124 155 1133 131 q 1113 159 1119 167 q 1080 123 1099 140 q 1038 93 1061 107 q 971 68 997 68 q 936 68 953 68 q 903 66 919 68 q 854 62 864 62 q 840 70 842 62 q 846 97 839 74 q 889 231 858 133 q 968 491 919 330 q 1070 836 1058 790 q 1075 863 1075 850 q 1019 904 1075 893 q 994 908 1005 907 q 977 910 983 910 q 934 881 944 910 q 736 474 885 725 q 483 144 579 215 q 381 109 423 98 q 365 135 365 113 q 375 178 365 152 q 534 670 511 504 q 536 694 536 681 q 536 719 536 708 q 358 909 536 909 q 52 699 152 909 q 27 585 27 645 q 51 484 27 529 q 99 430 71 445 q 130 421 115 421 q 171 450 171 421 q 160 470 171 461 q 144 523 144 484 q 167 632 144 570 q 328 802 231 802 q 341 801 334 802 q 355 799 348 800 q 409 714 409 789 q 404 674 409 690 q 310 414 401 663 q 211 126 221 174 q 209 109 210 117 q 209 94 209 101 q 239 17 209 44 q 319 -8 270 -8 q 485 45 401 -8 q 654 206 560 95 q 724 296 692 252 q 779 382 755 339 q 787 393 787 393 q 792 392 792 395 q 791 385 792 389 q 789 374 790 381 q 728 199 777 328 q 684 87 703 135 q 649 8 664 40 q 616 -27 634 -22 q 492 -113 574 -43 q 399 -251 399 -197 q 415 -290 399 -276 q 492 -319 448 -319 q 665 -225 570 -319 q 771 -66 747 -141 q 804 -33 779 -44 q 862 -16 827 -21 q 935 -8 896 -12 q 1011 4 974 -4 q 1079 34 1049 13 q 1100 50 1089 41 q 1121 70 1110 59 q 1130 101 1128 77 m 938 1254 q 880 1271 936 1271 q 816 1259 840 1271 q 797 1243 801 1252 q 760 1165 778 1183 q 691 1098 713 1111 q 678 1080 678 1090 q 691 1061 678 1069 q 748 1058 717 1046 q 879 1144 821 1086 q 938 1254 944 1211 "},"b":{"x_min":-12,"x_max":449,"ha":537,"o":"m 411 216 q 449 391 449 318 q 375 532 449 490 q 333 545 355 545 q 275 515 299 545 q 252 450 252 486 q 286 384 252 406 q 318 366 302 375 q 333 349 335 357 q 208 103 320 195 q 171 90 193 90 q 125 145 125 90 q 165 349 125 200 q 196 456 183 416 q 216 515 209 497 q 256 590 239 567 q 351 769 324 682 q 365 848 365 811 q 310 925 365 916 q 183 836 238 936 q 76 545 143 761 q -12 151 -12 245 q 93 -2 -12 15 q 140 -7 115 -7 q 322 74 239 -7 q 411 216 382 135 "},"q":{"x_min":-26,"x_max":713.515625,"ha":699,"o":"m 712 101 q 706 155 715 131 q 695 159 702 167 q 662 123 681 140 q 620 94 643 107 q 553 69 579 69 q 448 63 465 69 q 434 63 435 59 q 440 92 434 67 q 506 311 474 208 q 565 509 537 414 q 570 527 570 519 q 511 561 570 561 q 438 538 450 561 q 409 523 428 512 q 307 554 363 554 q 130 481 213 554 q 13 323 59 420 q -26 162 -26 238 q 87 -3 -26 24 q 117 -7 100 -7 q 307 116 210 -7 q 329 140 326 140 q 332 135 332 140 q 327 119 332 131 q 264 -75 326 117 q 209 -259 209 -240 q 265 -319 203 -319 q 349 -257 334 -319 q 362 -197 356 -227 q 375 -136 368 -166 q 443 -18 401 -38 q 492 -6 465 -6 q 534 -6 515 -6 q 570 0 553 -6 q 703 70 646 12 q 712 101 710 77 m 345 462 q 392 428 392 462 q 311 251 392 378 q 265 180 284 208 q 234 140 245 152 q 156 90 194 90 q 133 94 142 90 q 105 145 105 103 q 181 332 105 226 q 345 462 272 462 "},"Ö":{"x_min":-26,"x_max":803.03125,"ha":704,"o":"m 799 781 q 750 843 768 843 q 730 830 742 843 l 689 788 q 675 780 680 780 q 663 799 665 780 q 653 832 660 814 q 635 868 646 849 q 570 929 608 912 q 484 954 514 954 q 401 933 447 954 q 375 928 390 928 q 163 809 265 928 q 17 547 77 708 q -26 291 -26 421 q 113 0 -26 54 q 203 -19 154 -19 q 416 71 309 -19 q 585 300 517 157 q 663 510 640 414 q 679 609 667 526 q 691 640 683 634 q 749 691 725 667 q 788 734 773 714 q 799 781 810 762 m 560 688 q 506 661 558 661 q 456 670 479 661 q 418 694 434 679 q 393 728 402 709 q 385 769 385 748 q 420 840 385 808 q 466 857 438 857 q 505 846 487 857 q 537 819 524 836 q 557 781 550 802 q 565 740 565 761 q 560 688 565 736 m 526 528 q 443 324 511 453 q 230 105 329 105 q 202 109 216 105 q 116 271 116 138 q 170 530 116 380 q 282 747 220 672 q 299 761 292 761 q 306 734 306 761 q 361 590 295 651 q 468 544 410 544 q 489 546 477 544 q 519 551 502 548 q 526 546 524 553 q 526 528 529 539 m 719 1110 q 730 1156 730 1129 q 686 1222 730 1203 q 660 1227 674 1227 q 588 1189 605 1227 q 569 1124 569 1153 q 612 1061 569 1081 q 641 1056 624 1056 q 719 1110 686 1056 m 528 1110 q 539 1156 539 1129 q 495 1222 539 1203 q 469 1227 483 1227 q 397 1189 414 1227 q 378 1124 378 1153 q 421 1061 378 1081 q 450 1056 433 1056 q 528 1110 495 1056 "},"z":{"x_min":-80,"x_max":573.203125,"ha":559,"o":"m 572 101 q 565 155 575 132 q 554 160 561 168 q 484 96 527 123 q 409 71 443 71 q 299 72 327 64 q 290 79 292 75 q 268 109 271 105 q 255 123 261 116 q 240 137 248 130 q 237 158 219 154 q 329 208 287 171 q 392 337 392 264 q 397 357 397 349 q 397 376 397 367 q 257 553 397 521 q 226 558 241 558 q 148 529 180 558 q 116 462 116 501 q 140 424 116 424 q 160 432 147 424 q 190 441 174 441 q 229 429 210 441 q 266 364 266 401 q 259 326 266 350 q 172 245 242 280 q 78 217 113 217 q 36 185 44 217 q 42 146 27 148 q 164 84 121 135 q 177 64 177 69 q 163 54 177 58 q 96 32 121 40 q 61 18 71 23 q -54 -91 -19 -20 q -80 -187 -80 -144 q -7 -298 -80 -256 q 79 -319 26 -319 q 261 -221 199 -319 q 327 -26 327 -119 q 324 -12 324 -16 q 324 -11 324 -8 q 331 -7 324 -7 q 429 0 367 -11 q 563 70 505 12 q 572 101 569 77 m 190 -37 q 181 -102 190 -76 q 137 -179 171 -143 q 63 -220 98 -220 q 27 -205 41 -220 q 13 -170 13 -190 q 42 -99 13 -135 q 154 -24 93 -36 q 187 -23 179 -19 q 190 -37 190 -26 "},"™":{"x_min":79,"x_max":1268,"ha":1347,"o":"m 531 969 l 79 969 l 79 880 l 249 880 l 249 397 l 361 397 l 361 880 l 531 880 l 531 969 m 803 969 l 645 969 l 645 397 l 748 397 l 748 847 l 750 847 l 918 397 l 994 397 l 1162 847 l 1165 847 l 1165 397 l 1268 397 l 1268 969 l 1110 969 l 957 563 l 803 969 "},"ã":{"x_min":-39,"x_max":704.875,"ha":691,"o":"m 704 101 q 697 155 706 132 q 686 159 693 168 q 653 124 672 140 q 611 94 634 108 q 545 70 570 70 q 453 92 475 70 q 444 119 444 101 q 453 168 444 139 q 477 236 463 197 q 513 327 491 276 q 589 499 570 457 q 585 541 599 525 q 538 556 576 549 q 486 560 500 564 q 464 545 475 556 q 448 523 457 538 q 418 520 440 507 q 316 544 372 544 q 168 502 241 544 q 15 339 69 446 q -39 143 -39 233 q 0 30 -39 74 q 102 -15 35 -15 q 248 54 172 -15 q 321 144 301 103 q 329 154 324 150 q 336 157 334 158 q 336 148 338 154 q 326 87 326 107 q 360 21 326 46 q 490 -4 395 -4 q 527 -4 509 -4 q 561 0 545 -4 q 694 71 637 12 q 704 101 701 78 m 399 407 q 272 190 335 267 q 235 145 249 162 q 214 121 221 127 q 153 85 178 85 q 104 149 104 85 q 165 314 104 216 q 255 403 199 366 q 354 441 313 441 q 401 416 401 441 q 399 407 401 410 m 538 791 q 594 862 594 848 q 573 882 594 882 q 547 865 564 882 q 493 832 515 832 q 429 857 475 832 q 326 897 357 897 q 246 843 289 897 q 191 767 191 774 q 210 748 191 748 q 257 784 219 748 q 290 804 276 804 q 356 780 302 804 q 456 743 430 743 q 538 791 490 743 "},"æ":{"x_min":-39,"x_max":921,"ha":907,"o":"m 400 417 q 301 231 400 371 q 153 85 197 85 q 104 150 104 85 q 181 337 104 238 q 349 441 264 441 q 400 417 400 441 m 652 -12 q 813 8 737 -12 q 921 107 921 41 q 908 163 921 163 q 888 143 907 163 q 872 125 877 132 q 865 118 866 119 q 704 68 805 68 q 554 107 583 68 q 608 158 581 133 q 662 208 634 183 q 770 423 770 322 q 733 529 770 490 q 635 568 697 568 q 491 520 558 568 q 455 517 459 524 l 443 513 q 387 528 429 513 q 324 544 346 544 q 69 417 180 544 q -39 143 -39 291 q -1 30 -39 75 q 102 -15 35 -15 q 321 144 210 -15 q 334 157 330 157 q 336 155 336 157 q 331 122 336 144 q 326 87 326 100 q 396 4 326 22 q 519 -4 430 -4 q 584 -8 540 -4 q 652 -12 629 -12 m 644 460 q 684 412 684 460 q 610 272 684 365 q 500 179 539 179 q 487 211 487 179 q 531 365 487 280 q 644 460 580 460 "},"®":{"x_min":45,"x_max":1044,"ha":1089,"o":"m 545 -32 q 894 106 750 -32 q 1044 468 1044 250 q 894 829 1044 685 q 545 968 750 968 q 194 829 338 968 q 45 468 45 685 q 194 106 45 250 q 545 -32 338 -32 m 157 468 q 268 763 157 645 q 545 881 379 881 q 820 761 707 881 q 932 468 932 643 q 820 171 932 289 q 545 54 710 54 q 268 171 379 54 q 157 468 157 289 m 447 429 l 535 429 l 680 180 l 781 180 l 623 433 q 772 589 772 449 q 566 755 772 755 l 354 755 l 354 180 l 447 180 l 447 429 m 447 507 l 447 677 l 558 677 q 679 596 679 677 q 641 520 679 538 q 550 507 615 507 l 447 507 "},"É":{"x_min":-135,"x_max":817.09375,"ha":606,"o":"m 686 845 q 634 916 686 891 q 555 930 606 930 q 370 874 458 930 q 168 634 251 796 q 130 499 130 561 q 156 407 130 450 q 184 361 184 362 q 168 343 184 354 q 43 232 108 302 q -99 12 -50 127 q -135 -132 -135 -70 q -4 -298 -135 -259 q 44 -305 18 -305 q 254 -229 145 -305 q 400 -100 331 -177 q 475 0 462 -33 q 478 15 478 11 q 450 58 478 34 q 416 75 430 75 q 389 55 401 75 q 269 -80 356 2 q 91 -191 151 -191 q 32 -116 32 -191 q 107 83 32 -38 q 270 295 193 226 q 305 309 288 312 q 380 308 351 300 q 480 395 480 334 q 402 457 480 457 q 347 444 375 457 q 293 419 319 432 q 272 420 280 412 q 265 445 265 427 q 323 620 265 519 q 435 765 373 707 q 561 833 506 833 q 601 826 585 833 q 628 813 617 820 q 645 801 639 806 q 653 796 651 796 q 676 812 665 796 q 686 845 687 828 m 816 1255 q 758 1272 813 1272 q 694 1260 718 1272 q 675 1244 679 1253 q 638 1166 655 1184 q 568 1099 590 1112 q 555 1081 555 1091 q 568 1062 555 1070 q 625 1059 594 1046 q 756 1145 699 1087 q 816 1255 822 1212 "},"~":{"x_min":93.921875,"x_max":722.75,"ha":817,"o":"m 673 352 q 553 252 609 252 q 415 302 526 252 q 264 347 313 347 q 93 228 155 347 l 142 141 q 257 242 187 242 q 413 193 326 242 q 552 147 495 147 q 654 184 607 147 q 722 265 681 208 l 673 352 "},"¡":{"x_min":150,"x_max":586,"ha":654,"o":"m 152 85 q 150 66 150 73 q 204 4 150 22 q 267 -8 242 -8 q 312 21 301 -8 q 336 108 316 35 q 393 318 357 182 q 448 523 429 453 q 470 601 467 593 q 441 646 475 636 q 373 639 387 659 q 261 366 363 625 q 184 170 211 240 q 152 85 158 100 m 418 858 q 413 818 413 840 q 479 746 413 746 q 543 755 520 739 q 581 826 565 772 q 586 857 586 843 q 524 922 586 915 q 457 909 487 926 q 418 858 427 893 "},"[":{"x_min":141.171875,"x_max":578.53125,"ha":453,"o":"m 329 -201 q 342 -176 329 -194 l 270 -176 l 499 872 l 574 872 q 569 897 569 884 q 578 922 569 906 l 391 922 l 141 -226 l 334 -226 q 329 -201 329 -210 "},"L":{"x_min":-14,"x_max":931,"ha":912,"o":"m 925 101 q 918 155 928 131 q 907 159 914 167 q 832 92 881 122 q 766 68 792 68 q 627 94 692 68 q 534 149 575 116 q 534 170 526 155 q 610 348 568 224 q 667 556 651 462 q 687 587 673 582 q 910 741 852 631 q 931 814 931 778 q 888 909 931 874 q 815 934 857 934 q 727 910 771 934 q 657 853 682 886 q 569 696 591 767 q 537 686 564 675 q 457 742 470 713 q 451 760 455 752 q 444 777 447 768 q 425 791 438 789 q 394 767 406 791 q 383 715 383 744 q 428 632 383 667 q 516 592 468 602 q 530 569 537 588 q 505 491 517 530 q 479 413 493 452 q 441 301 456 342 q 419 248 426 260 q 403 241 411 232 q 319 284 383 262 q 170 311 240 311 q 44 262 102 311 q -14 139 -14 212 q 192 0 -14 0 q 343 13 267 -14 q 453 83 417 41 q 481 83 464 95 q 600 15 542 37 q 725 -6 658 -6 q 916 70 841 -6 q 925 101 922 77 m 826 881 q 867 839 867 881 q 830 763 867 804 q 725 692 789 720 q 704 691 711 686 q 702 709 699 696 q 747 815 712 760 q 826 881 787 881 m 362 140 q 289 91 339 112 q 189 68 231 68 q 70 143 70 68 q 187 226 70 226 q 244 220 216 226 q 297 202 271 214 q 323 188 308 196 q 357 166 338 180 q 362 140 374 153 "},"\u001d":{"x_min":-16,"x_max":424.59375,"ha":412,"o":"m 382 456 q 379 497 385 481 q 350 509 373 513 q 318 501 340 506 q 261 489 297 496 q 271 522 268 509 q 278 542 275 535 q 306 600 298 589 q 400 775 372 689 q 409 827 409 802 q 390 889 409 864 q 343 917 372 914 q 212 796 258 917 q 160 645 186 729 q 104 456 133 560 q 58 446 76 449 q 34 441 41 443 q -9 388 1 441 q -16 349 -16 357 q -3 333 -16 333 q 4 334 1 333 q 77 351 16 338 q 41 116 41 194 q 96 12 41 44 q 198 -7 137 -7 q 238 -4 218 -7 q 280 0 258 -2 q 414 72 358 15 q 423 102 421 79 q 417 156 426 133 q 406 161 413 169 q 373 125 392 141 q 331 95 354 109 q 264 71 290 71 q 171 90 190 71 q 162 118 162 100 q 171 172 162 133 q 228 382 183 233 q 289 394 262 389 q 336 403 316 399 q 382 456 377 413 "}," ":{"x_min":0,"x_max":0,"ha":513},"%":{"x_min":60,"x_max":978,"ha":1034,"o":"m 318 771 q 133 664 213 771 q 60 456 60 566 q 203 297 60 297 q 385 397 307 297 q 457 597 457 488 q 638 656 531 597 l 694 686 l 696 683 l 617 591 q 513 463 563 526 q 419 337 463 399 q 174 -41 174 -4 q 190 -86 174 -59 q 223 -112 208 -112 q 262 -73 238 -112 q 277 -47 269 -59 q 292 -20 285 -34 q 654 494 408 177 q 703 555 679 524 q 753 617 728 585 q 830 731 830 715 q 802 779 830 747 q 764 813 775 813 q 711 778 759 813 q 654 739 681 756 q 601 710 627 722 q 457 664 526 671 q 318 771 432 771 m 310 688 q 358 664 343 688 q 347 649 347 661 q 369 609 347 621 q 327 463 369 535 q 212 380 278 380 q 153 464 153 380 q 197 607 153 534 q 310 688 246 688 m 833 486 q 647 379 728 486 q 574 170 574 280 q 717 11 574 11 q 904 117 823 11 q 978 326 978 215 q 833 486 978 486 m 825 402 q 885 317 885 402 q 841 174 885 248 q 726 94 790 94 q 667 179 667 94 q 711 322 667 248 q 825 402 761 402 "},"P":{"x_min":-12,"x_max":903,"ha":869,"o":"m 663 226 q 836 411 764 269 q 903 667 903 542 q 852 850 903 782 q 670 934 791 934 q 370 809 522 934 q 98 435 200 674 q -12 4 -12 173 q 16 -130 -12 -78 q 130 -194 54 -194 q 322 -52 230 -194 q 428 192 394 58 q 439 214 435 212 q 459 211 447 216 q 535 199 489 199 q 663 226 600 199 m 727 570 q 645 394 708 470 q 480 304 573 304 q 465 338 461 310 q 479 487 479 426 q 479 587 479 549 q 451 619 476 619 q 402 598 428 619 q 364 573 383 585 q 341 537 344 560 q 296 254 318 338 q 148 -41 215 -41 q 113 15 113 -41 q 175 290 113 79 q 352 617 222 444 q 636 823 510 823 q 737 665 737 823 q 734 617 737 641 q 727 570 732 594 "},"À":{"x_min":-12,"x_max":839.234375,"ha":825,"o":"m 838 100 q 831 154 841 131 q 821 159 827 167 q 746 93 791 117 q 671 71 702 68 q 625 81 635 75 q 608 118 608 90 q 621 193 608 146 q 661 311 635 238 q 728 489 688 385 q 782 621 760 568 q 817 702 804 674 q 825 731 825 718 q 783 768 825 763 q 699 735 720 778 q 593 526 639 613 q 513 386 547 439 q 221 102 332 102 q 191 107 203 102 q 138 189 138 125 q 199 372 138 257 q 248 456 223 418 q 300 524 274 493 q 754 829 546 807 q 809 853 809 835 q 789 888 809 860 q 732 920 766 920 q 467 835 623 920 q 174 593 290 739 q -12 170 -12 359 q 50 23 -12 66 q 156 -10 99 -10 q 381 102 260 -10 q 519 270 467 181 q 528 279 524 279 q 531 263 538 279 q 481 74 481 146 q 490 35 481 47 q 637 -4 525 -4 q 695 0 671 -4 q 829 70 774 15 q 838 100 835 77 m 424 1258 q 481 1274 424 1274 q 546 1264 525 1274 q 565 1246 561 1257 q 601 1168 583 1190 q 671 1101 647 1115 q 685 1083 685 1096 q 671 1064 685 1074 q 614 1061 645 1049 q 483 1149 542 1087 q 424 1258 417 1214 "},"_":{"x_min":0,"x_max":681,"ha":681,"o":"m 681 -172 l 681 -103 l 0 -103 l 0 -172 l 681 -172 "},"ñ":{"x_min":-37,"x_max":682.3125,"ha":668,"o":"m 681 101 q 674 156 684 132 q 664 160 670 168 q 631 124 650 140 q 589 94 612 108 q 522 70 548 70 q 444 82 464 70 q 424 115 424 94 q 428 139 424 124 q 440 172 429 142 q 473 263 451 203 q 526 421 514 372 q 536 483 536 456 q 482 561 536 538 q 442 570 463 570 q 198 387 339 570 q 184 378 192 378 q 183 394 176 378 q 228 540 217 500 q 224 576 233 566 q 177 586 214 586 q 128 582 142 586 q 90 544 101 572 q 70 470 88 535 q 23 283 53 406 q -37 20 -37 38 q -17 -9 -37 -2 q 62 3 21 -21 q 84 36 78 14 q 108 97 90 58 q 156 194 126 136 q 283 389 226 332 q 366 437 339 446 q 379 419 379 433 q 362 369 379 400 q 338 313 351 346 q 309 237 324 280 q 277 101 277 139 q 350 7 277 36 q 538 0 426 -20 q 672 71 615 13 q 681 101 678 78 m 510 791 q 566 860 566 848 q 545 880 566 880 q 519 863 536 880 q 464 830 486 830 q 400 856 447 830 q 297 896 330 896 q 218 843 262 896 q 163 766 163 773 q 182 747 163 747 q 229 784 192 747 q 262 804 248 804 q 327 778 275 804 q 428 743 405 743 q 510 791 462 743 "},"+":{"x_min":166,"x_max":651,"ha":817,"o":"m 369 287 l 166 287 l 166 207 l 369 207 l 369 0 l 448 0 l 448 207 l 651 207 l 651 287 l 448 287 l 448 494 l 369 494 l 369 287 "},"‚":{"x_min":136,"x_max":373,"ha":400,"o":"m 370 138 q 310 155 364 164 q 274 146 289 152 q 247 132 258 139 q 231 106 232 121 q 206 -5 220 23 q 146 -108 167 -87 q 136 -132 136 -119 q 150 -159 136 -147 q 179 -171 164 -171 q 209 -159 191 -171 q 326 -22 274 -115 q 373 112 373 58 q 372 125 373 119 q 370 138 371 131 "},"Æ":{"x_min":-12,"x_max":1417.140625,"ha":1322,"o":"m 1417 845 q 1365 916 1417 891 q 1286 930 1338 930 q 1101 874 1189 930 q 900 634 983 797 q 862 499 862 561 q 887 406 862 449 q 915 361 915 362 q 900 342 915 354 q 660 73 754 242 q 608 119 608 79 q 621 194 608 147 q 661 312 635 238 q 728 490 688 386 q 782 622 760 569 q 817 702 804 675 q 825 732 825 719 q 783 769 825 764 q 700 736 720 779 q 593 527 639 614 q 513 387 547 440 q 221 103 332 103 q 191 108 203 103 q 138 190 138 126 q 199 373 138 258 q 248 457 223 419 q 299 525 274 494 q 754 830 546 808 q 809 853 809 835 q 789 888 809 860 q 732 920 766 920 q 467 836 623 920 q 174 594 290 740 q -12 171 -12 360 q 50 24 -12 67 q 156 -9 99 -9 q 381 103 260 -9 q 519 270 467 181 q 528 279 524 279 q 531 263 538 279 q 481 74 481 147 q 490 35 481 46 q 624 -2 523 -2 q 595 -134 595 -75 q 726 -298 595 -259 q 776 -305 750 -305 q 985 -229 877 -305 q 1131 -100 1063 -177 q 1206 0 1194 -32 q 1209 15 1209 11 q 1181 58 1209 35 q 1147 75 1161 75 q 1120 55 1132 75 q 1000 -79 1087 3 q 823 -191 883 -191 q 764 -115 764 -191 q 838 83 764 -38 q 1002 295 924 226 q 1037 309 1019 312 q 1112 308 1082 299 q 1211 395 1211 334 q 1134 457 1211 457 q 1079 444 1107 457 q 1025 419 1051 431 q 1004 420 1011 412 q 996 445 996 427 q 1055 619 996 519 q 1166 765 1105 707 q 1293 833 1237 833 q 1332 826 1316 833 q 1359 813 1349 820 q 1376 801 1370 806 q 1384 796 1383 796 q 1407 812 1396 796 q 1417 845 1418 829 "},"Ë":{"x_min":-135,"x_max":686.140625,"ha":606,"o":"m 686 845 q 633 916 686 891 q 554 930 606 930 q 370 874 458 930 q 168 634 251 796 q 130 499 130 561 q 156 407 130 450 q 184 361 184 362 q 168 343 184 354 q 43 232 108 302 q -99 12 -50 127 q -135 -132 -135 -70 q -4 -298 -135 -259 q 44 -305 18 -305 q 254 -229 145 -305 q 400 -100 332 -177 q 475 0 462 -33 q 478 15 478 11 q 450 58 478 34 q 416 75 430 75 q 389 55 401 75 q 269 -80 356 2 q 92 -191 152 -191 q 32 -116 32 -191 q 107 83 32 -38 q 270 295 193 226 q 306 309 288 312 q 380 308 351 300 q 480 395 480 334 q 402 457 480 457 q 347 444 375 457 q 293 419 319 432 q 272 420 280 412 q 265 445 265 427 q 323 620 265 519 q 435 765 373 707 q 561 833 505 833 q 601 826 584 833 q 628 813 617 820 q 645 801 639 806 q 652 796 651 796 q 676 812 664 796 q 686 845 687 828 m 672 1110 q 683 1156 683 1129 q 639 1222 683 1203 q 613 1227 627 1227 q 541 1189 558 1227 q 522 1124 522 1153 q 565 1061 522 1081 q 594 1056 577 1056 q 672 1110 639 1056 m 481 1110 q 493 1156 493 1129 q 449 1222 493 1203 q 423 1227 437 1227 q 351 1189 368 1227 q 332 1124 332 1153 q 375 1061 332 1081 q 404 1056 387 1056 q 481 1110 448 1056 "},"'":{"x_min":136,"x_max":373,"ha":400,"o":"m 370 966 q 310 983 364 993 q 274 974 289 980 q 247 961 258 968 q 231 934 232 950 q 206 821 221 853 q 146 718 167 739 q 136 694 136 707 q 150 667 136 679 q 179 656 164 656 q 209 667 191 656 q 326 804 274 711 q 373 940 373 886 q 372 953 373 947 q 370 966 371 959 "},"Š":{"x_min":-79.9375,"x_max":839.3125,"ha":825,"o":"m 838 101 q 831 155 841 131 q 821 159 827 167 q 788 124 807 140 q 746 94 769 108 q 679 70 705 70 q 614 79 644 70 q 604 87 604 82 q 613 112 604 91 q 644 273 644 195 q 554 448 644 377 l 415 527 q 329 644 329 579 q 345 708 329 672 q 544 821 399 821 q 598 814 573 821 q 685 750 667 793 q 692 724 689 736 q 705 709 696 712 q 764 748 743 700 q 770 779 770 759 q 734 862 770 823 q 599 920 689 909 q 579 922 588 922 q 558 922 569 922 q 368 872 458 922 q 230 728 274 818 q 202 614 202 670 q 354 402 202 475 q 512 227 512 327 q 475 108 512 176 q 439 91 464 87 l 260 137 q 45 169 101 174 q -78 58 -66 159 q -40 -51 -86 0 q 104 -131 7 -109 q 166 -142 136 -138 q 226 -147 196 -147 q 532 -12 405 -147 q 565 0 549 4 q 696 0 620 -12 q 829 70 770 9 q 838 101 836 77 m 365 -8 q 193 -53 281 -53 q 42 -2 99 -53 q 22 38 22 14 q 37 72 22 58 q 76 86 52 86 q 229 55 160 70 q 355 26 298 40 q 387 9 387 19 q 365 -8 387 1 m 396 1234 q 405 1219 396 1230 q 483 1062 469 1137 l 593 1062 q 756 1217 670 1156 q 772 1232 772 1230 q 743 1244 772 1244 q 549 1142 664 1244 q 408 1245 451 1245 q 396 1234 396 1245 "},"Œ":{"x_min":-26,"x_max":1078.140625,"ha":977,"o":"m 560 688 q 506 661 558 661 q 456 670 479 661 q 418 694 434 679 q 393 729 402 709 q 385 769 385 748 q 420 840 385 808 q 467 857 438 857 q 505 846 487 857 q 537 819 524 836 q 557 781 550 802 q 565 740 565 761 q 560 688 565 736 m 524 515 q 443 324 505 440 q 230 105 329 105 q 202 109 216 105 q 116 271 116 138 q 170 530 116 381 q 283 747 220 672 q 299 761 292 761 q 306 734 306 761 q 362 590 295 651 q 468 544 411 544 q 490 546 478 544 q 520 551 502 548 q 528 543 525 553 q 526 529 526 536 q 524 515 525 522 m 1078 845 q 1026 916 1078 891 q 947 930 999 930 q 663 791 790 930 q 571 928 628 904 q 484 954 516 954 q 401 932 448 954 q 375 928 390 928 q 163 809 265 928 q 17 546 77 708 q -26 290 -26 421 q 113 -1 -26 54 q 203 -19 154 -19 q 283 -6 242 -19 q 256 -132 256 -78 q 386 -298 256 -259 q 436 -305 410 -305 q 646 -229 537 -305 q 792 -100 723 -177 q 867 0 854 -32 q 870 15 870 11 q 842 58 870 34 q 808 75 822 75 q 781 55 793 75 q 661 -80 748 3 q 484 -191 544 -191 q 425 -116 425 -191 q 499 83 425 -38 q 662 296 585 226 q 697 310 680 312 q 773 308 743 300 q 872 396 872 335 q 794 457 872 457 q 739 444 767 457 q 685 419 711 432 q 664 420 672 412 q 657 445 657 427 q 715 620 657 519 q 827 765 766 707 q 954 833 898 833 q 993 826 977 833 q 1020 813 1010 820 q 1037 801 1031 806 q 1045 796 1044 796 q 1068 812 1057 796 q 1078 845 1079 829 "},"ð":{"x_min":-24,"x_max":683.46875,"ha":504,"o":"m 178 108 q 105 192 105 108 q 158 348 105 281 q 256 408 204 408 q 316 346 316 408 q 286 200 316 270 q 178 108 247 108 m 483 853 q 452 985 470 940 q 410 1001 445 1001 q 359 986 381 1001 q 337 951 337 971 q 339 939 337 950 q 343 910 341 929 q 352 864 349 886 q 358 822 356 842 l 275 802 q 188 746 198 782 l 168 685 l 369 732 q 371 716 371 725 q 371 693 371 706 q 351 516 371 557 q 290 533 327 533 q 69 437 157 533 q -24 166 -24 334 q 19 38 -24 83 q 137 -7 63 -7 q 377 127 295 -7 q 425 100 400 100 q 485 116 457 100 q 503 181 503 128 q 496 241 503 241 q 491 236 496 241 q 475 225 486 232 q 441 212 456 212 q 423 236 423 212 q 437 306 423 264 q 496 696 496 496 q 496 723 496 707 q 496 761 496 739 l 570 779 q 668 839 658 800 l 683 901 l 483 853 "},"T":{"x_min":-12,"x_max":784,"ha":770,"o":"m 779 814 q 784 843 784 836 q 754 869 784 860 q 622 902 683 889 q 510 915 562 915 q 470 915 490 915 q 434 915 451 915 q 196 818 215 915 q 192 780 192 798 q 215 734 192 734 q 239 749 227 734 q 332 789 260 774 q 350 791 338 791 q 377 791 362 791 q 600 763 511 791 q 615 725 623 754 q 564 552 589 638 q 514 378 540 466 q 374 8 415 49 q 281 -61 319 -44 q 183 -78 246 -78 q 46 -28 84 -78 q 23 -10 32 -10 q 0 -28 11 -10 q -12 -75 -12 -46 q 178 -202 -12 -186 q 197 -204 187 -204 q 216 -204 206 -204 q 509 -37 400 -204 q 779 814 626 140 "},"š":{"x_min":-150,"x_max":577.609375,"ha":563,"o":"m 577 102 q 570 156 579 132 q 559 160 566 168 q 484 93 533 123 q 417 69 443 69 q 349 75 360 69 q 348 92 338 82 q 380 142 360 105 q 401 191 395 168 q 408 234 408 214 q 375 374 408 306 q 350 421 362 402 q 324 452 338 440 q 324 477 318 457 q 333 494 327 482 q 348 525 338 506 q 366 572 363 554 q 299 625 366 625 q 226 603 266 625 q 183 546 190 581 q 181 533 182 539 q 181 521 181 527 q 188 486 181 503 q 194 459 195 468 q 103 307 182 421 q 40 219 67 256 q -6 160 13 182 q -144 70 -73 82 q -150 55 -150 69 q -140 9 -150 30 q -126 1 -139 1 q -23 46 -64 13 q -10 45 -18 52 q 145 -9 45 -9 q 217 1 192 -9 q 251 14 218 2 q 267 13 260 17 q 343 -3 285 -3 q 433 1 394 -3 q 567 71 510 13 q 577 102 574 78 m 252 188 q 161 81 226 103 q 132 84 135 73 q 101 131 124 120 q 85 145 85 137 q 91 159 85 149 q 161 246 109 180 q 225 338 220 325 q 236 348 229 348 q 247 341 243 350 q 262 256 262 307 q 252 188 262 217 m 152 915 q 161 900 152 911 q 239 743 225 818 l 348 743 q 511 898 425 837 q 528 913 528 911 q 499 925 528 925 q 304 823 420 925 q 164 926 208 926 q 152 915 152 926 "},"Þ":{"x_min":-163,"x_max":1157,"ha":1109,"o":"m 291 230 q 26 100 163 100 q -40 138 -40 100 q 47 201 -40 174 q 129 221 85 213 q 225 230 173 230 l 291 230 m 15 -10 q 460 243 284 -10 q 735 266 612 243 q 954 329 858 289 q 1157 568 1157 420 q 1046 726 1157 661 q 802 788 941 788 q 744 770 764 788 q 724 732 724 753 q 802 677 724 677 q 941 650 880 677 q 1018 568 1018 618 q 851 418 1018 480 q 559 369 710 369 q 541 371 549 369 q 596 488 568 424 q 650 629 623 553 q 709 873 709 796 q 666 968 709 968 q 597 915 624 968 q 585 881 592 904 q 570 824 578 858 q 385 363 491 496 q -163 128 -163 363 q 15 -10 -163 -10 "},"j":{"x_min":-177,"x_max":386.40625,"ha":372,"o":"m 319 803 q 330 849 330 822 q 286 915 330 896 q 260 920 274 920 q 188 882 205 920 q 169 817 169 846 q 212 754 169 774 q 241 749 224 749 q 319 803 286 749 m 385 100 q 379 155 388 131 q 368 159 374 167 q 335 123 354 139 q 293 93 316 107 q 226 69 252 69 q 117 63 137 69 q 107 63 108 62 q 106 75 104 66 q 118 127 113 103 q 129 170 123 150 q 188 351 160 266 q 241 511 215 436 q 236 543 244 528 q 216 561 229 558 q 119 558 171 574 q 88 517 96 551 q 58 420 73 468 q 28 322 43 371 q -12 157 1 227 q -26 44 -26 88 q -34 2 -26 16 q -50 -39 -43 -20 q -62 -73 -57 -58 q -79 -95 -69 -90 q -177 -241 -177 -158 q -142 -303 -177 -285 q -103 -315 -123 -315 q -5 -248 -53 -315 q 14 -210 3 -234 q 38 -149 24 -185 q 60 -93 51 -113 q 73 -65 69 -72 q 118 -15 99 -26 q 162 -7 134 -7 q 242 0 205 -7 q 376 70 319 12 q 385 100 383 77 "},"1":{"x_min":61,"x_max":453,"ha":446,"o":"m 446 845 q 453 876 453 866 q 436 910 453 895 q 401 925 420 925 q 356 905 390 925 q 205 815 265 852 q 115 756 145 777 q 99 727 99 745 q 109 692 99 715 q 138 661 124 661 q 152 665 143 661 q 250 727 198 686 q 266 736 259 736 q 269 716 276 736 q 162 370 213 536 q 65 51 112 205 q 61 33 61 40 q 122 -5 61 4 q 136 -7 128 -6 q 150 -8 143 -8 q 213 32 202 -8 q 331 457 226 96 q 446 845 432 809 "},"›":{"x_min":10.890625,"x_max":330.75,"ha":429,"o":"m 171 37 q 330 199 208 109 q 250 369 283 259 q 210 365 227 365 q 179 365 193 365 q 147 367 170 365 q 85 374 123 369 q 122 336 108 351 q 138 319 136 321 q 171 269 151 303 q 206 219 190 235 q 112 133 163 188 q 10 39 72 84 q 106 43 110 43 q 132 41 115 43 q 171 37 148 40 "},"ä":{"x_min":-39,"x_max":704.671875,"ha":690,"o":"m 704 101 q 697 155 706 132 q 686 159 693 168 q 653 124 672 140 q 611 94 634 108 q 544 70 570 70 q 453 92 475 70 q 444 119 444 101 q 453 168 444 139 q 477 236 463 197 q 513 327 491 276 q 589 499 570 457 q 585 541 599 525 q 538 556 576 549 q 486 560 499 564 q 463 545 474 556 q 448 523 459 541 q 418 520 440 507 q 316 544 372 544 q 168 502 241 544 q 15 339 69 446 q -39 143 -39 233 q 0 30 -39 74 q 102 -15 35 -15 q 248 54 172 -15 q 321 144 301 103 q 329 154 324 150 q 337 157 334 158 q 337 148 338 154 q 326 87 326 107 q 360 21 326 46 q 490 -4 395 -4 q 527 -4 509 -4 q 561 0 544 -4 q 694 71 637 12 q 704 101 701 78 m 399 407 q 272 190 335 267 q 235 145 249 162 q 214 121 221 127 q 153 85 178 85 q 104 149 104 85 q 165 314 104 216 q 255 403 199 366 q 354 441 313 441 q 401 416 401 441 q 399 407 401 410 m 527 804 q 538 850 538 823 q 494 916 538 897 q 468 921 482 921 q 396 883 414 921 q 377 818 377 847 q 420 755 377 775 q 449 750 432 750 q 527 804 494 750 m 337 804 q 348 850 348 823 q 304 916 348 897 q 278 921 291 921 q 206 883 223 921 q 187 818 187 847 q 230 755 187 775 q 259 750 242 750 q 337 804 304 750 "},"<":{"x_min":161,"x_max":655,"ha":817,"o":"m 655 424 l 655 506 l 161 283 l 161 210 l 655 -11 l 655 69 l 263 247 l 655 424 "},"£":{"x_min":-117,"x_max":672,"ha":654,"o":"m 104 382 q 82 365 88 382 q 60 306 67 326 q 53 287 53 287 q 67 279 53 279 l 179 279 q 93 129 144 180 q 28 136 48 134 q 10 139 8 139 q -69 121 -31 139 q -117 62 -117 98 q -5 -7 -117 -7 q 112 16 50 -7 q 242 1 182 1 q 416 1 344 1 q 527 9 487 1 l 560 131 q 320 102 409 102 q 221 110 223 102 q 311 279 260 159 l 435 279 q 446 293 442 279 q 463 340 450 308 q 474 376 474 369 q 456 382 474 382 l 350 382 l 371 445 q 439 592 400 527 q 528 670 488 670 q 560 640 558 670 q 531 547 563 617 q 500 472 500 477 q 518 468 500 468 q 625 490 531 468 q 672 646 672 593 q 636 748 672 709 q 540 787 601 787 q 269 511 373 787 l 220 382 l 104 382 "},"t":{"x_min":-6.078125,"x_max":394.40625,"ha":380,"o":"m 393 100 q 387 155 396 131 q 376 159 382 167 q 343 123 362 139 q 301 94 324 107 q 234 69 260 69 q 147 102 180 69 q 137 171 124 125 q 178 307 159 244 q 211 427 196 371 q 227 440 216 440 q 320 438 325 440 q 338 450 333 440 q 347 498 350 478 q 336 518 344 516 q 293 518 313 518 q 256 518 272 518 q 245 535 242 522 q 283 659 264 599 q 321 778 302 720 q 306 820 327 813 q 204 820 254 834 q 176 799 181 813 q 135 662 154 727 q 99 538 116 598 q 83 525 90 525 q 75 525 80 525 q 61 526 71 525 l 39 526 q 11 512 20 526 q 2 485 5 497 q -3 466 0 474 q 1 446 -10 449 q 31 444 18 444 q 54 444 44 444 q 67 430 68 439 q 57 396 65 427 q 33 308 49 366 q -5 157 -5 189 q 60 20 -5 64 q 182 -7 103 -7 q 250 0 212 -7 q 384 70 327 12 q 393 100 391 77 "},"ù":{"x_min":-19,"x_max":687.171875,"ha":673,"o":"m 686 101 q 679 155 689 131 q 668 159 675 167 q 636 124 655 140 q 593 94 617 108 q 527 69 552 69 q 432 95 458 69 q 428 173 416 112 q 482 342 435 203 q 535 495 525 477 q 545 527 545 513 q 480 559 545 552 q 396 511 411 566 q 370 437 386 481 q 328 334 354 394 q 216 134 260 178 q 159 97 180 97 q 123 127 123 97 q 125 146 123 134 q 129 174 127 158 q 186 342 135 206 q 222 438 208 400 q 245 495 237 475 q 252 520 252 511 q 197 564 252 548 q 144 574 167 574 q 101 543 110 574 q -16 134 -10 199 q -19 114 -19 123 q -19 98 -19 105 q 42 1 -19 23 q 95 -7 68 -7 q 310 148 204 -7 q 315 156 313 153 q 320 160 318 159 q 323 159 323 163 q 321 148 323 153 q 313 84 313 106 q 340 22 313 41 q 472 -7 382 -7 q 508 -4 491 -7 q 543 0 525 -2 q 677 70 619 12 q 686 101 683 77 m 116 943 q 173 959 116 959 q 238 949 217 959 q 257 931 253 942 q 292 853 275 875 q 363 786 338 800 q 377 768 377 781 q 363 749 377 759 q 306 746 337 734 q 175 834 234 772 q 116 943 109 899 "},"W":{"x_min":-12,"x_max":1084,"ha":1016,"o":"m 1044 578 q 1059 584 1052 578 q 1072 601 1067 591 q 1080 621 1077 611 q 1084 639 1084 632 q 1071 658 1084 651 q 1036 676 1045 671 q 1022 722 1022 684 q 1026 774 1026 752 q 1024 813 1026 798 q 997 877 1024 849 q 935 906 971 906 q 914 903 928 906 q 843 792 843 883 q 843 779 843 785 q 845 766 844 773 q 851 736 848 749 q 860 713 855 723 q 868 701 863 709 q 882 682 874 693 q 899 625 905 648 q 857 500 889 572 q 776 336 826 429 q 574 126 653 112 q 499 196 520 136 q 489 280 489 225 q 517 333 489 307 q 618 486 582 390 q 633 561 633 529 q 569 642 633 634 q 401 480 487 642 q 370 378 382 443 q 361 319 361 344 q 361 273 361 293 q 358 238 361 253 q 350 215 356 224 q 190 97 263 97 q 131 202 131 97 q 199 527 131 315 q 288 723 228 621 q 326 785 307 755 q 363 848 344 816 q 369 866 369 857 q 303 896 369 885 q 283 897 297 897 q 205 857 245 897 q 124 729 173 824 q 34 512 64 618 q -12 218 -12 357 q 128 -20 -12 -2 q 146 -22 137 -22 q 164 -22 155 -22 q 369 95 287 -22 q 381 106 374 106 q 404 80 389 106 q 556 -12 457 -12 q 803 164 676 -12 q 908 344 861 244 q 993 562 955 443 q 1012 586 1000 586 q 1028 582 1018 586 q 1044 578 1038 578 "},"ï":{"x_min":-12,"x_max":422,"ha":372,"o":"m 385 101 q 378 155 387 132 q 367 160 374 168 q 334 124 353 140 q 292 94 315 108 q 226 70 252 70 q 128 93 155 70 q 119 119 119 101 q 129 172 119 135 q 188 349 161 265 q 241 512 215 434 q 236 543 243 528 q 217 561 229 559 q 120 559 172 574 q 88 517 97 552 q 62 428 75 473 q 35 340 49 384 q 0 213 12 261 q -12 150 -10 165 q -9 107 -12 125 q 0 74 -7 89 q 19 46 7 60 q 51 18 31 33 q 173 -4 86 -4 q 209 -4 192 -4 q 242 0 226 -4 q 375 71 318 12 q 385 101 382 78 m 411 803 q 422 849 422 822 q 378 915 422 896 q 352 920 366 920 q 280 882 297 920 q 261 817 261 846 q 304 754 261 774 q 333 749 316 749 q 411 803 378 749 m 221 803 q 232 849 232 822 q 188 915 232 896 q 162 920 176 920 q 90 882 108 920 q 71 817 71 846 q 114 754 71 774 q 143 749 126 749 q 221 803 188 749 "},">":{"x_min":162,"x_max":656,"ha":817,"o":"m 162 69 l 162 -11 l 656 210 l 656 283 l 162 506 l 162 424 l 553 247 l 162 69 "},"v":{"x_min":-38,"x_max":444,"ha":512,"o":"m 444 456 q 367 552 444 552 q 298 522 325 552 q 271 448 271 492 q 294 382 271 410 l 311 364 q 310 335 314 357 q 292 281 305 312 q 258 212 280 251 q 184 104 216 134 q 125 75 152 75 q 83 123 83 75 q 207 471 83 220 q 218 510 218 493 q 167 560 218 550 q 125 566 140 566 q 84 542 100 566 q 10 378 54 500 q -26 238 -14 299 q -38 131 -38 177 q 47 -1 -38 27 q 94 -10 69 -10 q 238 45 163 -10 q 365 207 296 87 q 444 456 444 345 "},"û":{"x_min":-19,"x_max":687.28125,"ha":673,"o":"m 686 101 q 679 155 689 131 q 668 159 675 167 q 636 124 655 140 q 594 94 617 108 q 527 70 553 70 q 433 96 459 70 q 429 173 416 112 q 482 342 436 203 q 535 495 525 477 q 545 527 545 513 q 480 559 545 552 q 396 511 411 566 q 370 437 387 481 q 328 334 354 394 q 216 134 260 178 q 159 97 180 97 q 123 127 123 97 q 125 146 123 134 q 129 174 127 158 q 186 342 135 206 q 222 438 208 400 q 245 495 237 475 q 252 520 252 511 q 197 564 252 548 q 144 574 167 574 q 101 543 110 574 q -16 134 -10 199 q -19 114 -19 123 q -19 98 -19 105 q 42 2 -19 24 q 95 -7 68 -7 q 310 148 204 -7 q 315 156 313 153 q 320 160 318 159 q 323 159 323 163 q 321 148 323 153 q 313 84 313 107 q 340 23 313 42 q 472 -6 382 -6 q 508 -3 491 -6 q 543 0 525 -1 q 677 70 619 13 q 686 101 683 77 m 556 753 q 546 767 556 757 q 468 926 482 848 l 359 926 q 196 769 277 828 q 180 755 180 757 q 208 744 180 744 q 403 844 285 744 q 543 743 498 743 q 556 753 556 743 "},"Ò":{"x_min":-26,"x_max":802.375,"ha":703,"o":"m 798 781 q 749 843 767 843 q 729 830 741 843 l 688 788 q 674 780 680 780 q 662 799 665 780 q 653 832 659 814 q 635 868 646 849 q 570 929 608 912 q 484 954 514 954 q 401 933 447 954 q 375 928 390 928 q 163 809 265 928 q 17 547 77 708 q -26 291 -26 421 q 113 0 -26 54 q 202 -19 154 -19 q 416 71 309 -19 q 585 300 517 157 q 662 510 639 414 q 678 609 666 526 q 691 640 683 634 q 749 691 725 667 q 787 734 772 714 q 798 781 809 762 m 560 688 q 506 661 558 661 q 456 670 479 661 q 418 694 434 679 q 393 728 402 709 q 385 769 385 748 q 420 840 385 808 q 466 857 438 857 q 505 846 487 857 q 537 819 524 836 q 557 781 550 802 q 565 740 565 761 q 560 688 565 736 m 526 528 q 443 324 511 453 q 230 105 329 105 q 202 109 216 105 q 116 271 116 138 q 170 530 116 380 q 282 747 220 672 q 299 761 292 761 q 306 734 306 761 q 361 590 295 651 q 468 544 410 544 q 490 546 477 544 q 520 551 502 548 q 526 546 524 553 q 526 528 529 539 m 354 1259 q 411 1275 354 1275 q 476 1265 455 1275 q 495 1247 491 1258 q 530 1169 513 1191 q 601 1102 577 1116 q 615 1084 615 1097 q 601 1065 615 1074 q 544 1062 575 1049 q 413 1149 472 1088 q 354 1259 347 1215 "},"&":{"x_min":136,"x_max":1022,"ha":1117,"o":"m 959 267 q 1004 290 986 267 q 1022 341 1022 313 q 994 370 1022 367 q 824 370 903 370 q 677 370 745 370 q 616 328 638 375 q 602 284 602 293 q 620 271 602 269 l 703 271 q 724 264 724 271 q 718 250 724 260 q 687 212 707 232 q 638 170 668 192 q 455 105 549 105 q 409 109 431 105 q 303 209 303 127 q 309 253 303 228 q 431 404 342 360 q 541 432 485 432 q 597 462 585 432 q 604 490 604 483 q 577 517 604 508 q 517 591 517 536 q 538 677 517 629 q 623 779 567 743 q 726 811 673 811 q 766 802 743 811 q 800 794 790 794 q 829 848 829 794 q 800 908 829 895 q 707 928 751 928 q 628 916 674 928 q 493 848 557 897 q 388 715 420 791 q 371 625 371 671 q 410 517 371 549 q 427 498 427 504 q 409 490 427 490 q 257 424 327 475 q 137 220 156 347 q 136 201 136 210 q 136 184 136 192 q 348 -1 136 23 q 420 -6 385 -6 q 722 96 589 -6 q 841 237 808 164 q 880 269 856 269 l 922 269 q 944 267 936 267 q 959 267 954 267 "},"Ð":{"x_min":8,"x_max":1003,"ha":1083,"o":"m 367 358 q 346 342 354 358 q 298 244 298 256 q 326 239 298 239 l 447 239 q 360 139 387 139 q 255 151 324 139 q 150 164 185 164 q 8 79 8 164 q 201 -1 8 -1 q 281 7 228 -1 q 327 14 308 12 q 360 17 346 17 q 436 8 383 17 q 511 0 489 0 l 691 0 q 926 88 843 0 q 1003 308 1003 170 q 952 508 1003 411 q 859 640 919 572 q 809 701 809 695 q 831 740 809 709 q 853 780 853 770 q 811 817 853 785 q 765 850 772 850 q 740 827 759 850 q 709 787 713 791 q 326 969 476 969 q 179 826 179 969 q 237 673 179 753 q 352 552 283 608 q 433 504 414 504 q 473 544 454 504 q 491 599 491 579 q 466 623 491 604 q 433 648 447 637 q 407 669 418 659 q 310 812 310 758 q 349 847 310 847 q 515 770 391 847 q 640 665 640 695 q 600 551 640 647 q 558 453 580 502 q 511 358 535 405 l 367 358 m 652 358 q 746 570 713 493 q 798 498 777 528 q 831 449 820 468 q 872 308 872 376 q 617 122 872 122 q 584 122 607 122 q 522 122 560 122 q 558 176 539 148 q 596 239 577 204 l 740 239 q 761 254 753 239 q 809 352 809 340 q 781 358 809 358 l 652 358 "},"I":{"x_min":-39,"x_max":605,"ha":612,"o":"m 569 566 q 605 809 605 728 q 524 965 605 941 q 484 971 508 971 q 299 875 397 971 q 152 661 210 788 q 112 460 112 571 q 148 286 112 358 q 267 176 189 204 q 274 152 290 169 q 204 90 229 107 q 118 63 162 63 q 16 123 43 63 q 0 136 9 136 q -39 69 -39 136 q -9 -8 -39 22 q 112 -61 29 -61 q 377 69 272 -61 q 569 566 490 210 m 463 819 q 416 549 463 733 q 371 388 392 456 q 330 276 349 320 q 313 257 322 257 q 291 266 306 257 q 239 420 239 297 q 272 600 239 510 q 338 743 300 672 q 438 856 396 856 q 463 819 463 856 "},"G":{"x_min":0,"x_max":747,"ha":795,"o":"m 745 554 q 747 566 747 558 q 705 609 747 595 q 672 618 681 618 q 646 599 656 618 q 544 476 619 547 q 390 389 451 389 q 360 395 377 389 q 316 472 316 416 q 358 608 316 526 q 382 651 370 630 q 405 694 394 672 q 441 716 411 709 q 605 774 504 726 q 701 870 701 817 q 696 896 701 881 q 613 938 684 938 q 521 922 574 938 q 386 829 453 901 q 344 811 362 814 q 145 814 217 792 q 135 816 141 816 q 112 766 112 816 q 161 698 112 720 q 236 684 202 678 q 264 676 264 688 q 254 655 264 669 q 166 403 166 519 q 221 288 166 324 q 322 258 268 258 q 453 295 383 258 q 485 318 469 306 q 519 341 502 330 q 541 353 537 353 q 547 347 547 353 q 544 334 547 346 q 430 43 476 115 q 222 -75 356 -75 q 130 -59 170 -75 q 79 -13 90 -43 q 53 25 65 25 q 30 16 43 25 q 0 -58 0 0 q 34 -141 0 -115 q 224 -204 109 -204 q 473 -120 373 -204 q 621 122 574 -37 q 691 361 661 254 q 745 554 722 469 "},"`":{"x_min":136.375,"x_max":398,"ha":689,"o":"m 137 943 q 194 959 137 959 q 259 949 238 959 q 278 931 274 942 q 313 853 296 875 q 384 786 359 800 q 398 768 398 781 q 384 749 398 759 q 327 746 358 734 q 196 834 255 773 q 137 943 130 899 "},"·":{"x_min":34,"x_max":225,"ha":327,"o":"m 129 150 q 196 179 167 150 q 225 247 225 209 q 196 314 225 284 q 129 344 167 344 q 62 314 91 344 q 34 247 34 284 q 62 179 34 209 q 129 150 91 150 "},"r":{"x_min":-150,"x_max":577.796875,"ha":564,"o":"m 577 101 q 570 155 579 131 q 559 159 566 167 q 484 92 533 122 q 417 68 443 68 q 352 70 368 68 q 321 119 313 79 q 335 164 324 131 q 368 249 347 197 q 416 380 412 357 q 394 439 422 416 q 329 481 378 453 q 288 502 304 495 q 262 515 272 510 q 250 524 253 520 q 250 536 247 528 q 257 573 258 560 q 198 641 251 641 q 120 562 135 641 q 118 549 119 555 q 118 536 118 542 q 126 502 118 518 q 136 477 134 485 q 135 473 136 475 q 133 466 134 471 q 63 283 108 376 q -4 163 22 198 q -65 101 -43 117 q -144 68 -95 79 q -150 54 -150 66 q -140 8 -150 29 q -128 0 -136 -2 q -15 51 -68 9 q 127 238 70 123 q 146 285 129 241 q 198 414 164 328 q 216 427 205 434 q 270 382 261 402 q 270 345 280 362 q 238 265 260 327 q 213 190 223 224 q 196 123 202 155 q 192 90 192 104 q 251 6 192 34 q 434 0 310 -20 q 567 70 507 9 q 577 101 574 77 "},"¿":{"x_min":150,"x_max":614,"ha":682,"o":"m 150 173 q 261 8 150 43 q 344 -4 303 -4 q 420 7 379 -4 q 459 41 454 18 q 464 126 472 85 q 427 139 458 155 q 363 126 401 126 q 324 134 339 126 q 300 155 309 142 q 288 182 291 167 q 284 209 284 196 q 358 356 284 265 q 514 611 500 534 q 509 659 522 654 q 453 671 489 671 q 417 640 429 668 q 399 595 406 612 q 389 572 391 577 q 336 502 371 544 q 249 401 300 459 q 150 173 150 294 m 537 923 q 498 914 517 923 q 464 892 479 906 q 442 860 450 878 q 434 821 434 842 q 458 762 434 784 q 519 741 483 741 q 605 804 584 741 q 614 847 614 827 q 537 923 614 923 "},"ý":{"x_min":-16,"x_max":674.71875,"ha":661,"o":"m 674 101 q 667 155 676 131 q 656 159 663 168 q 592 101 631 129 q 514 68 547 70 q 469 68 487 68 q 448 66 453 68 q 404 61 411 62 q 396 60 398 60 q 394 65 394 62 q 398 79 396 69 q 543 521 543 512 q 519 555 543 544 q 484 560 507 560 q 453 562 460 564 q 425 541 430 553 q 377 432 400 485 q 331 326 354 378 q 210 137 256 173 q 136 119 172 108 q 111 186 111 129 q 169 358 111 209 q 234 516 222 496 q 231 553 249 539 q 169 577 200 577 q 157 576 163 577 q 144 574 151 575 q 105 549 117 570 q 72 482 90 523 q 34 384 53 441 q -16 136 -16 235 q -16 113 -16 124 q -14 92 -16 102 q -2 58 -11 74 q 20 29 7 41 q 49 8 33 16 q 78 0 64 0 q 216 56 140 -7 q 297 147 272 105 q 309 157 302 157 q 313 145 320 157 q 248 -33 278 51 q 237 -50 242 -47 q 174 -100 214 -64 q 109 -181 128 -144 q 89 -252 89 -223 q 147 -308 89 -308 q 241 -259 185 -308 q 313 -149 271 -233 q 359 -57 357 -61 q 395 -19 385 -28 q 445 -10 407 -10 q 530 0 502 -10 q 664 70 607 12 q 674 101 671 77 m 587 943 q 529 959 587 959 q 465 949 486 959 q 446 931 450 942 q 411 853 429 875 q 340 786 365 800 q 327 768 327 781 q 340 749 327 758 q 398 746 366 733 q 528 834 468 772 q 587 943 595 899 "},"x":{"x_min":-189,"x_max":577.640625,"ha":563,"o":"m 577 101 q 570 155 579 132 q 559 160 566 168 q 526 124 545 140 q 484 94 507 108 q 417 70 443 70 q 348 75 359 70 q 262 154 299 97 q 242 204 251 171 q 234 232 239 214 q 223 279 229 251 q 227 302 221 293 q 278 365 249 331 q 347 434 308 398 q 432 472 385 472 q 465 513 469 472 q 412 557 461 557 q 367 547 390 557 q 205 401 319 527 q 191 411 195 391 q 180 450 186 433 q 168 483 175 467 q 70 562 133 562 q 24 544 44 562 q 4 501 4 527 q 9 482 5 487 q 24 469 13 477 q 40 442 39 452 q 85 290 57 404 q 81 259 92 271 q 25 194 47 219 q -5 158 4 169 q -164 67 -85 67 q -178 56 -174 67 q -185 26 -183 41 q -189 1 -187 12 q -183 -3 -189 -2 q -164 -1 -178 -5 q -9 54 -78 -1 q 103 164 47 99 q 118 160 112 173 q 246 8 152 54 q 434 0 311 -23 q 567 71 510 12 q 577 101 574 78 "},"è":{"x_min":-33,"x_max":539.6875,"ha":525,"o":"m 539 101 q 532 155 541 131 q 521 159 528 167 q 378 70 462 78 q 189 92 249 58 q 173 106 173 101 q 179 115 173 108 q 232 158 205 134 q 285 213 258 182 q 383 375 372 309 q 388 422 388 400 q 308 557 388 522 q 253 567 288 567 q 131 533 190 567 q 21 415 60 495 q -33 210 -33 306 q 40 38 -33 101 q 261 -14 104 -14 q 396 -1 336 -14 q 529 70 472 12 q 539 101 536 77 m 262 459 q 302 411 302 459 q 272 327 302 378 q 133 185 224 244 q 106 210 106 166 q 149 366 106 273 q 201 433 168 407 q 262 459 235 459 m 6 943 q 64 959 6 959 q 129 949 108 959 q 148 931 144 942 q 183 853 166 875 q 254 786 230 800 q 268 768 268 781 q 254 749 268 758 q 197 746 228 733 q 66 833 125 772 q 6 943 0 899 "},"Ø":{"x_min":12,"x_max":814.34375,"ha":808,"o":"m 528 610 q 622 694 570 694 q 667 631 667 694 q 612 435 667 554 q 472 222 552 306 q 283 119 375 119 l 528 610 m 196 141 q 143 263 143 175 q 261 617 143 439 q 551 854 381 800 l 196 141 m 814 1182 l 714 1182 l 624 1001 q 194 741 383 978 q 12 266 12 510 q 136 22 12 81 l 43 -161 l 141 -161 l 220 -2 q 269 -7 242 -7 q 539 105 409 -7 q 726 362 653 205 q 798 636 798 507 q 759 766 798 717 q 650 816 720 816 q 631 814 635 816 l 660 872 l 707 866 q 774 935 774 866 q 763 975 774 963 q 721 996 752 987 l 814 1182 "},"÷":{"x_min":166,"x_max":651,"ha":817,"o":"m 651 207 l 651 287 l 166 287 l 166 207 l 651 207 m 407 377 q 456 398 436 377 q 477 449 477 420 q 456 498 477 476 q 407 520 436 520 q 360 498 380 520 q 340 449 340 476 q 360 398 340 420 q 407 377 380 377 m 407 -25 q 456 -4 436 -25 q 477 44 477 16 q 456 95 477 73 q 407 117 436 117 q 360 95 380 117 q 340 44 340 73 q 360 -4 340 16 q 407 -25 380 -25 "},"\u001f":{"x_min":-80,"x_max":573.140625,"ha":559,"o":"m 572 101 q 565 155 575 132 q 554 160 561 168 q 484 96 527 123 q 409 71 443 71 q 299 72 327 64 q 290 79 292 75 q 268 109 271 105 q 255 123 261 116 q 240 137 248 130 q 237 158 219 154 q 329 208 287 171 q 392 337 392 264 q 397 357 397 349 q 397 376 397 367 q 257 554 397 522 q 226 559 241 559 q 148 530 180 559 q 116 462 116 501 q 140 424 116 424 q 160 433 147 424 q 190 442 174 442 q 229 429 210 442 q 266 364 266 401 q 259 326 266 350 q 172 245 242 280 q 78 217 113 217 q 36 185 44 217 q 42 146 27 148 q 164 84 121 135 q 177 64 177 69 q 163 54 177 58 q 96 32 121 40 q 61 18 71 24 q -54 -90 -19 -19 q -80 -186 -80 -143 q -7 -298 -80 -256 q 79 -319 26 -319 q 261 -221 199 -319 q 327 -25 327 -118 q 324 -11 324 -15 q 324 -10 324 -7 q 331 -6 324 -6 q 429 0 367 -10 q 563 71 505 13 q 572 101 569 78 m 190 -36 q 181 -101 190 -75 q 137 -179 171 -143 q 63 -220 98 -220 q 27 -205 41 -220 q 13 -169 13 -190 q 42 -99 13 -135 q 154 -24 93 -35 q 187 -22 179 -18 q 190 -36 190 -25 m 89 915 q 98 900 89 911 q 175 743 162 818 l 284 743 q 448 898 362 837 q 465 913 465 911 q 436 925 465 925 q 241 823 356 925 q 101 926 144 926 q 89 915 89 926 "},"h":{"x_min":-30.640625,"x_max":703.46875,"ha":689,"o":"m 702 100 q 696 155 705 131 q 685 159 691 167 q 652 123 671 139 q 610 94 633 107 q 543 69 569 69 q 458 81 488 69 q 429 124 429 94 q 438 175 429 148 q 487 324 465 259 q 525 438 508 389 q 530 466 530 452 q 470 555 530 535 q 430 561 453 561 q 313 510 364 561 q 278 472 297 495 q 235 421 259 449 q 203 381 215 396 q 189 360 192 366 q 184 355 188 355 q 180 377 170 355 q 230 508 186 395 q 354 833 274 622 q 363 869 363 853 q 342 906 363 890 q 295 915 332 915 q 246 912 260 915 q 207 871 222 903 q 99 533 191 833 q 16 236 48 358 q -29 44 -15 114 q -2 -4 -36 4 q 50 0 9 -8 q 88 39 78 4 q 195 249 116 127 q 331 419 287 392 q 366 433 353 433 q 380 416 380 433 q 378 403 380 407 q 358 342 368 373 q 336 281 347 311 q 291 128 298 167 q 289 108 289 117 q 289 94 289 99 q 335 22 289 51 q 485 -7 382 -7 q 523 -4 505 -7 q 559 0 542 -2 q 693 70 636 12 q 702 100 700 77 "},".":{"x_min":150,"x_max":328,"ha":580,"o":"m 311 30 q 328 78 328 51 q 305 136 328 112 q 250 160 283 160 q 177 122 209 160 q 150 50 150 90 q 213 -15 150 -15 q 311 30 276 -15 "},";":{"x_min":82,"x_max":454,"ha":583,"o":"m 436 430 q 454 494 454 452 q 428 553 454 537 q 373 569 402 569 q 299 537 327 569 q 270 459 270 502 q 301 399 270 423 q 350 383 323 383 q 436 430 399 383 m 326 141 q 256 162 319 172 q 198 140 220 155 q 182 109 182 129 q 157 -1 176 51 q 91 -112 134 -69 q 82 -130 82 -122 q 102 -159 82 -145 q 158 -159 129 -179 q 285 -16 234 -108 q 329 112 329 61 q 328 126 329 119 q 326 141 327 134 "},"f":{"x_min":-76,"x_max":544,"ha":525,"o":"m 538 101 q 531 156 541 132 q 520 160 527 168 q 487 124 507 140 q 445 94 468 108 q 378 70 404 70 q 280 85 325 70 q 261 108 268 89 q 224 168 249 150 q 204 193 204 182 q 217 211 204 201 q 352 344 274 250 q 489 570 448 459 q 544 794 544 715 q 445 932 544 907 q 410 937 426 937 q 136 611 268 937 q 21 260 83 477 q -22 96 -5 157 q -44 12 -39 35 q -67 -103 -59 -53 q -76 -189 -76 -153 q -8 -313 -76 -298 q 39 -319 13 -319 q 251 -114 183 -319 q 266 -62 261 -88 q 274 -12 272 -37 q 291 -2 276 0 q 395 0 329 -10 q 486 36 441 5 q 528 71 508 50 q 538 101 535 78 m 407 824 q 436 783 436 820 q 378 609 436 730 q 198 315 291 429 q 179 299 183 299 q 177 303 177 299 q 185 332 177 311 q 250 518 220 432 q 307 680 280 604 q 407 824 360 830 m 177 3 q 156 -91 177 -35 q 68 -214 107 -225 q 49 -184 49 -210 q 77 -67 49 -174 q 108 41 103 29 q 122 60 114 60 q 130 55 126 60 q 170 22 157 29 q 177 3 177 18 "},"“":{"x_min":163,"x_max":653,"ha":653,"o":"m 642 921 q 653 945 653 932 q 638 972 653 960 q 609 984 624 984 q 579 972 597 984 q 462 835 514 928 q 416 699 416 753 q 416 686 416 692 q 418 673 417 680 q 478 656 424 646 q 514 665 499 659 q 541 678 530 671 q 557 705 556 689 q 582 818 567 786 q 642 921 620 899 m 389 921 q 400 945 400 932 q 385 972 400 960 q 356 984 371 984 q 326 972 344 984 q 209 835 261 928 q 163 699 163 753 q 163 686 163 692 q 165 673 164 680 q 225 656 171 646 q 261 665 246 659 q 288 678 277 671 q 304 705 303 689 q 329 818 314 786 q 389 921 367 899 "},"A":{"x_min":-12,"x_max":839.234375,"ha":825,"o":"m 838 100 q 831 154 841 131 q 821 159 827 167 q 746 93 791 117 q 671 71 703 68 q 625 81 635 75 q 608 118 608 90 q 621 193 608 146 q 661 311 635 238 q 728 489 688 385 q 782 621 760 568 q 817 702 804 674 q 825 731 825 718 q 783 768 825 763 q 700 735 720 778 q 593 526 639 613 q 513 386 547 439 q 221 102 332 102 q 191 107 203 102 q 138 189 138 125 q 199 372 138 257 q 248 456 223 418 q 300 524 274 493 q 754 829 546 807 q 809 853 809 835 q 789 888 809 860 q 732 920 766 920 q 467 835 623 920 q 174 593 290 739 q -12 170 -12 359 q 50 23 -12 66 q 156 -10 99 -10 q 381 102 260 -10 q 519 270 467 181 q 528 279 524 279 q 531 263 538 279 q 481 74 481 146 q 490 35 481 47 q 637 -4 525 -4 q 696 0 671 -4 q 829 70 774 15 q 838 100 835 77 "},"6":{"x_min":54,"x_max":574,"ha":642,"o":"m 565 250 q 574 324 574 284 q 544 457 574 402 q 439 534 510 523 q 421 536 429 536 q 402 536 412 536 q 288 509 357 536 q 270 506 273 502 q 271 523 266 510 q 318 621 290 570 q 383 724 345 672 q 528 884 459 831 q 543 906 543 895 q 519 921 543 919 q 338 896 380 935 q 176 667 254 816 q 64 349 96 508 q 56 295 59 321 q 54 242 54 268 q 108 53 54 123 q 260 -17 162 -17 q 463 69 376 -17 q 565 250 537 145 m 423 270 q 364 141 408 196 q 272 87 319 87 q 190 227 190 87 q 190 262 190 245 q 192 299 190 280 q 235 398 202 366 q 318 434 262 424 q 331 436 325 435 q 344 437 337 437 q 430 331 430 437 q 427 302 430 317 q 423 270 425 286 "},"‘":{"x_min":163,"x_max":400,"ha":359,"o":"m 389 921 q 400 945 400 932 q 385 972 400 960 q 356 984 371 984 q 326 972 344 984 q 209 835 261 928 q 163 699 163 753 q 163 686 163 692 q 165 673 164 680 q 225 656 171 646 q 261 665 246 659 q 288 678 277 671 q 304 705 303 689 q 329 818 314 786 q 389 921 367 899 "},"O":{"x_min":-26,"x_max":802.734375,"ha":704,"o":"m 799 781 q 750 843 767 843 q 729 830 741 843 l 688 788 q 675 780 680 780 q 663 799 665 780 q 653 832 660 814 q 635 868 646 849 q 570 929 608 912 q 484 954 514 954 q 401 933 447 954 q 375 928 390 928 q 163 809 265 928 q 17 547 77 708 q -26 291 -26 421 q 113 0 -26 54 q 203 -19 154 -19 q 416 71 309 -19 q 585 300 517 157 q 663 510 639 414 q 679 609 667 526 q 691 640 683 634 q 749 691 725 667 q 788 734 773 714 q 799 781 810 762 m 560 688 q 506 661 558 661 q 456 670 479 661 q 418 694 434 679 q 393 728 402 709 q 385 769 385 748 q 420 840 385 808 q 466 857 438 857 q 505 846 487 857 q 537 819 524 836 q 557 781 550 802 q 565 740 565 761 q 560 688 565 736 m 526 528 q 443 324 511 453 q 230 105 329 105 q 202 109 216 105 q 116 271 116 138 q 170 530 116 380 q 282 747 220 672 q 299 761 292 761 q 306 734 306 761 q 361 590 295 651 q 468 544 410 544 q 490 546 477 544 q 520 551 502 548 q 526 546 524 553 q 526 528 529 539 "},"n":{"x_min":-37,"x_max":682.25,"ha":668,"o":"m 681 100 q 674 155 684 131 q 663 159 670 167 q 631 123 650 139 q 588 93 612 107 q 522 69 548 69 q 444 81 464 69 q 424 114 424 93 q 428 138 424 123 q 440 171 429 141 q 473 262 451 202 q 526 420 514 371 q 536 482 536 455 q 482 560 536 537 q 442 569 463 569 q 198 386 339 569 q 184 377 192 377 q 183 393 176 377 q 228 539 217 499 q 223 575 233 565 q 177 585 214 585 q 128 581 142 585 q 90 543 101 571 q 70 469 88 534 q 23 282 53 405 q -37 19 -37 37 q -17 -10 -37 -3 q 62 2 21 -22 q 83 35 78 13 q 108 96 90 57 q 156 193 126 135 q 283 388 226 331 q 366 436 339 445 q 379 418 379 432 q 362 368 379 399 q 338 312 351 345 q 309 236 324 279 q 277 100 277 138 q 350 6 277 35 q 538 0 426 -21 q 672 70 614 12 q 681 100 678 77 "},"3":{"x_min":-25.90625,"x_max":530.125,"ha":592,"o":"m 528 684 q 523 757 532 721 q 492 822 513 792 q 440 874 471 852 q 367 903 408 895 q 251 915 308 915 q 207 866 222 915 q 201 826 201 841 q 243 788 201 783 q 255 790 248 790 q 269 790 262 790 q 359 767 325 790 q 400 667 408 735 q 325 560 391 598 q 224 529 275 529 q 192 481 192 529 q 217 433 192 438 q 239 429 226 430 q 266 426 251 427 q 319 413 288 423 q 370 305 370 395 q 346 220 370 256 q 171 115 280 115 q 19 158 99 115 q 2 163 10 163 q -24 113 -17 163 q -6 31 -31 45 q 22 13 10 20 q 40 3 34 6 q 133 -11 72 -5 q 330 27 221 -21 q 493 191 455 88 q 518 312 518 258 q 406 494 518 419 q 396 504 396 501 q 410 516 396 505 q 528 684 520 587 "},"9":{"x_min":68,"x_max":595,"ha":615,"o":"m 582 544 q 595 658 595 604 q 379 918 595 897 q 166 825 253 930 q 79 641 102 748 q 70 591 73 615 q 68 544 68 568 q 190 363 68 383 q 236 359 212 359 q 349 383 288 359 q 368 389 367 390 q 367 375 371 386 q 255 192 331 286 q 184 114 220 149 q 110 49 148 78 q 93 24 93 35 q 110 5 93 13 q 208 -8 139 -8 q 284 7 265 -8 q 453 229 372 98 q 535 391 503 313 q 582 544 567 469 m 446 600 q 405 501 431 528 q 322 465 382 476 q 304 463 312 464 q 289 463 296 463 q 208 553 208 463 q 210 587 208 568 q 217 629 212 607 q 363 818 259 818 q 432 769 408 818 q 453 666 453 729 q 446 600 453 634 "},"l":{"x_min":-12,"x_max":369.578125,"ha":355,"o":"m 368 101 q 362 155 371 132 q 351 160 358 168 q 318 124 337 140 q 276 94 299 108 q 209 70 235 70 q 117 89 136 70 q 108 117 108 99 q 117 171 108 132 q 223 541 147 308 q 252 599 243 588 q 345 774 317 688 q 354 825 354 801 q 335 888 354 863 q 288 916 317 913 q 158 795 204 916 q 64 502 114 683 q -9 167 1 278 q -12 137 -12 150 q -12 115 -12 125 q 42 11 -12 42 q 144 -8 83 -8 q 226 0 182 -8 q 359 71 302 12 q 368 101 366 78 "},"¤":{"x_min":69.5625,"x_max":585.453125,"ha":655,"o":"m 69 149 l 118 100 l 174 160 q 329 105 232 105 q 480 161 420 105 l 537 100 l 585 149 l 529 207 q 580 364 580 271 q 529 517 580 461 l 585 574 l 533 626 l 476 570 q 330 620 419 620 q 177 568 235 620 l 119 626 l 69 575 l 128 516 q 75 361 75 461 q 125 210 75 274 l 69 149 m 330 541 q 447 488 400 541 q 497 364 497 435 q 447 236 497 290 q 329 184 400 184 q 208 235 258 184 q 158 361 158 286 q 208 488 158 436 q 330 541 260 541 "},"4":{"x_min":41,"x_max":595,"ha":677,"o":"m 584 303 q 595 349 595 337 q 571 369 595 371 q 485 360 510 363 q 468 358 460 358 q 452 360 454 358 q 454 382 449 366 q 499 491 467 420 q 584 671 532 563 q 587 684 587 680 q 542 727 587 703 q 499 739 517 739 q 462 711 477 739 q 394 552 427 635 q 332 376 362 469 q 302 346 323 346 q 257 340 274 340 q 228 340 239 340 q 203 350 203 340 q 208 374 203 358 q 247 481 223 419 q 307 623 272 544 q 458 910 393 818 q 467 930 467 920 q 420 970 467 948 q 363 987 389 987 q 322 966 334 987 q 234 803 278 895 q 145 597 189 712 q 90 446 114 516 q 49 312 66 375 q 41 268 41 285 q 92 225 41 225 q 187 225 145 225 q 258 225 228 225 q 283 214 283 225 q 278 198 283 208 q 253 113 273 186 q 234 26 234 44 q 278 -8 228 -8 q 315 -4 307 -8 q 334 22 329 0 q 367 128 352 80 q 394 215 382 176 q 405 231 398 229 q 426 236 405 231 q 541 244 494 236 q 584 303 565 249 "},"p":{"x_min":-157.171875,"x_max":670.359375,"ha":656,"o":"m 669 100 q 662 154 672 131 q 652 158 658 167 q 579 95 627 122 q 513 70 540 74 q 400 77 441 60 q 404 97 387 81 q 465 179 427 121 q 526 321 520 264 q 535 410 535 385 q 454 534 535 493 q 396 548 427 548 q 194 407 311 548 q 187 404 190 402 q 187 417 185 406 q 219 533 206 490 q 238 592 232 576 q 220 636 250 622 q 175 642 209 642 q 134 636 142 639 q 106 607 115 628 q 45 391 74 497 q -10 181 16 285 q -97 -109 -62 6 q -155 -283 -133 -225 q -138 -319 -163 -307 q -44 -319 -108 -336 q -6 -287 -17 -313 q 32 -143 13 -212 q 70 -7 51 -73 q 88 0 77 0 q 157 -7 136 -5 q 175 -10 179 -10 q 230 0 206 -4 q 268 9 253 3 q 291 6 279 12 q 413 -8 325 -8 q 466 -8 438 -8 q 526 0 495 -8 q 660 70 603 12 q 669 100 667 77 m 407 364 q 371 242 407 317 q 292 117 335 167 q 269 99 274 96 q 170 120 234 120 q 133 115 145 120 q 114 111 121 110 q 110 124 107 113 q 196 282 123 170 q 311 422 272 399 q 347 434 330 434 q 390 415 373 434 q 407 364 407 396 "},"‡":{"x_min":12,"x_max":742,"ha":757,"o":"m 399 730 l 186 730 q 157 698 168 730 q 148 645 148 669 q 164 633 148 633 l 373 633 l 263 215 l 50 215 q 21 183 32 215 q 12 130 12 154 q 28 118 12 118 l 237 118 l 182 -80 q 178 -105 178 -95 q 198 -120 178 -120 l 275 -120 l 341 118 l 554 118 q 583 148 573 118 q 593 202 593 177 q 576 215 593 215 l 367 215 l 486 633 l 703 633 q 732 663 722 633 q 742 717 742 692 q 725 730 742 730 l 515 730 l 566 927 q 571 952 571 940 q 550 968 571 968 l 473 968 l 399 730 "},"à":{"x_min":-39,"x_max":704.875,"ha":691,"o":"m 704 101 q 697 155 706 132 q 686 159 693 168 q 653 124 672 140 q 611 94 634 108 q 545 70 570 70 q 453 92 475 70 q 444 119 444 101 q 453 168 444 139 q 477 236 463 197 q 513 327 491 276 q 589 499 570 457 q 585 541 599 525 q 538 556 576 549 q 486 560 500 564 q 464 545 475 556 q 448 523 457 538 q 418 520 440 507 q 316 544 372 544 q 168 502 241 544 q 15 339 69 446 q -39 143 -39 233 q 0 30 -39 74 q 102 -15 35 -15 q 248 54 172 -15 q 321 144 301 103 q 329 154 324 150 q 336 157 334 158 q 336 148 338 154 q 326 87 326 107 q 360 21 326 46 q 490 -4 395 -4 q 527 -4 509 -4 q 561 0 545 -4 q 694 71 637 12 q 704 101 701 78 m 399 407 q 272 190 335 267 q 235 145 249 162 q 214 121 221 127 q 153 85 178 85 q 104 149 104 85 q 165 314 104 216 q 255 403 199 366 q 354 441 313 441 q 401 416 401 441 q 399 407 401 410 m 138 943 q 195 959 138 959 q 260 949 239 959 q 279 931 275 942 q 315 853 297 875 q 385 786 361 800 q 399 768 399 781 q 385 749 399 759 q 328 746 359 734 q 197 834 256 773 q 138 943 131 899 "},"Ü":{"x_min":27,"x_max":1107.015625,"ha":1093,"o":"m 1106 101 q 1099 155 1109 132 q 1088 159 1095 168 q 1056 124 1075 140 q 1012 94 1036 108 q 944 70 968 70 q 849 140 849 70 q 850 158 849 151 q 944 524 899 352 q 1031 849 989 695 q 1037 878 1037 866 q 988 918 1037 910 q 951 923 964 923 q 895 890 909 923 q 783 652 831 751 q 703 493 736 552 q 442 145 559 229 q 372 114 394 114 q 351 137 351 114 q 360 179 351 155 q 528 654 509 584 q 539 731 539 695 q 362 909 539 891 q 345 911 353 911 q 330 911 337 911 q 155 852 233 911 q 52 727 78 799 q 27 595 27 656 q 50 509 27 540 q 110 479 73 479 q 162 510 162 479 q 155 544 162 519 q 148 585 148 569 q 164 667 148 631 q 232 757 188 722 q 319 793 276 793 q 351 787 338 793 q 391 717 391 770 q 381 659 391 688 q 355 592 378 654 q 288 412 331 530 q 221 232 246 303 q 187 130 195 162 q 180 83 180 102 q 255 -9 180 17 q 300 -17 277 -17 q 443 29 352 -17 q 756 389 604 115 q 771 410 765 410 q 765 384 775 410 q 733 268 751 348 q 709 129 709 182 q 739 32 700 68 q 873 -8 782 -8 q 963 0 914 -8 q 1096 71 1037 10 q 1106 101 1103 78 m 909 1110 q 920 1156 920 1129 q 876 1222 920 1203 q 850 1227 864 1227 q 778 1189 795 1227 q 759 1124 759 1153 q 802 1061 759 1081 q 831 1056 814 1056 q 909 1110 876 1056 m 718 1110 q 730 1156 730 1129 q 685 1222 730 1203 q 660 1227 673 1227 q 588 1189 605 1227 q 569 1124 569 1153 q 612 1061 569 1081 q 641 1056 624 1056 q 718 1110 686 1056 "},"ó":{"x_min":-11,"x_max":641.890625,"ha":561,"o":"m 437 499 q 386 515 410 515 q 311 426 311 515 q 340 356 311 379 q 355 327 355 345 q 334 245 355 308 q 285 133 309 168 q 184 68 240 68 q 148 77 165 68 q 123 133 123 91 q 168 293 123 190 q 258 434 198 361 q 323 504 302 492 q 334 535 347 517 q 290 548 324 548 q 142 487 221 548 q 17 309 52 417 q -11 157 -11 219 q 84 1 -11 43 q 172 -15 126 -15 q 421 166 333 -15 q 480 387 480 287 q 437 499 480 474 m 641 943 q 583 959 641 959 q 519 949 540 959 q 500 931 504 942 q 465 853 482 875 q 394 787 418 800 q 381 768 381 781 q 394 749 381 759 q 451 746 420 734 q 582 834 522 773 q 641 943 649 899 "},"\u001a":{"x_min":-76,"x_max":889.71875,"ha":876,"o":"m 407 824 q 436 783 436 820 q 378 609 436 730 q 198 315 291 429 q 179 299 183 299 q 177 303 177 299 q 185 332 177 311 q 250 518 220 432 q 307 680 280 604 q 407 824 360 830 m 177 3 q 156 -91 177 -35 q 68 -214 107 -226 q 49 -184 49 -210 q 77 -67 49 -174 q 108 41 103 29 q 122 60 114 60 q 130 55 126 60 q 170 22 157 29 q 177 3 177 18 m 889 102 q 882 157 891 133 q 871 161 878 169 q 838 125 857 141 q 796 96 819 109 q 729 71 755 71 q 631 94 658 71 q 622 121 622 102 q 632 173 622 136 q 691 351 664 267 q 744 513 718 436 q 739 545 747 530 q 720 563 732 561 q 623 561 675 576 q 592 519 600 554 q 566 430 578 475 q 539 341 553 386 q 490 151 492 183 l 490 126 q 378 70 426 70 q 280 85 325 70 q 261 108 268 89 q 224 168 249 150 q 204 193 204 182 q 217 211 204 201 q 352 344 274 250 q 489 570 448 459 q 544 794 544 715 q 445 932 544 907 q 410 937 426 937 q 136 611 268 937 q 21 260 83 477 q -22 96 -5 157 q -44 12 -39 35 q -67 -103 -59 -53 q -76 -189 -76 -153 q -8 -313 -76 -298 q 39 -319 13 -319 q 251 -115 183 -319 q 266 -62 261 -88 q 274 -12 272 -37 q 291 -2 276 0 q 396 0 330 -10 q 514 58 461 9 q 556 19 528 41 q 676 -4 590 -4 q 745 0 713 -4 q 879 72 823 15 q 889 102 886 79 m 840 805 q 851 851 851 824 q 807 917 851 898 q 781 922 795 922 q 709 884 726 922 q 690 819 690 848 q 733 756 690 776 q 762 751 745 751 q 840 805 807 751 "}},"cssFontWeight":"normal","ascender":1275,"underlinePosition":0,"cssFontStyle":"normal","boundingBox":{"yMin":-576,"xMin":-230,"yMax":1275,"xMax":1488},"resolution":1000,"original_font_information":{"postscript_name":"MarketingScript","version_string":"001.007","vendor_url":"","full_font_name":"Marketing Script","font_family_name":"Marketing Script","copyright":"Copyright (c) FontShop, 1999. All rights reserved. Added to full character set by D. Steffmann","description":"","trademark":"","designer":"","designer_url":"","unique_font_identifier":"MarketingScript","license_url":"","license_description":"","manufacturer_name":"","font_sub_family_name":"Regular"},"descender":-578,"familyName":"Marketing Script","lineHeight":1992,"underlineThickness":0});

/*
Script: Core.js
	MooTools - My Object Oriented JavaScript Tools.

License:
	MIT-style license.

Copyright:
	Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).

Code & Documentation:
	[The MooTools production team](http://mootools.net/developers/).

Inspiration:
	- Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
	- Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
*/

var MooTools = {
	'version': '1.2.1',
	'build': '0d4845aab3d9a4fdee2f0d4a6dd59210e4b697cf'
};

var Native = function(options){
	options = options || {};
	var name = options.name;
	var legacy = options.legacy;
	var protect = options.protect;
	var methods = options.implement;
	var generics = options.generics;
	var initialize = options.initialize;
	var afterImplement = options.afterImplement || function(){};
	var object = initialize || legacy;
	generics = generics !== false;

	object.constructor = Native;
	object.$family = {name: 'native'};
	if (legacy && initialize) object.prototype = legacy.prototype;
	object.prototype.constructor = object;

	if (name){
		var family = name.toLowerCase();
		object.prototype.$family = {name: family};
		Native.typize(object, family);
	}

	var add = function(obj, name, method, force){
		if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
		if (generics) Native.genericize(obj, name, protect);
		afterImplement.call(obj, name, method);
		return obj;
	};

	object.alias = function(a1, a2, a3){
		if (typeof a1 == 'string'){
			if ((a1 = this.prototype[a1])) return add(this, a2, a1, a3);
		}
		for (var a in a1) this.alias(a, a1[a], a2);
		return this;
	};

	object.implement = function(a1, a2, a3){
		if (typeof a1 == 'string') return add(this, a1, a2, a3);
		for (var p in a1) add(this, p, a1[p], a2);
		return this;
	};

	if (methods) object.implement(methods);

	return object;
};

Native.genericize = function(object, property, check){
	if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
		var args = Array.prototype.slice.call(arguments);
		return object.prototype[property].apply(args.shift(), args);
	};
};

Native.implement = function(objects, properties){
	for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
};

Native.typize = function(object, family){
	if (!object.type) object.type = function(item){
		return ($type(item) === family);
	};
};

(function(){
	var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
	for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});

	var types = {'boolean': Boolean, 'native': Native, 'object': Object};
	for (var t in types) Native.typize(types[t], t);

	var generics = {
		'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
		'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
	};
	for (var g in generics){
		for (var i = generics[g].length; i--;) Native.genericize(window[g], generics[g][i], true);
	};
})();

var Hash = new Native({

	name: 'Hash',

	initialize: function(object){
		if ($type(object) == 'hash') object = $unlink(object.getClean());
		for (var key in object) this[key] = object[key];
		return this;
	}

});

Hash.implement({

	forEach: function(fn, bind){
		for (var key in this){
			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
		}
	},

	getClean: function(){
		var clean = {};
		for (var key in this){
			if (this.hasOwnProperty(key)) clean[key] = this[key];
		}
		return clean;
	},

	getLength: function(){
		var length = 0;
		for (var key in this){
			if (this.hasOwnProperty(key)) length++;
		}
		return length;
	}

});

Hash.alias('forEach', 'each');

Array.implement({

	forEach: function(fn, bind){
		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
	}

});

Array.alias('forEach', 'each');

function $A(iterable){
	if (iterable.item){
		var array = [];
		for (var i = 0, l = iterable.length; i < l; i++) array[i] = iterable[i];
		return array;
	}
	return Array.prototype.slice.call(iterable);
};

function $arguments(i){
	return function(){
		return arguments[i];
	};
};

function $chk(obj){
	return !!(obj || obj === 0);
};

function $clear(timer){
	clearTimeout(timer);
	clearInterval(timer);
	return null;
};

function $defined(obj){
	return (obj != undefined);
};

function $each(iterable, fn, bind){
	var type = $type(iterable);
	((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
};

function $empty(){};

function $extend(original, extended){
	for (var key in (extended || {})) original[key] = extended[key];
	return original;
};

function $H(object){
	return new Hash(object);
};

function $lambda(value){
	return (typeof value == 'function') ? value : function(){
		return value;
	};
};

function $merge(){
	var mix = {};
	for (var i = 0, l = arguments.length; i < l; i++){
		var object = arguments[i];
		if ($type(object) != 'object') continue;
		for (var key in object){
			var op = object[key], mp = mix[key];
			mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $merge(mp, op) : $unlink(op);
		}
	}
	return mix;
};

function $pick(){
	for (var i = 0, l = arguments.length; i < l; i++){
		if (arguments[i] != undefined) return arguments[i];
	}
	return null;
};

function $random(min, max){
	return Math.floor(Math.random() * (max - min + 1) + min);
};

function $splat(obj){
	var type = $type(obj);
	return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
};

var $time = Date.now || function(){
	return +new Date;
};

function $try(){
	for (var i = 0, l = arguments.length; i < l; i++){
		try {
			return arguments[i]();
		} catch(e){}
	}
	return null;
};

function $type(obj){
	if (obj == undefined) return false;
	if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
	if (obj.nodeName){
		switch (obj.nodeType){
			case 1: return 'element';
			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
		}
	} else if (typeof obj.length == 'number'){
		if (obj.callee) return 'arguments';
		else if (obj.item) return 'collection';
	}
	return typeof obj;
};

function $unlink(object){
	var unlinked;
	switch ($type(object)){
		case 'object':
			unlinked = {};
			for (var p in object) unlinked[p] = $unlink(object[p]);
		break;
		case 'hash':
			unlinked = new Hash(object);
		break;
		case 'array':
			unlinked = [];
			for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
		break;
		default: return object;
	}
	return unlinked;
};


/*
Script: Browser.js
	The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.

License:
	MIT-style license.
*/

var Browser = $merge({

	Engine: {name: 'unknown', version: 0},

	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},

	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},

	Plugins: {},

	Engines: {

		presto: function(){
			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
		},

		trident: function(){
			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? 5 : 4);
		},

		webkit: function(){
			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
		},

		gecko: function(){
			return (document.getBoxObjectFor == undefined) ? false : ((document.getElementsByClassName) ? 19 : 18);
		}

	}

}, Browser || {});

Browser.Platform[Browser.Platform.name] = true;

Browser.detect = function(){

	for (var engine in this.Engines){
		var version = this.Engines[engine]();
		if (version){
			this.Engine = {name: engine, version: version};
			this.Engine[engine] = this.Engine[engine + version] = true;
			break;
		}
	}

	return {name: engine, version: version};

};

Browser.detect();

Browser.Request = function(){
	return $try(function(){
		return new XMLHttpRequest();
	}, function(){
		return new ActiveXObject('MSXML2.XMLHTTP');
	});
};

Browser.Features.xhr = !!(Browser.Request());

Browser.Plugins.Flash = (function(){
	var version = ($try(function(){
		return navigator.plugins['Shockwave Flash'].description;
	}, function(){
		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
	}) || '0 r0').match(/\d+/g);
	return {version: parseInt(version[0] || 0 + '.' + version[1] || 0), build: parseInt(version[2] || 0)};
})();

function $exec(text){
	if (!text) return text;
	if (window.execScript){
		window.execScript(text);
	} else {
		var script = document.createElement('script');
		script.setAttribute('type', 'text/javascript');
		script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
		document.head.appendChild(script);
		document.head.removeChild(script);
	}
	return text;
};

Native.UID = 1;

var $uid = (Browser.Engine.trident) ? function(item){
	return (item.uid || (item.uid = [Native.UID++]))[0];
} : function(item){
	return item.uid || (item.uid = Native.UID++);
};

var Window = new Native({

	name: 'Window',

	legacy: (Browser.Engine.trident) ? null: window.Window,

	initialize: function(win){
		$uid(win);
		if (!win.Element){
			win.Element = $empty;
			if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
			win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
		}
		win.document.window = win;
		return $extend(win, Window.Prototype);
	},

	afterImplement: function(property, value){
		window[property] = Window.Prototype[property] = value;
	}

});

Window.Prototype = {$family: {name: 'window'}};

new Window(window);

var Document = new Native({

	name: 'Document',

	legacy: (Browser.Engine.trident) ? null: window.Document,

	initialize: function(doc){
		$uid(doc);
		doc.head = doc.getElementsByTagName('head')[0];
		doc.html = doc.getElementsByTagName('html')[0];
		if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
			doc.execCommand("BackgroundImageCache", false, true);
		});
		if (Browser.Engine.trident) doc.window.attachEvent('onunload', function() {
			doc.window.detachEvent('onunload', arguments.callee);
			doc.head = doc.html = doc.window = null;
		});
		return $extend(doc, Document.Prototype);
	},

	afterImplement: function(property, value){
		document[property] = Document.Prototype[property] = value;
	}

});

Document.Prototype = {$family: {name: 'document'}};

new Document(document);


/*
Script: Array.js
	Contains Array Prototypes like each, contains, and erase.

License:
	MIT-style license.
*/

Array.implement({

	every: function(fn, bind){
		for (var i = 0, l = this.length; i < l; i++){
			if (!fn.call(bind, this[i], i, this)) return false;
		}
		return true;
	},

	filter: function(fn, bind){
		var results = [];
		for (var i = 0, l = this.length; i < l; i++){
			if (fn.call(bind, this[i], i, this)) results.push(this[i]);
		}
		return results;
	},

	clean: function() {
		return this.filter($defined);
	},

	indexOf: function(item, from){
		var len = this.length;
		for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
			if (this[i] === item) return i;
		}
		return -1;
	},

	map: function(fn, bind){
		var results = [];
		for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
		return results;
	},

	some: function(fn, bind){
		for (var i = 0, l = this.length; i < l; i++){
			if (fn.call(bind, this[i], i, this)) return true;
		}
		return false;
	},

	associate: function(keys){
		var obj = {}, length = Math.min(this.length, keys.length);
		for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
		return obj;
	},

	link: function(object){
		var result = {};
		for (var i = 0, l = this.length; i < l; i++){
			for (var key in object){
				if (object[key](this[i])){
					result[key] = this[i];
					delete object[key];
					break;
				}
			}
		}
		return result;
	},

	contains: function(item, from){
		return this.indexOf(item, from) != -1;
	},

	extend: function(array){
		for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
		return this;
	},

	getLast: function(){
		return (this.length) ? this[this.length - 1] : null;
	},

	getRandom: function(){
		return (this.length) ? this[$random(0, this.length - 1)] : null;
	},

	include: function(item){
		if (!this.contains(item)) this.push(item);
		return this;
	},

	combine: function(array){
		for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
		return this;
	},

	erase: function(item){
		for (var i = this.length; i--; i){
			if (this[i] === item) this.splice(i, 1);
		}
		return this;
	},

	empty: function(){
		this.length = 0;
		return this;
	},

	flatten: function(){
		var array = [];
		for (var i = 0, l = this.length; i < l; i++){
			var type = $type(this[i]);
			if (!type) continue;
			array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
		}
		return array;
	},

	hexToRgb: function(array){
		if (this.length != 3) return null;
		var rgb = this.map(function(value){
			if (value.length == 1) value += value;
			return value.toInt(16);
		});
		return (array) ? rgb : 'rgb(' + rgb + ')';
	},

	rgbToHex: function(array){
		if (this.length < 3) return null;
		if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
		var hex = [];
		for (var i = 0; i < 3; i++){
			var bit = (this[i] - 0).toString(16);
			hex.push((bit.length == 1) ? '0' + bit : bit);
		}
		return (array) ? hex : '#' + hex.join('');
	}

});


/*
Script: Function.js
	Contains Function Prototypes like create, bind, pass, and delay.

License:
	MIT-style license.
*/

Function.implement({

	extend: function(properties){
		for (var property in properties) this[property] = properties[property];
		return this;
	},

	create: function(options){
		var self = this;
		options = options || {};
		return function(event){
			var args = options.arguments;
			args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
			if (options.event) args = [event || window.event].extend(args);
			var returns = function(){
				return self.apply(options.bind || null, args);
			};
			if (options.delay) return setTimeout(returns, options.delay);
			if (options.periodical) return setInterval(returns, options.periodical);
			if (options.attempt) return $try(returns);
			return returns();
		};
	},

	run: function(args, bind){
		return this.apply(bind, $splat(args));
	},

	pass: function(args, bind){
		return this.create({bind: bind, arguments: args});
	},

	bind: function(bind, args){
		return this.create({bind: bind, arguments: args});
	},

	bindWithEvent: function(bind, args){
		return this.create({bind: bind, arguments: args, event: true});
	},

	attempt: function(args, bind){
		return this.create({bind: bind, arguments: args, attempt: true})();
	},

	delay: function(delay, bind, args){
		return this.create({bind: bind, arguments: args, delay: delay})();
	},

	periodical: function(periodical, bind, args){
		return this.create({bind: bind, arguments: args, periodical: periodical})();
	}

});


/*
Script: Number.js
	Contains Number Prototypes like limit, round, times, and ceil.

License:
	MIT-style license.
*/

Number.implement({

	limit: function(min, max){
		return Math.min(max, Math.max(min, this));
	},

	round: function(precision){
		precision = Math.pow(10, precision || 0);
		return Math.round(this * precision) / precision;
	},

	times: function(fn, bind){
		for (var i = 0; i < this; i++) fn.call(bind, i, this);
	},

	toFloat: function(){
		return parseFloat(this);
	},

	toInt: function(base){
		return parseInt(this, base || 10);
	}

});

Number.alias('times', 'each');

(function(math){
	var methods = {};
	math.each(function(name){
		if (!Number[name]) methods[name] = function(){
			return Math[name].apply(null, [this].concat($A(arguments)));
		};
	});
	Number.implement(methods);
})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);


/*
Script: String.js
	Contains String Prototypes like camelCase, capitalize, test, and toInt.

License:
	MIT-style license.
*/

String.implement({

	test: function(regex, params){
		return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
	},

	contains: function(string, separator){
		return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
	},

	trim: function(){
		return this.replace(/^\s+|\s+$/g, '');
	},

	clean: function(){
		return this.replace(/\s+/g, ' ').trim();
	},

	camelCase: function(){
		return this.replace(/-\D/g, function(match){
			return match.charAt(1).toUpperCase();
		});
	},

	hyphenate: function(){
		return this.replace(/[A-Z]/g, function(match){
			return ('-' + match.charAt(0).toLowerCase());
		});
	},

	capitalize: function(){
		return this.replace(/\b[a-z]/g, function(match){
			return match.toUpperCase();
		});
	},

	escapeRegExp: function(){
		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
	},

	toInt: function(base){
		return parseInt(this, base || 10);
	},

	toFloat: function(){
		return parseFloat(this);
	},

	hexToRgb: function(array){
		var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
		return (hex) ? hex.slice(1).hexToRgb(array) : null;
	},

	rgbToHex: function(array){
		var rgb = this.match(/\d{1,3}/g);
		return (rgb) ? rgb.rgbToHex(array) : null;
	},

	stripScripts: function(option){
		var scripts = '';
		var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
			scripts += arguments[1] + '\n';
			return '';
		});
		if (option === true) $exec(scripts);
		else if ($type(option) == 'function') option(scripts, text);
		return text;
	},

	substitute: function(object, regexp){
		return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
			if (match.charAt(0) == '\\') return match.slice(1);
			return (object[name] != undefined) ? object[name] : '';
		});
	}

});


/*
Script: Hash.js
	Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.

License:
	MIT-style license.
*/

Hash.implement({

	has: Object.prototype.hasOwnProperty,

	keyOf: function(value){
		for (var key in this){
			if (this.hasOwnProperty(key) && this[key] === value) return key;
		}
		return null;
	},

	hasValue: function(value){
		return (Hash.keyOf(this, value) !== null);
	},

	extend: function(properties){
		Hash.each(properties, function(value, key){
			Hash.set(this, key, value);
		}, this);
		return this;
	},

	combine: function(properties){
		Hash.each(properties, function(value, key){
			Hash.include(this, key, value);
		}, this);
		return this;
	},

	erase: function(key){
		if (this.hasOwnProperty(key)) delete this[key];
		return this;
	},

	get: function(key){
		return (this.hasOwnProperty(key)) ? this[key] : null;
	},

	set: function(key, value){
		if (!this[key] || this.hasOwnProperty(key)) this[key] = value;
		return this;
	},

	empty: function(){
		Hash.each(this, function(value, key){
			delete this[key];
		}, this);
		return this;
	},

	include: function(key, value){
		var k = this[key];
		if (k == undefined) this[key] = value;
		return this;
	},

	map: function(fn, bind){
		var results = new Hash;
		Hash.each(this, function(value, key){
			results.set(key, fn.call(bind, value, key, this));
		}, this);
		return results;
	},

	filter: function(fn, bind){
		var results = new Hash;
		Hash.each(this, function(value, key){
			if (fn.call(bind, value, key, this)) results.set(key, value);
		}, this);
		return results;
	},

	every: function(fn, bind){
		for (var key in this){
			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;
		}
		return true;
	},

	some: function(fn, bind){
		for (var key in this){
			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;
		}
		return false;
	},

	getKeys: function(){
		var keys = [];
		Hash.each(this, function(value, key){
			keys.push(key);
		});
		return keys;
	},

	getValues: function(){
		var values = [];
		Hash.each(this, function(value){
			values.push(value);
		});
		return values;
	},

	toQueryString: function(base){
		var queryString = [];
		Hash.each(this, function(value, key){
			if (base) key = base + '[' + key + ']';
			var result;
			switch ($type(value)){
				case 'object': result = Hash.toQueryString(value, key); break;
				case 'array':
					var qs = {};
					value.each(function(val, i){
						qs[i] = val;
					});
					result = Hash.toQueryString(qs, key);
				break;
				default: result = key + '=' + encodeURIComponent(value);
			}
			if (value != undefined) queryString.push(result);
		});

		return queryString.join('&');
	}

});

Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});


/*
Script: Event.js
	Contains the Event Native, to make the event object completely crossbrowser.

License:
	MIT-style license.
*/

var Event = new Native({

	name: 'Event',

	initialize: function(event, win){
		win = win || window;
		var doc = win.document;
		event = event || win.event;
		if (event.$extended) return event;
		this.$extended = true;
		var type = event.type;
		var target = event.target || event.srcElement;
		while (target && target.nodeType == 3) target = target.parentNode;

		if (type.test(/key/)){
			var code = event.which || event.keyCode;
			var key = Event.Keys.keyOf(code);
			if (type == 'keydown'){
				var fKey = code - 111;
				if (fKey > 0 && fKey < 13) key = 'f' + fKey;
			}
			key = key || String.fromCharCode(code).toLowerCase();
		} else if (type.match(/(click|mouse|menu)/i)){
			doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
			var page = {
				x: event.pageX || event.clientX + doc.scrollLeft,
				y: event.pageY || event.clientY + doc.scrollTop
			};
			var client = {
				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
			};
			if (type.match(/DOMMouseScroll|mousewheel/)){
				var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
			}
			var rightClick = (event.which == 3) || (event.button == 2);
			var related = null;
			if (type.match(/over|out/)){
				switch (type){
					case 'mouseover': related = event.relatedTarget || event.fromElement; break;
					case 'mouseout': related = event.relatedTarget || event.toElement;
				}
				if (!(function(){
					while (related && related.nodeType == 3) related = related.parentNode;
					return true;
				}).create({attempt: Browser.Engine.gecko})()) related = false;
			}
		}

		return $extend(this, {
			event: event,
			type: type,

			page: page,
			client: client,
			rightClick: rightClick,

			wheel: wheel,

			relatedTarget: related,
			target: target,

			code: code,
			key: key,

			shift: event.shiftKey,
			control: event.ctrlKey,
			alt: event.altKey,
			meta: event.metaKey
		});
	}

});

Event.Keys = new Hash({
	'enter': 13,
	'up': 38,
	'down': 40,
	'left': 37,
	'right': 39,
	'esc': 27,
	'space': 32,
	'backspace': 8,
	'tab': 9,
	'delete': 46
});

Event.implement({

	stop: function(){
		return this.stopPropagation().preventDefault();
	},

	stopPropagation: function(){
		if (this.event.stopPropagation) this.event.stopPropagation();
		else this.event.cancelBubble = true;
		return this;
	},

	preventDefault: function(){
		if (this.event.preventDefault) this.event.preventDefault();
		else this.event.returnValue = false;
		return this;
	}

});


/*
Script: Class.js
	Contains the Class Function for easily creating, extending, and implementing reusable Classes.

License:
	MIT-style license.
*/

var Class = new Native({

	name: 'Class',

	initialize: function(properties){
		properties = properties || {};
		var klass = function(){
			for (var key in this){
				if ($type(this[key]) != 'function') this[key] = $unlink(this[key]);
			}
			this.constructor = klass;
			if (Class.prototyping) return this;
			var instance = (this.initialize) ? this.initialize.apply(this, arguments) : this;
			if (this.options && this.options.initialize) this.options.initialize.call(this);
			return instance;
		};

		for (var mutator in Class.Mutators){
			if (!properties[mutator]) continue;
			properties = Class.Mutators[mutator](properties, properties[mutator]);
			delete properties[mutator];
		}

		$extend(klass, this);
		klass.constructor = Class;
		klass.prototype = properties;
		return klass;
	}

});

Class.Mutators = {

	Extends: function(self, klass){
		Class.prototyping = klass.prototype;
		var subclass = new klass;
		delete subclass.parent;
		subclass = Class.inherit(subclass, self);
		delete Class.prototyping;
		return subclass;
	},

	Implements: function(self, klasses){
		$splat(klasses).each(function(klass){
			Class.prototying = klass;
			$extend(self, ($type(klass) == 'class') ? new klass : klass);
			delete Class.prototyping;
		});
		return self;
	}

};

Class.extend({

	inherit: function(object, properties){
		var caller = arguments.callee.caller;
		for (var key in properties){
			var override = properties[key];
			var previous = object[key];
			var type = $type(override);
			if (previous && type == 'function'){
				if (override != previous){
					if (caller){
						override.__parent = previous;
						object[key] = override;
					} else {
						Class.override(object, key, override);
					}
				}
			} else if(type == 'object'){
				object[key] = $merge(previous, override);
			} else {
				object[key] = override;
			}
		}

		if (caller) object.parent = function(){
			return arguments.callee.caller.__parent.apply(this, arguments);
		};

		return object;
	},

	override: function(object, name, method){
		var parent = Class.prototyping;
		if (parent && object[name] != parent[name]) parent = null;
		var override = function(){
			var previous = this.parent;
			this.parent = parent ? parent[name] : object[name];
			var value = method.apply(this, arguments);
			this.parent = previous;
			return value;
		};
		object[name] = override;
	}

});

Class.implement({

	implement: function(){
		var proto = this.prototype;
		$each(arguments, function(properties){
			Class.inherit(proto, properties);
		});
		return this;
	}

});


/*
Script: Class.Extras.js
	Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.

License:
	MIT-style license.
*/

var Chain = new Class({

	$chain: [],

	chain: function(){
		this.$chain.extend(Array.flatten(arguments));
		return this;
	},

	callChain: function(){
		return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;
	},

	clearChain: function(){
		this.$chain.empty();
		return this;
	}

});

var Events = new Class({

	$events: {},

	addEvent: function(type, fn, internal){
		type = Events.removeOn(type);
		if (fn != $empty){
			this.$events[type] = this.$events[type] || [];
			this.$events[type].include(fn);
			if (internal) fn.internal = true;
		}
		return this;
	},

	addEvents: function(events){
		for (var type in events) this.addEvent(type, events[type]);
		return this;
	},

	fireEvent: function(type, args, delay){
		type = Events.removeOn(type);
		if (!this.$events || !this.$events[type]) return this;
		this.$events[type].each(function(fn){
			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
		}, this);
		return this;
	},

	removeEvent: function(type, fn){
		type = Events.removeOn(type);
		if (!this.$events[type]) return this;
		if (!fn.internal) this.$events[type].erase(fn);
		return this;
	},

	removeEvents: function(events){
		if ($type(events) == 'object'){
			for (var type in events) this.removeEvent(type, events[type]);
			return this;
		}
		if (events) events = Events.removeOn(events);
		for (var type in this.$events){
			if (events && events != type) continue;
			var fns = this.$events[type];
			for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]);
		}
		return this;
	}

});

Events.removeOn = function(string){
	return string.replace(/^on([A-Z])/, function(full, first) {
		return first.toLowerCase();
	});
};

var Options = new Class({

	setOptions: function(){
		this.options = $merge.run([this.options].extend(arguments));
		if (!this.addEvent) return this;
		for (var option in this.options){
			if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
			this.addEvent(option, this.options[option]);
			delete this.options[option];
		}
		return this;
	}

});


/*
Script: Element.js
	One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser,
	time-saver methods to let you easily work with HTML Elements.

License:
	MIT-style license.
*/

var Element = new Native({

	name: 'Element',

	legacy: window.Element,

	initialize: function(tag, props){
		var konstructor = Element.Constructors.get(tag);
		if (konstructor) return konstructor(props);
		if (typeof tag == 'string') return document.newElement(tag, props);
		return $(tag).set(props);
	},

	afterImplement: function(key, value){
		Element.Prototype[key] = value;
		if (Array[key]) return;
		Elements.implement(key, function(){
			var items = [], elements = true;
			for (var i = 0, j = this.length; i < j; i++){
				var returns = this[i][key].apply(this[i], arguments);
				items.push(returns);
				if (elements) elements = ($type(returns) == 'element');
			}
			return (elements) ? new Elements(items) : items;
		});
	}

});

Element.Prototype = {$family: {name: 'element'}};

Element.Constructors = new Hash;

var IFrame = new Native({

	name: 'IFrame',

	generics: false,

	initialize: function(){
		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
		var props = params.properties || {};
		var iframe = $(params.iframe) || false;
		var onload = props.onload || $empty;
		delete props.onload;
		props.id = props.name = $pick(props.id, props.name, iframe.id, iframe.name, 'IFrame_' + $time());
		iframe = new Element(iframe || 'iframe', props);
		var onFrameLoad = function(){
			var host = $try(function(){
				return iframe.contentWindow.location.host;
			});
			if (host && host == window.location.host){
				var win = new Window(iframe.contentWindow);
				new Document(iframe.contentWindow.document);
				$extend(win.Element.prototype, Element.Prototype);
			}
			onload.call(iframe.contentWindow, iframe.contentWindow.document);
		};
		(window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
		return iframe;
	}

});

var Elements = new Native({

	initialize: function(elements, options){
		options = $extend({ddup: true, cash: true}, options);
		elements = elements || [];
		if (options.ddup || options.cash){
			var uniques = {}, returned = [];
			for (var i = 0, l = elements.length; i < l; i++){
				var el = $.element(elements[i], !options.cash);
				if (options.ddup){
					if (uniques[el.uid]) continue;
					uniques[el.uid] = true;
				}
				returned.push(el);
			}
			elements = returned;
		}
		return (options.cash) ? $extend(elements, this) : elements;
	}

});

Elements.implement({

	filter: function(filter, bind){
		if (!filter) return this;
		return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){
			return item.match(filter);
		} : filter, bind));
	}

});

Document.implement({

	newElement: function(tag, props){
		if (Browser.Engine.trident && props){
			['name', 'type', 'checked'].each(function(attribute){
				if (!props[attribute]) return;
				tag += ' ' + attribute + '="' + props[attribute] + '"';
				if (attribute != 'checked') delete props[attribute];
			});
			tag = '<' + tag + '>';
		}
		return $.element(this.createElement(tag)).set(props);
	},

	newTextNode: function(text){
		return this.createTextNode(text);
	},

	getDocument: function(){
		return this;
	},

	getWindow: function(){
		return this.window;
	}

});

Window.implement({

	$: function(el, nocash){
		if (el && el.$family && el.uid) return el;
		var type = $type(el);
		return ($[type]) ? $[type](el, nocash, this.document) : null;
	},

	$$: function(selector){
		if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);
		var elements = [];
		var args = Array.flatten(arguments);
		for (var i = 0, l = args.length; i < l; i++){
			var item = args[i];
			switch ($type(item)){
				case 'element': elements.push(item); break;
				case 'string': elements.extend(this.document.getElements(item, true));
			}
		}
		return new Elements(elements);
	},

	getDocument: function(){
		return this.document;
	},

	getWindow: function(){
		return this;
	}

});

$.string = function(id, nocash, doc){
	id = doc.getElementById(id);
	return (id) ? $.element(id, nocash) : null;
};

$.element = function(el, nocash){
	$uid(el);
	if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
		var proto = Element.Prototype;
		for (var p in proto) el[p] = proto[p];
	};
	return el;
};

$.object = function(obj, nocash, doc){
	if (obj.toElement) return $.element(obj.toElement(doc), nocash);
	return null;
};

$.textnode = $.whitespace = $.window = $.document = $arguments(0);

Native.implement([Element, Document], {

	getElement: function(selector, nocash){
		return $(this.getElements(selector, true)[0] || null, nocash);
	},

	getElements: function(tags, nocash){
		tags = tags.split(',');
		var elements = [];
		var ddup = (tags.length > 1);
		tags.each(function(tag){
			var partial = this.getElementsByTagName(tag.trim());
			(ddup) ? elements.extend(partial) : elements = partial;
		}, this);
		return new Elements(elements, {ddup: ddup, cash: !nocash});
	}

});

(function(){

var collected = {}, storage = {};
var props = {input: 'checked', option: 'selected', textarea: (Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerHTML' : 'value'};

var get = function(uid){
	return (storage[uid] || (storage[uid] = {}));
};

var clean = function(item, retain){
	if (!item) return;
	var uid = item.uid;
	if (Browser.Engine.trident){
		if (item.clearAttributes){
			var clone = retain && item.cloneNode(false);
			item.clearAttributes();
			if (clone) item.mergeAttributes(clone);
		} else if (item.removeEvents){
			item.removeEvents();
		}
		if ((/object/i).test(item.tagName)){
			for (var p in item){
				if (typeof item[p] == 'function') item[p] = $empty;
			}
			Element.dispose(item);
		}
	}	
	if (!uid) return;
	collected[uid] = storage[uid] = null;
};

var purge = function(){
	Hash.each(collected, clean);
	if (Browser.Engine.trident) $A(document.getElementsByTagName('object')).each(clean);
	if (window.CollectGarbage) CollectGarbage();
	collected = storage = null;
};

var walk = function(element, walk, start, match, all, nocash){
	var el = element[start || walk];
	var elements = [];
	while (el){
		if (el.nodeType == 1 && (!match || Element.match(el, match))){
			if (!all) return $(el, nocash);
			elements.push(el);
		}
		el = el[walk];
	}
	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : null;
};

var attributes = {
	'html': 'innerHTML',
	'class': 'className',
	'for': 'htmlFor',
	'text': (Browser.Engine.trident || (Browser.Engine.webkit && Browser.Engine.version < 420)) ? 'innerText' : 'textContent'
};
var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
var camels = ['value', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'];

Hash.extend(attributes, bools.associate(bools));
Hash.extend(attributes, camels.associate(camels.map(String.toLowerCase)));

var inserters = {

	before: function(context, element){
		if (element.parentNode) element.parentNode.insertBefore(context, element);
	},

	after: function(context, element){
		if (!element.parentNode) return;
		var next = element.nextSibling;
		(next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);
	},

	bottom: function(context, element){
		element.appendChild(context);
	},

	top: function(context, element){
		var first = element.firstChild;
		(first) ? element.insertBefore(context, first) : element.appendChild(context);
	}

};

inserters.inside = inserters.bottom;

Hash.each(inserters, function(inserter, where){

	where = where.capitalize();

	Element.implement('inject' + where, function(el){
		inserter(this, $(el, true));
		return this;
	});

	Element.implement('grab' + where, function(el){
		inserter($(el, true), this);
		return this;
	});

});

Element.implement({

	set: function(prop, value){
		switch ($type(prop)){
			case 'object':
				for (var p in prop) this.set(p, prop[p]);
				break;
			case 'string':
				var property = Element.Properties.get(prop);
				(property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);
		}
		return this;
	},

	get: function(prop){
		var property = Element.Properties.get(prop);
		return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);
	},

	erase: function(prop){
		var property = Element.Properties.get(prop);
		(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
		return this;
	},

	setProperty: function(attribute, value){
		var key = attributes[attribute];
		if (value == undefined) return this.removeProperty(attribute);
		if (key && bools[attribute]) value = !!value;
		(key) ? this[key] = value : this.setAttribute(attribute, '' + value);
		return this;
	},

	setProperties: function(attributes){
		for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
		return this;
	},

	getProperty: function(attribute){
		var key = attributes[attribute];
		var value = (key) ? this[key] : this.getAttribute(attribute, 2);
		return (bools[attribute]) ? !!value : (key) ? value : value || null;
	},

	getProperties: function(){
		var args = $A(arguments);
		return args.map(this.getProperty, this).associate(args);
	},

	removeProperty: function(attribute){
		var key = attributes[attribute];
		(key) ? this[key] = (key && bools[attribute]) ? false : '' : this.removeAttribute(attribute);
		return this;
	},

	removeProperties: function(){
		Array.each(arguments, this.removeProperty, this);
		return this;
	},

	hasClass: function(className){
		return this.className.contains(className, ' ');
	},

	addClass: function(className){
		if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
		return this;
	},

	removeClass: function(className){
		this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
		return this;
	},

	toggleClass: function(className){
		return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
	},

	adopt: function(){
		Array.flatten(arguments).each(function(element){
			element = $(element, true);
			if (element) this.appendChild(element);
		}, this);
		return this;
	},

	appendText: function(text, where){
		return this.grab(this.getDocument().newTextNode(text), where);
	},

	grab: function(el, where){
		inserters[where || 'bottom']($(el, true), this);
		return this;
	},

	inject: function(el, where){
		inserters[where || 'bottom'](this, $(el, true));
		return this;
	},

	replaces: function(el){
		el = $(el, true);
		el.parentNode.replaceChild(this, el);
		return this;
	},

	wraps: function(el, where){
		el = $(el, true);
		return this.replaces(el).grab(el, where);
	},

	getPrevious: function(match, nocash){
		return walk(this, 'previousSibling', null, match, false, nocash);
	},

	getAllPrevious: function(match, nocash){
		return walk(this, 'previousSibling', null, match, true, nocash);
	},

	getNext: function(match, nocash){
		return walk(this, 'nextSibling', null, match, false, nocash);
	},

	getAllNext: function(match, nocash){
		return walk(this, 'nextSibling', null, match, true, nocash);
	},

	getFirst: function(match, nocash){
		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);
	},

	getLast: function(match, nocash){
		return walk(this, 'previousSibling', 'lastChild', match, false, nocash);
	},

	getParent: function(match, nocash){
		return walk(this, 'parentNode', null, match, false, nocash);
	},

	getParents: function(match, nocash){
		return walk(this, 'parentNode', null, match, true, nocash);
	},

	getChildren: function(match, nocash){
		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);
	},

	getWindow: function(){
		return this.ownerDocument.window;
	},

	getDocument: function(){
		return this.ownerDocument;
	},

	getElementById: function(id, nocash){
		var el = this.ownerDocument.getElementById(id);
		if (!el) return null;
		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
			if (!parent) return null;
		}
		return $.element(el, nocash);
	},

	getSelected: function(){
		return new Elements($A(this.options).filter(function(option){
			return option.selected;
		}));
	},

	getComputedStyle: function(property){
		if (this.currentStyle) return this.currentStyle[property.camelCase()];
		var computed = this.getDocument().defaultView.getComputedStyle(this, null);
		return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;
	},

	toQueryString: function(){
		var queryString = [];
		this.getElements('input, select, textarea', true).each(function(el){
			if (!el.name || el.disabled) return;
			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
				return opt.value;
			}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
			$splat(value).each(function(val){
				if (typeof val != 'undefined') queryString.push(el.name + '=' + encodeURIComponent(val));
			});
		});
		return queryString.join('&');
	},

	clone: function(contents, keepid){
		contents = contents !== false;
		var clone = this.cloneNode(contents);
		var clean = function(node, element){
			if (!keepid) node.removeAttribute('id');
			if (Browser.Engine.trident){
				node.clearAttributes();
				node.mergeAttributes(element);
				node.removeAttribute('uid');
				if (node.options){
					var no = node.options, eo = element.options;
					for (var j = no.length; j--;) no[j].selected = eo[j].selected;
				}
			}
			var prop = props[element.tagName.toLowerCase()];
			if (prop && element[prop]) node[prop] = element[prop];
		};

		if (contents){
			var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
			for (var i = ce.length; i--;) clean(ce[i], te[i]);
		}

		clean(clone, this);
		return $(clone);
	},

	destroy: function(){
		Element.empty(this);
		Element.dispose(this);
		clean(this, true);
		return null;
	},

	empty: function(){
		$A(this.childNodes).each(function(node){
			Element.destroy(node);
		});
		return this;
	},

	dispose: function(){
		return (this.parentNode) ? this.parentNode.removeChild(this) : this;
	},

	hasChild: function(el){
		el = $(el, true);
		if (!el) return false;
		if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
		return (this.contains) ? (this != el && this.contains(el)) : !!(this.compareDocumentPosition(el) & 16);
	},

	match: function(tag){
		return (!tag || (tag == this) || (Element.get(this, 'tag') == tag));
	}

});

Native.implement([Element, Window, Document], {

	addListener: function(type, fn){
		if (type == 'unload'){
			var old = fn, self = this;
			fn = function(){
				self.removeListener('unload', fn);
				old();
			};
		} else {
			collected[this.uid] = this;
		}
		if (this.addEventListener) this.addEventListener(type, fn, false);
		else this.attachEvent('on' + type, fn);
		return this;
	},

	removeListener: function(type, fn){
		if (this.removeEventListener) this.removeEventListener(type, fn, false);
		else this.detachEvent('on' + type, fn);
		return this;
	},

	retrieve: function(property, dflt){
		var storage = get(this.uid), prop = storage[property];
		if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
		return $pick(prop);
	},

	store: function(property, value){
		var storage = get(this.uid);
		storage[property] = value;
		return this;
	},

	eliminate: function(property){
		var storage = get(this.uid);
		delete storage[property];
		return this;
	}

});

window.addListener('unload', purge);

})();

Element.Properties = new Hash;

Element.Properties.style = {

	set: function(style){
		this.style.cssText = style;
	},

	get: function(){
		return this.style.cssText;
	},

	erase: function(){
		this.style.cssText = '';
	}

};

Element.Properties.tag = {

	get: function(){
		return this.tagName.toLowerCase();
	}

};

Element.Properties.html = (function(){
	var wrapper = document.createElement('div');

	var translations = {
		table: [1, '<table>', '</table>'],
		select: [1, '<select>', '</select>'],
		tbody: [2, '<table><tbody>', '</tbody></table>'],
		tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
	};
	translations.thead = translations.tfoot = translations.tbody;

	var html = {
		set: function(){
			var html = Array.flatten(arguments).join('');
			var wrap = Browser.Engine.trident && translations[this.get('tag')];
			if (wrap){
				var first = wrapper;
				first.innerHTML = wrap[1] + html + wrap[2];
				for (var i = wrap[0]; i--;) first = first.firstChild;
				this.empty().adopt(first.childNodes);
			} else {
				this.innerHTML = html;
			}
		}
	};

	html.erase = html.set;

	return html;
})();

if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = {
	get: function(){
		if (this.innerText) return this.innerText;
		var temp = this.ownerDocument.newElement('div', {html: this.innerHTML}).inject(this.ownerDocument.body);
		var text = temp.innerText;
		temp.destroy();
		return text;
	}
};


/*
Script: Element.Event.js
	Contains Element methods for dealing with events, and custom Events.

License:
	MIT-style license.
*/

Element.Properties.events = {set: function(events){
	this.addEvents(events);
}};

Native.implement([Element, Window, Document], {

	addEvent: function(type, fn){
		var events = this.retrieve('events', {});
		events[type] = events[type] || {'keys': [], 'values': []};
		if (events[type].keys.contains(fn)) return this;
		events[type].keys.push(fn);
		var realType = type, custom = Element.Events.get(type), condition = fn, self = this;
		if (custom){
			if (custom.onAdd) custom.onAdd.call(this, fn);
			if (custom.condition){
				condition = function(event){
					if (custom.condition.call(this, event)) return fn.call(this, event);
					return true;
				};
			}
			realType = custom.base || realType;
		}
		var defn = function(){
			return fn.call(self);
		};
		var nativeEvent = Element.NativeEvents[realType];
		if (nativeEvent){
			if (nativeEvent == 2){
				defn = function(event){
					event = new Event(event, self.getWindow());
					if (condition.call(self, event) === false) event.stop();
				};
			}
			this.addListener(realType, defn);
		}
		events[type].values.push(defn);
		return this;
	},

	removeEvent: function(type, fn){
		var events = this.retrieve('events');
		if (!events || !events[type]) return this;
		var pos = events[type].keys.indexOf(fn);
		if (pos == -1) return this;
		events[type].keys.splice(pos, 1);
		var value = events[type].values.splice(pos, 1)[0];
		var custom = Element.Events.get(type);
		if (custom){
			if (custom.onRemove) custom.onRemove.call(this, fn);
			type = custom.base || type;
		}
		return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
	},

	addEvents: function(events){
		for (var event in events) this.addEvent(event, events[event]);
		return this;
	},

	removeEvents: function(events){
		if ($type(events) == 'object'){
			for (var type in events) this.removeEvent(type, events[type]);
			return this;
		}
		var attached = this.retrieve('events');
		if (!attached) return this;
		if (!events){
			for (var type in attached) this.removeEvents(type);
			this.eliminate('events');
		} else if (attached[events]){
			while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
			attached[events] = null;
		}
		return this;
	},

	fireEvent: function(type, args, delay){
		var events = this.retrieve('events');
		if (!events || !events[type]) return this;
		events[type].keys.each(function(fn){
			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
		}, this);
		return this;
	},

	cloneEvents: function(from, type){
		from = $(from);
		var fevents = from.retrieve('events');
		if (!fevents) return this;
		if (!type){
			for (var evType in fevents) this.cloneEvents(from, evType);
		} else if (fevents[type]){
			fevents[type].keys.each(function(fn){
				this.addEvent(type, fn);
			}, this);
		}
		return this;
	}

});

Element.NativeEvents = {
	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
	keydown: 2, keypress: 2, keyup: 2, //keyboard
	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
	error: 1, abort: 1, scroll: 1 //misc
};

(function(){

var $check = function(event){
	var related = event.relatedTarget;
	if (related == undefined) return true;
	if (related === false) return false;
	return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));
};

Element.Events = new Hash({

	mouseenter: {
		base: 'mouseover',
		condition: $check
	},

	mouseleave: {
		base: 'mouseout',
		condition: $check
	},

	mousewheel: {
		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
	}

});

})();


/*
Script: Element.Style.js
	Contains methods for interacting with the styles of Elements in a fashionable way.

License:
	MIT-style license.
*/

Element.Properties.styles = {set: function(styles){
	this.setStyles(styles);
}};

Element.Properties.opacity = {

	set: function(opacity, novisibility){
		if (!novisibility){
			if (opacity == 0){
				if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
			} else {
				if (this.style.visibility != 'visible') this.style.visibility = 'visible';
			}
		}
		if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
		if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';
		this.style.opacity = opacity;
		this.store('opacity', opacity);
	},

	get: function(){
		return this.retrieve('opacity', 1);
	}

};

Element.implement({

	setOpacity: function(value){
		return this.set('opacity', value, true);
	},

	getOpacity: function(){
		return this.get('opacity');
	},

	setStyle: function(property, value){
		switch (property){
			case 'opacity': return this.set('opacity', parseFloat(value));
			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
		}
		property = property.camelCase();
		if ($type(value) != 'string'){
			var map = (Element.Styles.get(property) || '@').split(' ');
			value = $splat(value).map(function(val, i){
				if (!map[i]) return '';
				return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;
			}).join(' ');
		} else if (value == String(Number(value))){
			value = Math.round(value);
		}
		this.style[property] = value;
		return this;
	},

	getStyle: function(property){
		switch (property){
			case 'opacity': return this.get('opacity');
			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
		}
		property = property.camelCase();
		var result = this.style[property];
		if (!$chk(result)){
			result = [];
			for (var style in Element.ShortStyles){
				if (property != style) continue;
				for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));
				return result.join(' ');
			}
			result = this.getComputedStyle(property);
		}
		if (result){
			result = String(result);
			var color = result.match(/rgba?\([\d\s,]+\)/);
			if (color) result = result.replace(color[0], color[0].rgbToHex());
		}
		if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result)))){
			if (property.test(/^(height|width)$/)){
				var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;
				values.each(function(value){
					size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();
				}, this);
				return this['offset' + property.capitalize()] - size + 'px';
			}
			if ((Browser.Engine.presto) && String(result).test('px')) return result;
			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';
		}
		return result;
	},

	setStyles: function(styles){
		for (var style in styles) this.setStyle(style, styles[style]);
		return this;
	},

	getStyles: function(){
		var result = {};
		Array.each(arguments, function(key){
			result[key] = this.getStyle(key);
		}, this);
		return result;
	}

});

Element.Styles = new Hash({
	left: '@px', top: '@px', bottom: '@px', right: '@px',
	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',
	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',
	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',
	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',
	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',
	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'
});

Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};

['Top', 'Right', 'Bottom', 'Left'].each(function(direction){
	var Short = Element.ShortStyles;
	var All = Element.Styles;
	['margin', 'padding'].each(function(style){
		var sd = style + direction;
		Short[style][sd] = All[sd] = '@px';
	});
	var bd = 'border' + direction;
	Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';
	var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';
	Short[bd] = {};
	Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';
	Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';
	Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';
});


/*
Script: Element.Dimensions.js
	Contains methods to work with size, scroll, or positioning of Elements and the window object.

License:
	MIT-style license.

Credits:
	- Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).
	- Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).
*/

(function(){

Element.implement({

	scrollTo: function(x, y){
		if (isBody(this)){
			this.getWindow().scrollTo(x, y);
		} else {
			this.scrollLeft = x;
			this.scrollTop = y;
		}
		return this;
	},

	getSize: function(){
		if (isBody(this)) return this.getWindow().getSize();
		return {x: this.offsetWidth, y: this.offsetHeight};
	},

	getScrollSize: function(){
		if (isBody(this)) return this.getWindow().getScrollSize();
		return {x: this.scrollWidth, y: this.scrollHeight};
	},

	getScroll: function(){
		if (isBody(this)) return this.getWindow().getScroll();
		return {x: this.scrollLeft, y: this.scrollTop};
	},

	getScrolls: function(){
		var element = this, position = {x: 0, y: 0};
		while (element && !isBody(element)){
			position.x += element.scrollLeft;
			position.y += element.scrollTop;
			element = element.parentNode;
		}
		return position;
	},

	getOffsetParent: function(){
		var element = this;
		if (isBody(element)) return null;
		if (!Browser.Engine.trident) return element.offsetParent;
		while ((element = element.parentNode) && !isBody(element)){
			if (styleString(element, 'position') != 'static') return element;
		}
		return null;
	},

	getOffsets: function(){
		if (Browser.Engine.trident){
			var bound = this.getBoundingClientRect(), html = this.getDocument().documentElement;
			return {
				x: bound.left + html.scrollLeft - html.clientLeft,
				y: bound.top + html.scrollTop - html.clientTop
			};
		}

		var element = this, position = {x: 0, y: 0};
		if (isBody(this)) return position;

		while (element && !isBody(element)){
			position.x += element.offsetLeft;
			position.y += element.offsetTop;

			if (Browser.Engine.gecko){
				if (!borderBox(element)){
					position.x += leftBorder(element);
					position.y += topBorder(element);
				}
				var parent = element.parentNode;
				if (parent && styleString(parent, 'overflow') != 'visible'){
					position.x += leftBorder(parent);
					position.y += topBorder(parent);
				}
			} else if (element != this && Browser.Engine.webkit){
				position.x += leftBorder(element);
				position.y += topBorder(element);
			}

			element = element.offsetParent;
		}
		if (Browser.Engine.gecko && !borderBox(this)){
			position.x -= leftBorder(this);
			position.y -= topBorder(this);
		}
		return position;
	},

	getPosition: function(relative){
		if (isBody(this)) return {x: 0, y: 0};
		var offset = this.getOffsets(), scroll = this.getScrolls();
		var position = {x: offset.x - scroll.x, y: offset.y - scroll.y};
		var relativePosition = (relative && (relative = $(relative))) ? relative.getPosition() : {x: 0, y: 0};
		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
	},

	getCoordinates: function(element){
		if (isBody(this)) return this.getWindow().getCoordinates();
		var position = this.getPosition(element), size = this.getSize();
		var obj = {left: position.x, top: position.y, width: size.x, height: size.y};
		obj.right = obj.left + obj.width;
		obj.bottom = obj.top + obj.height;
		return obj;
	},

	computePosition: function(obj){
		return {left: obj.x - styleNumber(this, 'margin-left'), top: obj.y - styleNumber(this, 'margin-top')};
	},

	position: function(obj){
		return this.setStyles(this.computePosition(obj));
	}

});

Native.implement([Document, Window], {

	getSize: function(){
		var win = this.getWindow();
		if (Browser.Engine.presto || Browser.Engine.webkit) return {x: win.innerWidth, y: win.innerHeight};
		var doc = getCompatElement(this);
		return {x: doc.clientWidth, y: doc.clientHeight};
	},

	getScroll: function(){
		var win = this.getWindow();
		var doc = getCompatElement(this);
		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
	},

	getScrollSize: function(){
		var doc = getCompatElement(this);
		var min = this.getSize();
		return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};
	},

	getPosition: function(){
		return {x: 0, y: 0};
	},

	getCoordinates: function(){
		var size = this.getSize();
		return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};
	}

});

// private methods

var styleString = Element.getComputedStyle;

function styleNumber(element, style){
	return styleString(element, style).toInt() || 0;
};

function borderBox(element){
	return styleString(element, '-moz-box-sizing') == 'border-box';
};

function topBorder(element){
	return styleNumber(element, 'border-top-width');
};

function leftBorder(element){
	return styleNumber(element, 'border-left-width');
};

function isBody(element){
	return (/^(?:body|html)$/i).test(element.tagName);
};

function getCompatElement(element){
	var doc = element.getDocument();
	return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
};

})();

//aliases

Native.implement([Window, Document, Element], {

	getHeight: function(){
		return this.getSize().y;
	},

	getWidth: function(){
		return this.getSize().x;
	},

	getScrollTop: function(){
		return this.getScroll().y;
	},

	getScrollLeft: function(){
		return this.getScroll().x;
	},

	getScrollHeight: function(){
		return this.getScrollSize().y;
	},

	getScrollWidth: function(){
		return this.getScrollSize().x;
	},

	getTop: function(){
		return this.getPosition().y;
	},

	getLeft: function(){
		return this.getPosition().x;
	}

});


/*
Script: Selectors.js
	Adds advanced CSS Querying capabilities for targeting elements. Also includes pseudoselectors support.

License:
	MIT-style license.
*/

Native.implement([Document, Element], {

	getElements: function(expression, nocash){
		expression = expression.split(',');
		var items, local = {};
		for (var i = 0, l = expression.length; i < l; i++){
			var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);
			if (i != 0 && elements.item) elements = $A(elements);
			items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);
		}
		return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});
	}

});

Element.implement({

	match: function(selector){
		if (!selector || (selector == this)) return true;
		var tagid = Selectors.Utils.parseTagAndID(selector);
		var tag = tagid[0], id = tagid[1];
		if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;
		var parsed = Selectors.Utils.parseSelector(selector);
		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;
	}

});

var Selectors = {Cache: {nth: {}, parsed: {}}};

Selectors.RegExps = {
	id: (/#([\w-]+)/),
	tag: (/^(\w+|\*)/),
	quick: (/^(\w+|\*)$/),
	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),
	combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)
};

Selectors.Utils = {

	chk: function(item, uniques){
		if (!uniques) return true;
		var uid = $uid(item);
		if (!uniques[uid]) return uniques[uid] = true;
		return false;
	},

	parseNthArgument: function(argument){
		if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];
		var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);
		if (!parsed) return false;
		var inta = parseInt(parsed[1]);
		var a = (inta || inta === 0) ? inta : 1;
		var special = parsed[2] || false;
		var b = parseInt(parsed[3]) || 0;
		if (a != 0){
			b--;
			while (b < 1) b += a;
			while (b >= a) b -= a;
		} else {
			a = b;
			special = 'index';
		}
		switch (special){
			case 'n': parsed = {a: a, b: b, special: 'n'}; break;
			case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;
			case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;
			case 'first': parsed = {a: 0, special: 'index'}; break;
			case 'last': parsed = {special: 'last-child'}; break;
			case 'only': parsed = {special: 'only-child'}; break;
			default: parsed = {a: (a - 1), special: 'index'};
		}

		return Selectors.Cache.nth[argument] = parsed;
	},

	parseSelector: function(selector){
		if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];
		var m, parsed = {classes: [], pseudos: [], attributes: []};
		while ((m = Selectors.RegExps.combined.exec(selector))){
			var cn = m[1], an = m[2], ao = m[3], av = m[5], pn = m[6], pa = m[7];
			if (cn){
				parsed.classes.push(cn);
			} else if (pn){
				var parser = Selectors.Pseudo.get(pn);
				if (parser) parsed.pseudos.push({parser: parser, argument: pa});
				else parsed.attributes.push({name: pn, operator: '=', value: pa});
			} else if (an){
				parsed.attributes.push({name: an, operator: ao, value: av});
			}
		}
		if (!parsed.classes.length) delete parsed.classes;
		if (!parsed.attributes.length) delete parsed.attributes;
		if (!parsed.pseudos.length) delete parsed.pseudos;
		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;
		return Selectors.Cache.parsed[selector] = parsed;
	},

	parseTagAndID: function(selector){
		var tag = selector.match(Selectors.RegExps.tag);
		var id = selector.match(Selectors.RegExps.id);
		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];
	},

	filter: function(item, parsed, local){
		var i;
		if (parsed.classes){
			for (i = parsed.classes.length; i--; i){
				var cn = parsed.classes[i];
				if (!Selectors.Filters.byClass(item, cn)) return false;
			}
		}
		if (parsed.attributes){
			for (i = parsed.attributes.length; i--; i){
				var att = parsed.attributes[i];
				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;
			}
		}
		if (parsed.pseudos){
			for (i = parsed.pseudos.length; i--; i){
				var psd = parsed.pseudos[i];
				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;
			}
		}
		return true;
	},

	getByTagAndID: function(ctx, tag, id){
		if (id){
			var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true);
			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];
		} else {
			return ctx.getElementsByTagName(tag);
		}
	},

	search: function(self, expression, local){
		var splitters = [];

		var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){
			splitters.push(m1);
			return ':)' + m2;
		}).split(':)');

		var items, filtered, item;

		for (var i = 0, l = selectors.length; i < l; i++){

			var selector = selectors[i];

			if (i == 0 && Selectors.RegExps.quick.test(selector)){
				items = self.getElementsByTagName(selector);
				continue;
			}

			var splitter = splitters[i - 1];

			var tagid = Selectors.Utils.parseTagAndID(selector);
			var tag = tagid[0], id = tagid[1];

			if (i == 0){
				items = Selectors.Utils.getByTagAndID(self, tag, id);
			} else {
				var uniques = {}, found = [];
				for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);
				items = found;
			}

			var parsed = Selectors.Utils.parseSelector(selector);

			if (parsed){
				filtered = [];
				for (var m = 0, n = items.length; m < n; m++){
					item = items[m];
					if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);
				}
				items = filtered;
			}

		}

		return items;

	}

};

Selectors.Getters = {

	' ': function(found, self, tag, id, uniques){
		var items = Selectors.Utils.getByTagAndID(self, tag, id);
		for (var i = 0, l = items.length; i < l; i++){
			var item = items[i];
			if (Selectors.Utils.chk(item, uniques)) found.push(item);
		}
		return found;
	},

	'>': function(found, self, tag, id, uniques){
		var children = Selectors.Utils.getByTagAndID(self, tag, id);
		for (var i = 0, l = children.length; i < l; i++){
			var child = children[i];
			if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);
		}
		return found;
	},

	'+': function(found, self, tag, id, uniques){
		while ((self = self.nextSibling)){
			if (self.nodeType == 1){
				if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
				break;
			}
		}
		return found;
	},

	'~': function(found, self, tag, id, uniques){
		while ((self = self.nextSibling)){
			if (self.nodeType == 1){
				if (!Selectors.Utils.chk(self, uniques)) break;
				if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
			}
		}
		return found;
	}

};

Selectors.Filters = {

	byTag: function(self, tag){
		return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));
	},

	byID: function(self, id){
		return (!id || (self.id && self.id == id));
	},

	byClass: function(self, klass){
		return (self.className && self.className.contains(klass, ' '));
	},

	byPseudo: function(self, parser, argument, local){
		return parser.call(self, argument, local);
	},

	byAttribute: function(self, name, operator, value){
		var result = Element.prototype.getProperty.call(self, name);
		if (!result) return (operator == '!=');
		if (!operator || value == undefined) return true;
		switch (operator){
			case '=': return (result == value);
			case '*=': return (result.contains(value));
			case '^=': return (result.substr(0, value.length) == value);
			case '$=': return (result.substr(result.length - value.length) == value);
			case '!=': return (result != value);
			case '~=': return result.contains(value, ' ');
			case '|=': return result.contains(value, '-');
		}
		return false;
	}

};

Selectors.Pseudo = new Hash({

	// w3c pseudo selectors

	checked: function(){
		return this.checked;
	},

	empty: function(){
		return !(this.innerText || this.textContent || '').length;
	},

	not: function(selector){
		return !Element.match(this, selector);
	},

	contains: function(text){
		return (this.innerText || this.textContent || '').contains(text);
	},

	'first-child': function(){
		return Selectors.Pseudo.index.call(this, 0);
	},

	'last-child': function(){
		var element = this;
		while ((element = element.nextSibling)){
			if (element.nodeType == 1) return false;
		}
		return true;
	},

	'only-child': function(){
		var prev = this;
		while ((prev = prev.previousSibling)){
			if (prev.nodeType == 1) return false;
		}
		var next = this;
		while ((next = next.nextSibling)){
			if (next.nodeType == 1) return false;
		}
		return true;
	},

	'nth-child': function(argument, local){
		argument = (argument == undefined) ? 'n' : argument;
		var parsed = Selectors.Utils.parseNthArgument(argument);
		if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);
		var count = 0;
		local.positions = local.positions || {};
		var uid = $uid(this);
		if (!local.positions[uid]){
			var self = this;
			while ((self = self.previousSibling)){
				if (self.nodeType != 1) continue;
				count ++;
				var position = local.positions[$uid(self)];
				if (position != undefined){
					count = position + count;
					break;
				}
			}
			local.positions[uid] = count;
		}
		return (local.positions[uid] % parsed.a == parsed.b);
	},

	// custom pseudo selectors

	index: function(index){
		var element = this, count = 0;
		while ((element = element.previousSibling)){
			if (element.nodeType == 1 && ++count > index) return false;
		}
		return (count == index);
	},

	even: function(argument, local){
		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);
	},

	odd: function(argument, local){
		return Selectors.Pseudo['nth-child'].call(this, '2n', local);
	}

});


/*
Script: Domready.js
	Contains the domready custom event.

License:
	MIT-style license.
*/

Element.Events.domready = {

	onAdd: function(fn){
		if (Browser.loaded) fn.call(this);
	}

};

(function(){

	var domready = function(){
		if (Browser.loaded) return;
		Browser.loaded = true;
		window.fireEvent('domready');
		document.fireEvent('domready');
	};

	if (Browser.Engine.trident){
		var temp = document.createElement('div');
		(function(){
			($try(function(){
				temp.doScroll('left');
				return $(temp).inject(document.body).set('html', 'temp').dispose();
			})) ? domready() : arguments.callee.delay(50);
		})();
	} else if (Browser.Engine.webkit && Browser.Engine.version < 525){
		(function(){
			(['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);
		})();
	} else {
		window.addEvent('load', domready);
		document.addEvent('DOMContentLoaded', domready);
	}

})();


/*
Script: JSON.js
	JSON encoder and decoder.

License:
	MIT-style license.

See Also:
	<http://www.json.org/>
*/

var JSON = new Hash({

	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},

	$replaceChars: function(chr){
		return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
	},

	encode: function(obj){
		switch ($type(obj)){
			case 'string':
				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
			case 'array':
				return '[' + String(obj.map(JSON.encode).filter($defined)) + ']';
			case 'object': case 'hash':
				var string = [];
				Hash.each(obj, function(value, key){
					var json = JSON.encode(value);
					if (json) string.push(JSON.encode(key) + ':' + json);
				});
				return '{' + string + '}';
			case 'number': case 'boolean': return String(obj);
			case false: return 'null';
		}
		return null;
	},

	decode: function(string, secure){
		if ($type(string) != 'string' || !string.length) return null;
		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
		return eval('(' + string + ')');
	}

});

Native.implement([Hash, Array, String, Number], {

	toJSON: function(){
		return JSON.encode(this);
	}

});


/*
Script: Cookie.js
	Class for creating, loading, and saving browser Cookies.

License:
	MIT-style license.

Credits:
	Based on the functions by Peter-Paul Koch (http://quirksmode.org).
*/

var Cookie = new Class({

	Implements: Options,

	options: {
		path: false,
		domain: false,
		duration: false,
		secure: false,
		document: document
	},

	initialize: function(key, options){
		this.key = key;
		this.setOptions(options);
	},

	write: function(value){
		value = encodeURIComponent(value);
		if (this.options.domain) value += '; domain=' + this.options.domain;
		if (this.options.path) value += '; path=' + this.options.path;
		if (this.options.duration){
			var date = new Date();
			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);
			value += '; expires=' + date.toGMTString();
		}
		if (this.options.secure) value += '; secure';
		this.options.document.cookie = this.key + '=' + value;
		return this;
	},

	read: function(){
		var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');
		return (value) ? decodeURIComponent(value[1]) : null;
	},

	dispose: function(){
		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');
		return this;
	}

});

Cookie.write = function(key, value, options){
	return new Cookie(key, options).write(value);
};

Cookie.read = function(key){
	return new Cookie(key).read();
};

Cookie.dispose = function(key, options){
	return new Cookie(key, options).dispose();
};


/*
Script: Swiff.js
	Wrapper for embedding SWF movies. Supports (and fixes) External Interface Communication.

License:
	MIT-style license.

Credits:
	Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.
*/

var Swiff = new Class({

	Implements: [Options],

	options: {
		id: null,
		height: 1,
		width: 1,
		container: null,
		properties: {},
		params: {
			quality: 'high',
			allowScriptAccess: 'always',
			wMode: 'transparent',
			swLiveConnect: true
		},
		callBacks: {},
		vars: {}
	},

	toElement: function(){
		return this.object;
	},

	initialize: function(path, options){
		this.instance = 'Swiff_' + $time();

		this.setOptions(options);
		options = this.options;
		var id = this.id = options.id || this.instance;
		var container = $(options.container);

		Swiff.CallBacks[this.instance] = {};

		var params = options.params, vars = options.vars, callBacks = options.callBacks;
		var properties = $extend({height: options.height, width: options.width}, options.properties);

		var self = this;

		for (var callBack in callBacks){
			Swiff.CallBacks[this.instance][callBack] = (function(option){
				return function(){
					return option.apply(self.object, arguments);
				};
			})(callBacks[callBack]);
			vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;
		}

		params.flashVars = Hash.toQueryString(vars);
		if (Browser.Engine.trident){
			properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
			params.movie = path;
		} else {
			properties.type = 'application/x-shockwave-flash';
			properties.data = path;
		}
		var build = '<object id="' + id + '"';
		for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';
		build += '>';
		for (var param in params){
			if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';
		}
		build += '</object>';
		this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;
	},

	replaces: function(element){
		element = $(element, true);
		element.parentNode.replaceChild(this.toElement(), element);
		return this;
	},

	inject: function(element){
		$(element, true).appendChild(this.toElement());
		return this;
	},

	remote: function(){
		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));
	}

});

Swiff.CallBacks = {};

Swiff.remote = function(obj, fn){
	var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');
	return eval(rs);
};


/*
Script: Fx.js
	Contains the basic animation logic to be extended by all other Fx Classes.

License:
	MIT-style license.
*/

var Fx = new Class({

	Implements: [Chain, Events, Options],

	options: {
		/*
		onStart: $empty,
		onCancel: $empty,
		onComplete: $empty,
		*/
		fps: 50,
		unit: false,
		duration: 500,
		link: 'ignore'
	},

	initialize: function(options){
		this.subject = this.subject || this;
		this.setOptions(options);
		this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();
		var wait = this.options.wait;
		if (wait === false) this.options.link = 'cancel';
	},

	getTransition: function(){
		return function(p){
			return -(Math.cos(Math.PI * p) - 1) / 2;
		};
	},

	step: function(){
		var time = $time();
		if (time < this.time + this.options.duration){
			var delta = this.transition((time - this.time) / this.options.duration);
			this.set(this.compute(this.from, this.to, delta));
		} else {
			this.set(this.compute(this.from, this.to, 1));
			this.complete();
		}
	},

	set: function(now){
		return now;
	},

	compute: function(from, to, delta){
		return Fx.compute(from, to, delta);
	},

	check: function(caller){
		if (!this.timer) return true;
		switch (this.options.link){
			case 'cancel': this.cancel(); return true;
			case 'chain': this.chain(caller.bind(this, Array.slice(arguments, 1))); return false;
		}
		return false;
	},

	start: function(from, to){
		if (!this.check(arguments.callee, from, to)) return this;
		this.from = from;
		this.to = to;
		this.time = 0;
		this.transition = this.getTransition();
		this.startTimer();
		this.onStart();
		return this;
	},

	complete: function(){
		if (this.stopTimer()) this.onComplete();
		return this;
	},

	cancel: function(){
		if (this.stopTimer()) this.onCancel();
		return this;
	},

	onStart: function(){
		this.fireEvent('start', this.subject);
	},

	onComplete: function(){
		this.fireEvent('complete', this.subject);
		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
	},

	onCancel: function(){
		this.fireEvent('cancel', this.subject).clearChain();
	},

	pause: function(){
		this.stopTimer();
		return this;
	},

	resume: function(){
		this.startTimer();
		return this;
	},

	stopTimer: function(){
		if (!this.timer) return false;
		this.time = $time() - this.time;
		this.timer = $clear(this.timer);
		return true;
	},

	startTimer: function(){
		if (this.timer) return false;
		this.time = $time() - this.time;
		this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);
		return true;
	}

});

Fx.compute = function(from, to, delta){
	return (to - from) * delta + from;
};

Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};


/*
Script: Fx.CSS.js
	Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.

License:
	MIT-style license.
*/

Fx.CSS = new Class({

	Extends: Fx,

	//prepares the base from/to object

	prepare: function(element, property, values){
		values = $splat(values);
		var values1 = values[1];
		if (!$chk(values1)){
			values[1] = values[0];
			values[0] = element.getStyle(property);
		}
		var parsed = values.map(this.parse);
		return {from: parsed[0], to: parsed[1]};
	},

	//parses a value into an array

	parse: function(value){
		value = $lambda(value)();
		value = (typeof value == 'string') ? value.split(' ') : $splat(value);
		return value.map(function(val){
			val = String(val);
			var found = false;
			Fx.CSS.Parsers.each(function(parser, key){
				if (found) return;
				var parsed = parser.parse(val);
				if ($chk(parsed)) found = {value: parsed, parser: parser};
			});
			found = found || {value: val, parser: Fx.CSS.Parsers.String};
			return found;
		});
	},

	//computes by a from and to prepared objects, using their parsers.

	compute: function(from, to, delta){
		var computed = [];
		(Math.min(from.length, to.length)).times(function(i){
			computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});
		});
		computed.$family = {name: 'fx:css:value'};
		return computed;
	},

	//serves the value as settable

	serve: function(value, unit){
		if ($type(value) != 'fx:css:value') value = this.parse(value);
		var returned = [];
		value.each(function(bit){
			returned = returned.concat(bit.parser.serve(bit.value, unit));
		});
		return returned;
	},

	//renders the change to an element

	render: function(element, property, value, unit){
		element.setStyle(property, this.serve(value, unit));
	},

	//searches inside the page css to find the values for a selector

	search: function(selector){
		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];
		var to = {};
		Array.each(document.styleSheets, function(sheet, j){
			var href = sheet.href;
			if (href && href.contains('://') && !href.contains(document.domain)) return;
			var rules = sheet.rules || sheet.cssRules;
			Array.each(rules, function(rule, i){
				if (!rule.style) return;
				var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){
					return m.toLowerCase();
				}) : null;
				if (!selectorText || !selectorText.test('^' + selector + '$')) return;
				Element.Styles.each(function(value, style){
					if (!rule.style[style] || Element.ShortStyles[style]) return;
					value = String(rule.style[style]);
					to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;
				});
			});
		});
		return Fx.CSS.Cache[selector] = to;
	}

});

Fx.CSS.Cache = {};

Fx.CSS.Parsers = new Hash({

	Color: {
		parse: function(value){
			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);
			return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;
		},
		compute: function(from, to, delta){
			return from.map(function(value, i){
				return Math.round(Fx.compute(from[i], to[i], delta));
			});
		},
		serve: function(value){
			return value.map(Number);
		}
	},

	Number: {
		parse: parseFloat,
		compute: Fx.compute,
		serve: function(value, unit){
			return (unit) ? value + unit : value;
		}
	},

	String: {
		parse: $lambda(false),
		compute: $arguments(1),
		serve: $arguments(0)
	}

});


/*
Script: Fx.Tween.js
	Formerly Fx.Style, effect to transition any CSS property for an element.

License:
	MIT-style license.
*/

Fx.Tween = new Class({

	Extends: Fx.CSS,

	initialize: function(element, options){
		this.element = this.subject = $(element);
		this.parent(options);
	},

	set: function(property, now){
		if (arguments.length == 1){
			now = property;
			property = this.property || this.options.property;
		}
		this.render(this.element, property, now, this.options.unit);
		return this;
	},

	start: function(property, from, to){
		if (!this.check(arguments.callee, property, from, to)) return this;
		var args = Array.flatten(arguments);
		this.property = this.options.property || args.shift();
		var parsed = this.prepare(this.element, this.property, args);
		return this.parent(parsed.from, parsed.to);
	}

});

Element.Properties.tween = {

	set: function(options){
		var tween = this.retrieve('tween');
		if (tween) tween.cancel();
		return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));
	},

	get: function(options){
		if (options || !this.retrieve('tween')){
			if (options || !this.retrieve('tween:options')) this.set('tween', options);
			this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));
		}
		return this.retrieve('tween');
	}

};

Element.implement({

	tween: function(property, from, to){
		this.get('tween').start(arguments);
		return this;
	},

	fade: function(how){
		var fade = this.get('tween'), o = 'opacity', toggle;
		how = $pick(how, 'toggle');
		switch (how){
			case 'in': fade.start(o, 1); break;
			case 'out': fade.start(o, 0); break;
			case 'show': fade.set(o, 1); break;
			case 'hide': fade.set(o, 0); break;
			case 'toggle':
				var flag = this.retrieve('fade:flag', this.get('opacity') == 1);
				fade.start(o, (flag) ? 0 : 1);
				this.store('fade:flag', !flag);
				toggle = true;
			break;
			default: fade.start(o, arguments);
		}
		if (!toggle) this.eliminate('fade:flag');
		return this;
	},

	highlight: function(start, end){
		if (!end){
			end = this.retrieve('highlight:original', this.getStyle('background-color'));
			end = (end == 'transparent') ? '#fff' : end;
		}
		var tween = this.get('tween');
		tween.start('background-color', start || '#ffff88', end).chain(function(){
			this.setStyle('background-color', this.retrieve('highlight:original'));
			tween.callChain();
		}.bind(this));
		return this;
	}

});


/*
Script: Fx.Morph.js
	Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.

License:
	MIT-style license.
*/

Fx.Morph = new Class({

	Extends: Fx.CSS,

	initialize: function(element, options){
		this.element = this.subject = $(element);
		this.parent(options);
	},

	set: function(now){
		if (typeof now == 'string') now = this.search(now);
		for (var p in now) this.render(this.element, p, now[p], this.options.unit);
		return this;
	},

	compute: function(from, to, delta){
		var now = {};
		for (var p in from) now[p] = this.parent(from[p], to[p], delta);
		return now;
	},

	start: function(properties){
		if (!this.check(arguments.callee, properties)) return this;
		if (typeof properties == 'string') properties = this.search(properties);
		var from = {}, to = {};
		for (var p in properties){
			var parsed = this.prepare(this.element, p, properties[p]);
			from[p] = parsed.from;
			to[p] = parsed.to;
		}
		return this.parent(from, to);
	}

});

Element.Properties.morph = {

	set: function(options){
		var morph = this.retrieve('morph');
		if (morph) morph.cancel();
		return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));
	},

	get: function(options){
		if (options || !this.retrieve('morph')){
			if (options || !this.retrieve('morph:options')) this.set('morph', options);
			this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));
		}
		return this.retrieve('morph');
	}

};

Element.implement({

	morph: function(props){
		this.get('morph').start(props);
		return this;
	}

});


/*
Script: Fx.Transitions.js
	Contains a set of advanced transitions to be used with any of the Fx Classes.

License:
	MIT-style license.

Credits:
	Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.
*/

Fx.implement({

	getTransition: function(){
		var trans = this.options.transition || Fx.Transitions.Sine.easeInOut;
		if (typeof trans == 'string'){
			var data = trans.split(':');
			trans = Fx.Transitions;
			trans = trans[data[0]] || trans[data[0].capitalize()];
			if (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];
		}
		return trans;
	}

});

Fx.Transition = function(transition, params){
	params = $splat(params);
	return $extend(transition, {
		easeIn: function(pos){
			return transition(pos, params);
		},
		easeOut: function(pos){
			return 1 - transition(1 - pos, params);
		},
		easeInOut: function(pos){
			return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;
		}
	});
};

Fx.Transitions = new Hash({

	linear: $arguments(0)

});

Fx.Transitions.extend = function(transitions){
	for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);
};

Fx.Transitions.extend({

	Pow: function(p, x){
		return Math.pow(p, x[0] || 6);
	},

	Expo: function(p){
		return Math.pow(2, 8 * (p - 1));
	},

	Circ: function(p){
		return 1 - Math.sin(Math.acos(p));
	},

	Sine: function(p){
		return 1 - Math.sin((1 - p) * Math.PI / 2);
	},

	Back: function(p, x){
		x = x[0] || 1.618;
		return Math.pow(p, 2) * ((x + 1) * p - x);
	},

	Bounce: function(p){
		var value;
		for (var a = 0, b = 1; 1; a += b, b /= 2){
			if (p >= (7 - 4 * a) / 11){
				value = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);
				break;
			}
		}
		return value;
	},

	Elastic: function(p, x){
		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);
	}

});

['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){
	Fx.Transitions[transition] = new Fx.Transition(function(p){
		return Math.pow(p, [i + 2]);
	});
});


/*
Script: Request.js
	Powerful all purpose Request Class. Uses XMLHTTPRequest.

License:
	MIT-style license.
*/

var Request = new Class({

	Implements: [Chain, Events, Options],

	options: {/*
		onRequest: $empty,
		onComplete: $empty,
		onCancel: $empty,
		onSuccess: $empty,
		onFailure: $empty,
		onException: $empty,*/
		url: '',
		data: '',
		headers: {
			'X-Requested-With': 'XMLHttpRequest',
			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
		},
		async: true,
		format: false,
		method: 'post',
		link: 'ignore',
		isSuccess: null,
		emulation: true,
		urlEncoded: true,
		encoding: 'utf-8',
		evalScripts: false,
		evalResponse: false
	},

	initialize: function(options){
		this.xhr = new Browser.Request();
		this.setOptions(options);
		this.options.isSuccess = this.options.isSuccess || this.isSuccess;
		this.headers = new Hash(this.options.headers);
	},

	onStateChange: function(){
		if (this.xhr.readyState != 4 || !this.running) return;
		this.running = false;
		this.status = 0;
		$try(function(){
			this.status = this.xhr.status;
		}.bind(this));
		if (this.options.isSuccess.call(this, this.status)){
			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
			this.success(this.response.text, this.response.xml);
		} else {
			this.response = {text: null, xml: null};
			this.failure();
		}
		this.xhr.onreadystatechange = $empty;
	},

	isSuccess: function(){
		return ((this.status >= 200) && (this.status < 300));
	},

	processScripts: function(text){
		if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
		return text.stripScripts(this.options.evalScripts);
	},

	success: function(text, xml){
		this.onSuccess(this.processScripts(text), xml);
	},

	onSuccess: function(){
		this.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();
	},

	failure: function(){
		this.onFailure();
	},

	onFailure: function(){
		this.fireEvent('complete').fireEvent('failure', this.xhr);
	},

	setHeader: function(name, value){
		this.headers.set(name, value);
		return this;
	},

	getHeader: function(name){
		return $try(function(){
			return this.xhr.getResponseHeader(name);
		}.bind(this));
	},

	check: function(caller){
		if (!this.running) return true;
		switch (this.options.link){
			case 'cancel': this.cancel(); return true;
			case 'chain': this.chain(caller.bind(this, Array.slice(arguments, 1))); return false;
		}
		return false;
	},

	send: function(options){
		if (!this.check(arguments.callee, options)) return this;
		this.running = true;

		var type = $type(options);
		if (type == 'string' || type == 'element') options = {data: options};

		var old = this.options;
		options = $extend({data: old.data, url: old.url, method: old.method}, options);
		var data = options.data, url = options.url, method = options.method;

		switch ($type(data)){
			case 'element': data = $(data).toQueryString(); break;
			case 'object': case 'hash': data = Hash.toQueryString(data);
		}

		if (this.options.format){
			var format = 'format=' + this.options.format;
			data = (data) ? format + '&' + data : format;
		}

		if (this.options.emulation && ['put', 'delete'].contains(method)){
			var _method = '_method=' + method;
			data = (data) ? _method + '&' + data : _method;
			method = 'post';
		}

		if (this.options.urlEncoded && method == 'post'){
			var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';
			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
		}

		if (data && method == 'get'){
			url = url + (url.contains('?') ? '&' : '?') + data;
			data = null;
		}

		this.xhr.open(method.toUpperCase(), url, this.options.async);

		this.xhr.onreadystatechange = this.onStateChange.bind(this);

		this.headers.each(function(value, key){
			try {
				this.xhr.setRequestHeader(key, value);
			} catch (e){
				this.fireEvent('exception', [key, value]);
			}
		}, this);

		this.fireEvent('request');
		this.xhr.send(data);
		if (!this.options.async) this.onStateChange();
		return this;
	},

	cancel: function(){
		if (!this.running) return this;
		this.running = false;
		this.xhr.abort();
		this.xhr.onreadystatechange = $empty;
		this.xhr = new Browser.Request();
		this.fireEvent('cancel');
		return this;
	}

});

(function(){

var methods = {};
['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
	methods[method] = function(){
		var params = Array.link(arguments, {url: String.type, data: $defined});
		return this.send($extend(params, {method: method.toLowerCase()}));
	};
});

Request.implement(methods);

})();

Element.Properties.send = {

	set: function(options){
		var send = this.retrieve('send');
		if (send) send.cancel();
		return this.eliminate('send').store('send:options', $extend({
			data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')
		}, options));
	},

	get: function(options){
		if (options || !this.retrieve('send')){
			if (options || !this.retrieve('send:options')) this.set('send', options);
			this.store('send', new Request(this.retrieve('send:options')));
		}
		return this.retrieve('send');
	}

};

Element.implement({

	send: function(url){
		var sender = this.get('send');
		sender.send({data: this, url: url || sender.options.url});
		return this;
	}

});


/*
Script: Request.HTML.js
	Extends the basic Request Class with additional methods for interacting with HTML responses.

License:
	MIT-style license.
*/

Request.HTML = new Class({

	Extends: Request,

	options: {
		update: false,
		evalScripts: true,
		filter: false
	},

	processHTML: function(text){
		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
		text = (match) ? match[1] : text;

		var container = new Element('div');

		return $try(function(){
			var root = '<root>' + text + '</root>', doc;
			if (Browser.Engine.trident){
				doc = new ActiveXObject('Microsoft.XMLDOM');
				doc.async = false;
				doc.loadXML(root);
			} else {
				doc = new DOMParser().parseFromString(root, 'text/xml');
			}
			root = doc.getElementsByTagName('root')[0];
			for (var i = 0, k = root.childNodes.length; i < k; i++){
				var child = Element.clone(root.childNodes[i], true, true);
				if (child) container.grab(child);
			}
			return container;
		}) || container.set('html', text);
	},

	success: function(text){
		var options = this.options, response = this.response;

		response.html = text.stripScripts(function(script){
			response.javascript = script;
		});

		var temp = this.processHTML(response.html);

		response.tree = temp.childNodes;
		response.elements = temp.getElements('*');

		if (options.filter) response.tree = response.elements.filter(options.filter);
		if (options.update) $(options.update).empty().set('html', response.html);
		if (options.evalScripts) $exec(response.javascript);

		this.onSuccess(response.tree, response.elements, response.html, response.javascript);
	}

});

Element.Properties.load = {

	set: function(options){
		var load = this.retrieve('load');
		if (load) load.cancel();
		return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));
	},

	get: function(options){
		if (options || ! this.retrieve('load')){
			if (options || !this.retrieve('load:options')) this.set('load', options);
			this.store('load', new Request.HTML(this.retrieve('load:options')));
		}
		return this.retrieve('load');
	}

};

Element.implement({

	load: function(){
		this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));
		return this;
	}

});


/*
Script: Request.JSON.js
	Extends the basic Request Class with additional methods for sending and receiving JSON data.

License:
	MIT-style license.
*/

Request.JSON = new Class({

	Extends: Request,

	options: {
		secure: true
	},

	initialize: function(options){
		this.parent(options);
		this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
	},

	success: function(text){
		this.response.json = JSON.decode(text, this.options.secure);
		this.onSuccess(this.response.json, text);
	}

});


//MooTools More, <http://mootools.net/more>. Copyright (c) 2006-2008 Valerio Proietti, <http://mad4milk.net>, MIT Style License.

/*
Script: Fx.Elements.js
	Effect to change any number of CSS properties of any number of Elements.

License:
	MIT-style license.
*/

Fx.Elements = new Class({

	Extends: Fx.CSS,

	initialize: function(elements, options){
		this.elements = this.subject = $$(elements);
		this.parent(options);
	},

	compute: function(from, to, delta){
		var now = {};
		for (var i in from){
			var iFrom = from[i], iTo = to[i], iNow = now[i] = {};
			for (var p in iFrom) iNow[p] = this.parent(iFrom[p], iTo[p], delta);
		}
		return now;
	},

	set: function(now){
		for (var i in now){
			var iNow = now[i];
			for (var p in iNow) this.render(this.elements[i], p, iNow[p], this.options.unit);
		}
		return this;
	},

	start: function(obj){
		if (!this.check(arguments.callee, obj)) return this;
		var from = {}, to = {};
		for (var i in obj){
			var iProps = obj[i], iFrom = from[i] = {}, iTo = to[i] = {};
			for (var p in iProps){
				var parsed = this.prepare(this.elements[i], p, iProps[p]);
				iFrom[p] = parsed.from;
				iTo[p] = parsed.to;
			}
		}
		return this.parent(from, to);
	}

});

/*
Script: Accordion.js
	An Fx.Elements extension which allows you to easily create accordion type controls.

License:
	MIT-style license.
*/

var Accordion = new Class({

	Extends: Fx.Elements,

	options: {/*
		onActive: $empty,
		onBackground: $empty,*/
		display: 0,
		show: false,
		height: true,
		width: false,
		opacity: true,
		fixedHeight: false,
		fixedWidth: false,
		wait: false,
		alwaysHide: false
	},

	initialize: function(){
		var params = Array.link(arguments, {'container': Element.type, 'options': Object.type, 'togglers': $defined, 'elements': $defined});
		this.parent(params.elements, params.options);
		this.togglers = $$(params.togglers);
		this.container = $(params.container);
		this.previous = -1;
		if (this.options.alwaysHide) this.options.wait = true;
		if ($chk(this.options.show)){
			this.options.display = false;
			this.previous = this.options.show;
		}
		if (this.options.start){
			this.options.display = false;
			this.options.show = false;
		}
		this.effects = {};
		if (this.options.opacity) this.effects.opacity = 'fullOpacity';
		if (this.options.width) this.effects.width = this.options.fixedWidth ? 'fullWidth' : 'offsetWidth';
		if (this.options.height) this.effects.height = this.options.fixedHeight ? 'fullHeight' : 'scrollHeight';
		for (var i = 0, l = this.togglers.length; i < l; i++) this.addSection(this.togglers[i], this.elements[i]);
		this.elements.each(function(el, i){
			if (this.options.show === i){
				this.fireEvent('active', [this.togglers[i], el]);
			} else {
				for (var fx in this.effects) el.setStyle(fx, 0);
			}
		}, this);
		if ($chk(this.options.display)) this.display(this.options.display);
	},

	addSection: function(toggler, element, pos){
		
		//console.log(toggler);
		//console.log(element);
		toggler = $(toggler);
		element = $(element);
		var test = this.togglers.contains(toggler);
		//console.log(test);
		var len = this.togglers.length;
		this.togglers.include(toggler);
		this.elements.include(element);
		if (len && (!test || pos)){
			pos = $pick(pos, len - 1);
			toggler.inject(this.togglers[pos], 'before');
			element.inject(toggler, 'after');
		} else if (this.container && !test){
			toggler.inject(this.container);
			element.inject(this.container);
		}
		var idx = this.togglers.indexOf(toggler);
		toggler.addEvent('click', this.display.bind(this, idx));
		//toggler.addEvent((toggler.getChildren('a')[0]) ? 'click' : 'mouseenter', this.display.bind(this, idx));
		if (this.options.height) element.setStyles({'padding-top': 0, 'border-top': 'none', 'padding-bottom': 0, 'border-bottom': 'none'});
		if (this.options.width) element.setStyles({'padding-left': 0, 'border-left': 'none', 'padding-right': 0, 'border-right': 'none'});
		element.fullOpacity = 1;
		if (this.options.fixedWidth) element.fullWidth = this.options.fixedWidth;
		if (this.options.fixedHeight) element.fullHeight = this.options.fixedHeight;
		element.setStyle('overflow', 'hidden');
		if (!test){
			for (var fx in this.effects) element.setStyle(fx, 0);
		}
		return this;
	},

	display: function(index){
		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
		this.previous = index;
		var obj = {};
		this.elements.each(function(el, i){
			obj[i] = {};
			var hide = (i != index) || (this.options.alwaysHide && (el.offsetHeight > 0));
			this.fireEvent(hide ? 'background' : 'active', [this.togglers[i], el]);
			for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
		}, this);
		return this.start(obj);
	}

});

/*
Script: Drag.js
	The base Drag Class. Can be used to drag and resize Elements using mouse events.

License:
	MIT-style license.
*/

var Drag = new Class({

	Implements: [Events, Options],

	options: {/*
		onBeforeStart: $empty,
		onStart: $empty,
		onDrag: $empty,
		onCancel: $empty,
		onComplete: $empty,*/
		snap: 6,
		unit: 'px',
		grid: false,
		style: true,
		limit: false,
		handle: false,
		invert: false,
		preventDefault: false,
		modifiers: {x: 'left', y: 'top'}
	},

	initialize: function(){
		var params = Array.link(arguments, {'options': Object.type, 'element': $defined});
		this.element = $(params.element);
		this.document = this.element.getDocument();
		this.setOptions(params.options || {});
		var htype = $type(this.options.handle);
		this.handles = (htype == 'array' || htype == 'collection') ? $$(this.options.handle) : $(this.options.handle) || this.element;
		this.mouse = {'now': {}, 'pos': {}};
		this.value = {'start': {}, 'now': {}};
		
		this.selection = (Browser.Engine.trident) ? 'selectstart' : 'mousedown';
		
		this.bound = {
			start: this.start.bind(this),
			check: this.check.bind(this),
			drag: this.drag.bind(this),
			stop: this.stop.bind(this),
			cancel: this.cancel.bind(this),
			eventStop: $lambda(false)
		};
		this.attach();
	},

	attach: function(){
		this.handles.addEvent('mousedown', this.bound.start);
		return this;
	},

	detach: function(){
		this.handles.removeEvent('mousedown', this.bound.start);
		return this;
	},

	start: function(event){
		if (this.options.preventDefault) event.preventDefault();
		this.fireEvent('beforeStart', this.element);
		this.mouse.start = event.page;
		var limit = this.options.limit;
		this.limit = {'x': [], 'y': []};
		for (var z in this.options.modifiers){
			if (!this.options.modifiers[z]) continue;
			if (this.options.style) this.value.now[z] = this.element.getStyle(this.options.modifiers[z]).toInt();
			else this.value.now[z] = this.element[this.options.modifiers[z]];
			if (this.options.invert) this.value.now[z] *= -1;
			this.mouse.pos[z] = event.page[z] - this.value.now[z];
			if (limit && limit[z]){
				for (var i = 2; i--; i){
					if ($chk(limit[z][i])) this.limit[z][i] = $lambda(limit[z][i])();
				}
			}
		}
		if ($type(this.options.grid) == 'number') this.options.grid = {'x': this.options.grid, 'y': this.options.grid};
		this.document.addEvents({mousemove: this.bound.check, mouseup: this.bound.cancel});
		this.document.addEvent(this.selection, this.bound.eventStop);
	},

	check: function(event){
		if (this.options.preventDefault) event.preventDefault();
		var distance = Math.round(Math.sqrt(Math.pow(event.page.x - this.mouse.start.x, 2) + Math.pow(event.page.y - this.mouse.start.y, 2)));
		if (distance > this.options.snap){
			this.cancel();
			this.document.addEvents({
				mousemove: this.bound.drag,
				mouseup: this.bound.stop
			});
			this.fireEvent('start', this.element).fireEvent('snap', this.element);
		}
	},

	drag: function(event){
		if (this.options.preventDefault) event.preventDefault();
		this.mouse.now = event.page;
		for (var z in this.options.modifiers){
			if (!this.options.modifiers[z]) continue;
			this.value.now[z] = this.mouse.now[z] - this.mouse.pos[z];
			if (this.options.invert) this.value.now[z] *= -1;
			if (this.options.limit && this.limit[z]){
				if ($chk(this.limit[z][1]) && (this.value.now[z] > this.limit[z][1])){
					this.value.now[z] = this.limit[z][1];
				} else if ($chk(this.limit[z][0]) && (this.value.now[z] < this.limit[z][0])){
					this.value.now[z] = this.limit[z][0];
				}
			}
			if (this.options.grid[z]) this.value.now[z] -= (this.value.now[z] % this.options.grid[z]);
			if (this.options.style) this.element.setStyle(this.options.modifiers[z], this.value.now[z] + this.options.unit);
			else this.element[this.options.modifiers[z]] = this.value.now[z];
		}
		this.fireEvent('drag', this.element);
	},

	cancel: function(event){
		this.document.removeEvent('mousemove', this.bound.check);
		this.document.removeEvent('mouseup', this.bound.cancel);
		if (event){
			this.document.removeEvent(this.selection, this.bound.eventStop);
			this.fireEvent('cancel', this.element);
		}
	},

	stop: function(event){
		this.document.removeEvent(this.selection, this.bound.eventStop);
		this.document.removeEvent('mousemove', this.bound.drag);
		this.document.removeEvent('mouseup', this.bound.stop);
		if (event) this.fireEvent('complete', this.element);
	}

});

Element.implement({
	
	makeResizable: function(options){
		return new Drag(this, $merge({modifiers: {'x': 'width', 'y': 'height'}}, options));
	}

});

/*
Script: Drag.Move.js
	A Drag extension that provides support for the constraining of draggables to containers and droppables.

License:
	MIT-style license.
*/

Drag.Move = new Class({

	Extends: Drag,

	options: {
		droppables: [],
		container: false
	},

	initialize: function(element, options){
		this.parent(element, options);
		this.droppables = $$(this.options.droppables);
		this.container = $(this.options.container);
		if (this.container && $type(this.container) != 'element') this.container = $(this.container.getDocument().body);
		element = this.element;
		
		var current = element.getStyle('position');
		var position = (current != 'static') ? current : 'absolute';
		if (element.getStyle('left') == 'auto' || element.getStyle('top') == 'auto') element.position(element.getPosition(element.offsetParent));
		
		element.setStyle('position', position);
		
		this.addEvent('start', function(){
			this.checkDroppables();
		}, true);
	},

	start: function(event){
		if (this.container){
			var el = this.element, cont = this.container, ccoo = cont.getCoordinates(el.offsetParent), cps = {}, ems = {};

			['top', 'right', 'bottom', 'left'].each(function(pad){
				cps[pad] = cont.getStyle('padding-' + pad).toInt();
				ems[pad] = el.getStyle('margin-' + pad).toInt();
			}, this);

			var width = el.offsetWidth + ems.left + ems.right, height = el.offsetHeight + ems.top + ems.bottom;
			var x = [ccoo.left + cps.left, ccoo.right - cps.right - width];
			var y = [ccoo.top + cps.top, ccoo.bottom - cps.bottom - height];

			this.options.limit = {x: x, y: y};
		}
		this.parent(event);
	},

	checkAgainst: function(el){
		el = el.getCoordinates();
		var now = this.mouse.now;
		return (now.x > el.left && now.x < el.right && now.y < el.bottom && now.y > el.top);
	},

	checkDroppables: function(){
		var overed = this.droppables.filter(this.checkAgainst, this).getLast();
		if (this.overed != overed){
			if (this.overed) this.fireEvent('leave', [this.element, this.overed]);
			if (overed){
				this.overed = overed;
				this.fireEvent('enter', [this.element, overed]);
			} else {
				this.overed = null;
			}
		}
	},

	drag: function(event){
		this.parent(event);
		if (this.droppables.length) this.checkDroppables();
	},

	stop: function(event){
		this.checkDroppables();
		this.fireEvent('drop', [this.element, this.overed]);
		this.overed = null;
		return this.parent(event);
	}

});

Element.implement({

	makeDraggable: function(options){
		return new Drag.Move(this, options);
	}

});


/*
Script: Assets.js
	Provides methods to dynamically load JavaScript, CSS, and Image files into the document.

License:
	MIT-style license.
*/

var Asset = new Hash({

	javascript: function(source, properties){
		properties = $extend({
			onload: $empty,
			document: document,
			check: $lambda(true)
		}, properties);
		
		var script = new Element('script', {'src': source, 'type': 'text/javascript'});
		
		var load = properties.onload.bind(script), check = properties.check, doc = properties.document;
		delete properties.onload; delete properties.check; delete properties.document;
		
		script.addEvents({
			load: load,
			readystatechange: function(){
				if (['loaded', 'complete'].contains(this.readyState)) load();
			}
		}).setProperties(properties);
		
		
		if (Browser.Engine.webkit419) var checker = (function(){
			if (!$try(check)) return;
			$clear(checker);
			load();
		}).periodical(50);
		
		return script.inject(doc.head);
	},

	css: function(source, properties){
		return new Element('link', $merge({
			'rel': 'stylesheet', 'media': 'screen', 'type': 'text/css', 'href': source
		}, properties)).inject(document.head);
	},

	image: function(source, properties){
		properties = $merge({
			'onload': $empty,
			'onabort': $empty,
			'onerror': $empty
		}, properties);
		var image = new Image();
		var element = $(image) || new Element('img');
		['load', 'abort', 'error'].each(function(name){
			var type = 'on' + name;
			var event = properties[type];
			delete properties[type];
			image[type] = function(){
				if (!image) return;
				if (!element.parentNode){
					element.width = image.width;
					element.height = image.height;
				}
				image = image.onload = image.onabort = image.onerror = null;
				event.delay(1, element, element);
				element.fireEvent(name, element, 1);
			};
		});
		image.src = element.src = source;
		if (image && image.complete) image.onload.delay(1);
		return element.setProperties(properties);
	},

	images: function(sources, options){
		options = $merge({
			onComplete: $empty,
			onProgress: $empty
		}, options);
		if (!sources.push) sources = [sources];
		var images = [];
		var counter = 0;
		sources.each(function(source){
			var img = new Asset.image(source, {
				'onload': function(){
					options.onProgress.call(this, counter, sources.indexOf(source));
					counter++;
					if (counter == sources.length) options.onComplete();
				}
			});
			images.push(img);
		});
		return new Elements(images);
	}

});

/**
 * ReMooz - Zoomer
 *
 * Inspired by so many boxes and zooms
 *
 * @version		1.0
 *
 * @license		MIT-style license
 * @author		Harald Kirschner <mail [at] digitarald.de>
 * @copyright	Author
 */

var ReMooz = new Class({

	Implements: [Events, Options, Chain],

	options: {
		link: null,
		type: 'image',
		container: null,
		className: null,
		centered: false,
		dragging: true,
		closeOnClick: true,
		shadow: (Browser.Engine.trident) ? 'onOpenEnd' : 'onOpen', // performance
		resize: true,
		margin: 20,
		resizeFactor: 0.95,
		resizeLimit: false, // {x: 640, y: 640}
		fixedSize: false,
		cutOut: true,
		addClick: true,
		opacityLoad: 0.6,
		opacityResize: 1,
		opacityTitle: 0.9,
		resizeOptions: {},
		fxOptions: {},
		closer: true,
		parse: false, // 'rel'
		parseSecure: false,
		temporary: false,
		onBuild: $empty,
		onLoad: $empty,
		onOpen: $empty,
		onOpenEnd: $empty,
		onClose: $empty,
		onCloseEnd: $empty,
		generateTitle: function(el) {
			var text = el.get('title');
			if (!text) return false;
			var title = text.split(' :: ');
			var head = new Element('h6', {'html': title[0]});
			return (title[1]) ? [head, new Element('p', {'html': title[1]})] : head;
		}
	},

	initialize: function(element, options) {
		this.element = $(element);
		this.setOptions(options);
		if (this.options.parse) {
			var obj = this.element.getProperty(this.options.parse);
			if (obj && (obj = JSON.decode(obj, this.options.parseSecure))) this.setOptions(obj);
		}
		var origin = this.options.origin;
		this.origin = ((origin) ? $(origin) || this.element.getElement(origin) : null) || this.element;
		this.link = this.options.link || this.element.get('href') || this.element.get('src');
		this.container = $(this.options.container) || this.element.getDocument();
		this.bound = {
			'click': function(e) {
				this.open.delay(1, this);
				return false;
			}.bind(this),
			'close': this.close.bind(this),
			'dragClose': function(e) {
				if (e.rightClick) return;
				this.close();
			}.bind(this)
		};
		if (this.options.addClick) this.bindToElement();
	},

	destroy: function() {
		if (this.box) this.box.destroy();
		this.box = this.tweens = this.body = this.content = null;
	},

	bindToElement: function(element) {
		($(element) || this.element).addClass('remooz-element').addEvent('click', this.bound.click);
		return this;
	},

	getOriginCoordinates: function() {
		var coords = this.origin.getCoordinates();
		delete coords.right;
		delete coords.bottom;
		return coords;
	},

	open: function(e) {
		if (this.opened) return (e) ? this.close() : this;
		this.opened = this.loading = true;
		if (!this.box) this.build();
		this.coords = this.getOriginCoordinates();
		this.coords.opacity = this.options.opacityLoad;
		this.coords.display = '';
		this.tweens.box.set(this.coords);
		this.box.addClass('remooz-loading');
		ReMooz.open(this.fireEvent('onLoad'));
		this['open' + this.options.type.capitalize()]();
		return this;
	},

	finishOpen: function() {
		this.tweens.fade.start(0, 1);
		this.drag.attach();
		this.fireEvent('onOpenEnd').callChain();
	},

	close: function() {
		if (!this.opened) return this;
		this.opened = false;
		ReMooz.close(this.fireEvent('onClose'));
		if (this.loading) {
			this.box.setStyle('display', 'none');
			return this;
		}
		this.drag.detach();
		this.tweens.fade.cancel().set(0).fireEvent('onComplete');
		if (this.tweens.box.timer) this.tweens.box.clearChain();
		var vars = this.getOriginCoordinates();
		if (this.options.opacityResize != 1) vars.opacity = this.options.opacityResize;
		this.tweens.box.start(vars).chain(this.closeEnd.bind(this));
		return this;
	},

	closeEnd: function() {
		if (this.options.cutOut) this.element.setStyle('visibility', 'visible');
		this.box.setStyle('display', 'none');
		this.fireEvent('onCloseEnd').callChain();
		if (this.options.temporary) this.destroy();
	},

	openImage: function() {
		var tmp = new Image();
		tmp.onload = tmp.onabort = tmp.onerror = function(fast) {
			this.loading = tmp.onload = tmp.onabort = tmp.onerror = null;
			if (!tmp.width || !this.opened) {
				this.fireEvent('onError').close();
				return;
			}
			var to = {x: tmp.width, y: tmp.height};
			if (!this.content) this.content = $(tmp).inject(this.body);
			else tmp = null;
			this[(this.options.resize) ? 'zoomRelativeTo' : 'zoomTo'].create({
				'delay': (tmp && fast !== true) ? 1 : null,
				'arguments': [to],
				'bind': this
			})();
		}.bind(this);
		tmp.src = this.link;
		if (tmp && tmp.complete && tmp.onload) tmp.onload(true);
	},

	/**
	 * @todo Test implementation
	 */
	openElement: function() {
		this.content = this.content || $(this.link) || $E(this.link);
		if (!this.content) {
			this.fireEvent('onError').close();
			return;
		}
		this.content.inject(this.body);
		this.zoomTo({x: this.content.scrollWidth, y: this.content.scrollHeight});
	},

	zoomRelativeTo: function(to) {
		var scale = this.options.resizeLimit;
		if (!scale) {
			scale = this.container.getSize();
			scale.x *= this.options.resizeFactor;
			scale.y *= this.options.resizeFactor;
		}
		for (var i = 2; i--;) {
			if (to.x > scale.x) {
				to.y *= scale.x / to.x;
				to.x = scale.x;
			} else if (to.y > scale.y) {
				to.x *= scale.y / to.y;
				to.y = scale.y;
			}
		}
		return this.zoomTo({x: to.x.toInt(), y: to.y.toInt()});
	},

	zoomTo: function(to) {
		to = this.options.fixedSize || to;
		var box = this.container.getSize(), scroll = this.container.getScroll();
		var pos = (!this.options.centered) ? {
			x: (this.coords.left + (this.coords.width / 2) - to.x / 2).toInt()
				.limit(scroll.x + this.options.margin, scroll.x + box.x - this.options.margin - to.x),
			y: (this.coords.top + (this.coords.height / 2) - to.y / 2).toInt()
				.limit(scroll.y + this.options.margin, scroll.y + box.y - this.options.margin - to.y)
		} :  {
			x: scroll.x + ((box.x - to.x) / 2).toInt(),
			y: scroll.y + ((box.y - to.y) / 2).toInt()
		};
		if (this.options.cutOut) this.element.setStyle('visibility', 'hidden');
		this.box.removeClass('remooz-loading');
		var vars = {left: pos.x, top: pos.y, width: to.x, height: to.y};
		if (this.options.opacityResize != 1) vars.opacity = [this.options.opacityResize, 1];
		else this.box.set('opacity', 1);
		this.tweens.box.start(vars).chain(this.finishOpen.bind(this));
		this.fireEvent('onOpen');
	},

	build: function() {
		this.addEvent('onBlur', function() {
			this.focused = false;
			this.box.removeClass('remooz-box-focus').setStyle('z-index', ReMooz.options.zIndex);
		}, true);
		this.addEvent('onFocus', function() {
			this.focused = true;
			this.box.addClass('remooz-box-focus').setStyle('z-index', ReMooz.options.zIndexFocus);
		}, true);

		var classes = ['remooz-box', 'remooz-type-' + this.options.type, 'remooz-engine-' + Browser.Engine.name + Browser.Engine.version];
		if (this.options.className) classes.push(this.options.className);
		this.box = new Element('div', {
			'class': classes.join(' '),
			'styles': {
				'display': 'none',
				'top': 0,
				'left': 0,
				'zIndex': ReMooz.options.zIndex
			}
		});

		this.tweens = {
			'box': new Fx.Morph(this.box, $merge({
					'duration': 400,
					'unit': 'px',
					'transition': Fx.Transitions.Quart.easeOut,
					'chain': 'cancel'
				}, this.options.resizeOptions)
			),
			'fade': new Fx.Tween(null, $merge({
					'property': 'opacity',
					'duration': (Browser.Engine.trident) ? 0 : 300,
					'chain': 'cancel'
				}, this.options.fxOptions)).addEvents({
					'onComplete': function() {
						if (!this.element.get('opacity')) this.element.setStyle('display', 'none');
					},
					'onStart': function() {
						if (!this.element.get('opacity')) this.element.setStyle('display', '');
					}
				}
			)
		};
		this.tweens.fade.element = $$();

		if (this.options.shadow) {
			if (Browser.Engine.webkit420) {
				this.box.setStyle('-webkit-box-shadow', '0 0 10px rgba(0, 0, 0, 0.7)');
			} else if (!Browser.Engine.trident4) {
				var shadow = new Element('div', {'class': 'remooz-bg-wrap'}).inject(this.box);
				['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].each(function(dir) {
					new Element('div', {'class': 'remooz-bg remooz-bg-' + dir}).inject(shadow);
				});
				this.tweens.bg = new Fx.Tween(shadow, {
					'property': 'opacity',
					'chain': 'cancel'
				}).set(0);
				this.addEvent(this.options.shadow, this.tweens.bg.set.bind(this.tweens.bg, 1), true);
				this.addEvent('onClose', this.tweens.bg.set.bind(this.tweens.bg, 0), true);
			}
		}

		if (this.options.closer) {
			var closer = new Element('a', {
				'class': 'remooz-btn-close',
				'events': {'click': this.bound.close}
			}).inject(this.box);
			this.tweens.fade.element.push(closer);
		}
		this.body = new Element('div', {'class': 'remooz-body'}).inject(this.box);

		var title = this.options.title || this.options.generateTitle.call(this, this.element);
		if (title) { // thx ie6
			var title = new Element('div', {'class': 'remooz-title'}).adopt(
				new Element('div', {'class': 'remooz-title-bg', 'opacity': this.options.opacityTitle}),
				new Element('div', {'class': 'remooz-title-content'}).adopt(title)
			).inject(this.box);
			this.tweens.fade.element.push(title);
		}
		this.tweens.fade.set(0).fireEvent('onComplete');

		this.drag = new Drag.Move(this.box, {
			'snap': 15,
			'preventDefault': true,
			'onBeforeStart': function() {
				if (!this.focused && !this.loading) ReMooz.focus(this);
				else if (this.loading || this.options.closeOnClick) this.box.addEvent('mouseup', this.bound.dragClose);
			}.bind(this),
			'onSnap': function() {
				this.box.removeEvent('mouseup', this.bound.dragClose);
				if (!this.options.dragging) this.drag.stop();
				else this.box.addClass('remooz-box-dragging');
			}.bind(this),
			'onComplete': function() {
				this.box.removeClass('remooz-box-dragging');
			}.bind(this)
		});
		this.drag.detach();

		this.fireEvent('onBuild', this.box, this.element);
		this.box.inject(this.element.getDocument().body);
	}

});

ReMooz.factory = function(extended) {
	return $extend(this, extended);
};

ReMooz.factory(new Options).factory({

	options: {
		zIndex: 41,
		zIndexFocus: 42,
		query: 'a.remooz',
		modal: false
	},

	assign: function(elements, options) {
		return $$(elements).map(function(element) {
			return new ReMooz(element, options);
		}, this);
	},

	stack: [],

	open: function(obj) {
		var last = this.stack.getLast();
		this.focus(obj);
		if (last && this.options.modal) last.close();
	},

	close: function(obj) {
		var length = this.stack.length - 1;
		if (length > 1 && this.stack[length] == obj) this.focus(this.stack[length - 1]);
		this.stack.erase(obj);
	},

	focus: function(obj) {
		var last = this.stack.getLast();
		obj.fireEvent('onFocus', [obj]);
		if (last == obj) return;
		if (last) last.fireEvent('onBlur', [last]);
		this.stack.erase(obj).push(obj);
	}

});
