/* Io Community Manager - Web Application for Managing Open Projects
 *                        and Communities
 * Copyright (C) 2005 Kenton Varda
 * <http://www.fateofio.org>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this program; if not, write to the Free
 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 * MA 02111-1307, USA
 * ====================================================================
 * Revision History:
 * 2005/02/09 (KV)
 *  + First Version
 * ==================================================================== */

var iocmOriginTime;

function initIocm(originTime)
{
   iocmOriginTime = originTime;
}

function twoDigits(i)
{
   if(i < 10)
      return "0" + i;
   else
      return "" + i;
}

function writeDate(time)
{
   date = new Date((iocmOriginTime + time) * 1000);
   document.write(date.getFullYear()
          + "/" + twoDigits(date.getMonth()+1)
          + "/" + twoDigits(date.getDate())
          + " " + twoDigits(date.getHours())
          + ":" + twoDigits(date.getMinutes())
          + ":" + twoDigits(date.getSeconds()));
}

function getChecks(prefix)
{
   var inputs = document.getElementsByTagName("input");
   var results = "";

   for(var i = 0; i < inputs.length; i++)
   {
      if(inputs[i].type == "checkbox"
      && inputs[i].name.substring(0,9) == prefix
      && inputs[i].checked)
      {
         if(results.length > 0)
            results += ",";
         results += inputs[i].name.substring(9);
      }
   }

   return results;
}

function getCoords(element)
{
   var x = 0, y = 0;
   while(element)
   {
      x += element.offsetLeft;
      y += element.offsetTop;
      element = element.offsetParent;
   }

   var result = new Object;
   result.x = x;
   result.y = y;
   return result;
}

function updatePreviewColor(event, element, wantReset, wantUpdate)
{
   updatePreviewColor2(event, element, wantReset, wantUpdate, 150, 220)
}

function updatePreviewColor2(event, element, wantReset, wantUpdate, borderLuminance, backgroundLuminance)
{
   var hue, saturation;

   if(wantReset)
   {
      hue = parseInt(element.form.hue.value);
      saturation = parseInt(element.form.saturation.value);
   }
   else
   {
      /* Here it is, folks.  An example of a way in which Mozilla is
       * fucking stupid while IE is smart. */
      if(typeof(event.offsetX) == 'undefined')
      {
         /* Mozilla:  Event gives us coordinates relative to the page,
          * not the image.  Meanwhile, the only way to find the location
          * of the image relative to the page is to traverse up through
          * the images parents and acculumate the position offsets.
          * This is absolutely ridiculous, and IMHO is stupider than
          * any of the stupid things IE does.  I don't care what the
          * standards say.  If this is "standard" then "standard" is
          * "retarded". */
         var coords = getCoords(element);
         hue = event.pageX - coords.x;
         saturation = 240 - (event.pageY - coords.y);
      }
      else
      {
         //IE:  The event already contains the coordinates.
         hue = event.offsetX;
         saturation = 240 - event.offsetY;
      }
   }

   if(isNaN(hue) || hue < 0)
      hue = 0;
   else if(hue > 239)
      hue = 239;
   hue = Math.floor(hue);
   if(isNaN(saturation) || saturation < 0)
      saturation = 0;
   else if(saturation > 239)
      saturation = 239;
   saturation = Math.floor(saturation);

   border = hsb2color(hue, saturation * 0.5, borderLuminance);
   background = hsb2color(hue, saturation, backgroundLuminance);

   previewBox = document.getElementById("color-preview");
   previewBox.style.color = border;
   previewBox.style.borderColor = border;
   previewBox.style.backgroundColor = background;

   details = previewBox.getElementsByTagName("div")[0];
   details.style.color = border;
   details.style.borderColor = border;
   details.style.backgroundColor = background;

   if(wantUpdate)
   {
      //don't set value if responding to key event and field is blank.
      if(!wantReset || element.form.hue.value.length != 0)
         element.form.hue.value = hue.toString();
      if(!wantReset || element.form.saturation.value.length != 0)
         element.form.saturation.value = saturation.toString();
   }
}

function hsb2color(hue, saturation, luminance)
{
   var s = saturation / 240;
   var l = luminance / 240;

   var temp2;
   if(l < 0.5)
      temp2 = l*(1+s)
   else
      temp2 = l+s - l*s;
   var temp1 = 2*l - temp2;

   var rTemp3 = (hue + 80) % 240;
   var gTemp3 = hue;
   var bTemp3 = (hue + 160) % 240;

   var r, g, b;

   if(rTemp3 < 40)
      r = temp1 + (temp2-temp1)*(rTemp3/40);
   else if(rTemp3 < 120)
      r = temp2;
   else if(rTemp3 < 160)
      r = temp1 + (temp2-temp1)*(160-rTemp3)/40;
   else
      r = temp1;

   if(gTemp3 < 40)
      g = temp1 + (temp2-temp1)*(gTemp3/40);
   else if(gTemp3 < 120)
      g = temp2;
   else if(gTemp3 < 160)
      g = temp1 + (temp2-temp1)*(160-gTemp3)/40;
   else
      g = temp1;

   if(bTemp3 < 40)
      b = temp1 + (temp2-temp1)*(bTemp3/40);
   else if(bTemp3 < 120)
      b = temp2;
   else if(bTemp3 < 160)
      b = temp1 + (temp2-temp1)*(160-bTemp3)/40;
   else
      b = temp1;

   r = Math.floor(r*256);
   g = Math.floor(g*256);
   b = Math.floor(b*256);

   if(r > 255) r = 255;
   if(g > 255) g = 255;
   if(b > 255) b = 255;

   red   = r.toString(16);
   green = g.toString(16);
   blue  = b.toString(16);

   if(red.length   == 1) red   = "0" + red  ;
   if(green.length == 1) green = "0" + green;
   if(blue.length  == 1) blue  = "0" + blue ;

   return "#"+red+green+blue;
}




var request;

function loadXMLDoc(url)
{
   if(window.XMLHttpRequest)
   {
      request = new XMLHttpRequest();
      request.onreadystatechange = readyStateChanged;
      request.open("GET", url, true);
      request.send(null);
   }
   else if(window.ActiveXObject)
   {
      request = new ActiveXObject("Microsoft.XMLHTTP");
      if(request)
      {
         request.onreadystatechange = readyStateChanged;
         request.open("GET", url, true);
         request.send();
      }
   }
}

function readyStateChanged()
{
   if(request && request.readyState == 4 && request.status == 200)
   {
      progress = document.getElementById("uploadProgress");

      if(request.responseText == "")
         progress.innerHTML = "Progress: Error";
      else
      {
         progress.innerHTML = "Progress: " + composeSize(parseInt(request.responseText));
         setTimeout("updateProgress()", 1000);
      }

      request = null;  //don't accept further events from this request!
   }
}

function composeSize(i)
{
   if(i < 1024)
      return i.toString() + " bytes";
   else if(i < 1048576)
      return (i / 1024).toPrecision(3) + " KiB";
   else if(i < 1073741824)
      return (i / 1048576).toPrecision(3) + " MiB";
   else
      return (i / 1073741824).toPrecision(3) + " GiB";
}

function updateProgress()
{
   loadXMLDoc("?showUploadProgress");
}

function doFileSubmit()
{
   if(document.getElementById("uploadField").value != "")
      setTimeout("updateProgress()", 1000);
}





//chat ===============================================================
var chatApplet;
var chatLog;
var chatUsers;
var chatInited;
var chatTimestamp = "";
var chatAvatarsUrl;
var chatIocmUrl;
var chatUsername;
var chatNameLuminance;
var chatBorderLuminance;
var chatBackgroundLuminance;

function chatInit(iocmUrl, avatarsUrl, username)
{
   chatInit2(iocmUrl, avatarsUrl, username, 120, 150, 220);
}

function chatInit2(iocmUrl, avatarsUrl, username, nameLuminance, borderLuminance, backgroundLuminance)
{
   if(chatInited)
      return;
   chatAvatarsUrl = avatarsUrl;
   chatIocmUrl = iocmUrl;
   chatUsername = username;
   chatNameLuminance = nameLuminance;
   chatBorderLuminance = borderLuminance;
   chatBackgroundLuminance = backgroundLuminance;
   chatInited = true;

   chatLog   = document.getElementById("chat-log");
   chatUsers = document.getElementById("chat-users");

   chatApplet = document.applets[0];
   var needPoll = chatApplet.connect(document.cookie);

   document.getElementById("chat-active").style.display = "block";
   document.getElementById("chat-warning").style.display = "none";
   chatRestoreBeepControls();

   if(needPoll == "true")
      setTimeout("chatPoll()", 500);  //compensate for poor LiveConnect on OSX.
   else if(needPoll != "false")
      chatError("Error:  Invalid return when invoking Java from JavaScript.  Your browser's LiveConnect support may be lacking.  This chat room probably won't work.");

   setTimeout("chatKeepalive()", 120000);
}

function chatKeepalive()
{
   chatApplet.submit("/noop");
   setTimeout("chatKeepalive()", 120000);
}

function chatPoll()
{
   commands = chatApplet.pollCommands();
   for(var i = 0; i < commands.length; i++)
      chatCommand(commands[i][0], commands[i][1], commands[i][2], commands[i][3]);
   setTimeout("chatPoll()", 500);
}

function chatToogleBeepControls()
{
   var controls = document.getElementById("chat-beep-controls");
   var link = document.getElementById("chat-beep-controls-toggle");
   if(controls.style.display == "block")
   {
      controls.style.display = "none";
      link.innerHTML = "Show chat controls.";
   }
   else
   {
      controls.style.display = "block";
      link.innerHTML = "Hide chat controls.";
   }
}

function chatSaveBeepControls()
{
   cookieValue = "";
   cookieValue += document.getElementById("beep-say").checked?"t":"f";
   cookieValue += document.getElementById("beep-join").checked?"t":"f";
   cookieValue += document.getElementById("beep-leave").checked?"t":"f";
   cookieValue += document.getElementById("beep-away").checked?"t":"f";
   cookieValue += document.getElementById("beep-back").checked?"t":"f";
   cookieValue += document.getElementById("beep-beep").checked?"t":"f";
   cookieValue += document.getElementById("beep-user").checked?"t":"f";
   cookieValue += document.getElementById("show-timestamps").checked?"t":"f";
   cookieValue += document.getElementById("show-status").checked?"t":"f";
   cookieValue += document.getElementById("show-beep").checked?"t":"f";
   cookieValue += document.getElementById("beep-tell").checked?"t":"f";

   document.cookie = "beep-controls=" + cookieValue + ";expires=Fri, 01-Jan-2038 00:00:00 GMT";
}

function chatRestoreBeepControls()
{
   var cookies = document.cookie;
   var start = cookies.indexOf("beep-controls=");
   if(start == -1)
      return;
   start += "beep-controls=".length;
   end = cookies.indexOf(";", start);
   cookie = cookies.substring(start, end);

   document.getElementById("beep-say"  ).checked = (cookie.length >  0 && cookie.charAt(0) == "t");
   document.getElementById("beep-join" ).checked = (cookie.length >  1 && cookie.charAt(1) == "t");
   document.getElementById("beep-leave").checked = (cookie.length >  2 && cookie.charAt(2) == "t");
   document.getElementById("beep-away" ).checked = (cookie.length >  3 && cookie.charAt(3) == "t");
   document.getElementById("beep-back" ).checked = (cookie.length >  4 && cookie.charAt(4) == "t");
   document.getElementById("beep-beep" ).checked = (cookie.length <= 5 || cookie.charAt(5) == "t");
   document.getElementById("beep-user" ).checked = (cookie.length <= 6 || cookie.charAt(6) == "t");
   document.getElementById("show-timestamps").checked = (cookie.length <= 7 || cookie.charAt(7) == "t");
   document.getElementById("show-status"    ).checked = (cookie.length <= 8 || cookie.charAt(8) == "t");
   document.getElementById("show-beep"      ).checked = (cookie.length <= 9 || cookie.charAt(9) == "t");
   document.getElementById("beep-tell"      ).checked = (cookie.length <= 10 || cookie.charAt(10) == "t");
}

function chatWriteTimestamp(time)
{
   date = new Date((iocmOriginTime + time) * 1000);
   document.write("[" + twoDigits(date.getHours())
                + ":" + twoDigits(date.getMinutes())
                + ":" + twoDigits(date.getSeconds()) + "]");
}

function chatCommand(name, parameters, hasTextString, text)
{
   var hasText = hasTextString == "true";

   var time = parameters.getProperty("time");
   if(time && document.getElementById("show-timestamps").checked)
   {
      time = parseFloat(time);
      var origin = new Date(0);
      origin.setUTCFullYear(2005);
      date = new Date(origin.getTime() + time * 1000);
      chatTimestamp = "[" + twoDigits(date.getHours())
                    + ":" + twoDigits(date.getMinutes())
                    + ":" + twoDigits(date.getSeconds()) + "] ";
   }
   else
      chatTimestamp = "";

   //Have to add "" to any string pulled from the parameter list
   //because liveconnect fails to recognize them as Strings,
   //instead wrapping them like any other Object.
   if(name == "say")
   {
      var hue = parameters.getProperty("hue");
      var saturation = parameters.getProperty("saturation");

      var color = null;
      if(hue && saturation)
         color = hsb2color(parseInt(hue), parseInt(saturation), chatNameLuminance);

      chatSay("say", parameters.getProperty("username"), text, color);
      chatBeep("say");
   }
   else if(name == "emote")
   {
      var hue = parameters.getProperty("hue");
      var saturation = parameters.getProperty("saturation");

      var color = null;
      if(hue && saturation)
         color = hsb2color(parseInt(hue), parseInt(saturation), chatNameLuminance);

      chatEmote(parameters.getProperty("username"), text, color);
      chatBeep("say");
   }
   else if(name == "tell")
   {
      var hue = parameters.getProperty("hue");
      var saturation = parameters.getProperty("saturation");

      var color = null;
      if(hue && saturation)
         color = hsb2color(parseInt(hue), parseInt(saturation), chatNameLuminance);

      var receiver = parameters.getProperty("receiver") + "";
      chatSay("tell", parameters.getProperty("username") + " to " + receiver, text, color);

      if(receiver != "" && fixName(receiver) == chatUsername)
         chatBeep("tell");
   }
   else if(name == "rollcall")
   {
      var hue = parameters.getProperty("hue");
      var saturation = parameters.getProperty("saturation");
      var border = null;
      var background = null;
      if(hue && saturation)
      {
         hue = parseInt(hue);
         saturation = parseInt(saturation);
         border = hsb2color(hue, saturation * 0.5, chatBorderLuminance);
         background = hsb2color(hue, saturation, chatBackgroundLuminance);
      }

      chatAddUser(parseInt(parameters.getProperty("id")), parameters.getProperty("username") + "",
                  parseFloat(parameters.getProperty("influence")),
                  parameters.getProperty("avatar"), border, background, hasText, text);
   }
   else if(name == "join")
   {
      var hue = parameters.getProperty("hue");
      var saturation = parameters.getProperty("saturation");
      var border = null;
      var background = null;
      if(hue && saturation)
      {
         hue = parseInt(hue);
         saturation = parseInt(saturation);
         border = hsb2color(hue, saturation * 0.5, chatBorderLuminance);
         background = hsb2color(hue, saturation, chatBackgroundLuminance);
      }

      username = parameters.getProperty("username");
      chatAddUser(parseInt(parameters.getProperty("id")), username + "",
                  parseFloat(parameters.getProperty("influence")),
                  parameters.getProperty("avatar"), border, background, false, null);
      chatLogText("status", username + " joined.");
      chatBeep("join");
   }
   else if(name == "leave")
   {
      chatRemoveUser(parseInt(parameters.getProperty("id")));
      chatLogText("status", parameters.getProperty("username") + " left.");
      chatBeep("leave");
   }
   else if(name == "away")
   {
      var show = document.getElementById("show-status").checked;
      chatSetAway(parseInt(parameters.getProperty("id")), hasText, text);
      if(!hasText)
      {
         if(show)
            chatLogText("status", parameters.getProperty("username") + " returned.");
         chatBeep("back");
      }
      else if(text == "")
      {
         if(show)
            chatLogText("status", parameters.getProperty("username") + " went away.");
         chatBeep("away");
      }
      else
      {
         if(show)
            chatLogText("status", parameters.getProperty("username") + " went away: " + text);
         chatBeep("away");
      }
   }
   else if(name == "beep")
   {
      var show = document.getElementById("show-beep").checked;
      if(hasText)
      {
         if(show)
            chatLogText("beep", parameters.getProperty("username") + " beeped " + text + ".");
         text += "";
         if(text != "" && fixName(text) == chatUsername)
            chatBeep("user");
      }
      else
      {
         if(show)
            chatLogText("beep", parameters.getProperty("username") + " beeped.");
         chatBeep("beep");
      }
   }
   else if(name == "award")
   {
      var amount = parseFloat(parameters.getProperty("amount"));
      var message = parameters.getProperty("username");

      if(amount < 0)
         message += " docked ";
      else
         message += " awarded ";

      message += text + " ";
      if(amount < 0)
         message += (-amount);
      else
         message += amount;

      if(Math.abs(amount) == 1)
         message += " point.";
      else
         message += " points.";

      chatLogText("award", message);
   }
   else if(name == "kick")
      chatLogText("kick", parameters.getProperty("username") + " kicked " + text + ".");
   else if(name == "watcherJoin" || name == "watcherRollcall")
      chatAddWatcher()
   else if(name == "watcherLeave")
      chatRemoveWatcher()
   else if(name == "roll")
   {
      chatLogText("roll", parameters.getProperty("username") + " rolls (1-"
                + parameters.getProperty("max") + "): " + parameters.getProperty("result"));
   }
   else if(name == "error")
      chatError(text);
}

function chatBeep(eventName)
{
   checkbox = document.getElementById("beep-" + eventName);

   if(checkbox && checkbox.checked)
      chatApplet.beep();
}

function chatError(message)
{
   chatLogText("error", message);
}

function chatLogText(className, text)
{
   //add a paragraph containing the text
   var paragraph = document.createElement("p");
   paragraph.className = className;
   paragraph.appendChild(document.createTextNode(chatTimestamp + text));
   chatLogElement(paragraph);
}

function chatSay(className, username, text, color)
{
   //add a paragraph containing the text
   var paragraph = document.createElement("p");
   paragraph.className = className;
   var prefix = document.createElement("b");
   if(color)
      prefix.style.color = color;
   prefix.appendChild(document.createTextNode(chatTimestamp + username + ":"));
   paragraph.appendChild(prefix);
   paragraph.appendChild(document.createTextNode(" "));

   var content = document.createElement("span");
   content.innerHTML = text;
   paragraph.appendChild(content);
   chatLogElement(paragraph);
}

function chatEmote(username, text, color)
{
   //add a paragraph containing the text
   var paragraph = document.createElement("p");
   paragraph.className = "emote";
   if(color)
      paragraph.style.color = color;
   paragraph.appendChild(document.createTextNode(chatTimestamp + username + " " + text));
   chatLogElement(paragraph);
}

function chatAway(username, text)
{
   //add a paragraph containing the text
   var paragraph = document.createElement("p");
   paragraph.className = "status";
   if(text == "")
      paragraph.innerHtml = chatTimestamp + username + " went away.";
   else
      paragraph.innerHtml = chatTimestamp + username + " went away: " + text;
   chatLogElement(paragraph);
}

function chatLogElement(element)
{
   //are we currently scrolled to the bottom?
   var isScrolledToEnd = chatLog.scrollTop + chatLog.clientHeight >= chatLog.scrollHeight;

   //add the new element
   chatLog.appendChild(element);

   //if we were at the bottom before, update the scroll position to
   //keep it that way
   if(isScrolledToEnd)
      chatLog.scrollTop = chatLog.scrollHeight - chatLog.clientHeight;
}

var chatInput;

function chatSubmitText(element)
{
   if(element.value == "")
      return;
   chatApplet.submit(element.value);
   element.value = "";

   //Safari loses input focus every time the user hits enter...
   chatInput = element;
   setTimeout("chatInput.focus()", 0);
}

function chatAddUser(id, name, influence, avatar, border, background, isAway, awayMessage)
{
   var fixedName = fixName(name);

   var link = document.createElement("a");
   link.href = chatIocmUrl + "~" + fixedName;
   link.target = "_blank";  //would be annoying to click and leave chat...

   if(border && background)
   {
      link.style.borderColor = border;
      link.style.backgroundColor = background;
   }

   if(avatar)
   {
      var image = document.createElement("img");
      image.className = "avatar";
      image.src = chatAvatarsUrl + avatar + "/" + name;
      image.alt = "";
      link.appendChild(image);
   }

   var div = document.createElement("div");
   div.className = "username";
   div.appendChild(document.createTextNode(name));
   link.appendChild(div);

   if(isAway)
   {
      var message;
      if(awayMessage == "")
         message = "Away";
      else
         message = "Away: " + awayMessage;
      div = document.createElement("div");
      div.className = "away-message";
      if(border)
         div.style.color = border;
      div.appendChild(document.createTextNode(chatShortedAway(message)));
      link.appendChild(div);
      link.title = message;
   }
   else
      link.title = "";

   link.connectionId = id;
   link.userBorderColor = border;
   link.influence = influence;

   //order users in the list by influence
   var children = chatUsers.childNodes;
   var before = null;
   for(var i = 0; i < children.length; i++)
   {
      if(children[i].connectionId == -1 || children[i].influence < influence)
      {
         before = children[i];
         break;
      }
   }

   if(before)
      chatUsers.insertBefore(link, before);
   else
      chatUsers.appendChild(link);
}

function chatRemoveUser(id)
{
   var children = chatUsers.childNodes;

   //find the user in the list
   for(var i = 0; i < children.length; i++)
   {
      if(children[i].connectionId == id)
      {
         chatUsers.removeChild(children[i]);
         break;
      }
   }
}

function chatAddWatcher()
{
   var children = chatUsers.childNodes;

   //find the watcher info in the list...
   for(var i = 0; i < children.length; i++)
   {
      if(children[i].connectionId == -1)
      {
         children[i].watcherCount++;
         if(children[i].watcherCount == 1)
            children[i].innerHTML = "1 watcher"
         else
            children[i].innerHTML = children[i].watcherCount + " watchers"
         return;
      }
   }

   var div = document.createElement("div")
   div.className = "watchers"
   div.connectionId = -1;
   div.watcherCount = 1;
   div.innerHTML = "1 watcher";
   chatUsers.appendChild(div);
}

function chatRemoveWatcher()
{
   var children = chatUsers.childNodes;

   //find the watcher info in the list...
   for(var i = 0; i < children.length; i++)
   {
      if(children[i].connectionId == -1)
      {
         children[i].watcherCount--;
         if(children[i].watcherCount == 0)
            chatUsers.removeChild(children[i]);
         else if(children[i].watcherCount == 1)
            children[i].innerHTML = "1 watcher"
         else
            children[i].innerHTML = children[i].watcherCount + " watchers"
         return;
      }
   }
}

function chatSetAway(id, hasText, awayMessage)
{
   var children = chatUsers.childNodes;

   //find the user in the list
   for(var i = 0; i < children.length; i++)
   {
      if(children[i].connectionId == id)
      {
         var link = children[i];

         parts = link.childNodes;
         for(var j = 0; j < parts.length; j++)
         {
            if(parts[j].className == "away-message")
            {
               link.removeChild(parts[j]);
               break;
            }
         }

         if(hasText)
         {
            var message;
            if(awayMessage == "")
               message = "Away";
            else
               message = "Away: " + awayMessage;
            var div = document.createElement("div");
            div.className = "away-message";
            if(children[i].userBorderColor)
               div.style.color = children[i].userBorderColor;
            div.appendChild(document.createTextNode(chatShortedAway(message)));
            link.appendChild(div);
            link.title = message;
         }
         else
            link.title = "";

         break;
      }
   }
}

function chatShortedAway(message)
{
   /* Without some way of accessing font metrics from Javascript, we
    * have to guess how much text can be displayed...  This seems to
    * work well most of the time. */
   if(message.length <= 24)
      return message;
   else
      return message.substring(0, 23) + "...";
}

function fixName(name)
{
   var result = "";
   for(var i = 0; i < name.length; i++)
   {
      c = name.charAt(i);
      if((c >= 'A' && c <= 'Z')
      || (c >= 'a' && c <= 'z')
      || (c >= '0' && c <= '9'))
         result += c;
   }
   return result.toLowerCase();
}



var chatHeight = 450;
var chatDragStartY = -1;

function chatSizeDragStart(event)
{
   chatDragStartY = event.clientY;
}

function chatSizeDragEnd(event)
{
   if(chatDragStartY == -1)
      return;

   chatSizeDrag(event);
   chatHeight += event.clientY - chatDragStartY;
   chatDragStartY = -1;
}

function chatSizeDrag(event)
{
   if(chatDragStartY == -1)
      return;

   var height = chatHeight + event.clientY - chatDragStartY;

   chatLog.style.height   = (height - 8) + "px";
   chatUsers.style.height = height + "px";
}

/*!
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 */

var Cufon = (function() {
	
	var api = function() {	
		return api.replace.apply(null, arguments);
	};
	
	var DOM = api.DOM = {
			
		ready: (function() {
		
			var complete = false, readyStatus = { loaded: 1, complete: 1 };
		
			var queue = [], perform = function() {
				if (complete) return;
				complete = true;
				for (var fn; fn = queue.shift(); fn());
			};
			
			// Gecko, Opera, WebKit r26101+
			
			if (document.addEventListener) {
				document.addEventListener('DOMContentLoaded', perform, false);
				window.addEventListener('pageshow', perform, false); // For cached Gecko pages
			}
			
			// Old WebKit, Internet Explorer
			
			if (!window.opera && document.readyState) (function() {
				readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10);
			})();
			
			// Internet Explorer
			
			if (document.readyState && document.createStyleSheet) (function() {
				try {
					document.body.doScroll('left');
					perform();
				}
				catch (e) {
					setTimeout(arguments.callee, 1);
				}
			})();
			
			addEvent(window, 'load', perform); // Fallback
			
			return function(listener) {
				if (!arguments.length) perform();
				else complete ? listener() : queue.push(listener);
			};
			
		})()
		
	};

	var CSS = api.CSS = {
	
		Size: function(value, base) {
		
			this.value = parseFloat(value);
			this.unit = String(value).match(/[a-z%]*$/)[0] || 'px';
		
			this.convert = function(value) {
				return value / base * this.value;
			};
			
			this.convertFrom = function(value) {
				return value / this.value * base;
			};
			
			this.toString = function() {
				return this.value + this.unit;
			};

		},
		
		color: cached(function(value) {
			var parsed = {};
			parsed.color = value.replace(/^rgba\((.*?),\s*([\d.]+)\)/, function($0, $1, $2) {
				parsed.opacity = parseFloat($2);
				return 'rgb(' + $1 + ')';
			});
			return parsed;
		}),
	
		getStyle: function(el) {
			var view = document.defaultView;
			if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null));
			if (el.currentStyle) return new Style(el.currentStyle);
			return new Style(el.style);
		},
		
		gradient: cached(function(value) {
			var gradient = {
				id: value,
				type: value.match(/^-([a-z]+)-gradient\(/)[1],
				stops: []
			}, colors = value.substr(value.indexOf('(')).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);
			for (var i = 0, l = colors.length, stop; i < l; ++i) {
				stop = colors[i].split('=', 2).reverse();
				gradient.stops.push([ stop[1] || i / (l - 1), stop[0] ]);
			}
			return gradient;
		}),
		
		quotedList: cached(function(value) {
			// doesn't work properly with empty quoted strings (""), but
			// it's not worth the extra code.
			var list = [], re = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g, match;
			while (match = re.exec(value)) list.push(match[3] || match[1]);
			return list;
		}),
		
		recognizesMedia: cached(function(media) {
			var el = document.createElement('style'), sheet, container, supported;
			el.type = 'text/css';
			el.media = media;
			try { // this is cached anyway
				el.appendChild(document.createTextNode('/**/'));
			} catch (e) {}
			container = elementsByTagName('head')[0];
			container.insertBefore(el, container.firstChild);
			sheet = (el.sheet || el.styleSheet);
			supported = sheet && !sheet.disabled;
			container.removeChild(el);
			return supported;
		}),

		supports: function(property, value) {
			var checker = document.createElement('span').style;
			if (checker[property] === undefined) return false;
			checker[property] = value;
			return checker[property] === value;
		},
		
		textAlign: function(word, style, position, wordCount) {
			if (style.get('textAlign') == 'right') {
				if (position > 0) word = ' ' + word;
			}
			else if (position < wordCount - 1) word += ' ';
			return word;
		},
		
		textDecoration: function(el, style) {
			if (!style) style = this.getStyle(el);
			var types = {
				underline: null,
				overline: null,
				'line-through': null
			};
			for (var search = el; search.parentNode && search.parentNode.nodeType == 1; ) {
				var foundAll = true;
				for (var type in types) {
					if (!hasOwnProperty(types, type) || types[type]) continue;
					if (style.get('textDecoration').indexOf(type) != -1) types[type] = style.get('color');
					foundAll = false;
				}
				if (foundAll) break; // this is rather unlikely to happen
				style = this.getStyle(search = search.parentNode);
			}
			return types;
		},
		
		textShadow: cached(function(value) {
			if (value == 'none') return null;
			var shadows = [], currentShadow = {}, result, offCount = 0;
			var re = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
			while (result = re.exec(value)) {
				if (result[0] == ',') {
					shadows.push(currentShadow);
					currentShadow = {}, offCount = 0;
				}
				else if (result[1]) {
					currentShadow.color = result[1];
				}
				else {
					currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2];
				}
			}
			shadows.push(currentShadow);
			return shadows;
		}),
		
		textTransform: function(text, style) {
			return text[{
				uppercase: 'toUpperCase',
				lowercase: 'toLowerCase'
			}[style.get('textTransform')] || 'toString']();
		},
		
		whiteSpace: (function() {
			var ignore = {
				inline: 1,
				'inline-block': 1,
				'run-in': 1
			};
			return function(text, style, node) {
				if (ignore[style.get('display')]) return text;
				if (!node.previousSibling) text = text.replace(/^\s+/, '');
				if (!node.nextSibling) text = text.replace(/\s+$/, '');
				return text;
			};
		})()
		
	};
	
	CSS.ready = (function() {
		
		// don't do anything in Safari 2 (it doesn't recognize any media type)
		var complete = !CSS.recognizesMedia('all'), hasLayout = false;
		
		var queue = [], perform = function() {
			complete = true;
			for (var fn; fn = queue.shift(); fn());
		};
		
		var links = elementsByTagName('link'), styles = elementsByTagName('style');
		
		function isContainerReady(el) {
			return el.disabled || isSheetReady(el.sheet, el.media || 'screen');
		}
		
		function isSheetReady(sheet, media) {
			// in Opera sheet.disabled is true when it's still loading,
			// even though link.disabled is false. they stay in sync if
			// set manually.
			if (!CSS.recognizesMedia(media || 'all')) return true;
			if (!sheet || sheet.disabled) return false;
			var rules = sheet.cssRules, rule;
			if (rules) {
				// needed for Safari 3 and Chrome 1.0.
				// in standards-conforming browsers cssRules contains @-rules.
				// Chrome 1.0 weirdness: rules[<number larger than .length - 1>]
				// returns the last rule, so a for loop is the only option.
				search: for (var i = 0, l = rules.length; rule = rules[i], i < l; ++i) {
					switch (rule.type) {
						case 2: // @charset
							break;
						case 3: // @import
							if (!isSheetReady(rule.styleSheet, rule.media.mediaText)) return false;
							break;
						default:
							// only @charset can precede @import
							break search;
					}
				}
			}
			return true;
		}
		
		function allStylesLoaded() {
			// Internet Explorer's style sheet model, there's no need to do anything
			if (document.createStyleSheet) return true;
			// standards-compliant browsers
			var el, i;
			for (i = 0; el = links[i]; ++i) {
				if (el.rel.toLowerCase() == 'stylesheet' && !isContainerReady(el)) return false;
			}
			for (i = 0; el = styles[i]; ++i) {
				if (!isContainerReady(el)) return false;
			}
			return true;
		}
		
		DOM.ready(function() {
			// getComputedStyle returns null in Gecko if used in an iframe with display: none
			if (!hasLayout) hasLayout = CSS.getStyle(document.body).isUsable();
			if (complete || (hasLayout && allStylesLoaded())) perform();
			else setTimeout(arguments.callee, 10);
		});
		
		return function(listener) {
			if (complete) listener();
			else queue.push(listener);
		};
		
	})();
	
	function Font(data) {
		
		var face = this.face = data.face;
		this.glyphs = data.glyphs;
		this.w = data.w;
		this.baseSize = parseInt(face['units-per-em'], 10);
		
		this.family = face['font-family'].toLowerCase();
		this.weight = face['font-weight'];
		this.style = face['font-style'] || 'normal';
		
		this.viewBox = (function () {
			var parts = face.bbox.split(/\s+/);
			var box = {
				minX: parseInt(parts[0], 10),
				minY: parseInt(parts[1], 10),
				maxX: parseInt(parts[2], 10),
				maxY: parseInt(parts[3], 10)
			};
			box.width = box.maxX - box.minX,
			box.height = box.maxY - box.minY;
			box.toString = function() {
				return [ this.minX, this.minY, this.width, this.height ].join(' ');
			};
			return box;
		})();
		
		this.ascent = -parseInt(face.ascent, 10);
		this.descent = -parseInt(face.descent, 10);
		
		this.height = -this.ascent + this.descent;
		
	}
	
	function FontFamily() {

		var styles = {}, mapping = {
			oblique: 'italic',
			italic: 'oblique'
		};
		
		this.add = function(font) {
			(styles[font.style] || (styles[font.style] = {}))[font.weight] = font;
		};
		
		this.get = function(style, weight) {
			var weights = styles[style] || styles[mapping[style]]
				|| styles.normal || styles.italic || styles.oblique;
			if (!weights) return null;
			// we don't have to worry about "bolder" and "lighter"
			// because IE's currentStyle returns a numeric value for it,
			// and other browsers use the computed value anyway
			weight = {
				normal: 400,
				bold: 700
			}[weight] || parseInt(weight, 10);
			if (weights[weight]) return weights[weight];
			// http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight
			// Gecko uses x99/x01 for lighter/bolder
			var up = {
				1: 1,
				99: 0
			}[weight % 100], alts = [], min, max;
			if (up === undefined) up = weight > 400;
			if (weight == 500) weight = 400;
			for (var alt in weights) {
				if (!hasOwnProperty(weights, alt)) continue;
				alt = parseInt(alt, 10);
				if (!min || alt < min) min = alt;
				if (!max || alt > max) max = alt;
				alts.push(alt);
			}
			if (weight < min) weight = min;
			if (weight > max) weight = max;
			alts.sort(function(a, b) {
				return (up
					? (a > weight && b > weight) ? a < b : a > b
					: (a < weight && b < weight) ? a > b : a < b) ? -1 : 1;
			});
			return weights[alts[0]];
		};
	
	}
	
	function HoverHandler() {
		
		function contains(node, anotherNode) {
			if (node.contains) return node.contains(anotherNode);
			return node.compareDocumentPosition(anotherNode) & 16;
		}
		
		function onOverOut(e) {
			var related = e.relatedTarget;
			if (!related || contains(this, related)) return;
			trigger(this);
		}
		
		function onEnterLeave(e) {
			trigger(this);
		}

		function trigger(el) {
			// A timeout is needed so that the event can actually "happen"
			// before replace is triggered. This ensures that styles are up
			// to date.
			setTimeout(function() {
				api.replace(el, sharedStorage.get(el).options, true);
			}, 10);
		}
		
		this.attach = function(el) {
			if (el.onmouseenter === undefined) {
				addEvent(el, 'mouseover', onOverOut);
				addEvent(el, 'mouseout', onOverOut);
			}
			else {
				addEvent(el, 'mouseenter', onEnterLeave);
				addEvent(el, 'mouseleave', onEnterLeave);
			}
		};
		
	}
	
	function ReplaceHistory() {
		
		var list = [], map = {};
		
		function filter(keys) {
			var values = [], key;
			for (var i = 0; key = keys[i]; ++i) values[i] = list[map[key]];
			return values;
		}
		
		this.add = function(key, args) {
			map[key] = list.push(args) - 1;
		};
		
		this.repeat = function() {
			var snapshot = arguments.length ? filter(arguments) : list, args;
			for (var i = 0; args = snapshot[i++];) api.replace(args[0], args[1], true);
		};
		
	}
	
	function Storage() {
		
		var map = {}, at = 0;
		
		function identify(el) {
			return el.cufid || (el.cufid = ++at);
		}
		
		this.get = function(el) {
			var id = identify(el);
			return map[id] || (map[id] = {});
		};
		
	}
	
	function Style(style) {
		
		var custom = {}, sizes = {};
		
		this.extend = function(styles) {
			for (var property in styles) {
				if (hasOwnProperty(styles, property)) custom[property] = styles[property];
			}
			return this;
		};
		
		this.get = function(property) {
			return custom[property] != undefined ? custom[property] : style[property];
		};
		
		this.getSize = function(property, base) {
			return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base));
		};
		
		this.isUsable = function() {
			return !!style;
		};
		
	}
	
	function addEvent(el, type, listener) {
		if (el.addEventListener) {
			el.addEventListener(type, listener, false);
		}
		else if (el.attachEvent) {
			el.attachEvent('on' + type, function() {
				return listener.call(el, window.event);
			});
		}
	}
	
	function attach(el, options) {
		var storage = sharedStorage.get(el);
		if (storage.options) return el;
		if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) {
			hoverHandler.attach(el);
		}
		storage.options = options;
		return el;
	}
	
	function cached(fun) {
		var cache = {};
		return function(key) {
			if (!hasOwnProperty(cache, key)) cache[key] = fun.apply(null, arguments);
			return cache[key];
		};	
	}
	
	function getFont(el, style) {
		if (!style) style = CSS.getStyle(el);
		var families = CSS.quotedList(style.get('fontFamily').toLowerCase()), family;
		for (var i = 0, l = families.length; i < l; ++i) {
			family = families[i];
			if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight'));
		}
		return null;
	}
	
	function elementsByTagName(query) {
		return document.getElementsByTagName(query);
	}
	
	function hasOwnProperty(obj, property) {
		return obj.hasOwnProperty(property);
	}
	
	function merge() {
		var merged = {}, args, key;
		for (var i = 0, l = arguments.length; args = arguments[i], i < l; ++i) {
			for (key in args) {
				if (hasOwnProperty(args, key)) merged[key] = args[key];
			}
		}
		return merged;
	}
	
	function process(font, text, style, options, node, el) {
		var separate = options.separate;
		if (separate == 'none') return engines[options.engine].apply(null, arguments);
		var fragment = document.createDocumentFragment(), processed;
		var parts = text.split(separators[separate]), needsAligning = (separate == 'words');
		if (needsAligning && HAS_BROKEN_REGEXP) {
			// @todo figure out a better way to do this
			if (/^\s/.test(text)) parts.unshift('');
			if (/\s$/.test(text)) parts.push('');
		}
		for (var i = 0, l = parts.length; i < l; ++i) {
			processed = engines[options.engine](font,
				needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i],
				style, options, node, el, i < l - 1);
			if (processed) fragment.appendChild(processed);
		}
		return fragment;
	}
	
	function replaceElement(el, options) {
		var font, style, node, nodeType, nextNode, redraw;
		for (node = attach(el, options).firstChild; node; node = nextNode) {
			nodeType = node.nodeType;
			nextNode = node.nextSibling;
			redraw = false;
			if (nodeType == 1) {
				if (!node.firstChild) continue;
				if (!/cufon/.test(node.className)) {
					arguments.callee(node, options);
					continue;
				}
				else redraw = true;
			}
			else if (nodeType != 3) continue;
			if (!style) style = CSS.getStyle(el).extend(options);
			if (!font) font = getFont(el, style);
			if (!font) continue;
			if (redraw) {
				engines[options.engine](font, null, style, options, node, el);
				continue;
			}
			var text = CSS.whiteSpace(node.data, style, node);
			if (text === '') continue;
			var processed = process(font, text, style, options, node, el);
			if (processed) node.parentNode.replaceChild(processed, node);
			else node.parentNode.removeChild(node);
		}
	}
	
	var HAS_BROKEN_REGEXP = ' '.split(/\s+/).length == 0;
	
	var sharedStorage = new Storage();
	var hoverHandler = new HoverHandler();
	var replaceHistory = new ReplaceHistory();
	
	var engines = {}, fonts = {}, defaultOptions = {
		enableTextDecoration: false,
		engine: null,
		//fontScale: 1,
		//fontScaling: false,
		hover: false,
		hoverables: {
			a: true
		},
		printable: true,
		//rotation: 0,
		//selectable: false,
		selector: (
				window.Sizzle
			||	(window.jQuery && function(query) { return jQuery(query); }) // avoid noConflict issues
			||	(window.dojo && dojo.query)
			||	(window.$$ && function(query) { return $$(query); })
			||	(window.$ && function(query) { return $(query); })
			||	(document.querySelectorAll && function(query) { return document.querySelectorAll(query); })
			||	elementsByTagName
		),
		separate: 'words', // 'none' and 'characters' are also accepted
		textShadow: 'none'
	};
	
	var separators = {
		words: /[^\S\u00a0]+/,
		characters: ''
	};
	
	api.now = function() {
		DOM.ready();
		return api;
	};
	
	api.refresh = function() {
		replaceHistory.repeat.apply(replaceHistory, arguments);
		return api;
	};
	
	api.registerEngine = function(id, engine) {
		if (!engine) return api;
		engines[id] = engine;
		return api.set('engine', id);
	};
	
	api.registerFont = function(data) {
		var font = new Font(data), family = font.family;
		if (!fonts[family]) fonts[family] = new FontFamily();
		fonts[family].add(font);
		return api.set('fontFamily', '"' + family + '"');
	};
	
	api.replace = function(elements, options, ignoreHistory) {
		options = merge(defaultOptions, options);
		if (!options.engine) return api; // there's no browser support so we'll just stop here
		if (typeof options.textShadow == 'string')
			options.textShadow = CSS.textShadow(options.textShadow);
		if (typeof options.color == 'string' && /^-/.test(options.color))
			options.textGradient = CSS.gradient(options.color);
		if (!ignoreHistory) replaceHistory.add(elements, arguments);
		if (elements.nodeType || typeof elements == 'string') elements = [ elements ];
		CSS.ready(function() {
			for (var i = 0, l = elements.length; i < l; ++i) {
				var el = elements[i];
				if (typeof el == 'string') api.replace(options.selector(el), options, true);
				else replaceElement(el, options);
			}
		});
		return api;
	};
	
	api.set = function(option, value) {
		defaultOptions[option] = value;
		return api;
	};
	
	return api;
	
})();

Cufon.registerEngine('canvas', (function() {

	// Safari 2 doesn't support .apply() on native methods
	
	var check = document.createElement('canvas');
	if (!check || !check.getContext || !check.getContext.apply) return;
	check = null;
	
	var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block');
	
	// Firefox 2 w/ non-strict doctype (almost standards mode)
	var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId));
	
	var styleSheet = document.createElement('style');
	styleSheet.type = 'text/css';
	styleSheet.appendChild(document.createTextNode((
		'.cufon-canvas{text-indent:0;}' +
		'@media screen,projection{' +
			'.cufon-canvas{display:inline;display:inline-block;position:relative;vertical-align:middle;' + 
			(HAS_BROKEN_LINEHEIGHT
				? ''
				: 'font-size:1px;line-height:1px;') +
			'}.cufon-canvas .cufon-alt{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;}' +
			(HAS_INLINE_BLOCK
				? '.cufon-canvas canvas{position:relative;}'
				: '.cufon-canvas canvas{position:absolute;}') +
		'}' +
		'@media print{' +
			'.cufon-canvas{padding:0;}' +
			'.cufon-canvas canvas{display:none;}' +
			'.cufon-canvas .cufon-alt{display:inline;}' +
		'}'
	).replace(/;/g, '!important;')));
	document.getElementsByTagName('head')[0].appendChild(styleSheet);

	function generateFromVML(path, context) {
		var atX = 0, atY = 0;
		var code = [], re = /([mrvxe])([^a-z]*)/g, match;
		generate: for (var i = 0; match = re.exec(path); ++i) {
			var c = match[2].split(',');
			switch (match[1]) {
				case 'v':
					code[i] = { m: 'bezierCurveTo', a: [ atX + ~~c[0], atY + ~~c[1], atX + ~~c[2], atY + ~~c[3], atX += ~~c[4], atY += ~~c[5] ] };
					break;
				case 'r':
					code[i] = { m: 'lineTo', a: [ atX += ~~c[0], atY += ~~c[1] ] };
					break;
				case 'm':
					code[i] = { m: 'moveTo', a: [ atX = ~~c[0], atY = ~~c[1] ] };
					break;
				case 'x':
					code[i] = { m: 'closePath' };
					break;
				case 'e':
					break generate;
			}
			context[code[i].m].apply(context, code[i].a);
		}
		return code;
	}
	
	function interpret(code, context) {
		for (var i = 0, l = code.length; i < l; ++i) {
			var line = code[i];
			context[line.m].apply(context, line.a);
		}
	}
	
	return function(font, text, style, options, node, el) {
		
		var redraw = (text === null);
		
		if (redraw) text = node.alt;
		
		var viewBox = font.viewBox;
		
		var size = style.getSize('fontSize', font.baseSize);
		
		var letterSpacing = style.get('letterSpacing');
		letterSpacing = (letterSpacing == 'normal') ? 0 : size.convertFrom(parseInt(letterSpacing, 10));
		
		var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0;
		var shadows = options.textShadow, shadowOffsets = [];
		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				var x = size.convertFrom(parseFloat(shadow.offX));
				var y = size.convertFrom(parseFloat(shadow.offY));
				shadowOffsets[i] = [ x, y ];
				if (y < expandTop) expandTop = y;
				if (x > expandRight) expandRight = x;
				if (y > expandBottom) expandBottom = y;
				if (x < expandLeft) expandLeft = x;
			}
		}
		
		var chars = Cufon.CSS.textTransform(text, style).split(''), chr;
		
		var glyphs = font.glyphs, glyph, kerning, k;
		var width = 0, advance, jumps = [];
		
		for (var i = 0, j = 0, l = chars.length; i < l; ++i) {
			glyph = glyphs[chr = chars[i]] || font.missingGlyph;
			if (!glyph) continue;
			if (kerning) {
				width -= k = kerning[chr] || 0;
				jumps[j - 1] -= k;
			}
			width += advance = jumps[j++] = ~~(glyph.w || font.w) + letterSpacing;
			kerning = glyph.k;
		}
		
		if (advance === undefined) return null; // there's nothing to render
		
		expandRight += viewBox.width - advance;
		expandLeft += viewBox.minX;
		
		var wrapper, canvas;
		
		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('span');
			wrapper.className = 'cufon cufon-canvas';
			wrapper.alt = text;
			
			canvas = document.createElement('canvas');
			wrapper.appendChild(canvas);
			
			if (options.printable) {
				var print = document.createElement('span');
				print.className = 'cufon-alt';
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}
		}
		
		var wStyle = wrapper.style;
		var cStyle = canvas.style;
		
		var height = size.convert(viewBox.height);
		var roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		
		canvas.width = Math.ceil(size.convert(width * roundingFactor + expandRight - expandLeft));
		canvas.height = Math.ceil(size.convert(viewBox.height - expandTop + expandBottom));
		
		// minY has no part in canvas.height
		expandTop += viewBox.minY;
		
		cStyle.top = Math.round(size.convert(expandTop - font.ascent)) + 'px';
		cStyle.left = Math.round(size.convert(expandLeft)) + 'px';
		
		var wrapperWidth = Math.ceil(size.convert(width * roundingFactor)) + 'px';
		
		if (HAS_INLINE_BLOCK) {
			wStyle.width = wrapperWidth;
			wStyle.height = size.convert(font.height) + 'px';
		}
		else {
			wStyle.paddingLeft = wrapperWidth;
			wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px';
		}
		
		var g = canvas.getContext('2d'), scale = height / viewBox.height;
		
		// proper horizontal scaling is performed later
		g.scale(scale, scale * roundingFactor);
		g.translate(-expandLeft, -expandTop);
		
		g.lineWidth = font.face['underline-thickness'];
		
		g.save();
		
		function line(y, color) {
			g.strokeStyle = color;
			
			g.beginPath();
			
			g.moveTo(0, y);
			g.lineTo(width, y);
			
			g.stroke();
		}
		
		var textDecoration = options.enableTextDecoration ? Cufon.CSS.textDecoration(el, style) : {};
		
		if (textDecoration.underline) line(-font.face['underline-position'], textDecoration.underline);
		if (textDecoration.overline) line(font.ascent, textDecoration.overline);
		
		function renderText() {
			g.scale(roundingFactor, 1);
			for (var i = 0, j = 0, l = chars.length; i < l; ++i) {
				var glyph = glyphs[chars[i]] || font.missingGlyph;
				if (!glyph) continue;
				if (glyph.d) {
					g.beginPath();
					if (glyph.code) interpret(glyph.code, g);
					else glyph.code = generateFromVML('m' + glyph.d, g);
					g.fill();
				}
				g.translate(jumps[j++], 0);
			}
			g.restore();
		}
		
		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				g.save();
				g.fillStyle = shadow.color;
				g.translate.apply(g, shadowOffsets[i]);
				renderText();
			}
		}
		
		var gradient = options.textGradient;
		if (gradient) {
			var stops = gradient.stops, fill = g.createLinearGradient(0, viewBox.minY, 0, viewBox.maxY);
			for (var i = 0, l = stops.length; i < l; ++i) {
				fill.addColorStop.apply(fill, stops[i]);
			}
			g.fillStyle = fill;
		}
		else g.fillStyle = style.get('color');
		
		renderText();
		
		if (textDecoration['line-through']) line(-font.descent, textDecoration['line-through']);
		
		return wrapper;
			
	};
	
})());

Cufon.registerEngine('vml', (function() {

	if (!document.namespaces) return;
	
	if (document.namespaces.cvml == null) {
		document.namespaces.add('cvml', 'urn:schemas-microsoft-com:vml');
	}
	
	var check = document.createElement('cvml:shape');
	check.style.behavior = 'url(#default#VML)';
	if (!check.coordsize) return; // VML isn't supported
	check = null;
	
	document.write(('<style type="text/css">' +
		'.cufon-vml-canvas{text-indent:0;}' +
		'@media screen{' + 
			'cvml\\:shape,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}' +
			'.cufon-vml-canvas{position:absolute;text-align:left;}' +
			'.cufon-vml{display:inline-block;position:relative;vertical-align:middle;}' +
			'.cufon-vml .cufon-alt{position:absolute;left:-10000in;font-size:1px;}' +
			'a .cufon-vml{cursor:pointer}' + // ignore !important here
		'}' +
		'@media print{' + 
			'.cufon-vml *{display:none;}' +
			'.cufon-vml .cufon-alt{display:inline;}' +
		'}' +
	'</style>').replace(/;/g, '!important;'));

	function getFontSizeInPixels(el, value) {
		return getSizeInPixels(el, /(?:em|ex|%)$/i.test(value) ? '1em' : value);
	}
	
	// Original by Dead Edwards.
	// Combined with getFontSizeInPixels it also works with relative units.
	function getSizeInPixels(el, value) {
		if (/px$/i.test(value)) return parseFloat(value);
		var style = el.style.left, runtimeStyle = el.runtimeStyle.left;
		el.runtimeStyle.left = el.currentStyle.left;
		el.style.left = value;
		var result = el.style.pixelLeft;
		el.style.left = style;
		el.runtimeStyle.left = runtimeStyle;
		return result;
	}
	
	var fills = {};
	
	function gradientFill(gradient) {
		var id = gradient.id;
		if (!fills[id]) {
			var stops = gradient.stops, fill = document.createElement('cvml:fill'), colors = [];
			fill.type = 'gradient';
			fill.angle = 180;
			fill.focus = '0';
			fill.method = 'sigma';
			fill.color = stops[0][1];
			for (var j = 1, k = stops.length - 1; j < k; ++j) {
				colors.push(stops[j][0] * 100 + '% ' + stops[j][1]);
			}
			fill.colors = colors.join(',');
			fill.color2 = stops[k][1];
			fills[id] = fill;
		}
		return fills[id];
	}
	
	return function(font, text, style, options, node, el, hasNext) {
		
		var redraw = (text === null);
		
		if (redraw) text = node.alt;
		
		// @todo word-spacing, text-decoration
	
		var viewBox = font.viewBox;
		
		var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize));
		
		var letterSpacing = style.computedLSpacing;
		
		if (letterSpacing == undefined) {
			letterSpacing = style.get('letterSpacing');
			style.computedLSpacing = letterSpacing = (letterSpacing == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, letterSpacing));
		}
		
		var wrapper, canvas;
		
		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('span');
			wrapper.className = 'cufon cufon-vml';
			wrapper.alt = text;
			
			canvas = document.createElement('span');
			canvas.className = 'cufon-vml-canvas';
			wrapper.appendChild(canvas);
			
			if (options.printable) {
				var print = document.createElement('span');
				print.className = 'cufon-alt';
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}
			
			// ie6, for some reason, has trouble rendering the last VML element in the document.
			// we can work around this by injecting a dummy element where needed.
			// @todo find a better solution
			if (!hasNext) wrapper.appendChild(document.createElement('cvml:shape'));
		}
		
		var wStyle = wrapper.style;
		var cStyle = canvas.style;
		
		var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var minX = viewBox.minX, minY = viewBox.minY;
		
		cStyle.height = roundedHeight;
		cStyle.top = Math.round(size.convert(minY - font.ascent));
		cStyle.left = Math.round(size.convert(minX));
		
		wStyle.height = size.convert(font.height) + 'px';
		
		var textDecoration = options.enableTextDecoration ? Cufon.CSS.textDecoration(el, style) : {};
		
		var color = style.get('color');
		var chars = Cufon.CSS.textTransform(text, style).split(''), chr;
		
		var glyphs = font.glyphs, glyph, kerning, k;
		var width = 0, jumps = [], offsetX = 0, advance;
		
		var shape, shadows = options.textShadow;
		
		// pre-calculate width
		for (var i = 0, j = 0, l = chars.length; i < l; ++i) {
			glyph = glyphs[chr = chars[i]] || font.missingGlyph;
			if (!glyph) continue;
			if (kerning) {
				width -= k = kerning[chr] || 0;
				jumps[j - 1] -= k;
			}
			width += advance = jumps[j++] = ~~(glyph.w || font.w) + letterSpacing;
			kerning = glyph.k;
		}
		
		if (advance === undefined) return null;
		
		var fullWidth = -minX + width + (viewBox.width - advance);
	
		var shapeWidth = size.convert(fullWidth * roundingFactor), roundedShapeWidth = Math.round(shapeWidth);
		
		var coordSize = fullWidth + ',' + viewBox.height, coordOrigin;
		var stretch = 'r' + coordSize + 'ns';
		
		var fill = options.textGradient && gradientFill(options.textGradient);
		
		for (i = 0, j = 0; i < l; ++i) {
			
			glyph = glyphs[chars[i]] || font.missingGlyph;
			if (!glyph) continue;
			
			if (redraw) {
				// some glyphs may be missing so we can't use i
				shape = canvas.childNodes[j];
				while (shape.firstChild) shape.removeChild(shape.firstChild); // shadow, fill
			}
			else { 
				shape = document.createElement('cvml:shape');
				canvas.appendChild(shape);
			}
			
			shape.stroked = 'f';
			shape.coordsize = coordSize;
			shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY;
			shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch;
			shape.fillcolor = color;
			
			if (fill) shape.appendChild(fill.cloneNode(false));
			
			// it's important to not set top/left or IE8 will grind to a halt
			var sStyle = shape.style;
			sStyle.width = roundedShapeWidth;
			sStyle.height = roundedHeight;
			
			if (shadows) {
				// due to the limitations of the VML shadow element there
				// can only be two visible shadows. opacity is shared
				// for all shadows.
				var shadow1 = shadows[0], shadow2 = shadows[1];
				var color1 = Cufon.CSS.color(shadow1.color), color2;
				var shadow = document.createElement('cvml:shadow');
				shadow.on = 't';
				shadow.color = color1.color;
				shadow.offset = shadow1.offX + ',' + shadow1.offY;
				if (shadow2) {
					color2 = Cufon.CSS.color(shadow2.color);
					shadow.type = 'double';
					shadow.color2 = color2.color;
					shadow.offset2 = shadow2.offX + ',' + shadow2.offY;
				}
				shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1;
				shape.appendChild(shadow);
			}
			
			offsetX += jumps[j++];
		}
		
		wStyle.width = Math.max(Math.ceil(size.convert(width * roundingFactor)), 0);
		
		return wrapper;
		
	};
	
})());

Cufon.registerFont({"w":187,"face":{"font-family":"DIN-Regular","font-weight":500,"font-stretch":"normal","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"2","bbox":"-5 -355.034 350 81.1688","underline-thickness":"18.36","underline-position":"-59.04","unicode-range":"U+0020-U+2122"},"glyphs":{" ":{"w":89},"!":{"d":"73,-72r-22,0r-3,-184r29,0xm47,0r0,-30r31,0r0,30r-31,0","w":113},"\"":{"d":"92,-195r0,-61r29,0r0,61r-29,0xm32,-195r0,-61r28,0r0,61r-28,0","w":152},"#":{"d":"182,-156r-8,51r32,0r0,23r-36,0r-13,82r-26,0r13,-82r-58,0r-13,82r-26,0r13,-82r-32,0r0,-23r36,0r8,-51r-33,0r0,-23r36,0r12,-78r27,0r-12,78r57,0r12,-78r27,0r-13,78r32,0r0,23r-35,0xm98,-156r-8,51r57,0r9,-51r-58,0","w":235},"$":{"d":"154,-132v68,23,40,147,-38,133r0,40r-22,0r0,-39v-30,0,-56,-11,-79,-34r19,-18v18,18,39,27,62,27r0,-95v-41,-5,-74,-19,-74,-68v-1,-41,29,-73,72,-72r0,-32r22,0r0,32v31,1,48,11,67,28r-18,17v-14,-12,-26,-21,-50,-21r0,93v13,2,31,6,39,9xm96,-234v-50,-5,-64,73,-20,86v6,2,13,3,20,4r0,-90xm115,-23v55,8,71,-76,21,-89v-6,-1,-13,-2,-21,-3r0,92","w":214},"%":{"d":"277,-84v4,48,-6,87,-49,87v-43,1,-53,-39,-48,-87v-1,-29,20,-49,48,-48v28,0,49,20,49,48xm101,0r-22,0r120,-256r22,0xm121,-210v5,48,-6,86,-49,86v-43,0,-54,-38,-49,-86v0,-29,20,-49,49,-49v29,0,49,20,49,49xm228,-15v33,1,28,-36,28,-68v0,-20,-8,-31,-28,-31v-32,-2,-29,35,-28,67v0,20,8,32,28,32xm72,-142v33,1,28,-36,28,-68v0,-18,-8,-31,-28,-31v-34,-1,-28,36,-28,68v0,20,8,31,28,31","w":299},"&":{"d":"226,-126v-1,35,-6,59,-24,79r40,47r-35,0r-23,-28v-38,48,-164,38,-156,-44v3,-43,20,-51,55,-77v-14,-20,-26,-28,-28,-56v0,-31,26,-54,57,-53v55,-5,76,76,27,99r-19,13r66,79v11,-17,14,-29,14,-59r26,0xm119,-172v31,-13,29,-63,-7,-63v-42,4,-32,51,-7,72xm54,-73v-2,58,84,65,115,26r-71,-85v-24,20,-41,24,-44,59","w":266},"'":{"d":"32,-195r0,-61r28,0r0,61r-28,0","w":91},"(":{"d":"59,-36v-1,30,11,37,25,52r-17,18v-17,-16,-35,-34,-34,-68r2,-208v3,-20,21,-38,32,-48r17,17v-13,14,-25,24,-25,53r0,184","w":107},")":{"d":"41,-290v15,17,36,33,33,68r-1,208v-2,20,-22,37,-32,48r-19,-19v14,-12,26,-24,25,-51r0,-184v-2,-33,-6,-32,-25,-52","w":107},"*":{"d":"136,-152r-42,-26r2,49r-21,0r1,-49r-41,26r-11,-18r43,-23r-43,-24r11,-17r41,25r-1,-49r21,0r-2,49r42,-25r11,17r-44,24r44,23","w":170},"+":{"d":"106,-84r0,63r-24,0r0,-63r-63,0r0,-24r63,0r0,-63r24,0r0,63r63,0r0,24r-63,0"},",":{"d":"32,52r0,-84r31,0r0,55","w":95},"-":{"d":"27,-85r0,-24r99,0r0,24r-99,0","w":153},".":{"d":"32,0r0,-34r34,0r0,34r-34,0","w":97},"\/":{"d":"26,27r-26,0r103,-310r25,0","w":127},"0":{"d":"164,-68v1,39,-30,72,-70,70v-40,1,-72,-29,-70,-70r0,-120v-1,-41,30,-71,70,-70v40,-1,72,29,70,70r0,120xm94,-21v68,0,38,-102,44,-165v0,-29,-15,-50,-44,-49v-68,0,-38,102,-44,165v0,29,16,50,44,49"},"1":{"d":"93,0r0,-228r-48,43r0,-30r48,-41r26,0r0,256r-26,0"},"2":{"d":"95,-258v66,-7,93,78,50,120r-89,115r110,0r0,23r-142,0r0,-23r102,-129v26,-30,16,-86,-31,-83v-27,0,-45,16,-44,46r-26,0v-1,-40,29,-70,70,-69"},"3":{"d":"166,-70v5,67,-83,94,-129,55v-15,-11,-22,-28,-22,-50r26,0v-1,28,22,44,49,44v29,1,50,-20,50,-49v0,-34,-19,-52,-56,-50r0,-23v34,1,51,-14,51,-46v1,-28,-18,-47,-45,-47v-26,0,-44,17,-46,43r-26,0v-1,-39,33,-67,72,-66v71,-7,98,101,36,127v27,9,40,30,40,62"},"4":{"d":"142,-41r0,41r-25,0r0,-41r-103,0r0,-23r93,-192r28,0r-93,192r75,0r0,-73r25,0r0,73r32,0r0,23r-32,0"},"5":{"d":"166,-85v12,93,-103,116,-136,49v-3,-7,-5,-15,-5,-24r26,0v4,26,16,39,44,39v37,-2,45,-23,45,-64v-1,-37,-7,-62,-43,-62v-21,0,-38,9,-42,25r-24,0r0,-134r130,0r0,23r-106,0r0,81v10,-12,26,-18,46,-18v51,3,58,33,65,85"},"6":{"d":"166,-74v0,44,-28,76,-71,76v-68,1,-91,-75,-55,-131r63,-127r26,0r-57,115v48,-21,96,17,94,67xm140,-73v0,-29,-17,-53,-46,-52v-28,0,-46,23,-45,52v-1,30,17,51,45,52v29,0,47,-23,46,-52"},"7":{"d":"81,0r-28,0r89,-233r-89,0r0,40r-26,0r0,-63r143,0r0,23"},"8":{"d":"170,-71v0,43,-33,73,-76,73v-42,0,-77,-31,-76,-73v1,-31,18,-50,39,-62v-57,-25,-35,-133,37,-125v70,-7,96,99,37,125v21,12,38,32,39,62xm139,-189v1,-27,-19,-46,-45,-46v-26,0,-45,19,-45,46v-1,25,19,46,45,45v27,1,45,-20,45,-45xm144,-71v1,-28,-22,-51,-50,-50v-28,-1,-50,23,-50,50v-1,28,22,51,50,50v28,1,50,-23,50,-50"},"9":{"d":"93,-258v68,-2,91,75,55,131r-63,127r-27,0r58,-115v-50,18,-97,-16,-94,-68v0,-42,28,-76,71,-75xm139,-184v0,-29,-17,-52,-46,-51v-27,-1,-46,22,-45,51v0,30,16,52,45,52v29,0,46,-22,46,-52"},":":{"d":"41,-108r0,-34r34,0r0,34r-34,0xm41,0r0,-34r34,0r0,34r-34,0","w":106},";":{"d":"41,-108r0,-34r34,0r0,34r-34,0xm42,52r0,-84r32,0r0,55","w":106},"<":{"d":"66,-84r131,131r-34,0r-143,-144r143,-143r34,0r-131,131r284,0r0,25r-284,0","w":369},"=":{"d":"19,-115r0,-24r150,0r0,24r-150,0xm19,-54r0,-24r150,0r0,24r-150,0"},">":{"d":"206,47r-34,0r132,-131r-284,0r0,-25r284,0r-132,-131r34,0r144,143","w":369},"?":{"d":"95,-258v55,-5,89,67,51,109v-13,25,-38,37,-36,77r-26,0v-6,-59,46,-69,52,-121v1,-24,-18,-43,-41,-42v-24,-1,-42,20,-42,42r-26,0v0,-35,30,-67,68,-65xm82,0r0,-30r31,0r0,30r-31,0","w":178},"@":{"d":"102,-257v73,-6,131,8,129,78r0,179r-25,0r0,-20v-12,15,-24,22,-48,23v-48,-4,-67,-32,-65,-89v0,-53,11,-86,64,-88v20,0,36,8,49,23v3,-50,-6,-84,-54,-84v-56,-3,-105,1,-101,56v6,57,-18,140,21,165r-18,17v-47,-26,-22,-116,-28,-182v0,-49,28,-78,76,-78xm206,-86v-1,-37,-7,-66,-44,-66v-37,0,-43,29,-44,66v1,37,7,66,44,66v37,0,43,-27,44,-66","w":256},"A":{"d":"186,0r-20,-58r-112,0r-21,58r-29,0r95,-256r23,0r94,256r-30,0xm111,-217r-49,135r96,0","w":219},"B":{"d":"213,-71v1,46,-30,72,-76,71r-100,0r0,-256r97,0v43,-1,76,26,75,68v0,28,-16,49,-38,56v24,8,42,30,42,61xm182,-188v2,-53,-65,-44,-118,-44r0,89v53,-1,120,10,118,-45xm186,-72v2,-55,-67,-47,-122,-46r0,94v56,0,124,9,122,-48","w":240},"C":{"d":"206,-74v-6,44,-40,76,-89,76v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v49,0,83,31,89,76r-28,0v-7,-30,-27,-52,-61,-52v-56,5,-64,38,-62,106v-2,68,6,100,62,106v34,0,55,-22,62,-52r27,0","w":229},"D":{"d":"215,-131v5,78,-19,131,-90,131r-88,0r0,-256r88,0v73,2,94,46,90,125xm188,-131v3,-66,-12,-99,-68,-101r-56,0r0,208r56,0v59,-2,71,-41,68,-107","w":242},"E":{"d":"37,0r0,-256r159,0r0,24r-132,0r0,91r113,0r0,24r-113,0r0,93r132,0r0,24r-159,0","w":216},"F":{"d":"64,-232r0,94r113,0r0,25r-113,0r0,113r-27,0r0,-256r159,0r0,24r-132,0","w":208},"G":{"d":"207,-134v10,82,-23,135,-90,136v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v50,-1,83,32,90,76r-28,0v-6,-30,-28,-52,-62,-52v-56,6,-64,38,-62,106v-2,68,6,100,62,106v46,0,68,-37,63,-88r-63,0r0,-24r90,0","w":234},"H":{"d":"186,0r0,-117r-122,0r0,117r-27,0r0,-256r27,0r0,115r122,0r0,-115r27,0r0,256r-27,0","w":250},"I":{"d":"37,0r0,-256r27,0r0,256r-27,0","w":101},"J":{"d":"147,-78v7,74,-92,105,-139,57r19,-18v29,33,93,15,93,-42r0,-175r27,0r0,178","w":180},"K":{"d":"197,0r-79,-136r-54,64r0,72r-27,0r0,-256r27,0r0,147r120,-147r33,0r-80,99r92,157r-32,0","w":234},"L":{"d":"37,0r0,-256r27,0r0,232r131,0r0,24r-158,0","w":206},"M":{"d":"229,0r0,-195r-70,155r-23,0r-72,-155r0,195r-27,0r0,-256r27,0r84,181r81,-181r28,0r0,256r-28,0","w":293},"N":{"d":"201,0r-137,-206r0,206r-27,0r0,-256r26,0r136,205r0,-205r27,0r0,256r-25,0","w":263},"O":{"d":"207,-128v0,81,-23,127,-90,130v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v73,6,90,45,90,130xm117,-22v55,-6,65,-38,62,-106v3,-68,-7,-100,-62,-106v-56,6,-64,38,-62,106v-2,68,6,99,62,106","w":234},"P":{"d":"212,-181v0,46,-34,77,-80,76r-68,0r0,105r-27,0r0,-256r95,0v47,-1,80,29,80,75xm184,-181v3,-60,-63,-52,-120,-51r0,102v57,0,123,9,120,-51","w":226},"Q":{"d":"207,-128v-2,47,3,70,-18,96r28,28r-16,17r-29,-29v-16,12,-34,18,-55,18v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v73,6,94,46,90,130xm169,-52v18,-56,26,-190,-52,-182v-56,6,-64,38,-62,106v-2,68,6,99,62,106v13,0,26,-4,36,-13r-32,-32r17,-17","w":233},"R":{"d":"211,-185v0,37,-23,62,-55,69r60,116r-32,0r-58,-114r-62,0r0,114r-27,0r0,-256r98,0v45,-1,76,27,76,71xm184,-185v2,-56,-65,-48,-120,-47r0,94v55,0,122,11,120,-47","w":236},"S":{"d":"151,-133v73,27,39,146,-48,135v-44,-5,-64,-10,-88,-34r19,-18v28,38,130,43,130,-20v-2,-82,-144,-12,-142,-116v-7,-77,114,-93,158,-44r-17,17v-28,-31,-117,-33,-114,26v-1,53,64,39,102,54","w":211},"T":{"d":"112,-232r0,232r-27,0r0,-232r-74,0r0,-24r175,0r0,24r-74,0","w":197},"U":{"d":"212,-85v1,51,-38,88,-89,87v-51,1,-91,-35,-90,-87r0,-171r28,0r0,169v-1,38,24,65,62,65v36,0,63,-27,62,-65r0,-169r27,0r0,171","w":245},"V":{"d":"109,0r-22,0r-84,-256r29,0r66,207r67,-207r29,0","w":196},"W":{"d":"236,0r-25,0r-57,-205r-57,205r-26,0r-65,-256r29,0r50,206r56,-206r25,0r56,206r51,-206r29,0","w":307},"X":{"d":"161,0r-62,-108r-63,108r-31,0r79,-131r-74,-125r32,0r57,101r57,-101r32,0r-74,125r79,131r-32,0","w":198},"Y":{"d":"107,-106r0,106r-28,0r0,-106r-76,-150r29,0r61,122r60,-122r29,0","w":185},"Z":{"d":"21,0r0,-26r128,-206r-123,0r0,-24r154,0r0,23r-130,209r130,0r0,24r-159,0","w":200},"[":{"d":"33,27r0,-310r64,0r0,23r-38,0r0,264r38,0r0,23r-64,0","w":112},"\\":{"d":"102,27r-102,-309r26,0r102,309r-26,0","w":127},"]":{"d":"16,27r0,-23r39,0r0,-265r-39,0r0,-22r64,0r0,310r-64,0","w":112},"^":{"d":"141,-149r-44,-82r-44,82r-27,0r59,-109r24,0r58,109r-26,0","w":193},"_":{"d":"0,59r0,-18r193,0r0,18r-193,0","w":193},"`":{"d":"84,-214r-39,-55r31,0r32,55r-24,0","w":180},"a":{"d":"25,-153v27,-44,134,-34,134,33r0,120r-26,0r0,-17v-29,33,-121,26,-115,-33v0,-54,58,-54,115,-51v2,-38,-8,-57,-46,-56v-24,0,-34,6,-44,20xm84,-20v40,2,52,-19,49,-62v-38,0,-92,-7,-89,32v0,20,13,30,40,30","w":189},"b":{"d":"173,-89v1,54,-13,90,-65,91v-24,-1,-38,-7,-50,-23r0,21r-26,0r0,-256r26,0r0,99v12,-14,26,-22,50,-22v52,0,65,38,65,90xm147,-89v-1,-39,-7,-67,-44,-67v-38,0,-44,30,-45,67v1,40,6,68,45,68v37,0,43,-29,44,-68","w":196},"c":{"d":"159,-24v-44,55,-148,16,-136,-65v-11,-80,89,-120,136,-64r-17,17v-30,-42,-93,-15,-93,47v0,41,11,66,52,68v22,0,29,-7,41,-20","w":176},"d":{"d":"88,-179v26,-1,38,8,50,22r0,-99r26,0r0,256r-26,0r0,-21v-11,16,-25,22,-50,23v-53,-1,-64,-39,-65,-91v0,-52,14,-90,65,-90xm138,-89v-1,-39,-7,-67,-44,-67v-38,0,-44,29,-45,67v1,40,6,68,45,68v37,0,43,-29,44,-68","w":196},"e":{"d":"95,-179v51,0,77,40,73,97r-119,0v-9,61,68,79,98,41r18,16v-19,16,-31,27,-65,27v-52,0,-78,-34,-77,-91v-1,-52,25,-90,72,-90xm142,-101v10,-55,-65,-75,-87,-32v-5,11,-6,18,-6,32r93,0","w":190},"f":{"d":"38,-176v-5,-52,8,-89,64,-81r0,22v-39,-7,-40,23,-38,59r38,0r0,20r-38,0r0,156r-26,0r0,-156r-23,0r0,-20r23,0","w":113},"g":{"d":"163,5v7,71,-88,100,-134,53r17,-17v28,34,99,17,91,-37r0,-27v-13,15,-25,23,-50,23v-47,-1,-65,-39,-64,-90v0,-52,15,-88,65,-89v25,0,37,7,50,23r0,-21r25,0r0,182xm137,-90v-1,-38,-6,-66,-44,-66v-37,0,-43,29,-44,66v1,37,7,66,44,66v38,0,43,-28,44,-66","w":195},"h":{"d":"58,-158v36,-41,121,-19,114,44r0,114r-26,0v-6,-60,22,-156,-43,-156v-67,-2,-39,95,-45,156r-26,0r0,-256r26,0r0,98","w":202},"i":{"d":"31,-228r0,-29r29,0r0,29r-29,0xm32,0r0,-177r26,0r0,177r-26,0","w":91},"j":{"d":"31,-228r0,-29r29,0r0,29r-29,0xm58,32v1,36,-24,52,-63,48r0,-23v23,1,39,-2,37,-26r0,-207r26,0r0,208","w":91},"k":{"d":"149,0r-56,-91r-35,40r0,51r-26,0r0,-256r26,0r0,171r80,-92r33,0r-60,68r70,109r-32,0","w":192},"l":{"d":"58,-48v-2,24,13,28,37,26r0,22v-39,4,-64,-11,-63,-47r0,-209r26,0r0,208","w":106},"m":{"d":"163,-150v31,-48,129,-36,123,37r0,113r-26,0v-6,-61,23,-156,-44,-156v-66,-1,-39,95,-44,156r-26,0v-5,-60,22,-157,-43,-156v-67,-2,-39,95,-45,156r-26,0r0,-177r26,0r0,19v26,-31,88,-27,105,8","w":316},"n":{"d":"58,-158v37,-42,121,-18,114,45r0,113r-26,0v-6,-61,23,-156,-44,-156v-66,-1,-39,95,-44,156r-26,0r0,-177r26,0r0,19","w":202},"o":{"d":"168,-89v0,55,-20,89,-73,91v-51,-3,-72,-35,-72,-91v0,-53,21,-89,72,-90v52,1,73,35,73,90xm142,-89v2,-39,-12,-67,-47,-67v-35,0,-47,30,-46,67v-2,39,10,67,46,68v37,0,48,-29,47,-68","w":190},"p":{"d":"173,-89v1,54,-13,90,-65,91v-26,0,-36,-7,-50,-23r0,100r-26,0r0,-256r26,0r0,21v12,-16,26,-23,50,-23v52,0,65,38,65,90xm147,-89v-1,-39,-7,-67,-44,-67v-38,0,-44,30,-45,67v1,40,6,68,45,68v37,0,43,-29,44,-68","w":196},"q":{"d":"88,-179v25,0,38,7,50,23r0,-21r26,0r0,256r-26,0r0,-100v-12,16,-26,22,-50,23v-53,-1,-64,-39,-65,-91v0,-52,14,-90,65,-90xm138,-89v-1,-39,-7,-67,-44,-67v-38,0,-44,29,-45,67v1,40,6,68,45,68v37,0,43,-29,44,-68","w":196},"r":{"d":"58,-156v14,-24,72,-34,92,-7r-19,20v-24,-29,-78,-5,-73,34r0,109r-26,0r0,-177r26,0r0,21","w":151},"s":{"d":"147,-87v34,38,-3,97,-59,89v-33,0,-54,-9,-73,-25r18,-18v17,27,101,34,102,-10v2,-27,-34,-27,-59,-29v-32,1,-52,-17,-53,-47v-3,-61,94,-64,129,-33r-17,17v-21,-19,-87,-25,-86,15v-1,44,77,16,98,41","w":178},"t":{"d":"100,0v-40,5,-63,-12,-63,-48r0,-108r-23,0r0,-20r23,0r0,-55r26,0r0,55r37,0r0,20r-37,0r0,108v-1,22,14,28,37,26r0,22","w":119},"u":{"d":"100,-21v66,1,39,-95,44,-156r26,0r0,177r-26,0r0,-20v-34,43,-122,20,-113,-44r0,-113r26,0v6,60,-23,157,43,156","w":202},"v":{"d":"92,0r-23,0r-65,-177r28,0r48,142r49,-142r28,0","w":160},"w":{"d":"201,0r-24,0r-47,-138r-46,138r-24,0r-56,-177r28,0r41,142r46,-142r22,0r47,142r41,-142r28,0","w":260},"x":{"d":"129,0r-43,-69r-43,69r-31,0r60,-90r-58,-87r32,0r40,65r40,-65r32,0r-58,87r60,90r-31,0","w":172},"y":{"d":"76,43v-7,25,-26,35,-58,33r0,-23v41,6,38,-33,50,-57r-64,-173r28,0r49,142r48,-142r28,0","w":160},"z":{"d":"18,0r0,-22r99,-132r-94,0r0,-23r124,0r0,22r-99,132r99,0r0,23r-129,0","w":165},"{":{"d":"53,-128v58,22,-22,142,57,132r0,23v-40,2,-61,-7,-61,-47v0,-39,18,-103,-32,-97r0,-23v80,10,-28,-161,93,-143r0,23v-74,-13,-1,107,-57,132","w":127},"|":{"d":"46,27r0,-310r26,0r0,310r-26,0","w":117},"}":{"d":"17,-283v119,-18,10,142,93,143r0,23v-81,-7,28,161,-93,144r0,-23v23,-1,35,1,35,-28v0,-40,-11,-95,23,-104v-34,-10,-20,-63,-23,-104v2,-28,-10,-28,-35,-28r0,-23","w":127},"~":{"d":"176,-100v-17,16,-21,23,-46,24v-37,-1,-72,-39,-97,-3r-15,-16v17,-16,22,-23,46,-25v34,2,71,39,96,4","w":194},"\u00c4":{"d":"186,0r-20,-58r-112,0r-21,58r-29,0r95,-256r23,0r94,256r-30,0xm111,-217r-49,135r96,0xm134,-284r0,-32r26,0r0,32r-26,0xm58,-284r0,-32r26,0r0,32r-26,0","w":219},"\u00c5":{"d":"151,-312v0,23,-19,44,-42,43v-23,1,-44,-20,-43,-43v-1,-23,20,-43,43,-43v21,-1,43,20,42,43xm134,-312v0,-14,-12,-24,-25,-25v-14,0,-26,11,-25,25v-1,14,11,25,25,25v14,0,25,-12,25,-25xm186,0r-20,-58r-112,0r-21,58r-29,0r95,-256r23,0r94,256r-30,0xm111,-217r-49,135r96,0","w":219},"\u00c7":{"d":"206,-74v-6,44,-40,76,-89,76v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v49,0,83,31,89,76r-28,0v-7,-30,-27,-52,-61,-52v-56,5,-64,38,-62,106v-2,68,6,100,62,106v34,0,55,-22,62,-52r27,0xm112,78r-28,0r26,-54r24,0","w":229},"\u00c9":{"d":"37,0r0,-256r159,0r0,24r-132,0r0,91r113,0r0,24r-113,0r0,93r132,0r0,24r-159,0xm119,-281r-24,0r32,-55r31,0","w":216},"\u00d1":{"d":"188,-305v-11,12,-18,19,-34,19v-26,0,-46,-31,-67,-5r-13,-12v11,-12,18,-19,34,-19v25,0,48,31,67,4xm201,0r-137,-206r0,206r-27,0r0,-256r26,0r136,205r0,-205r27,0r0,256r-25,0","w":263},"\u00d6":{"d":"207,-128v0,81,-23,127,-90,130v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v73,6,90,45,90,130xm117,-22v55,-6,65,-38,62,-106v3,-68,-7,-100,-62,-106v-56,6,-64,38,-62,106v-2,68,6,99,62,106xm142,-284r0,-32r26,0r0,32r-26,0xm66,-284r0,-32r26,0r0,32r-26,0","w":234},"\u00dc":{"d":"212,-85v1,51,-38,88,-89,87v-51,1,-91,-35,-90,-87r0,-171r28,0r0,169v-1,38,24,65,62,65v36,0,63,-27,62,-65r0,-169r27,0r0,171xm148,-284r0,-32r26,0r0,32r-26,0xm72,-284r0,-32r26,0r0,32r-26,0","w":245},"\u00e1":{"d":"25,-153v27,-44,134,-34,134,33r0,120r-26,0r0,-17v-29,33,-121,26,-115,-33v0,-54,58,-54,115,-51v2,-38,-8,-57,-46,-56v-24,0,-34,6,-44,20xm84,-20v40,2,52,-19,49,-62v-38,0,-92,-7,-89,32v0,20,13,30,40,30xm97,-214r-24,0r32,-55r31,0","w":189},"\u00e0":{"d":"25,-153v27,-44,134,-34,134,33r0,120r-26,0r0,-17v-29,33,-121,26,-115,-33v0,-54,58,-54,115,-51v2,-38,-8,-57,-46,-56v-24,0,-34,6,-44,20xm84,-20v40,2,52,-19,49,-62v-38,0,-92,-7,-89,32v0,20,13,30,40,30xm85,-214r-39,-55r31,0r32,55r-24,0","w":189},"\u00e2":{"d":"123,-214r-32,-37r-33,37r-25,0r45,-55r25,0r45,55r-25,0xm25,-153v27,-44,134,-34,134,33r0,120r-26,0r0,-17v-29,33,-121,26,-115,-33v0,-54,58,-54,115,-51v2,-38,-8,-57,-46,-56v-24,0,-34,6,-44,20xm84,-20v40,2,52,-19,49,-62v-38,0,-92,-7,-89,32v0,20,13,30,40,30","w":189},"\u00e4":{"d":"25,-153v27,-44,134,-34,134,33r0,120r-26,0r0,-17v-29,33,-121,26,-115,-33v0,-54,58,-54,115,-51v2,-38,-8,-57,-46,-56v-24,0,-34,6,-44,20xm84,-20v40,2,52,-19,49,-62v-38,0,-92,-7,-89,32v0,20,13,30,40,30xm116,-217r0,-32r26,0r0,32r-26,0xm40,-217r0,-32r26,0r0,32r-26,0","w":189},"\u00e3":{"d":"147,-237v-11,11,-18,17,-34,18v-26,-1,-47,-31,-67,-4r-13,-13v11,-11,18,-18,34,-19v25,1,47,31,67,5xm25,-153v27,-44,134,-34,134,33r0,120r-26,0r0,-17v-29,33,-121,26,-115,-33v0,-54,58,-54,115,-51v2,-38,-8,-57,-46,-56v-24,0,-34,6,-44,20xm84,-20v40,2,52,-19,49,-62v-38,0,-92,-7,-89,32v0,20,13,30,40,30","w":189},"\u00e5":{"d":"133,-247v0,23,-19,43,-42,43v-23,0,-44,-21,-43,-43v-1,-23,20,-44,43,-43v22,-1,43,20,42,43xm116,-247v0,-13,-11,-25,-25,-25v-14,0,-26,10,-25,25v-1,14,12,25,25,25v14,0,24,-12,25,-25xm25,-153v27,-44,134,-34,134,33r0,120r-26,0r0,-17v-29,33,-121,26,-115,-33v0,-54,58,-54,115,-51v2,-38,-8,-57,-46,-56v-24,0,-34,6,-44,20xm84,-20v40,2,52,-19,49,-62v-38,0,-92,-7,-89,32v0,20,13,30,40,30","w":189},"\u00e7":{"d":"159,-24v-44,55,-148,16,-136,-65v-11,-80,89,-120,136,-64r-17,17v-30,-42,-93,-15,-93,47v0,41,11,66,52,68v22,0,29,-7,41,-20xm91,78r-28,0r26,-54r24,0","w":177},"\u00e9":{"d":"95,-179v51,0,77,40,73,97r-119,0v-9,61,68,79,98,41r18,16v-19,16,-31,27,-65,27v-52,0,-78,-34,-77,-91v-1,-52,25,-90,72,-90xm142,-101v10,-55,-65,-75,-87,-32v-5,11,-6,18,-6,32r93,0xm102,-214r-24,0r32,-55r31,0","w":190},"\u00e8":{"d":"95,-179v51,0,77,40,73,97r-119,0v-9,61,68,79,98,41r18,16v-19,16,-31,27,-65,27v-52,0,-78,-34,-77,-91v-1,-52,25,-90,72,-90xm142,-101v10,-55,-65,-75,-87,-32v-5,11,-6,18,-6,32r93,0xm90,-214r-39,-55r31,0r32,55r-24,0","w":190},"\u00ea":{"d":"129,-214r-33,-37r-32,37r-25,0r45,-55r25,0r45,55r-25,0xm95,-179v51,0,77,40,73,97r-119,0v-9,61,68,79,98,41r18,16v-19,16,-31,27,-65,27v-52,0,-78,-34,-77,-91v-1,-52,25,-90,72,-90xm142,-101v10,-55,-65,-75,-87,-32v-5,11,-6,18,-6,32r93,0","w":190},"\u00eb":{"d":"95,-179v51,0,77,40,73,97r-119,0v-9,61,68,79,98,41r18,16v-19,16,-31,27,-65,27v-52,0,-78,-34,-77,-91v-1,-52,25,-90,72,-90xm142,-101v10,-55,-65,-75,-87,-32v-5,11,-6,18,-6,32r93,0xm121,-217r0,-32r26,0r0,32r-26,0xm45,-217r0,-32r26,0r0,32r-26,0","w":190},"\u00ed":{"d":"32,0r0,-177r26,0r0,177r-26,0xm56,-214r-24,0r32,-55r31,0","w":91},"\u00ec":{"d":"32,0r0,-177r26,0r0,177r-26,0xm71,-214r-39,-55r31,0r32,55r-24,0","w":91},"\u00ee":{"d":"122,-214r-32,-37r-33,37r-25,0r45,-55r25,0r45,55r-25,0xm32,0r0,-177r26,0r0,177r-26,0","w":91},"\u00ef":{"d":"32,0r0,-177r26,0r0,177r-26,0xm109,-217r0,-32r26,0r0,32r-26,0xm33,-217r0,-32r26,0r0,32r-26,0","w":91},"\u00f1":{"d":"159,-237v-17,24,-50,20,-71,4v-13,-5,-22,0,-30,10r-13,-13v11,-11,18,-18,34,-19v24,1,48,31,67,5xm58,-158v37,-42,121,-18,114,45r0,113r-26,0v-6,-61,23,-156,-44,-156v-66,-1,-39,95,-44,156r-26,0r0,-177r26,0r0,19","w":202},"\u00f3":{"d":"168,-89v0,55,-20,89,-73,91v-51,-3,-72,-35,-72,-91v0,-53,21,-89,72,-90v52,1,73,35,73,90xm142,-89v2,-39,-12,-67,-47,-67v-35,0,-47,30,-46,67v-2,39,10,67,46,68v37,0,48,-29,47,-68xm101,-214r-24,0r32,-55r31,0","w":190},"\u00f2":{"d":"168,-89v0,55,-20,89,-73,91v-51,-3,-72,-35,-72,-91v0,-53,21,-89,72,-90v52,1,73,35,73,90xm142,-89v2,-39,-12,-67,-47,-67v-35,0,-47,30,-46,67v-2,39,10,67,46,68v37,0,48,-29,47,-68xm86,-214r-39,-55r31,0r32,55r-24,0","w":190},"\u00f4":{"d":"128,-214r-33,-37r-32,37r-25,0r45,-55r25,0r45,55r-25,0xm168,-89v0,55,-20,89,-73,91v-51,-3,-72,-35,-72,-91v0,-53,21,-89,72,-90v52,1,73,35,73,90xm142,-89v2,-39,-12,-67,-47,-67v-35,0,-47,30,-46,67v-2,39,10,67,46,68v37,0,48,-29,47,-68","w":190},"\u00f6":{"d":"168,-89v0,55,-20,89,-73,91v-51,-3,-72,-35,-72,-91v0,-53,21,-89,72,-90v52,1,73,35,73,90xm142,-89v2,-39,-12,-67,-47,-67v-35,0,-47,30,-46,67v-2,39,10,67,46,68v37,0,48,-29,47,-68xm120,-217r0,-32r26,0r0,32r-26,0xm44,-217r0,-32r26,0r0,32r-26,0","w":190},"\u00f5":{"d":"152,-237v-12,11,-18,17,-34,18v-27,0,-47,-31,-67,-4r-14,-13v13,-11,18,-19,35,-19v24,0,47,31,67,5xm168,-89v0,55,-20,89,-73,91v-51,-3,-72,-35,-72,-91v0,-53,21,-89,72,-90v52,1,73,35,73,90xm142,-89v2,-39,-12,-67,-47,-67v-35,0,-47,30,-46,67v-2,39,10,67,46,68v37,0,48,-29,47,-68","w":190},"\u00fa":{"d":"100,-21v66,1,39,-95,44,-156r26,0r0,177r-26,0r0,-20v-34,43,-122,20,-113,-44r0,-113r26,0v6,60,-23,157,43,156xm106,-214r-24,0r32,-55r31,0","w":202},"\u00f9":{"d":"100,-21v66,1,39,-95,44,-156r26,0r0,177r-26,0r0,-20v-34,43,-122,20,-113,-44r0,-113r26,0v6,60,-23,157,43,156xm94,-214r-39,-55r31,0r32,55r-24,0","w":202},"\u00fb":{"d":"132,-214r-32,-37r-32,37r-25,0r45,-55r24,0r45,55r-25,0xm100,-21v66,1,39,-95,44,-156r26,0r0,177r-26,0r0,-20v-34,43,-122,20,-113,-44r0,-113r26,0v6,60,-23,157,43,156","w":202},"\u00fc":{"d":"100,-21v66,1,39,-95,44,-156r26,0r0,177r-26,0r0,-20v-34,43,-122,20,-113,-44r0,-113r26,0v6,60,-23,157,43,156xm125,-217r0,-32r26,0r0,32r-26,0xm49,-217r0,-32r26,0r0,32r-26,0","w":202},"\u00b0":{"d":"143,-201v1,32,-28,60,-59,60v-33,0,-60,-27,-60,-60v-1,-32,28,-60,60,-59v31,-1,60,28,59,59xm121,-201v0,-20,-17,-39,-38,-38v-22,0,-37,17,-37,38v0,21,17,39,38,39v21,0,37,-17,37,-39","w":166},"\u00a2":{"d":"23,-132v-1,-48,24,-85,65,-89r0,-35r21,0r0,34v26,1,37,10,52,27r-17,16v-12,-13,-24,-20,-36,-20r0,134v12,0,24,-6,36,-20r17,17v-16,18,-33,27,-52,27r0,41r-21,0r0,-42v-41,-6,-66,-40,-65,-90xm89,-198v-56,6,-52,128,0,132r0,-132","w":179},"\u00a3":{"d":"160,-217v-29,-34,-102,-14,-93,42r0,37r53,0r0,19r-53,0r0,95r112,0r0,24r-139,0r0,-119r-23,0r0,-19r23,0v-7,-71,16,-121,80,-120v24,0,43,7,59,23","w":197},"\u00a7":{"d":"120,-157v58,10,63,106,12,125v20,6,35,25,35,51v3,58,-74,79,-115,47v-13,-10,-20,-24,-20,-43r27,0v2,23,16,35,41,35v49,5,53,-68,9,-75v-41,-9,-78,-24,-78,-74v0,-29,18,-48,38,-59v-20,-9,-33,-22,-33,-49v-4,-56,74,-75,112,-44v12,10,18,24,18,41r-26,0v0,-23,-16,-34,-40,-33v-32,-4,-48,33,-31,57v11,12,32,18,51,21xm143,-91v2,-30,-19,-45,-43,-46v-25,0,-43,19,-42,46v1,27,14,45,42,46v29,0,42,-19,43,-46","w":200},"\u00b6":{"d":"15,-186v0,-42,33,-72,78,-70r87,0r0,335r-26,0r0,-311r-42,0r0,311r-26,0r0,-196v-40,2,-71,-33,-71,-69","w":217},"\u00df":{"d":"104,-22v28,1,44,-3,44,-32v-3,-43,16,-101,-44,-90r0,-22v27,3,44,-8,44,-33v0,-24,-16,-38,-45,-37v-29,0,-45,17,-44,48r0,188r-27,0r0,-189v0,-44,29,-70,73,-70v39,0,70,20,69,60v0,22,-9,34,-22,43v32,11,20,64,22,105v1,39,-28,55,-70,51r0,-22","w":200},"\u00ae":{"d":"289,-128v2,71,-61,132,-131,130v-70,2,-132,-60,-130,-130v-2,-70,60,-132,130,-130v70,-2,133,59,131,130xm268,-128v1,-60,-50,-113,-110,-111v-60,-2,-111,52,-109,111v-1,58,50,113,109,111v59,1,111,-51,110,-111xm165,-200v48,-3,61,74,14,82r34,61r-23,0r-33,-58r-21,0r0,58r-20,0r0,-143r49,0xm189,-157v1,-25,-26,-27,-53,-25r0,50v27,2,54,0,53,-25","w":317},"\u00a9":{"d":"289,-128v2,71,-61,132,-131,130v-70,2,-132,-60,-130,-130v-2,-70,60,-132,130,-130v70,-2,133,59,131,130xm268,-128v1,-59,-51,-113,-110,-111v-59,-1,-110,51,-109,111v-1,58,50,113,109,111v59,1,111,-51,110,-111xm116,-128v-7,49,49,72,78,41r13,13v-42,42,-117,10,-111,-54v-7,-64,68,-97,111,-55r-13,13v-32,-31,-83,-7,-78,42","w":317},"\u2122":{"d":"261,-103r0,-110r-37,72r-20,0r-37,-72r0,110r-21,0r0,-153r21,0r47,93r47,-93r20,0r0,153r-20,0xm76,-237r0,134r-21,0r0,-134r-42,0r0,-19r106,0r0,19r-43,0","w":302},"\u00b4":{"d":"96,-214r-24,0r32,-55r31,0","w":180},"\u00a8":{"d":"115,-217r0,-32r26,0r0,32r-26,0xm39,-217r0,-32r26,0r0,32r-26,0","w":180},"\u00c6":{"d":"153,0r0,-61r-89,0r-31,61r-30,0r135,-256r174,0r0,24r-132,0r0,91r113,0r0,25r-113,0r0,92r132,0r0,24r-159,0xm153,-232r-77,147r77,0r0,-147","w":331},"\u00d8":{"d":"207,-128v15,98,-54,154,-135,119r-12,25r-24,0r18,-38v-28,-27,-25,-47,-27,-106v-15,-97,53,-154,135,-119r12,-25r24,0r-18,37v27,27,26,48,27,107xm82,-33v62,31,110,-13,97,-95v-1,-43,2,-59,-12,-81xm152,-224v-63,-29,-97,14,-97,96v0,43,4,70,12,81","w":234},"\u00b1":{"d":"106,-104r0,64r-24,0r0,-64r-63,0r0,-24r63,0r0,-63r24,0r0,63r63,0r0,24r-63,0xm19,0r0,-24r150,0r0,24r-150,0"},"\u00a5":{"d":"126,-144r36,0r0,19r-46,0v-5,10,-11,20,-9,38r55,0r0,20r-55,0r0,67r-28,0r0,-67r-56,0r0,-20r56,0v2,-18,-4,-28,-10,-38r-46,0r0,-19r36,0r-56,-112r29,0r61,122r60,-122r29,0","w":185},"\u00b5":{"d":"99,-21v67,2,39,-95,45,-156r26,0r0,177r-26,0r0,-20v-19,25,-64,30,-88,9r0,90r-26,0r0,-256r26,0v5,60,-22,157,43,156","w":201},"\u00aa":{"d":"25,-236v21,-36,106,-29,106,26r0,95r-20,0r0,-13v-27,26,-93,20,-91,-26v-1,-43,45,-43,90,-41v13,-49,-52,-56,-70,-28xm72,-132v32,3,40,-13,38,-47v-29,0,-72,-5,-69,24v0,15,11,23,31,23","w":161},"\u00ba":{"d":"139,-185v2,44,-17,69,-57,72v-40,-2,-59,-29,-58,-72v-1,-44,17,-71,58,-73v40,3,58,28,57,73xm118,-185v1,-30,-9,-53,-36,-53v-29,-1,-38,23,-36,53v-2,31,8,52,36,53v27,-2,37,-22,36,-53","w":163},"\u00e6":{"d":"150,-152v44,-57,145,-17,128,70r-120,0v-8,61,69,79,99,41r18,16v-24,35,-109,38,-128,-3v-23,43,-133,46,-129,-22v0,-54,58,-54,115,-51v2,-38,-8,-57,-46,-56v-24,0,-34,6,-44,20r-18,-16v18,-36,109,-34,125,1xm252,-101v11,-66,-88,-73,-92,-16v-1,4,-2,9,-2,16r94,0xm84,-20v40,2,52,-19,49,-62v-38,0,-92,-7,-89,32v0,20,13,30,40,30","w":300},"\u00f8":{"d":"147,-158v39,47,28,167,-52,160v-16,0,-28,-3,-37,-10r-14,24r-21,0r21,-35v-40,-44,-27,-168,51,-160v17,0,28,3,38,9r14,-23r20,0xm69,-29v51,29,86,-25,71,-87v-1,-8,-3,-14,-7,-20xm121,-149v-59,-33,-91,50,-63,108","w":190},"\u00bf":{"d":"67,-147r0,-30r30,0r0,30r-30,0xm152,15v0,37,-29,67,-68,66v-56,4,-85,-64,-51,-109v17,-22,38,-37,36,-77r26,0v5,60,-45,70,-53,120v-1,24,18,44,42,43v26,1,42,-20,42,-43r26,0","w":178},"\u00a1":{"d":"36,-147r0,-30r31,0r0,30r-31,0xm36,79r4,-184r22,0r4,184r-30,0","w":113},"\u00ac":{"d":"145,-37r0,-49r-127,0r0,-25r152,0r0,74r-25,0"},"\u0192":{"d":"134,-235v-26,-2,-43,2,-46,26r-12,71r37,0r0,19r-41,0r-35,198r-26,0r35,-198r-35,0r0,-19r39,0v11,-55,4,-129,84,-119r0,22","w":145},"\u00ab":{"d":"96,-96r75,-76r0,32r-43,44r43,43r0,32xm14,-96r76,-76r0,32r-43,44r43,43r0,32","w":199},"\u00bb":{"d":"109,-21r0,-32r44,-43r-44,-44r0,-32r76,76xm28,-21r0,-32r44,-43r-44,-44r0,-32r76,76","w":199},"\u2026":{"d":"208,0r0,-33r33,0r0,33r-33,0xm120,0r0,-33r33,0r0,33r-33,0xm32,0r0,-33r33,0r0,33r-33,0","w":272},"\u00a0":{"w":89},"\u00c0":{"d":"186,0r-20,-58r-112,0r-21,58r-29,0r95,-256r23,0r94,256r-30,0xm111,-217r-49,135r96,0xm103,-281r-39,-55r31,0r32,55r-24,0","w":219},"\u00c3":{"d":"165,-305v-11,12,-18,19,-34,19v-26,0,-46,-31,-67,-5r-13,-12v11,-12,18,-19,34,-19v25,0,48,31,67,4xm186,0r-20,-58r-112,0r-21,58r-29,0r95,-256r23,0r94,256r-30,0xm111,-217r-49,135r96,0","w":219},"\u00d5":{"d":"174,-305v-13,12,-19,18,-35,19v-26,-1,-46,-31,-67,-5r-13,-12v11,-12,18,-19,34,-19v24,0,48,31,67,4xm207,-128v0,81,-23,127,-90,130v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v73,6,90,45,90,130xm117,-22v55,-6,65,-38,62,-106v3,-68,-7,-100,-62,-106v-56,6,-64,38,-62,106v-2,68,6,99,62,106","w":234},"\u0152":{"d":"27,-128v-6,-80,19,-126,90,-130v26,0,46,9,62,28r0,-26r156,0r0,24r-129,0r1,91r109,0r0,23r-109,0r-1,94r130,0r0,24r-157,0r0,-27v-13,17,-34,29,-62,29v-73,-6,-94,-46,-90,-130xm117,-22v56,-6,64,-38,62,-106v3,-69,-7,-99,-62,-106v-56,6,-64,38,-62,106v-2,68,6,99,62,106","w":356},"\u0153":{"d":"156,-145v38,-67,149,-27,131,63r-119,0v-9,61,68,79,98,41r18,16v-26,35,-109,39,-128,-7v-11,20,-31,34,-61,34v-51,-3,-72,-35,-72,-91v0,-53,21,-89,72,-90v30,0,50,14,61,34xm262,-101v8,-55,-66,-74,-88,-32v-4,11,-7,18,-6,32r94,0xm142,-89v2,-39,-12,-67,-47,-67v-35,0,-47,30,-46,67v-2,39,10,67,46,68v37,0,48,-29,47,-68","w":309},"\u2013":{"d":"19,-85r0,-24r150,0r0,24r-150,0"},"\u2014":{"d":"27,-85r0,-24r275,0r0,24r-275,0","w":329},"\u201c":{"d":"93,-226r0,-30r32,-29r0,59r-32,0xm32,-226r0,-30r31,-29r0,59r-31,0","w":156},"\u201d":{"d":"93,-198r0,-58r32,0r0,30xm32,-198r0,-58r31,0r0,30","w":156},"\u2018":{"d":"32,-226r0,-30r31,-29r0,59r-31,0","w":94},"\u2019":{"d":"32,-198r0,-58r31,0r0,30","w":94},"\u00f7":{"d":"78,-145r0,-31r31,0r0,31r-31,0xm18,-85r0,-24r152,0r0,24r-152,0xm78,-18r0,-31r31,0r0,31r-31,0"},"\u00ff":{"d":"76,43v-7,25,-26,35,-58,33r0,-23v41,6,38,-33,50,-57r-64,-173r28,0r49,142r48,-142r28,0xm105,-217r0,-32r26,0r0,32r-26,0xm29,-217r0,-32r26,0r0,32r-26,0","w":160},"\u0178":{"d":"107,-106r0,106r-28,0r0,-106r-76,-150r29,0r61,122r60,-122r29,0xm118,-284r0,-32r26,0r0,32r-26,0xm42,-284r0,-32r26,0r0,32r-26,0","w":185},"\u00a4":{"d":"183,-145v21,23,20,72,0,95r27,27r-17,16r-27,-26v-23,20,-72,19,-95,0r-26,26r-17,-16r27,-27v-21,-22,-21,-73,0,-95r-27,-26r17,-17r26,26v27,-20,68,-20,95,0r27,-26r17,17xm175,-98v0,-29,-26,-56,-56,-55v-31,-1,-57,25,-56,55v-1,31,26,57,56,57v30,0,56,-26,56,-57","w":237},"\u00c2":{"d":"141,-281r-32,-38r-33,38r-25,0r45,-55r25,0r45,55r-25,0xm186,0r-20,-58r-112,0r-21,58r-29,0r95,-256r23,0r94,256r-30,0xm111,-217r-49,135r96,0","w":219},"\u00ca":{"d":"145,-281r-32,-38r-33,38r-25,0r45,-55r25,0r45,55r-25,0xm37,0r0,-256r159,0r0,24r-132,0r0,91r113,0r0,24r-113,0r0,93r132,0r0,24r-159,0","w":216},"\u00c1":{"d":"186,0r-20,-58r-112,0r-21,58r-29,0r95,-256r23,0r94,256r-30,0xm111,-217r-49,135r96,0xm115,-281r-24,0r32,-55r31,0","w":219},"\u00cb":{"d":"37,0r0,-256r159,0r0,24r-132,0r0,91r113,0r0,24r-113,0r0,93r132,0r0,24r-159,0xm138,-284r0,-32r26,0r0,32r-26,0xm62,-284r0,-32r26,0r0,32r-26,0","w":216},"\u00c8":{"d":"37,0r0,-256r159,0r0,24r-132,0r0,91r113,0r0,24r-113,0r0,93r132,0r0,24r-159,0xm107,-281r-39,-55r31,0r32,55r-24,0","w":216},"\u00cd":{"d":"37,0r0,-256r27,0r0,256r-27,0xm61,-281r-24,0r32,-55r31,0","w":101},"\u00ce":{"d":"127,-281r-33,-38r-32,38r-25,0r45,-55r25,0r45,55r-25,0xm37,0r0,-256r27,0r0,256r-27,0","w":101},"\u00cf":{"d":"37,0r0,-256r27,0r0,256r-27,0xm113,-284r0,-32r26,0r0,32r-26,0xm37,-284r0,-32r26,0r0,32r-26,0","w":101},"\u00cc":{"d":"37,0r0,-256r27,0r0,256r-27,0xm76,-281r-39,-55r31,0r32,55r-24,0","w":101},"\u00d3":{"d":"207,-128v0,81,-23,127,-90,130v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v73,6,90,45,90,130xm117,-22v55,-6,65,-38,62,-106v3,-68,-7,-100,-62,-106v-56,6,-64,38,-62,106v-2,68,6,99,62,106xm123,-281r-24,0r32,-55r31,0","w":234},"\u00d4":{"d":"149,-281r-32,-38r-32,38r-25,0r45,-55r24,0r45,55r-25,0xm207,-128v0,81,-23,127,-90,130v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v73,6,90,45,90,130xm117,-22v55,-6,65,-38,62,-106v3,-68,-7,-100,-62,-106v-56,6,-64,38,-62,106v-2,68,6,99,62,106","w":234},"\u00d2":{"d":"207,-128v0,81,-23,127,-90,130v-73,-7,-94,-45,-90,-130v-6,-80,19,-126,90,-130v73,6,90,45,90,130xm117,-22v55,-6,65,-38,62,-106v3,-68,-7,-100,-62,-106v-56,6,-64,38,-62,106v-2,68,6,99,62,106xm111,-281r-39,-55r31,0r32,55r-24,0","w":234},"\u00da":{"d":"212,-85v1,51,-38,88,-89,87v-51,1,-91,-35,-90,-87r0,-171r28,0r0,169v-1,38,24,65,62,65v36,0,63,-27,62,-65r0,-169r27,0r0,171xm129,-281r-24,0r32,-55r31,0","w":245},"\u00db":{"d":"155,-281r-32,-38r-33,38r-24,0r45,-55r24,0r45,55r-25,0xm212,-85v1,51,-38,88,-89,87v-51,1,-91,-35,-90,-87r0,-171r28,0r0,169v-1,38,24,65,62,65v36,0,63,-27,62,-65r0,-169r27,0r0,171","w":245},"\u00d9":{"d":"212,-85v1,51,-38,88,-89,87v-51,1,-91,-35,-90,-87r0,-171r28,0r0,169v-1,38,24,65,62,65v36,0,63,-27,62,-65r0,-169r27,0r0,171xm117,-281r-39,-55r31,0r32,55r-24,0","w":245},"\u0131":{"d":"32,0r0,-177r26,0r0,177r-26,0","w":91},"\u00b8":{"d":"91,78r-28,0r26,-54r24,0","w":180}}});Cufon.registerFont({"w":195,"face":{"font-family":"DIN-Bold","font-weight":500,"font-stretch":"normal","units-per-em":"360","panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":"288","descent":"-72","x-height":"2","bbox":"-8 -365.031 352 74","underline-thickness":"31.32","underline-position":"-64.08","unicode-range":"U+0020-U+2122"},"glyphs":{" ":{"w":83},"!":{"d":"87,-80r-36,0r-11,-176r58,0xm44,0r0,-48r50,0r0,48r-50,0","w":124},"\"":{"d":"99,-180r0,-76r43,0r0,76r-43,0xm24,-180r0,-76r44,0r0,76r-44,0","w":167},"#":{"d":"199,-151r-5,39r25,0r0,44r-33,0r-10,68r-50,0r12,-68r-42,0r-11,68r-49,0r10,-68r-24,0r0,-44r32,0r5,-39r-25,0r0,-44r32,0r10,-63r50,0r-10,63r41,0r10,-63r49,0r-9,63r24,0r0,44r-32,0xm109,-151r-6,39r41,0r6,-39r-41,0","w":248},"$":{"d":"166,-142v70,29,38,148,-38,143r0,40r-36,0r0,-39v-39,-1,-64,-12,-85,-34r32,-32v14,13,32,21,57,22r0,-66v-46,-5,-79,-19,-79,-73v0,-45,32,-73,75,-77r0,-32r36,0r0,32v32,0,53,12,71,29r-32,32v-9,-11,-27,-17,-44,-18r0,63v15,2,32,4,43,10xm96,-214v-25,0,-43,34,-21,52v4,4,11,6,21,8r0,-60xm123,-43v38,1,45,-50,15,-59v-4,-1,-9,-2,-15,-3r0,62","w":222},"%":{"d":"287,-83v5,50,-8,87,-53,85v-44,1,-58,-36,-52,-85v-1,-29,23,-50,52,-49v30,0,54,18,53,49xm111,0r-37,0r121,-256r37,0xm123,-209v5,49,-8,86,-52,85v-44,2,-57,-36,-52,-85v-1,-31,23,-49,52,-49v31,0,52,18,52,49xm253,-49v-1,-23,6,-53,-19,-53v-24,0,-17,31,-18,53v0,14,6,21,18,21v13,0,19,-7,19,-21xm89,-175v-1,-22,6,-54,-18,-53v-24,-1,-17,31,-18,53v0,14,6,21,18,21v12,0,18,-7,18,-21","w":305},"&":{"d":"111,-258v60,0,88,74,39,105r-19,13r44,51v8,-12,13,-27,13,-45r44,0v0,33,-9,59,-28,80r47,54r-60,0r-19,-22v-46,44,-160,27,-150,-54v0,-34,23,-53,46,-68v-14,-16,-25,-29,-26,-55v0,-37,29,-59,69,-59xm106,-169v21,-4,41,-47,5,-50v-31,1,-24,37,-5,50xm67,-76v0,38,53,47,77,21r-51,-61v-15,13,-25,17,-26,40","w":259},"'":{"d":"24,-180r0,-76r45,0r0,76r-45,0","w":93},"(":{"d":"76,-52v0,34,9,37,25,55r-31,31v-25,-24,-41,-39,-41,-84r2,-185v8,-27,20,-36,39,-55r31,31v-14,17,-26,20,-25,55r0,152","w":120},")":{"d":"45,-204v1,-31,-12,-42,-26,-54r32,-32v21,20,43,40,41,83r-2,186v-6,25,-25,39,-39,55r-32,-32v15,-15,27,-22,26,-54r0,-152","w":120},"*":{"d":"142,-137r-38,-24r1,45r-33,0r2,-45r-38,24r-16,-29r39,-20r-39,-21r16,-29r38,24r-2,-45r33,0r-1,45r38,-24r16,29r-40,21r40,20","w":177},"+":{"d":"120,-78r0,58r-44,0r0,-58r-58,0r0,-44r58,0r0,-57r44,0r0,57r57,0r0,44r-57,0"},",":{"d":"24,59r0,-110r52,0r0,71","w":100},"-":{"d":"21,-81r0,-44r111,0r0,44r-111,0","w":153},".":{"d":"24,0r0,-53r54,0r0,53r-54,0","w":102},"\/":{"d":"44,27r-44,0r103,-310r44,0","w":145},"0":{"d":"176,-74v1,46,-34,76,-78,76v-44,1,-80,-31,-78,-76r0,-108v-2,-46,34,-77,78,-76v44,-1,79,31,78,76r0,108xm98,-40v53,-4,24,-91,31,-141v0,-20,-11,-35,-31,-35v-53,2,-24,91,-31,141v-1,21,12,35,31,35"},"1":{"d":"89,0r0,-206r-52,45r0,-50r52,-45r47,0r0,256r-47,0"},"2":{"d":"99,-258v72,-8,96,81,51,133r-72,83r99,0r0,42r-156,0r0,-42v35,-43,75,-81,106,-127v9,-23,-2,-49,-28,-47v-20,0,-32,11,-31,32r-47,0v-1,-45,34,-75,78,-74"},"3":{"d":"178,-74v6,72,-91,97,-139,57v-16,-12,-24,-31,-24,-56r47,0v-1,21,16,33,35,33v21,0,35,-13,34,-36v0,-23,-15,-37,-42,-35r0,-41v25,2,39,-9,39,-32v1,-19,-13,-32,-32,-32v-18,0,-31,12,-31,31r-47,0v-1,-44,36,-73,78,-73v72,0,108,96,49,126v20,10,33,28,33,58"},"4":{"d":"161,-36r0,36r-45,0r0,-36r-105,0r0,-45r88,-175r51,0r-88,175r54,0r0,-48r45,0r0,48r23,0r0,45r-23,0"},"5":{"d":"178,-86v16,93,-123,119,-152,43v-4,-9,-5,-19,-5,-29r46,0v4,20,9,31,32,32v26,0,32,-20,32,-46v11,-49,-51,-60,-62,-26r-43,0r0,-144r146,0r0,42r-104,0r0,55v50,-34,120,4,110,73"},"6":{"d":"177,-78v2,48,-33,81,-80,80v-55,1,-93,-47,-76,-105v18,-47,50,-106,72,-153r51,0r-53,106v45,-17,88,24,86,72xm130,-77v0,-22,-12,-37,-33,-38v-21,0,-33,16,-33,38v0,22,12,37,33,37v21,0,33,-15,33,-37"},"7":{"d":"98,0r-51,0r83,-214r-67,0r0,40r-45,0r0,-82r163,0r0,42"},"8":{"d":"180,-75v1,48,-35,77,-82,77v-47,0,-83,-28,-82,-77v0,-28,15,-45,32,-57v-15,-12,-29,-28,-29,-53v-1,-43,36,-74,79,-73v44,-1,80,29,78,73v1,26,-13,42,-28,53v15,12,33,30,32,57xm130,-184v1,-18,-14,-33,-32,-32v-18,-1,-33,14,-32,32v-1,18,14,33,32,32v18,1,33,-14,32,-32xm133,-75v1,-19,-16,-36,-35,-36v-20,0,-36,16,-35,36v-1,19,15,36,35,35v19,1,36,-16,35,-35"},"9":{"d":"98,-258v78,-4,91,80,59,147r-54,111r-51,0r53,-106v-47,14,-89,-25,-87,-73v-1,-47,34,-80,80,-79xm131,-179v0,-23,-12,-37,-33,-37v-21,0,-33,14,-33,37v0,23,13,37,33,38v21,0,33,-16,33,-38"},":":{"d":"33,-98r0,-53r54,0r0,53r-54,0xm33,0r0,-53r54,0r0,53r-54,0","w":111},";":{"d":"33,-98r0,-53r54,0r0,53r-54,0xm35,59r0,-110r51,0r0,71","w":111},"<":{"d":"98,-81r118,117r-59,0r-139,-139r139,-138r59,0r-118,116r253,0r0,44r-253,0","w":369},"=":{"d":"18,-120r0,-44r159,0r0,44r-159,0xm18,-42r0,-44r159,0r0,44r-159,0"},">":{"d":"213,36r-59,0r117,-117r-253,0r0,-44r253,0r-117,-116r59,0r139,138","w":369},"?":{"d":"99,-258v62,-6,97,68,59,117v-14,18,-34,29,-33,61r-47,0v-5,-55,40,-64,51,-107v0,-18,-12,-30,-30,-29v-18,-1,-29,12,-28,30r-47,0v-2,-44,33,-73,75,-72xm76,0r0,-48r50,0r0,48r-50,0","w":188},"@":{"d":"111,-258v84,-6,145,8,141,90r0,169r-44,-1r0,-17v-11,13,-21,19,-43,19v-50,-3,-64,-31,-62,-85v-14,-72,59,-109,104,-67v9,-62,-33,-71,-93,-66v-70,-4,-43,90,-48,153v0,21,4,24,15,36r-32,32v-43,-27,-24,-108,-28,-173v0,-61,28,-91,90,-90xm207,-83v-1,-29,-3,-45,-30,-46v-25,1,-29,18,-29,46v0,27,5,45,29,46v24,0,30,-19,30,-46","w":272},"A":{"d":"176,0r-15,-45r-92,0r-15,45r-52,0r93,-256r39,0r94,256r-52,0xm116,-181r-32,94r63,0","w":229},"B":{"d":"216,-74v0,46,-31,75,-79,74r-107,0r0,-256r103,0v77,-12,105,96,47,125v21,9,36,28,36,57xm162,-182v1,-37,-46,-30,-82,-30r0,59v36,-1,83,8,82,-29xm166,-76v2,-39,-47,-32,-86,-32r0,63v38,0,87,7,86,-31","w":236},"C":{"d":"210,-79v-7,48,-42,81,-94,81v-71,-5,-100,-44,-95,-130v-5,-85,23,-125,95,-130v52,0,88,32,94,81r-51,0v-5,-22,-18,-37,-43,-37v-45,4,-44,34,-45,86v1,54,0,81,45,86v25,0,38,-16,43,-37r51,0","w":223},"D":{"d":"216,-145v6,88,-14,145,-94,145r-92,0r0,-256r92,0v66,3,97,37,94,111xm166,-129v6,-70,-19,-89,-86,-83r0,167r38,0v48,-3,48,-32,48,-84","w":237},"E":{"d":"30,0r0,-256r169,0r0,44r-119,0r0,60r101,0r0,45r-101,0r0,62r119,0r0,45r-169,0","w":217},"F":{"d":"80,-212r0,63r101,0r0,45r-101,0r0,104r-50,0r0,-256r169,0r0,44r-119,0","w":212},"G":{"d":"212,-143v8,88,-19,144,-96,145v-71,-5,-100,-44,-95,-130v-4,-85,22,-125,95,-130v56,-2,88,36,96,82r-50,0v-6,-25,-22,-38,-46,-38v-45,5,-44,32,-45,86v0,56,0,86,45,86v35,0,49,-24,47,-59r-47,0r0,-42r96,0","w":233},"H":{"d":"167,0r0,-107r-87,0r0,107r-50,0r0,-256r50,0r0,104r87,0r0,-104r50,0r0,256r-50,0","w":246},"I":{"d":"30,0r0,-256r50,0r0,256r-50,0","w":109},"J":{"d":"157,-84v8,80,-106,113,-156,60r33,-33v21,27,79,17,73,-29r0,-170r50,0r0,172","w":183},"K":{"d":"179,0r-66,-117r-33,40r0,77r-50,0r0,-256r50,0r0,111r90,-111r61,0r-85,102r91,154r-58,0","w":239},"L":{"d":"30,0r0,-256r50,0r0,211r116,0r0,45r-166,0","w":207},"M":{"d":"212,0r0,-149r-49,97r-34,0r-49,-97r0,149r-50,0r0,-256r49,0r67,138r67,-138r49,0r0,256r-50,0","w":291},"N":{"d":"181,0r-101,-157r0,157r-50,0r0,-256r45,0r101,157r0,-157r50,0r0,256r-45,0","w":255},"O":{"d":"211,-128v4,85,-22,130,-95,130v-71,0,-100,-45,-95,-130v-4,-85,22,-125,95,-130v72,4,99,46,95,130xm116,-42v59,5,45,-89,42,-136v-4,-21,-20,-36,-42,-36v-43,5,-46,31,-45,86v-1,57,1,80,45,86","w":231},"P":{"d":"214,-176v-1,64,-59,88,-134,80r0,96r-50,0r0,-256r99,0v50,-2,85,33,85,80xm164,-176v1,-40,-44,-37,-84,-36r0,71v40,1,85,5,84,-35","w":226},"Q":{"d":"211,-128v-1,51,0,64,-16,91r22,22r-27,26r-22,-23v-81,38,-163,-10,-147,-116v-4,-85,22,-125,95,-130v72,4,99,46,95,130xm71,-128v-1,57,0,86,45,86v6,0,12,-2,16,-5r-22,-22r27,-26r19,19v7,-51,18,-140,-40,-138v-43,5,-46,31,-45,86","w":231},"R":{"d":"130,-256v88,-11,111,124,37,145r57,111r-58,0r-50,-102r-36,0r0,102r-50,0r0,-256r100,0xm163,-178v1,-39,-44,-35,-83,-34r0,68v39,1,85,4,83,-34","w":235},"S":{"d":"173,-133v54,54,4,146,-73,135v-45,0,-70,-10,-93,-34r32,-32v25,36,137,27,102,-30v-26,-21,-87,-10,-106,-37v-44,-49,-3,-127,71,-127v40,0,62,9,83,29r-32,32v-26,-37,-124,-12,-82,35v23,15,83,9,98,29","w":212},"T":{"d":"128,-212r0,212r-50,0r0,-212r-67,0r0,-44r184,0r0,44r-67,0","w":205},"U":{"d":"215,-88v1,54,-42,91,-95,90v-52,1,-95,-37,-94,-90r0,-168r50,0r0,166v-1,29,17,47,44,48v28,-1,45,-18,45,-48r0,-166r50,0r0,168","w":240},"V":{"d":"123,0r-37,0r-85,-256r52,0r51,167r52,-167r52,0","w":209},"W":{"d":"248,0r-41,0r-48,-156r-47,156r-41,0r-69,-256r52,0r40,161r47,-161r37,0r47,161r40,-161r52,0","w":319},"X":{"d":"158,0r-50,-89r-49,89r-57,0r79,-131r-74,-125r57,0r44,82r45,-82r57,0r-75,125r80,131r-57,0","w":217},"Y":{"d":"128,-105r0,105r-50,0r0,-105r-77,-151r54,0r48,103r47,-103r55,0","w":205},"Z":{"d":"14,0r0,-40r110,-172r-105,0r0,-44r164,0r0,39r-110,172r110,0r0,45r-169,0","w":197},"[":{"d":"29,27r0,-310r92,0r0,42r-45,0r0,226r45,0r0,42r-92,0","w":136},"\\":{"d":"101,27r-101,-305r44,0r101,305r-44,0","w":145},"]":{"d":"15,27r0,-42r46,0r0,-226r-46,0r0,-42r93,0r0,310r-93,0","w":136},"^":{"d":"145,-140r-37,-68r-36,68r-49,0r64,-119r43,0r64,119r-49,0","w":216},"_":{"d":"0,64r0,-31r217,0r0,31r-217,0","w":216},"`":{"d":"78,-217r-41,-62r50,0r23,62r-32,0","w":180},"a":{"d":"21,-164v34,-45,147,-33,147,41r0,123r-46,0r0,-16v-31,36,-109,16,-109,-41v0,-51,52,-58,108,-54v11,-46,-53,-49,-71,-24xm85,-36v28,1,38,-12,36,-43v-26,1,-65,-6,-63,21v0,14,9,22,27,22","w":192},"b":{"d":"183,-94v3,58,-12,95,-65,96v-23,0,-35,-6,-46,-20r0,18r-46,0r0,-256r47,0r0,85v11,-13,24,-18,45,-19v57,3,65,36,65,96xm136,-94v-1,-32,-2,-53,-31,-54v-29,1,-31,22,-32,54v1,32,2,54,32,54v28,-1,30,-22,31,-54","w":201},"c":{"d":"64,-94v-6,49,39,71,67,39r32,32v-54,52,-157,19,-146,-71v-10,-90,92,-122,146,-71r-32,32v-25,-30,-75,-10,-67,39","w":172},"d":{"d":"83,-190v23,1,35,6,46,19r0,-85r47,0r0,256r-46,0r0,-18v-12,14,-28,20,-46,20v-57,-2,-66,-35,-66,-96v-1,-56,11,-94,65,-96xm129,-94v-1,-32,-3,-53,-32,-54v-29,1,-31,22,-32,54v1,32,2,54,32,54v29,0,31,-22,32,-54","w":201},"e":{"d":"99,-190v58,0,87,47,81,111r-117,0v-4,46,63,54,84,24r28,28v-20,18,-36,29,-71,29v-58,-1,-88,-32,-87,-96v-1,-56,30,-95,82,-96xm134,-111v6,-39,-53,-55,-67,-20v-3,7,-4,13,-4,20r71,0","w":197},"f":{"d":"32,-182v-6,-57,21,-84,81,-77r0,39v-18,-1,-36,-2,-34,17r0,21r34,0r0,35r-34,0r0,147r-47,0r0,-147r-19,0r0,-35r19,0","w":123},"g":{"d":"174,-7v7,75,-104,103,-151,53r29,-29v31,30,88,11,75,-44v-11,13,-22,19,-45,19v-53,-3,-64,-35,-64,-91v-1,-55,12,-88,64,-91v23,1,34,7,46,20r0,-18r46,0r0,181xm127,-99v0,-28,-4,-49,-31,-49v-28,0,-30,21,-31,49v1,34,5,47,31,49v27,0,31,-21,31,-49","w":199},"h":{"d":"73,-170v38,-41,114,-14,108,49r0,121r-47,0r0,-114v1,-22,-11,-33,-31,-34v-52,5,-23,97,-30,148r-47,0r0,-256r47,0r0,86","w":204},"i":{"d":"26,-220r0,-38r47,0r0,38r-47,0xm26,0r0,-188r47,0r0,188r-47,0","w":99},"j":{"d":"26,-220r0,-38r47,0r0,38r-47,0xm73,17v1,40,-32,59,-81,53r0,-39v18,1,36,2,34,-17r0,-202r47,0r0,205","w":99},"k":{"d":"139,0r-46,-78r-20,22r0,56r-47,0r0,-256r47,0r0,145r62,-77r57,0r-67,76r72,112r-58,0","w":201},"l":{"d":"106,0v-48,5,-82,-12,-82,-54r0,-202r47,0r0,199v-1,19,17,17,35,17r0,40","w":117},"m":{"d":"168,-166v40,-45,129,-23,123,46r0,120r-47,0r0,-113v0,-22,-12,-34,-31,-35v-53,5,-24,96,-31,148r-47,0r0,-113v0,-22,-12,-34,-31,-35v-53,4,-24,96,-31,148r-47,0r0,-188r46,0r0,18v21,-26,78,-28,96,4","w":315},"n":{"d":"72,-170v37,-41,118,-14,110,50r0,120r-47,0r0,-113v0,-22,-12,-34,-31,-35v-53,4,-24,96,-31,148r-47,0r0,-188r46,0r0,18","w":206},"o":{"d":"177,-94v2,63,-23,93,-79,96v-57,-2,-81,-35,-80,-96v-1,-61,24,-93,80,-96v55,3,81,34,79,96xm130,-94v2,-34,-6,-54,-32,-54v-28,0,-33,23,-33,54v0,35,4,51,33,54v29,-1,33,-23,32,-54"},"p":{"d":"183,-94v3,58,-12,95,-65,96v-23,0,-34,-6,-45,-19r0,86r-47,0r0,-257r46,0r0,18v12,-13,27,-20,46,-20v57,3,65,36,65,96xm136,-94v-1,-32,-2,-53,-31,-54v-29,1,-31,22,-32,54v1,32,2,54,32,54v28,-1,30,-22,31,-54","w":201},"q":{"d":"84,-190v22,1,34,8,46,20r0,-18r46,0r0,257r-47,0r0,-86v-11,13,-23,19,-46,19v-56,-3,-65,-36,-65,-96v-1,-57,10,-95,66,-96xm129,-94v-1,-32,-3,-53,-32,-54v-29,1,-31,22,-32,54v1,32,2,54,32,54v29,0,31,-22,32,-54","w":201},"r":{"d":"72,-170v17,-22,73,-29,91,-2r-35,36v-16,-23,-59,-10,-55,23r0,113r-47,0r0,-188r46,0r0,18","w":163},"s":{"d":"153,-97v36,45,-6,107,-65,99v-40,0,-59,-6,-80,-27r31,-30v15,24,101,25,78,-14v-35,-15,-104,0,-99,-61v-3,-66,105,-76,144,-38r-29,29v-16,-17,-86,-19,-66,17v23,11,70,5,86,25","w":180},"t":{"d":"111,0v-48,5,-81,-11,-80,-54r0,-93r-20,0r0,-35r20,0r0,-56r46,0r0,56r34,0r0,35r-34,0r0,90v-1,19,16,17,34,17r0,40","w":126},"u":{"d":"102,-40v19,-1,32,-12,31,-34r0,-114r47,0r0,188r-46,0r0,-17v-38,40,-118,14,-110,-51r0,-120r47,0r0,114v-1,22,11,33,31,34","w":206},"v":{"d":"107,0r-36,0r-70,-188r50,0r38,116r38,-116r49,0","w":177},"w":{"d":"215,0r-39,0r-39,-118r-39,118r-39,0r-58,-188r50,0r30,116r39,-116r34,0r38,116r30,-116r50,0","w":273},"x":{"d":"129,0r-34,-56r-35,56r-56,0r65,-96r-62,-92r56,0r32,54r32,-54r56,0r-62,92r64,96r-56,0","w":189},"y":{"d":"176,-188r-86,232v-9,20,-36,27,-67,25r0,-42v32,5,36,-18,43,-40r-65,-175r50,0r39,116r37,-116r49,0","w":177},"z":{"d":"13,0r0,-36r83,-109r-78,0r0,-43r138,0r0,36r-84,110r84,0r0,42r-143,0","w":172},"{":{"d":"79,-128v60,14,-20,131,70,113r0,42v-52,4,-93,-5,-92,-54v-2,-39,14,-91,-42,-80r0,-42v25,1,43,0,42,-28v-3,-56,-2,-109,55,-106r37,0r0,42v0,0,-49,-3,-45,28v0,37,5,80,-25,85","w":164},"|":{"d":"40,27r0,-310r46,0r0,310r-46,0","w":126},"}":{"d":"108,-230v2,39,-14,92,41,81r0,42v-25,-1,-43,0,-41,28v3,57,0,108,-56,106r-37,0r0,-42v28,0,49,2,46,-29v1,-36,-7,-79,25,-84v-31,-6,-25,-48,-25,-85v3,-30,-18,-28,-46,-28r0,-42v52,-4,95,6,93,53","w":164},"~":{"d":"205,-101v-19,18,-30,29,-60,31v-36,-1,-75,-41,-102,-6r-30,-29v20,-19,30,-29,59,-31v38,-2,73,42,103,5","w":218},"\u00c4":{"d":"176,0r-15,-45r-92,0r-15,45r-52,0r93,-256r39,0r94,256r-52,0xm116,-181r-32,94r63,0xm134,-282r0,-45r40,0r0,45r-40,0xm54,-282r0,-45r40,0r0,45r-40,0","w":229},"\u00c5":{"d":"161,-318v1,25,-22,47,-47,47v-25,0,-47,-22,-47,-47v0,-25,21,-48,47,-47v26,-1,48,22,47,47xm135,-318v0,-12,-9,-21,-21,-21v-12,0,-21,9,-21,21v0,10,9,22,21,21v12,0,21,-9,21,-21xm176,0r-15,-45r-92,0r-15,45r-52,0r93,-256r39,0r94,256r-52,0xm116,-181r-32,94r63,0","w":229},"\u00c7":{"d":"210,-79v-7,48,-42,81,-94,81v-71,-5,-100,-44,-95,-130v-5,-85,23,-125,95,-130v52,0,88,32,94,81r-51,0v-5,-22,-18,-37,-43,-37v-45,4,-44,34,-45,86v1,54,0,81,45,86v25,0,38,-16,43,-37r51,0xm120,74r-43,0r24,-52r35,0","w":223},"\u00c9":{"d":"30,0r0,-256r169,0r0,44r-119,0r0,60r101,0r0,45r-101,0r0,62r119,0r0,45r-169,0xm123,-281r-32,0r23,-62r50,0","w":217},"\u00d1":{"d":"193,-306v-14,12,-21,20,-41,21v-24,0,-51,-30,-69,-4r-20,-21v13,-12,20,-21,40,-21v26,-1,50,30,69,4xm181,0r-101,-157r0,157r-50,0r0,-256r45,0r101,157r0,-157r50,0r0,256r-45,0","w":255},"\u00d6":{"d":"211,-128v4,85,-22,130,-95,130v-71,0,-100,-45,-95,-130v-4,-85,22,-125,95,-130v72,4,99,46,95,130xm116,-42v59,5,45,-89,42,-136v-4,-21,-20,-36,-42,-36v-43,5,-46,31,-45,86v-1,57,1,80,45,86xm136,-282r0,-45r40,0r0,45r-40,0xm56,-282r0,-45r40,0r0,45r-40,0","w":231},"\u00dc":{"d":"215,-88v1,54,-42,91,-95,90v-52,1,-95,-37,-94,-90r0,-168r50,0r0,166v-1,29,17,47,44,48v28,-1,45,-18,45,-48r0,-166r50,0r0,168xm140,-282r0,-45r40,0r0,45r-40,0xm60,-282r0,-45r40,0r0,45r-40,0","w":240},"\u00e1":{"d":"21,-164v34,-45,147,-33,147,41r0,123r-46,0r0,-16v-31,36,-109,16,-109,-41v0,-51,52,-58,108,-54v11,-46,-53,-49,-71,-24xm85,-36v28,1,38,-12,36,-43v-26,1,-65,-6,-63,21v0,14,9,22,27,22xm106,-217r-32,0r23,-62r50,0","w":192},"\u00e0":{"d":"21,-164v34,-45,147,-33,147,41r0,123r-46,0r0,-16v-31,36,-109,16,-109,-41v0,-51,52,-58,108,-54v11,-46,-53,-49,-71,-24xm85,-36v28,1,38,-12,36,-43v-26,1,-65,-6,-63,21v0,14,9,22,27,22xm82,-217r-41,-62r50,0r23,62r-32,0","w":192},"\u00e2":{"d":"124,-217r-30,-33r-30,33r-36,0r47,-61r38,0r47,61r-36,0xm21,-164v34,-45,147,-33,147,41r0,123r-46,0r0,-16v-31,36,-109,16,-109,-41v0,-51,52,-58,108,-54v11,-46,-53,-49,-71,-24xm85,-36v28,1,38,-12,36,-43v-26,1,-65,-6,-63,21v0,14,9,22,27,22","w":192},"\u00e4":{"d":"21,-164v34,-45,147,-33,147,41r0,123r-46,0r0,-16v-31,36,-109,16,-109,-41v0,-51,52,-58,108,-54v11,-46,-53,-49,-71,-24xm85,-36v28,1,38,-12,36,-43v-26,1,-65,-6,-63,21v0,14,9,22,27,22xm114,-218r0,-45r40,0r0,45r-40,0xm34,-218r0,-45r40,0r0,45r-40,0","w":192},"\u00e3":{"d":"159,-243v-14,12,-21,21,-41,22v-24,0,-50,-30,-69,-5r-20,-20v13,-13,20,-20,40,-21v26,-1,48,29,69,4xm21,-164v34,-45,147,-33,147,41r0,123r-46,0r0,-16v-31,36,-109,16,-109,-41v0,-51,52,-58,108,-54v11,-46,-53,-49,-71,-24xm85,-36v28,1,38,-12,36,-43v-26,1,-65,-6,-63,21v0,14,9,22,27,22","w":192},"\u00e5":{"d":"141,-257v0,25,-22,47,-47,47v-25,0,-48,-22,-47,-47v-1,-25,22,-49,47,-48v26,-1,47,23,47,48xm115,-257v0,-12,-9,-21,-21,-21v-12,0,-21,9,-21,21v0,10,10,22,21,21v12,0,21,-9,21,-21xm21,-164v34,-45,147,-33,147,41r0,123r-46,0r0,-16v-31,36,-109,16,-109,-41v0,-51,52,-58,108,-54v11,-46,-53,-49,-71,-24xm85,-36v28,1,38,-12,36,-43v-26,1,-65,-6,-63,21v0,14,9,22,27,22","w":192},"\u00e7":{"d":"64,-94v-6,49,39,71,67,39r32,32v-54,52,-157,19,-146,-71v-10,-90,92,-122,146,-71r-32,32v-25,-30,-75,-10,-67,39xm101,74r-43,0r24,-52r35,0","w":173},"\u00e9":{"d":"99,-190v58,0,87,47,81,111r-117,0v-4,46,63,54,84,24r28,28v-20,18,-36,29,-71,29v-58,-1,-88,-32,-87,-96v-1,-56,30,-95,82,-96xm134,-111v6,-39,-53,-55,-67,-20v-3,7,-4,13,-4,20r71,0xm112,-217r-32,0r23,-62r50,0","w":197},"\u00e8":{"d":"99,-190v58,0,87,47,81,111r-117,0v-4,46,63,54,84,24r28,28v-20,18,-36,29,-71,29v-58,-1,-88,-32,-87,-96v-1,-56,30,-95,82,-96xm134,-111v6,-39,-53,-55,-67,-20v-3,7,-4,13,-4,20r71,0xm88,-217r-41,-62r50,0r23,62r-32,0","w":197},"\u00ea":{"d":"130,-217r-30,-33r-30,33r-37,0r48,-61r37,0r48,61r-36,0xm99,-190v58,0,87,47,81,111r-117,0v-4,46,63,54,84,24r28,28v-20,18,-36,29,-71,29v-58,-1,-88,-32,-87,-96v-1,-56,30,-95,82,-96xm134,-111v6,-39,-53,-55,-67,-20v-3,7,-4,13,-4,20r71,0","w":197},"\u00eb":{"d":"99,-190v58,0,87,47,81,111r-117,0v-4,46,63,54,84,24r28,28v-20,18,-36,29,-71,29v-58,-1,-88,-32,-87,-96v-1,-56,30,-95,82,-96xm134,-111v6,-39,-53,-55,-67,-20v-3,7,-4,13,-4,20r71,0xm120,-218r0,-45r40,0r0,45r-40,0xm40,-218r0,-45r40,0r0,45r-40,0","w":197},"\u00ed":{"d":"26,0r0,-188r47,0r0,188r-47,0xm58,-217r-32,0r23,-62r50,0","w":99},"\u00ec":{"d":"26,0r0,-188r47,0r0,188r-47,0xm67,-217r-41,-62r50,0r23,62r-32,0","w":99},"\u00ee":{"d":"122,-217r-29,-33r-30,33r-37,0r48,-61r37,0r48,61r-37,0xm26,0r0,-188r47,0r0,188r-47,0","w":99},"\u00ef":{"d":"26,0r0,-188r47,0r0,188r-47,0xm106,-218r0,-45r40,0r0,45r-40,0xm26,-218r0,-45r40,0r0,45r-40,0","w":99},"\u00f1":{"d":"169,-243v-11,12,-22,21,-40,22v-24,0,-51,-30,-70,-5r-20,-20v13,-13,20,-21,41,-21v25,-1,48,28,68,4xm72,-170v37,-41,118,-14,110,50r0,120r-47,0r0,-113v0,-22,-12,-34,-31,-35v-53,4,-24,96,-31,148r-47,0r0,-188r46,0r0,18","w":206},"\u00f3":{"d":"177,-94v2,63,-23,93,-79,96v-57,-2,-81,-35,-80,-96v-1,-61,24,-93,80,-96v55,3,81,34,79,96xm130,-94v2,-34,-6,-54,-32,-54v-28,0,-33,23,-33,54v0,35,4,51,33,54v29,-1,33,-23,32,-54xm110,-217r-32,0r23,-62r50,0"},"\u00f2":{"d":"177,-94v2,63,-23,93,-79,96v-57,-2,-81,-35,-80,-96v-1,-61,24,-93,80,-96v55,3,81,34,79,96xm130,-94v2,-34,-6,-54,-32,-54v-28,0,-33,23,-33,54v0,35,4,51,33,54v29,-1,33,-23,32,-54xm84,-217r-41,-62r50,0r23,62r-32,0"},"\u00f4":{"d":"128,-217r-30,-33r-30,33r-36,0r47,-61r38,0r47,61r-36,0xm177,-94v2,63,-23,93,-79,96v-57,-2,-81,-35,-80,-96v-1,-61,24,-93,80,-96v55,3,81,34,79,96xm130,-94v2,-34,-6,-54,-32,-54v-28,0,-33,23,-33,54v0,35,4,51,33,54v29,-1,33,-23,32,-54"},"\u00f6":{"d":"177,-94v2,63,-23,93,-79,96v-57,-2,-81,-35,-80,-96v-1,-61,24,-93,80,-96v55,3,81,34,79,96xm130,-94v2,-34,-6,-54,-32,-54v-28,0,-33,23,-33,54v0,35,4,51,33,54v29,-1,33,-23,32,-54xm118,-218r0,-45r40,0r0,45r-40,0xm38,-218r0,-45r40,0r0,45r-40,0"},"\u00f5":{"d":"163,-243v-14,12,-21,21,-41,22v-24,0,-50,-30,-69,-5r-20,-20v13,-13,20,-20,40,-21v26,-1,48,29,69,4xm177,-94v2,63,-23,93,-79,96v-57,-2,-81,-35,-80,-96v-1,-61,24,-93,80,-96v55,3,81,34,79,96xm130,-94v2,-34,-6,-54,-32,-54v-28,0,-33,23,-33,54v0,35,4,51,33,54v29,-1,33,-23,32,-54"},"\u00fa":{"d":"102,-40v19,-1,32,-12,31,-34r0,-114r47,0r0,188r-46,0r0,-17v-38,40,-118,14,-110,-51r0,-120r47,0r0,114v-1,22,11,33,31,34xm114,-217r-32,0r23,-62r50,0","w":206},"\u00f9":{"d":"102,-40v19,-1,32,-12,31,-34r0,-114r47,0r0,188r-46,0r0,-17v-38,40,-118,14,-110,-51r0,-120r47,0r0,114v-1,22,11,33,31,34xm90,-217r-41,-62r50,0r23,62r-32,0","w":206},"\u00fb":{"d":"132,-217r-30,-33r-30,33r-36,0r47,-61r38,0r47,61r-36,0xm102,-40v19,-1,32,-12,31,-34r0,-114r47,0r0,188r-46,0r0,-17v-38,40,-118,14,-110,-51r0,-120r47,0r0,114v-1,22,11,33,31,34","w":206},"\u00fc":{"d":"102,-40v19,-1,32,-12,31,-34r0,-114r47,0r0,188r-46,0r0,-17v-38,40,-118,14,-110,-51r0,-120r47,0r0,114v-1,22,11,33,31,34xm122,-218r0,-45r40,0r0,45r-40,0xm42,-218r0,-45r40,0r0,45r-40,0","w":206},"\u00b0":{"d":"152,-195v1,35,-30,68,-66,66v-35,2,-68,-31,-66,-66v-1,-37,30,-67,66,-67v35,0,68,30,66,67xm114,-195v1,-16,-12,-29,-28,-29v-15,0,-29,13,-28,29v-1,16,13,29,28,29v15,0,29,-13,28,-29","w":172},"\u00a2":{"d":"169,-65v-14,15,-27,22,-49,27r0,38r-36,0r0,-38v-42,-8,-67,-42,-67,-94v-1,-51,26,-86,67,-94r0,-30r36,0r0,30v22,4,35,14,49,27r-31,31v-8,-8,-15,-13,-23,-15r0,103v9,-3,15,-8,23,-15xm89,-183v-33,9,-35,94,0,102r0,-102","w":179},"\u00a3":{"d":"159,-199v-20,-29,-79,-14,-73,29r0,27r41,0r0,36r-41,0r0,62r106,0r0,45r-156,0r0,-107r-22,0r0,-36r22,0v-11,-85,49,-131,127,-110v10,4,19,11,29,21","w":208},"\u00a7":{"d":"158,-142v23,28,9,86,-20,97v17,10,29,23,29,50v3,61,-79,84,-122,50v-14,-11,-21,-27,-21,-48r45,0v0,15,12,22,27,23v35,0,32,-42,1,-50v-39,-10,-77,-25,-75,-75v-1,-25,17,-45,33,-54v-52,-24,-25,-109,41,-109v42,0,69,22,70,61r-44,0v0,-15,-11,-22,-26,-22v-32,0,-33,37,-1,45v23,6,51,16,63,32xm125,-97v-1,-20,-9,-31,-29,-32v-21,1,-28,12,-29,32v1,20,8,31,29,32v19,-1,29,-11,29,-32","w":191},"\u00b6":{"d":"13,-183v-3,-92,110,-72,198,-73r0,325r-47,0r0,-281r-36,0r0,281r-47,0r0,-180v-36,2,-70,-36,-68,-72","w":240},"\u00df":{"d":"186,-116v4,69,0,128,-79,116r0,-40v42,8,31,-39,32,-74v0,-17,-13,-24,-32,-22r0,-36v19,2,32,-5,32,-22v-1,-15,-13,-25,-32,-24v-25,0,-33,11,-34,34r0,184r-47,0r0,-188v0,-47,33,-71,81,-70v46,0,78,18,78,63v0,20,-9,33,-22,40v15,8,23,17,23,39","w":206},"\u00ae":{"d":"282,-128v2,70,-60,132,-130,130v-70,2,-132,-60,-130,-130v-2,-70,60,-132,130,-130v70,-2,132,60,130,130xm251,-128v2,-56,-43,-103,-99,-101v-55,-2,-101,45,-99,101v-2,57,44,102,99,101v55,1,101,-44,99,-101xm161,-198v48,-4,62,69,20,81r30,58r-36,0r-25,-54r-15,0r0,54r-31,0r0,-139r57,0xm176,-154v0,-19,-21,-19,-41,-18r0,36v20,1,41,1,41,-18","w":303},"\u00a9":{"d":"282,-128v2,70,-60,132,-130,130v-70,2,-132,-60,-130,-130v-2,-70,60,-132,130,-130v70,-2,132,60,130,130xm251,-128v1,-55,-42,-103,-99,-101v-55,-2,-101,45,-99,101v-2,57,44,102,99,101v56,1,100,-45,99,-101xm202,-76v-37,38,-121,12,-112,-52v-6,-63,70,-93,112,-52r-20,20v-24,-22,-67,-8,-61,32v-5,39,35,56,61,32","w":303},"\u2122":{"d":"275,-103r0,-90r-28,56r-31,0r-28,-56r0,90r-35,0r0,-153r35,0r43,82r44,-82r35,0r0,153r-35,0xm90,-226r0,123r-34,0r0,-123r-40,0r0,-30r114,0r0,30r-40,0","w":332},"\u00b4":{"d":"102,-217r-32,0r23,-62r50,0","w":180},"\u00a8":{"d":"110,-218r0,-45r40,0r0,45r-40,0xm30,-218r0,-45r40,0r0,45r-40,0","w":180},"\u00c6":{"d":"165,0r0,-56r-81,0r-29,56r-54,0r134,-256r198,0r0,44r-118,0r0,61r101,0r0,44r-101,0r0,62r118,0r0,45r-168,0xm165,-212r-60,114r60,0r0,-114","w":352},"\u00d8":{"d":"211,-128v12,99,-51,147,-136,122r-10,22r-36,0r19,-40v-25,-27,-27,-49,-27,-104v-10,-100,48,-146,136,-123r10,-21r35,0r-19,40v27,26,26,50,28,104xm139,-208v-49,-19,-76,17,-68,80v0,27,1,45,4,54xm93,-49v48,22,76,-18,68,-79v0,-27,-2,-45,-4,-55","w":234},"\u00b1":{"d":"120,-123r0,58r-44,0r0,-58r-58,0r0,-43r58,0r0,-58r44,0r0,58r57,0r0,43r-57,0xm18,0r0,-44r159,0r0,44r-159,0"},"\u00a5":{"d":"156,-159r26,0r0,36r-45,0v-5,10,-11,19,-9,36r54,0r0,36r-54,0r0,51r-50,0r0,-51r-55,0r0,-36r55,0v2,-17,-4,-26,-9,-36r-46,0r0,-36r27,0r-49,-97r54,0r48,103r47,-103r54,0","w":205},"\u00b5":{"d":"103,-40v19,-1,32,-12,31,-34r0,-114r47,0r0,188r-46,0r0,-17v-14,16,-42,25,-63,14r0,72r-47,0r0,-257r47,0r0,114v-1,22,11,33,31,34","w":207},"\u00aa":{"d":"23,-237v27,-36,126,-28,118,32r0,98r-37,0r0,-13v-25,30,-92,13,-87,-32v0,-41,41,-46,86,-43v8,-37,-40,-38,-56,-19xm75,-136v22,0,30,-10,28,-34v-21,0,-50,-5,-49,17v0,11,7,17,21,17","w":163},"\u00ba":{"d":"147,-181v0,48,-18,73,-64,76v-45,-3,-64,-28,-63,-76v-1,-51,18,-74,63,-77v45,2,64,28,64,77xm109,-181v0,-26,-3,-42,-26,-43v-24,1,-26,18,-25,43v-1,25,3,41,25,42v22,0,26,-19,26,-42","w":166},"\u00e6":{"d":"279,-27v-26,36,-109,39,-137,3v-31,43,-136,34,-129,-33v-1,-51,52,-58,108,-54v11,-46,-53,-49,-71,-24r-29,-29v22,-34,103,-34,129,-5v50,-49,144,-5,135,69r0,21r-118,0v-4,46,63,54,84,24xm239,-111v5,-38,-53,-56,-67,-20v-3,7,-5,13,-5,20r72,0xm85,-36v28,1,38,-12,36,-43v-26,1,-65,-6,-63,21v0,14,9,22,27,22","w":301},"\u00f8":{"d":"177,-94v9,77,-52,112,-117,88r-13,22r-28,0r21,-37v-17,-18,-21,-38,-22,-73v-7,-75,52,-112,117,-88r13,-21r29,0r-22,36v18,18,22,38,22,73xm115,-143v-43,-22,-59,33,-47,80xm80,-45v44,23,60,-33,47,-80"},"\u00bf":{"d":"62,-140r0,-48r50,0r0,48r-50,0xm165,-1v1,42,-35,73,-76,72v-61,5,-101,-71,-58,-117v10,-20,33,-31,33,-61r47,0v4,53,-45,62,-51,106v-3,18,10,30,29,30v17,0,29,-13,29,-30r47,0","w":188},"\u00a1":{"d":"31,-140r0,-48r50,0r0,48r-50,0xm27,69r12,-176r34,0r12,176r-58,0","w":124},"\u00ac":{"d":"135,-34r0,-52r-118,0r0,-44r162,0r0,96r-44,0"},"\u0192":{"d":"143,-220v0,0,-42,-3,-44,17r-11,60r35,0r0,36r-41,0r-31,176r-47,0r31,-176r-24,0r0,-36r30,0v10,-61,15,-130,102,-116r0,39","w":153},"\u00ab":{"d":"112,-99r90,-89r0,56r-34,33r34,33r0,56xm12,-99r90,-89r0,56r-34,33r34,33r0,56","w":226},"\u00bb":{"d":"124,-10r0,-56r34,-33r-34,-33r0,-56r90,89xm24,-10r0,-56r34,-33r-34,-33r0,-56r90,89","w":226},"\u2026":{"d":"229,0r0,-51r51,0r0,51r-51,0xm127,0r0,-51r50,0r0,51r-50,0xm24,0r0,-51r52,0r0,51r-52,0","w":304},"\u00a0":{"w":83},"\u00c0":{"d":"176,0r-15,-45r-92,0r-15,45r-52,0r93,-256r39,0r94,256r-52,0xm116,-181r-32,94r63,0xm102,-281r-41,-62r50,0r23,62r-32,0","w":229},"\u00c3":{"d":"179,-306v-14,12,-21,20,-41,21v-24,0,-51,-30,-69,-4r-20,-21v13,-12,20,-21,40,-21v26,-1,49,30,69,4xm176,0r-15,-45r-92,0r-15,45r-52,0r93,-256r39,0r94,256r-52,0xm116,-181r-32,94r63,0","w":229},"\u00d5":{"d":"181,-306v-14,12,-21,20,-41,21v-25,0,-52,-30,-69,-4r-20,-21v13,-12,20,-21,40,-21v25,-1,50,30,69,4xm211,-128v4,85,-22,130,-95,130v-71,0,-100,-45,-95,-130v-4,-85,22,-125,95,-130v72,4,99,46,95,130xm116,-42v59,5,45,-89,42,-136v-4,-21,-20,-36,-42,-36v-43,5,-46,31,-45,86v-1,57,1,80,45,86","w":231},"\u0152":{"d":"114,-258v21,0,37,6,47,18r0,-16r167,0r0,44r-118,0r1,61r100,0r0,44r-100,0r-1,63r118,0r0,44r-167,0r0,-16v-10,11,-28,18,-47,18v-73,-3,-97,-49,-93,-130v-4,-83,20,-125,93,-130xm116,-42v59,5,45,-89,42,-136v-4,-21,-20,-36,-42,-36v-43,5,-46,31,-45,86v-1,57,1,80,45,86","w":347},"\u0153":{"d":"288,-27v-25,35,-105,40,-134,5v-11,15,-31,24,-56,24v-57,-2,-81,-35,-80,-96v-1,-61,24,-93,80,-96v27,0,45,10,58,25v46,-55,148,-12,138,65r0,21r-118,0v-4,46,63,54,84,24xm247,-111v6,-40,-53,-55,-67,-20v-2,6,-4,13,-4,20r71,0xm130,-94v2,-34,-6,-54,-32,-54v-28,0,-33,23,-33,54v0,35,4,51,33,54v29,-1,33,-23,32,-54","w":310},"\u2013":{"d":"18,-81r0,-44r159,0r0,44r-159,0"},"\u2014":{"d":"21,-81r0,-45r327,0r0,45r-327,0","w":369},"\u201c":{"d":"100,-212r0,-44r49,-38r0,82r-49,0xm24,-212r0,-44r49,-38r0,82r-49,0","w":173},"\u201d":{"d":"100,-175r0,-81r49,0r0,44xm24,-175r0,-81r49,0r0,44","w":173},"\u2018":{"d":"24,-212r0,-44r49,-38r0,82r-49,0","w":98},"\u2019":{"d":"24,-175r0,-81r49,0r0,44","w":98},"\u00f7":{"d":"75,-152r0,-47r46,0r0,47r-46,0xm17,-81r0,-44r162,0r0,44r-162,0xm75,-6r0,-47r46,0r0,47r-46,0"},"\u00ff":{"d":"176,-188r-86,232v-9,20,-36,27,-67,25r0,-42v32,5,36,-18,43,-40r-65,-175r50,0r39,116r37,-116r49,0xm108,-218r0,-45r40,0r0,45r-40,0xm28,-218r0,-45r40,0r0,45r-40,0","w":177},"\u0178":{"d":"128,-105r0,105r-50,0r0,-105r-77,-151r54,0r48,103r47,-103r55,0xm123,-282r0,-45r40,0r0,45r-40,0xm43,-282r0,-45r40,0r0,45r-40,0","w":205},"\u00a4":{"d":"78,-176v24,-14,59,-17,84,0r27,-26r31,31r-27,26v16,25,16,59,0,84r27,26r-31,31r-27,-26v-25,16,-59,16,-84,0r-26,26r-31,-31r27,-26v-16,-20,-16,-63,0,-84r-27,-26r31,-31xm163,-103v1,-23,-20,-42,-43,-42v-23,-1,-43,19,-42,42v-1,23,19,43,42,42v23,0,44,-19,43,-42","w":240},"\u00c2":{"d":"144,-281r-30,-33r-30,33r-36,0r47,-61r38,0r47,61r-36,0xm176,0r-15,-45r-92,0r-15,45r-52,0r93,-256r39,0r94,256r-52,0xm116,-181r-32,94r63,0","w":229},"\u00ca":{"d":"141,-281r-29,-33r-30,33r-37,0r48,-61r37,0r48,61r-37,0xm30,0r0,-256r169,0r0,44r-119,0r0,60r101,0r0,45r-101,0r0,62r119,0r0,45r-169,0","w":217},"\u00c1":{"d":"176,0r-15,-45r-92,0r-15,45r-52,0r93,-256r39,0r94,256r-52,0xm116,-181r-32,94r63,0xm126,-281r-32,0r23,-62r50,0","w":229},"\u00cb":{"d":"30,0r0,-256r169,0r0,44r-119,0r0,60r101,0r0,45r-101,0r0,62r119,0r0,45r-169,0xm132,-282r0,-45r40,0r0,45r-40,0xm52,-282r0,-45r40,0r0,45r-40,0","w":217},"\u00c8":{"d":"30,0r0,-256r169,0r0,44r-119,0r0,60r101,0r0,45r-101,0r0,62r119,0r0,45r-169,0xm100,-281r-41,-62r50,0r23,62r-32,0","w":217},"\u00cd":{"d":"30,0r0,-256r50,0r0,256r-50,0xm62,-281r-32,0r23,-62r50,0","w":109},"\u00ce":{"d":"126,-281r-30,-33r-30,33r-36,0r47,-61r38,0r47,61r-36,0xm30,0r0,-256r50,0r0,256r-50,0","w":109},"\u00cf":{"d":"30,0r0,-256r50,0r0,256r-50,0xm110,-282r0,-45r40,0r0,45r-40,0xm30,-282r0,-45r40,0r0,45r-40,0","w":109},"\u00cc":{"d":"30,0r0,-256r50,0r0,256r-50,0xm70,-281r-41,-62r50,0r23,62r-32,0","w":109},"\u00d3":{"d":"211,-128v4,85,-22,130,-95,130v-71,0,-100,-45,-95,-130v-4,-85,22,-125,95,-130v72,4,99,46,95,130xm116,-42v59,5,45,-89,42,-136v-4,-21,-20,-36,-42,-36v-43,5,-46,31,-45,86v-1,57,1,80,45,86xm128,-281r-32,0r23,-62r50,0","w":231},"\u00d4":{"d":"146,-281r-30,-33r-30,33r-36,0r47,-61r38,0r47,61r-36,0xm211,-128v4,85,-22,130,-95,130v-71,0,-100,-45,-95,-130v-4,-85,22,-125,95,-130v72,4,99,46,95,130xm116,-42v59,5,45,-89,42,-136v-4,-21,-20,-36,-42,-36v-43,5,-46,31,-45,86v-1,57,1,80,45,86","w":231},"\u00d2":{"d":"211,-128v4,85,-22,130,-95,130v-71,0,-100,-45,-95,-130v-4,-85,22,-125,95,-130v72,4,99,46,95,130xm116,-42v59,5,45,-89,42,-136v-4,-21,-20,-36,-42,-36v-43,5,-46,31,-45,86v-1,57,1,80,45,86xm104,-281r-41,-62r50,0r23,62r-32,0","w":231},"\u00da":{"d":"215,-88v1,54,-42,91,-95,90v-52,1,-95,-37,-94,-90r0,-168r50,0r0,166v-1,29,17,47,44,48v28,-1,45,-18,45,-48r0,-166r50,0r0,168xm132,-281r-32,0r23,-62r50,0","w":240},"\u00db":{"d":"150,-281r-30,-33r-30,33r-36,0r48,-61r37,0r47,61r-36,0xm215,-88v1,54,-42,91,-95,90v-52,1,-95,-37,-94,-90r0,-168r50,0r0,166v-1,29,17,47,44,48v28,-1,45,-18,45,-48r0,-166r50,0r0,168","w":240},"\u00d9":{"d":"215,-88v1,54,-42,91,-95,90v-52,1,-95,-37,-94,-90r0,-168r50,0r0,166v-1,29,17,47,44,48v28,-1,45,-18,45,-48r0,-166r50,0r0,168xm108,-281r-41,-62r50,0r23,62r-32,0","w":240},"\u0131":{"d":"26,0r0,-188r47,0r0,188r-47,0","w":99},"\u00b8":{"d":"101,74r-43,0r24,-52r35,0","w":180}}});

Cufon.replace('body');
